diff --git a/.agents/skills/livecodes/language-support/references/languages.md b/.agents/skills/livecodes/language-support/references/languages.md index aaa73e2bbb..2c216c7781 100644 --- a/.agents/skills/livecodes/language-support/references/languages.md +++ b/.agents/skills/livecodes/language-support/references/languages.md @@ -126,7 +126,8 @@ Enabled via `processors` config: | Objective-C | `objc-wasm`, `objc`, `wasm.m` | Clang WASM | | Objective-C++ | `objcpp-wasm`, `objcpp`, `wasm.mm` | Clang WASM | | COBOL (Wasm) | `cobol-wasm`, `cobol`, `cob`, `cbl`, `cpy`, `gnucobol`, `wasm.cobol` | GnuCOBOL (COBOL -> WASM) | -| Java | `java` | Java runtime | +| Java (Wasm) | `java-wasm`, `java` | TeaVM (Java -> WASM) | +| Java 8 | `java-8`, `java8` | DoppioJVM (Java -> JS) | | C# | `csharp-wasm`, `cs`, `cs-wasm`, `wasm.cs` | C# WASM | | Blazor (Wasm) | `blazor-wasm`, `blazor`, `razor`, `razor-wasm`, `wasm.razor` | Razor components rendered by Blazor (WASM) | | VB.NET | `vb-wasm`, `vb`, `vbnet`, `wasm.vb` | VB.NET WASM | diff --git a/README.md b/README.md index 43da972dd3..d1e9a9b460 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-125-blue)](https://livecodes.io/docs/languages/) +[![LiveCodes: languages](https://img.shields.io/badge/languages-126-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/java-8.mdx b/docs/docs/languages/java-8.mdx new file mode 100644 index 0000000000..b96f4256a6 --- /dev/null +++ b/docs/docs/languages/java-8.mdx @@ -0,0 +1,80 @@ +# Java 8 + +Java is a high-level, general-purpose, memory-safe, object-oriented programming language. + +This is LiveCodes' Java 8 engine: source is compiled and run in the browser by a JDK 8 JVM +interpreter. It runs classic Java, but it cannot compile modern Java source (records, `var`, text +blocks, switch expressions). + +The [`java-wasm`](./java.mdx) engine (also selected by `java`) compiles modern Java to WebAssembly in +the browser and is faster and much smaller. Use `java-8` only when you need Java 8 behavior for +language-level compatibility. + +## Usage + +Demo: + +import LiveCodes from '../../src/components/LiveCodes.tsx'; + +export const java8Config = { + activeEditor: 'script', + script: { + language: 'java-8', + content: `public class Main { + public static void main(String[] args) { + System.out.println("Hello from Java 8"); + } +} +`, + }, + mode: 'simple', + editor: 'auto', + tools: { + status: 'full', + }, +}; + + + +### Communication with JavaScript + +The Java code runs in the context of the [result page](../features/result.mdx). +A few helper properties and methods are available in the browser global `livecodes.java` object: + +- `livecodes.java.input`: the initial standard input that is passed to the Java code. +- `livecodes.java.loaded`: A promise that resolves when the Java environment is loaded. +- `livecodes.java.output`: the standard output. +- `livecodes.java.error`: the standard error. +- `livecodes.java.exitCode`: the exit code. +- `livecodes.java.run`: a function that runs the Java code with new input. + +## Language Info + +### Name + +`java-8` (alias: `java8`) + +### Extension + +`.java` (the language itself is selected by name) + +### Editor + +`script` + +## Compiler + +[DoppioJVM](https://github.com/plasma-umass/doppio) + +### Version + +`DoppioJVM`: v0.5.0, which runs Java 8 JDK. + +## Code Formatting + +Using [@wasm-fmt/clang-format](https://github.com/wasm-fmt/clang-format), applying [Google's Java style guide](https://google.github.io/styleguide/javaguide.html). + +## Links + +- [Java](https://www.java.com/) +- [DoppioJVM](https://github.com/plasma-umass/doppio) diff --git a/docs/docs/languages/java.mdx b/docs/docs/languages/java.mdx index 37679b1bbe..7fb5f685cf 100644 --- a/docs/docs/languages/java.mdx +++ b/docs/docs/languages/java.mdx @@ -2,7 +2,13 @@ Java is a high-level, general-purpose, memory-safe, object-oriented programming language. -In LiveCodes, Java runs in the browser using [DoppioJVM](https://github.com/plasma-umass/doppio). +In LiveCodes, Java source is compiled to WebAssembly **in the browser**: a build of OpenJDK's `javac` +and the [TeaVM](https://teavm.org) AOT compiler run as a single WebAssembly module inside a Web +Worker. Nothing is sent to a server, and modern Java (records, `var`, text blocks, switch +expressions) is supported. + +The language is named `java-wasm`; `java` is an alias for it (it used to select the Java 8 engine, +which is still available as [`java-8`](./java-8.mdx)). ## Usage @@ -13,7 +19,7 @@ import LiveCodes from '../../src/components/LiveCodes.tsx'; export const javaConfig = { activeEditor: 'script', script: { - language: 'java', + language: 'java-wasm', content: `public class BinarySearchSnippet { /** * Search an item with binarySearch algorithm. @@ -58,7 +64,7 @@ export const javaConfig = { editor: 'auto', tools: { status: 'full', -}, + }, }; @@ -83,7 +89,7 @@ Example: ### Name -`java` +`java-wasm` (alias: `java`) ### Extension @@ -95,11 +101,13 @@ Example: ## Compiler -[DoppioJVM](https://github.com/plasma-umass/doppio) +A [fork of teavm-javac](https://github.com/Vsprocessing/teavm-javac) packaging OpenJDK's `javac` and +the TeaVM AOT compiler as WebAssembly, run in a Web Worker by +[`@live-codes/java-wasm`](https://github.com/live-codes/java). ### Version -`DoppioJVM`: v0.5.0, which runs Java 8 JDK. +`teavm-javac` built on TeaVM `0.14.1`, with `javac` from OpenJDK 25. ## Code Formatting @@ -119,4 +127,5 @@ https://livecodes.io/?template=java ## Links - [Java](https://www.java.com/) -- [DoppioJVM](https://github.com/plasma-umass/doppio) +- [TeaVM](https://teavm.org/) +- [teavm-javac](https://github.com/Vsprocessing/teavm-javac) diff --git a/e2e/specs/compilers.spec.ts b/e2e/specs/compilers.spec.ts index 4a106409e3..da0b9adc6b 100644 --- a/e2e/specs/compilers.spec.ts +++ b/e2e/specs/compilers.spec.ts @@ -1650,6 +1650,33 @@ document.getElementById('header').innerHTML = f"Hello, {title}"`); expect(resultText).toContain(`Hello, Python`); }); + test('Java (Wasm)', async ({ page, getTestUrl, editor }) => { + test.skip(editor === 'codejar', 'please fix'); + test.slow(); // the engine downloads ~8 MB and generates WebAssembly + + const code = `public class Main { + public static void main(String[] args) { + System.out.println("Hello from Java"); + } +} +`; + + // Code is passed in the URL (rather than typed) so the first run cannot race the editor. + await page.goto(getTestUrl({ tools: 'console|open', active: 'script', 'java-wasm': code })); + + const { app, waitForResultUpdate } = await getLoadedApp(page); + await waitForResultUpdate(); + + await app.waitForFunction( + () => + [...document.querySelectorAll('#console-container .luna-console-log-item')].some((item) => + (item.textContent ?? '').includes('Hello from Java'), + ), + undefined, + { timeout: 120_000 }, + ); + }); + test('Ruby', async ({ page, getTestUrl, editor }) => { test.skip(editor === 'codejar', 'please fix'); diff --git a/scripts/build.js b/scripts/build.js index 0ed0c7cf3d..b5046cb577 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -227,7 +227,8 @@ const iifeBuild = () => 'languages/astro/lang-astro-compiler.ts', 'languages/clio/lang-clio-compiler.ts', 'languages/commonlisp/lang-commonlisp-script.ts', - 'languages/java/lang-java-script.ts', + 'languages/java-8/lang-java-8-script.ts', + 'languages/java-wasm/lang-java-wasm-script.ts', 'languages/cpp/lang-cpp-script.ts', 'languages/clang-wasm/lang-clang-wasm-script.ts', 'languages/nim/lang-nim-wasm-script.ts', diff --git a/src/livecodes/html/language-info.html b/src/livecodes/html/language-info.html index 6bf34b882e..8de4cf829e 100644 --- a/src/livecodes/html/language-info.html +++ b/src/livecodes/html/language-info.html @@ -1261,17 +1261,19 @@

Janet (Wasm)

-
-

Java

-
- JVM running in the browser using DoppioJVM. +
+

Java (Wasm)

+
+ Java is compiled to WebAssembly in the browser by OpenJDK's javac and the TeaVM AOT compiler. + Modern Java (records, switch expressions, text blocks) is supported, and nothing is sent to a + server.
-
+
+

Java 8

+
+ Java 8, compiled and run in the browser by a JVM interpreter written in JavaScript. +
+
+

JavaScript

diff --git a/src/livecodes/i18n/locales/ar/language-info.lokalise.json b/src/livecodes/i18n/locales/ar/language-info.lokalise.json index 26d2173efc..bf5cc9ade1 100644 --- a/src/livecodes/i18n/locales/ar/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/ar/language-info.lokalise.json @@ -432,14 +432,23 @@ "janetWasm.name": { "translation": "Janet (Wasm)" }, - "java.desc": { - "translation": "JVM يعمل في المتصفح باستخدام DoppioJVM." + "java8.desc": { + "translation": "JVM يعمل في المتصفح باستخدام DoppioJVM (JDK 8، يتم تفسيره بواسطة JavaScript)." }, - "java.link": { - "translation": " موقع جافا الرسمي DoppioJVM تعلم X في دقائق Y، حيث X = جافا وثائق LiveCodes تحميل قالب البدء " + "java8.link": { + "translation": " موقع جافا الرسمي DoppioJVM تعلم X في دقائق Y، حيث X = جافا وثائق LiveCodes " }, - "java.name": { - "translation": "Java" + "java8.name": { + "translation": "Java 8" + }, + "javaWasm.desc": { + "translation": "يتم تجميع Java إلى WebAssembly في المتصفح بواسطة javac من OpenJDK ومترجم AOT من TeaVM. يتم دعم Java الحديثة (records، تعبيرات switch، كتل النصوص)، ولا يتم إرسال أي شيء إلى خادم." + }, + "javaWasm.link": { + "translation": " موقع جافا الرسمي TeaVM تعلم X في دقائق Y، حيث X = جافا وثائق LiveCodes تحميل قالب البدء " + }, + "javaWasm.name": { + "translation": "Java (Wasm)" }, "javascript.desc": { "translation": "لغة البرمجة النصية للويب." diff --git a/src/livecodes/i18n/locales/ar/language-info.ts b/src/livecodes/i18n/locales/ar/language-info.ts index 7ef3043368..361125290a 100644 --- a/src/livecodes/i18n/locales/ar/language-info.ts +++ b/src/livecodes/i18n/locales/ar/language-info.ts @@ -239,10 +239,15 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>الموقع الرسمي لـ Janet <3> <4>وثائق Janet <5> <6>تعلم X في Y دقيقة، حيث X = Janet <7> <8>وثائق LiveCodes <9> <10>تحميل قالب البدء ', name: 'Janet (Wasm)', }, - java: { - desc: 'JVM يعمل في المتصفح باستخدام DoppioJVM.', - link: '<1> <2>موقع جافا الرسمي <3> <4> DoppioJVM <5> <6> تعلم X في دقائق Y، حيث X = جافا <7> <8>وثائق LiveCodes <9> <10> تحميل قالب البدء ', - name: 'Java', + java8: { + desc: 'JVM يعمل في المتصفح باستخدام DoppioJVM (JDK 8، يتم تفسيره بواسطة JavaScript).', + link: '<1> <2>موقع جافا الرسمي <3> <4> DoppioJVM <5> <6> تعلم X في دقائق Y، حيث X = جافا <7> <8>وثائق LiveCodes ', + name: 'Java 8', + }, + javaWasm: { + desc: 'يتم تجميع Java إلى WebAssembly في المتصفح بواسطة javac من OpenJDK ومترجم AOT من TeaVM. يتم دعم Java الحديثة (records، تعبيرات switch، كتل النصوص)، ولا يتم إرسال أي شيء إلى خادم.', + link: '<1> <2>موقع جافا الرسمي <3> <4> TeaVM <5> <6> تعلم X في دقائق Y، حيث X = جافا <7> <8>وثائق LiveCodes <9> <10> تحميل قالب البدء ', + name: 'Java (Wasm)', }, javascript: { desc: 'لغة البرمجة النصية للويب.', diff --git a/src/livecodes/i18n/locales/bn/language-info.lokalise.json b/src/livecodes/i18n/locales/bn/language-info.lokalise.json index 2e2cecc15c..4a4bdfcf15 100644 --- a/src/livecodes/i18n/locales/bn/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/bn/language-info.lokalise.json @@ -432,14 +432,23 @@ "janetWasm.name": { "translation": "Janet (Wasm)" }, - "java.desc": { - "translation": "DoppioJVM ব্যবহার করে ব্রাউজারে চলমান JVM।" + "java8.desc": { + "translation": "DoppioJVM ব্যবহার করে ব্রাউজারে চলমান JVM (JDK 8, JavaScript-এ ব্যাখ্যায়িত)।" }, - "java.link": { - "translation": " Java অফিসিয়াল ওয়েবসাইট DoppioJVM Y মিনিটে X শিখুন, যেখানে X=java LiveCodes ডকুমেন্টেশন স্টার্টার টেমপ্লেট লোড করুন " + "java8.link": { + "translation": " Java অফিসিয়াল ওয়েবসাইট DoppioJVM Y মিনিটে X শিখুন, যেখানে X=java LiveCodes ডকুমেন্টেশন " }, - "java.name": { - "translation": "Java" + "java8.name": { + "translation": "Java 8" + }, + "javaWasm.desc": { + "translation": "Java ব্রাউজারে OpenJDK-এর javac এবং TeaVM AOT কম্পাইলার দ্বারা WebAssembly-তে কম্পাইল করা হয়। আধুনিক Java (রেকর্ড, switch এক্সপ্রেশন, টেক্সট ব্লক) সমর্থিত, এবং সার্ভারে কিছুই পাঠানো হয় না।" + }, + "javaWasm.link": { + "translation": " Java অফিসিয়াল ওয়েবসাইট TeaVM Y মিনিটে X শিখুন, যেখানে X=java LiveCodes ডকুমেন্টেশন স্টার্টার টেমপ্লেট লোড করুন " + }, + "javaWasm.name": { + "translation": "Java (Wasm)" }, "javascript.desc": { "translation": "ওয়েবের স্ক্রিপ্টিং ভাষা।" diff --git a/src/livecodes/i18n/locales/bn/language-info.ts b/src/livecodes/i18n/locales/bn/language-info.ts index eafd2ec097..becbc8a4b5 100644 --- a/src/livecodes/i18n/locales/bn/language-info.ts +++ b/src/livecodes/i18n/locales/bn/language-info.ts @@ -240,10 +240,15 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>Janet অফিসিয়াল ওয়েবসাইট <3> <4>Janet ডকুমেন্টেশন <5> <6>Y মিনিটে X শিখুন, যেখানে X=Janet <7> <8>লাইভকোড ডকুমেন্টেশন <9> <10>স্টার্টার টেমপ্লেট লোড করুন ', name: 'Janet (Wasm)', }, - java: { - desc: 'DoppioJVM ব্যবহার করে ব্রাউজারে চলমান JVM।', - link: '<1> <2>Java অফিসিয়াল ওয়েবসাইট <3> <4>DoppioJVM <5> <6>Y মিনিটে X শিখুন, যেখানে X=java <7> <8>LiveCodes ডকুমেন্টেশন <9> <10>স্টার্টার টেমপ্লেট লোড করুন ', - name: 'Java', + java8: { + desc: 'DoppioJVM ব্যবহার করে ব্রাউজারে চলমান JVM (JDK 8, JavaScript-এ ব্যাখ্যায়িত)।', + link: '<1> <2>Java অফিসিয়াল ওয়েবসাইট <3> <4>DoppioJVM <5> <6>Y মিনিটে X শিখুন, যেখানে X=java <7> <8>LiveCodes ডকুমেন্টেশন ', + name: 'Java 8', + }, + javaWasm: { + desc: 'Java ব্রাউজারে OpenJDK-এর javac এবং TeaVM AOT কম্পাইলার দ্বারা WebAssembly-তে কম্পাইল করা হয়। আধুনিক Java (রেকর্ড, switch এক্সপ্রেশন, টেক্সট ব্লক) সমর্থিত, এবং সার্ভারে কিছুই পাঠানো হয় না।', + link: '<1> <2>Java অফিসিয়াল ওয়েবসাইট <3> <4>TeaVM <5> <6>Y মিনিটে X শিখুন, যেখানে X=java <7> <8>LiveCodes ডকুমেন্টেশন <9> <10>স্টার্টার টেমপ্লেট লোড করুন ', + name: 'Java (Wasm)', }, javascript: { desc: 'ওয়েবের স্ক্রিপ্টিং ভাষা।', diff --git a/src/livecodes/i18n/locales/de/language-info.lokalise.json b/src/livecodes/i18n/locales/de/language-info.lokalise.json index 8552ed6f9f..837d01ecbc 100644 --- a/src/livecodes/i18n/locales/de/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/de/language-info.lokalise.json @@ -432,14 +432,23 @@ "janetWasm.name": { "translation": "Janet (Wasm)" }, - "java.desc": { - "translation": "JVM läuft im Browser mit DoppioJVM." + "java8.desc": { + "translation": "JVM läuft im Browser mit DoppioJVM (JDK 8, in JavaScript interpretiert)." }, - "java.link": { - "translation": " Offizielle Java-Website DoppioJVM Lernen Sie X in Y Minuten, wobei X=java LiveCodes Dokumentation Laden Sie die Startvorlage " + "java8.link": { + "translation": " Offizielle Java-Website DoppioJVM Lernen Sie X in Y Minuten, wobei X=java LiveCodes Dokumentation " }, - "java.name": { - "translation": "Java" + "java8.name": { + "translation": "Java 8" + }, + "javaWasm.desc": { + "translation": "Java wird im Browser durch javac von OpenJDK und den TeaVM-AOT-Compiler zu WebAssembly kompiliert. Modernes Java (Records, switch-Ausdrücke, Textblöcke) wird unterstützt, und nichts wird an einen Server gesendet." + }, + "javaWasm.link": { + "translation": " Offizielle Java-Website TeaVM Lernen Sie X in Y Minuten, wobei X=java LiveCodes Dokumentation Laden Sie die Startvorlage " + }, + "javaWasm.name": { + "translation": "Java (Wasm)" }, "javascript.desc": { "translation": "Die Skriptsprache des Webs." diff --git a/src/livecodes/i18n/locales/de/language-info.ts b/src/livecodes/i18n/locales/de/language-info.ts index 21621428c5..ef00285b3a 100644 --- a/src/livecodes/i18n/locales/de/language-info.ts +++ b/src/livecodes/i18n/locales/de/language-info.ts @@ -242,10 +242,15 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>Offizielle Janet-Website <3> <4>Janet-Dokumentation <5> <6>Lerne X in Y Minuten, wobei X = Janet <7> <8>LiveCodes-Dokumentation <9> <10>Startervorlage laden ', name: 'Janet (Wasm)', }, - java: { - desc: 'JVM läuft im Browser mit DoppioJVM.', - link: '<1> <2>Offizielle Java-Website <3> <4> DoppioJVM <5> <6> Lernen Sie X in Y Minuten, wobei X=java <7> <8>LiveCodes Dokumentation <9> <10> Laden Sie die Startvorlage ', - name: 'Java', + java8: { + desc: 'JVM läuft im Browser mit DoppioJVM (JDK 8, in JavaScript interpretiert).', + link: '<1> <2>Offizielle Java-Website <3> <4> DoppioJVM <5> <6> Lernen Sie X in Y Minuten, wobei X=java <7> <8>LiveCodes Dokumentation ', + name: 'Java 8', + }, + javaWasm: { + desc: 'Java wird im Browser durch javac von OpenJDK und den TeaVM-AOT-Compiler zu WebAssembly kompiliert. Modernes Java (Records, switch-Ausdrücke, Textblöcke) wird unterstützt, und nichts wird an einen Server gesendet.', + link: '<1> <2>Offizielle Java-Website <3> <4> TeaVM <5> <6> Lernen Sie X in Y Minuten, wobei X=java <7> <8>LiveCodes Dokumentation <9> <10> Laden Sie die Startvorlage ', + name: 'Java (Wasm)', }, javascript: { desc: 'Die Skriptsprache des Webs.', diff --git a/src/livecodes/i18n/locales/en/language-info.lokalise.json b/src/livecodes/i18n/locales/en/language-info.lokalise.json index 90ca83dc2c..3129177106 100644 --- a/src/livecodes/i18n/locales/en/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/en/language-info.lokalise.json @@ -576,17 +576,29 @@ "notes": "", "translation": "Janet (Wasm)" }, - "java.desc": { + "java8.desc": { "notes": "", - "translation": "JVM running in the browser using DoppioJVM." + "translation": "Java 8, compiled and run in the browser by a JVM interpreter written in JavaScript." }, - "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", - "translation": " Java official website DoppioJVM Learn X in Y minutes, where X=java LiveCodes Documentation Load starter template " + "java8.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", + "translation": " Java official website DoppioJVM Learn X in Y minutes, where X=java LiveCodes Documentation " }, - "java.name": { + "java8.name": { "notes": "", - "translation": "Java" + "translation": "Java 8" + }, + "javaWasm.desc": { + "notes": "", + "translation": "Java is compiled to WebAssembly in the browser by OpenJDK's javac and the TeaVM AOT compiler. Modern Java (records, switch expressions, text blocks) is supported, and nothing is sent to a server." + }, + "javaWasm.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", + "translation": " Java official website TeaVM Learn X in Y minutes, where X=java LiveCodes Documentation Load starter template " + }, + "javaWasm.name": { + "notes": "", + "translation": "Java (Wasm)" }, "javascript.desc": { "notes": "", diff --git a/src/livecodes/i18n/locales/en/language-info.ts b/src/livecodes/i18n/locales/en/language-info.ts index 97da69a43b..dd3fbb84ae 100644 --- a/src/livecodes/i18n/locales/en/language-info.ts +++ b/src/livecodes/i18n/locales/en/language-info.ts @@ -253,10 +253,15 @@ const languageInfo = { link: '<1> <2>Janet official website <3> <4>Janet documentation <5> <6>Learn X in Y minutes, where X=Janet <7> <8>LiveCodes Documentation <9> <10>Load starter template ', name: 'Janet (Wasm)', }, - java: { - desc: 'JVM running in the browser using DoppioJVM.', - link: '<1> <2>Java official website <3> <4>DoppioJVM <5> <6>Learn X in Y minutes, where X=java <7> <8>LiveCodes Documentation <9> <10>Load starter template ', - name: 'Java', + java8: { + desc: 'Java 8, compiled and run in the browser by a JVM interpreter written in JavaScript.', + link: '<1> <2>Java official website <3> <4>DoppioJVM <5> <6>Learn X in Y minutes, where X=java <7> <8>LiveCodes Documentation ', + name: 'Java 8', + }, + javaWasm: { + desc: "Java is compiled to WebAssembly in the browser by OpenJDK's javac and the TeaVM AOT compiler. Modern Java (records, switch expressions, text blocks) is supported, and nothing is sent to a server.", + link: '<1> <2>Java official website <3> <4>TeaVM <5> <6>Learn X in Y minutes, where X=java <7> <8>LiveCodes Documentation <9> <10>Load starter template ', + name: 'Java (Wasm)', }, javascript: { desc: 'The scripting language of the web.', diff --git a/src/livecodes/i18n/locales/es/language-info.lokalise.json b/src/livecodes/i18n/locales/es/language-info.lokalise.json index ad6b6a9fba..02b798b434 100644 --- a/src/livecodes/i18n/locales/es/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/es/language-info.lokalise.json @@ -432,14 +432,23 @@ "janetWasm.name": { "translation": "Janet (Wasm)" }, - "java.desc": { - "translation": "JVM ejecutándose en el navegador utilizando DoppioJVM." + "java8.desc": { + "translation": "JVM ejecutándose en el navegador utilizando DoppioJVM (JDK 8, interpretado en JavaScript)." }, - "java.link": { - "translation": " Sitio web oficial de Java DoppioJVM Aprenda X en Y minutos, donde X=java Documentación de LiveCodes Cargue la plantilla de inicio " + "java8.link": { + "translation": " Sitio web oficial de Java DoppioJVM Aprenda X en Y minutos, donde X=java Documentación de LiveCodes " }, - "java.name": { - "translation": "Java" + "java8.name": { + "translation": "Java 8" + }, + "javaWasm.desc": { + "translation": "Java se compila a WebAssembly en el navegador mediante javac de OpenJDK y el compilador AOT de TeaVM. Se admite Java moderno (records, expresiones switch, bloques de texto), y no se envía nada a un servidor." + }, + "javaWasm.link": { + "translation": " Sitio web oficial de Java TeaVM Aprenda X en Y minutos, donde X=java Documentación de LiveCodes Cargue la plantilla de inicio " + }, + "javaWasm.name": { + "translation": "Java (Wasm)" }, "javascript.desc": { "translation": "El lenguaje de programación de la web." diff --git a/src/livecodes/i18n/locales/es/language-info.ts b/src/livecodes/i18n/locales/es/language-info.ts index 8cb9d35bf8..ce206e1c66 100644 --- a/src/livecodes/i18n/locales/es/language-info.ts +++ b/src/livecodes/i18n/locales/es/language-info.ts @@ -242,10 +242,15 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>Página web oficial de Janet <3> <4>Documentación de Janet <5> <6>Aprende X en Y minutos, donde X = Janet <7> <8>Documentación de LiveCodes <9> <10>Cargar plantilla de inicio ', name: 'Janet (Wasm)', }, - java: { - desc: 'JVM ejecutándose en el navegador utilizando DoppioJVM.', - link: '<1> <2>Sitio web oficial de Java <3> <4> DoppioJVM <5> <6> Aprenda X en Y minutos, donde X=java <7> <8>Documentación de LiveCodes <9> <10> Cargue la plantilla de inicio ', - name: 'Java', + java8: { + desc: 'JVM ejecutándose en el navegador utilizando DoppioJVM (JDK 8, interpretado en JavaScript).', + link: '<1> <2>Sitio web oficial de Java <3> <4> DoppioJVM <5> <6> Aprenda X en Y minutos, donde X=java <7> <8>Documentación de LiveCodes ', + name: 'Java 8', + }, + javaWasm: { + desc: 'Java se compila a WebAssembly en el navegador mediante javac de OpenJDK y el compilador AOT de TeaVM. Se admite Java moderno (records, expresiones switch, bloques de texto), y no se envía nada a un servidor.', + link: '<1> <2>Sitio web oficial de Java <3> <4> TeaVM <5> <6> Aprenda X en Y minutos, donde X=java <7> <8>Documentación de LiveCodes <9> <10> Cargue la plantilla de inicio ', + name: 'Java (Wasm)', }, javascript: { desc: 'El lenguaje de programación de la web.', diff --git a/src/livecodes/i18n/locales/fa/language-info.lokalise.json b/src/livecodes/i18n/locales/fa/language-info.lokalise.json index 698420cb6e..5220dcaf9a 100644 --- a/src/livecodes/i18n/locales/fa/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/fa/language-info.lokalise.json @@ -432,14 +432,23 @@ "janetWasm.name": { "translation": "Janet (Wasm)" }, - "java.desc": { - "translation": "اجرای JVM در مرورگر با استفاده از DoppioJVM." + "java8.desc": { + "translation": "اجرای JVM در مرورگر با استفاده از DoppioJVM (JDK 8، تفسیر شده در JavaScript)." }, - "java.link": { - "translation": " وب‌سایت رسمی جاوا DoppioJVM یادگیری X در Y دقیقه، جایی که X=java مستندات LiveCodes بارگذاری قالب شروع کننده " + "java8.link": { + "translation": " وب‌سایت رسمی جاوا DoppioJVM یادگیری X در Y دقیقه، جایی که X=java مستندات LiveCodes " }, - "java.name": { - "translation": "Java" + "java8.name": { + "translation": "Java 8" + }, + "javaWasm.desc": { + "translation": "Java در مرورگر توسط javac شرکت OpenJDK و کامپایلر AOT شرکت TeaVM به WebAssembly کامپایل می‌شود. جاوای مدرن (records، عبارت‌های switch، بلوک‌های متنی) پشتیبانی می‌شود و هیچ چیزی به سرور ارسال نمی‌شود." + }, + "javaWasm.link": { + "translation": " وب‌سایت رسمی جاوا TeaVM یادگیری X در Y دقیقه، جایی که X=java مستندات LiveCodes بارگذاری قالب شروع کننده " + }, + "javaWasm.name": { + "translation": "Java (Wasm)" }, "javascript.desc": { "translation": "زبان اسکریپت نویسی وب." diff --git a/src/livecodes/i18n/locales/fa/language-info.ts b/src/livecodes/i18n/locales/fa/language-info.ts index 96cc510d01..bde80959de 100644 --- a/src/livecodes/i18n/locales/fa/language-info.ts +++ b/src/livecodes/i18n/locales/fa/language-info.ts @@ -241,10 +241,15 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>وب‌سایت رسمی Janet <3> <4>اسناد Janet <5> <6>یادگیری X در Y دقیقه، که X=Janet <7> <8>مستندات LiveCodes <9> <10>بارگیری قالب شروع ', name: 'Janet (Wasm)', }, - java: { - desc: 'اجرای JVM در مرورگر با استفاده از DoppioJVM.', - link: '<1> <2>وب‌سایت رسمی جاوا <3> <4>DoppioJVM <5> <6>یادگیری X در Y دقیقه، جایی که X=java <7> <8>مستندات LiveCodes <9> <10>بارگذاری قالب شروع کننده ', - name: 'Java', + java8: { + desc: 'اجرای JVM در مرورگر با استفاده از DoppioJVM (JDK 8، تفسیر شده در JavaScript).', + link: '<1> <2>وب‌سایت رسمی جاوا <3> <4>DoppioJVM <5> <6>یادگیری X در Y دقیقه، جایی که X=java <7> <8>مستندات LiveCodes ', + name: 'Java 8', + }, + javaWasm: { + desc: 'Java در مرورگر توسط javac شرکت OpenJDK و کامپایلر AOT شرکت TeaVM به WebAssembly کامپایل می‌شود. جاوای مدرن (records، عبارت‌های switch، بلوک‌های متنی) پشتیبانی می‌شود و هیچ چیزی به سرور ارسال نمی‌شود.', + link: '<1> <2>وب‌سایت رسمی جاوا <3> <4>TeaVM <5> <6>یادگیری X در Y دقیقه، جایی که X=java <7> <8>مستندات LiveCodes <9> <10>بارگذاری قالب شروع کننده ', + name: 'Java (Wasm)', }, javascript: { desc: 'زبان اسکریپت نویسی وب.', diff --git a/src/livecodes/i18n/locales/fr/language-info.lokalise.json b/src/livecodes/i18n/locales/fr/language-info.lokalise.json index c3407ec735..43864694aa 100644 --- a/src/livecodes/i18n/locales/fr/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/fr/language-info.lokalise.json @@ -432,14 +432,23 @@ "janetWasm.name": { "translation": "Janet (Wasm)" }, - "java.desc": { - "translation": "JVM fonctionnant dans le navigateur à l'aide de DoppioJVM." + "java8.desc": { + "translation": "JVM fonctionnant dans le navigateur à l'aide de DoppioJVM (JDK 8, interprété en JavaScript)." }, - "java.link": { - "translation": " Site officiel de Java DoppioJVM Apprendre X en Y minutes, où X=java Documentation LiveCodes Charger le modèle de démarrage " + "java8.link": { + "translation": " Site officiel de Java DoppioJVM Apprendre X en Y minutes, où X=java Documentation LiveCodes " }, - "java.name": { - "translation": "Java" + "java8.name": { + "translation": "Java 8" + }, + "javaWasm.desc": { + "translation": "Java est compilé en WebAssembly dans le navigateur par javac d'OpenJDK et le compilateur AOT de TeaVM. Le Java moderne (records, expressions switch, blocs de texte) est pris en charge, et rien n'est envoyé à un serveur." + }, + "javaWasm.link": { + "translation": " Site officiel de Java TeaVM Apprendre X en Y minutes, où X=java Documentation LiveCodes Charger le modèle de démarrage " + }, + "javaWasm.name": { + "translation": "Java (Wasm)" }, "javascript.desc": { "translation": "Le langage de script du web." diff --git a/src/livecodes/i18n/locales/fr/language-info.ts b/src/livecodes/i18n/locales/fr/language-info.ts index 0188e651ef..cb2604aaaf 100644 --- a/src/livecodes/i18n/locales/fr/language-info.ts +++ b/src/livecodes/i18n/locales/fr/language-info.ts @@ -242,10 +242,15 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>Site officiel de Janet <3> <4>Documentation Janet <5> <6>Apprenez X en Y minutes, où X = Janet <7> <8>Documentation LiveCodes <9> <10>Charger un modèle de démarrage ', name: 'Janet (Wasm)', }, - java: { - desc: "JVM fonctionnant dans le navigateur à l'aide de DoppioJVM.", - link: '<1> <2>Site officiel de Java <3> <4> DoppioJVM <5> <6> Apprendre X en Y minutes, où X=java <7> <8>Documentation LiveCodes <9> <10> Charger le modèle de démarrage ', - name: 'Java', + java8: { + desc: "JVM fonctionnant dans le navigateur à l'aide de DoppioJVM (JDK 8, interprété en JavaScript).", + link: '<1> <2>Site officiel de Java <3> <4> DoppioJVM <5> <6> Apprendre X en Y minutes, où X=java <7> <8>Documentation LiveCodes ', + name: 'Java 8', + }, + javaWasm: { + desc: "Java est compilé en WebAssembly dans le navigateur par javac d'OpenJDK et le compilateur AOT de TeaVM. Le Java moderne (records, expressions switch, blocs de texte) est pris en charge, et rien n'est envoyé à un serveur.", + link: '<1> <2>Site officiel de Java <3> <4> TeaVM <5> <6> Apprendre X en Y minutes, où X=java <7> <8>Documentation LiveCodes <9> <10> Charger le modèle de démarrage ', + name: 'Java (Wasm)', }, javascript: { desc: 'Le langage de script du web.', diff --git a/src/livecodes/i18n/locales/hi/language-info.lokalise.json b/src/livecodes/i18n/locales/hi/language-info.lokalise.json index df92603af0..ef4460469f 100644 --- a/src/livecodes/i18n/locales/hi/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/hi/language-info.lokalise.json @@ -432,14 +432,23 @@ "janetWasm.name": { "translation": "Janet (Wasm)" }, - "java.desc": { - "translation": "DoppioJVM का उपयोग करके ब्राउज़र में JVM चल रहा है।" + "java8.desc": { + "translation": "DoppioJVM का उपयोग करके ब्राउज़र में JVM चल रहा है (JDK 8, JavaScript में इंटरप्रेट किया गया)।" }, - "java.link": { - "translation": " जावा आधिकारिक वेबसाइट DoppioJVM वाई मिनटों में एक्स सीखें, जहां एक्स=जावा LiveCodes दस्तावेज़ीकरण स्टार्टर टेम्पलेट लोड करें " + "java8.link": { + "translation": " जावा आधिकारिक वेबसाइट DoppioJVM वाई मिनटों में एक्स सीखें, जहां एक्स=जावा LiveCodes दस्तावेज़ीकरण " }, - "java.name": { - "translation": "Java" + "java8.name": { + "translation": "Java 8" + }, + "javaWasm.desc": { + "translation": "Java को ब्राउज़र में OpenJDK के javac और TeaVM AOT कंपाइलर द्वारा WebAssembly में कंपाइल किया जाता है। आधुनिक Java (रिकॉर्ड, switch एक्सप्रेशन, टेक्स्ट ब्लॉक) समर्थित है, और सर्वर पर कुछ भी नहीं भेजा जाता है।" + }, + "javaWasm.link": { + "translation": " जावा आधिकारिक वेबसाइट TeaVM वाई मिनटों में एक्स सीखें, जहां एक्स=जावा LiveCodes दस्तावेज़ीकरण स्टार्टर टेम्पलेट लोड करें " + }, + "javaWasm.name": { + "translation": "Java (Wasm)" }, "javascript.desc": { "translation": "वेब की स्क्रिप्टिंग भाषा।" diff --git a/src/livecodes/i18n/locales/hi/language-info.ts b/src/livecodes/i18n/locales/hi/language-info.ts index ea4a44ebd5..c6890ac9e6 100644 --- a/src/livecodes/i18n/locales/hi/language-info.ts +++ b/src/livecodes/i18n/locales/hi/language-info.ts @@ -241,10 +241,15 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>Janet आधिकारिक वेबसाइट <3> <4>Janet दस्तावेज <5> <6>Y मिनट में X सीखें, जहाँ X=Janet <7> <8>लाइवकोड दस्तावेजीकरण <9> <10>स्टार्टर टेम्पलेट लोड करें ', name: 'Janet (Wasm)', }, - java: { - desc: 'DoppioJVM का उपयोग करके ब्राउज़र में JVM चल रहा है।', - link: '<1> <2>जावा आधिकारिक वेबसाइट <3> <4>DoppioJVM <5> <6>वाई मिनटों में एक्स सीखें, जहां एक्स=जावा <7> <8>LiveCodes दस्तावेज़ीकरण <9> <10>स्टार्टर टेम्पलेट लोड करें ', - name: 'Java', + java8: { + desc: 'DoppioJVM का उपयोग करके ब्राउज़र में JVM चल रहा है (JDK 8, JavaScript में इंटरप्रेट किया गया)।', + link: '<1> <2>जावा आधिकारिक वेबसाइट <3> <4>DoppioJVM <5> <6>वाई मिनटों में एक्स सीखें, जहां एक्स=जावा <7> <8>LiveCodes दस्तावेज़ीकरण ', + name: 'Java 8', + }, + javaWasm: { + desc: 'Java को ब्राउज़र में OpenJDK के javac और TeaVM AOT कंपाइलर द्वारा WebAssembly में कंपाइल किया जाता है। आधुनिक Java (रिकॉर्ड, switch एक्सप्रेशन, टेक्स्ट ब्लॉक) समर्थित है, और सर्वर पर कुछ भी नहीं भेजा जाता है।', + link: '<1> <2>जावा आधिकारिक वेबसाइट <3> <4>TeaVM <5> <6>वाई मिनटों में एक्स सीखें, जहां एक्स=जावा <7> <8>LiveCodes दस्तावेज़ीकरण <9> <10>स्टार्टर टेम्पलेट लोड करें ', + name: 'Java (Wasm)', }, javascript: { desc: 'वेब की स्क्रिप्टिंग भाषा।', diff --git a/src/livecodes/i18n/locales/hu/language-info.lokalise.json b/src/livecodes/i18n/locales/hu/language-info.lokalise.json index 638fb71dff..a31cf830b4 100644 --- a/src/livecodes/i18n/locales/hu/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/hu/language-info.lokalise.json @@ -432,14 +432,23 @@ "janetWasm.name": { "translation": "Janet (Wasm)" }, - "java.desc": { - "translation": "JVM fut a böngészőben a DoppioJVM használatával." + "java8.desc": { + "translation": "JVM fut a böngészőben a DoppioJVM használatával (JDK 8, JavaScriptben értelmezve)." }, - "java.link": { - "translation": " Java hivatalos weboldal DoppioJVM Tanulj X-et Y perc alatt, ahol X=java LiveCodes dokumentáció Kezdő sablon betöltése " + "java8.link": { + "translation": " Java hivatalos weboldal DoppioJVM Tanulj X-et Y perc alatt, ahol X=java LiveCodes dokumentáció " }, - "java.name": { - "translation": "Java" + "java8.name": { + "translation": "Java 8" + }, + "javaWasm.desc": { + "translation": "A Java a böngészőben az OpenJDK javac és a TeaVM AOT fordító segítségével WebAssembly-re fordul. A modern Java (recordok, switch kifejezések, szövegblokkok) támogatott, és semmi sem kerül elküldésre szerverre." + }, + "javaWasm.link": { + "translation": " Java hivatalos weboldal TeaVM Tanulj X-et Y perc alatt, ahol X=java LiveCodes dokumentáció Kezdő sablon betöltése " + }, + "javaWasm.name": { + "translation": "Java (Wasm)" }, "javascript.desc": { "translation": "A web szkriptnyelve." diff --git a/src/livecodes/i18n/locales/hu/language-info.ts b/src/livecodes/i18n/locales/hu/language-info.ts index 2cae071469..8b36a1e519 100644 --- a/src/livecodes/i18n/locales/hu/language-info.ts +++ b/src/livecodes/i18n/locales/hu/language-info.ts @@ -242,10 +242,15 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>Az Janet hivatalos weboldala <3> <4>Janet dokumentáció <5> <6>Tanulj meg X-et Y perc alatt, ahol X=Janet <7> <8>LiveCodes dokumentáció <9> <10>Kezdő sablon betöltése ', name: 'Janet (Wasm)', }, - java: { - desc: 'JVM fut a böngészőben a DoppioJVM használatával.', - link: '<1> <2>Java hivatalos weboldal <3> <4>DoppioJVM <5> <6>Tanulj X-et Y perc alatt, ahol X=java <7> <8>LiveCodes dokumentáció <9> <10>Kezdő sablon betöltése ', - name: 'Java', + java8: { + desc: 'JVM fut a böngészőben a DoppioJVM használatával (JDK 8, JavaScriptben értelmezve).', + link: '<1> <2>Java hivatalos weboldal <3> <4>DoppioJVM <5> <6>Tanulj X-et Y perc alatt, ahol X=java <7> <8>LiveCodes dokumentáció ', + name: 'Java 8', + }, + javaWasm: { + desc: 'A Java a böngészőben az OpenJDK javac és a TeaVM AOT fordító segítségével WebAssembly-re fordul. A modern Java (recordok, switch kifejezések, szövegblokkok) támogatott, és semmi sem kerül elküldésre szerverre.', + link: '<1> <2>Java hivatalos weboldal <3> <4>TeaVM <5> <6>Tanulj X-et Y perc alatt, ahol X=java <7> <8>LiveCodes dokumentáció <9> <10>Kezdő sablon betöltése ', + name: 'Java (Wasm)', }, javascript: { desc: 'A web szkriptnyelve.', diff --git a/src/livecodes/i18n/locales/id/language-info.lokalise.json b/src/livecodes/i18n/locales/id/language-info.lokalise.json index d4e26d0411..05159a478a 100644 --- a/src/livecodes/i18n/locales/id/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/id/language-info.lokalise.json @@ -432,14 +432,23 @@ "janetWasm.name": { "translation": "Janet (Wasm)" }, - "java.desc": { - "translation": "JVM berjalan di browser menggunakan DoppioJVM." + "java8.desc": { + "translation": "JVM berjalan di browser menggunakan DoppioJVM (JDK 8, diinterpretasikan dalam JavaScript)." }, - "java.link": { - "translation": " Situs web resmi Java DoppioJVM Pelajari X dalam Y menit, dengan X=java Dokumentasi LiveCodes Muat template pemula " + "java8.link": { + "translation": " Situs web resmi Java DoppioJVM Pelajari X dalam Y menit, dengan X=java Dokumentasi LiveCodes " }, - "java.name": { - "translation": "Java" + "java8.name": { + "translation": "Java 8" + }, + "javaWasm.desc": { + "translation": "Java dikompilasi ke WebAssembly di browser oleh javac milik OpenJDK dan kompilator AOT TeaVM. Java modern (record, ekspresi switch, blok teks) didukung, dan tidak ada yang dikirim ke server." + }, + "javaWasm.link": { + "translation": " Situs web resmi Java TeaVM Pelajari X dalam Y menit, dengan X=java Dokumentasi LiveCodes Muat template pemula " + }, + "javaWasm.name": { + "translation": "Java (Wasm)" }, "javascript.desc": { "translation": "Bahasa skrip web." diff --git a/src/livecodes/i18n/locales/id/language-info.ts b/src/livecodes/i18n/locales/id/language-info.ts index 71e6c6a451..efda991d87 100644 --- a/src/livecodes/i18n/locales/id/language-info.ts +++ b/src/livecodes/i18n/locales/id/language-info.ts @@ -242,10 +242,15 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>Situs web resmi Janet <3> <4>Dokumentasi Janet <5> <6>Belajar X dalam Y menit, di mana X = Janet <7> <8>Dokumentasi LiveCodes <9> <10>Muat templat awal ', name: 'Janet (Wasm)', }, - java: { - desc: 'JVM berjalan di browser menggunakan DoppioJVM.', - link: '<1> <2>Situs web resmi Java <3> <4>DoppioJVM <5> <6>Pelajari X dalam Y menit, dengan X=java <7> <8>Dokumentasi LiveCodes <9> <10>Muat template pemula ', - name: 'Java', + java8: { + desc: 'JVM berjalan di browser menggunakan DoppioJVM (JDK 8, diinterpretasikan dalam JavaScript).', + link: '<1> <2>Situs web resmi Java <3> <4>DoppioJVM <5> <6>Pelajari X dalam Y menit, dengan X=java <7> <8>Dokumentasi LiveCodes ', + name: 'Java 8', + }, + javaWasm: { + desc: 'Java dikompilasi ke WebAssembly di browser oleh javac milik OpenJDK dan kompilator AOT TeaVM. Java modern (record, ekspresi switch, blok teks) didukung, dan tidak ada yang dikirim ke server.', + link: '<1> <2>Situs web resmi Java <3> <4>TeaVM <5> <6>Pelajari X dalam Y menit, dengan X=java <7> <8>Dokumentasi LiveCodes <9> <10>Muat template pemula ', + name: 'Java (Wasm)', }, javascript: { desc: 'Bahasa skrip web.', diff --git a/src/livecodes/i18n/locales/it/language-info.lokalise.json b/src/livecodes/i18n/locales/it/language-info.lokalise.json index b3261bb671..a23b29c1c1 100644 --- a/src/livecodes/i18n/locales/it/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/it/language-info.lokalise.json @@ -432,14 +432,23 @@ "janetWasm.name": { "translation": "Janet (Wasm)" }, - "java.desc": { - "translation": "JVM in esecuzione nel browser utilizzando DoppioJVM." + "java8.desc": { + "translation": "JVM in esecuzione nel browser utilizzando DoppioJVM (JDK 8, interpretato in JavaScript)." }, - "java.link": { - "translation": " Sito ufficiale di Java DoppioJVM Imparare X in Y minuti, dove X=java Documentazione LiveCodes Caricare il modello iniziale " + "java8.link": { + "translation": " Sito ufficiale di Java DoppioJVM Imparare X in Y minuti, dove X=java Documentazione LiveCodes " }, - "java.name": { - "translation": "Java" + "java8.name": { + "translation": "Java 8" + }, + "javaWasm.desc": { + "translation": "Java viene compilato in WebAssembly nel browser da javac di OpenJDK e dal compilatore AOT di TeaVM. È supportato il Java moderno (record, espressioni switch, blocchi di testo), e nulla viene inviato a un server." + }, + "javaWasm.link": { + "translation": " Sito ufficiale di Java TeaVM Imparare X in Y minuti, dove X=java Documentazione LiveCodes Caricare il modello iniziale " + }, + "javaWasm.name": { + "translation": "Java (Wasm)" }, "javascript.desc": { "translation": "Il linguaggio di scripting del web." diff --git a/src/livecodes/i18n/locales/it/language-info.ts b/src/livecodes/i18n/locales/it/language-info.ts index e7b6cfe1c6..4a06f731dc 100644 --- a/src/livecodes/i18n/locales/it/language-info.ts +++ b/src/livecodes/i18n/locales/it/language-info.ts @@ -241,10 +241,15 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>Sito web ufficiale di Janet <3> <4>Documentazione di Janet <5> <6>Impara X in Y minuti, dove X = Janet <7> <8>Documentazione di LiveCodes <9> <10>Carica il modello di avvio ', name: 'Janet (Wasm)', }, - java: { - desc: 'JVM in esecuzione nel browser utilizzando DoppioJVM.', - link: '<1> <2>Sito ufficiale di Java <3> <4> DoppioJVM <5> <6> Imparare X in Y minuti, dove X=java <7> <8>Documentazione LiveCodes <9> <10> Caricare il modello iniziale ', - name: 'Java', + java8: { + desc: 'JVM in esecuzione nel browser utilizzando DoppioJVM (JDK 8, interpretato in JavaScript).', + link: '<1> <2>Sito ufficiale di Java <3> <4> DoppioJVM <5> <6> Imparare X in Y minuti, dove X=java <7> <8>Documentazione LiveCodes ', + name: 'Java 8', + }, + javaWasm: { + desc: 'Java viene compilato in WebAssembly nel browser da javac di OpenJDK e dal compilatore AOT di TeaVM. È supportato il Java moderno (record, espressioni switch, blocchi di testo), e nulla viene inviato a un server.', + link: '<1> <2>Sito ufficiale di Java <3> <4> TeaVM <5> <6> Imparare X in Y minuti, dove X=java <7> <8>Documentazione LiveCodes <9> <10> Caricare il modello iniziale ', + name: 'Java (Wasm)', }, javascript: { desc: 'Il linguaggio di scripting del web.', diff --git a/src/livecodes/i18n/locales/ja/language-info.lokalise.json b/src/livecodes/i18n/locales/ja/language-info.lokalise.json index d019b7d5a6..b268b17ae3 100644 --- a/src/livecodes/i18n/locales/ja/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/ja/language-info.lokalise.json @@ -432,14 +432,23 @@ "janetWasm.name": { "translation": "Janet (Wasm)" }, - "java.desc": { - "translation": "DoppioJVMを使ってブラウザで動作するJVM。" + "java8.desc": { + "translation": "DoppioJVMを使ってブラウザで動作するJVM(JDK 8、JavaScriptで解釈実行)。" }, - "java.link": { - "translation": " Java公式サイト DoppioJVM XをY分で学ぶ、X=Java LiveCodes ドキュメント スターターテンプレートのロード " + "java8.link": { + "translation": " Java公式サイト DoppioJVM XをY分で学ぶ、X=Java LiveCodes ドキュメント " }, - "java.name": { - "translation": "Java" + "java8.name": { + "translation": "Java 8" + }, + "javaWasm.desc": { + "translation": "Javaは、OpenJDKのjavacとTeaVM AOTコンパイラによってブラウザ内でWebAssemblyにコンパイルされます。モダンなJava(レコード、switch式、テキストブロック)がサポートされ、サーバーには何も送信されません。" + }, + "javaWasm.link": { + "translation": " Java公式サイト TeaVM XをY分で学ぶ、X=Java LiveCodes ドキュメント スターターテンプレートのロード " + }, + "javaWasm.name": { + "translation": "Java (Wasm)" }, "javascript.desc": { "translation": "ウェブのスクリプト言語。" diff --git a/src/livecodes/i18n/locales/ja/language-info.ts b/src/livecodes/i18n/locales/ja/language-info.ts index 6898af047f..a5c5e6776e 100644 --- a/src/livecodes/i18n/locales/ja/language-info.ts +++ b/src/livecodes/i18n/locales/ja/language-info.ts @@ -241,10 +241,15 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>Janet 公式サイト <3> <4>Janet ドキュメント <5> <6>「Y分でXを学ぶ」(X=Janet) <7> <8>LiveCodes ドキュメント <9> <10>スターターテンプレートの読み込み ', name: 'Janet (Wasm)', }, - java: { - desc: 'DoppioJVMを使ってブラウザで動作するJVM。', - link: '<1> <2>Java公式サイト <3> <4>DoppioJVM <5> <6>XをY分で学ぶ、X=Java <7> <8>LiveCodes ドキュメント <9> <10>スターターテンプレートのロード ', - name: 'Java', + java8: { + desc: 'DoppioJVMを使ってブラウザで動作するJVM(JDK 8、JavaScriptで解釈実行)。', + link: '<1> <2>Java公式サイト <3> <4>DoppioJVM <5> <6>XをY分で学ぶ、X=Java <7> <8>LiveCodes ドキュメント ', + name: 'Java 8', + }, + javaWasm: { + desc: 'Javaは、OpenJDKのjavacとTeaVM AOTコンパイラによってブラウザ内でWebAssemblyにコンパイルされます。モダンなJava(レコード、switch式、テキストブロック)がサポートされ、サーバーには何も送信されません。', + link: '<1> <2>Java公式サイト <3> <4>TeaVM <5> <6>XをY分で学ぶ、X=Java <7> <8>LiveCodes ドキュメント <9> <10>スターターテンプレートのロード ', + name: 'Java (Wasm)', }, javascript: { desc: 'ウェブのスクリプト言語。', diff --git a/src/livecodes/i18n/locales/nl/language-info.lokalise.json b/src/livecodes/i18n/locales/nl/language-info.lokalise.json index 7b52c073af..03742756e3 100644 --- a/src/livecodes/i18n/locales/nl/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/nl/language-info.lokalise.json @@ -432,14 +432,23 @@ "janetWasm.name": { "translation": "Janet (Wasm)" }, - "java.desc": { - "translation": "JVM draaiend in de browser met DoppioJVM." + "java8.desc": { + "translation": "JVM draaiend in de browser met DoppioJVM (JDK 8, geïnterpreteerd in JavaScript)." }, - "java.link": { - "translation": " Java officiële website DoppioJVM Leer X in Y minuten, waarbij X=java LiveCodes Documentatie Startsjabloon laden " + "java8.link": { + "translation": " Java officiële website DoppioJVM Leer X in Y minuten, waarbij X=java LiveCodes Documentatie " }, - "java.name": { - "translation": "Java" + "java8.name": { + "translation": "Java 8" + }, + "javaWasm.desc": { + "translation": "Java wordt in de browser naar WebAssembly gecompileerd door javac van OpenJDK en de AOT-compiler van TeaVM. Moderne Java (records, switch-expressies, tekstblokken) wordt ondersteund, en er wordt niets naar een server verzonden." + }, + "javaWasm.link": { + "translation": " Java officiële website TeaVM Leer X in Y minuten, waarbij X=java LiveCodes Documentatie Startsjabloon laden " + }, + "javaWasm.name": { + "translation": "Java (Wasm)" }, "javascript.desc": { "translation": "De scripttaal van het web." diff --git a/src/livecodes/i18n/locales/nl/language-info.ts b/src/livecodes/i18n/locales/nl/language-info.ts index e698268945..b160782f8e 100644 --- a/src/livecodes/i18n/locales/nl/language-info.ts +++ b/src/livecodes/i18n/locales/nl/language-info.ts @@ -241,10 +241,15 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>Officiële website van Janet <3> <4>Janet-documentatie <5> <6>Leer X in Y minuten, waarbij X = Janet <7> <8>LiveCodes-documentatie <9> <10>Startersjabloon laden ', name: 'Janet (Wasm)', }, - java: { - desc: 'JVM draaiend in de browser met DoppioJVM.', - link: '<1> <2>Java officiële website <3> <4>DoppioJVM <5> <6>Leer X in Y minuten, waarbij X=java <7> <8>LiveCodes Documentatie <9> <10>Startsjabloon laden ', - name: 'Java', + java8: { + desc: 'JVM draaiend in de browser met DoppioJVM (JDK 8, geïnterpreteerd in JavaScript).', + link: '<1> <2>Java officiële website <3> <4>DoppioJVM <5> <6>Leer X in Y minuten, waarbij X=java <7> <8>LiveCodes Documentatie ', + name: 'Java 8', + }, + javaWasm: { + desc: 'Java wordt in de browser naar WebAssembly gecompileerd door javac van OpenJDK en de AOT-compiler van TeaVM. Moderne Java (records, switch-expressies, tekstblokken) wordt ondersteund, en er wordt niets naar een server verzonden.', + link: '<1> <2>Java officiële website <3> <4>TeaVM <5> <6>Leer X in Y minuten, waarbij X=java <7> <8>LiveCodes Documentatie <9> <10>Startsjabloon laden ', + name: 'Java (Wasm)', }, javascript: { desc: 'De scripttaal van het web.', diff --git a/src/livecodes/i18n/locales/pt/language-info.lokalise.json b/src/livecodes/i18n/locales/pt/language-info.lokalise.json index 762e0fe919..82c09b5f31 100644 --- a/src/livecodes/i18n/locales/pt/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/pt/language-info.lokalise.json @@ -432,14 +432,23 @@ "janetWasm.name": { "translation": "Janet (Wasm)" }, - "java.desc": { - "translation": "JVM em execução no navegador usando DoppioJVM." + "java8.desc": { + "translation": "JVM em execução no navegador usando DoppioJVM (JDK 8, interpretado em JavaScript)." }, - "java.link": { - "translation": " Sítio Web oficial de Java DoppioJVM Aprender X em Y minutos, onde X=java Documentação do LiveCodes Carregar modelo inicial " + "java8.link": { + "translation": " Sítio Web oficial de Java DoppioJVM Aprender X em Y minutos, onde X=java Documentação do LiveCodes " }, - "java.name": { - "translation": "Java" + "java8.name": { + "translation": "Java 8" + }, + "javaWasm.desc": { + "translation": "Java é compilado para WebAssembly no navegador pelo javac do OpenJDK e pelo compilador AOT do TeaVM. O Java moderno (records, expressões switch, blocos de texto) é suportado, e nada é enviado a um servidor." + }, + "javaWasm.link": { + "translation": " Sítio Web oficial de Java TeaVM Aprender X em Y minutos, onde X=java Documentação do LiveCodes Carregar modelo inicial " + }, + "javaWasm.name": { + "translation": "Java (Wasm)" }, "javascript.desc": { "translation": "A linguagem de script da Web." diff --git a/src/livecodes/i18n/locales/pt/language-info.ts b/src/livecodes/i18n/locales/pt/language-info.ts index 16414ece99..79663cf18a 100644 --- a/src/livecodes/i18n/locales/pt/language-info.ts +++ b/src/livecodes/i18n/locales/pt/language-info.ts @@ -241,10 +241,15 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>Site oficial do Janet <3> <4>Documentação do Janet <5> <6>Aprenda X em Y minutos, onde X = Janet <7> <8>Documentação do LiveCodes <9> <10>Carregar modelo inicial ', name: 'Janet (Wasm)', }, - java: { - desc: 'JVM em execução no navegador usando DoppioJVM.', - link: '<1> <2>Sítio Web oficial de Java <3> <4> DoppioJVM <5> <6> Aprender X em Y minutos, onde X=java <7> <8>Documentação do LiveCodes <9> <10> Carregar modelo inicial ', - name: 'Java', + java8: { + desc: 'JVM em execução no navegador usando DoppioJVM (JDK 8, interpretado em JavaScript).', + link: '<1> <2>Sítio Web oficial de Java <3> <4> DoppioJVM <5> <6> Aprender X em Y minutos, onde X=java <7> <8>Documentação do LiveCodes ', + name: 'Java 8', + }, + javaWasm: { + desc: 'Java é compilado para WebAssembly no navegador pelo javac do OpenJDK e pelo compilador AOT do TeaVM. O Java moderno (records, expressões switch, blocos de texto) é suportado, e nada é enviado a um servidor.', + link: '<1> <2>Sítio Web oficial de Java <3> <4> TeaVM <5> <6> Aprender X em Y minutos, onde X=java <7> <8>Documentação do LiveCodes <9> <10> Carregar modelo inicial ', + name: 'Java (Wasm)', }, javascript: { desc: 'A linguagem de script da Web.', diff --git a/src/livecodes/i18n/locales/ru/language-info.lokalise.json b/src/livecodes/i18n/locales/ru/language-info.lokalise.json index 7e12fdb87c..31d7fc0cdc 100644 --- a/src/livecodes/i18n/locales/ru/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/ru/language-info.lokalise.json @@ -432,14 +432,23 @@ "janetWasm.name": { "translation": "Janet (Wasm)" }, - "java.desc": { - "translation": "JVM, работающая в браузере с помощью DoppioJVM." + "java8.desc": { + "translation": "JVM, работающая в браузере с помощью DoppioJVM (JDK 8, интерпретируется в JavaScript)." }, - "java.link": { - "translation": " Официальный сайт Java DoppioJVM Узнай X за Y минут, где X=java Документация LiveCodes Загрузи стартовый шаблон " + "java8.link": { + "translation": " Официальный сайт Java DoppioJVM Узнай X за Y минут, где X=java Документация LiveCodes " }, - "java.name": { - "translation": "Java" + "java8.name": { + "translation": "Java 8" + }, + "javaWasm.desc": { + "translation": "Java компилируется в WebAssembly в браузере с помощью javac из OpenJDK и AOT-компилятора TeaVM. Поддерживается современная версия Java (records, switch-выражения, текстовые блоки), и ничего не отправляется на сервер." + }, + "javaWasm.link": { + "translation": " Официальный сайт Java TeaVM Узнай X за Y минут, где X=java Документация LiveCodes Загрузи стартовый шаблон " + }, + "javaWasm.name": { + "translation": "Java (Wasm)" }, "javascript.desc": { "translation": "Язык сценариев в Интернете." diff --git a/src/livecodes/i18n/locales/ru/language-info.ts b/src/livecodes/i18n/locales/ru/language-info.ts index 73a5ec60f9..58294d9c8e 100644 --- a/src/livecodes/i18n/locales/ru/language-info.ts +++ b/src/livecodes/i18n/locales/ru/language-info.ts @@ -243,10 +243,15 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>Официальный сайт Janet <3> <4>Документация по Janet <5> <6>«Изучите X за Y минут», где X = Janet <7> <8>Документация LiveCodes <9> <10>Загрузить стартовый шаблон ', name: 'Janet (Wasm)', }, - java: { - desc: 'JVM, работающая в браузере с помощью DoppioJVM.', - link: '<1> <2>Официальный сайт Java <3> <4> DoppioJVM <5> <6> Узнай X за Y минут, где X=java <7> <8>Документация LiveCodes <9> <10> Загрузи стартовый шаблон ', - name: 'Java', + java8: { + desc: 'JVM, работающая в браузере с помощью DoppioJVM (JDK 8, интерпретируется в JavaScript).', + link: '<1> <2>Официальный сайт Java <3> <4> DoppioJVM <5> <6> Узнай X за Y минут, где X=java <7> <8>Документация LiveCodes ', + name: 'Java 8', + }, + javaWasm: { + desc: 'Java компилируется в WebAssembly в браузере с помощью javac из OpenJDK и AOT-компилятора TeaVM. Поддерживается современная версия Java (records, switch-выражения, текстовые блоки), и ничего не отправляется на сервер.', + link: '<1> <2>Официальный сайт Java <3> <4> TeaVM <5> <6> Узнай X за Y минут, где X=java <7> <8>Документация LiveCodes <9> <10> Загрузи стартовый шаблон ', + name: 'Java (Wasm)', }, javascript: { desc: 'Язык сценариев в Интернете.', diff --git a/src/livecodes/i18n/locales/tr/language-info.lokalise.json b/src/livecodes/i18n/locales/tr/language-info.lokalise.json index 07090356f6..0b65ea0c4b 100644 --- a/src/livecodes/i18n/locales/tr/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/tr/language-info.lokalise.json @@ -432,14 +432,23 @@ "janetWasm.name": { "translation": "Janet (Wasm)" }, - "java.desc": { - "translation": "DoppioJVM kullanılarak tarayıcıda çalışan JVM." + "java8.desc": { + "translation": "DoppioJVM kullanılarak tarayıcıda çalışan JVM (JDK 8, JavaScript ile yorumlanır)." }, - "java.link": { - "translation": " Java resmi web sitesi DoppioJVM Y Dakikada X Öğrenin, X=java LiveCodes Dokümantasyonu Başlangıç şablonunu yükle " + "java8.link": { + "translation": " Java resmi web sitesi DoppioJVM Y Dakikada X Öğrenin, X=java LiveCodes Dokümantasyonu " }, - "java.name": { - "translation": "Java" + "java8.name": { + "translation": "Java 8" + }, + "javaWasm.desc": { + "translation": "Java, tarayıcıda OpenJDK'nın javac'ı ve TeaVM AOT derleyicisi tarafından WebAssembly'ye derlenir. Modern Java (record'lar, switch ifadeleri, metin blokları) desteklenir, ve hiçbir şey sunucuya gönderilmez." + }, + "javaWasm.link": { + "translation": " Java resmi web sitesi TeaVM Y Dakikada X Öğrenin, X=java LiveCodes Dokümantasyonu Başlangıç şablonunu yükle " + }, + "javaWasm.name": { + "translation": "Java (Wasm)" }, "javascript.desc": { "translation": "Web'in komut dosyası dili." diff --git a/src/livecodes/i18n/locales/tr/language-info.ts b/src/livecodes/i18n/locales/tr/language-info.ts index 78f8196445..f30c7e7960 100644 --- a/src/livecodes/i18n/locales/tr/language-info.ts +++ b/src/livecodes/i18n/locales/tr/language-info.ts @@ -242,10 +242,15 @@ const languageInfo: I18nLangInfoTranslation = { link: "<1><2>Janet resmi web sitesi <3> <4>Janet belgeleri <5> <6>Y dakikada X'i öğrenin, burada X=Janet <7> <8>LiveCodes Belgeleri <9> <10>Başlangıç şablonunu yükle ", name: 'Janet (Wasm)', }, - java: { - desc: 'DoppioJVM kullanılarak tarayıcıda çalışan JVM.', - link: '<1> <2>Java resmi web sitesi <3> <4>DoppioJVM <5> <6>Y Dakikada X Öğrenin, X=java <7> <8>LiveCodes Dokümantasyonu <9> <10>Başlangıç şablonunu yükle ', - name: 'Java', + java8: { + desc: 'DoppioJVM kullanılarak tarayıcıda çalışan JVM (JDK 8, JavaScript ile yorumlanır).', + link: '<1> <2>Java resmi web sitesi <3> <4>DoppioJVM <5> <6>Y Dakikada X Öğrenin, X=java <7> <8>LiveCodes Dokümantasyonu ', + name: 'Java 8', + }, + javaWasm: { + desc: "Java, tarayıcıda OpenJDK'nın javac'ı ve TeaVM AOT derleyicisi tarafından WebAssembly'ye derlenir. Modern Java (record'lar, switch ifadeleri, metin blokları) desteklenir, ve hiçbir şey sunucuya gönderilmez.", + link: '<1> <2>Java resmi web sitesi <3> <4>TeaVM <5> <6>Y Dakikada X Öğrenin, X=java <7> <8>LiveCodes Dokümantasyonu <9> <10>Başlangıç şablonunu yükle ', + name: 'Java (Wasm)', }, javascript: { desc: "Web'in komut dosyası dili.", diff --git a/src/livecodes/i18n/locales/ur/language-info.lokalise.json b/src/livecodes/i18n/locales/ur/language-info.lokalise.json index d87e16b285..8486c00634 100644 --- a/src/livecodes/i18n/locales/ur/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/ur/language-info.lokalise.json @@ -432,14 +432,23 @@ "janetWasm.name": { "translation": "Janet (Wasm)" }, - "java.desc": { - "translation": "DoppioJVM کا استعمال کرتے ہوئے براؤزر میں JVM چل رہا ہے۔" + "java8.desc": { + "translation": "DoppioJVM کا استعمال کرتے ہوئے براؤزر میں JVM چل رہا ہے (JDK 8، JavaScript میں تشریح شدہ)۔" }, - "java.link": { - "translation": " Java آفیشل ویب سائٹ DoppioJVM Y منٹ میں X سیکھیں، جہاں X=java LiveCodes دستاویزات ابتدائی سانچہ لوڈ کریں " + "java8.link": { + "translation": " Java آفیشل ویب سائٹ DoppioJVM Y منٹ میں X سیکھیں، جہاں X=java LiveCodes دستاویزات " }, - "java.name": { - "translation": "Java" + "java8.name": { + "translation": "Java 8" + }, + "javaWasm.desc": { + "translation": "Java براؤزر میں OpenJDK کے javac اور TeaVM AOT کمپائلر کے ذریعے WebAssembly میں کمپائل ہوتی ہے۔ جدید Java (ریکارڈز، switch ایکسپریشنز، ٹیکسٹ بلاکس) کی معاونت ہے، اور سرور کو کچھ نہیں بھیجا جاتا۔" + }, + "javaWasm.link": { + "translation": " Java آفیشل ویب سائٹ TeaVM Y منٹ میں X سیکھیں، جہاں X=java LiveCodes دستاویزات ابتدائی سانچہ لوڈ کریں " + }, + "javaWasm.name": { + "translation": "Java (Wasm)" }, "javascript.desc": { "translation": "ویب کی سکرپٹ کی زبان۔" diff --git a/src/livecodes/i18n/locales/ur/language-info.ts b/src/livecodes/i18n/locales/ur/language-info.ts index 1956682c82..f962ae66d1 100644 --- a/src/livecodes/i18n/locales/ur/language-info.ts +++ b/src/livecodes/i18n/locales/ur/language-info.ts @@ -242,10 +242,15 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>Janet آفیشل ویب سائٹ <3> <4>Janet دستاویزات <5> <6>Y منٹ میں X سیکھیں، جہاں X=Janet <7> <8>LiveCodes دستاویزی <9> <10>لوڈ اسٹارٹر ٹیمپلیٹ ', name: 'Janet (Wasm)', }, - java: { - desc: 'DoppioJVM کا استعمال کرتے ہوئے براؤزر میں JVM چل رہا ہے۔', - link: '<1> <2>Java آفیشل ویب سائٹ <3> <4>DoppioJVM <5> <6>Y منٹ میں X سیکھیں، جہاں X=java <7> <8>LiveCodes دستاویزات <9> <10>ابتدائی سانچہ لوڈ کریں ', - name: 'Java', + java8: { + desc: 'DoppioJVM کا استعمال کرتے ہوئے براؤزر میں JVM چل رہا ہے (JDK 8، JavaScript میں تشریح شدہ)۔', + link: '<1> <2>Java آفیشل ویب سائٹ <3> <4>DoppioJVM <5> <6>Y منٹ میں X سیکھیں، جہاں X=java <7> <8>LiveCodes دستاویزات ', + name: 'Java 8', + }, + javaWasm: { + desc: 'Java براؤزر میں OpenJDK کے javac اور TeaVM AOT کمپائلر کے ذریعے WebAssembly میں کمپائل ہوتی ہے۔ جدید Java (ریکارڈز، switch ایکسپریشنز، ٹیکسٹ بلاکس) کی معاونت ہے، اور سرور کو کچھ نہیں بھیجا جاتا۔', + link: '<1> <2>Java آفیشل ویب سائٹ <3> <4>TeaVM <5> <6>Y منٹ میں X سیکھیں، جہاں X=java <7> <8>LiveCodes دستاویزات <9> <10>ابتدائی سانچہ لوڈ کریں ', + name: 'Java (Wasm)', }, javascript: { desc: 'ویب کی سکرپٹ کی زبان۔', 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 0f9bc4fb8e..8f6e408c5c 100644 --- a/src/livecodes/i18n/locales/zh-CN/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/zh-CN/language-info.lokalise.json @@ -432,14 +432,23 @@ "janetWasm.name": { "translation": "Janet (Wasm)" }, - "java.desc": { - "translation": "使用 DoppioJVM 在浏览器中运行的 JVM。" + "java8.desc": { + "translation": "使用 DoppioJVM 在浏览器中运行的 JVM(JDK 8,以 JavaScript 解释执行)。" }, - "java.link": { - "translation": " Java 官方网站 DoppioJVM 在 Y 分钟内学习 X,其中 X=java LiveCodes 文档 加载启动模板 " + "java8.link": { + "translation": " Java 官方网站 DoppioJVM 在 Y 分钟内学习 X,其中 X=java LiveCodes 文档 " }, - "java.name": { - "translation": "Java" + "java8.name": { + "translation": "Java 8" + }, + "javaWasm.desc": { + "translation": "Java 由 OpenJDK 的 javac 和 TeaVM AOT 编译器在浏览器中编译为 WebAssembly。支持现代 Java(记录、switch 表达式、文本块),并且不会向服务器发送任何内容。" + }, + "javaWasm.link": { + "translation": " Java 官方网站 TeaVM 在 Y 分钟内学习 X,其中 X=java LiveCodes 文档 加载启动模板 " + }, + "javaWasm.name": { + "translation": "Java (Wasm)" }, "javascript.desc": { "translation": "网络脚本语言" diff --git a/src/livecodes/i18n/locales/zh-CN/language-info.ts b/src/livecodes/i18n/locales/zh-CN/language-info.ts index 85524aa7b7..674df79f2a 100644 --- a/src/livecodes/i18n/locales/zh-CN/language-info.ts +++ b/src/livecodes/i18n/locales/zh-CN/language-info.ts @@ -237,10 +237,15 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>Janet 官方网站 <3> <4>Janet 文档 <5> <6>《Y分钟学会X》,其中X=Janet <7> <8>LiveCodes 文档 <9> <10>加载入门模板 ', name: 'Janet (Wasm)', }, - java: { - desc: '使用 DoppioJVM 在浏览器中运行的 JVM。', - link: '<1> <2>Java 官方网站 <3> <4>DoppioJVM <5> <6>在 Y 分钟内学习 X,其中 X=java <7> <8>LiveCodes 文档 <9> <10>加载启动模板 ', - name: 'Java', + java8: { + desc: '使用 DoppioJVM 在浏览器中运行的 JVM(JDK 8,以 JavaScript 解释执行)。', + link: '<1> <2>Java 官方网站 <3> <4>DoppioJVM <5> <6>在 Y 分钟内学习 X,其中 X=java <7> <8>LiveCodes 文档 ', + name: 'Java 8', + }, + javaWasm: { + desc: 'Java 由 OpenJDK 的 javac 和 TeaVM AOT 编译器在浏览器中编译为 WebAssembly。支持现代 Java(记录、switch 表达式、文本块),并且不会向服务器发送任何内容。', + link: '<1> <2>Java 官方网站 <3> <4>TeaVM <5> <6>在 Y 分钟内学习 X,其中 X=java <7> <8>LiveCodes 文档 <9> <10>加载启动模板 ', + name: 'Java (Wasm)', }, javascript: { desc: '网络脚本语言', diff --git a/src/livecodes/languages/java-8/__tests__/lang-java-8.spec.ts b/src/livecodes/languages/java-8/__tests__/lang-java-8.spec.ts new file mode 100644 index 0000000000..2538b035ee --- /dev/null +++ b/src/livecodes/languages/java-8/__tests__/lang-java-8.spec.ts @@ -0,0 +1,40 @@ +import { java8 } from '../lang-java-8'; + +describe('Java 8 language spec', () => { + test('is registered as java-8, with the Java 8 runner script', () => { + expect(java8.name).toBe('java-8'); + expect(java8.title).toBe('Java 8'); + expect(java8.compiler).toMatchObject({ + scriptType: 'text/java', + compiledCodeLanguage: 'java', + liveReload: true, + }); + }); + + test('accepts the Java 8 extensions', () => { + expect(java8.extensions).toEqual(expect.arrayContaining(['java-8', 'java8'])); + }); + + test('passes the code through unchanged', async () => { + const compiler = java8.compiler as unknown as { + factory: () => (code: string) => Promise; + }; + const compile = compiler.factory(); + await expect(compile('class Main {}')).resolves.toBe('class Main {}'); + }); + + test('loads the Java 8 runner script', () => { + const compiler = java8.compiler as unknown as { + scripts: (options: { baseUrl: string }) => string[]; + }; + expect(compiler.scripts({ baseUrl: '/' })).toEqual(['/{{hash:lang-java-8-script.js}}']); + }); + + test('highlights with the Java grammars', () => { + expect(java8.editorSupport?.monaco).toMatchObject({ language: 'java' }); + expect(java8.editorSupport?.codemirror).toMatchObject({ + languageSupport: expect.any(Function), + }); + expect(java8.editorSupport?.codejar).toEqual({ language: 'java' }); + }); +}); diff --git a/src/livecodes/languages/java-8/index.ts b/src/livecodes/languages/java-8/index.ts new file mode 100644 index 0000000000..338833afc8 --- /dev/null +++ b/src/livecodes/languages/java-8/index.ts @@ -0,0 +1 @@ +export * from './lang-java-8'; diff --git a/src/livecodes/languages/java/lang-java-script.ts b/src/livecodes/languages/java-8/lang-java-8-script.ts similarity index 100% rename from src/livecodes/languages/java/lang-java-script.ts rename to src/livecodes/languages/java-8/lang-java-8-script.ts diff --git a/src/livecodes/languages/java/lang-java.ts b/src/livecodes/languages/java-8/lang-java-8.ts similarity index 77% rename from src/livecodes/languages/java/lang-java.ts rename to src/livecodes/languages/java-8/lang-java-8.ts index 98bcb1f18f..fdd6b9ba1d 100644 --- a/src/livecodes/languages/java/lang-java.ts +++ b/src/livecodes/languages/java-8/lang-java-8.ts @@ -1,9 +1,9 @@ import type { LanguageSpecs } from '../../models'; import { codeMirrorBaseUrl, monacoLanguagesBaseUrl, wasmFmtClangBaseUrl } from '../../vendors'; -export const java: LanguageSpecs = { - name: 'java', - title: 'Java', +export const java8: LanguageSpecs = { + name: 'java-8', + title: 'Java 8', formatter: { factory: async () => { const formatter = await import(wasmFmtClangBaseUrl + 'clang-format-web.js'); @@ -15,19 +15,20 @@ export const java: LanguageSpecs = { }, compiler: { factory: () => async (code) => code, - scripts: ({ baseUrl }) => [baseUrl + '{{hash:lang-java-script.js}}'], + scripts: ({ baseUrl }) => [baseUrl + '{{hash:lang-java-8-script.js}}'], scriptType: 'text/java', compiledCodeLanguage: 'java', liveReload: true, }, - extensions: ['java'], + extensions: ['java-8', 'java8'], editor: 'script', editorSupport: { - monaco: { languageSupport: monacoLanguagesBaseUrl + 'java.js' }, + monaco: { languageSupport: monacoLanguagesBaseUrl + 'java.js', language: 'java' }, codemirror: { languageSupport: async () => (await import(codeMirrorBaseUrl + 'codemirror-lang-java.js')).java(), }, + codejar: { language: 'java' }, }, largeDownload: true, }; diff --git a/src/livecodes/languages/java-wasm/__tests__/lang-java-wasm.spec.ts b/src/livecodes/languages/java-wasm/__tests__/lang-java-wasm.spec.ts new file mode 100644 index 0000000000..d2404d6e38 --- /dev/null +++ b/src/livecodes/languages/java-wasm/__tests__/lang-java-wasm.spec.ts @@ -0,0 +1,47 @@ +import { javaWasm } from '../lang-java-wasm'; + +describe('Java (Wasm) language spec', () => { + test('is registered as java-wasm, with the wasm runner script', () => { + expect(javaWasm.name).toBe('java-wasm'); + expect(javaWasm.title).toBe('Java (Wasm)'); + expect(javaWasm.compiler).toMatchObject({ + scriptType: 'text/java-wasm', + compiledCodeLanguage: 'java-wasm', + liveReload: true, + }); + }); + + test('accepts the java extensions', () => { + expect(javaWasm.extensions).toEqual(expect.arrayContaining(['java', 'java-wasm'])); + }); + + test('passes the code through unchanged', async () => { + const compiler = javaWasm.compiler as unknown as { + factory: () => (code: string) => Promise; + }; + const compile = compiler.factory(); + await expect(compile('class Main {}')).resolves.toBe('class Main {}'); + }); + + test('loads the runtime and the build script', () => { + const compiler = javaWasm.compiler as unknown as { + scripts: (options: { baseUrl: string }) => string[]; + }; + const scripts = compiler.scripts({ baseUrl: '/' }); + expect(scripts).toHaveLength(2); + expect(scripts[1]).toBe('/{{hash:lang-java-wasm-script.js}}'); + }); + + test('warns that the first run is a large download', () => { + expect(javaWasm.largeDownload).toBe(true); + }); + + test('highlights with the Java grammars', () => { + expect(javaWasm.editorLanguage).toBe('java'); + expect(javaWasm.editorSupport?.monaco).toMatchObject({ language: 'java' }); + expect(javaWasm.editorSupport?.codemirror).toMatchObject({ + languageSupport: expect.any(Function), + }); + expect(javaWasm.editorSupport?.codejar).toEqual({ language: 'java' }); + }); +}); diff --git a/src/livecodes/languages/java-wasm/index.ts b/src/livecodes/languages/java-wasm/index.ts new file mode 100644 index 0000000000..8e43b00aeb --- /dev/null +++ b/src/livecodes/languages/java-wasm/index.ts @@ -0,0 +1 @@ +export * from './lang-java-wasm'; diff --git a/src/livecodes/languages/java-wasm/lang-java-wasm-script.ts b/src/livecodes/languages/java-wasm/lang-java-wasm-script.ts new file mode 100644 index 0000000000..ccc6842209 --- /dev/null +++ b/src/livecodes/languages/java-wasm/lang-java-wasm-script.ts @@ -0,0 +1,125 @@ +// @ts-nocheck +/* eslint-disable no-console */ + +import { javaWasmBaseUrl } from '../../vendors'; + +const javaWasmDistUrl = javaWasmBaseUrl + 'dist/'; + +livecodes.java = livecodes.java || {}; +livecodes.java.ready = false; +livecodes.java.failed = false; + +// The runner is a separate