diff --git a/README.md b/README.md index 08af338fb2..b5c7177fe9 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ A [feature-rich](https://livecodes.io/docs/features/), open-source, **client-sid [![LiveCodes: npm version](https://img.shields.io/npm/v/livecodes)](https://www.npmjs.com/package/livecodes) [![LiveCodes: npm downloads](https://img.shields.io/npm/dm/livecodes)](https://www.npmjs.com/package/livecodes) [![LiveCodes: jsdelivr downloads](https://data.jsdelivr.com/v1/package/npm/livecodes/badge?style=rounded)](https://www.jsdelivr.com/package/npm/livecodes) -[![LiveCodes: languages](https://img.shields.io/badge/languages-116-blue)](https://livecodes.io/docs/languages/) +[![LiveCodes: languages](https://img.shields.io/badge/languages-118-blue)](https://livecodes.io/docs/languages/) [![LiveCodes: docs](https://img.shields.io/badge/Documentation-575757?logo=gitbook&logoColor=white)](https://livecodes.io/docs/) [![LiveCodes: llms.txt](https://img.shields.io/badge/llms.txt-575757?logo=googledocs&logoColor=white)](https://livecodes.io/docs/llms.txt) [![LiveCodes: llms-full.txt](https://img.shields.io/badge/llms--full.txt-575757?logo=googledocs&logoColor=white)](https://livecodes.io/docs/llms-full.txt) diff --git a/docs/docs/languages/nim-wasm.mdx b/docs/docs/languages/nim-wasm.mdx new file mode 100644 index 0000000000..84940c6a0e --- /dev/null +++ b/docs/docs/languages/nim-wasm.mdx @@ -0,0 +1,112 @@ +# Nim (Wasm) + +[Nim](https://nim-lang.org/) is a statically typed, compiled systems programming language. + +In LiveCodes, Nim runs in the browser using the [Nim compiler](https://nim-lang.org/) compiled to WebAssembly. This target (Nim's `c` backend) compiles the program to C and then to WebAssembly using the [Clang](https://clang.llvm.org/) toolchain, the same one used for [C (Wasm)](./c-wasm.mdx), entirely client-side. + +> For Nim's JavaScript backend, which compiles to JavaScript and allows DOM access for the [result page](../features/result.mdx), see [Nim](./nim.mdx). + +## Usage + +Demo: + +import LiveCodes from '../../src/components/LiveCodes.tsx'; + +export const nimWasmConfig = { + activeEditor: 'script', + script: { + language: 'nim-wasm', + content: `echo "Hello, World!"`, + }, + mode: 'simple', + editor: 'auto', + tools: { + status: 'full', + }, +}; + + + +### Communication with JavaScript + +The Nim code is compiled and run in a web worker. The following helpers are available in the browser global `livecodes.nimWasm` object: + +- `livecodes.nimWasm.input`: The standard input passed to the program. +- `livecodes.nimWasm.loaded`: A promise that resolves when the compiler is loaded and the program has run once. +- `livecodes.nimWasm.output`: The program's output. +- `livecodes.nimWasm.error`: The compiler diagnostics, if the code failed to compile. +- `livecodes.nimWasm.exitCode`: The program's exit code. +- `livecodes.nimWasm.run`: A function that compiles and runs the code with new input. It takes a string as input and returns a promise that resolves with an object containing `output`, `error` and `exitCode`. + +Example: + + + +## Language Info + +### Name + +`nim-wasm` + +### Aliases / Extensions + +`nimwasm`, `wasm.nim` + +### Editor + +`script` + +## Compiler + +The [Nim compiler](https://nim-lang.org/) (Nim's `c` backend) compiled to WebAssembly. The generated C is compiled and linked by the [Clang](https://clang.llvm.org/) toolchain of [@live-codes/clang-wasm](https://www.npmjs.com/package/@live-codes/clang-wasm). + +### Version + +Nim `v2.2.4`, Clang `v22.1.8`. + +## Custom Settings + +The compiler can be configured using [custom settings](../advanced/custom-settings.mdx) added to the property `nim-wasm`: + +| Property | Type | Description | +| --- | --- | --- | +| `compileArgs` | `string[]` | Extra Nim flags, e.g. `["--define:release2"]`. | +| `args` | `string[]` | Command-line arguments passed to the program. | + +```json title="Custom Settings" +{ + "nim-wasm": { + "compileArgs": ["--define:release2"], + "args": ["--name", "LiveCodes"] + } +} +``` + +## Live Reload + +By default, new code changes are sent to the result page without a full page reload, avoiding the need to re-download the compiler. Adding the code comment `# __livecodes_reload__` forces a full page reload. + +## Example Usage + +```nim +import std/strutils + +echo "Hello, World!" + +let name = stdin.readLine() +echo "Hello, ", name, "!" +``` + +This target supports standard input, command-line arguments and real exit codes. A program that reads standard input gets an end-of-input error when it is left blank. + +## Starter Template + +https://livecodes.io/?template=nim-wasm + +## Links + +- [Nim official website](https://nim-lang.org/) +- [Nim manual](https://nim-lang.org/docs/manual.html) +- [Nim standard library](https://nim-lang.org/docs/lib.html) +- [@live-codes/nim-wasm](https://www.npmjs.com/package/@live-codes/nim-wasm) +- [C (Wasm)](./c-wasm.mdx) in LiveCodes diff --git a/docs/docs/languages/nim.mdx b/docs/docs/languages/nim.mdx new file mode 100644 index 0000000000..93f59fdb7f --- /dev/null +++ b/docs/docs/languages/nim.mdx @@ -0,0 +1,88 @@ +# Nim + +[Nim](https://nim-lang.org/) is a statically typed, compiled systems programming language. + +In LiveCodes, Nim runs in the browser using the [Nim compiler](https://nim-lang.org/) compiled to WebAssembly, through Nim's JavaScript backend. The compiled program runs in the result page, so it can drive the DOM directly (e.g. through the `dom` and `jsffi` modules). + +> For Nim's WebAssembly backend, which supports standard input, command-line arguments and real exit codes, see [Nim (Wasm)](./nim-wasm.mdx). + +## Usage + +Demo: + +import LiveCodes from '../../src/components/LiveCodes.tsx'; + +export const nimConfig = { + activeEditor: 'script', + script: { + language: 'nim', + content: `echo "Hello, World!"`, + }, + mode: 'simple', + editor: 'auto', + tools: { + status: 'full', + }, +}; + + + +### Communication with the result page + +Nim's JavaScript backend emits one self-sufficient program that runs in the result page. It has a document and a console, so `echo` writes to the console, and the browser modules that ship with the compiler (`dom`, `jsffi`, `jsconsole`, `jscore`, `jsre` and `asyncjs`) are on its search path: + +```nim +import dom + +document.title = "Nim in LiveCodes" +let element = document.createElement("p") +element.innerText = "Hello from Nim!" +document.body.appendChild(element) +``` + +Example: + + + +## Language Info + +### Name + +`nim` + +### Aliases / Extensions + +`nim`, `nims`, `nimble`, `nim-js`, `js.nim` + +### Editor + +`script` + +## Compiler + +The [Nim compiler](https://nim-lang.org/) (Nim's `js` backend) compiled to WebAssembly, packaged as [@live-codes/nim-wasm](https://www.npmjs.com/package/@live-codes/nim-wasm). It is compiled with `execute: false`, and the emitted program runs in the result page. + +### Version + +Nim `v2.2.4`. + +## Example Usage + +```nim +import std/strutils + +echo "Hello, World!" +echo "2 + 2 = ", 2 + 2 +``` + +## Starter Template + +https://livecodes.io/?template=nim + +## Links + +- [Nim official website](https://nim-lang.org/) +- [Nim manual](https://nim-lang.org/docs/manual.html) +- [Nim standard library](https://nim-lang.org/docs/lib.html) +- [@live-codes/nim-wasm](https://www.npmjs.com/package/@live-codes/nim-wasm) +- [Nim (Wasm)](./nim-wasm.mdx) in LiveCodes diff --git a/docs/src/components/LanguageSliders.tsx b/docs/src/components/LanguageSliders.tsx index 710cb7d960..13dd3005a0 100644 --- a/docs/src/components/LanguageSliders.tsx +++ b/docs/src/components/LanguageSliders.tsx @@ -78,6 +78,8 @@ export default function Sliders() { { name: 'rescript', title: 'ReScript' }, { name: 'reason', title: 'Reason' }, { name: 'ocaml', title: 'OCaml' }, + { name: 'nim', title: 'Nim' }, + { name: 'nim-wasm', title: 'Nim (Wasm)' }, { name: 'python', title: 'Python' }, { name: 'python-wasm', title: 'Python (Wasm)' }, { name: 'r', title: 'R' }, diff --git a/docs/src/components/TemplateList.tsx b/docs/src/components/TemplateList.tsx index 0620493154..2bf4915b38 100644 --- a/docs/src/components/TemplateList.tsx +++ b/docs/src/components/TemplateList.tsx @@ -37,6 +37,8 @@ const templates = [ { name: 'rescript', title: 'ReScript Starter', thumbnail: 'rescript.png' }, { name: 'reason', title: 'Reason Starter', thumbnail: 'reason.svg' }, { name: 'ocaml', title: 'Ocaml Starter', thumbnail: 'ocaml.svg' }, + { name: 'nim', title: 'Nim Starter', thumbnail: 'nim.svg' }, + { name: 'nim-wasm', title: 'Nim (Wasm) Starter', thumbnail: 'nim.svg' }, { name: 'python', title: 'Python Starter', thumbnail: 'python.svg' }, { name: 'python-wasm', title: 'Python (Wasm) Starter', thumbnail: 'python.svg' }, { name: 'r', title: 'R Starter', thumbnail: 'r.svg' }, diff --git a/e2e/specs/starter.spec.ts b/e2e/specs/starter.spec.ts index 8dae79225d..1cd4c3b6a5 100644 --- a/e2e/specs/starter.spec.ts +++ b/e2e/specs/starter.spec.ts @@ -484,6 +484,56 @@ test.describe('Starter Templates from UI', () => { await expect(getResult().locator('text=You clicked')).toHaveText('You clicked 3 times.'); }); + test('nim Starter', async ({ page, getTestUrl }) => { + // the compiler is downloaded on the first run + test.slow(); + + await page.goto(getTestUrl()); + + const { app, getResult, waitForResultUpdate } = await getLoadedApp(page); + + await app.click('[aria-label="Project"]'); + await app.click('text=New'); + await app.click('text=Nim Starter'); + + await waitForEditorFocus(app); + await waitForResultUpdate(); + + // the heading is set by the compiled program, and only then is the click handler wired up + await expect(getResult().locator('h1')).toHaveText('Hello, Nim!', { timeout: 120_000 }); + + await getResult().click('text=Click me'); + await getResult().click('text=Click me'); + await getResult().click('text=Click me'); + + await expect(getResult().locator('text=You clicked')).toHaveText('You clicked 3 times.'); + }); + + test('nim-wasm Starter', async ({ page, getTestUrl }) => { + // the compiler, linker and sysroot (~29 MB) are downloaded on the first run + test.slow(); + + await page.goto(getTestUrl()); + + const { app, getResult, waitForResultUpdate } = await getLoadedApp(page); + + await app.click('[aria-label="Project"]'); + await app.click('text=New'); + await app.click('text=Nim (Wasm) Starter'); + + await waitForEditorFocus(app); + await waitForResultUpdate(); + + // the counter stays disabled until the compiler has loaded and run once + await expect(getResult().locator('#counter-button')).toBeEnabled({ timeout: 280_000 }); + + await getResult().click('text=Click me'); + await getResult().click('text=Click me'); + await getResult().click('text=Click me'); + + await expect(getResult().locator('h1')).toHaveText('Hello, Nim!'); + await expect(getResult().locator('text=You clicked')).toHaveText('You clicked 3 times.'); + }); test('haskell Starter', async ({ page, getTestUrl }) => { test.slow(); @@ -1228,6 +1278,48 @@ test.describe('Starter Templates from URL', () => { expect(counterText).toBe('You clicked 3 times.'); }); + test('nim Starter (in URL)', async ({ page, getTestUrl }) => { + // the compiler is downloaded on the first run + test.slow(); + + await page.goto(getTestUrl({ template: 'nim' })); + + const { app, getResult, waitForResultUpdate } = await getLoadedApp(page); + + await waitForEditorFocus(app); + await waitForResultUpdate(); + + // the heading is set by the compiled program, and only then is the click handler wired up + await expect(getResult().locator('h1')).toHaveText('Hello, Nim!', { timeout: 120_000 }); + + await getResult().click('text=Click me'); + await getResult().click('text=Click me'); + await getResult().click('text=Click me'); + + await expect(getResult().locator('text=You clicked')).toHaveText('You clicked 3 times.'); + }); + + test('nim-wasm Starter (in URL)', async ({ page, getTestUrl }) => { + // the compiler, linker and sysroot (~29 MB) are downloaded on the first run + test.slow(); + + await page.goto(getTestUrl({ template: 'nim-wasm' })); + + const { app, getResult, waitForResultUpdate } = await getLoadedApp(page); + + await waitForEditorFocus(app); + await waitForResultUpdate(); + + // the counter stays disabled until the compiler has loaded and run once + await expect(getResult().locator('#counter-button')).toBeEnabled({ timeout: 280_000 }); + + await getResult().click('text=Click me'); + await getResult().click('text=Click me'); + await getResult().click('text=Click me'); + + await expect(getResult().locator('h1')).toHaveText('Hello, Nim!'); + await expect(getResult().locator('text=You clicked')).toHaveText('You clicked 3 times.'); + }); test('haskell Starter (in URL)', async ({ page, getTestUrl }) => { test.slow(); diff --git a/functions/vendors/templates.js b/functions/vendors/templates.js index 25f0f93a75..9f4eaad59f 100644 --- a/functions/vendors/templates.js +++ b/functions/vendors/templates.js @@ -37,6 +37,8 @@ export const starterTemplates = { "rescript": "ReScript Starter", "reason": "Reason Starter", "ocaml": "Ocaml Starter", + "nim": "Nim Starter", + "nim-wasm": "Nim (Wasm) Starter", "python": "Python Starter", "python-wasm": "Python (Wasm) Starter", "r": "R Starter", diff --git a/scripts/build.js b/scripts/build.js index dfdac118b0..3764c3832f 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -228,6 +228,7 @@ const iifeBuild = () => 'languages/java/lang-java-script.ts', 'languages/cpp/lang-cpp-script.ts', 'languages/clang-wasm/lang-clang-wasm-script.ts', + 'languages/nim/lang-nim-wasm-script.ts', 'languages/fortran-wasm/lang-fortran-wasm-script.ts', 'languages/d-wasm/lang-d-wasm-script.ts', 'languages/cobol-wasm/lang-cobol-wasm-script.ts', diff --git a/server/php/inc/starter-templates.json b/server/php/inc/starter-templates.json index a1e2aa0659..068ab8c5fc 100644 --- a/server/php/inc/starter-templates.json +++ b/server/php/inc/starter-templates.json @@ -37,6 +37,8 @@ "rescript": "ReScript Starter", "reason": "Reason Starter", "ocaml": "Ocaml Starter", + "nim": "Nim Starter", + "nim-wasm": "Nim (Wasm) Starter", "python": "Python Starter", "python-wasm": "Python (Wasm) Starter", "r": "R Starter", diff --git a/src/livecodes/UI/command-menu-actions.ts b/src/livecodes/UI/command-menu-actions.ts index 0671054656..ca1c7e9bf9 100644 --- a/src/livecodes/UI/command-menu-actions.ts +++ b/src/livecodes/UI/command-menu-actions.ts @@ -293,6 +293,8 @@ export const getCommandMenuActions = ({ 'rescript', 'reason', 'ocaml', + 'nim', + 'nim-wasm', 'python', 'python-wasm', 'r', diff --git a/src/livecodes/assets/templates/nim.svg b/src/livecodes/assets/templates/nim.svg new file mode 100644 index 0000000000..12515ea9d9 --- /dev/null +++ b/src/livecodes/assets/templates/nim.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/livecodes/html/language-info.html b/src/livecodes/html/language-info.html index b654b1a206..cdaa58ed3d 100644 --- a/src/livecodes/html/language-info.html +++ b/src/livecodes/html/language-info.html @@ -67,7 +67,7 @@

AsciiDoc

>
  • - Learn X in Y minutes, where X=asciidoc
  • @@ -285,7 +285,7 @@

    C (Wasm)

    Clang official website
  • - Learn X in Y minutes, where X=C
  • @@ -361,7 +361,7 @@

    ClojureScript (Cherry)

    Cherry repo
  • - Learn X in Y minutes, where X=clojure
  • @@ -403,7 +403,7 @@

    CLJS (self-hosted)

    >
  • - Learn X in Y minutes, where X=clojure
  • @@ -437,7 +437,7 @@

    COBOL (Wasm)

    >
  • - Learn X in Y minutes, where X=COBOL
  • @@ -463,7 +463,7 @@

    CoffeeScript

    >
  • - Learn X in Y minutes, where X=coffeescript
  • @@ -493,7 +493,7 @@

    Common Lisp

    >
  • - Learn X in Y minutes, where X=Common Lisp
  • @@ -524,7 +524,7 @@

    C++

    JSCPP
  • - Learn X in Y minutes, where X=C++
  • @@ -552,7 +552,7 @@

    C++ (Wasm)

    Clang official website
  • - Learn X in Y minutes, where X=C++
  • @@ -586,7 +586,7 @@

    C# (Wasm)

    >
  • - Learn X in Y minutes, where X=C#
  • @@ -622,7 +622,7 @@

    D (Wasm)

    D language tour
  • - Learn X in Y minutes, where X=D
  • @@ -983,7 +983,7 @@

    Go

    >
  • - Learn X in Y minutes, where X=Go
  • @@ -1008,7 +1008,7 @@

    Go (Wasm)

  • Go official website
  • Yaegi
  • - Learn X in Y minutes, where X=Go
  • @@ -1040,7 +1040,7 @@

    Haml

    >
  • - Learn X in Y minutes, where X=haml
  • @@ -1143,7 +1143,7 @@

    Java

    DoppioJVM
  • - Learn X in Y minutes, where X=java
  • @@ -1174,7 +1174,7 @@

    JavaScript

    >
  • - Learn X in Y minutes, where X=JavaScript
  • @@ -1269,7 +1269,7 @@

    Julia

    >
  • - Learn X in Y minutes, where X=Julia
  • @@ -1286,7 +1286,7 @@

    Less

    +
    +

    Nim

    +
    + Nim compiled to JavaScript by the + Nim compiler, running + entirely in the browser. The program runs in the result page, so it can drive the DOM directly. +
    + +
    +
    +

    Nim (Wasm)

    +
    + Nim compiled to C by the + Nim compiler (compiled to + WebAssembly) and then to WebAssembly by + Clang, running entirely in + the browser. It supports standard input, command-line arguments and real exit codes. +
    + +

    Nunjucks

    @@ -1582,7 +1656,7 @@

    Objective-C (Wasm)

    >
  • - Learn X in Y minutes, where X=Objective-C
  • @@ -1618,7 +1692,7 @@

    Objective-C++ (Wasm)

    >
  • - Learn X in Y minutes, where X=Objective-C
  • @@ -1647,7 +1721,7 @@

    OCaml

    ReScript website
  • - Learn X in Y minutes, where X=OCaml
  • @@ -1706,7 +1780,7 @@

    Perl

    >
  • - Learn X in Y minutes, where X=perl
  • @@ -1731,7 +1805,7 @@

    PHP

    >
  • - Learn X in Y minutes, where X=PHP
  • @@ -1763,7 +1837,7 @@

    PHP (Wasm)

    >
  • - Learn X in Y minutes, where X=PHP
  • @@ -1799,7 +1873,7 @@

    PostgreSQL

    >
  • - Learn X in Y minutes, where X=SQL
  • @@ -1828,7 +1902,7 @@

    Tau Prolog

    SWI-Prolog
  • - Learn X in Y minutes, where X=Prolog
  • @@ -1849,7 +1923,7 @@

    Pug

    >
  • - Learn X in Y minutes, where X=Pug
  • @@ -1874,7 +1948,7 @@

    Python

    Brython documentation
  • - Learn X in Y minutes, where X=Python
  • @@ -1908,7 +1982,7 @@

    Python (Wasm)

  • Pyodide documentation
  • - Learn X in Y minutes, where X=Python
  • @@ -1947,7 +2021,7 @@

    R

    >
  • - Learn X in Y minutes, where X=R
  • @@ -2130,7 +2204,7 @@

    Reason

    ReScript website
  • - Learn X in Y minutes, where X=reason
  • @@ -2215,7 +2289,7 @@

    Ruby

    >
  • - Learn X in Y minutes, where X=ruby
  • @@ -2254,7 +2328,7 @@

    Ruby (WASM)

  • CRuby
  • - Learn X in Y minutes, where X=ruby
  • @@ -2322,7 +2396,7 @@

    Sass

    >
  • - Learn X in Y minutes, where X=sass
  • @@ -2372,7 +2446,7 @@

    SCSS

    >
  • - Learn X in Y minutes, where X=sass
  • @@ -2446,7 +2520,7 @@

    SQLite

    SQL.js official website
  • - Learn X in Y minutes, where X=SQL
  • @@ -2545,7 +2619,7 @@

    Stylus

    Stylus official website
  • - Learn X in Y minutes, where X=stylus
  • @@ -2636,7 +2710,7 @@

    Tcl (Tool Command Language)

    wacl repo
  • - Learn X in Y minutes, where X=Tcl
  • @@ -2753,7 +2827,7 @@

    TypeScript

    >
  • - Learn X in Y minutes, where X=TypeScript
  • @@ -2817,7 +2891,7 @@

    VB.NET (Wasm)

    >
  • - Learn X in Y minutes, where X=Visual Basic
  • @@ -2941,7 +3015,7 @@

    WebAssembly Text Format

    >
  • - Learn X in Y minutes, where X=WebAssembly
  • @@ -2967,7 +3041,7 @@

    Zig (Wasm)

    >
  • - Learn X in Y minutes, where X=Zig
  • diff --git a/src/livecodes/i18n/locales/ar/language-info.lokalise.json b/src/livecodes/i18n/locales/ar/language-info.lokalise.json index 0b88a3529a..7ed13a665c 100644 --- a/src/livecodes/i18n/locales/ar/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/ar/language-info.lokalise.json @@ -534,6 +534,24 @@ "mustache.name": { "translation": "Mustache" }, + "nim.desc": { + "translation": "تم تجميع Nim إلى JavaScript بواسطة مترجم Nim، ويعمل بالكامل داخل المتصفح. يعمل البرنامج في صفحة النتائج، لذا يمكنه التحكم في DOM مباشرةً." + }, + "nim.link": { + "translation": " الموقع الرسمي لـ Nim دليل Nim مكتبة Nim القياسية تعلم X في Y دقائق، حيث X=Nim وثائق LiveCodes تحميل قالب البداية " + }, + "nim.name": { + "translation": "Nim" + }, + "nimWasm.desc": { + "translation": "تم تجميع Nim إلى C بواسطة مترجم Nim (المُجمَّع إلى WebAssembly) ثم إلى WebAssembly بواسطة Clang، ويعمل بالكامل داخل المتصفح. يدعم الإدخال القياسي ومعاملات سطر الأوامر ورموز الخروج الحقيقية." + }, + "nimWasm.link": { + "translation": " الموقع الرسمي لـ Nim دليل Nim مكتبة Nim القياسية تعلم X في Y دقائق، حيث X=Nim وثائق LiveCodes تحميل قالب البداية " + }, + "nimWasm.name": { + "translation": "Nim (Wasm)" + }, "nunjucks.desc": { "translation": "لغة قوالب غنية وقوية لـ JavaScript. Nunjucks هو في الأساس نسخة من jinja2." }, diff --git a/src/livecodes/i18n/locales/ar/language-info.ts b/src/livecodes/i18n/locales/ar/language-info.ts index 5737241424..9db3590f7d 100644 --- a/src/livecodes/i18n/locales/ar/language-info.ts +++ b/src/livecodes/i18n/locales/ar/language-info.ts @@ -301,6 +301,16 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>الموقع الرسمي <3> <4>دليل mustache(5) <5> <6>تطبيق JavaScript <7> <8>وثائق LiveCodes ', name: 'Mustache', }, + nim: { + desc: 'تم تجميع Nim إلى JavaScript بواسطة <1>مترجم Nim، ويعمل بالكامل داخل المتصفح. يعمل البرنامج في صفحة النتائج، لذا يمكنه التحكم في DOM مباشرةً.', + link: '<1> <2>الموقع الرسمي لـ Nim <3> <4>دليل Nim <5> <6>مكتبة Nim القياسية <7> <8>تعلم X في Y دقائق، حيث X=Nim <9> <10>وثائق LiveCodes <11> <12>تحميل قالب البداية ', + name: 'Nim', + }, + nimWasm: { + desc: 'تم تجميع Nim إلى C بواسطة <1>مترجم Nim (المُجمَّع إلى WebAssembly) ثم إلى WebAssembly بواسطة <2>Clang، ويعمل بالكامل داخل المتصفح. يدعم الإدخال القياسي ومعاملات سطر الأوامر ورموز الخروج الحقيقية.', + link: '<1> <2>الموقع الرسمي لـ Nim <3> <4>دليل Nim <5> <6>مكتبة Nim القياسية <7> <8>تعلم X في Y دقائق، حيث X=Nim <9> <10>وثائق LiveCodes <11> <12>تحميل قالب البداية ', + name: 'Nim (Wasm)', + }, nunjucks: { desc: 'لغة قوالب غنية وقوية لـ JavaScript. Nunjucks هو في الأساس نسخة من <1>jinja2.', link: '<1> <2>الموقع الرسمي <3> <4>وثائق LiveCodes ', diff --git a/src/livecodes/i18n/locales/ar/translation.lokalise.json b/src/livecodes/i18n/locales/ar/translation.lokalise.json index ab71cbd71a..1d95e3dc68 100644 --- a/src/livecodes/i18n/locales/ar/translation.lokalise.json +++ b/src/livecodes/i18n/locales/ar/translation.lokalise.json @@ -2070,6 +2070,12 @@ "templates.starter.minizinc": { "translation": "قالب MiniZinc" }, + "templates.starter.nim": { + "translation": "قالب Nim" + }, + "templates.starter.nim-wasm": { + "translation": "قالب Nim (Wasm)" + }, "templates.starter.objc-wasm": { "translation": "قالب Objective-C (Wasm)" }, diff --git a/src/livecodes/i18n/locales/ar/translation.ts b/src/livecodes/i18n/locales/ar/translation.ts index 65c712d703..0b0c2cb55a 100644 --- a/src/livecodes/i18n/locales/ar/translation.ts +++ b/src/livecodes/i18n/locales/ar/translation.ts @@ -1029,6 +1029,8 @@ const translation: I18nTranslation = { markdown: 'قالب Markdown', mdx: 'قالب MDX', minizinc: 'قالب MiniZinc', + nim: 'قالب Nim', + 'nim-wasm': 'قالب Nim (Wasm)', 'objc-wasm': 'قالب Objective-C (Wasm)', ocaml: 'قالب Ocaml', pascal: 'قالب Pascal', diff --git a/src/livecodes/i18n/locales/bn/language-info.lokalise.json b/src/livecodes/i18n/locales/bn/language-info.lokalise.json index cc18eaca54..b0003018c9 100644 --- a/src/livecodes/i18n/locales/bn/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/bn/language-info.lokalise.json @@ -534,6 +534,24 @@ "mustache.name": { "translation": "Mustache" }, + "nim.desc": { + "translation": "Nim Nim কম্পাইলার দ্বারা JavaScript-এ কম্পাইল করা হয়েছে এবং সম্পূর্ণরূপে ব্রাউজারে চলে। প্রোগ্রামটি রেজাল্ট পেজে চলে, তাই এটি সরাসরি DOM নিয়ন্ত্রণ করতে পারে।" + }, + "nim.link": { + "translation": " Nim অফিসিয়াল ওয়েবসাইট Nim ম্যানুয়াল Nim স্ট্যান্ডার্ড লাইব্রেরি Y মিনিটে X শিখুন, যেখানে X=Nim LiveCodes ডকুমেন্টেশন স্টার্টার টেমপ্লেট লোড করুন " + }, + "nim.name": { + "translation": "Nim" + }, + "nimWasm.desc": { + "translation": "Nim Nim কম্পাইলার (WebAssembly-এ কম্পাইল করা) দ্বারা C-তে এবং তারপর Clang দ্বারা WebAssembly-তে কম্পাইল করা হয়েছে এবং সম্পূর্ণরূপে ব্রাউজারে চলে। এটি স্ট্যান্ডার্ড ইনপুট, কমান্ড-লাইন আর্গুমেন্ট এবং প্রকৃত এক্সিট কোড সমর্থন করে।" + }, + "nimWasm.link": { + "translation": " Nim অফিসিয়াল ওয়েবসাইট Nim ম্যানুয়াল Nim স্ট্যান্ডার্ড লাইব্রেরি Y মিনিটে X শিখুন, যেখানে X=Nim LiveCodes ডকুমেন্টেশন স্টার্টার টেমপ্লেট লোড করুন " + }, + "nimWasm.name": { + "translation": "Nim (Wasm)" + }, "nunjucks.desc": { "translation": "JavaScript-এর জন্য একটি সমৃদ্ধ এবং শক্তিশালী টেমপ্লেটিং ভাষা। Nunjucks মূলত jinja2 এর একটি পোর্ট" }, diff --git a/src/livecodes/i18n/locales/bn/language-info.ts b/src/livecodes/i18n/locales/bn/language-info.ts index 419cd4d990..80cd7b1ab3 100644 --- a/src/livecodes/i18n/locales/bn/language-info.ts +++ b/src/livecodes/i18n/locales/bn/language-info.ts @@ -302,6 +302,16 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>অফিসিয়াল ওয়েবসাইট <3> <4>mustache(5) ম্যানুয়াল <5> <6>JavaScript বাস্তবায়ন <7> <8>LiveCodes ডকুমেন্টেশন ', name: 'Mustache', }, + nim: { + desc: 'Nim <1>Nim কম্পাইলার দ্বারা JavaScript-এ কম্পাইল করা হয়েছে এবং সম্পূর্ণরূপে ব্রাউজারে চলে। প্রোগ্রামটি রেজাল্ট পেজে চলে, তাই এটি সরাসরি DOM নিয়ন্ত্রণ করতে পারে।', + link: '<1> <2>Nim অফিসিয়াল ওয়েবসাইট <3> <4>Nim ম্যানুয়াল <5> <6>Nim স্ট্যান্ডার্ড লাইব্রেরি <7> <8>Y মিনিটে X শিখুন, যেখানে X=Nim <9> <10>LiveCodes ডকুমেন্টেশন <11> <12>স্টার্টার টেমপ্লেট লোড করুন ', + name: 'Nim', + }, + nimWasm: { + desc: 'Nim <1>Nim কম্পাইলার (WebAssembly-এ কম্পাইল করা) দ্বারা C-তে এবং তারপর <2>Clang দ্বারা WebAssembly-তে কম্পাইল করা হয়েছে এবং সম্পূর্ণরূপে ব্রাউজারে চলে। এটি স্ট্যান্ডার্ড ইনপুট, কমান্ড-লাইন আর্গুমেন্ট এবং প্রকৃত এক্সিট কোড সমর্থন করে।', + link: '<1> <2>Nim অফিসিয়াল ওয়েবসাইট <3> <4>Nim ম্যানুয়াল <5> <6>Nim স্ট্যান্ডার্ড লাইব্রেরি <7> <8>Y মিনিটে X শিখুন, যেখানে X=Nim <9> <10>LiveCodes ডকুমেন্টেশন <11> <12>স্টার্টার টেমপ্লেট লোড করুন ', + name: 'Nim (Wasm)', + }, nunjucks: { desc: 'JavaScript-এর জন্য একটি সমৃদ্ধ এবং শক্তিশালী টেমপ্লেটিং ভাষা। Nunjucks মূলত <1>jinja2 এর একটি পোর্ট', link: '<1> <2>অফিসিয়াল ওয়েবসাইট <3> <4>LiveCodes ডকুমেন্টেশন ', diff --git a/src/livecodes/i18n/locales/bn/translation.lokalise.json b/src/livecodes/i18n/locales/bn/translation.lokalise.json index f285a5c91f..b7b2d0ff7a 100644 --- a/src/livecodes/i18n/locales/bn/translation.lokalise.json +++ b/src/livecodes/i18n/locales/bn/translation.lokalise.json @@ -2070,6 +2070,12 @@ "templates.starter.minizinc": { "translation": "MiniZinc স্টার্টার" }, + "templates.starter.nim": { + "translation": "Nim স্টার্টার" + }, + "templates.starter.nim-wasm": { + "translation": "Nim (Wasm) স্টার্টার" + }, "templates.starter.objc-wasm": { "translation": "Objective-C (Wasm) স্টার্টার" }, diff --git a/src/livecodes/i18n/locales/bn/translation.ts b/src/livecodes/i18n/locales/bn/translation.ts index 64df2f4167..95fe1623c2 100644 --- a/src/livecodes/i18n/locales/bn/translation.ts +++ b/src/livecodes/i18n/locales/bn/translation.ts @@ -1029,6 +1029,8 @@ const translation: I18nTranslation = { markdown: 'Markdown স্টার্টার', mdx: 'MDX স্টার্টার', minizinc: 'MiniZinc স্টার্টার', + nim: 'Nim স্টার্টার', + 'nim-wasm': 'Nim (Wasm) স্টার্টার', 'objc-wasm': 'Objective-C (Wasm) স্টার্টার', ocaml: 'Ocaml স্টার্টার', pascal: 'Pascal স্টার্টার', diff --git a/src/livecodes/i18n/locales/de/language-info.lokalise.json b/src/livecodes/i18n/locales/de/language-info.lokalise.json index bbc5e5c73d..9cf76f4dfb 100644 --- a/src/livecodes/i18n/locales/de/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/de/language-info.lokalise.json @@ -534,6 +534,24 @@ "mustache.name": { "translation": "Mustache" }, + "nim.desc": { + "translation": "Nim wird vom Nim-Compiler zu JavaScript kompiliert und läuft vollständig im Browser. Das Programm läuft auf der Ergebnisseite und kann daher das DOM direkt steuern." + }, + "nim.link": { + "translation": " Offizielle Website von Nim Nim-Handbuch Nim-Standardbibliothek Lerne X in Y Minuten, wobei X = Nim LiveCodes-Dokumentation Starter-Vorlage laden " + }, + "nim.name": { + "translation": "Nim" + }, + "nimWasm.desc": { + "translation": "Nim wird vom Nim-Compiler (zu WebAssembly kompiliert) zu C und dann von Clang zu WebAssembly kompiliert, und läuft vollständig im Browser. Es unterstützt Standardeingabe, Befehlszeilenargumente und echte Exit-Codes." + }, + "nimWasm.link": { + "translation": " Offizielle Website von Nim Nim-Handbuch Nim-Standardbibliothek Lerne X in Y Minuten, wobei X = Nim LiveCodes-Dokumentation Starter-Vorlage laden " + }, + "nimWasm.name": { + "translation": "Nim (Wasm)" + }, "nunjucks.desc": { "translation": "Eine leistungsstarke und vielseitige Templating-Sprache für JavaScript. Nunjucks ist im Wesentlichen eine Portierung von jinja2." }, diff --git a/src/livecodes/i18n/locales/de/language-info.ts b/src/livecodes/i18n/locales/de/language-info.ts index 05a1c8ea30..ae295de461 100644 --- a/src/livecodes/i18n/locales/de/language-info.ts +++ b/src/livecodes/i18n/locales/de/language-info.ts @@ -304,6 +304,16 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Offizielle Website <3> <4>mustache(5) Handbuch <5> <6>JavaScript-Implementierung <7> <8>LiveCodes Dokumentation ', name: 'Mustache', }, + nim: { + desc: 'Nim wird vom <1>Nim-Compiler zu JavaScript kompiliert und läuft vollständig im Browser. Das Programm läuft auf der Ergebnisseite und kann daher das DOM direkt steuern.', + link: '<1> <2>Offizielle Website von Nim <3> <4>Nim-Handbuch <5> <6>Nim-Standardbibliothek <7> <8>Lerne X in Y Minuten, wobei X = Nim <9> <10>LiveCodes-Dokumentation <11> <12>Starter-Vorlage laden ', + name: 'Nim', + }, + nimWasm: { + desc: 'Nim wird vom <1>Nim-Compiler (zu WebAssembly kompiliert) zu C und dann von <2>Clang zu WebAssembly kompiliert, und läuft vollständig im Browser. Es unterstützt Standardeingabe, Befehlszeilenargumente und echte Exit-Codes.', + link: '<1> <2>Offizielle Website von Nim <3> <4>Nim-Handbuch <5> <6>Nim-Standardbibliothek <7> <8>Lerne X in Y Minuten, wobei X = Nim <9> <10>LiveCodes-Dokumentation <11> <12>Starter-Vorlage laden ', + name: 'Nim (Wasm)', + }, nunjucks: { desc: 'Eine leistungsstarke und vielseitige Templating-Sprache für JavaScript. Nunjucks ist im Wesentlichen eine Portierung von <1>jinja2.', link: '<1> <2>Offizielle Website <3> <4>LiveCodes Dokumentation ', diff --git a/src/livecodes/i18n/locales/de/translation.lokalise.json b/src/livecodes/i18n/locales/de/translation.lokalise.json index 275f7c7581..e731b522db 100644 --- a/src/livecodes/i18n/locales/de/translation.lokalise.json +++ b/src/livecodes/i18n/locales/de/translation.lokalise.json @@ -2070,6 +2070,12 @@ "templates.starter.minizinc": { "translation": "MiniZink-Starter" }, + "templates.starter.nim": { + "translation": "Nim-Starter" + }, + "templates.starter.nim-wasm": { + "translation": "Nim (Wasm)-Starter" + }, "templates.starter.objc-wasm": { "translation": "Objective-C (Wasm)-Starter" }, diff --git a/src/livecodes/i18n/locales/de/translation.ts b/src/livecodes/i18n/locales/de/translation.ts index 45ec909d01..c624316dec 100644 --- a/src/livecodes/i18n/locales/de/translation.ts +++ b/src/livecodes/i18n/locales/de/translation.ts @@ -1031,6 +1031,8 @@ const translation: I18nTranslation = { markdown: 'Markdown-Starter', mdx: 'MDX-Starter', minizinc: 'MiniZink-Starter', + nim: 'Nim-Starter', + 'nim-wasm': 'Nim (Wasm)-Starter', 'objc-wasm': 'Objective-C (Wasm)-Starter', ocaml: 'OCaml-Starter', pascal: 'Pascal-Starter', diff --git a/src/livecodes/i18n/locales/en/language-info.lokalise.json b/src/livecodes/i18n/locales/en/language-info.lokalise.json index 9255770289..c0c2f4cc9f 100644 --- a/src/livecodes/i18n/locales/en/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/en/language-info.lokalise.json @@ -29,7 +29,7 @@ "translation": "AsciiDoc compiled to HTML using Asciidoctor." }, "asciidoc.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " AsciiDoc official website Asciidoctor official website Asciidoctor documentation Learn X in Y minutes, where X=asciidoc " }, "asciidoc.name": { @@ -125,7 +125,7 @@ "translation": "C compiled to WebAssembly by Clang, running entirely in the browser." }, "cWasm.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " C language reference Clang official website Learn X in Y minutes, where X=C LiveCodes Documentation Load starter template " }, "cWasm.name": { @@ -165,7 +165,7 @@ "translation": "ClojureScript is compiled to JavaScript in the browser by the official ClojureScript compiler, self-hosted in the compiler worker." }, "cljsSelfhosted.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " ClojureScript official website Clojure official website ClojureScript self-hosting guide Learn X in Y minutes, where X=clojure LiveCodes Documentations Load starter template " }, "cljsSelfhosted.name": { @@ -177,7 +177,7 @@ "translation": "ClojureScript is a compiler for Clojure that targets JavaScript. In LiveCodes, it runs in the browser using Cherry" }, "clojurescript.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " ClojureScript official website Clojure official website Cherry repo Learn X in Y minutes, where X=clojure LiveCodes Documentations Load starter template " }, "cobol-wasm.desc": { @@ -185,7 +185,7 @@ "translation": "COBOL compiled to WebAssembly by the real GnuCOBOL compiler, running entirely in the browser." }, "cobol-wasm.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " GnuCOBOL official website Learn X in Y minutes, where X=COBOL LiveCodes Documentation Load starter template " }, "cobol-wasm.name": { @@ -197,7 +197,7 @@ "translation": "Unfancy JavaScript." }, "coffeescript.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " CoffeeScript official website Learn X in Y minutes, where X=coffeescript Load starter template " }, "coffeescript.name": { @@ -209,7 +209,7 @@ "translation": "A Common Lisp implementation on Javascript using JSCL (a Lisp-to-Javascript compiler bootstrapped from Common Lisp)." }, "commonlisp.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " Common-Lisp.net JSCL Project Common Lisp Resources Learn X in Y minutes, where X=Common Lisp Load starter template " }, "commonlisp.name": { @@ -225,7 +225,7 @@ "translation": "It is not a complete implementation of C++. Please refer to JSCPP documentation for details." }, "cpp.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " Standard C++ Foundation JSCPP Learn X in Y minutes, where X=C++ Load starter template " }, "cpp.name": { @@ -237,7 +237,7 @@ "translation": "C++ compiled to WebAssembly by Clang, running entirely in the browser. This provides a real C++ compiler, unlike the JSCPP-based C++ interpreter." }, "cppWasm.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " Standard C++ Foundation Clang official website Learn X in Y minutes, where X=C++ LiveCodes Documentation Load starter template " }, "cppWasm.name": { @@ -249,7 +249,7 @@ "translation": "C# compiler running on WebAssembly, using Blazor" }, "csharpWasm.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " C# language documentation Learn X in Y minutes, where X=C# LiveCodes Documentation Load starter template " }, "csharpWasm.name": { @@ -261,7 +261,7 @@ "translation": "D compiled to WebAssembly by DMD, running entirely in the browser." }, "d-wasm.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " D official website D language specification D language tour Learn X in Y minutes, where X=D LiveCodes Documentation Load starter template " }, "d-wasm.name": { @@ -437,7 +437,7 @@ "translation": "Here, it is compiled to JavaScript using GopherJS." }, "go.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": "Go website Go documentation GopherJS repo Learn X in Y minutes, where X=Go LiveCodes Documentations Load starter template " }, "go.name": { @@ -449,7 +449,7 @@ "translation": "Go interpreter running on WebAssembly, using Yaegi" }, "goWasm.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": "Go official website Yaegi Learn X in Y minutes, where X=Go LiveCodes Documentations Load starter template " }, "goWasm.name": { @@ -461,7 +461,7 @@ "translation": "Haml compiler for client side javascript view templates using clientside-haml-js." }, "haml.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": "Haml official website Haml documentation clientside-haml-js GitHub repo Learn X in Y minutes, where X=haml LiveCodes Documentations " }, "haml.name": { @@ -521,7 +521,7 @@ "translation": "JVM running in the browser using DoppioJVM." }, "java.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " Java official website DoppioJVM Learn X in Y minutes, where X=java LiveCodes Documentation Load starter template " }, "java.name": { @@ -533,7 +533,7 @@ "translation": "The scripting language of the web." }, "javascript.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " JavaScript on MDN Learn X in Y minutes, where X=JavaScript LiveCodes Documentation Load starter template " }, "javascript.name": { @@ -573,7 +573,7 @@ "translation": "Julia compiler and Julia Base running on WASM, using julia-wasm adapted by polylang.io" }, "julia.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " Julia official website Julia documentation Learn X in Y minutes, where X=Julia Load starter template " }, "julia.name": { @@ -585,7 +585,7 @@ "translation": "It's CSS, with just a little more." }, "less.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": "Less official website Learn X in Y minutes, where X=less " }, "less.name": { @@ -609,7 +609,7 @@ "translation": "A language which compiles to JavaScript." }, "livescript.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " LiveScript official website Learn X in Y minutes, where X=LiveScript Load starter template " }, "livescript.name": { @@ -621,7 +621,7 @@ "translation": "Lua running in the browser using fengari-web." }, "lua.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": "Lua official website Lua documentation Fengari official website fengari-web GitHub repo Learn X in Y minutes, where X=Lua LiveCodes Documentations Load starter template " }, "lua.name": { @@ -633,7 +633,7 @@ "translation": "Lua running in the browser using Wasmoon, a real lua 5.4 VM with JS bindings made with WebAssembly." }, "luaWasm.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": "Lua official website Lua documentation Wasmoon GitHub repo Learn X in Y minutes, where X=Lua LiveCodes Documentations Load starter template " }, "luaWasm.name": { @@ -657,7 +657,7 @@ "translation": "Markdown compiled to HTML using Marked." }, "markdown.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " Markdown official website Marked documentation Learn X in Y minutes, where X=markdown Load starter template " }, "markdown.name": { @@ -712,6 +712,30 @@ "notes": "", "translation": "Mustache" }, + "nim.desc": { + "notes": "### ###\n\n\n", + "translation": "Nim compiled to JavaScript by the Nim compiler, running entirely in the browser. The program runs in the result page, so it can drive the DOM directly." + }, + "nim.link": { + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "translation": " Nim official website Nim manual Nim standard library Learn X in Y minutes, where X=Nim LiveCodes Documentation Load starter template " + }, + "nim.name": { + "notes": "", + "translation": "Nim" + }, + "nimWasm.desc": { + "notes": "### ###\n\n\n### ###\n\n\n", + "translation": "Nim compiled to C by the Nim compiler (compiled to WebAssembly) and then to WebAssembly by Clang, running entirely in the browser. It supports standard input, command-line arguments and real exit codes." + }, + "nimWasm.link": { + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "translation": " Nim official website Nim manual Nim standard library Learn X in Y minutes, where X=Nim LiveCodes Documentation Load starter template " + }, + "nimWasm.name": { + "notes": "", + "translation": "Nim (Wasm)" + }, "nunjucks.desc": { "notes": "### ###\n\n\n", "translation": "A rich and powerful templating language for JavaScript. Nunjucks is essentially a port of jinja2" @@ -729,7 +753,7 @@ "translation": "Objective-C compiled to WebAssembly by Clang, using the GNUstep Objective-C runtime. This is a runtime and not a class library, so Foundation is not available." }, "objcWasm.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " Objective-C documentation GNUstep libobjc2 Learn X in Y minutes, where X=Objective-C LiveCodes Documentation Load starter template " }, "objcWasm.name": { @@ -741,7 +765,7 @@ "translation": "Objective-C++ compiled to WebAssembly by Clang, using the GNUstep Objective-C runtime. This is a runtime and not a class library, so Foundation is not available." }, "objcppWasm.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " Objective-C documentation GNUstep libobjc2 Learn X in Y minutes, where X=Objective-C LiveCodes Documentation " }, "objcppWasm.name": { @@ -757,7 +781,7 @@ "translation": "ReScript compiler is used here to compile OCaml to JavaScript." }, "ocaml.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": "OCaml website OCaml documentation ReScript website Learn X in Y minutes, where X=OCaml Load starter template " }, "ocaml.name": { @@ -781,7 +805,7 @@ "translation": "Perl running in the browser using Perlito." }, "perl.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " Perl official website Perl documentation Perlito5 Readme Learn X in Y minutes, where X=perl Load starter template " }, "perl.name": { @@ -793,7 +817,7 @@ "translation": "PHP running in the browser using Uniter." }, "php.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": "PHP official website PHP documentation Uniter GitHub repo Learn X in Y minutes, where X=PHP LiveCodes Documentations Load starter template " }, "php.name": { @@ -805,7 +829,7 @@ "translation": "PHP in Browser, powered by WebAssembly, using php-wasm." }, "phpWasm.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": "PHP official website PHP documentation php-wasm GitHub repo Learn X in Y minutes, where X=PHP LiveCodes Documentations Load starter template " }, "phpWasm.name": { @@ -817,7 +841,7 @@ "translation": "PostgreSQL packaged as WASM using PGlite" }, "postgresql.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " PostgreSQL official website PostgreSQL documentation PGlite GitHub repo Learn X in Y minutes, where X=SQL Load starter template " }, "postgresql.name": { @@ -829,7 +853,7 @@ "translation": "An open source Prolog interpreter in JavaScript." }, "prolog.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " Tau Prolog official website Tau Prolog documentation SWI-Prolog Learn X in Y minutes, where X=Prolog Load starter template " }, "prolog.name": { @@ -841,7 +865,7 @@ "translation": "Robust, elegant, feature rich template engine." }, "pug.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " Pug documentation Learn X in Y minutes, where X=Pug LiveCodes Documentations " }, "pug.name": { @@ -853,7 +877,7 @@ "translation": "Python running in the browser using Brython." }, "python.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " Python official website Python documentation Brython documentation Learn X in Y minutes, where X=Python LiveCodes Documentations Load starter template " }, "python.name": { @@ -869,7 +893,7 @@ "translation": "Pyodide allows using Python scientific stack including NumPy, Pandas, Matplotlib, SciPy, scikit-learn and many more. In addition it’s possible to install pure Python wheels from PyPi." }, "pythonWasm.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " Python official website Python documentation Pyodide documentation Learn X in Y minutes, where X=Python LiveCodes Documentations Load starter template " }, "pythonWasm.name": { @@ -881,7 +905,7 @@ "translation": "R running in the browser using WebR." }, "r.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " R project official website The R Manuals R for Data Science (2e) WebR documentation Learn X in Y minutes, where X=R LiveCodes Documentations Load starter template " }, "r.name": { @@ -945,7 +969,7 @@ "translation": "ReScript compiler is used here to compile Reason to JavaScript." }, "reason.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": "Reason website Reason documentation ReasonReact ReScript website Learn X in Y minutes, where X=reason Load starter template " }, "reason.name": { @@ -997,7 +1021,7 @@ "translation": "Ruby running in the browser using Opal." }, "ruby.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " Ruby official website Ruby documentation Opal official website Opal standard library CDN Learn X in Y minutes, where X=ruby LiveCodes Documentations Load starter template " }, "ruby.name": { @@ -1009,7 +1033,7 @@ "translation": "Ruby running in the browser using ruby-wasm (a collection of WebAssembly ports of the CRuby)." }, "rubyWasm.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " Ruby official website Ruby documentation ruby.wasm website CRuby Learn X in Y minutes, where X=ruby LiveCodes Documentations Load starter template " }, "rubyWasm.name": { @@ -1033,7 +1057,7 @@ "translation": "Syntactically Awesome Style Sheets." }, "sass.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " Sass official website Sass documentation Sass (the indented) syntax Learn X in Y minutes, where X=sass " }, "sass.name": { @@ -1057,7 +1081,7 @@ "translation": "Syntactically Awesome Style Sheets." }, "scss.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " Sass official website Sass documentation SCSS syntax Learn X in Y minutes, where X=sass " }, "scss.name": { @@ -1093,7 +1117,7 @@ "translation": "SQLite compiled to JavaScript using SQL.js" }, "sql.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " SQLite official website SQLite syntax documentation SQL.js official website Learn X in Y minutes, where X=SQL Load starter template " }, "sql.name": { @@ -1137,7 +1161,7 @@ "translation": "Expressive, Dynamic, Robust CSS." }, "stylus.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " Stylus official website Learn X in Y minutes, where X=stylus " }, "stylus.name": { @@ -1185,7 +1209,7 @@ "translation": "Tcl running in the browser, using wacl." }, "tcl.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " Tcl official website wacl repo Learn X in Y minutes, where X=Tcl Load starter template " }, "tcl.name": { @@ -1233,7 +1257,7 @@ "translation": "A Typed Superset of JavaScript." }, "typescript.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " Official website TypeScript documentation Learn X in Y minutes, where X=TypeScript Load starter template " }, "typescript.name": { @@ -1257,7 +1281,7 @@ "translation": "VB.NET compiler running on WebAssembly, using Roslyn and the .NET WebAssembly runtime" }, "vbWasm.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " Visual Basic language documentation Learn X in Y minutes, where X=Visual Basic LiveCodes Documentation Load starter template " }, "vbWasm.name": { @@ -1293,7 +1317,7 @@ "translation": "It is converted to wasm using wabt.js." }, "wat.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": "WebAssembly.org WebAssembly Text Specs WebAssembly on MDN Understanding WebAssembly text format wabt.js documentation Learn X in Y minutes, where X=WebAssembly Load starter template " }, "wat.name": { @@ -1305,7 +1329,7 @@ "translation": "Zig compiler running on WebAssembly." }, "zigWasm.link": { - "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", "translation": " Zig website Zig language documentation Learn X in Y minutes, where X=Zig LiveCodes Documentation Load starter template " }, "zigWasm.name": { diff --git a/src/livecodes/i18n/locales/en/language-info.ts b/src/livecodes/i18n/locales/en/language-info.ts index e24ba7406f..3d17c4a968 100644 --- a/src/livecodes/i18n/locales/en/language-info.ts +++ b/src/livecodes/i18n/locales/en/language-info.ts @@ -310,6 +310,16 @@ const languageInfo = { link: '<1> <2>Official website <3> <4>mustache(5) manual <5> <6>JavaScript implementation <7> <8>LiveCodes Documentations ', name: 'Mustache', }, + nim: { + desc: 'Nim compiled to JavaScript by the <1>Nim compiler, running entirely in the browser. The program runs in the result page, so it can drive the DOM directly.', + link: '<1> <2>Nim official website <3> <4>Nim manual <5> <6>Nim standard library <7> <8>Learn X in Y minutes, where X=Nim <9> <10>LiveCodes Documentation <11> <12>Load starter template ', + name: 'Nim', + }, + nimWasm: { + desc: 'Nim compiled to C by the <1>Nim compiler (compiled to WebAssembly) and then to WebAssembly by <2>Clang, running entirely in the browser. It supports standard input, command-line arguments and real exit codes.', + link: '<1> <2>Nim official website <3> <4>Nim manual <5> <6>Nim standard library <7> <8>Learn X in Y minutes, where X=Nim <9> <10>LiveCodes Documentation <11> <12>Load starter template ', + name: 'Nim (Wasm)', + }, nunjucks: { desc: 'A rich and powerful templating language for JavaScript. Nunjucks is essentially a port of <1>jinja2', link: '<1> <2>Official website <3> <4>LiveCodes Documentations ', diff --git a/src/livecodes/i18n/locales/en/translation.lokalise.json b/src/livecodes/i18n/locales/en/translation.lokalise.json index 9699373161..d872d070f9 100644 --- a/src/livecodes/i18n/locales/en/translation.lokalise.json +++ b/src/livecodes/i18n/locales/en/translation.lokalise.json @@ -2760,6 +2760,14 @@ "notes": "", "translation": "MiniZinc Starter" }, + "templates.starter.nim": { + "notes": "", + "translation": "Nim Starter" + }, + "templates.starter.nim-wasm": { + "notes": "", + "translation": "Nim (Wasm) Starter" + }, "templates.starter.objc-wasm": { "notes": "", "translation": "Objective-C (Wasm) Starter" diff --git a/src/livecodes/i18n/locales/en/translation.ts b/src/livecodes/i18n/locales/en/translation.ts index 212c10234b..9c5f207032 100644 --- a/src/livecodes/i18n/locales/en/translation.ts +++ b/src/livecodes/i18n/locales/en/translation.ts @@ -1036,6 +1036,8 @@ const translation = { markdown: 'Markdown Starter', mdx: 'MDX Starter', minizinc: 'MiniZinc Starter', + nim: 'Nim Starter', + 'nim-wasm': 'Nim (Wasm) Starter', 'objc-wasm': 'Objective-C (Wasm) Starter', ocaml: 'Ocaml Starter', pascal: 'Pascal Starter', diff --git a/src/livecodes/i18n/locales/es/language-info.lokalise.json b/src/livecodes/i18n/locales/es/language-info.lokalise.json index 4668820787..68b852c42d 100644 --- a/src/livecodes/i18n/locales/es/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/es/language-info.lokalise.json @@ -534,6 +534,24 @@ "mustache.name": { "translation": "Mustache" }, + "nim.desc": { + "translation": "Nim compilado a JavaScript por el compilador de Nim, ejecutándose íntegramente en el navegador. El programa se ejecuta en la página de resultados, por lo que puede controlar el DOM directamente." + }, + "nim.link": { + "translation": " Página web oficial de Nim Manual de Nim biblioteca estándar de Nim Aprende X en Y minutos, donde X = Nim Documentación de LiveCodes Cargar plantilla inicial " + }, + "nim.name": { + "translation": "Nim" + }, + "nimWasm.desc": { + "translation": "Nim compilado a C por el compilador de Nim (compilado a WebAssembly) y luego a WebAssembly por Clang, ejecutándose íntegramente en el navegador. Admite entrada estándar, argumentos de línea de comandos y códigos de salida reales." + }, + "nimWasm.link": { + "translation": " Página web oficial de Nim Manual de Nim biblioteca estándar de Nim Aprende X en Y minutos, donde X = Nim Documentación de LiveCodes Cargar plantilla inicial " + }, + "nimWasm.name": { + "translation": "Nim (Wasm)" + }, "nunjucks.desc": { "translation": "Un lenguaje de plantillas rico y poderoso para JavaScript. Nunjucks es esencialmente un puerto de jinja2." }, diff --git a/src/livecodes/i18n/locales/es/language-info.ts b/src/livecodes/i18n/locales/es/language-info.ts index 68b7f20ddd..dc99f54d31 100644 --- a/src/livecodes/i18n/locales/es/language-info.ts +++ b/src/livecodes/i18n/locales/es/language-info.ts @@ -304,6 +304,16 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Sitio web oficial <3> <4>Manual de mustache(5) <5> <6>Implementación en JavaScript <7> <8>Documentación de LiveCodes ', name: 'Mustache', }, + nim: { + desc: 'Nim compilado a JavaScript por el <1>compilador de Nim, ejecutándose íntegramente en el navegador. El programa se ejecuta en la página de resultados, por lo que puede controlar el DOM directamente.', + link: '<1> <2>Página web oficial de Nim <3> <4>Manual de Nim <5> <6>biblioteca estándar de Nim <7> <8>Aprende X en Y minutos, donde X = Nim <9> <10>Documentación de LiveCodes <11> <12>Cargar plantilla inicial ', + name: 'Nim', + }, + nimWasm: { + desc: 'Nim compilado a C por el <1>compilador de Nim (compilado a WebAssembly) y luego a WebAssembly por <2>Clang, ejecutándose íntegramente en el navegador. Admite entrada estándar, argumentos de línea de comandos y códigos de salida reales.', + link: '<1> <2>Página web oficial de Nim <3> <4>Manual de Nim <5> <6>biblioteca estándar de Nim <7> <8>Aprende X en Y minutos, donde X = Nim <9> <10>Documentación de LiveCodes <11> <12>Cargar plantilla inicial ', + name: 'Nim (Wasm)', + }, nunjucks: { desc: 'Un lenguaje de plantillas rico y poderoso para JavaScript. Nunjucks es esencialmente un puerto de <1>jinja2.', link: '<1> <2>Sitio web oficial <3> <4>Documentación de LiveCodes ', diff --git a/src/livecodes/i18n/locales/es/translation.lokalise.json b/src/livecodes/i18n/locales/es/translation.lokalise.json index 788309925a..fcca52e95f 100644 --- a/src/livecodes/i18n/locales/es/translation.lokalise.json +++ b/src/livecodes/i18n/locales/es/translation.lokalise.json @@ -2070,6 +2070,12 @@ "templates.starter.minizinc": { "translation": "Inicio MiniZinc" }, + "templates.starter.nim": { + "translation": "Inicio Nim" + }, + "templates.starter.nim-wasm": { + "translation": "Inicio Nim (Wasm)" + }, "templates.starter.objc-wasm": { "translation": "Inicio Objective-C (Wasm)" }, diff --git a/src/livecodes/i18n/locales/es/translation.ts b/src/livecodes/i18n/locales/es/translation.ts index d7adbae72c..a480c758d3 100644 --- a/src/livecodes/i18n/locales/es/translation.ts +++ b/src/livecodes/i18n/locales/es/translation.ts @@ -1029,6 +1029,8 @@ const translation: I18nTranslation = { markdown: 'Inicio Markdown', mdx: 'Inicio MDX', minizinc: 'Inicio MiniZinc', + nim: 'Inicio Nim', + 'nim-wasm': 'Inicio Nim (Wasm)', 'objc-wasm': 'Inicio Objective-C (Wasm)', ocaml: 'Inicio Ocaml', pascal: 'Inicio Pascal', diff --git a/src/livecodes/i18n/locales/fa/language-info.lokalise.json b/src/livecodes/i18n/locales/fa/language-info.lokalise.json index d3c4c511a9..e48b2a39a5 100644 --- a/src/livecodes/i18n/locales/fa/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/fa/language-info.lokalise.json @@ -534,6 +534,24 @@ "mustache.name": { "translation": "Mustache" }, + "nim.desc": { + "translation": "Nim توسط کامپایلر Nim به JavaScript کامپایل شده و کاملاً در مرورگر اجرا می‌شود. برنامه در صفحه نتایج اجرا می‌شود، بنابراین می‌تواند DOM را مستقیماً کنترل کند." + }, + "nim.link": { + "translation": " وب‌سایت رسمی Nim راهنمای Nim کتابخانه استاندارد Nim یادگیری X در Y دقیقه، که X=Nim مستندات LiveCodes بارگذاری قالب شروع کننده " + }, + "nim.name": { + "translation": "Nim" + }, + "nimWasm.desc": { + "translation": "Nim توسط کامپایلر Nim (کامپایل‌شده به WebAssembly) به C و سپس توسط Clang به WebAssembly کامپایل شده و کاملاً در مرورگر اجرا می‌شود. از ورودی استاندارد، آرگومان‌های خط فرمان و کدهای خروج واقعی پشتیبانی می‌کند." + }, + "nimWasm.link": { + "translation": " وب‌سایت رسمی Nim راهنمای Nim کتابخانه استاندارد Nim یادگیری X در Y دقیقه، که X=Nim مستندات LiveCodes بارگذاری قالب شروع کننده " + }, + "nimWasm.name": { + "translation": "Nim (Wasm)" + }, "nunjucks.desc": { "translation": "یک زبان قالب‌ساز غنی و قدرتمند برای JavaScript. Nunjucks اساساً یک پورت از jinja2 است" }, diff --git a/src/livecodes/i18n/locales/fa/language-info.ts b/src/livecodes/i18n/locales/fa/language-info.ts index 947ded750e..9fb2bf347b 100644 --- a/src/livecodes/i18n/locales/fa/language-info.ts +++ b/src/livecodes/i18n/locales/fa/language-info.ts @@ -303,6 +303,16 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>وب‌سایت رسمی <3> <4>راهنمای mustache(5) <5> <6>پیاده‌سازی JavaScript <7> <8>مستندات LiveCodes ', name: 'Mustache', }, + nim: { + desc: 'Nim توسط <1>کامپایلر Nim به JavaScript کامپایل شده و کاملاً در مرورگر اجرا می‌شود. برنامه در صفحه نتایج اجرا می‌شود، بنابراین می‌تواند DOM را مستقیماً کنترل کند.', + link: '<1> <2>وب‌سایت رسمی Nim <3> <4>راهنمای Nim <5> <6>کتابخانه استاندارد Nim <7> <8>یادگیری X در Y دقیقه، که X=Nim <9> <10>مستندات LiveCodes <11> <12>بارگذاری قالب شروع کننده ', + name: 'Nim', + }, + nimWasm: { + desc: 'Nim توسط <1>کامپایلر Nim (کامپایل‌شده به WebAssembly) به C و سپس توسط <2>Clang به WebAssembly کامپایل شده و کاملاً در مرورگر اجرا می‌شود. از ورودی استاندارد، آرگومان‌های خط فرمان و کدهای خروج واقعی پشتیبانی می‌کند.', + link: '<1> <2>وب‌سایت رسمی Nim <3> <4>راهنمای Nim <5> <6>کتابخانه استاندارد Nim <7> <8>یادگیری X در Y دقیقه، که X=Nim <9> <10>مستندات LiveCodes <11> <12>بارگذاری قالب شروع کننده ', + name: 'Nim (Wasm)', + }, nunjucks: { desc: 'یک زبان قالب‌ساز غنی و قدرتمند برای JavaScript. Nunjucks اساساً یک پورت از <1>jinja2 است', link: '<1> <2>وب‌سایت رسمی <3> <4>مستندات LiveCodes ', diff --git a/src/livecodes/i18n/locales/fa/translation.lokalise.json b/src/livecodes/i18n/locales/fa/translation.lokalise.json index 340c54aecd..1cce6702a1 100644 --- a/src/livecodes/i18n/locales/fa/translation.lokalise.json +++ b/src/livecodes/i18n/locales/fa/translation.lokalise.json @@ -2070,6 +2070,12 @@ "templates.starter.minizinc": { "translation": "شروع کننده MiniZinc" }, + "templates.starter.nim": { + "translation": "شروع کننده Nim" + }, + "templates.starter.nim-wasm": { + "translation": "شروع کننده Nim (Wasm)" + }, "templates.starter.objc-wasm": { "translation": "شروع کننده Objective-C (Wasm)" }, diff --git a/src/livecodes/i18n/locales/fa/translation.ts b/src/livecodes/i18n/locales/fa/translation.ts index 14d4410ff6..d94657414a 100644 --- a/src/livecodes/i18n/locales/fa/translation.ts +++ b/src/livecodes/i18n/locales/fa/translation.ts @@ -1030,6 +1030,8 @@ const translation: I18nTranslation = { markdown: 'شروع کننده Markdown', mdx: 'شروع کننده MDX', minizinc: 'شروع کننده MiniZinc', + nim: 'شروع کننده Nim', + 'nim-wasm': 'شروع کننده Nim (Wasm)', 'objc-wasm': 'شروع کننده Objective-C (Wasm)', ocaml: 'شروع کننده Ocaml', pascal: 'شروع کننده Pascal', diff --git a/src/livecodes/i18n/locales/fr/language-info.lokalise.json b/src/livecodes/i18n/locales/fr/language-info.lokalise.json index 56e4e45238..b7f7ce4e04 100644 --- a/src/livecodes/i18n/locales/fr/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/fr/language-info.lokalise.json @@ -534,6 +534,24 @@ "mustache.name": { "translation": "Mustache" }, + "nim.desc": { + "translation": "Nim compilé en JavaScript par le compilateur Nim, s'exécutant entièrement dans le navigateur. Le programme s'exécute dans la page de résultats, il peut donc manipuler le DOM directement." + }, + "nim.link": { + "translation": " Site officiel de Nim Manuel Nim bibliothèque standard de Nim Apprenez X en Y minutes, où X = Nim Documentation LiveCodes Charger le modèle de démarrage " + }, + "nim.name": { + "translation": "Nim" + }, + "nimWasm.desc": { + "translation": "Nim compilé en C par le compilateur Nim (compilé en WebAssembly) puis en WebAssembly par Clang, s'exécutant entièrement dans le navigateur. Il prend en charge l'entrée standard, les arguments de ligne de commande et les véritables codes de sortie." + }, + "nimWasm.link": { + "translation": " Site officiel de Nim Manuel Nim bibliothèque standard de Nim Apprenez X en Y minutes, où X = Nim Documentation LiveCodes Charger le modèle de démarrage " + }, + "nimWasm.name": { + "translation": "Nim (Wasm)" + }, "nunjucks.desc": { "translation": "Un langage de modèle riche et puissant pour JavaScript. Nunjucks est essentiellement un portage de jinja2." }, diff --git a/src/livecodes/i18n/locales/fr/language-info.ts b/src/livecodes/i18n/locales/fr/language-info.ts index a7c5839edb..557f68c3a8 100644 --- a/src/livecodes/i18n/locales/fr/language-info.ts +++ b/src/livecodes/i18n/locales/fr/language-info.ts @@ -304,6 +304,16 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Site officiel <3> <4>Manuel mustache(5) <5> <6>Implémentation JavaScript <7> <8>Documentation LiveCodes ', name: 'Mustache', }, + nim: { + desc: "Nim compilé en JavaScript par le <1>compilateur Nim, s'exécutant entièrement dans le navigateur. Le programme s'exécute dans la page de résultats, il peut donc manipuler le DOM directement.", + link: '<1> <2>Site officiel de Nim <3> <4>Manuel Nim <5> <6>bibliothèque standard de Nim <7> <8>Apprenez X en Y minutes, où X = Nim <9> <10>Documentation LiveCodes <11> <12>Charger le modèle de démarrage ', + name: 'Nim', + }, + nimWasm: { + desc: "Nim compilé en C par le <1>compilateur Nim (compilé en WebAssembly) puis en WebAssembly par <2>Clang, s'exécutant entièrement dans le navigateur. Il prend en charge l'entrée standard, les arguments de ligne de commande et les véritables codes de sortie.", + link: '<1> <2>Site officiel de Nim <3> <4>Manuel Nim <5> <6>bibliothèque standard de Nim <7> <8>Apprenez X en Y minutes, où X = Nim <9> <10>Documentation LiveCodes <11> <12>Charger le modèle de démarrage ', + name: 'Nim (Wasm)', + }, nunjucks: { desc: 'Un langage de modèle riche et puissant pour JavaScript. Nunjucks est essentiellement un portage de <1>jinja2.', link: '<1> <2>Site officiel <3> <4>Documentation LiveCodes ', diff --git a/src/livecodes/i18n/locales/fr/translation.lokalise.json b/src/livecodes/i18n/locales/fr/translation.lokalise.json index f83fb22676..37d59bf56a 100644 --- a/src/livecodes/i18n/locales/fr/translation.lokalise.json +++ b/src/livecodes/i18n/locales/fr/translation.lokalise.json @@ -2070,6 +2070,12 @@ "templates.starter.minizinc": { "translation": "Démarrage MiniZinc" }, + "templates.starter.nim": { + "translation": "Démarrage Nim" + }, + "templates.starter.nim-wasm": { + "translation": "Démarrage Nim (Wasm)" + }, "templates.starter.objc-wasm": { "translation": "Démarrage Objective-C (Wasm)" }, diff --git a/src/livecodes/i18n/locales/fr/translation.ts b/src/livecodes/i18n/locales/fr/translation.ts index bde75f5e8e..fc89cfbca4 100644 --- a/src/livecodes/i18n/locales/fr/translation.ts +++ b/src/livecodes/i18n/locales/fr/translation.ts @@ -1031,6 +1031,8 @@ const translation: I18nTranslation = { markdown: 'Démarrage Markdown', mdx: 'Démarrage MDX', minizinc: 'Démarrage MiniZinc', + nim: 'Démarrage Nim', + 'nim-wasm': 'Démarrage Nim (Wasm)', 'objc-wasm': 'Démarrage Objective-C (Wasm)', ocaml: 'Démarrage OCaml', pascal: 'Démarrage Pascal', diff --git a/src/livecodes/i18n/locales/hi/language-info.lokalise.json b/src/livecodes/i18n/locales/hi/language-info.lokalise.json index 3e2d897d53..dfea82b146 100644 --- a/src/livecodes/i18n/locales/hi/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/hi/language-info.lokalise.json @@ -534,6 +534,24 @@ "mustache.name": { "translation": "Mustache" }, + "nim.desc": { + "translation": "Nim को Nim कंपाइलर द्वारा JavaScript में संकलित किया गया है, जो पूरी तरह से ब्राउज़र में चलता है। प्रोग्राम परिणाम पृष्ठ में चलता है, इसलिए यह सीधे DOM को नियंत्रित कर सकता है।" + }, + "nim.link": { + "translation": " Nim आधिकारिक वेबसाइट Nim मैनुअल Nim मानक पुस्तकालय Y मिनट में X सीखें, जहाँ X=Nim LiveCodes दस्तावेज़ीकरण स्टार्टर टेम्पलेट लोड करें " + }, + "nim.name": { + "translation": "Nim" + }, + "nimWasm.desc": { + "translation": "Nim को Nim कंपाइलर द्वारा C में (WebAssembly में संकलित) और फिर Clang द्वारा WebAssembly में संकलित किया गया है, जो पूरी तरह से ब्राउज़र में चलता है। यह मानक इनपुट, कमांड-लाइन तर्क और वास्तविक निकास कोड का समर्थन करता है।" + }, + "nimWasm.link": { + "translation": " Nim आधिकारिक वेबसाइट Nim मैनुअल Nim मानक पुस्तकालय Y मिनट में X सीखें, जहाँ X=Nim LiveCodes दस्तावेज़ीकरण स्टार्टर टेम्पलेट लोड करें " + }, + "nimWasm.name": { + "translation": "Nim (Wasm)" + }, "nunjucks.desc": { "translation": "JavaScript के लिए एक समृद्ध और शक्तिशाली टेम्प्लेटिंग भाषा। Nunjucks अनिवार्य रूप से jinja2 का एक पोर्ट है।" }, diff --git a/src/livecodes/i18n/locales/hi/language-info.ts b/src/livecodes/i18n/locales/hi/language-info.ts index 92aca6bfee..0764c5d7da 100644 --- a/src/livecodes/i18n/locales/hi/language-info.ts +++ b/src/livecodes/i18n/locales/hi/language-info.ts @@ -303,6 +303,16 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>आधिकारिक वेबसाइट <3> <4>mustache(5) मैनुअल <5> <6>JavaScript कार्यान्वयन <7> <8>LiveCodes दस्तावेज़ीकरण ', name: 'Mustache', }, + nim: { + desc: 'Nim को <1>Nim कंपाइलर द्वारा JavaScript में संकलित किया गया है, जो पूरी तरह से ब्राउज़र में चलता है। प्रोग्राम परिणाम पृष्ठ में चलता है, इसलिए यह सीधे DOM को नियंत्रित कर सकता है।', + link: '<1> <2>Nim आधिकारिक वेबसाइट <3> <4>Nim मैनुअल <5> <6>Nim मानक पुस्तकालय <7> <8>Y मिनट में X सीखें, जहाँ X=Nim <9> <10>LiveCodes दस्तावेज़ीकरण <11> <12>स्टार्टर टेम्पलेट लोड करें ', + name: 'Nim', + }, + nimWasm: { + desc: 'Nim को <1>Nim कंपाइलर द्वारा C में (WebAssembly में संकलित) और फिर <2>Clang द्वारा WebAssembly में संकलित किया गया है, जो पूरी तरह से ब्राउज़र में चलता है। यह मानक इनपुट, कमांड-लाइन तर्क और वास्तविक निकास कोड का समर्थन करता है।', + link: '<1> <2>Nim आधिकारिक वेबसाइट <3> <4>Nim मैनुअल <5> <6>Nim मानक पुस्तकालय <7> <8>Y मिनट में X सीखें, जहाँ X=Nim <9> <10>LiveCodes दस्तावेज़ीकरण <11> <12>स्टार्टर टेम्पलेट लोड करें ', + name: 'Nim (Wasm)', + }, nunjucks: { desc: 'JavaScript के लिए एक समृद्ध और शक्तिशाली टेम्प्लेटिंग भाषा। Nunjucks अनिवार्य रूप से <1>jinja2 का एक पोर्ट है।', link: '<1> <2>आधिकारिक वेबसाइट <3> <4>LiveCodes दस्तावेज़ीकरण ', diff --git a/src/livecodes/i18n/locales/hi/translation.lokalise.json b/src/livecodes/i18n/locales/hi/translation.lokalise.json index 8426deb82e..dbda261870 100644 --- a/src/livecodes/i18n/locales/hi/translation.lokalise.json +++ b/src/livecodes/i18n/locales/hi/translation.lokalise.json @@ -2070,6 +2070,12 @@ "templates.starter.minizinc": { "translation": "MiniZinc स्टार्टर" }, + "templates.starter.nim": { + "translation": "Nim स्टार्टर" + }, + "templates.starter.nim-wasm": { + "translation": "Nim (Wasm) स्टार्टर" + }, "templates.starter.objc-wasm": { "translation": "Objective-C (Wasm) स्टार्टर" }, diff --git a/src/livecodes/i18n/locales/hi/translation.ts b/src/livecodes/i18n/locales/hi/translation.ts index c5e8705f1c..a022126adb 100644 --- a/src/livecodes/i18n/locales/hi/translation.ts +++ b/src/livecodes/i18n/locales/hi/translation.ts @@ -1029,6 +1029,8 @@ const translation: I18nTranslation = { markdown: 'Markdown स्टार्टर', mdx: 'MDX स्टार्टर', minizinc: 'MiniZinc स्टार्टर', + nim: 'Nim स्टार्टर', + 'nim-wasm': 'Nim (Wasm) स्टार्टर', 'objc-wasm': 'Objective-C (Wasm) स्टार्टर', ocaml: 'OCaml स्टार्टर', pascal: 'Pascal स्टार्टर', diff --git a/src/livecodes/i18n/locales/hu/language-info.lokalise.json b/src/livecodes/i18n/locales/hu/language-info.lokalise.json index ff0c937ead..47d3b16a87 100644 --- a/src/livecodes/i18n/locales/hu/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/hu/language-info.lokalise.json @@ -534,6 +534,24 @@ "mustache.name": { "translation": "Mustache" }, + "nim.desc": { + "translation": "A Nim a Nim fordító segítségével JavaScript-re van fordítva, és teljes egészében a böngészőben fut. A program az eredményoldalon fut, így közvetlenül vezérelheti a DOM-ot." + }, + "nim.link": { + "translation": " A Nim hivatalos weboldala Nim kézikönyv Nim standard könyvtár Tanulj meg X-et Y perc alatt, ahol X=Nim LiveCodes dokumentáció Kezdő sablon betöltése " + }, + "nim.name": { + "translation": "Nim" + }, + "nimWasm.desc": { + "translation": "A Nim a Nim fordító segítségével C-re (WebAssembly-re fordítva), majd a Clang segítségével WebAssembly-re van fordítva, és teljes egészében a böngészőben fut. Támogatja a szabványos bemenetet, a parancssori argumentumokat és a valódi kilépési kódokat." + }, + "nimWasm.link": { + "translation": " A Nim hivatalos weboldala Nim kézikönyv Nim standard könyvtár Tanulj meg X-et Y perc alatt, ahol X=Nim LiveCodes dokumentáció Kezdő sablon betöltése " + }, + "nimWasm.name": { + "translation": "Nim (Wasm)" + }, "nunjucks.desc": { "translation": "Egy gazdag és hatékony sablonnyelv JavaScript-hez. A Nunjucks lényegében a jinja2 portja" }, diff --git a/src/livecodes/i18n/locales/hu/language-info.ts b/src/livecodes/i18n/locales/hu/language-info.ts index 812ffb5649..83c1d7ba59 100644 --- a/src/livecodes/i18n/locales/hu/language-info.ts +++ b/src/livecodes/i18n/locales/hu/language-info.ts @@ -304,6 +304,16 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Hivatalos weboldal <3> <4>mustache(5) kézikönyv <5> <6>JavaScript implementáció <7> <8>LiveCodes dokumentáció ', name: 'Mustache', }, + nim: { + desc: 'A Nim a <1>Nim fordító segítségével JavaScript-re van fordítva, és teljes egészében a böngészőben fut. A program az eredményoldalon fut, így közvetlenül vezérelheti a DOM-ot.', + link: '<1> <2>A Nim hivatalos weboldala <3> <4>Nim kézikönyv <5> <6>Nim standard könyvtár <7> <8>Tanulj meg X-et Y perc alatt, ahol X=Nim <9> <10>LiveCodes dokumentáció <11> <12>Kezdő sablon betöltése ', + name: 'Nim', + }, + nimWasm: { + desc: 'A Nim a <1>Nim fordító segítségével C-re (WebAssembly-re fordítva), majd a <2>Clang segítségével WebAssembly-re van fordítva, és teljes egészében a böngészőben fut. Támogatja a szabványos bemenetet, a parancssori argumentumokat és a valódi kilépési kódokat.', + link: '<1> <2>A Nim hivatalos weboldala <3> <4>Nim kézikönyv <5> <6>Nim standard könyvtár <7> <8>Tanulj meg X-et Y perc alatt, ahol X=Nim <9> <10>LiveCodes dokumentáció <11> <12>Kezdő sablon betöltése ', + name: 'Nim (Wasm)', + }, nunjucks: { desc: 'Egy gazdag és hatékony sablonnyelv JavaScript-hez. A Nunjucks lényegében a <1>jinja2 portja', link: '<1> <2>Hivatalos weboldal <3> <4>LiveCodes dokumentáció ', diff --git a/src/livecodes/i18n/locales/hu/translation.lokalise.json b/src/livecodes/i18n/locales/hu/translation.lokalise.json index f979de40ee..d6723871d6 100644 --- a/src/livecodes/i18n/locales/hu/translation.lokalise.json +++ b/src/livecodes/i18n/locales/hu/translation.lokalise.json @@ -2070,6 +2070,12 @@ "templates.starter.minizinc": { "translation": "MiniZinc kezdő" }, + "templates.starter.nim": { + "translation": "Nim kezdő" + }, + "templates.starter.nim-wasm": { + "translation": "Nim (Wasm) kezdő" + }, "templates.starter.objc-wasm": { "translation": "Objective-C (Wasm) kezdő" }, diff --git a/src/livecodes/i18n/locales/hu/translation.ts b/src/livecodes/i18n/locales/hu/translation.ts index e5d5504b54..17652c3700 100644 --- a/src/livecodes/i18n/locales/hu/translation.ts +++ b/src/livecodes/i18n/locales/hu/translation.ts @@ -1030,6 +1030,8 @@ const translation: I18nTranslation = { markdown: 'Markdown kezdő', mdx: 'MDX kezdő', minizinc: 'MiniZinc kezdő', + nim: 'Nim kezdő', + 'nim-wasm': 'Nim (Wasm) kezdő', 'objc-wasm': 'Objective-C (Wasm) kezdő', ocaml: 'OCaml kezdő', pascal: 'Pascal kezdő', diff --git a/src/livecodes/i18n/locales/id/language-info.lokalise.json b/src/livecodes/i18n/locales/id/language-info.lokalise.json index ea2a4a5d90..76e1aa8708 100644 --- a/src/livecodes/i18n/locales/id/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/id/language-info.lokalise.json @@ -534,6 +534,24 @@ "mustache.name": { "translation": "Mustache" }, + "nim.desc": { + "translation": "Nim dikompilasi ke JavaScript oleh kompilator Nim, berjalan sepenuhnya di dalam browser. Program berjalan di halaman hasil, sehingga dapat mengontrol DOM secara langsung." + }, + "nim.link": { + "translation": " Situs web resmi Nim Manual Nim pustaka standar Nim Belajar X dalam Y menit, di mana X = Nim Dokumentasi LiveCodes Muat template pemula " + }, + "nim.name": { + "translation": "Nim" + }, + "nimWasm.desc": { + "translation": "Nim dikompilasi ke C oleh kompilator Nim (dikompilasi ke WebAssembly) dan kemudian ke WebAssembly oleh Clang, berjalan sepenuhnya di dalam browser. Ini mendukung input standar, argumen baris perintah, dan kode keluar nyata." + }, + "nimWasm.link": { + "translation": " Situs web resmi Nim Manual Nim pustaka standar Nim Belajar X dalam Y menit, di mana X = Nim Dokumentasi LiveCodes Muat template pemula " + }, + "nimWasm.name": { + "translation": "Nim (Wasm)" + }, "nunjucks.desc": { "translation": "Bahasa templating yang kaya dan powerful untuk JavaScript. Nunjucks pada dasarnya adalah port dari jinja2" }, diff --git a/src/livecodes/i18n/locales/id/language-info.ts b/src/livecodes/i18n/locales/id/language-info.ts index c2f3c88859..94b7005c42 100644 --- a/src/livecodes/i18n/locales/id/language-info.ts +++ b/src/livecodes/i18n/locales/id/language-info.ts @@ -304,6 +304,16 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Situs web resmi <3> <4>Manual mustache(5) <5> <6>Implementasi JavaScript <7> <8>Dokumentasi LiveCodes ', name: 'Mustache', }, + nim: { + desc: 'Nim dikompilasi ke JavaScript oleh <1>kompilator Nim, berjalan sepenuhnya di dalam browser. Program berjalan di halaman hasil, sehingga dapat mengontrol DOM secara langsung.', + link: '<1> <2>Situs web resmi Nim <3> <4>Manual Nim <5> <6>pustaka standar Nim <7> <8>Belajar X dalam Y menit, di mana X = Nim <9> <10>Dokumentasi LiveCodes <11> <12>Muat template pemula ', + name: 'Nim', + }, + nimWasm: { + desc: 'Nim dikompilasi ke C oleh <1>kompilator Nim (dikompilasi ke WebAssembly) dan kemudian ke WebAssembly oleh <2>Clang, berjalan sepenuhnya di dalam browser. Ini mendukung input standar, argumen baris perintah, dan kode keluar nyata.', + link: '<1> <2>Situs web resmi Nim <3> <4>Manual Nim <5> <6>pustaka standar Nim <7> <8>Belajar X dalam Y menit, di mana X = Nim <9> <10>Dokumentasi LiveCodes <11> <12>Muat template pemula ', + name: 'Nim (Wasm)', + }, nunjucks: { desc: 'Bahasa templating yang kaya dan powerful untuk JavaScript. Nunjucks pada dasarnya adalah port dari <1>jinja2', link: '<1> <2>Situs web resmi <3> <4>Dokumentasi LiveCodes ', diff --git a/src/livecodes/i18n/locales/id/translation.lokalise.json b/src/livecodes/i18n/locales/id/translation.lokalise.json index 5ef5aa11c1..174adea164 100644 --- a/src/livecodes/i18n/locales/id/translation.lokalise.json +++ b/src/livecodes/i18n/locales/id/translation.lokalise.json @@ -2070,6 +2070,12 @@ "templates.starter.minizinc": { "translation": "Pemula MiniZinc" }, + "templates.starter.nim": { + "translation": "Pemula Nim" + }, + "templates.starter.nim-wasm": { + "translation": "Pemula Nim (Wasm)" + }, "templates.starter.objc-wasm": { "translation": "Pemula Objective-C (Wasm)" }, diff --git a/src/livecodes/i18n/locales/id/translation.ts b/src/livecodes/i18n/locales/id/translation.ts index 77bb7d5166..9537fca7e6 100644 --- a/src/livecodes/i18n/locales/id/translation.ts +++ b/src/livecodes/i18n/locales/id/translation.ts @@ -1029,6 +1029,8 @@ const translation: I18nTranslation = { markdown: 'Pemula Markdown', mdx: 'Pemula MDX', minizinc: 'Pemula MiniZinc', + nim: 'Pemula Nim', + 'nim-wasm': 'Pemula Nim (Wasm)', 'objc-wasm': 'Pemula Objective-C (Wasm)', ocaml: 'Pemula Ocaml', pascal: 'Pemula Pascal', diff --git a/src/livecodes/i18n/locales/it/language-info.lokalise.json b/src/livecodes/i18n/locales/it/language-info.lokalise.json index a06cdb1a6e..8094c8577c 100644 --- a/src/livecodes/i18n/locales/it/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/it/language-info.lokalise.json @@ -534,6 +534,24 @@ "mustache.name": { "translation": "Mustache" }, + "nim.desc": { + "translation": "Nim compilato in JavaScript dal compilatore Nim, in esecuzione interamente nel browser. Il programma viene eseguito nella pagina dei risultati, quindi può controllare direttamente il DOM." + }, + "nim.link": { + "translation": " Sito web ufficiale di Nim Manuale Nim libreria standard di Nim Impara X in Y minuti, dove X = Nim Documentazione di LiveCodes Carica il modello di partenza " + }, + "nim.name": { + "translation": "Nim" + }, + "nimWasm.desc": { + "translation": "Nim compilato in C dal compilatore Nim (compilato in WebAssembly) e poi in WebAssembly da Clang, in esecuzione interamente nel browser. Supporta input standard, argomenti della riga di comando e codici di uscita reali." + }, + "nimWasm.link": { + "translation": " Sito web ufficiale di Nim Manuale Nim libreria standard di Nim Impara X in Y minuti, dove X = Nim Documentazione di LiveCodes Carica il modello di partenza " + }, + "nimWasm.name": { + "translation": "Nim (Wasm)" + }, "nunjucks.desc": { "translation": "Un linguaggio di modello ricco e potente per JavaScript. Nunjucks è essenzialmente una porta di jinja2." }, diff --git a/src/livecodes/i18n/locales/it/language-info.ts b/src/livecodes/i18n/locales/it/language-info.ts index 171cebb171..3dc3f898d3 100644 --- a/src/livecodes/i18n/locales/it/language-info.ts +++ b/src/livecodes/i18n/locales/it/language-info.ts @@ -303,6 +303,16 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Sito ufficiale <3> <4>Manuale mustache(5) <5> <6>Implementazione JavaScript <7> <8>Documentazione LiveCodes ', name: 'Mustache', }, + nim: { + desc: 'Nim compilato in JavaScript dal <1>compilatore Nim, in esecuzione interamente nel browser. Il programma viene eseguito nella pagina dei risultati, quindi può controllare direttamente il DOM.', + link: '<1> <2>Sito web ufficiale di Nim <3> <4>Manuale Nim <5> <6>libreria standard di Nim <7> <8>Impara X in Y minuti, dove X = Nim <9> <10>Documentazione di LiveCodes <11> <12>Carica il modello di partenza ', + name: 'Nim', + }, + nimWasm: { + desc: 'Nim compilato in C dal <1>compilatore Nim (compilato in WebAssembly) e poi in WebAssembly da <2>Clang, in esecuzione interamente nel browser. Supporta input standard, argomenti della riga di comando e codici di uscita reali.', + link: '<1> <2>Sito web ufficiale di Nim <3> <4>Manuale Nim <5> <6>libreria standard di Nim <7> <8>Impara X in Y minuti, dove X = Nim <9> <10>Documentazione di LiveCodes <11> <12>Carica il modello di partenza ', + name: 'Nim (Wasm)', + }, nunjucks: { desc: 'Un linguaggio di modello ricco e potente per JavaScript. Nunjucks è essenzialmente una porta di <1>jinja2.', link: '<1> <2>Sito ufficiale <3> <4>Documentazione LiveCodes ', diff --git a/src/livecodes/i18n/locales/it/translation.lokalise.json b/src/livecodes/i18n/locales/it/translation.lokalise.json index c7652d3c64..f5afd03e95 100644 --- a/src/livecodes/i18n/locales/it/translation.lokalise.json +++ b/src/livecodes/i18n/locales/it/translation.lokalise.json @@ -2070,6 +2070,12 @@ "templates.starter.minizinc": { "translation": "Starter MiniZinc" }, + "templates.starter.nim": { + "translation": "Starter Nim" + }, + "templates.starter.nim-wasm": { + "translation": "Starter Nim (Wasm)" + }, "templates.starter.objc-wasm": { "translation": "Starter Objective-C (Wasm)" }, diff --git a/src/livecodes/i18n/locales/it/translation.ts b/src/livecodes/i18n/locales/it/translation.ts index d3bffdef42..5093d4a29a 100644 --- a/src/livecodes/i18n/locales/it/translation.ts +++ b/src/livecodes/i18n/locales/it/translation.ts @@ -1030,6 +1030,8 @@ const translation: I18nTranslation = { markdown: 'Starter Markdown', mdx: 'Starter MDX', minizinc: 'Starter MiniZinc', + nim: 'Starter Nim', + 'nim-wasm': 'Starter Nim (Wasm)', 'objc-wasm': 'Starter Objective-C (Wasm)', ocaml: 'Starter OCaml', pascal: 'Starter Pascal', diff --git a/src/livecodes/i18n/locales/ja/language-info.lokalise.json b/src/livecodes/i18n/locales/ja/language-info.lokalise.json index 16a32bc4bc..db15512843 100644 --- a/src/livecodes/i18n/locales/ja/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/ja/language-info.lokalise.json @@ -534,6 +534,24 @@ "mustache.name": { "translation": "Mustache" }, + "nim.desc": { + "translation": "Nim は Nim コンパイラ によって JavaScript にコンパイルされ、完全にブラウザ内で実行されます。プログラムは結果ページで実行されるため、DOM を直接操作できます。" + }, + "nim.link": { + "translation": " Nim 公式サイト Nim マニュアル Nim標準ライブラリ 「Y分でXを学ぶ」(X=Nim) LiveCodes ドキュメント スターターテンプレートを読み込む " + }, + "nim.name": { + "translation": "Nim" + }, + "nimWasm.desc": { + "translation": "Nim は Nim コンパイラ(WebAssembly にコンパイル済み)によって C にコンパイルされ、その後 Clang によって WebAssembly にコンパイルされ、完全にブラウザ内で実行されます。標準入力、コマンドライン引数、実際の終了コードをサポートします。" + }, + "nimWasm.link": { + "translation": " Nim 公式サイト Nim マニュアル Nim標準ライブラリ 「Y分でXを学ぶ」(X=Nim) LiveCodes ドキュメント スターターテンプレートを読み込む " + }, + "nimWasm.name": { + "translation": "Nim (Wasm)" + }, "nunjucks.desc": { "translation": "JavaScript 用の豊富で強力なテンプレート言語。Nunjucks は本質的にjinja2のポートです。" }, diff --git a/src/livecodes/i18n/locales/ja/language-info.ts b/src/livecodes/i18n/locales/ja/language-info.ts index 3f9ca3dfe2..1c5364cebf 100644 --- a/src/livecodes/i18n/locales/ja/language-info.ts +++ b/src/livecodes/i18n/locales/ja/language-info.ts @@ -303,6 +303,16 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>公式ウェブサイト <3> <4>mustache(5) マニュアル <5> <6>JavaScript 実装 <7> <8>LiveCodes ドキュメント ', name: 'Mustache', }, + nim: { + desc: 'Nim は <1>Nim コンパイラ によって JavaScript にコンパイルされ、完全にブラウザ内で実行されます。プログラムは結果ページで実行されるため、DOM を直接操作できます。', + link: '<1> <2>Nim 公式サイト <3> <4>Nim マニュアル <5> <6>Nim標準ライブラリ <7> <8>「Y分でXを学ぶ」(X=Nim) <9> <10>LiveCodes ドキュメント <11> <12>スターターテンプレートを読み込む ', + name: 'Nim', + }, + nimWasm: { + desc: 'Nim は <1>Nim コンパイラ(WebAssembly にコンパイル済み)によって C にコンパイルされ、その後 <2>Clang によって WebAssembly にコンパイルされ、完全にブラウザ内で実行されます。標準入力、コマンドライン引数、実際の終了コードをサポートします。', + link: '<1> <2>Nim 公式サイト <3> <4>Nim マニュアル <5> <6>Nim標準ライブラリ <7> <8>「Y分でXを学ぶ」(X=Nim) <9> <10>LiveCodes ドキュメント <11> <12>スターターテンプレートを読み込む ', + name: 'Nim (Wasm)', + }, nunjucks: { desc: 'JavaScript 用の豊富で強力なテンプレート言語。Nunjucks は本質的に<1>jinja2のポートです。', link: '<1> <2>公式ウェブサイト <3> <4>LiveCodes ドキュメント ', diff --git a/src/livecodes/i18n/locales/ja/translation.lokalise.json b/src/livecodes/i18n/locales/ja/translation.lokalise.json index ae50b5c4f5..5f887c5989 100644 --- a/src/livecodes/i18n/locales/ja/translation.lokalise.json +++ b/src/livecodes/i18n/locales/ja/translation.lokalise.json @@ -2070,6 +2070,12 @@ "templates.starter.minizinc": { "translation": "MiniZincスターター" }, + "templates.starter.nim": { + "translation": "Nimスターター" + }, + "templates.starter.nim-wasm": { + "translation": "Nim(Wasm)スターター" + }, "templates.starter.objc-wasm": { "translation": "Objective-C(Wasm)スターター" }, diff --git a/src/livecodes/i18n/locales/ja/translation.ts b/src/livecodes/i18n/locales/ja/translation.ts index 41edea9f56..571ff39811 100644 --- a/src/livecodes/i18n/locales/ja/translation.ts +++ b/src/livecodes/i18n/locales/ja/translation.ts @@ -1030,6 +1030,8 @@ const translation: I18nTranslation = { markdown: 'Markdownスターター', mdx: 'MDXスターター', minizinc: 'MiniZincスターター', + nim: 'Nimスターター', + 'nim-wasm': 'Nim(Wasm)スターター', 'objc-wasm': 'Objective-C(Wasm)スターター', ocaml: 'OCamlスターター', pascal: 'Pascalスターター', diff --git a/src/livecodes/i18n/locales/nl/language-info.lokalise.json b/src/livecodes/i18n/locales/nl/language-info.lokalise.json index 86e51ff73d..ed38c74f7c 100644 --- a/src/livecodes/i18n/locales/nl/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/nl/language-info.lokalise.json @@ -534,6 +534,24 @@ "mustache.name": { "translation": "Mustache" }, + "nim.desc": { + "translation": "Nim gecompileerd naar JavaScript door de Nim-compiler, draait volledig in de browser. Het programma draait in de resultatenpagina en kan dus rechtstreeks het DOM aansturen." + }, + "nim.link": { + "translation": " Officiële website van Nim Nim-handleiding Nim standard library Leer X in Y minuten, waarbij X = Nim LiveCodes Documentatie Startsjabloon laden " + }, + "nim.name": { + "translation": "Nim" + }, + "nimWasm.desc": { + "translation": "Nim gecompileerd naar C door de Nim-compiler (gecompileerd naar WebAssembly) en vervolgens naar WebAssembly door Clang, draait volledig in de browser. Het ondersteunt standaardinvoer, opdrachtregelargumenten en echte exitcodes." + }, + "nimWasm.link": { + "translation": " Officiële website van Nim Nim-handleiding Nim standard library Leer X in Y minuten, waarbij X = Nim LiveCodes Documentatie Startsjabloon laden " + }, + "nimWasm.name": { + "translation": "Nim (Wasm)" + }, "nunjucks.desc": { "translation": "Een rijke en krachtige sjabloontaal voor JavaScript. Nunjucks is in wezen een port van jinja2" }, diff --git a/src/livecodes/i18n/locales/nl/language-info.ts b/src/livecodes/i18n/locales/nl/language-info.ts index 67c0c3d2de..3ede32cef6 100644 --- a/src/livecodes/i18n/locales/nl/language-info.ts +++ b/src/livecodes/i18n/locales/nl/language-info.ts @@ -303,6 +303,16 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Officiële website <3> <4>mustache(5) handleiding <5> <6>JavaScript-implementatie <7> <8>LiveCodes Documentatie ', name: 'Mustache', }, + nim: { + desc: 'Nim gecompileerd naar JavaScript door de <1>Nim-compiler, draait volledig in de browser. Het programma draait in de resultatenpagina en kan dus rechtstreeks het DOM aansturen.', + link: '<1> <2>Officiële website van Nim <3> <4>Nim-handleiding <5> <6>Nim standard library <7> <8>Leer X in Y minuten, waarbij X = Nim <9> <10>LiveCodes Documentatie <11> <12>Startsjabloon laden ', + name: 'Nim', + }, + nimWasm: { + desc: 'Nim gecompileerd naar C door de <1>Nim-compiler (gecompileerd naar WebAssembly) en vervolgens naar WebAssembly door <2>Clang, draait volledig in de browser. Het ondersteunt standaardinvoer, opdrachtregelargumenten en echte exitcodes.', + link: '<1> <2>Officiële website van Nim <3> <4>Nim-handleiding <5> <6>Nim standard library <7> <8>Leer X in Y minuten, waarbij X = Nim <9> <10>LiveCodes Documentatie <11> <12>Startsjabloon laden ', + name: 'Nim (Wasm)', + }, nunjucks: { desc: 'Een rijke en krachtige sjabloontaal voor JavaScript. Nunjucks is in wezen een port van <1>jinja2', link: '<1> <2>Officiële website <3> <4>LiveCodes Documentatie ', diff --git a/src/livecodes/i18n/locales/nl/translation.lokalise.json b/src/livecodes/i18n/locales/nl/translation.lokalise.json index e8c564c803..adcc4a3778 100644 --- a/src/livecodes/i18n/locales/nl/translation.lokalise.json +++ b/src/livecodes/i18n/locales/nl/translation.lokalise.json @@ -2070,6 +2070,12 @@ "templates.starter.minizinc": { "translation": "MiniZinc Starter" }, + "templates.starter.nim": { + "translation": "Nim-starter" + }, + "templates.starter.nim-wasm": { + "translation": "Nim (Wasm)-starter" + }, "templates.starter.objc-wasm": { "translation": "Objective-C (Wasm)-starter" }, diff --git a/src/livecodes/i18n/locales/nl/translation.ts b/src/livecodes/i18n/locales/nl/translation.ts index b442290053..8cd1fcf5d8 100644 --- a/src/livecodes/i18n/locales/nl/translation.ts +++ b/src/livecodes/i18n/locales/nl/translation.ts @@ -1030,6 +1030,8 @@ const translation: I18nTranslation = { markdown: 'Markdown-starter', mdx: 'MDX-starter', minizinc: 'MiniZinc Starter', + nim: 'Nim-starter', + 'nim-wasm': 'Nim (Wasm)-starter', 'objc-wasm': 'Objective-C (Wasm)-starter', ocaml: 'Ocaml-starter', pascal: 'Pascal-starter', diff --git a/src/livecodes/i18n/locales/pt/language-info.lokalise.json b/src/livecodes/i18n/locales/pt/language-info.lokalise.json index 9377f9d23f..cbba006288 100644 --- a/src/livecodes/i18n/locales/pt/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/pt/language-info.lokalise.json @@ -534,6 +534,24 @@ "mustache.name": { "translation": "Mustache" }, + "nim.desc": { + "translation": "Nim compilado para JavaScript pelo compilador Nim, sendo executado inteiramente no navegador. O programa é executado na página de resultados, portanto pode controlar o DOM diretamente." + }, + "nim.link": { + "translation": " Site oficial do Nim Manual do Nim biblioteca padrão do Nim Aprenda X em Y minutos, onde X = Nim Documentação do LiveCodes Carregar modelo inicial " + }, + "nim.name": { + "translation": "Nim" + }, + "nimWasm.desc": { + "translation": "Nim compilado para C pelo compilador Nim (compilado para WebAssembly) e depois para WebAssembly pelo Clang, sendo executado inteiramente no navegador. Ele suporta entrada padrão, argumentos de linha de comando e códigos de saída reais." + }, + "nimWasm.link": { + "translation": " Site oficial do Nim Manual do Nim biblioteca padrão do Nim Aprenda X em Y minutos, onde X = Nim Documentação do LiveCodes Carregar modelo inicial " + }, + "nimWasm.name": { + "translation": "Nim (Wasm)" + }, "nunjucks.desc": { "translation": "Uma linguagem de modelação rica e poderosa para JavaScript. Nunjucks é essencialmente uma adaptação do jinja2." }, diff --git a/src/livecodes/i18n/locales/pt/language-info.ts b/src/livecodes/i18n/locales/pt/language-info.ts index 0f98e050d8..1d2921ed6f 100644 --- a/src/livecodes/i18n/locales/pt/language-info.ts +++ b/src/livecodes/i18n/locales/pt/language-info.ts @@ -303,6 +303,16 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Site oficial <3> <4>Manual mustache(5) <5> <6>Implementação JavaScript <7> <8>Documentação do LiveCodes ', name: 'Mustache', }, + nim: { + desc: 'Nim compilado para JavaScript pelo <1>compilador Nim, sendo executado inteiramente no navegador. O programa é executado na página de resultados, portanto pode controlar o DOM diretamente.', + link: '<1> <2>Site oficial do Nim <3> <4>Manual do Nim <5> <6>biblioteca padrão do Nim <7> <8>Aprenda X em Y minutos, onde X = Nim <9> <10>Documentação do LiveCodes <11> <12>Carregar modelo inicial ', + name: 'Nim', + }, + nimWasm: { + desc: 'Nim compilado para C pelo <1>compilador Nim (compilado para WebAssembly) e depois para WebAssembly pelo <2>Clang, sendo executado inteiramente no navegador. Ele suporta entrada padrão, argumentos de linha de comando e códigos de saída reais.', + link: '<1> <2>Site oficial do Nim <3> <4>Manual do Nim <5> <6>biblioteca padrão do Nim <7> <8>Aprenda X em Y minutos, onde X = Nim <9> <10>Documentação do LiveCodes <11> <12>Carregar modelo inicial ', + name: 'Nim (Wasm)', + }, nunjucks: { desc: 'Uma linguagem de modelação rica e poderosa para JavaScript. Nunjucks é essencialmente uma adaptação do <1>jinja2.', link: '<1> <2>Site oficial <3> <4>Documentação do LiveCodes ', diff --git a/src/livecodes/i18n/locales/pt/translation.lokalise.json b/src/livecodes/i18n/locales/pt/translation.lokalise.json index daa395e79b..d1f70b68a9 100644 --- a/src/livecodes/i18n/locales/pt/translation.lokalise.json +++ b/src/livecodes/i18n/locales/pt/translation.lokalise.json @@ -2070,6 +2070,12 @@ "templates.starter.minizinc": { "translation": "Iniciante MiniZinc" }, + "templates.starter.nim": { + "translation": "Iniciante Nim" + }, + "templates.starter.nim-wasm": { + "translation": "Iniciante Nim (Wasm)" + }, "templates.starter.objc-wasm": { "translation": "Iniciante Objective-C (Wasm)" }, diff --git a/src/livecodes/i18n/locales/pt/translation.ts b/src/livecodes/i18n/locales/pt/translation.ts index b01bfe6f14..ae36c8bf22 100644 --- a/src/livecodes/i18n/locales/pt/translation.ts +++ b/src/livecodes/i18n/locales/pt/translation.ts @@ -1030,6 +1030,8 @@ const translation: I18nTranslation = { markdown: 'Iniciante Markdown', mdx: 'Iniciante MDX', minizinc: 'Iniciante MiniZinc', + nim: 'Iniciante Nim', + 'nim-wasm': 'Iniciante Nim (Wasm)', 'objc-wasm': 'Iniciante Objective-C (Wasm)', ocaml: 'Iniciante OCaml', pascal: 'Iniciante Pascal', diff --git a/src/livecodes/i18n/locales/ru/language-info.lokalise.json b/src/livecodes/i18n/locales/ru/language-info.lokalise.json index ccfa471ec2..211d2269dc 100644 --- a/src/livecodes/i18n/locales/ru/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/ru/language-info.lokalise.json @@ -534,6 +534,24 @@ "mustache.name": { "translation": "Mustache" }, + "nim.desc": { + "translation": "Nim компилируется в JavaScript с помощью компилятора Nim и выполняется полностью в браузере. Программа выполняется на странице результатов, поэтому она может напрямую управлять DOM." + }, + "nim.link": { + "translation": " Официальный сайт Nim Руководство Nim стандартная библиотека Nim «Изучите X за Y минут», где X = Nim Документация LiveCodes Загрузить стартовый шаблон " + }, + "nim.name": { + "translation": "Nim" + }, + "nimWasm.desc": { + "translation": "Nim компилируется в C с помощью компилятора Nim (скомпилированного в WebAssembly), а затем в WebAssembly с помощью Clang, и выполняется полностью в браузере. Поддерживает стандартный ввод, аргументы командной строки и реальные коды выхода." + }, + "nimWasm.link": { + "translation": " Официальный сайт Nim Руководство Nim стандартная библиотека Nim «Изучите X за Y минут», где X = Nim Документация LiveCodes Загрузить стартовый шаблон " + }, + "nimWasm.name": { + "translation": "Nim (Wasm)" + }, "nunjucks.desc": { "translation": "Богатый и мощный язык шаблонов для JavaScript. Nunjucks по сути является портом jinja2." }, diff --git a/src/livecodes/i18n/locales/ru/language-info.ts b/src/livecodes/i18n/locales/ru/language-info.ts index 289680a1be..210da01c91 100644 --- a/src/livecodes/i18n/locales/ru/language-info.ts +++ b/src/livecodes/i18n/locales/ru/language-info.ts @@ -305,6 +305,16 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Официальный сайт <3> <4>Руководство mustache(5) <5> <6>JavaScript-реализация <7> <8>Документация LiveCodes ', name: 'Mustache', }, + nim: { + desc: 'Nim компилируется в JavaScript с помощью <1>компилятора Nim и выполняется полностью в браузере. Программа выполняется на странице результатов, поэтому она может напрямую управлять DOM.', + link: '<1> <2>Официальный сайт Nim <3> <4>Руководство Nim <5> <6>стандартная библиотека Nim <7> <8>«Изучите X за Y минут», где X = Nim <9> <10>Документация LiveCodes <11> <12>Загрузить стартовый шаблон ', + name: 'Nim', + }, + nimWasm: { + desc: 'Nim компилируется в C с помощью <1>компилятора Nim (скомпилированного в WebAssembly), а затем в WebAssembly с помощью <2>Clang, и выполняется полностью в браузере. Поддерживает стандартный ввод, аргументы командной строки и реальные коды выхода.', + link: '<1> <2>Официальный сайт Nim <3> <4>Руководство Nim <5> <6>стандартная библиотека Nim <7> <8>«Изучите X за Y минут», где X = Nim <9> <10>Документация LiveCodes <11> <12>Загрузить стартовый шаблон ', + name: 'Nim (Wasm)', + }, nunjucks: { desc: 'Богатый и мощный язык шаблонов для JavaScript. Nunjucks по сути является портом <1>jinja2.', link: '<1> <2>Официальный сайт <3> <4>Документация LiveCodes ', diff --git a/src/livecodes/i18n/locales/ru/translation.lokalise.json b/src/livecodes/i18n/locales/ru/translation.lokalise.json index a148d38992..8ad794a9c1 100644 --- a/src/livecodes/i18n/locales/ru/translation.lokalise.json +++ b/src/livecodes/i18n/locales/ru/translation.lokalise.json @@ -2070,6 +2070,12 @@ "templates.starter.minizinc": { "translation": "Стартер MiniZinc" }, + "templates.starter.nim": { + "translation": "Стартер Nim" + }, + "templates.starter.nim-wasm": { + "translation": "Стартер Nim (Wasm)" + }, "templates.starter.objc-wasm": { "translation": "Стартер Objective-C (Wasm)" }, diff --git a/src/livecodes/i18n/locales/ru/translation.ts b/src/livecodes/i18n/locales/ru/translation.ts index cebb340fd9..d8cce61b19 100644 --- a/src/livecodes/i18n/locales/ru/translation.ts +++ b/src/livecodes/i18n/locales/ru/translation.ts @@ -1029,6 +1029,8 @@ const translation: I18nTranslation = { markdown: 'Стартер Markdown', mdx: 'Стартер MDX', minizinc: 'Стартер MiniZinc', + nim: 'Стартер Nim', + 'nim-wasm': 'Стартер Nim (Wasm)', 'objc-wasm': 'Стартер Objective-C (Wasm)', ocaml: 'Стартер OCaml', pascal: 'Стартер Pascal', diff --git a/src/livecodes/i18n/locales/tr/language-info.lokalise.json b/src/livecodes/i18n/locales/tr/language-info.lokalise.json index 20dde82452..639b33a252 100644 --- a/src/livecodes/i18n/locales/tr/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/tr/language-info.lokalise.json @@ -534,6 +534,24 @@ "mustache.name": { "translation": "Mustache" }, + "nim.desc": { + "translation": "Nim, Nim derleyicisi tarafından JavaScript'e derlenir ve tamamen tarayıcı içinde çalışır. Program sonuç sayfasında çalışır, böylece DOM'u doğrudan kontrol edebilir." + }, + "nim.link": { + "translation": " Nim resmi web sitesi Nim kılavuzu Nim standart kütüphanesi Y dakikada X'i öğrenin, burada X=Nim LiveCodes Belgeleri Başlangıç şablonunu yükle " + }, + "nim.name": { + "translation": "Nim" + }, + "nimWasm.desc": { + "translation": "Nim, Nim derleyicisi tarafından C'ye (WebAssembly'ye derlenmiş) ve ardından Clang tarafından WebAssembly'ye derlenir ve tamamen tarayıcı içinde çalışır. Standart girişi, komut satırı argümanlarını ve gerçek çıkış kodlarını destekler." + }, + "nimWasm.link": { + "translation": " Nim resmi web sitesi Nim kılavuzu Nim standart kütüphanesi Y dakikada X'i öğrenin, burada X=Nim LiveCodes Belgeleri Başlangıç şablonunu yükle " + }, + "nimWasm.name": { + "translation": "Nim (Wasm)" + }, "nunjucks.desc": { "translation": "JavaScript için zengin ve güçlü bir şablonlama dili. Nunjucks aslında jinja2'nin bir portudur." }, diff --git a/src/livecodes/i18n/locales/tr/language-info.ts b/src/livecodes/i18n/locales/tr/language-info.ts index 8e0ea55a92..31ae1a1b82 100644 --- a/src/livecodes/i18n/locales/tr/language-info.ts +++ b/src/livecodes/i18n/locales/tr/language-info.ts @@ -304,6 +304,16 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Resmi web sitesi <3> <4>mustache(5) kılavuzu <5> <6>JavaScript uygulaması <7> <8>LiveCodes Dokümantasyonu ', name: 'Mustache', }, + nim: { + desc: "Nim, <1>Nim derleyicisi tarafından JavaScript'e derlenir ve tamamen tarayıcı içinde çalışır. Program sonuç sayfasında çalışır, böylece DOM'u doğrudan kontrol edebilir.", + link: "<1> <2>Nim resmi web sitesi <3> <4>Nim kılavuzu <5> <6>Nim standart kütüphanesi <7> <8>Y dakikada X'i öğrenin, burada X=Nim <9> <10>LiveCodes Belgeleri <11> <12>Başlangıç şablonunu yükle ", + name: 'Nim', + }, + nimWasm: { + desc: "Nim, <1>Nim derleyicisi tarafından C'ye (WebAssembly'ye derlenmiş) ve ardından <2>Clang tarafından WebAssembly'ye derlenir ve tamamen tarayıcı içinde çalışır. Standart girişi, komut satırı argümanlarını ve gerçek çıkış kodlarını destekler.", + link: "<1> <2>Nim resmi web sitesi <3> <4>Nim kılavuzu <5> <6>Nim standart kütüphanesi <7> <8>Y dakikada X'i öğrenin, burada X=Nim <9> <10>LiveCodes Belgeleri <11> <12>Başlangıç şablonunu yükle ", + name: 'Nim (Wasm)', + }, nunjucks: { desc: "JavaScript için zengin ve güçlü bir şablonlama dili. Nunjucks aslında <1>jinja2'nin bir portudur.", link: '<1> <2>Resmi web sitesi <3> <4>LiveCodes Dokümantasyonu ', diff --git a/src/livecodes/i18n/locales/tr/translation.lokalise.json b/src/livecodes/i18n/locales/tr/translation.lokalise.json index 3a54800460..f8cc07260f 100644 --- a/src/livecodes/i18n/locales/tr/translation.lokalise.json +++ b/src/livecodes/i18n/locales/tr/translation.lokalise.json @@ -2070,6 +2070,12 @@ "templates.starter.minizinc": { "translation": "MiniZinc Başlangıç" }, + "templates.starter.nim": { + "translation": "Nim Başlangıç" + }, + "templates.starter.nim-wasm": { + "translation": "Nim (Wasm) Başlangıç" + }, "templates.starter.objc-wasm": { "translation": "Objective-C (Wasm) Başlangıç" }, diff --git a/src/livecodes/i18n/locales/tr/translation.ts b/src/livecodes/i18n/locales/tr/translation.ts index a776643c6a..292f4fe710 100644 --- a/src/livecodes/i18n/locales/tr/translation.ts +++ b/src/livecodes/i18n/locales/tr/translation.ts @@ -1030,6 +1030,8 @@ const translation: I18nTranslation = { markdown: 'Markdown Başlangıç', mdx: 'MDX Başlangıç', minizinc: 'MiniZinc Başlangıç', + nim: 'Nim Başlangıç', + 'nim-wasm': 'Nim (Wasm) Başlangıç', 'objc-wasm': 'Objective-C (Wasm) Başlangıç', ocaml: 'Ocaml Başlangıç', pascal: 'Pascal Başlangıç', diff --git a/src/livecodes/i18n/locales/ur/language-info.lokalise.json b/src/livecodes/i18n/locales/ur/language-info.lokalise.json index d470645ae8..4e3d1ec1e7 100644 --- a/src/livecodes/i18n/locales/ur/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/ur/language-info.lokalise.json @@ -534,6 +534,24 @@ "mustache.name": { "translation": "مسٹیش" }, + "nim.desc": { + "translation": "Nim کو Nim کمپائلر کے ذریعے JavaScript میں مرتب کیا گیا ہے اور یہ مکمل طور پر براؤزر میں چلتا ہے۔ پروگرام رزلٹ پیج میں چلتا ہے، لہذا یہ براہ راست DOM کو کنٹرول کر سکتا ہے۔" + }, + "nim.link": { + "translation": " Nim آفیشل ویب سائٹ Nim مینوئل Nim معیاری لائبریری Y منٹ میں X سیکھیں، جہاں X=Nim لائیو کوڈز دستاویزات ابتدائی سانچہ لوڈ کریں " + }, + "nim.name": { + "translation": "Nim" + }, + "nimWasm.desc": { + "translation": "Nim کو Nim کمپائلر کے ذریعے C میں (WebAssembly میں مرتب شدہ) اور پھر Clang کے ذریعے WebAssembly میں مرتب کیا گیا ہے اور یہ مکمل طور پر براؤزر میں چلتا ہے۔ یہ معیاری ان پٹ، کمانڈ لائن آرگیومنٹس اور حقیقی ایگزٹ کوڈز کی حمایت کرتا ہے۔" + }, + "nimWasm.link": { + "translation": " Nim آفیشل ویب سائٹ Nim مینوئل Nim معیاری لائبریری Y منٹ میں X سیکھیں، جہاں X=Nim لائیو کوڈز دستاویزات ابتدائی سانچہ لوڈ کریں " + }, + "nimWasm.name": { + "translation": "Nim (Wasm)" + }, "nunjucks.desc": { "translation": "جاوا اسکرپٹ کے لیے ایک امیر اور طاقتور ٹیمپلیٹنگ زبان۔ نن جکس بنیادی طور پر جنجا2 کا ایک پورٹ ہے۔" }, diff --git a/src/livecodes/i18n/locales/ur/language-info.ts b/src/livecodes/i18n/locales/ur/language-info.ts index bb80a63e0c..5d3799f7fe 100644 --- a/src/livecodes/i18n/locales/ur/language-info.ts +++ b/src/livecodes/i18n/locales/ur/language-info.ts @@ -304,6 +304,16 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>سرکاری ویب سائٹ <3> <4>مسٹیش(5) مینوئل <5> <6>جاوا اسکرپٹ نفاذ <7> <8>لائیو کوڈز دستاویزات ', name: 'مسٹیش', }, + nim: { + desc: 'Nim کو <1>Nim کمپائلر کے ذریعے JavaScript میں مرتب کیا گیا ہے اور یہ مکمل طور پر براؤزر میں چلتا ہے۔ پروگرام رزلٹ پیج میں چلتا ہے، لہذا یہ براہ راست DOM کو کنٹرول کر سکتا ہے۔', + link: '<1> <2>Nim آفیشل ویب سائٹ <3> <4>Nim مینوئل <5> <6>Nim معیاری لائبریری <7> <8>Y منٹ میں X سیکھیں، جہاں X=Nim <9> <10>لائیو کوڈز دستاویزات <11> <12>ابتدائی سانچہ لوڈ کریں ', + name: 'Nim', + }, + nimWasm: { + desc: 'Nim کو <1>Nim کمپائلر کے ذریعے C میں (WebAssembly میں مرتب شدہ) اور پھر <2>Clang کے ذریعے WebAssembly میں مرتب کیا گیا ہے اور یہ مکمل طور پر براؤزر میں چلتا ہے۔ یہ معیاری ان پٹ، کمانڈ لائن آرگیومنٹس اور حقیقی ایگزٹ کوڈز کی حمایت کرتا ہے۔', + link: '<1> <2>Nim آفیشل ویب سائٹ <3> <4>Nim مینوئل <5> <6>Nim معیاری لائبریری <7> <8>Y منٹ میں X سیکھیں، جہاں X=Nim <9> <10>لائیو کوڈز دستاویزات <11> <12>ابتدائی سانچہ لوڈ کریں ', + name: 'Nim (Wasm)', + }, nunjucks: { desc: 'جاوا اسکرپٹ کے لیے ایک امیر اور طاقتور ٹیمپلیٹنگ زبان۔ نن جکس بنیادی طور پر <1>جنجا2 کا ایک پورٹ ہے۔', link: '<1> <2>سرکاری ویب سائٹ <3> <4>لائیو کوڈز دستاویزات ', diff --git a/src/livecodes/i18n/locales/ur/translation.lokalise.json b/src/livecodes/i18n/locales/ur/translation.lokalise.json index f367e132bf..3eae8e410a 100644 --- a/src/livecodes/i18n/locales/ur/translation.lokalise.json +++ b/src/livecodes/i18n/locales/ur/translation.lokalise.json @@ -2070,6 +2070,12 @@ "templates.starter.minizinc": { "translation": "MiniZinc شروعاتی" }, + "templates.starter.nim": { + "translation": "Nim شروعاتی" + }, + "templates.starter.nim-wasm": { + "translation": "Nim (واسم) شروعاتی" + }, "templates.starter.objc-wasm": { "translation": "Objective-C (واسم) شروعاتی" }, diff --git a/src/livecodes/i18n/locales/ur/translation.ts b/src/livecodes/i18n/locales/ur/translation.ts index 5dd4d3a86b..12555e19db 100644 --- a/src/livecodes/i18n/locales/ur/translation.ts +++ b/src/livecodes/i18n/locales/ur/translation.ts @@ -1029,6 +1029,8 @@ const translation: I18nTranslation = { markdown: 'مارک ڈاؤن شروعاتی', mdx: 'ایم ڈی ایکس شروعاتی', minizinc: 'MiniZinc شروعاتی', + nim: 'Nim شروعاتی', + 'nim-wasm': 'Nim (واسم) شروعاتی', 'objc-wasm': 'Objective-C (واسم) شروعاتی', ocaml: 'اوکامل شروعاتی', pascal: 'پاسکل شروعاتی', diff --git a/src/livecodes/i18n/locales/zh-CN/language-info.lokalise.json b/src/livecodes/i18n/locales/zh-CN/language-info.lokalise.json index 16b785d973..959c95c047 100644 --- a/src/livecodes/i18n/locales/zh-CN/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/zh-CN/language-info.lokalise.json @@ -534,6 +534,24 @@ "mustache.name": { "translation": "Mustache" }, + "nim.desc": { + "translation": "Nim 由 Nim 编译器 编译为 JavaScript,完全在浏览器中运行。程序在结果页面中运行,因此可以直接操作 DOM。" + }, + "nim.link": { + "translation": " Nim 官方网站 Nim 手册 Nim 标准库 《Y分钟学会X》,其中X=Nim LiveCodes 文档 加载启动模板 " + }, + "nim.name": { + "translation": "Nim" + }, + "nimWasm.desc": { + "translation": "Nim 由 Nim 编译器(编译为 WebAssembly)编译为 C,然后由 Clang 编译为 WebAssembly,完全在浏览器中运行。它支持标准输入、命令行参数和真实的退出代码。" + }, + "nimWasm.link": { + "translation": " Nim 官方网站 Nim 手册 Nim 标准库 《Y分钟学会X》,其中X=Nim LiveCodes 文档 加载启动模板 " + }, + "nimWasm.name": { + "translation": "Nim (Wasm)" + }, "nunjucks.desc": { "translation": "一种丰富而强大的 JavaScript 模板语言。Nunjucks 本质上是 jinja2 的一个移植。" }, diff --git a/src/livecodes/i18n/locales/zh-CN/language-info.ts b/src/livecodes/i18n/locales/zh-CN/language-info.ts index 964c178103..bed3b61ab8 100644 --- a/src/livecodes/i18n/locales/zh-CN/language-info.ts +++ b/src/livecodes/i18n/locales/zh-CN/language-info.ts @@ -299,6 +299,16 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>官方网站 <3> <4>Mustache 5 手册 <5> <6>JavaScript 实现 <7> <8>LiveCodes 文档 ', name: 'Mustache', }, + nim: { + desc: 'Nim 由 <1>Nim 编译器 编译为 JavaScript,完全在浏览器中运行。程序在结果页面中运行,因此可以直接操作 DOM。', + link: '<1> <2>Nim 官方网站 <3> <4>Nim 手册 <5> <6>Nim 标准库 <7> <8>《Y分钟学会X》,其中X=Nim <9> <10>LiveCodes 文档 <11> <12>加载启动模板 ', + name: 'Nim', + }, + nimWasm: { + desc: 'Nim 由 <1>Nim 编译器(编译为 WebAssembly)编译为 C,然后由 <2>Clang 编译为 WebAssembly,完全在浏览器中运行。它支持标准输入、命令行参数和真实的退出代码。', + link: '<1> <2>Nim 官方网站 <3> <4>Nim 手册 <5> <6>Nim 标准库 <7> <8>《Y分钟学会X》,其中X=Nim <9> <10>LiveCodes 文档 <11> <12>加载启动模板 ', + name: 'Nim (Wasm)', + }, nunjucks: { desc: '一种丰富而强大的 JavaScript 模板语言。Nunjucks 本质上是 <1>jinja2 的一个移植。', link: '<1> <2>官方网站 <3> <4>LiveCodes 文档 ', diff --git a/src/livecodes/i18n/locales/zh-CN/translation.lokalise.json b/src/livecodes/i18n/locales/zh-CN/translation.lokalise.json index 9cac7be2c7..b905a7d816 100644 --- a/src/livecodes/i18n/locales/zh-CN/translation.lokalise.json +++ b/src/livecodes/i18n/locales/zh-CN/translation.lokalise.json @@ -2070,6 +2070,12 @@ "templates.starter.minizinc": { "translation": "MiniZinc 启动模板" }, + "templates.starter.nim": { + "translation": "Nim 启动模板" + }, + "templates.starter.nim-wasm": { + "translation": "Nim(WASM)启动模板" + }, "templates.starter.objc-wasm": { "translation": "Objective-C(WASM)启动模板" }, diff --git a/src/livecodes/i18n/locales/zh-CN/translation.ts b/src/livecodes/i18n/locales/zh-CN/translation.ts index 234934ca20..9857c05d16 100644 --- a/src/livecodes/i18n/locales/zh-CN/translation.ts +++ b/src/livecodes/i18n/locales/zh-CN/translation.ts @@ -1027,6 +1027,8 @@ const translation: I18nTranslation = { markdown: 'Markdown 启动模板', mdx: 'MDX 启动模板', minizinc: 'MiniZinc 启动模板', + nim: 'Nim 启动模板', + 'nim-wasm': 'Nim(WASM)启动模板', 'objc-wasm': 'Objective-C(WASM)启动模板', ocaml: 'Ocaml 启动模板', pascal: 'Pascal 启动模板', diff --git a/src/livecodes/languages/languages.ts b/src/livecodes/languages/languages.ts index bce826559c..8748664aae 100644 --- a/src/livecodes/languages/languages.ts +++ b/src/livecodes/languages/languages.ts @@ -57,6 +57,7 @@ import { mdx } from './mdx'; import { minizinc } from './minizinc'; import { mjml } from './mjml'; import { mustache } from './mustache'; +import { nim, nimWasm } from './nim'; import { nunjucks } from './nunjucks'; import { ocaml } from './ocaml'; import { pascal } from './pascal'; @@ -159,6 +160,8 @@ export const languages: LanguageSpecs[] = [ rescript, reason, ocaml, + nim, + nimWasm, python, pythonWasm, r, diff --git a/src/livecodes/languages/nim/__tests__/lang-nim-wasm.spec.ts b/src/livecodes/languages/nim/__tests__/lang-nim-wasm.spec.ts new file mode 100644 index 0000000000..17405bbc33 --- /dev/null +++ b/src/livecodes/languages/nim/__tests__/lang-nim-wasm.spec.ts @@ -0,0 +1,40 @@ +import type { Compiler, Config } from '../../../models'; +import { nimWasm } from '../lang-nim-wasm'; + +const getInlineScript = async (config: Config) => { + const inlineScript = (nimWasm.compiler as Compiler).inlineScript; + if (typeof inlineScript !== 'function') { + throw new Error('expected a function inlineScript for nim-wasm'); + } + return inlineScript({ baseUrl: '', config }); +}; + +const configWith = (customSettings: Config['customSettings']) => + ({ customSettings }) as unknown as Config; + +describe('nim-wasm custom settings', () => { + test('exposes an inlineScript', () => { + expect(typeof (nimWasm.compiler as Compiler).inlineScript).toBe('function'); + }); + + test('emits the settings under the language name', async () => { + const settings = { compileArgs: ['--define:release2'], args: ['--name', 'LiveCodes'] }; + const script = await getInlineScript(configWith({ 'nim-wasm': settings })); + expect(script).toContain('window.livecodes.nimWasm.settings'); + expect(script).toContain('"nim-wasm"'); + expect(script).toContain(JSON.stringify(settings)); + }); + + test('escapes a closing script tag in a setting', async () => { + const script = await getInlineScript( + configWith({ 'nim-wasm': { compileArgs: [''] } }), + ); + expect(script).not.toContain(''); + expect(script).toContain('\\u003c/script>'); + }); + + test('replaces previous settings so a removed setting does not linger', async () => { + const script = await getInlineScript(configWith({})); + expect(script).toContain('{ "nim-wasm": {} }'); + }); +}); diff --git a/src/livecodes/languages/nim/index.ts b/src/livecodes/languages/nim/index.ts new file mode 100644 index 0000000000..0181678430 --- /dev/null +++ b/src/livecodes/languages/nim/index.ts @@ -0,0 +1,2 @@ +export * from './lang-nim'; +export * from './lang-nim-wasm'; diff --git a/src/livecodes/languages/nim/lang-nim-wasm-script.ts b/src/livecodes/languages/nim/lang-nim-wasm-script.ts new file mode 100644 index 0000000000..89bd4bbb8a --- /dev/null +++ b/src/livecodes/languages/nim/lang-nim-wasm-script.ts @@ -0,0 +1,214 @@ +/* eslint-disable no-console */ +import { clangWasmBaseUrl, nimWasmBaseUrl } from '../../vendors'; +import { createLoadingReporter, runCompiler } from '../wasm-runtime'; +import { createWorkerRunner, type Runner } from '../worker-runner'; + +// Nim's WebAssembly target: Nim compiles to C, and Clang and the linker turn that into a wasm +// module. Both block the thread they run on, so they run in a worker of their own — and the +// program runs there too, which is why stdin, stdout, stderr and the exit code all work. + +const SCRIPT_TYPE = 'text/nim-wasm'; + +/** + * Options read from `config.customSettings`: `compileArgs` is fixed when the compiler is created, + * while `args` is a per-run option. + */ +interface NimWasmSettings { + compileArgs?: string[]; + args?: string[]; +} + +interface RunResult { + input: string; + output: string | null; + error: string | null; + exitCode: number | null; +} + +interface NimWasmApi { + ready: boolean; + failed: boolean; + input: string; + output: string | null; + error: string | null; + exitCode: number | null; + loaded: Promise; + init: Promise | null; + runner?: Runner; + settings?: Record; + run: (input?: string) => Promise; +} + +declare const window: Window & { + livecodes: Record; +}; + +const getWorkerSrc = () => ` +importScripts(${JSON.stringify(clangWasmBaseUrl + 'dist/clang-wasm-toolchain.global.js')}); +importScripts(${JSON.stringify(nimWasmBaseUrl + 'dist/nim-wasm.global.js')}); + +let toolchain = null; +let compiler = null; +let compilerArgs = null; + +const getToolchain = () => { + toolchain = + toolchain || + self.clangWasmToolchain.createToolchain({ + baseUrl: ${JSON.stringify(clangWasmBaseUrl + 'assets/')}, + }); + return toolchain; +}; + +const getCompiler = (compileArgs = []) => { + const key = JSON.stringify(compileArgs); + if (compiler && compilerArgs === key) return compiler; + compilerArgs = key; + const previous = compiler; + const created = (async () => { + // Compile through the Clang runtime this page already uses, rather than the second copy the + // Nim IIFE carries inside it, so only one runtime is ever loaded. + const built = await getToolchain(); + const next = await self.nimWasm.createCompiler({ + target: 'wasm', + baseUrl: ${JSON.stringify(nimWasmBaseUrl + 'assets/nim/')}, + toolchain: built, + compileArgs, + }); + // compileArgs is fixed when a compiler is created, so a change builds a new one and + // releases the old; the shared toolchain belongs to this page and is not released. + if (previous) previous.then((old) => old.dispose()).catch(() => undefined); + return next; + })(); + created.catch(() => { + if (compiler === created) { + compiler = null; + compilerArgs = null; + } + }); + compiler = created; + return compiler; +}; + +addEventListener('message', async (event) => { + const { id, code, input, options } = event.data; + try { + const result = await (await getCompiler(options && options.compileArgs)).run( + code, + input, + options, + ); + postMessage({ + id, + result: { + output: result.output, + errors: result.errors, + exitCode: result.exitCode, + }, + }); + } catch (error) { + postMessage({ id, error: String((error && error.message) || error) }); + } +}); + +getCompiler().then( + () => postMessage({ type: 'ready' }), + (error) => postMessage({ type: 'error', message: String((error && error.message) || error) }), +); +`; + +const reportLoading = createLoadingReporter(); + +const setResult = ( + input: string, + output: string | null, + error: string | null, + exitCode: number | null, +): RunResult => { + nimWasm.input = input; + nimWasm.output = output; + nimWasm.error = error; + nimWasm.exitCode = exitCode; + nimWasm.ready = true; + + if (error != null) { + console.error(error); + } else if (output != null) { + console.log(output); + } + return { input, output, error, exitCode }; +}; + +window.livecodes.nimWasm ??= {} as NimWasmApi; + +const nimWasm = window.livecodes.nimWasm; +nimWasm.ready = false; +nimWasm.failed = false; + +/** The custom settings of the running language, injected by the language's `inlineScript`. */ +const getSettings = (): NimWasmSettings => { + const settings = nimWasm.settings?.['nim-wasm']; + return settings != null && typeof settings === 'object' ? settings : {}; +}; + +const getCode = () => { + let code = ''; + document.querySelectorAll(`script[type="${SCRIPT_TYPE}"]`).forEach((script) => { + code += `${script.innerHTML}\n`; + }); + return code; +}; + +/** Start (once) downloading the toolchain, showing the loading indicator while it happens. */ +const ensureLoaded = (runner: Runner): Promise => { + let init = nimWasm.init; + if (!init) { + nimWasm.failed = false; + init = (async () => { + reportLoading(true); + try { + await runner.ensureReady(); + } finally { + reportLoading(false); + } + })().catch((error: Error) => { + // Reset so a later run can retry the download, and let `loaded` reject. + nimWasm.init = null; + nimWasm.failed = true; + throw error; + }); + // The failure is surfaced through `run`; do not also report it unhandled. + init.catch(() => undefined); + nimWasm.init = init; + } + return init; +}; + +nimWasm.loaded = new Promise((resolve, reject) => { + const interval = setInterval(() => { + if (nimWasm.failed) { + clearInterval(interval); + reject(new Error(nimWasm.error || 'Failed to initialize the Nim compiler')); + } else if (nimWasm.ready) { + clearInterval(interval); + resolve(); + } + }, 50); +}); + +nimWasm.run = async (input?: string) => { + const stdin = `${input ?? nimWasm.input ?? ''}`; + const code = getCode(); + if (!code.trim()) return setResult(stdin, null, null, null); + + const runner = (nimWasm.runner = + nimWasm.runner || createWorkerRunner({ getWorkerSrc, label: 'Nim' })); + + return runCompiler(runner, ensureLoaded, code, stdin, setResult, getSettings()); +}; + +window.addEventListener('load', async () => { + reportLoading(true); + await nimWasm.run(nimWasm.input); + reportLoading(false); +}); diff --git a/src/livecodes/languages/nim/lang-nim-wasm.ts b/src/livecodes/languages/nim/lang-nim-wasm.ts new file mode 100644 index 0000000000..ece81821fc --- /dev/null +++ b/src/livecodes/languages/nim/lang-nim-wasm.ts @@ -0,0 +1,39 @@ +import type { Config, LanguageSpecs } from '../../models'; +import { getLanguageCustomSettings } from '../../utils'; +import { codeMirrorBaseUrl, monacoLanguagesBaseUrl } from '../../vendors'; + +// Nim's WebAssembly target compiles to C and then through the Clang toolchain, so it runs like the +// Clang languages: the compiler here is a pass-through and the source reaches the result page as a +// `text/nim-wasm` tag, where `lang-nim-wasm-script.ts` compiles and runs it in a worker. +const getSettingsScript = (config: Config) => { + const settings = getLanguageCustomSettings('nim-wasm', config); + // `\u003c` keeps a `` in a setting (e.g. a compile argument) from closing the tag. + const serialized = JSON.stringify(settings).replace(/ async (code) => code, + scripts: ({ baseUrl }) => [baseUrl + '{{hash:lang-nim-wasm-script.js}}'], + inlineScript: ({ config }) => getSettingsScript(config), + scriptType: 'text/nim-wasm', + compiledCodeLanguage: 'nim-wasm', + liveReload: true, + }, + extensions: ['nimwasm', 'wasm.nim'], + editor: 'script', + editorSupport: { + monaco: { languageSupport: monacoLanguagesBaseUrl + 'nim.js', language: 'nim' }, + codemirror: { + languageSupport: async () => + (await import(codeMirrorBaseUrl + 'codemirror-lang-nim.js')).nim(), + }, + codejar: { language: 'nim' }, + }, + largeDownload: true, +}; diff --git a/src/livecodes/languages/nim/lang-nim.ts b/src/livecodes/languages/nim/lang-nim.ts new file mode 100644 index 0000000000..6e57e5a86a --- /dev/null +++ b/src/livecodes/languages/nim/lang-nim.ts @@ -0,0 +1,48 @@ +import type { CompileResult, LanguageSpecs } from '../../models'; +import { codeMirrorBaseUrl, monacoLanguagesBaseUrl, nimWasmBaseUrl } from '../../vendors'; + +// Nim's JavaScript backend, for pages that want a document: the compiler emits one self-sufficient +// file, so it is compiled with `execute: false` and the result is run in the result page, the same +// shape as the TypeScript compiler's factory. +export const nim: LanguageSpecs = { + name: 'nim', + title: 'Nim', + compiler: { + url: nimWasmBaseUrl + 'dist/nim-wasm.global.js', + factory: () => { + let compiler: Promise | null = null; + const getCompiler = () => { + if (!compiler) { + const created: Promise = (self as any).nimWasm.createCompiler({ + target: 'js', + baseUrl: nimWasmBaseUrl + 'assets/nim/', + }); + // do not keep a failed boot (e.g. a transient network error) + created.catch(() => { + compiler = null; + }); + compiler = created; + } + return compiler; + }; + return async (code: string): Promise => { + const result = await (await getCompiler()).run(code, '', { execute: false }); + if (!result.compiledCode) { + return { code: '', info: { errors: result.errors || ['Nim produced no output.'] } }; + } + // The emitted program declares its runtime at the top level and calls `main()` at the + // end, so it gets a scope of its own rather than sharing the page's globals. + return { code: `(() => {\n${result.compiledCode}\n})();`, info: {} }; + }; + }, + }, + extensions: ['nim', 'nims', 'nimble', 'nim-js', 'js.nim'], + editor: 'script', + editorSupport: { + monaco: { languageSupport: monacoLanguagesBaseUrl + 'nim.js' }, + codemirror: { + languageSupport: async () => + (await import(codeMirrorBaseUrl + 'codemirror-lang-nim.js')).nim(), + }, + }, +}; diff --git a/src/livecodes/languages/v-wasm/lang-v-wasm.ts b/src/livecodes/languages/v-wasm/lang-v-wasm.ts index 3622307e9a..8af3b00156 100644 --- a/src/livecodes/languages/v-wasm/lang-v-wasm.ts +++ b/src/livecodes/languages/v-wasm/lang-v-wasm.ts @@ -19,7 +19,7 @@ export const vWasm: LanguageSpecs = { language: 'v', }, codemirror: { - languageSupport: async () => (await import(codeMirrorBaseUrl + 'codemirror-lang-go.js')).go(), + languageSupport: async () => (await import(codeMirrorBaseUrl + 'codemirror-lang-v.js')).v(), }, codejar: { language: 'v' }, }, diff --git a/src/livecodes/models.ts b/src/livecodes/models.ts index 0db6ff321b..0e94779466 100644 --- a/src/livecodes/models.ts +++ b/src/livecodes/models.ts @@ -201,6 +201,7 @@ export interface Compiler { | 'text/cpp-wasm' | 'text/objc-wasm' | 'text/objcpp-wasm' + | 'text/nim-wasm' | 'text/fortran-wasm' | 'text/d-wasm' | 'text/cobol-wasm' diff --git a/src/livecodes/templates/starter/index.ts b/src/livecodes/templates/starter/index.ts index 76cc140576..90663fce2c 100644 --- a/src/livecodes/templates/starter/index.ts +++ b/src/livecodes/templates/starter/index.ts @@ -51,6 +51,8 @@ import { malinaStarter } from './malina-starter'; import { markdownStarter } from './markdown-starter'; import { mdxStarter } from './mdx-starter'; import { minizincStarter } from './minizinc-starter'; +import { nimStarter } from './nim-starter'; +import { nimWasmStarter } from './nim-wasm-starter'; import { ocamlStarter } from './ocaml-starter'; import { pascalStarter } from './pascal-starter'; import { perlStarter } from './perl-starter'; @@ -128,6 +130,8 @@ export const starterTemplates = [ rescriptStarter, reasonStarter, ocamlStarter, + nimStarter, + nimWasmStarter, pythonStarter, pythonWasmStarter, rStarter, diff --git a/src/livecodes/templates/starter/nim-starter.ts b/src/livecodes/templates/starter/nim-starter.ts new file mode 100644 index 0000000000..04b9d11d2e --- /dev/null +++ b/src/livecodes/templates/starter/nim-starter.ts @@ -0,0 +1,52 @@ +import type { Template } from '../../models'; + +export const nimStarter: Template = { + name: 'nim', + title: window.deps.translateString('templates.starter.nim', 'Nim Starter'), + thumbnail: 'assets/templates/nim.svg', + activeEditor: 'script', + markup: { + language: 'html', + content: ` +
    +

    Hello, World!

    + +

    You clicked 0 times.

    + +
    +`.trimStart(), + }, + style: { + language: 'css', + content: ` +.container, +.container button { + text-align: center; + font: 1em sans-serif; +} +.logo { + width: 150px; +} +`.trimStart(), + }, + script: { + language: 'nim', + // The JavaScript backend runs the program in the result page, so it can drive the DOM directly. + content: ` +import dom + +var count = 0 + +proc render() = + document.getElementById("name").innerText = "Nim" + document.getElementById("counter").innerText = $count + +proc onClick(event: Event) = + inc count + render() + +document.getElementById("counter-button").addEventListener("click", onClick) +render() +`.trimStart(), + }, +}; diff --git a/src/livecodes/templates/starter/nim-wasm-starter.ts b/src/livecodes/templates/starter/nim-wasm-starter.ts new file mode 100644 index 0000000000..9fe05df9e7 --- /dev/null +++ b/src/livecodes/templates/starter/nim-wasm-starter.ts @@ -0,0 +1,86 @@ +import type { Template } from '../../models'; + +export const nimWasmStarter: Template = { + name: 'nim-wasm', + title: window.deps.translateString('templates.starter.nim-wasm', 'Nim (Wasm) Starter'), + thumbnail: 'assets/templates/nim.svg', + activeEditor: 'script', + markup: { + language: 'html', + content: ` +
    +

    Hello, World!

    + +

    You clicked 0 times.

    + +
    + + +`.trimStart(), + }, + style: { + language: 'css', + content: ` +.container, +.container button { + text-align: center; + font: 1em sans-serif; +} +.logo { + width: 150px; +} +`.trimStart(), + }, + script: { + language: 'nim-wasm', + // Compiled to C and then to WebAssembly by the Clang toolchain, which the runner drives in its own worker. + content: ` +import std/strutils + +echo "Nim" +let count = stdin.readLine().parseInt() +echo count + 1 +`.trimStart(), + }, +}; diff --git a/src/livecodes/vendors.ts b/src/livecodes/vendors.ts index 18e1005509..50d2057a63 100644 --- a/src/livecodes/vendors.ts +++ b/src/livecodes/vendors.ts @@ -108,7 +108,7 @@ export const codeiumProviderUrl = /* @__PURE__ */ getUrl( '@live-codes/monaco-codeium-provider@0.2.2/dist/index.js', ); -export const codeMirrorBaseUrl = /* @__PURE__ */ getUrl('@live-codes/codemirror@0.4.3/build/'); +export const codeMirrorBaseUrl = /* @__PURE__ */ getUrl('@live-codes/codemirror@0.4.4/build/'); export const codemirrorMinimapUrl = /* @__PURE__ */ getUrl( '@replit/codemirror-minimap@0.5.2/dist/index.js', @@ -375,6 +375,8 @@ export const monacoVolarUrl = /* @__PURE__ */ getUrl( export const mustacheUrl = /* @__PURE__ */ getUrl('mustache@4.2.0/mustache.js'); +export const nimWasmBaseUrl = /* @__PURE__ */ getUrl('@live-codes/nim-wasm@0.4.0/'); + export const ninjaKeysUrl = /* @__PURE__ */ getUrl('@hatemhosny/ninja-keys@1.14.0/bundle/index.js'); export const nomnomlCdnUrl = /* @__PURE__ */ getUrl('nomnoml@1.6.1/dist/nomnoml.js'); diff --git a/src/sdk/models.ts b/src/sdk/models.ts index e1c41d24e1..139b6fb96c 100644 --- a/src/sdk/models.ts +++ b/src/sdk/models.ts @@ -313,6 +313,14 @@ export type Language = | 'ocaml' | 'ml' | 'mli' + | 'nim' + | 'nims' + | 'nimble' + | 'nim-wasm' + | 'nimwasm' + | 'wasm.nim' + | 'nim-js' + | 'js.nim' | 'tcl' | 'wat' | 'wast' @@ -487,6 +495,8 @@ export type TemplateName = | 'rescript' | 'reason' | 'ocaml' + | 'nim' + | 'nim-wasm' | 'python' | 'python-wasm' | 'r' @@ -915,6 +925,7 @@ export type CustomSettings = Partial< | 'text/cpp-wasm' | 'text/objc-wasm' | 'text/objcpp-wasm' + | 'text/nim-wasm' | 'text/java' | 'text/csharp-wasm' | 'text/razor' diff --git a/storybook/_stories/EmbedOptions/template.ts b/storybook/_stories/EmbedOptions/template.ts index 199c3c74c2..6c61101a0f 100644 --- a/storybook/_stories/EmbedOptions/template.ts +++ b/storybook/_stories/EmbedOptions/template.ts @@ -39,6 +39,8 @@ const storyDef: StoryDef = { ReScript: { props: { template: 'rescript' }, storyName: 'ReScript' }, Reason: { props: { template: 'reason' } }, Ocaml: { props: { template: 'ocaml' } }, + Nim: { props: { template: 'nim' } }, + NimWasm: { props: { template: 'nim-wasm' } }, Python: { props: { template: 'python' } }, PythonWasm: { props: { template: 'python-wasm' } }, R: { props: { template: 'r' } }, diff --git a/vendor-licenses.md b/vendor-licenses.md index 0af0caf3bf..c6d56d4214 100644 --- a/vendor-licenses.md +++ b/vendor-licenses.md @@ -192,6 +192,8 @@ Monaspace font: [OFL-1.1 License](https://github.com/githubnext/monaspace/blob/3 mustache.js: [MIT License](https://github.com/janl/mustache.js/blob/972fd2b27a036888acfcb60d6119317744fac7ee/LICENSE) +Nim: [MIT License](https://github.com/nim-lang/Nim/blob/version-2-2/COPYING) (the Nim compiler, compiled to WebAssembly and packaged by [@live-codes/nim-wasm](https://www.npmjs.com/package/@live-codes/nim-wasm): [MIT License](https://github.com/live-codes/browser-nim/blob/main/LICENSE)) + nomnoml: [MIT License](https://github.com/skanaar/nomnoml/blob/87776185c2c57047e8e0bfc549d1c7093844daee/LICENSE) normalize.css: [MIT License](https://github.com/necolas/normalize.css/blob/fc091cce1534909334c1911709a39c22d406977b/LICENSE.md)