diff --git a/.agents/skills/livecodes/language-support/references/languages.md b/.agents/skills/livecodes/language-support/references/languages.md index fc139398d..946dc5dcf 100644 --- a/.agents/skills/livecodes/language-support/references/languages.md +++ b/.agents/skills/livecodes/language-support/references/languages.md @@ -121,6 +121,7 @@ Enabled via `processors` config: | C (Wasm) | `c-wasm`, `cwasm`, `wasm.c`, `c` | Clang WASM | | C++ | `cpp`, | JSCPP interpreter | | C++ (Wasm) | `cpp-wasm`, `clang`, `wasm.cpp` | Clang WASM | +| Crystal (Wasm) | `crystal-wasm`, `cr`, `crystal` | Crystal -> WASM (Clang/LLVM + WASI) | | 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) | diff --git a/README.md b/README.md index 3c7c9844d..8cc089bef 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-121-blue)](https://livecodes.io/docs/languages/) +[![LiveCodes: languages](https://img.shields.io/badge/languages-122-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/crystal-wasm.mdx b/docs/docs/languages/crystal-wasm.mdx new file mode 100644 index 000000000..6d6f31a8b --- /dev/null +++ b/docs/docs/languages/crystal-wasm.mdx @@ -0,0 +1,130 @@ +# Crystal (Wasm) + +[Crystal](https://crystal-lang.org/) is a statically typed, compiled language with a Ruby-like syntax. + +In LiveCodes, Crystal is compiled and run entirely in the browser by Crystal's compiler, compiled to WebAssembly. Nothing runs on a server. + +## Usage + +Demo: + +import LiveCodes from '../../src/components/LiveCodes.tsx'; + +export const crystalConfig = { + mode: 'simple', + activeEditor: 'script', + script: { + language: 'crystal-wasm', + content: `begin + raise "boom" +rescue ex : Exception + puts "caught: #{ex.message}" +end\n +name = gets +puts "hello #{name}" +`, + }, + tools: { status: 'full' }, +}; + + + +The first run downloads about 22 MB of compressed compiler, linker and standard library, and compiles them; later runs reuse them. + + +### Communication with JavaScript + +The Crystal code is compiled and run in a web worker. The following helpers are available in the browser global `livecodes.crystalWasm` object: + +- `livecodes.crystalWasm.input`: The standard input passed to the program. +- `livecodes.crystalWasm.loaded`: A promise that resolves when the compiler is loaded and the program has run once. +- `livecodes.crystalWasm.output`: The program's output. +- `livecodes.crystalWasm.error`: The compiler diagnostics, if the code failed to compile. +- `livecodes.crystalWasm.exitCode`: The program's exit code. +- `livecodes.crystalWasm.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 + +`crystal-wasm` + +### Aliases and Extensions + +`cr`, `crystal` + +### Editor + +`script` + +## Compiler + +Crystal's compiler, compiled to WebAssembly. + +### Version + +Crystal 1.17.0, linked against LLVM 20.1.8 with the WASI sysroot from wasi-sdk 33. + +## Custom Settings + +[Custom settings](../advanced/custom-settings.mdx) added to the property `crystal-wasm` are passed as a JSON object to the `compiler` during compile. Please check the [documentation](../advanced/custom-settings.mdx) for full reference. + +Please note that custom settings should be valid JSON (i.e. functions are not allowed). + +**Example:** + +```json title="Custom Settings" +{ + "crystal-wasm": {} +} +``` + +`args` is passed to the program as its command-line arguments, and `compileArgs` is added to the `crystal build` command line. + +**Example:** + +```json title="Custom Settings" +{ + "crystal-wasm": { + "args": ["--flag", "value"], + "compileArgs": ["-Dpreview_mt"] + } +} +``` + +## Live Reload + +By default, new code changes are sent to the result page for re-evaluation without a full page reload, avoiding the need to reinitialize the Crystal environment. This behavior can be disabled by adding the code comment `# __livecodes_reload__` to the Crystal code, which forces a full page reload. + +This comment can be added in the `hiddenContent` property of the editor for embedded playgrounds. + +## Limitations + +{/* - Crystal 1.17.0 only: the wasm target does not build on newer releases. */} +- Memory is never reclaimed — `wasm32` selects Crystal's no-GC allocator — so a long-running program will grow. +- No threads, sockets or subprocesses: WASI preview 1 has none, and a program is given an empty filesystem. + +## Example Usage + +```ruby +puts "hello from Crystal, compiled in your browser" + +1.upto(5) do |n| + puts "#{n} squared is #{n * n}" +end +``` + +## Starter Template + +https://livecodes.io/?template=crystal-wasm + +## Links + +- [Crystal official website](https://crystal-lang.org/) +- [Crystal language reference](https://crystal-lang.org/reference/) +- [Standard library API](https://crystal-lang.org/api/) +- [Learn X in Y minutes, where X=Crystal](https://learnxinyminutes.com/crystal/) diff --git a/docs/src/components/LanguageSliders.tsx b/docs/src/components/LanguageSliders.tsx index a6857f45b..6472765b1 100644 --- a/docs/src/components/LanguageSliders.tsx +++ b/docs/src/components/LanguageSliders.tsx @@ -98,6 +98,7 @@ export default function Sliders() { { name: 'cobol-wasm', title: 'COBOL (Wasm)' }, { name: 'fortran', title: 'Fortran' }, { name: 'd-wasm', title: 'D (Wasm)' }, + { name: 'crystal-wasm', title: 'Crystal (Wasm)' }, { name: 'dart', title: 'Dart' }, { name: 'flutter', title: 'Flutter' }, { name: 'v-wasm', title: 'V (Wasm)' }, diff --git a/docs/src/components/TemplateList.tsx b/docs/src/components/TemplateList.tsx index 5ee78f5f2..94b4d9422 100644 --- a/docs/src/components/TemplateList.tsx +++ b/docs/src/components/TemplateList.tsx @@ -54,6 +54,7 @@ const templates = [ { name: 'cobol-wasm', title: 'COBOL Starter', thumbnail: 'cobol.svg' }, { name: 'fortran-wasm', title: 'Fortran Starter', thumbnail: 'fortran.svg' }, { name: 'd-wasm', title: 'D Starter', thumbnail: 'd.svg' }, + { name: 'crystal-wasm', title: 'Crystal Starter', thumbnail: 'crystal.svg' }, { name: 'v-wasm', title: 'V Starter', thumbnail: 'v.svg' }, { name: 'cpp-wasm', title: 'C++ (Wasm) Starter', thumbnail: 'cpp.svg' }, { name: 'objc-wasm', title: 'Objective-C (Wasm) Starter', thumbnail: 'objective-c.svg' }, diff --git a/functions/vendors/templates.js b/functions/vendors/templates.js index f0ed0b6c1..68db74cb5 100644 --- a/functions/vendors/templates.js +++ b/functions/vendors/templates.js @@ -39,6 +39,7 @@ export const starterTemplates = { "ocaml": "Ocaml Starter", "nim": "Nim Starter", "nim-wasm": "Nim (Wasm) Starter", + "crystal-wasm": "Crystal Starter", "janet-wasm": "Janet (Wasm) Starter", "python": "Python Starter", "python-wasm": "Python (Wasm) Starter", diff --git a/scripts/build.js b/scripts/build.js index ba90d931b..002a31443 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -232,6 +232,7 @@ const iifeBuild = () => 'languages/janet-wasm/lang-janet-wasm-script.ts', 'languages/fortran-wasm/lang-fortran-wasm-script.ts', 'languages/d-wasm/lang-d-wasm-script.ts', + 'languages/crystal/lang-crystal-wasm-script.ts', 'languages/cobol-wasm/lang-cobol-wasm-script.ts', 'languages/v-wasm/lang-v-wasm-script.ts', 'languages/go-wasm/lang-go-wasm-script.ts', diff --git a/server/php/inc/starter-templates.json b/server/php/inc/starter-templates.json index 8b7ff493e..9e641ac7b 100644 --- a/server/php/inc/starter-templates.json +++ b/server/php/inc/starter-templates.json @@ -39,6 +39,7 @@ "ocaml": "Ocaml Starter", "nim": "Nim Starter", "nim-wasm": "Nim (Wasm) Starter", + "crystal-wasm": "Crystal Starter", "janet-wasm": "Janet (Wasm) Starter", "python": "Python Starter", "python-wasm": "Python (Wasm) Starter", diff --git a/src/livecodes/UI/command-menu-actions.ts b/src/livecodes/UI/command-menu-actions.ts index 7f4985c64..86a308572 100644 --- a/src/livecodes/UI/command-menu-actions.ts +++ b/src/livecodes/UI/command-menu-actions.ts @@ -312,6 +312,7 @@ export const getCommandMenuActions = ({ 'cobol-wasm', 'fortran-wasm', 'd-wasm', + 'crystal-wasm', 'v-wasm', 'rust-wasm', 'swift-wasm', diff --git a/src/livecodes/assets/templates/crystal.svg b/src/livecodes/assets/templates/crystal.svg new file mode 100644 index 000000000..f599c1ade --- /dev/null +++ b/src/livecodes/assets/templates/crystal.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/livecodes/html/language-info.html b/src/livecodes/html/language-info.html index 6001d4241..efb17b37a 100644 --- a/src/livecodes/html/language-info.html +++ b/src/livecodes/html/language-info.html @@ -568,6 +568,45 @@

C++ (Wasm)

+
+

Crystal (Wasm)

+
+ Crystal's own compiler, compiled to WebAssembly — with LLVM's linker and the WASI sysroot it + links against — running entirely in the browser. +
+ +

C# (Wasm)

diff --git a/src/livecodes/i18n/locales/ar/language-info.lokalise.json b/src/livecodes/i18n/locales/ar/language-info.lokalise.json index ecacb9d94..7b53395af 100644 --- a/src/livecodes/i18n/locales/ar/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/ar/language-info.lokalise.json @@ -183,6 +183,15 @@ "cppWasm.name": { "translation": "C++ (Wasm)" }, + "crystal-wasm.desc": { + "translation": "مترجم Crystal الخاص، المُجمَّع إلى WebAssembly — مع رابط LLVM ونظام WASI sysroot الذي يرتبط به — يعمل بالكامل داخل المتصفح." + }, + "crystal-wasm.link": { + "translation": " الموقع الرسمي لـ Crystal مرجع لغة Crystal واجهة برمجة المكتبة القياسية تعلم X في Y دقيقة، حيث X = Crystal وثائق LiveCodes تحميل قالب البدء " + }, + "crystal-wasm.name": { + "translation": "Crystal (Wasm)" + }, "csharpWasm.desc": { "translation": "مترجم C# الذي يعمل على WebAssembly، باستخدام Blazor" }, @@ -201,6 +210,15 @@ "d-wasm.name": { "translation": "D (Wasm)" }, + "dart.desc": { + "translation": "يتم تجميع Dart إلى JavaScript بواسطة سلسلة أدوات Dart من جهة العميل (DDC) — نفسها التي تشغّل DartPad — وتعمل بالكامل داخل المتصفح. ثم تعمل الحزمة المُجمَّعة في صفحة النتيجة. لا يشارك أي خادم." + }, + "dart.link": { + "translation": " الموقع الرسمي لـ Dart وثائق Dart DartPad وثائق LiveCodes تحميل قالب البدء " + }, + "dart.name": { + "translation": "Dart" + }, "diagrams.desc1": { "translation": "(تجريبي)" }, @@ -279,6 +297,15 @@ "flow.name": { "translation": "Flow" }, + "flutter.desc": { + "translation": "يتم تجميع Flutter إلى JavaScript باستخدام سلسلة الأدوات من جهة العميل نفسها التي يستخدمها Dart، ثم يتم تشغيل محرك Flutter في صفحة النتيجة، حيث يُعرض التطبيق. لا يشارك أي خادم." + }, + "flutter.link": { + "translation": " الموقع الرسمي لـ Flutter وثائق Flutter مقدمة إلى الودجات وثائق LiveCodes تحميل قالب البدء " + }, + "flutter.name": { + "translation": "Flutter" + }, "fortran-wasm.desc": { "translation": "يتم تجميع Fortran الحديثة إلى WebAssembly بواسطة LFortran، وتعمل بالكامل داخل المتصفح." }, diff --git a/src/livecodes/i18n/locales/ar/language-info.ts b/src/livecodes/i18n/locales/ar/language-info.ts index 6ad5552db..089aed078 100644 --- a/src/livecodes/i18n/locales/ar/language-info.ts +++ b/src/livecodes/i18n/locales/ar/language-info.ts @@ -106,6 +106,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>مؤسسة C++ القياسية <3> <4>الموقع الرسمي لـ Clang <5> <6>تعلم X في Y دقائق، حيث X=C++ <7> <8>وثائق LiveCodes <9> <10>تحميل القالب الأولي ', name: 'C++ (Wasm)', }, + 'crystal-wasm': { + desc: 'مترجم Crystal الخاص، المُجمَّع إلى WebAssembly — مع رابط LLVM ونظام WASI sysroot الذي يرتبط به — يعمل بالكامل داخل المتصفح.', + link: '<1> <2>الموقع الرسمي لـ Crystal <3> <4>مرجع لغة Crystal <5> <6>واجهة برمجة المكتبة القياسية <7> <8>تعلم X في Y دقيقة، حيث X = Crystal <9> <10>وثائق LiveCodes <11> <12>تحميل قالب البدء ', + name: 'Crystal (Wasm)', + }, csharpWasm: { desc: 'مترجم C# الذي يعمل على WebAssembly، باستخدام <1>Blazor', link: '<1> <2>وثائق لغة C# <3> <4> تعلم X في دقائق Y، حيث X = C# <5> <6> وثائق LiveCodes <7> <8> تحميل قالب البدء ', @@ -116,6 +121,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>الموقع الرسمي لـ D <3> <4>مواصفات لغة D <5> <6>جولة في لغة D <7> <8>تعلم X في Y دقيقة، حيث X = D <9> <10>وثائق LiveCodes <11> <12>تحميل قالب البدء ', name: 'D (Wasm)', }, + dart: { + desc: 'يتم تجميع Dart إلى JavaScript بواسطة سلسلة أدوات Dart من جهة العميل (DDC) — نفسها التي تشغّل DartPad — وتعمل بالكامل داخل المتصفح. ثم تعمل الحزمة المُجمَّعة في صفحة النتيجة. لا يشارك أي خادم.', + link: '<1> <2>الموقع الرسمي لـ Dart <3> <4>وثائق Dart <5> <6>DartPad <7> <8>وثائق LiveCodes <9> <10>تحميل قالب البدء ', + name: 'Dart', + }, diagrams: { desc1: '(تجريبي)', desc2: 'رسومات بيانية كبرمجة. يدعم:', @@ -159,6 +169,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>الموقع الرسمي لفلو <3> <4>وثائق فلو ', name: 'Flow', }, + flutter: { + desc: 'يتم تجميع Flutter إلى JavaScript باستخدام سلسلة الأدوات من جهة العميل نفسها التي يستخدمها Dart، ثم يتم تشغيل محرك Flutter في صفحة النتيجة، حيث يُعرض التطبيق. لا يشارك أي خادم.', + link: '<1> <2>الموقع الرسمي لـ Flutter <3> <4>وثائق Flutter <5> <6>مقدمة إلى الودجات <7> <8>وثائق LiveCodes <9> <10>تحميل قالب البدء ', + name: 'Flutter', + }, 'fortran-wasm': { desc: 'يتم تجميع Fortran الحديثة إلى WebAssembly بواسطة <1>LFortran، وتعمل بالكامل داخل المتصفح.', link: '<1> <2>تعلم Fortran <3> <4>الموقع الرسمي لـ LFortran <5> <6>موقع لغة Fortran <7> <8>تعلم X في Y دقيقة، حيث X = Fortran <9> <10>وثائق LiveCodes <11> <12>تحميل قالب البدء ', diff --git a/src/livecodes/i18n/locales/ar/translation.lokalise.json b/src/livecodes/i18n/locales/ar/translation.lokalise.json index 2f8a40d5e..f47897ccc 100644 --- a/src/livecodes/i18n/locales/ar/translation.lokalise.json +++ b/src/livecodes/i18n/locales/ar/translation.lokalise.json @@ -1968,6 +1968,9 @@ "templates.starter.cpp-wasm": { "translation": "قالب C++ (Wasm)" }, + "templates.starter.crystal-wasm": { + "translation": "قالب Crystal" + }, "templates.starter.csharp-wasm": { "translation": "قالب C# (Wasm)" }, @@ -1980,6 +1983,9 @@ "templates.starter.daisyui": { "translation": "قالب daisyUI" }, + "templates.starter.dart": { + "translation": "قالب Dart" + }, "templates.starter.diagrams": { "translation": "قالب الرسوم البيانية" }, @@ -1992,6 +1998,9 @@ "templates.starter.fennel": { "translation": "قالب Fennel" }, + "templates.starter.flutter": { + "translation": "قالب Flutter" + }, "templates.starter.fortran-wasm": { "translation": "قالب Fortran" }, diff --git a/src/livecodes/i18n/locales/ar/translation.ts b/src/livecodes/i18n/locales/ar/translation.ts index 827b955a0..01a973a0e 100644 --- a/src/livecodes/i18n/locales/ar/translation.ts +++ b/src/livecodes/i18n/locales/ar/translation.ts @@ -995,14 +995,17 @@ const translation: I18nTranslation = { commonlisp: 'قالب Common Lisp', cpp: 'قالب C++', 'cpp-wasm': 'قالب C++ (Wasm)', + 'crystal-wasm': 'قالب Crystal', 'csharp-wasm': 'قالب C# (Wasm)', 'd-wasm': 'قالب D', d3: 'قالب D3', daisyui: 'قالب daisyUI', + dart: 'قالب Dart', diagrams: 'قالب الرسوم البيانية', elm: 'قالب Elm', fanak: 'قالب Fanak', fennel: 'قالب Fennel', + flutter: 'قالب Flutter', 'fortran-wasm': 'قالب Fortran', fsharp: 'قالب F#', 'fsharp-wasm': 'قالب F# (Wasm)', diff --git a/src/livecodes/i18n/locales/bn/language-info.lokalise.json b/src/livecodes/i18n/locales/bn/language-info.lokalise.json index c67b5a33c..7bb6a044d 100644 --- a/src/livecodes/i18n/locales/bn/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/bn/language-info.lokalise.json @@ -183,6 +183,15 @@ "cppWasm.name": { "translation": "C++ (Wasm)" }, + "crystal-wasm.desc": { + "translation": "Crystal-এর নিজস্ব কম্পাইলার, WebAssembly-তে কম্পাইল করা — LLVM-এর লিঙ্কার এবং যে WASI sysroot-এর সাথে এটি লিঙ্ক করে, তা সহ — সম্পূর্ণভাবে ব্রাউজারে চলে।" + }, + "crystal-wasm.link": { + "translation": " Crystal অফিসিয়াল ওয়েবসাইট Crystal ভাষার রেফারেন্স স্ট্যান্ডার্ড লাইব্রেরি API Y মিনিটে X শিখুন, যেখানে X=Crystal লাইভকোড ডকুমেন্টেশন স্টার্টার টেমপ্লেট লোড করুন " + }, + "crystal-wasm.name": { + "translation": "Crystal (Wasm)" + }, "csharpWasm.desc": { "translation": "WebAssembly-তে চলমান C# কম্পাইলার, Blazor ব্যবহার করে" }, @@ -201,6 +210,15 @@ "d-wasm.name": { "translation": "D (Wasm)" }, + "dart.desc": { + "translation": "Dart-কে Dart দলের ক্লায়েন্ট-সাইড টুলচেইন (DDC) দ্বারা JavaScript-এ কম্পাইল করা হয় — যেটি DartPad চালায় — এবং এটি সম্পূর্ণভাবে ব্রাউজারে চলে। এরপর কম্পাইল করা বান্ডেলটি ফলাফল পৃষ্ঠায় চলে। কোনো সার্ভার জড়িত নয়।" + }, + "dart.link": { + "translation": " Dart অফিসিয়াল ওয়েবসাইট Dart ডকুমেন্টেশন DartPad লাইভকোড ডকুমেন্টেশন স্টার্টার টেমপ্লেট লোড করুন " + }, + "dart.name": { + "translation": "Dart" + }, "diagrams.desc1": { "translation": "(পরীক্ষামূলক)" }, @@ -279,6 +297,15 @@ "flow.name": { "translation": "Flow" }, + "flutter.desc": { + "translation": "Flutter-কে Dart-এর মতো একই ক্লায়েন্ট-সাইড টুলচেইন দিয়ে JavaScript-এ কম্পাইল করা হয়, এবং এরপর Flutter ইঞ্জিন ফলাফল পৃষ্ঠায় বুট হয়, যেখানে অ্যাপটি রেন্ডার হয়। কোনো সার্ভার জড়িত নয়।" + }, + "flutter.link": { + "translation": " Flutter অফিসিয়াল ওয়েবসাইট Flutter ডকুমেন্টেশন উইজেটের পরিচিতি লাইভকোড ডকুমেন্টেশন স্টার্টার টেমপ্লেট লোড করুন " + }, + "flutter.name": { + "translation": "Flutter" + }, "fortran-wasm.desc": { "translation": "আধুনিক Fortran LFortran দ্বারা WebAssembly-তে কম্পাইল করা হয় এবং সম্পূর্ণভাবে ব্রাউজারে চলে।" }, diff --git a/src/livecodes/i18n/locales/bn/language-info.ts b/src/livecodes/i18n/locales/bn/language-info.ts index 4402c8a2a..f0ae31539 100644 --- a/src/livecodes/i18n/locales/bn/language-info.ts +++ b/src/livecodes/i18n/locales/bn/language-info.ts @@ -106,6 +106,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Standard C++ Foundation <3> <4>Clang অফিসিয়াল ওয়েবসাইট <5> <6>Y মিনিটে X শিখুন, যেখানে X=C++ <7> <8>লাইভকোডস ডকুমেন্টেশন <9> <10>স্টার্টার টেমপ্লেট লোড করুন ', name: 'C++ (Wasm)', }, + 'crystal-wasm': { + desc: 'Crystal-এর নিজস্ব কম্পাইলার, WebAssembly-তে কম্পাইল করা — LLVM-এর লিঙ্কার এবং যে WASI sysroot-এর সাথে এটি লিঙ্ক করে, তা সহ — সম্পূর্ণভাবে ব্রাউজারে চলে।', + link: '<1> <2>Crystal অফিসিয়াল ওয়েবসাইট <3> <4>Crystal ভাষার রেফারেন্স <5> <6>স্ট্যান্ডার্ড লাইব্রেরি API <7> <8>Y মিনিটে X শিখুন, যেখানে X=Crystal <9> <10>লাইভকোড ডকুমেন্টেশন <11> <12>স্টার্টার টেমপ্লেট লোড করুন ', + name: 'Crystal (Wasm)', + }, csharpWasm: { desc: 'WebAssembly-তে চলমান C# কম্পাইলার, <1>Blazor ব্যবহার করে', link: '<1> <2>C# ভাষা ডকুমেন্টেশন <3> <4>Y মিনিটে X শিখুন, যেখানে X=C# <5> <6>LiveCodes ডকুমেন্টেশন <7> <8>স্টার্টার টেমপ্লেট লোড করুন ', @@ -116,6 +121,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>D অফিসিয়াল ওয়েবসাইট <3> <4>D ভাষা স্পেসিফিকেশন <5> <6>D ভাষা ট্যুর <7> <8>Y মিনিটে X শিখুন, যেখানে X=D <9> <10>লাইভকোডস ডকুমেন্টেশন <11> <12>স্টার্টার টেমপ্লেট লোড করুন ', name: 'D (Wasm)', }, + dart: { + desc: 'Dart-কে Dart দলের ক্লায়েন্ট-সাইড টুলচেইন (DDC) দ্বারা JavaScript-এ কম্পাইল করা হয় — যেটি DartPad চালায় — এবং এটি সম্পূর্ণভাবে ব্রাউজারে চলে। এরপর কম্পাইল করা বান্ডেলটি ফলাফল পৃষ্ঠায় চলে। কোনো সার্ভার জড়িত নয়।', + link: '<1> <2>Dart অফিসিয়াল ওয়েবসাইট <3> <4>Dart ডকুমেন্টেশন <5> <6>DartPad <7> <8>লাইভকোড ডকুমেন্টেশন <9> <10>স্টার্টার টেমপ্লেট লোড করুন ', + name: 'Dart', + }, diagrams: { desc1: '(পরীক্ষামূলক)', desc2: 'কোড-হিসাবে-ডায়াগ্রাম। সমর্থন করে:', @@ -159,6 +169,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Flow অফিসিয়াল ওয়েবসাইট <3> <4>Flow ডকুমেন্টেশন ', name: 'Flow', }, + flutter: { + desc: 'Flutter-কে Dart-এর মতো একই ক্লায়েন্ট-সাইড টুলচেইন দিয়ে JavaScript-এ কম্পাইল করা হয়, এবং এরপর Flutter ইঞ্জিন ফলাফল পৃষ্ঠায় বুট হয়, যেখানে অ্যাপটি রেন্ডার হয়। কোনো সার্ভার জড়িত নয়।', + link: '<1> <2>Flutter অফিসিয়াল ওয়েবসাইট <3> <4>Flutter ডকুমেন্টেশন <5> <6>উইজেটের পরিচিতি <7> <8>লাইভকোড ডকুমেন্টেশন <9> <10>স্টার্টার টেমপ্লেট লোড করুন ', + name: 'Flutter', + }, 'fortran-wasm': { desc: 'আধুনিক Fortran <1>LFortran দ্বারা WebAssembly-তে কম্পাইল করা হয় এবং সম্পূর্ণভাবে ব্রাউজারে চলে।', link: '<1> <2>Fortran শিখুন <3> <4>LFortran অফিসিয়াল ওয়েবসাইট <5> <6>Fortran ভাষার ওয়েবসাইট <7> <8>Y মিনিটে X শিখুন, যেখানে X=Fortran <9> <10>লাইভকোডস ডকুমেন্টেশন <11> <12>স্টার্টার টেমপ্লেট লোড করুন ', diff --git a/src/livecodes/i18n/locales/bn/translation.lokalise.json b/src/livecodes/i18n/locales/bn/translation.lokalise.json index b6d713166..399c42872 100644 --- a/src/livecodes/i18n/locales/bn/translation.lokalise.json +++ b/src/livecodes/i18n/locales/bn/translation.lokalise.json @@ -1968,6 +1968,9 @@ "templates.starter.cpp-wasm": { "translation": "C++ (Wasm) স্টার্টার" }, + "templates.starter.crystal-wasm": { + "translation": "Crystal স্টার্টার" + }, "templates.starter.csharp-wasm": { "translation": "C# (Wasm) স্টার্টার" }, @@ -1980,6 +1983,9 @@ "templates.starter.daisyui": { "translation": "daisyUI স্টার্টার" }, + "templates.starter.dart": { + "translation": "Dart স্টার্টার" + }, "templates.starter.diagrams": { "translation": "Diagrams স্টার্টার" }, @@ -1992,6 +1998,9 @@ "templates.starter.fennel": { "translation": "Fennel স্টার্টার" }, + "templates.starter.flutter": { + "translation": "Flutter স্টার্টার" + }, "templates.starter.fortran-wasm": { "translation": "Fortran স্টার্টার" }, diff --git a/src/livecodes/i18n/locales/bn/translation.ts b/src/livecodes/i18n/locales/bn/translation.ts index 6acfc6e34..ea98bf61e 100644 --- a/src/livecodes/i18n/locales/bn/translation.ts +++ b/src/livecodes/i18n/locales/bn/translation.ts @@ -995,14 +995,17 @@ const translation: I18nTranslation = { commonlisp: 'Common Lisp স্টার্টার', cpp: 'C++ স্টার্টার', 'cpp-wasm': 'C++ (Wasm) স্টার্টার', + 'crystal-wasm': 'Crystal স্টার্টার', 'csharp-wasm': 'C# (Wasm) স্টার্টার', 'd-wasm': 'D স্টার্টার', d3: 'D3 স্টার্টার', daisyui: 'daisyUI স্টার্টার', + dart: 'Dart স্টার্টার', diagrams: 'Diagrams স্টার্টার', elm: 'Elm স্টার্টার', fanak: 'Fanak স্টার্টার', fennel: 'Fennel স্টার্টার', + flutter: 'Flutter স্টার্টার', 'fortran-wasm': 'Fortran স্টার্টার', fsharp: 'F# স্টার্টার', 'fsharp-wasm': 'F# (Wasm) স্টার্টার', diff --git a/src/livecodes/i18n/locales/de/language-info.lokalise.json b/src/livecodes/i18n/locales/de/language-info.lokalise.json index d0cf8bfaa..f4ecb0537 100644 --- a/src/livecodes/i18n/locales/de/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/de/language-info.lokalise.json @@ -183,6 +183,15 @@ "cppWasm.name": { "translation": "C++ (Wasm)" }, + "crystal-wasm.desc": { + "translation": "Crystals eigener Compiler, zu WebAssembly kompiliert — mit LLVMs Linker und dem WASI-Sysroot, gegen das er linkt — läuft vollständig im Browser." + }, + "crystal-wasm.link": { + "translation": " Offizielle Website von Crystal Crystal-Sprachreferenz Standardbibliothek-API Lerne X in Y Minuten, wobei X = Crystal LiveCodes-Dokumentation Startervorlage laden " + }, + "crystal-wasm.name": { + "translation": "Crystal (Wasm)" + }, "csharpWasm.desc": { "translation": "C#-Compiler, der auf WebAssembly läuft, unter Verwendung von Blazor" }, @@ -201,6 +210,15 @@ "d-wasm.name": { "translation": "D (Wasm)" }, + "dart.desc": { + "translation": "Dart wird von der clientseitigen Toolchain des Dart-Teams (DDC) zu JavaScript kompiliert — derselben, die DartPad antreibt — und läuft vollständig im Browser. Das kompilierte Bundle läuft dann auf der Ergebnisseite. Es ist kein Server beteiligt." + }, + "dart.link": { + "translation": " Offizielle Website von Dart Dart-Dokumentation DartPad LiveCodes-Dokumentation Startervorlage laden " + }, + "dart.name": { + "translation": "Dart" + }, "diagrams.desc1": { "translation": "(Experimentell)" }, @@ -279,6 +297,15 @@ "flow.name": { "translation": "Flow" }, + "flutter.desc": { + "translation": "Flutter wird mit derselben clientseitigen Toolchain wie Dart zu JavaScript kompiliert, und die Flutter-Engine wird dann auf der Ergebnisseite gestartet, wo die App gerendert wird. Es ist kein Server beteiligt." + }, + "flutter.link": { + "translation": " Offizielle Website von Flutter Flutter-Dokumentation Einführung in Widgets LiveCodes-Dokumentation Startervorlage laden " + }, + "flutter.name": { + "translation": "Flutter" + }, "fortran-wasm.desc": { "translation": "Modernes Fortran wird von LFortran nach WebAssembly kompiliert und läuft vollständig im Browser." }, diff --git a/src/livecodes/i18n/locales/de/language-info.ts b/src/livecodes/i18n/locales/de/language-info.ts index 6bf452354..758e63a9f 100644 --- a/src/livecodes/i18n/locales/de/language-info.ts +++ b/src/livecodes/i18n/locales/de/language-info.ts @@ -108,6 +108,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Standard C++ Foundation <3> <4>Clang offizielle Website <5> <6>Lerne X in Y Minuten, wobei X=C++ <7> <8>LiveCodes-Dokumentation <9> <10>Starter-Vorlage laden ', name: 'C++ (Wasm)', }, + 'crystal-wasm': { + desc: 'Crystals eigener Compiler, zu WebAssembly kompiliert — mit LLVMs Linker und dem WASI-Sysroot, gegen das er linkt — läuft vollständig im Browser.', + link: '<1> <2>Offizielle Website von Crystal <3> <4>Crystal-Sprachreferenz <5> <6>Standardbibliothek-API <7> <8>Lerne X in Y Minuten, wobei X = Crystal <9> <10>LiveCodes-Dokumentation <11> <12>Startervorlage laden ', + name: 'Crystal (Wasm)', + }, csharpWasm: { desc: 'C#-Compiler, der auf WebAssembly läuft, unter Verwendung von <1>Blazor', link: '<1> <2>Dokumentation der Sprache C# <3> <4> Lernen Sie X in Y Minuten, wobei X=C# <5> <6> LiveCodes Dokumentation <7> <8> Laden Sie die Startvorlage ', @@ -118,6 +123,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Offizielle Website von D <3> <4>D-Sprachspezifikation <5> <6>D Sprachführung <7> <8>Lerne X in Y Minuten, wobei X = D <9> <10>LiveCodes-Dokumentation <11> <12>Startervorlage laden ', name: 'D (Wasm)', }, + dart: { + desc: 'Dart wird von der clientseitigen Toolchain des Dart-Teams (DDC) zu JavaScript kompiliert — derselben, die DartPad antreibt — und läuft vollständig im Browser. Das kompilierte Bundle läuft dann auf der Ergebnisseite. Es ist kein Server beteiligt.', + link: '<1> <2>Offizielle Website von Dart <3> <4>Dart-Dokumentation <5> <6>DartPad <7> <8>LiveCodes-Dokumentation <9> <10>Startervorlage laden ', + name: 'Dart', + }, diagrams: { desc1: '(Experimentell)', desc2: 'Diagramme als Code. Unterstützt:', @@ -161,6 +171,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Flow offizielle Website <3> <4>Flow Dokumentation ', name: 'Flow', }, + flutter: { + desc: 'Flutter wird mit derselben clientseitigen Toolchain wie Dart zu JavaScript kompiliert, und die Flutter-Engine wird dann auf der Ergebnisseite gestartet, wo die App gerendert wird. Es ist kein Server beteiligt.', + link: '<1> <2>Offizielle Website von Flutter <3> <4>Flutter-Dokumentation <5> <6>Einführung in Widgets <7> <8>LiveCodes-Dokumentation <9> <10>Startervorlage laden ', + name: 'Flutter', + }, 'fortran-wasm': { desc: 'Modernes Fortran wird von <1>LFortran nach WebAssembly kompiliert und läuft vollständig im Browser.', link: '<1> <2>Fortran lernen <3> <4>Offizielle Website von LFortran <5> <6>Website der Sprache Fortran <7> <8>Lerne X in Y Minuten, wobei X = Fortran <9> <10>LiveCodes-Dokumentation <11> <12>Startervorlage laden ', diff --git a/src/livecodes/i18n/locales/de/translation.lokalise.json b/src/livecodes/i18n/locales/de/translation.lokalise.json index 1ced5a132..002b69396 100644 --- a/src/livecodes/i18n/locales/de/translation.lokalise.json +++ b/src/livecodes/i18n/locales/de/translation.lokalise.json @@ -1968,6 +1968,9 @@ "templates.starter.cpp-wasm": { "translation": "C++ (Wasm)-Starter" }, + "templates.starter.crystal-wasm": { + "translation": "Crystal-Starter" + }, "templates.starter.csharp-wasm": { "translation": "C# (Wasm)-Starter" }, @@ -1980,6 +1983,9 @@ "templates.starter.daisyui": { "translation": "daisyUI-Starter" }, + "templates.starter.dart": { + "translation": "Dart-Starter" + }, "templates.starter.diagrams": { "translation": "Diagramm-Starter" }, @@ -1992,6 +1998,9 @@ "templates.starter.fennel": { "translation": "Fennel-Starter" }, + "templates.starter.flutter": { + "translation": "Flutter-Starter" + }, "templates.starter.fortran-wasm": { "translation": "Fortran-Starter" }, diff --git a/src/livecodes/i18n/locales/de/translation.ts b/src/livecodes/i18n/locales/de/translation.ts index c9a63f703..3fe84fc63 100644 --- a/src/livecodes/i18n/locales/de/translation.ts +++ b/src/livecodes/i18n/locales/de/translation.ts @@ -997,14 +997,17 @@ const translation: I18nTranslation = { commonlisp: 'Common Lisp-Starter', cpp: 'C++-Starter', 'cpp-wasm': 'C++ (Wasm)-Starter', + 'crystal-wasm': 'Crystal-Starter', 'csharp-wasm': 'C# (Wasm)-Starter', 'd-wasm': 'D-Starter', d3: 'D3-Starter', daisyui: 'daisyUI-Starter', + dart: 'Dart-Starter', diagrams: 'Diagramm-Starter', elm: 'Elm-Starter', fanak: 'Fanak-Starter', fennel: 'Fennel-Starter', + flutter: 'Flutter-Starter', 'fortran-wasm': 'Fortran-Starter', fsharp: 'F# -Starter', 'fsharp-wasm': 'F# (Wasm)-Starter', diff --git a/src/livecodes/i18n/locales/en/language-info.lokalise.json b/src/livecodes/i18n/locales/en/language-info.lokalise.json index 801bb3959..68bdba159 100644 --- a/src/livecodes/i18n/locales/en/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/en/language-info.lokalise.json @@ -244,6 +244,18 @@ "notes": "", "translation": "C++ (Wasm)" }, + "crystal-wasm.desc": { + "notes": "", + "translation": "Crystal's own compiler, compiled to WebAssembly — with LLVM's linker and the WASI sysroot it links against — running entirely in the browser." + }, + "crystal-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", + "translation": " Crystal official website Crystal language reference Standard library API Learn X in Y minutes, where X=Crystal LiveCodes Documentation Load starter template " + }, + "crystal-wasm.name": { + "notes": "", + "translation": "Crystal (Wasm)" + }, "csharpWasm.desc": { "notes": "### ###\n\n\n", "translation": "C# compiler running on WebAssembly, using Blazor" diff --git a/src/livecodes/i18n/locales/en/language-info.ts b/src/livecodes/i18n/locales/en/language-info.ts index 43bded72d..264ee1389 100644 --- a/src/livecodes/i18n/locales/en/language-info.ts +++ b/src/livecodes/i18n/locales/en/language-info.ts @@ -114,6 +114,11 @@ const languageInfo = { link: '<1> <2>Standard C++ Foundation <3> <4>Clang official website <5> <6>Learn X in Y minutes, where X=C++ <7> <8>LiveCodes Documentation <9> <10>Load starter template ', name: 'C++ (Wasm)', }, + 'crystal-wasm': { + desc: "Crystal's own compiler, compiled to WebAssembly — with LLVM's linker and the WASI sysroot it links against — running entirely in the browser.", + link: '<1> <2>Crystal official website <3> <4>Crystal language reference <5> <6>Standard library API <7> <8>Learn X in Y minutes, where X=Crystal <9> <10>LiveCodes Documentation <11> <12>Load starter template ', + name: 'Crystal (Wasm)', + }, csharpWasm: { desc: 'C# compiler running on WebAssembly, using <1>Blazor', link: '<1> <2>C# language documentation <3> <4>Learn X in Y minutes, where X=C# <5> <6>LiveCodes Documentation <7> <8>Load starter template ', diff --git a/src/livecodes/i18n/locales/en/translation.lokalise.json b/src/livecodes/i18n/locales/en/translation.lokalise.json index 9518caf0b..d708490d5 100644 --- a/src/livecodes/i18n/locales/en/translation.lokalise.json +++ b/src/livecodes/i18n/locales/en/translation.lokalise.json @@ -2624,6 +2624,10 @@ "notes": "", "translation": "C++ (Wasm) Starter" }, + "templates.starter.crystal-wasm": { + "notes": "", + "translation": "Crystal Starter" + }, "templates.starter.csharp-wasm": { "notes": "", "translation": "C# (Wasm) Starter" diff --git a/src/livecodes/i18n/locales/en/translation.ts b/src/livecodes/i18n/locales/en/translation.ts index 30269ed0f..3b50c8ef8 100644 --- a/src/livecodes/i18n/locales/en/translation.ts +++ b/src/livecodes/i18n/locales/en/translation.ts @@ -1002,6 +1002,7 @@ const translation = { commonlisp: 'Common Lisp Starter', cpp: 'C++ Starter', 'cpp-wasm': 'C++ (Wasm) Starter', + 'crystal-wasm': 'Crystal Starter', 'csharp-wasm': 'C# (Wasm) Starter', 'd-wasm': 'D Starter', d3: 'D3 Starter', diff --git a/src/livecodes/i18n/locales/es/language-info.lokalise.json b/src/livecodes/i18n/locales/es/language-info.lokalise.json index b6836edd4..0a024157b 100644 --- a/src/livecodes/i18n/locales/es/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/es/language-info.lokalise.json @@ -183,6 +183,15 @@ "cppWasm.name": { "translation": "C++ (Wasm)" }, + "crystal-wasm.desc": { + "translation": "El propio compilador de Crystal, compilado a WebAssembly — con el enlazador de LLVM y el sysroot de WASI contra el que enlaza — ejecutándose íntegramente en el navegador." + }, + "crystal-wasm.link": { + "translation": " Página web oficial de Crystal Referencia del lenguaje Crystal API de la biblioteca estándar Aprende X en Y minutos, donde X = Crystal Documentación de LiveCodes Cargar plantilla de inicio " + }, + "crystal-wasm.name": { + "translation": "Crystal (Wasm)" + }, "csharpWasm.desc": { "translation": "Compilador de C# que funciona con WebAssembly, utilizando Blazor" }, @@ -201,6 +210,15 @@ "d-wasm.name": { "translation": "D (Wasm)" }, + "dart.desc": { + "translation": "Dart se compila a JavaScript mediante la cadena de herramientas del lado del cliente del equipo de Dart (DDC) — la misma que impulsa DartPad — ejecutándose íntegramente en el navegador. El paquete compilado se ejecuta entonces en la página de resultados. No interviene ningún servidor." + }, + "dart.link": { + "translation": " Página web oficial de Dart Documentación de Dart DartPad Documentación de LiveCodes Cargar plantilla de inicio " + }, + "dart.name": { + "translation": "Dart" + }, "diagrams.desc1": { "translation": "(Experimental)" }, @@ -279,6 +297,15 @@ "flow.name": { "translation": "Flow" }, + "flutter.desc": { + "translation": "Flutter se compila a JavaScript con la misma cadena de herramientas del lado del cliente que Dart, y el motor de Flutter se inicia luego en la página de resultados, donde se renderiza la aplicación. No interviene ningún servidor." + }, + "flutter.link": { + "translation": " Página web oficial de Flutter Documentación de Flutter Introducción a los widgets Documentación de LiveCodes Cargar plantilla de inicio " + }, + "flutter.name": { + "translation": "Flutter" + }, "fortran-wasm.desc": { "translation": "Fortran moderno compilado a WebAssembly por LFortran, ejecutándose íntegramente en el navegador." }, diff --git a/src/livecodes/i18n/locales/es/language-info.ts b/src/livecodes/i18n/locales/es/language-info.ts index 893967780..7a472980e 100644 --- a/src/livecodes/i18n/locales/es/language-info.ts +++ b/src/livecodes/i18n/locales/es/language-info.ts @@ -107,6 +107,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Fundación Standard C++ <3> <4>Sitio web oficial de Clang <5> <6>Aprende X en Y minutos, donde X=C++ <7> <8>Documentación de LiveCodes <9> <10>Cargar plantilla inicial ', name: 'C++ (Wasm)', }, + 'crystal-wasm': { + desc: 'El propio compilador de Crystal, compilado a WebAssembly — con el enlazador de LLVM y el sysroot de WASI contra el que enlaza — ejecutándose íntegramente en el navegador.', + link: '<1> <2>Página web oficial de Crystal <3> <4>Referencia del lenguaje Crystal <5> <6>API de la biblioteca estándar <7> <8>Aprende X en Y minutos, donde X = Crystal <9> <10>Documentación de LiveCodes <11> <12>Cargar plantilla de inicio ', + name: 'Crystal (Wasm)', + }, csharpWasm: { desc: 'Compilador de C# que funciona con WebAssembly, utilizando <1>Blazor', link: '<1> <2>Documentación del lenguaje C# <3> <4> Aprenda X en Y minutos, donde X=C# <5> <6> Documentación de LiveCodes <7> <8> Cargue la plantilla de inicio ', @@ -117,6 +122,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Página web oficial de D <3> <4>Especificación del lenguaje D <5> <6>Tour del lenguaje D <7> <8>Aprende X en Y minutos, donde X = D <9> <10>Documentación de LiveCodes <11> <12>Cargar plantilla de inicio ', name: 'D (Wasm)', }, + dart: { + desc: 'Dart se compila a JavaScript mediante la cadena de herramientas del lado del cliente del equipo de Dart (DDC) — la misma que impulsa DartPad — ejecutándose íntegramente en el navegador. El paquete compilado se ejecuta entonces en la página de resultados. No interviene ningún servidor.', + link: '<1> <2>Página web oficial de Dart <3> <4>Documentación de Dart <5> <6>DartPad <7> <8>Documentación de LiveCodes <9> <10>Cargar plantilla de inicio ', + name: 'Dart', + }, diagrams: { desc1: '(Experimental)', desc2: 'Diagramas como código. Soporta:', @@ -160,6 +170,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Sitio web oficial de Flow <3> <4>Documentación de Flow ', name: 'Flow', }, + flutter: { + desc: 'Flutter se compila a JavaScript con la misma cadena de herramientas del lado del cliente que Dart, y el motor de Flutter se inicia luego en la página de resultados, donde se renderiza la aplicación. No interviene ningún servidor.', + link: '<1> <2>Página web oficial de Flutter <3> <4>Documentación de Flutter <5> <6>Introducción a los widgets <7> <8>Documentación de LiveCodes <9> <10>Cargar plantilla de inicio ', + name: 'Flutter', + }, 'fortran-wasm': { desc: 'Fortran moderno compilado a WebAssembly por <1>LFortran, ejecutándose íntegramente en el navegador.', link: '<1> <2>Aprender Fortran <3> <4>Página web oficial de LFortran <5> <6>Sitio web del lenguaje Fortran <7> <8>Aprende X en Y minutos, donde X = Fortran <9> <10>Documentación de LiveCodes <11> <12>Cargar plantilla de inicio ', diff --git a/src/livecodes/i18n/locales/es/translation.lokalise.json b/src/livecodes/i18n/locales/es/translation.lokalise.json index 6952ed5cb..7bd6c2b28 100644 --- a/src/livecodes/i18n/locales/es/translation.lokalise.json +++ b/src/livecodes/i18n/locales/es/translation.lokalise.json @@ -1968,6 +1968,9 @@ "templates.starter.cpp-wasm": { "translation": "Inicio C++ (Wasm)" }, + "templates.starter.crystal-wasm": { + "translation": "Inicio Crystal" + }, "templates.starter.csharp-wasm": { "translation": "Inicio C# (Wasm)" }, @@ -1980,6 +1983,9 @@ "templates.starter.daisyui": { "translation": "Inicio daisyUI" }, + "templates.starter.dart": { + "translation": "Inicio Dart" + }, "templates.starter.diagrams": { "translation": "Inicio Diagramas" }, @@ -1992,6 +1998,9 @@ "templates.starter.fennel": { "translation": "Inicio Fennel" }, + "templates.starter.flutter": { + "translation": "Inicio Flutter" + }, "templates.starter.fortran-wasm": { "translation": "Inicio Fortran" }, diff --git a/src/livecodes/i18n/locales/es/translation.ts b/src/livecodes/i18n/locales/es/translation.ts index beb2e5a3d..8cc9413d3 100644 --- a/src/livecodes/i18n/locales/es/translation.ts +++ b/src/livecodes/i18n/locales/es/translation.ts @@ -995,14 +995,17 @@ const translation: I18nTranslation = { commonlisp: 'Inicio Common Lisp', cpp: 'Inicio C++', 'cpp-wasm': 'Inicio C++ (Wasm)', + 'crystal-wasm': 'Inicio Crystal', 'csharp-wasm': 'Inicio C# (Wasm)', 'd-wasm': 'Inicio D', d3: 'Inicio D3', daisyui: 'Inicio daisyUI', + dart: 'Inicio Dart', diagrams: 'Inicio Diagramas', elm: 'Inicio Elm', fanak: 'Inicio Fanak', fennel: 'Inicio Fennel', + flutter: 'Inicio Flutter', 'fortran-wasm': 'Inicio Fortran', fsharp: 'Inicio F#', 'fsharp-wasm': 'Inicio F# (Wasm)', diff --git a/src/livecodes/i18n/locales/fa/language-info.lokalise.json b/src/livecodes/i18n/locales/fa/language-info.lokalise.json index ad65cc88a..c92e3324b 100644 --- a/src/livecodes/i18n/locales/fa/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/fa/language-info.lokalise.json @@ -183,6 +183,15 @@ "cppWasm.name": { "translation": "C++ (Wasm)" }, + "crystal-wasm.desc": { + "translation": "کامپایلر اختصاصی Crystal، که به WebAssembly کامپایل شده — همراه با پیونددهنده LLVM و sysroot WASI که به آن پیوند می‌خورد — کاملاً در مرورگر اجرا می‌شود." + }, + "crystal-wasm.link": { + "translation": " وب‌سایت رسمی Crystal مرجع زبان Crystal API کتابخانه استاندارد یادگیری X در Y دقیقه، که X=Crystal مستندات LiveCodes بارگیری قالب شروع " + }, + "crystal-wasm.name": { + "translation": "Crystal (Wasm)" + }, "csharpWasm.desc": { "translation": "کامپایلر #C که روی WebAssembly اجرا می‌شود، با استفاده از Blazor" }, @@ -201,6 +210,15 @@ "d-wasm.name": { "translation": "D (Wasm)" }, + "dart.desc": { + "translation": "Dart توسط زنجیره ابزار سمت کلاینت تیم Dart (DDC) — همان که DartPad را اجرا می‌کند — به JavaScript کامپایل می‌شود و کاملاً در مرورگر اجرا می‌شود. سپس بسته کامپایل‌شده در صفحه نتیجه اجرا می‌شود. هیچ سروری دخیل نیست." + }, + "dart.link": { + "translation": " وب‌سایت رسمی Dart اسناد Dart DartPad مستندات LiveCodes بارگیری قالب شروع " + }, + "dart.name": { + "translation": "Dart" + }, "diagrams.desc1": { "translation": "(آزمایشی)" }, @@ -279,6 +297,15 @@ "flow.name": { "translation": "Flow" }, + "flutter.desc": { + "translation": "Flutter با همان زنجیره ابزار سمت کلاینتی که Dart استفاده می‌کند به JavaScript کامپایل می‌شود، و سپس موتور Flutter در صفحه نتیجه راه‌اندازی می‌شود، جایی که برنامه رندر می‌شود. هیچ سروری دخیل نیست." + }, + "flutter.link": { + "translation": " وب‌سایت رسمی Flutter اسناد Flutter مقدمه‌ای بر ویجت‌ها مستندات LiveCodes بارگیری قالب شروع " + }, + "flutter.name": { + "translation": "Flutter" + }, "fortran-wasm.desc": { "translation": "فورتران مدرن توسط LFortran به WebAssembly کامپایل می‌شود و کاملاً در مرورگر اجرا می‌شود." }, diff --git a/src/livecodes/i18n/locales/fa/language-info.ts b/src/livecodes/i18n/locales/fa/language-info.ts index 7c7695ade..cdfbb48af 100644 --- a/src/livecodes/i18n/locales/fa/language-info.ts +++ b/src/livecodes/i18n/locales/fa/language-info.ts @@ -107,6 +107,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>بنیاد استاندارد ++C <3> <4>وب‌سایت رسمی Clang <5> <6>یادگیری X در Y دقیقه، جایی که X=C++ <7> <8>مستندات لایوکدز <9> <10>بارگذاری قالب شروع کننده ', name: 'C++ (Wasm)', }, + 'crystal-wasm': { + desc: 'کامپایلر اختصاصی Crystal، که به WebAssembly کامپایل شده — همراه با پیونددهنده LLVM و sysroot WASI که به آن پیوند می‌خورد — کاملاً در مرورگر اجرا می‌شود.', + link: '<1> <2>وب‌سایت رسمی Crystal <3> <4>مرجع زبان Crystal <5> <6>API کتابخانه استاندارد <7> <8>یادگیری X در Y دقیقه، که X=Crystal <9> <10>مستندات LiveCodes <11> <12>بارگیری قالب شروع ', + name: 'Crystal (Wasm)', + }, csharpWasm: { desc: 'کامپایلر #C که روی WebAssembly اجرا می‌شود، با استفاده از <1>Blazor', link: '<1> <2>مستندات زبان #C <3> <4>یادگیری X در Y دقیقه، جایی که X=C# <5> <6>مستندات LiveCodes <7> <8>بارگذاری قالب شروع کننده ', @@ -117,6 +122,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>وب‌سایت رسمی D <3> <4>مشخصات زبان D <5> <6>تور زبان D <7> <8>یادگیری X در Y دقیقه، که X=D <9> <10>مستندات لایوکدز <11> <12>بارگذاری قالب شروع ', name: 'D (Wasm)', }, + dart: { + desc: 'Dart توسط زنجیره ابزار سمت کلاینت تیم Dart (DDC) — همان که DartPad را اجرا می‌کند — به JavaScript کامپایل می‌شود و کاملاً در مرورگر اجرا می‌شود. سپس بسته کامپایل‌شده در صفحه نتیجه اجرا می‌شود. هیچ سروری دخیل نیست.', + link: '<1> <2>وب‌سایت رسمی Dart <3> <4>اسناد Dart <5> <6>DartPad <7> <8>مستندات LiveCodes <9> <10>بارگیری قالب شروع ', + name: 'Dart', + }, diagrams: { desc1: '(آزمایشی)', desc2: 'نمودارها به صورت کد. پشتیبانی از:', @@ -160,6 +170,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>وب‌سایت رسمی Flow <3> <4>مستندات Flow ', name: 'Flow', }, + flutter: { + desc: 'Flutter با همان زنجیره ابزار سمت کلاینتی که Dart استفاده می‌کند به JavaScript کامپایل می‌شود، و سپس موتور Flutter در صفحه نتیجه راه‌اندازی می‌شود، جایی که برنامه رندر می‌شود. هیچ سروری دخیل نیست.', + link: '<1> <2>وب‌سایت رسمی Flutter <3> <4>اسناد Flutter <5> <6>مقدمه‌ای بر ویجت‌ها <7> <8>مستندات LiveCodes <9> <10>بارگیری قالب شروع ', + name: 'Flutter', + }, 'fortran-wasm': { desc: 'فورتران مدرن توسط <1>LFortran به WebAssembly کامپایل می‌شود و کاملاً در مرورگر اجرا می‌شود.', link: '<1> <2>یادگیری Fortran <3> <4>وبسایت رسمی LFortran <5> <6>وبسایت زبان Fortran <7> <8>یادگیری X در Y دقیقه، که X=Fortran <9> <10>مستندات لایوکدز <11> <12>بارگذاری قالب شروع ', diff --git a/src/livecodes/i18n/locales/fa/translation.lokalise.json b/src/livecodes/i18n/locales/fa/translation.lokalise.json index 9bc68e397..80eb9246d 100644 --- a/src/livecodes/i18n/locales/fa/translation.lokalise.json +++ b/src/livecodes/i18n/locales/fa/translation.lokalise.json @@ -1968,6 +1968,9 @@ "templates.starter.cpp-wasm": { "translation": "شروع کننده C++ (Wasm)" }, + "templates.starter.crystal-wasm": { + "translation": "شروع کننده Crystal" + }, "templates.starter.csharp-wasm": { "translation": "شروع کننده C# (Wasm)" }, @@ -1980,6 +1983,9 @@ "templates.starter.daisyui": { "translation": "شروع کننده daisyUI" }, + "templates.starter.dart": { + "translation": "شروع کننده Dart" + }, "templates.starter.diagrams": { "translation": "شروع کننده نمودارها" }, @@ -1992,6 +1998,9 @@ "templates.starter.fennel": { "translation": "شروع کننده Fennel" }, + "templates.starter.flutter": { + "translation": "شروع کننده Flutter" + }, "templates.starter.fortran-wasm": { "translation": "شروع کننده Fortran" }, diff --git a/src/livecodes/i18n/locales/fa/translation.ts b/src/livecodes/i18n/locales/fa/translation.ts index 40ea1e79f..ae20c53f2 100644 --- a/src/livecodes/i18n/locales/fa/translation.ts +++ b/src/livecodes/i18n/locales/fa/translation.ts @@ -996,14 +996,17 @@ const translation: I18nTranslation = { commonlisp: 'شروع کننده Common Lisp', cpp: 'شروع کننده C++', 'cpp-wasm': 'شروع کننده C++ (Wasm)', + 'crystal-wasm': 'شروع کننده Crystal', 'csharp-wasm': 'شروع کننده C# (Wasm)', 'd-wasm': 'شروع کننده D', d3: 'شروع کننده D3', daisyui: 'شروع کننده daisyUI', + dart: 'شروع کننده Dart', diagrams: 'شروع کننده نمودارها', elm: 'شروع کننده Elm', fanak: 'شروع کننده Fanak', fennel: 'شروع کننده Fennel', + flutter: 'شروع کننده Flutter', 'fortran-wasm': 'شروع کننده Fortran', fsharp: 'شروع کننده F#', 'fsharp-wasm': 'شروع کننده F# (Wasm)', diff --git a/src/livecodes/i18n/locales/fr/language-info.lokalise.json b/src/livecodes/i18n/locales/fr/language-info.lokalise.json index c1ff8041e..2a281d85c 100644 --- a/src/livecodes/i18n/locales/fr/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/fr/language-info.lokalise.json @@ -183,6 +183,15 @@ "cppWasm.name": { "translation": "C++ (Wasm)" }, + "crystal-wasm.desc": { + "translation": "Le compilateur propre à Crystal, compilé en WebAssembly — avec l'éditeur de liens de LLVM et le sysroot WASI auquel il se lie — s'exécutant entièrement dans le navigateur." + }, + "crystal-wasm.link": { + "translation": " Site officiel de Crystal Référence du langage Crystal API de la bibliothèque standard Apprenez X en Y minutes, où X = Crystal Documentation LiveCodes Charger un modèle de démarrage " + }, + "crystal-wasm.name": { + "translation": "Crystal (Wasm)" + }, "csharpWasm.desc": { "translation": "Compilateur C# fonctionnant sur WebAssembly, utilisant Blazor" }, @@ -201,6 +210,15 @@ "d-wasm.name": { "translation": "D (Wasm)" }, + "dart.desc": { + "translation": "Dart est compilé en JavaScript par la chaîne d'outils côté client de l'équipe Dart (DDC) — celle-là même qui alimente DartPad — s'exécutant entièrement dans le navigateur. Le paquet compilé s'exécute ensuite dans la page de résultat. Aucun serveur n'est impliqué." + }, + "dart.link": { + "translation": " Site officiel de Dart Documentation Dart DartPad Documentation LiveCodes Charger un modèle de démarrage " + }, + "dart.name": { + "translation": "Dart" + }, "diagrams.desc1": { "translation": "(Expérimental)" }, @@ -279,6 +297,15 @@ "flow.name": { "translation": "Flow" }, + "flutter.desc": { + "translation": "Flutter est compilé en JavaScript avec la même chaîne d'outils côté client que Dart, puis le moteur Flutter est démarré dans la page de résultat, où l'application s'affiche. Aucun serveur n'est impliqué." + }, + "flutter.link": { + "translation": " Site officiel de Flutter Documentation Flutter Introduction aux widgets Documentation LiveCodes Charger un modèle de démarrage " + }, + "flutter.name": { + "translation": "Flutter" + }, "fortran-wasm.desc": { "translation": "Fortran moderne compilé en WebAssembly par LFortran, s'exécutant entièrement dans le navigateur." }, diff --git a/src/livecodes/i18n/locales/fr/language-info.ts b/src/livecodes/i18n/locales/fr/language-info.ts index da4179e00..15db23c4f 100644 --- a/src/livecodes/i18n/locales/fr/language-info.ts +++ b/src/livecodes/i18n/locales/fr/language-info.ts @@ -107,6 +107,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Fondation Standard C++ <3> <4>Site officiel de Clang <5> <6>Apprenez X en Y minutes, où X=C++ <7> <8>Documentation LiveCodes <9> <10>Charger le modèle de démarrage ', name: 'C++ (Wasm)', }, + 'crystal-wasm': { + desc: "Le compilateur propre à Crystal, compilé en WebAssembly — avec l'éditeur de liens de LLVM et le sysroot WASI auquel il se lie — s'exécutant entièrement dans le navigateur.", + link: '<1> <2>Site officiel de Crystal <3> <4>Référence du langage Crystal <5> <6>API de la bibliothèque standard <7> <8>Apprenez X en Y minutes, où X = Crystal <9> <10>Documentation LiveCodes <11> <12>Charger un modèle de démarrage ', + name: 'Crystal (Wasm)', + }, csharpWasm: { desc: 'Compilateur C# fonctionnant sur WebAssembly, utilisant <1>Blazor', link: '<1> <2>Documentation sur le langage C# <3> <4> Apprenez X en Y minutes, où X=C# <5> <6> Documentation LiveCodes <7> <8> Charger le modèle de démarrage ', @@ -117,6 +122,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Site officiel de D <3> <4>Spécification du langage D <5> <6>Tour du langage D <7> <8>Apprenez X en Y minutes, où X = D <9> <10>Documentation LiveCodes <11> <12>Charger un modèle de démarrage ', name: 'D (Wasm)', }, + dart: { + desc: "Dart est compilé en JavaScript par la chaîne d'outils côté client de l'équipe Dart (DDC) — celle-là même qui alimente DartPad — s'exécutant entièrement dans le navigateur. Le paquet compilé s'exécute ensuite dans la page de résultat. Aucun serveur n'est impliqué.", + link: '<1> <2>Site officiel de Dart <3> <4>Documentation Dart <5> <6>DartPad <7> <8>Documentation LiveCodes <9> <10>Charger un modèle de démarrage ', + name: 'Dart', + }, diagrams: { desc1: '(Expérimental)', desc2: 'Diagrammes sous forme de code. Prend en charge :', @@ -160,6 +170,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Site officiel de Flow <3> <4>Documentation de Flow ', name: 'Flow', }, + flutter: { + desc: "Flutter est compilé en JavaScript avec la même chaîne d'outils côté client que Dart, puis le moteur Flutter est démarré dans la page de résultat, où l'application s'affiche. Aucun serveur n'est impliqué.", + link: '<1> <2>Site officiel de Flutter <3> <4>Documentation Flutter <5> <6>Introduction aux widgets <7> <8>Documentation LiveCodes <9> <10>Charger un modèle de démarrage ', + name: 'Flutter', + }, 'fortran-wasm': { desc: "Fortran moderne compilé en WebAssembly par <1>LFortran, s'exécutant entièrement dans le navigateur.", link: '<1> <2>Apprendre Fortran <3> <4>Site officiel de LFortran <5> <6>Site web du langage Fortran <7> <8>Apprenez X en Y minutes, où X = Fortran <9> <10>Documentation LiveCodes <11> <12>Charger un modèle de démarrage ', diff --git a/src/livecodes/i18n/locales/fr/translation.lokalise.json b/src/livecodes/i18n/locales/fr/translation.lokalise.json index b79bae534..98ca53b2b 100644 --- a/src/livecodes/i18n/locales/fr/translation.lokalise.json +++ b/src/livecodes/i18n/locales/fr/translation.lokalise.json @@ -1968,6 +1968,9 @@ "templates.starter.cpp-wasm": { "translation": "Démarrage C++ (Wasm)" }, + "templates.starter.crystal-wasm": { + "translation": "Démarrage Crystal" + }, "templates.starter.csharp-wasm": { "translation": "Démarrage C# (Wasm)" }, @@ -1980,6 +1983,9 @@ "templates.starter.daisyui": { "translation": "Démarrage daisyUI" }, + "templates.starter.dart": { + "translation": "Démarrage Dart" + }, "templates.starter.diagrams": { "translation": "Démarrage Diagrammes" }, @@ -1992,6 +1998,9 @@ "templates.starter.fennel": { "translation": "Démarrage Fennel" }, + "templates.starter.flutter": { + "translation": "Démarrage Flutter" + }, "templates.starter.fortran-wasm": { "translation": "Démarrage Fortran" }, diff --git a/src/livecodes/i18n/locales/fr/translation.ts b/src/livecodes/i18n/locales/fr/translation.ts index 215de327c..8d39a69a5 100644 --- a/src/livecodes/i18n/locales/fr/translation.ts +++ b/src/livecodes/i18n/locales/fr/translation.ts @@ -997,14 +997,17 @@ const translation: I18nTranslation = { commonlisp: 'Démarrage Common Lisp', cpp: 'Démarrage C++', 'cpp-wasm': 'Démarrage C++ (Wasm)', + 'crystal-wasm': 'Démarrage Crystal', 'csharp-wasm': 'Démarrage C# (Wasm)', 'd-wasm': 'Démarrage D', d3: 'Démarrage D3', daisyui: 'Démarrage daisyUI', + dart: 'Démarrage Dart', diagrams: 'Démarrage Diagrammes', elm: 'Démarrage Elm', fanak: 'Démarrage Fanak', fennel: 'Démarrage Fennel', + flutter: 'Démarrage Flutter', 'fortran-wasm': 'Démarrage Fortran', fsharp: 'Démarrage F#', 'fsharp-wasm': 'Démarrage F# (Wasm)', diff --git a/src/livecodes/i18n/locales/hi/language-info.lokalise.json b/src/livecodes/i18n/locales/hi/language-info.lokalise.json index 5486e11bc..643fdc763 100644 --- a/src/livecodes/i18n/locales/hi/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/hi/language-info.lokalise.json @@ -183,6 +183,15 @@ "cppWasm.name": { "translation": "C++ (Wasm)" }, + "crystal-wasm.desc": { + "translation": "Crystal का अपना कंपाइलर, WebAssembly में संकलित — LLVM के लिंकर और WASI sysroot के साथ जिससे यह लिंक करता है — पूरी तरह से ब्राउज़र में चलता है।" + }, + "crystal-wasm.link": { + "translation": " Crystal आधिकारिक वेबसाइट Crystal भाषा संदर्भ मानक पुस्तकालय API Y मिनट में X सीखें, जहाँ X=Crystal लाइवकोड दस्तावेजीकरण स्टार्टर टेम्पलेट लोड करें " + }, + "crystal-wasm.name": { + "translation": "Crystal (Wasm)" + }, "csharpWasm.desc": { "translation": "C# कंपाइलर WebAssembly पर चल रहा है, का उपयोग करके ब्लेज़र" }, @@ -201,6 +210,15 @@ "d-wasm.name": { "translation": "D (Wasm)" }, + "dart.desc": { + "translation": "Dart को Dart टीम की क्लाइंट-साइड टूलचेन (DDC) द्वारा JavaScript में संकलित किया जाता है — वही जो DartPad को चलाती है — और यह पूरी तरह से ब्राउज़र में चलता है। फिर संकलित बंडल परिणाम पृष्ठ पर चलता है। कोई सर्वर शामिल नहीं है।" + }, + "dart.link": { + "translation": " Dart आधिकारिक वेबसाइट Dart दस्तावेज DartPad लाइवकोड दस्तावेजीकरण स्टार्टर टेम्पलेट लोड करें " + }, + "dart.name": { + "translation": "Dart" + }, "diagrams.desc1": { "translation": "(प्रायोगिक)" }, @@ -279,6 +297,15 @@ "flow.name": { "translation": "Flow" }, + "flutter.desc": { + "translation": "Flutter को Dart के समान क्लाइंट-साइड टूलचेन के साथ JavaScript में संकलित किया जाता है, और फिर Flutter इंजन परिणाम पृष्ठ पर बूट होता है, जहाँ ऐप रेंडर होता है। कोई सर्वर शामिल नहीं है।" + }, + "flutter.link": { + "translation": " Flutter आधिकारिक वेबसाइट Flutter दस्तावेज विजेट का परिचय लाइवकोड दस्तावेजीकरण स्टार्टर टेम्पलेट लोड करें " + }, + "flutter.name": { + "translation": "Flutter" + }, "fortran-wasm.desc": { "translation": "आधुनिक फोरट्रान को LFortran द्वारा WebAssembly में संकलित किया जाता है, जो पूरी तरह से ब्राउज़र में चलता है।" }, diff --git a/src/livecodes/i18n/locales/hi/language-info.ts b/src/livecodes/i18n/locales/hi/language-info.ts index 6bc874923..52e2568b7 100644 --- a/src/livecodes/i18n/locales/hi/language-info.ts +++ b/src/livecodes/i18n/locales/hi/language-info.ts @@ -107,6 +107,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>मानक C++ फाउंडेशन <3> <4>Clang आधिकारिक वेबसाइट <5> <6>X को Y मिनटों में सीखें, जहां X=C++ <7> <8>लाइवकोड्स दस्तावेज़ीकरण <9> <10>स्टार्टर टेम्पलेट लोड करें ', name: 'C++ (Wasm)', }, + 'crystal-wasm': { + desc: 'Crystal का अपना कंपाइलर, WebAssembly में संकलित — LLVM के लिंकर और WASI sysroot के साथ जिससे यह लिंक करता है — पूरी तरह से ब्राउज़र में चलता है।', + link: '<1> <2>Crystal आधिकारिक वेबसाइट <3> <4>Crystal भाषा संदर्भ <5> <6>मानक पुस्तकालय API <7> <8>Y मिनट में X सीखें, जहाँ X=Crystal <9> <10>लाइवकोड दस्तावेजीकरण <11> <12>स्टार्टर टेम्पलेट लोड करें ', + name: 'Crystal (Wasm)', + }, csharpWasm: { desc: 'C# कंपाइलर WebAssembly पर चल रहा है, का उपयोग करके <1>ब्लेज़र', link: '<1> <2>सी# भाषा दस्तावेज़ीकरण <3> <4>एक्स को वाई मिनटों में सीखें, जहां एक्स=सी# <5> <6>लाइवकोड दस्तावेज़ीकरण <7> <8>स्टार्टर टेम्पलेट लोड करें ', @@ -117,6 +122,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>D आधिकारिक वेबसाइट <3> <4>D भाषा विनिर्देश <5> <6>D भाषा टूर <7> <8>Y मिनट में X सीखें, जहाँ X=D <9> <10>लाइवकोड्स दस्तावेज़ीकरण <11> <12>स्टार्टर टेम्पलेट लोड करें ', name: 'D (Wasm)', }, + dart: { + desc: 'Dart को Dart टीम की क्लाइंट-साइड टूलचेन (DDC) द्वारा JavaScript में संकलित किया जाता है — वही जो DartPad को चलाती है — और यह पूरी तरह से ब्राउज़र में चलता है। फिर संकलित बंडल परिणाम पृष्ठ पर चलता है। कोई सर्वर शामिल नहीं है।', + link: '<1> <2>Dart आधिकारिक वेबसाइट <3> <4>Dart दस्तावेज <5> <6>DartPad <7> <8>लाइवकोड दस्तावेजीकरण <9> <10>स्टार्टर टेम्पलेट लोड करें ', + name: 'Dart', + }, diagrams: { desc1: '(प्रायोगिक)', desc2: 'कोड के रूप में आरेख। समर्थन करता है:', @@ -160,6 +170,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Flow आधिकारिक वेबसाइट <3> <4>Flow दस्तावेज़ीकरण ', name: 'Flow', }, + flutter: { + desc: 'Flutter को Dart के समान क्लाइंट-साइड टूलचेन के साथ JavaScript में संकलित किया जाता है, और फिर Flutter इंजन परिणाम पृष्ठ पर बूट होता है, जहाँ ऐप रेंडर होता है। कोई सर्वर शामिल नहीं है।', + link: '<1> <2>Flutter आधिकारिक वेबसाइट <3> <4>Flutter दस्तावेज <5> <6>विजेट का परिचय <7> <8>लाइवकोड दस्तावेजीकरण <9> <10>स्टार्टर टेम्पलेट लोड करें ', + name: 'Flutter', + }, 'fortran-wasm': { desc: 'आधुनिक फोरट्रान को <1>LFortran द्वारा WebAssembly में संकलित किया जाता है, जो पूरी तरह से ब्राउज़र में चलता है।', link: '<1> <2>फोरट्रान सीखें <3> <4>LFortran आधिकारिक वेबसाइट <5> <6>फोरट्रान भाषा वेबसाइट <7> <8>Y मिनट में X सीखें, जहाँ X=Fortran <9> <10>लाइवकोड्स दस्तावेज़ीकरण <11> <12>स्टार्टर टेम्पलेट लोड करें ', diff --git a/src/livecodes/i18n/locales/hi/translation.lokalise.json b/src/livecodes/i18n/locales/hi/translation.lokalise.json index fbc6ec10c..6a291a3cd 100644 --- a/src/livecodes/i18n/locales/hi/translation.lokalise.json +++ b/src/livecodes/i18n/locales/hi/translation.lokalise.json @@ -1968,6 +1968,9 @@ "templates.starter.cpp-wasm": { "translation": "C++ (Wasm) स्टार्टर" }, + "templates.starter.crystal-wasm": { + "translation": "Crystal स्टार्टर" + }, "templates.starter.csharp-wasm": { "translation": "C# (Wasm) स्टार्टर" }, @@ -1980,6 +1983,9 @@ "templates.starter.daisyui": { "translation": "daisyUI स्टार्टर" }, + "templates.starter.dart": { + "translation": "Dart स्टार्टर" + }, "templates.starter.diagrams": { "translation": "आरेख स्टार्टर" }, @@ -1992,6 +1998,9 @@ "templates.starter.fennel": { "translation": "Fennel स्टार्टर" }, + "templates.starter.flutter": { + "translation": "Flutter स्टार्टर" + }, "templates.starter.fortran-wasm": { "translation": "Fortran स्टार्टर" }, diff --git a/src/livecodes/i18n/locales/hi/translation.ts b/src/livecodes/i18n/locales/hi/translation.ts index 4727fb6fb..f54269e7c 100644 --- a/src/livecodes/i18n/locales/hi/translation.ts +++ b/src/livecodes/i18n/locales/hi/translation.ts @@ -995,14 +995,17 @@ const translation: I18nTranslation = { commonlisp: 'Common Lisp स्टार्टर', cpp: 'C++ स्टार्टर', 'cpp-wasm': 'C++ (Wasm) स्टार्टर', + 'crystal-wasm': 'Crystal स्टार्टर', 'csharp-wasm': 'C# (Wasm) स्टार्टर', 'd-wasm': 'D स्टार्टर', d3: 'D3 स्टार्टर', daisyui: 'daisyUI स्टार्टर', + dart: 'Dart स्टार्टर', diagrams: 'आरेख स्टार्टर', elm: 'Elm स्टार्टर', fanak: 'Fanak स्टार्टर', fennel: 'Fennel स्टार्टर', + flutter: 'Flutter स्टार्टर', 'fortran-wasm': 'Fortran स्टार्टर', fsharp: 'F# स्टार्टर', 'fsharp-wasm': 'F# (Wasm) स्टार्टर', diff --git a/src/livecodes/i18n/locales/hu/language-info.lokalise.json b/src/livecodes/i18n/locales/hu/language-info.lokalise.json index 139778ef4..e4ebd379b 100644 --- a/src/livecodes/i18n/locales/hu/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/hu/language-info.lokalise.json @@ -183,6 +183,15 @@ "cppWasm.name": { "translation": "C++ (Wasm)" }, + "crystal-wasm.desc": { + "translation": "A Crystal saját fordítója WebAssembly-re fordítva — az LLVM linkerével és a WASI sysroot-tal, amelyhez kapcsolódik — teljes egészében a böngészőben fut." + }, + "crystal-wasm.link": { + "translation": " A Crystal hivatalos weboldala Crystal nyelvi referencia Standard könyvtár API Tanulj meg X-et Y perc alatt, ahol X=Crystal LiveCodes dokumentáció Kezdő sablon betöltése " + }, + "crystal-wasm.name": { + "translation": "Crystal (Wasm)" + }, "csharpWasm.desc": { "translation": "C# fordító WebAssembly-n futva, a Blazor használatával" }, @@ -201,6 +210,15 @@ "d-wasm.name": { "translation": "D (Wasm)" }, + "dart.desc": { + "translation": "A Dartot a Dart csapat kliensoldali eszközlánca (DDC) fordítja JavaScriptre — ugyanaz, amely a DartPadot működteti —, és teljes egészében a böngészőben fut. A lefordított csomag ezután az eredményoldalon fut. Nem vesz részt szerver." + }, + "dart.link": { + "translation": " A Dart hivatalos weboldala Dart dokumentáció DartPad LiveCodes dokumentáció Kezdő sablon betöltése " + }, + "dart.name": { + "translation": "Dart" + }, "diagrams.desc1": { "translation": "(Kísérleti)" }, @@ -279,6 +297,15 @@ "flow.name": { "translation": "Flow" }, + "flutter.desc": { + "translation": "A Flutter a Darttal azonos kliensoldali eszközlánccal fordul JavaScriptre, majd a Flutter motor az eredményoldalon indul el, ahol az alkalmazás megjelenik. Nem vesz részt szerver." + }, + "flutter.link": { + "translation": " A Flutter hivatalos weboldala Flutter dokumentáció Bevezetés a widgetekbe LiveCodes dokumentáció Kezdő sablon betöltése " + }, + "flutter.name": { + "translation": "Flutter" + }, "fortran-wasm.desc": { "translation": "A modern Fortran a LFortran segítségével WebAssembly-re fordul, és teljes egészében a böngészőben fut." }, diff --git a/src/livecodes/i18n/locales/hu/language-info.ts b/src/livecodes/i18n/locales/hu/language-info.ts index 4b3b7083d..2aedbc305 100644 --- a/src/livecodes/i18n/locales/hu/language-info.ts +++ b/src/livecodes/i18n/locales/hu/language-info.ts @@ -108,6 +108,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Standard C++ Foundation <3> <4>Clang hivatalos weboldal <5> <6>Tanulj X-et Y perc alatt, ahol X=C++ <7> <8>LiveCodes dokumentáció <9> <10>Kezdő sablon betöltése ', name: 'C++ (Wasm)', }, + 'crystal-wasm': { + desc: 'A Crystal saját fordítója WebAssembly-re fordítva — az LLVM linkerével és a WASI sysroot-tal, amelyhez kapcsolódik — teljes egészében a böngészőben fut.', + link: '<1> <2>A Crystal hivatalos weboldala <3> <4>Crystal nyelvi referencia <5> <6>Standard könyvtár API <7> <8>Tanulj meg X-et Y perc alatt, ahol X=Crystal <9> <10>LiveCodes dokumentáció <11> <12>Kezdő sablon betöltése ', + name: 'Crystal (Wasm)', + }, csharpWasm: { desc: 'C# fordító WebAssembly-n futva, a <1>Blazor használatával', link: '<1> <2>C# nyelvi dokumentáció <3> <4>Tanulj X-et Y perc alatt, ahol X=C# <5> <6>LiveCodes dokumentáció <7> <8>Kezdő sablon betöltése ', @@ -118,6 +123,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>A D hivatalos weboldala <3> <4>D nyelvi specifikáció <5> <6>D nyelvi túra <7> <8>Tanulj meg X-et Y perc alatt, ahol X=D <9> <10>LiveCodes dokumentáció <11> <12>Indító sablon betöltése ', name: 'D (Wasm)', }, + dart: { + desc: 'A Dartot a Dart csapat kliensoldali eszközlánca (DDC) fordítja JavaScriptre — ugyanaz, amely a DartPadot működteti —, és teljes egészében a böngészőben fut. A lefordított csomag ezután az eredményoldalon fut. Nem vesz részt szerver.', + link: '<1> <2>A Dart hivatalos weboldala <3> <4>Dart dokumentáció <5> <6>DartPad <7> <8>LiveCodes dokumentáció <9> <10>Kezdő sablon betöltése ', + name: 'Dart', + }, diagrams: { desc1: '(Kísérleti)', desc2: 'Diagramok-kódként. Támogatja:', @@ -161,6 +171,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Flow hivatalos weboldal <3> <4>Flow dokumentáció ', name: 'Flow', }, + flutter: { + desc: 'A Flutter a Darttal azonos kliensoldali eszközlánccal fordul JavaScriptre, majd a Flutter motor az eredményoldalon indul el, ahol az alkalmazás megjelenik. Nem vesz részt szerver.', + link: '<1> <2>A Flutter hivatalos weboldala <3> <4>Flutter dokumentáció <5> <6>Bevezetés a widgetekbe <7> <8>LiveCodes dokumentáció <9> <10>Kezdő sablon betöltése ', + name: 'Flutter', + }, 'fortran-wasm': { desc: 'A modern Fortran a <1>LFortran segítségével WebAssembly-re fordul, és teljes egészében a böngészőben fut.', link: '<1> <2>Fortran tanulása <3> <4>Az LFortran hivatalos weboldala <5> <6>A Fortran nyelv weboldala <7> <8>Tanulj meg X-et Y perc alatt, ahol X=Fortran <9> <10>LiveCodes dokumentáció <11> <12>Indító sablon betöltése ', diff --git a/src/livecodes/i18n/locales/hu/translation.lokalise.json b/src/livecodes/i18n/locales/hu/translation.lokalise.json index e66a9aa7b..b514de76a 100644 --- a/src/livecodes/i18n/locales/hu/translation.lokalise.json +++ b/src/livecodes/i18n/locales/hu/translation.lokalise.json @@ -1968,6 +1968,9 @@ "templates.starter.cpp-wasm": { "translation": "C++ (Wasm) kezdő" }, + "templates.starter.crystal-wasm": { + "translation": "Crystal kezdő" + }, "templates.starter.csharp-wasm": { "translation": "C# (Wasm) kezdő" }, @@ -1980,6 +1983,9 @@ "templates.starter.daisyui": { "translation": "daisyUI kezdő" }, + "templates.starter.dart": { + "translation": "Dart kezdő" + }, "templates.starter.diagrams": { "translation": "Diagramok kezdő" }, @@ -1992,6 +1998,9 @@ "templates.starter.fennel": { "translation": "Fennel kezdő" }, + "templates.starter.flutter": { + "translation": "Flutter kezdő" + }, "templates.starter.fortran-wasm": { "translation": "Fortran kezdő" }, diff --git a/src/livecodes/i18n/locales/hu/translation.ts b/src/livecodes/i18n/locales/hu/translation.ts index 81de979a5..82ffa8390 100644 --- a/src/livecodes/i18n/locales/hu/translation.ts +++ b/src/livecodes/i18n/locales/hu/translation.ts @@ -996,14 +996,17 @@ const translation: I18nTranslation = { commonlisp: 'Common Lisp kezdő', cpp: 'C++ kezdő', 'cpp-wasm': 'C++ (Wasm) kezdő', + 'crystal-wasm': 'Crystal kezdő', 'csharp-wasm': 'C# (Wasm) kezdő', 'd-wasm': 'D kezdő', d3: 'D3 kezdő', daisyui: 'daisyUI kezdő', + dart: 'Dart kezdő', diagrams: 'Diagramok kezdő', elm: 'Elm kezdő', fanak: 'Fanak kezdő', fennel: 'Fennel kezdő', + flutter: 'Flutter kezdő', 'fortran-wasm': 'Fortran kezdő', fsharp: 'F# kezdő', 'fsharp-wasm': 'F# (Wasm) kezdő', diff --git a/src/livecodes/i18n/locales/id/language-info.lokalise.json b/src/livecodes/i18n/locales/id/language-info.lokalise.json index 8f35ebb3a..ae1274dc2 100644 --- a/src/livecodes/i18n/locales/id/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/id/language-info.lokalise.json @@ -183,6 +183,15 @@ "cppWasm.name": { "translation": "C++ (Wasm)" }, + "crystal-wasm.desc": { + "translation": "Kompiler milik Crystal sendiri, dikompilasi ke WebAssembly — dengan linker LLVM dan sysroot WASI yang ditautkannya — berjalan sepenuhnya di dalam browser." + }, + "crystal-wasm.link": { + "translation": " Situs web resmi Crystal Referensi bahasa Crystal API pustaka standar Belajar X dalam Y menit, di mana X = Crystal Dokumentasi LiveCodes Muat templat awal " + }, + "crystal-wasm.name": { + "translation": "Crystal (Wasm)" + }, "csharpWasm.desc": { "translation": "Kompiler C# berjalan di WebAssembly, menggunakan Blazor" }, @@ -201,6 +210,15 @@ "d-wasm.name": { "translation": "D (Wasm)" }, + "dart.desc": { + "translation": "Dart dikompilasi ke JavaScript oleh toolchain sisi klien tim Dart (DDC) — yang sama yang menjalankan DartPad — dan berjalan sepenuhnya di dalam browser. Bundel hasil kompilasi kemudian berjalan di halaman hasil. Tidak ada server yang terlibat." + }, + "dart.link": { + "translation": " Situs web resmi Dart Dokumentasi Dart DartPad Dokumentasi LiveCodes Muat templat awal " + }, + "dart.name": { + "translation": "Dart" + }, "diagrams.desc1": { "translation": "(Eksperimental)" }, @@ -279,6 +297,15 @@ "flow.name": { "translation": "Flow" }, + "flutter.desc": { + "translation": "Flutter dikompilasi ke JavaScript dengan toolchain sisi klien yang sama seperti Dart, lalu mesin Flutter dijalankan di halaman hasil, tempat aplikasi dirender. Tidak ada server yang terlibat." + }, + "flutter.link": { + "translation": " Situs web resmi Flutter Dokumentasi Flutter Pengenalan widget Dokumentasi LiveCodes Muat templat awal " + }, + "flutter.name": { + "translation": "Flutter" + }, "fortran-wasm.desc": { "translation": "Fortran modern dikompilasi ke WebAssembly oleh LFortran, berjalan sepenuhnya di dalam browser." }, diff --git a/src/livecodes/i18n/locales/id/language-info.ts b/src/livecodes/i18n/locales/id/language-info.ts index e4100378b..45af16c79 100644 --- a/src/livecodes/i18n/locales/id/language-info.ts +++ b/src/livecodes/i18n/locales/id/language-info.ts @@ -108,6 +108,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Yayasan Standard C++ <3> <4>Situs web resmi Clang <5> <6>Pelajari X dalam Y menit, dengan X=C++ <7> <8>Dokumentasi LiveCodes <9> <10>Muat template pemula ', name: 'C++ (Wasm)', }, + 'crystal-wasm': { + desc: 'Kompiler milik Crystal sendiri, dikompilasi ke WebAssembly — dengan linker LLVM dan sysroot WASI yang ditautkannya — berjalan sepenuhnya di dalam browser.', + link: '<1> <2>Situs web resmi Crystal <3> <4>Referensi bahasa Crystal <5> <6>API pustaka standar <7> <8>Belajar X dalam Y menit, di mana X = Crystal <9> <10>Dokumentasi LiveCodes <11> <12>Muat templat awal ', + name: 'Crystal (Wasm)', + }, csharpWasm: { desc: 'Kompiler C# berjalan di WebAssembly, menggunakan <1>Blazor', link: '<1> <2>Dokumentasi bahasa C# <3> <4>Pelajari X dalam Y menit, dengan X=C# <5> <6>Dokumentasi LiveCodes <7> <8>Muat template pemula ', @@ -118,6 +123,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Situs web resmi D <3> <4>Spesifikasi bahasa D <5> <6>Tur bahasa D <7> <8>Belajar X dalam Y menit, di mana X = D <9> <10>Dokumentasi LiveCodes <11> <12>Muat templat awal ', name: 'D (Wasm)', }, + dart: { + desc: 'Dart dikompilasi ke JavaScript oleh toolchain sisi klien tim Dart (DDC) — yang sama yang menjalankan DartPad — dan berjalan sepenuhnya di dalam browser. Bundel hasil kompilasi kemudian berjalan di halaman hasil. Tidak ada server yang terlibat.', + link: '<1> <2>Situs web resmi Dart <3> <4>Dokumentasi Dart <5> <6>DartPad <7> <8>Dokumentasi LiveCodes <9> <10>Muat templat awal ', + name: 'Dart', + }, diagrams: { desc1: '(Eksperimental)', desc2: 'Diagram-sebagai-kode. Mendukung:', @@ -161,6 +171,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Situs web resmi Flow <3> <4>Dokumentasi Flow ', name: 'Flow', }, + flutter: { + desc: 'Flutter dikompilasi ke JavaScript dengan toolchain sisi klien yang sama seperti Dart, lalu mesin Flutter dijalankan di halaman hasil, tempat aplikasi dirender. Tidak ada server yang terlibat.', + link: '<1> <2>Situs web resmi Flutter <3> <4>Dokumentasi Flutter <5> <6>Pengenalan widget <7> <8>Dokumentasi LiveCodes <9> <10>Muat templat awal ', + name: 'Flutter', + }, 'fortran-wasm': { desc: 'Fortran modern dikompilasi ke WebAssembly oleh <1>LFortran, berjalan sepenuhnya di dalam browser.', link: '<1> <2>Belajar Fortran <3> <4>Situs web resmi LFortran <5> <6>Situs web bahasa Fortran <7> <8>Belajar X dalam Y menit, di mana X = Fortran <9> <10>Dokumentasi LiveCodes <11> <12>Muat templat awal ', diff --git a/src/livecodes/i18n/locales/id/translation.lokalise.json b/src/livecodes/i18n/locales/id/translation.lokalise.json index 58b18dbbf..d5ec567f7 100644 --- a/src/livecodes/i18n/locales/id/translation.lokalise.json +++ b/src/livecodes/i18n/locales/id/translation.lokalise.json @@ -1968,6 +1968,9 @@ "templates.starter.cpp-wasm": { "translation": "Pemula C++ (Wasm)" }, + "templates.starter.crystal-wasm": { + "translation": "Pemula Crystal" + }, "templates.starter.csharp-wasm": { "translation": "Pemula C# (Wasm)" }, @@ -1980,6 +1983,9 @@ "templates.starter.daisyui": { "translation": "Pemula daisyUI" }, + "templates.starter.dart": { + "translation": "Pemula Dart" + }, "templates.starter.diagrams": { "translation": "Pemula Diagram" }, @@ -1992,6 +1998,9 @@ "templates.starter.fennel": { "translation": "Pemula Fennel" }, + "templates.starter.flutter": { + "translation": "Pemula Flutter" + }, "templates.starter.fortran-wasm": { "translation": "Pemula Fortran" }, diff --git a/src/livecodes/i18n/locales/id/translation.ts b/src/livecodes/i18n/locales/id/translation.ts index 21e6e191c..f314c322f 100644 --- a/src/livecodes/i18n/locales/id/translation.ts +++ b/src/livecodes/i18n/locales/id/translation.ts @@ -995,14 +995,17 @@ const translation: I18nTranslation = { commonlisp: 'Pemula Common Lisp', cpp: 'Pemula C++', 'cpp-wasm': 'Pemula C++ (Wasm)', + 'crystal-wasm': 'Pemula Crystal', 'csharp-wasm': 'Pemula C# (Wasm)', 'd-wasm': 'Pemula D', d3: 'Pemula D3', daisyui: 'Pemula daisyUI', + dart: 'Pemula Dart', diagrams: 'Pemula Diagram', elm: 'Pemula Elm', fanak: 'Pemula Fanak', fennel: 'Pemula Fennel', + flutter: 'Pemula Flutter', 'fortran-wasm': 'Pemula Fortran', fsharp: 'Pemula F#', 'fsharp-wasm': 'Pemula F# (Wasm)', diff --git a/src/livecodes/i18n/locales/it/language-info.lokalise.json b/src/livecodes/i18n/locales/it/language-info.lokalise.json index 91307a3c7..988ca6e6f 100644 --- a/src/livecodes/i18n/locales/it/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/it/language-info.lokalise.json @@ -183,6 +183,15 @@ "cppWasm.name": { "translation": "C++ (Wasm)" }, + "crystal-wasm.desc": { + "translation": "Il compilatore proprio di Crystal, compilato in WebAssembly — con il linker di LLVM e il sysroot WASI a cui si collega — eseguito interamente nel browser." + }, + "crystal-wasm.link": { + "translation": " Sito web ufficiale di Crystal Riferimento del linguaggio Crystal API della libreria standard Impara X in Y minuti, dove X = Crystal Documentazione di LiveCodes Carica il modello di avvio " + }, + "crystal-wasm.name": { + "translation": "Crystal (Wasm)" + }, "csharpWasm.desc": { "translation": "Compilatore C# in esecuzione su WebAssembly, utilizzando Blazor" }, @@ -201,6 +210,15 @@ "d-wasm.name": { "translation": "D (Wasm)" }, + "dart.desc": { + "translation": "Dart è compilato in JavaScript dalla toolchain lato client del team Dart (DDC) — la stessa che alimenta DartPad — eseguito interamente nel browser. Il bundle compilato viene poi eseguito nella pagina dei risultati. Non è coinvolto alcun server." + }, + "dart.link": { + "translation": " Sito web ufficiale di Dart Documentazione di Dart DartPad Documentazione di LiveCodes Carica il modello di avvio " + }, + "dart.name": { + "translation": "Dart" + }, "diagrams.desc1": { "translation": "(Sperimentale)" }, @@ -279,6 +297,15 @@ "flow.name": { "translation": "Flow" }, + "flutter.desc": { + "translation": "Flutter è compilato in JavaScript con la stessa toolchain lato client di Dart, poi il motore Flutter viene avviato nella pagina dei risultati, dove l'app viene renderizzata. Non è coinvolto alcun server." + }, + "flutter.link": { + "translation": " Sito web ufficiale di Flutter Documentazione di Flutter Introduzione ai widget Documentazione di LiveCodes Carica il modello di avvio " + }, + "flutter.name": { + "translation": "Flutter" + }, "fortran-wasm.desc": { "translation": "Fortran moderno compilato in WebAssembly da LFortran, eseguito interamente nel browser." }, diff --git a/src/livecodes/i18n/locales/it/language-info.ts b/src/livecodes/i18n/locales/it/language-info.ts index 98b9294ea..42873b47d 100644 --- a/src/livecodes/i18n/locales/it/language-info.ts +++ b/src/livecodes/i18n/locales/it/language-info.ts @@ -107,6 +107,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Fondazione Standard C++ <3> <4>Sito ufficiale di Clang <5> <6>Impara X in Y minuti, dove X=C++ <7> <8>Documentazione di LiveCodes <9> <10>Carica il modello di partenza ', name: 'C++ (Wasm)', }, + 'crystal-wasm': { + desc: 'Il compilatore proprio di Crystal, compilato in WebAssembly — con il linker di LLVM e il sysroot WASI a cui si collega — eseguito interamente nel browser.', + link: '<1> <2>Sito web ufficiale di Crystal <3> <4>Riferimento del linguaggio Crystal <5> <6>API della libreria standard <7> <8>Impara X in Y minuti, dove X = Crystal <9> <10>Documentazione di LiveCodes <11> <12>Carica il modello di avvio ', + name: 'Crystal (Wasm)', + }, csharpWasm: { desc: 'Compilatore C# in esecuzione su WebAssembly, utilizzando <1>Blazor', link: '<1> <2>Documentazione sul linguaggio C# <3> <4> Imparare X in Y minuti, dove X=C# <5> <6> Documentazione LiveCodes <7> <8> Carica il modello iniziale ', @@ -117,6 +122,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Sito web ufficiale di D <3> <4>Specifica del linguaggio D <5> <6>Tour del linguaggio D <7> <8>Impara X in Y minuti, dove X = D <9> <10>Documentazione di LiveCodes <11> <12>Carica il modello di avvio ', name: 'D (Wasm)', }, + dart: { + desc: 'Dart è compilato in JavaScript dalla toolchain lato client del team Dart (DDC) — la stessa che alimenta DartPad — eseguito interamente nel browser. Il bundle compilato viene poi eseguito nella pagina dei risultati. Non è coinvolto alcun server.', + link: '<1> <2>Sito web ufficiale di Dart <3> <4>Documentazione di Dart <5> <6>DartPad <7> <8>Documentazione di LiveCodes <9> <10>Carica il modello di avvio ', + name: 'Dart', + }, diagrams: { desc1: '(Sperimentale)', desc2: 'Diagrammi come codice. Supporta:', @@ -160,6 +170,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Sito ufficiale di Flow <3> <4>Documentazione di Flow ', name: 'Flow', }, + flutter: { + desc: "Flutter è compilato in JavaScript con la stessa toolchain lato client di Dart, poi il motore Flutter viene avviato nella pagina dei risultati, dove l'app viene renderizzata. Non è coinvolto alcun server.", + link: '<1> <2>Sito web ufficiale di Flutter <3> <4>Documentazione di Flutter <5> <6>Introduzione ai widget <7> <8>Documentazione di LiveCodes <9> <10>Carica il modello di avvio ', + name: 'Flutter', + }, 'fortran-wasm': { desc: 'Fortran moderno compilato in WebAssembly da <1>LFortran, eseguito interamente nel browser.', link: '<1> <2>Impara Fortran <3> <4>Sito web ufficiale di LFortran <5> <6>Sito web del linguaggio Fortran <7> <8>Impara X in Y minuti, dove X = Fortran <9> <10>Documentazione di LiveCodes <11> <12>Carica il modello di avvio ', diff --git a/src/livecodes/i18n/locales/it/translation.lokalise.json b/src/livecodes/i18n/locales/it/translation.lokalise.json index ebcf14e18..e1e144de3 100644 --- a/src/livecodes/i18n/locales/it/translation.lokalise.json +++ b/src/livecodes/i18n/locales/it/translation.lokalise.json @@ -1968,6 +1968,9 @@ "templates.starter.cpp-wasm": { "translation": "Starter C++ (Wasm)" }, + "templates.starter.crystal-wasm": { + "translation": "Starter Crystal" + }, "templates.starter.csharp-wasm": { "translation": "Starter C# (Wasm)" }, @@ -1980,6 +1983,9 @@ "templates.starter.daisyui": { "translation": "Starter daisyUI" }, + "templates.starter.dart": { + "translation": "Starter Dart" + }, "templates.starter.diagrams": { "translation": "Starter Diagrammi" }, @@ -1992,6 +1998,9 @@ "templates.starter.fennel": { "translation": "Starter Fennel" }, + "templates.starter.flutter": { + "translation": "Starter Flutter" + }, "templates.starter.fortran-wasm": { "translation": "Starter Fortran" }, diff --git a/src/livecodes/i18n/locales/it/translation.ts b/src/livecodes/i18n/locales/it/translation.ts index bb9606bf8..1c6d1599a 100644 --- a/src/livecodes/i18n/locales/it/translation.ts +++ b/src/livecodes/i18n/locales/it/translation.ts @@ -996,14 +996,17 @@ const translation: I18nTranslation = { commonlisp: 'Starter Common Lisp', cpp: 'Starter C++', 'cpp-wasm': 'Starter C++ (Wasm)', + 'crystal-wasm': 'Starter Crystal', 'csharp-wasm': 'Starter C# (Wasm)', 'd-wasm': 'Starter D', d3: 'Starter D3', daisyui: 'Starter daisyUI', + dart: 'Starter Dart', diagrams: 'Starter Diagrammi', elm: 'Starter Elm', fanak: 'Starter Fanak', fennel: 'Starter Fennel', + flutter: 'Starter Flutter', 'fortran-wasm': 'Starter Fortran', fsharp: 'Starter F#', 'fsharp-wasm': 'Starter F# (Wasm)', diff --git a/src/livecodes/i18n/locales/ja/language-info.lokalise.json b/src/livecodes/i18n/locales/ja/language-info.lokalise.json index 133a48690..76264bd9f 100644 --- a/src/livecodes/i18n/locales/ja/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/ja/language-info.lokalise.json @@ -183,6 +183,15 @@ "cppWasm.name": { "translation": "C++ (Wasm)" }, + "crystal-wasm.desc": { + "translation": "Crystal 自身のコンパイラを WebAssembly にコンパイルしたもの — LLVM のリンカーと、リンク先の WASI sysroot を伴い — ブラウザ内で完全に実行されます。" + }, + "crystal-wasm.link": { + "translation": " Crystal 公式サイト Crystal 言語リファレンス 標準ライブラリ API 「Y分でXを学ぶ」(X=Crystal) LiveCodes ドキュメント スターターテンプレートの読み込み " + }, + "crystal-wasm.name": { + "translation": "Crystal (Wasm)" + }, "csharpWasm.desc": { "translation": "WebAssembly 上で動作する C# コンパイラ。Blazor を使用。" }, @@ -201,6 +210,15 @@ "d-wasm.name": { "translation": "D (Wasm)" }, + "dart.desc": { + "translation": "Dart は Dart チームのクライアントサイドツールチェーン(DDC)— DartPad を動かしているものと同じ — によって JavaScript にコンパイルされ、ブラウザ内で完全に実行されます。コンパイルされたバンドルはその後、結果ページで実行されます。サーバーは関与しません。" + }, + "dart.link": { + "translation": " Dart 公式サイト Dart ドキュメント DartPad LiveCodes ドキュメント スターターテンプレートの読み込み " + }, + "dart.name": { + "translation": "Dart" + }, "diagrams.desc1": { "translation": "(実験的)" }, @@ -279,6 +297,15 @@ "flow.name": { "translation": "Flow" }, + "flutter.desc": { + "translation": "Flutter は Dart と同じクライアントサイドツールチェーンで JavaScript にコンパイルされ、その後 Flutter エンジンが結果ページで起動し、そこでアプリがレンダリングされます。サーバーは関与しません。" + }, + "flutter.link": { + "translation": " Flutter 公式サイト Flutter ドキュメント ウィジェット入門 LiveCodes ドキュメント スターターテンプレートの読み込み " + }, + "flutter.name": { + "translation": "Flutter" + }, "fortran-wasm.desc": { "translation": "モダンな Fortran は LFortran によって WebAssembly にコンパイルされ、ブラウザ内で完全に実行されます。" }, diff --git a/src/livecodes/i18n/locales/ja/language-info.ts b/src/livecodes/i18n/locales/ja/language-info.ts index 999218c62..ad822f405 100644 --- a/src/livecodes/i18n/locales/ja/language-info.ts +++ b/src/livecodes/i18n/locales/ja/language-info.ts @@ -107,6 +107,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Standard C++ 財団 <3> <4>Clang 公式ウェブサイト <5> <6>X分でYを学ぶ、X=C++ <7> <8>LiveCodes ドキュメント <9> <10>スターターテンプレートを読み込む ', name: 'C++ (Wasm)', }, + 'crystal-wasm': { + desc: 'Crystal 自身のコンパイラを WebAssembly にコンパイルしたもの — LLVM のリンカーと、リンク先の WASI sysroot を伴い — ブラウザ内で完全に実行されます。', + link: '<1> <2>Crystal 公式サイト <3> <4>Crystal 言語リファレンス <5> <6>標準ライブラリ API <7> <8>「Y分でXを学ぶ」(X=Crystal) <9> <10>LiveCodes ドキュメント <11> <12>スターターテンプレートの読み込み ', + name: 'Crystal (Wasm)', + }, csharpWasm: { desc: 'WebAssembly 上で動作する C# コンパイラ。<1>Blazor を使用。', link: '<1> <2>C# 言語のドキュメント <3> <4>X を Y 分で学習します (X=C の場合)# <5> <6>LiveCodesドキュメンテーション <7> <8>スターターテンプレートをロードする ', @@ -117,6 +122,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>D 公式サイト <3> <4>D 言語仕様 <5> <6>D 言語ツアー <7> <8>「Y分でXを学ぶ」(X=D) <9> <10>LiveCodes ドキュメント <11> <12>スターターテンプレートを読み込む ', name: 'D (Wasm)', }, + dart: { + desc: 'Dart は Dart チームのクライアントサイドツールチェーン(DDC)— DartPad を動かしているものと同じ — によって JavaScript にコンパイルされ、ブラウザ内で完全に実行されます。コンパイルされたバンドルはその後、結果ページで実行されます。サーバーは関与しません。', + link: '<1> <2>Dart 公式サイト <3> <4>Dart ドキュメント <5> <6>DartPad <7> <8>LiveCodes ドキュメント <9> <10>スターターテンプレートの読み込み ', + name: 'Dart', + }, diagrams: { desc1: '(実験的)', desc2: 'コードとしての図表。サポート:', @@ -160,6 +170,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Flow 公式ウェブサイト <3> <4>Flow ドキュメント ', name: 'Flow', }, + flutter: { + desc: 'Flutter は Dart と同じクライアントサイドツールチェーンで JavaScript にコンパイルされ、その後 Flutter エンジンが結果ページで起動し、そこでアプリがレンダリングされます。サーバーは関与しません。', + link: '<1> <2>Flutter 公式サイト <3> <4>Flutter ドキュメント <5> <6>ウィジェット入門 <7> <8>LiveCodes ドキュメント <9> <10>スターターテンプレートの読み込み ', + name: 'Flutter', + }, 'fortran-wasm': { desc: 'モダンな Fortran は <1>LFortran によって WebAssembly にコンパイルされ、ブラウザ内で完全に実行されます。', link: '<1> <2>Fortran を学ぶ <3> <4>LFortran 公式サイト <5> <6>Fortran 言語のウェブサイト <7> <8>「Y分でXを学ぶ」(X=Fortran) <9> <10>LiveCodes ドキュメント <11> <12>スターターテンプレートを読み込む ', diff --git a/src/livecodes/i18n/locales/ja/translation.lokalise.json b/src/livecodes/i18n/locales/ja/translation.lokalise.json index 2615fe58b..0999e7429 100644 --- a/src/livecodes/i18n/locales/ja/translation.lokalise.json +++ b/src/livecodes/i18n/locales/ja/translation.lokalise.json @@ -1968,6 +1968,9 @@ "templates.starter.cpp-wasm": { "translation": "C++(Wasm)スターター" }, + "templates.starter.crystal-wasm": { + "translation": "Crystal スターター" + }, "templates.starter.csharp-wasm": { "translation": "C#(Wasm)スターター" }, @@ -1980,6 +1983,9 @@ "templates.starter.daisyui": { "translation": "daisyUIスターター" }, + "templates.starter.dart": { + "translation": "Dart スターター" + }, "templates.starter.diagrams": { "translation": "ダイアグラムスターター" }, @@ -1992,6 +1998,9 @@ "templates.starter.fennel": { "translation": "Fennelスターター" }, + "templates.starter.flutter": { + "translation": "Flutter スターター" + }, "templates.starter.fortran-wasm": { "translation": "Fortranスターター" }, diff --git a/src/livecodes/i18n/locales/ja/translation.ts b/src/livecodes/i18n/locales/ja/translation.ts index 36e8d5070..d85683b8b 100644 --- a/src/livecodes/i18n/locales/ja/translation.ts +++ b/src/livecodes/i18n/locales/ja/translation.ts @@ -996,14 +996,17 @@ const translation: I18nTranslation = { commonlisp: 'Common Lispスターター', cpp: 'C++スターター', 'cpp-wasm': 'C++(Wasm)スターター', + 'crystal-wasm': 'Crystal スターター', 'csharp-wasm': 'C#(Wasm)スターター', 'd-wasm': 'Dスターター', d3: 'D3スターター', daisyui: 'daisyUIスターター', + dart: 'Dart スターター', diagrams: 'ダイアグラムスターター', elm: 'Elmスターター', fanak: 'Fanakスターター', fennel: 'Fennelスターター', + flutter: 'Flutter スターター', 'fortran-wasm': 'Fortranスターター', fsharp: 'F#スターター', 'fsharp-wasm': 'F#(Wasm)スターター', diff --git a/src/livecodes/i18n/locales/nl/language-info.lokalise.json b/src/livecodes/i18n/locales/nl/language-info.lokalise.json index 74218096e..520ea44cc 100644 --- a/src/livecodes/i18n/locales/nl/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/nl/language-info.lokalise.json @@ -183,6 +183,15 @@ "cppWasm.name": { "translation": "C++ (Wasm)" }, + "crystal-wasm.desc": { + "translation": "Crystals eigen compiler, gecompileerd naar WebAssembly — met LLVM's linker en de WASI-sysroot waartegen hij linkt — draait volledig in de browser." + }, + "crystal-wasm.link": { + "translation": " Officiële website van Crystal Crystal-taalreferentie API van de standaardbibliotheek Leer X in Y minuten, waarbij X = Crystal LiveCodes-documentatie Startersjabloon laden " + }, + "crystal-wasm.name": { + "translation": "Crystal (Wasm)" + }, "csharpWasm.desc": { "translation": "C#-compiler draaiend op WebAssembly, met Blazor" }, @@ -201,6 +210,15 @@ "d-wasm.name": { "translation": "D (Wasm)" }, + "dart.desc": { + "translation": "Dart wordt gecompileerd naar JavaScript door de client-side toolchain van het Dart-team (DDC) — dezelfde die DartPad aandrijft — en draait volledig in de browser. De gecompileerde bundel draait vervolgens op de resultaatpagina. Er is geen server bij betrokken." + }, + "dart.link": { + "translation": " Officiële website van Dart Dart-documentatie DartPad LiveCodes-documentatie Startersjabloon laden " + }, + "dart.name": { + "translation": "Dart" + }, "diagrams.desc1": { "translation": "(Experimenteel)" }, @@ -279,6 +297,15 @@ "flow.name": { "translation": "Flow" }, + "flutter.desc": { + "translation": "Flutter wordt met dezelfde client-side toolchain als Dart gecompileerd naar JavaScript, en de Flutter-engine wordt vervolgens op de resultaatpagina opgestart, waar de app wordt weergegeven. Er is geen server bij betrokken." + }, + "flutter.link": { + "translation": " Officiële website van Flutter Flutter-documentatie Inleiding tot widgets LiveCodes-documentatie Startersjabloon laden " + }, + "flutter.name": { + "translation": "Flutter" + }, "fortran-wasm.desc": { "translation": "Moderne Fortran wordt door LFortran gecompileerd naar WebAssembly en draait volledig in de browser." }, diff --git a/src/livecodes/i18n/locales/nl/language-info.ts b/src/livecodes/i18n/locales/nl/language-info.ts index b80280095..7f9466acc 100644 --- a/src/livecodes/i18n/locales/nl/language-info.ts +++ b/src/livecodes/i18n/locales/nl/language-info.ts @@ -107,6 +107,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Standard C++ Foundation <3> <4>Clang officiële website <5> <6>Leer X in Y minuten, waarbij X=C++ <7> <8>LiveCodes-documentatie <9> <10>Startsjabloon laden ', name: 'C++ (Wasm)', }, + 'crystal-wasm': { + desc: "Crystals eigen compiler, gecompileerd naar WebAssembly — met LLVM's linker en de WASI-sysroot waartegen hij linkt — draait volledig in de browser.", + link: '<1> <2>Officiële website van Crystal <3> <4>Crystal-taalreferentie <5> <6>API van de standaardbibliotheek <7> <8>Leer X in Y minuten, waarbij X = Crystal <9> <10>LiveCodes-documentatie <11> <12>Startersjabloon laden ', + name: 'Crystal (Wasm)', + }, csharpWasm: { desc: 'C#-compiler draaiend op WebAssembly, met <1>Blazor', link: '<1> <2>C#-taaldocumentatie <3> <4>Leer X in Y minuten, waarbij X=C# <5> <6>LiveCodes Documentatie <7> <8>Startsjabloon laden ', @@ -117,6 +122,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Officiële website van D <3> <4>D-taalspecificatie <5> <6>D taaltour <7> <8>Leer X in Y minuten, waarbij X = D <9> <10>LiveCodes-documentatie <11> <12>Starterssjabloon laden ', name: 'D (Wasm)', }, + dart: { + desc: 'Dart wordt gecompileerd naar JavaScript door de client-side toolchain van het Dart-team (DDC) — dezelfde die DartPad aandrijft — en draait volledig in de browser. De gecompileerde bundel draait vervolgens op de resultaatpagina. Er is geen server bij betrokken.', + link: '<1> <2>Officiële website van Dart <3> <4>Dart-documentatie <5> <6>DartPad <7> <8>LiveCodes-documentatie <9> <10>Startersjabloon laden ', + name: 'Dart', + }, diagrams: { desc1: '(Experimenteel)', desc2: 'Diagrammen als code. Ondersteunt:', @@ -160,6 +170,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Flow officiële website <3> <4>Flow documentatie ', name: 'Flow', }, + flutter: { + desc: 'Flutter wordt met dezelfde client-side toolchain als Dart gecompileerd naar JavaScript, en de Flutter-engine wordt vervolgens op de resultaatpagina opgestart, waar de app wordt weergegeven. Er is geen server bij betrokken.', + link: '<1> <2>Officiële website van Flutter <3> <4>Flutter-documentatie <5> <6>Inleiding tot widgets <7> <8>LiveCodes-documentatie <9> <10>Startersjabloon laden ', + name: 'Flutter', + }, 'fortran-wasm': { desc: 'Moderne Fortran wordt door <1>LFortran gecompileerd naar WebAssembly en draait volledig in de browser.', link: '<1> <2>Fortran leren <3> <4>Officiële website van LFortran <5> <6>Website van de taal Fortran <7> <8>Leer X in Y minuten, waarbij X = Fortran <9> <10>LiveCodes-documentatie <11> <12>Starterssjabloon laden ', diff --git a/src/livecodes/i18n/locales/nl/translation.lokalise.json b/src/livecodes/i18n/locales/nl/translation.lokalise.json index 76b1e0832..3dfe0802d 100644 --- a/src/livecodes/i18n/locales/nl/translation.lokalise.json +++ b/src/livecodes/i18n/locales/nl/translation.lokalise.json @@ -1968,6 +1968,9 @@ "templates.starter.cpp-wasm": { "translation": "C++ (Wasm)-starter" }, + "templates.starter.crystal-wasm": { + "translation": "Crystal-starter" + }, "templates.starter.csharp-wasm": { "translation": "C# (Wasm)-starter" }, @@ -1980,6 +1983,9 @@ "templates.starter.daisyui": { "translation": "daisyUI-starter" }, + "templates.starter.dart": { + "translation": "Dart-starter" + }, "templates.starter.diagrams": { "translation": "Diagrammen-starter" }, @@ -1992,6 +1998,9 @@ "templates.starter.fennel": { "translation": "Fennel-starter" }, + "templates.starter.flutter": { + "translation": "Flutter-starter" + }, "templates.starter.fortran-wasm": { "translation": "Fortran-starter" }, diff --git a/src/livecodes/i18n/locales/nl/translation.ts b/src/livecodes/i18n/locales/nl/translation.ts index 328feb381..a82e8155d 100644 --- a/src/livecodes/i18n/locales/nl/translation.ts +++ b/src/livecodes/i18n/locales/nl/translation.ts @@ -996,14 +996,17 @@ const translation: I18nTranslation = { commonlisp: 'Common Lisp-starter', cpp: 'C++-starter', 'cpp-wasm': 'C++ (Wasm)-starter', + 'crystal-wasm': 'Crystal-starter', 'csharp-wasm': 'C# (Wasm)-starter', 'd-wasm': 'D-starter', d3: 'D3-starter', daisyui: 'daisyUI-starter', + dart: 'Dart-starter', diagrams: 'Diagrammen-starter', elm: 'Elm-starter', fanak: 'Fanak-starter', fennel: 'Fennel-starter', + flutter: 'Flutter-starter', 'fortran-wasm': 'Fortran-starter', fsharp: 'F#-starter', 'fsharp-wasm': 'F# (Wasm)-starter', diff --git a/src/livecodes/i18n/locales/pt/language-info.lokalise.json b/src/livecodes/i18n/locales/pt/language-info.lokalise.json index 1a1eabc06..77201bf96 100644 --- a/src/livecodes/i18n/locales/pt/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/pt/language-info.lokalise.json @@ -183,6 +183,15 @@ "cppWasm.name": { "translation": "C++ (Wasm)" }, + "crystal-wasm.desc": { + "translation": "O compilador próprio do Crystal, compilado para WebAssembly — com o linker do LLVM e o sysroot WASI com o qual se liga — sendo executado na íntegra no navegador." + }, + "crystal-wasm.link": { + "translation": " Site oficial do Crystal Referência da linguagem Crystal API da biblioteca padrão Aprenda X em Y minutos, onde X = Crystal Documentação do LiveCodes Carregar modelo inicial " + }, + "crystal-wasm.name": { + "translation": "Crystal (Wasm)" + }, "csharpWasm.desc": { "translation": "Compilador C# executado no WebAssembly, usando Blazor" }, @@ -201,6 +210,15 @@ "d-wasm.name": { "translation": "D (Wasm)" }, + "dart.desc": { + "translation": "O Dart é compilado para JavaScript pela cadeia de ferramentas do lado do cliente da equipe Dart (DDC) — a mesma que alimenta o DartPad — sendo executado na íntegra no navegador. O pacote compilado então roda na página de resultado. Nenhum servidor está envolvido." + }, + "dart.link": { + "translation": " Site oficial do Dart Documentação do Dart DartPad Documentação do LiveCodes Carregar modelo inicial " + }, + "dart.name": { + "translation": "Dart" + }, "diagrams.desc1": { "translation": "(Experimental)" }, @@ -279,6 +297,15 @@ "flow.name": { "translation": "Flow" }, + "flutter.desc": { + "translation": "O Flutter é compilado para JavaScript com a mesma cadeia de ferramentas do lado do cliente do Dart, e o motor Flutter é então iniciado na página de resultado, onde o aplicativo é renderizado. Nenhum servidor está envolvido." + }, + "flutter.link": { + "translation": " Site oficial do Flutter Documentação do Flutter Introdução aos widgets Documentação do LiveCodes Carregar modelo inicial " + }, + "flutter.name": { + "translation": "Flutter" + }, "fortran-wasm.desc": { "translation": "Fortran moderno compilado para WebAssembly pelo LFortran, executado na íntegra no navegador." }, diff --git a/src/livecodes/i18n/locales/pt/language-info.ts b/src/livecodes/i18n/locales/pt/language-info.ts index a769b646b..fc681c58f 100644 --- a/src/livecodes/i18n/locales/pt/language-info.ts +++ b/src/livecodes/i18n/locales/pt/language-info.ts @@ -107,6 +107,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Fundação C++ Padrão <3> <4>Site oficial do Clang <5> <6>Aprenda X em Y minutos, onde X=C++ <7> <8>Documentação do LiveCodes <9> <10>Carregar modelo inicial ', name: 'C++ (Wasm)', }, + 'crystal-wasm': { + desc: 'O compilador próprio do Crystal, compilado para WebAssembly — com o linker do LLVM e o sysroot WASI com o qual se liga — sendo executado na íntegra no navegador.', + link: '<1> <2>Site oficial do Crystal <3> <4>Referência da linguagem Crystal <5> <6>API da biblioteca padrão <7> <8>Aprenda X em Y minutos, onde X = Crystal <9> <10>Documentação do LiveCodes <11> <12>Carregar modelo inicial ', + name: 'Crystal (Wasm)', + }, csharpWasm: { desc: 'Compilador C# executado no WebAssembly, usando <1>Blazor', link: '<1> <2>Documentação da linguagem C# <3> <4> Aprenda X em Y minutos, onde X=C# <5> <6> Documentação LiveCodes <7> <8> Carregar modelo inicial ', @@ -117,6 +122,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Site oficial do D <3> <4>Especificação da linguagem D <5> <6>Tour pela linguagem D <7> <8>Aprenda X em Y minutos, onde X = D <9> <10>Documentação do LiveCodes <11> <12>Carregar modelo inicial ', name: 'D (Wasm)', }, + dart: { + desc: 'O Dart é compilado para JavaScript pela cadeia de ferramentas do lado do cliente da equipe Dart (DDC) — a mesma que alimenta o DartPad — sendo executado na íntegra no navegador. O pacote compilado então roda na página de resultado. Nenhum servidor está envolvido.', + link: '<1> <2>Site oficial do Dart <3> <4>Documentação do Dart <5> <6>DartPad <7> <8>Documentação do LiveCodes <9> <10>Carregar modelo inicial ', + name: 'Dart', + }, diagrams: { desc1: '(Experimental)', desc2: 'Diagramas como código. Suporta:', @@ -160,6 +170,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Site oficial do Flow <3> <4>Documentação do Flow ', name: 'Flow', }, + flutter: { + desc: 'O Flutter é compilado para JavaScript com a mesma cadeia de ferramentas do lado do cliente do Dart, e o motor Flutter é então iniciado na página de resultado, onde o aplicativo é renderizado. Nenhum servidor está envolvido.', + link: '<1> <2>Site oficial do Flutter <3> <4>Documentação do Flutter <5> <6>Introdução aos widgets <7> <8>Documentação do LiveCodes <9> <10>Carregar modelo inicial ', + name: 'Flutter', + }, 'fortran-wasm': { desc: 'Fortran moderno compilado para WebAssembly pelo <1>LFortran, executado na íntegra no navegador.', link: '<1> <2>Aprender Fortran <3> <4>Site oficial do LFortran <5> <6>Site da linguagem Fortran <7> <8>Aprenda X em Y minutos, onde X = Fortran <9> <10>Documentação do LiveCodes <11> <12>Carregar modelo inicial ', diff --git a/src/livecodes/i18n/locales/pt/translation.lokalise.json b/src/livecodes/i18n/locales/pt/translation.lokalise.json index 34d5a0dde..d9b58e771 100644 --- a/src/livecodes/i18n/locales/pt/translation.lokalise.json +++ b/src/livecodes/i18n/locales/pt/translation.lokalise.json @@ -1968,6 +1968,9 @@ "templates.starter.cpp-wasm": { "translation": "Iniciante C++ (Wasm)" }, + "templates.starter.crystal-wasm": { + "translation": "Iniciante Crystal" + }, "templates.starter.csharp-wasm": { "translation": "Iniciante C# (Wasm)" }, @@ -1980,6 +1983,9 @@ "templates.starter.daisyui": { "translation": "Iniciante daisyUI" }, + "templates.starter.dart": { + "translation": "Iniciante Dart" + }, "templates.starter.diagrams": { "translation": "Iniciante Diagrams" }, @@ -1992,6 +1998,9 @@ "templates.starter.fennel": { "translation": "Iniciante Fennel" }, + "templates.starter.flutter": { + "translation": "Iniciante Flutter" + }, "templates.starter.fortran-wasm": { "translation": "Iniciante Fortran" }, diff --git a/src/livecodes/i18n/locales/pt/translation.ts b/src/livecodes/i18n/locales/pt/translation.ts index 75179bf82..12a509b99 100644 --- a/src/livecodes/i18n/locales/pt/translation.ts +++ b/src/livecodes/i18n/locales/pt/translation.ts @@ -996,14 +996,17 @@ const translation: I18nTranslation = { commonlisp: 'Iniciante Common Lisp', cpp: 'Iniciante C++', 'cpp-wasm': 'Iniciante C++ (Wasm)', + 'crystal-wasm': 'Iniciante Crystal', 'csharp-wasm': 'Iniciante C# (Wasm)', 'd-wasm': 'Iniciante D', d3: 'Iniciante D3', daisyui: 'Iniciante daisyUI', + dart: 'Iniciante Dart', diagrams: 'Iniciante Diagrams', elm: 'Iniciante Elm', fanak: 'Iniciante Fanak', fennel: 'Iniciante Fennel', + flutter: 'Iniciante Flutter', 'fortran-wasm': 'Iniciante Fortran', fsharp: 'Iniciante F#', 'fsharp-wasm': 'Iniciante F# (Wasm)', diff --git a/src/livecodes/i18n/locales/ru/language-info.lokalise.json b/src/livecodes/i18n/locales/ru/language-info.lokalise.json index dcbe3be84..dbec4ac23 100644 --- a/src/livecodes/i18n/locales/ru/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/ru/language-info.lokalise.json @@ -183,6 +183,15 @@ "cppWasm.name": { "translation": "C++ (Wasm)" }, + "crystal-wasm.desc": { + "translation": "Собственный компилятор Crystal, скомпилированный в WebAssembly — вместе с компоновщиком LLVM и sysroot WASI, с которым он связывается — полностью выполняется в браузере." + }, + "crystal-wasm.link": { + "translation": " Официальный сайт Crystal Справочник по языку Crystal API стандартной библиотеки «Изучите X за Y минут», где X = Crystal Документация LiveCodes Загрузить стартовый шаблон " + }, + "crystal-wasm.name": { + "translation": "Crystal (Wasm)" + }, "csharpWasm.desc": { "translation": "Компилятор C#, работающий на WebAssembly, с использованием Blazor" }, @@ -201,6 +210,15 @@ "d-wasm.name": { "translation": "D (Wasm)" }, + "dart.desc": { + "translation": "Dart компилируется в JavaScript клиентской цепочкой инструментов команды Dart (DDC) — той же, что лежит в основе DartPad — и полностью выполняется в браузере. Затем скомпилированный бандл выполняется на странице результата. Сервер не задействован." + }, + "dart.link": { + "translation": " Официальный сайт Dart Документация по Dart DartPad Документация LiveCodes Загрузить стартовый шаблон " + }, + "dart.name": { + "translation": "Dart" + }, "diagrams.desc1": { "translation": "(Экспериментально)" }, @@ -279,6 +297,15 @@ "flow.name": { "translation": "Flow" }, + "flutter.desc": { + "translation": "Flutter компилируется в JavaScript той же клиентской цепочкой инструментов, что и Dart, после чего движок Flutter загружается на странице результата, где отрисовывается приложение. Сервер не задействован." + }, + "flutter.link": { + "translation": " Официальный сайт Flutter Документация по Flutter Введение в виджеты Документация LiveCodes Загрузить стартовый шаблон " + }, + "flutter.name": { + "translation": "Flutter" + }, "fortran-wasm.desc": { "translation": "Современный Fortran компилируется в WebAssembly с помощью LFortran и полностью выполняется в браузере." }, diff --git a/src/livecodes/i18n/locales/ru/language-info.ts b/src/livecodes/i18n/locales/ru/language-info.ts index b12e0d175..e3f02cfb6 100644 --- a/src/livecodes/i18n/locales/ru/language-info.ts +++ b/src/livecodes/i18n/locales/ru/language-info.ts @@ -108,6 +108,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Фонд стандартного C++ <3> <4>Официальный сайт Clang <5> <6>Изучите X за Y минут, где X=C++ <7> <8>Документация LiveCodes <9> <10>Загрузить стартовый шаблон ', name: 'C++ (Wasm)', }, + 'crystal-wasm': { + desc: 'Собственный компилятор Crystal, скомпилированный в WebAssembly — вместе с компоновщиком LLVM и sysroot WASI, с которым он связывается — полностью выполняется в браузере.', + link: '<1> <2>Официальный сайт Crystal <3> <4>Справочник по языку Crystal <5> <6>API стандартной библиотеки <7> <8>«Изучите X за Y минут», где X = Crystal <9> <10>Документация LiveCodes <11> <12>Загрузить стартовый шаблон ', + name: 'Crystal (Wasm)', + }, csharpWasm: { desc: 'Компилятор C#, работающий на WebAssembly, с использованием <1>Blazor', link: '<1> <2>Документация по языку C# <3> <4> Узнайте X за Y минут, где X=C# <5> <6> Документация LiveCodes <7> <8> Загрузите стартовый шаблон ', @@ -118,6 +123,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Официальный сайт D <3> <4>Спецификация языка D <5> <6>Тур по языку D <7> <8>«Изучите X за Y минут», где X = D <9> <10>Документация LiveCodes <11> <12>Загрузить стартовый шаблон ', name: 'D (Wasm)', }, + dart: { + desc: 'Dart компилируется в JavaScript клиентской цепочкой инструментов команды Dart (DDC) — той же, что лежит в основе DartPad — и полностью выполняется в браузере. Затем скомпилированный бандл выполняется на странице результата. Сервер не задействован.', + link: '<1> <2>Официальный сайт Dart <3> <4>Документация по Dart <5> <6>DartPad <7> <8>Документация LiveCodes <9> <10>Загрузить стартовый шаблон ', + name: 'Dart', + }, diagrams: { desc1: '(Экспериментально)', desc2: 'Диаграммы как код. Поддерживает:', @@ -161,6 +171,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Официальный сайт Flow <3> <4>Документация Flow ', name: 'Flow', }, + flutter: { + desc: 'Flutter компилируется в JavaScript той же клиентской цепочкой инструментов, что и Dart, после чего движок Flutter загружается на странице результата, где отрисовывается приложение. Сервер не задействован.', + link: '<1> <2>Официальный сайт Flutter <3> <4>Документация по Flutter <5> <6>Введение в виджеты <7> <8>Документация LiveCodes <9> <10>Загрузить стартовый шаблон ', + name: 'Flutter', + }, 'fortran-wasm': { desc: 'Современный Fortran компилируется в WebAssembly с помощью <1>LFortran и полностью выполняется в браузере.', link: '<1> <2>Изучите Fortran <3> <4>Официальный сайт LFortran <5> <6>Сайт языка Fortran <7> <8>«Изучите X за Y минут», где X = Fortran <9> <10>Документация LiveCodes <11> <12>Загрузить стартовый шаблон ', diff --git a/src/livecodes/i18n/locales/ru/translation.lokalise.json b/src/livecodes/i18n/locales/ru/translation.lokalise.json index 39febf551..62cd62ec9 100644 --- a/src/livecodes/i18n/locales/ru/translation.lokalise.json +++ b/src/livecodes/i18n/locales/ru/translation.lokalise.json @@ -1968,6 +1968,9 @@ "templates.starter.cpp-wasm": { "translation": "Стартер C++ (Wasm)" }, + "templates.starter.crystal-wasm": { + "translation": "Стартер Crystal" + }, "templates.starter.csharp-wasm": { "translation": "Стартер C# (Wasm)" }, @@ -1980,6 +1983,9 @@ "templates.starter.daisyui": { "translation": "Стартер daisyUI" }, + "templates.starter.dart": { + "translation": "Стартер Dart" + }, "templates.starter.diagrams": { "translation": "Стартер диаграмм" }, @@ -1992,6 +1998,9 @@ "templates.starter.fennel": { "translation": "Стартер Fennel" }, + "templates.starter.flutter": { + "translation": "Стартер Flutter" + }, "templates.starter.fortran-wasm": { "translation": "Стартер Fortran" }, diff --git a/src/livecodes/i18n/locales/ru/translation.ts b/src/livecodes/i18n/locales/ru/translation.ts index d318c7a32..06e56c3ec 100644 --- a/src/livecodes/i18n/locales/ru/translation.ts +++ b/src/livecodes/i18n/locales/ru/translation.ts @@ -995,14 +995,17 @@ const translation: I18nTranslation = { commonlisp: 'Стартер Common Lisp', cpp: 'Стартер C++', 'cpp-wasm': 'Стартер C++ (Wasm)', + 'crystal-wasm': 'Стартер Crystal', 'csharp-wasm': 'Стартер C# (Wasm)', 'd-wasm': 'Стартер D', d3: 'Стартер D3', daisyui: 'Стартер daisyUI', + dart: 'Стартер Dart', diagrams: 'Стартер диаграмм', elm: 'Стартер Elm', fanak: 'Стартер Fanak', fennel: 'Стартер Fennel', + flutter: 'Стартер Flutter', 'fortran-wasm': 'Стартер Fortran', fsharp: 'Стартер F#', 'fsharp-wasm': 'Стартер F# (Wasm)', diff --git a/src/livecodes/i18n/locales/tr/language-info.lokalise.json b/src/livecodes/i18n/locales/tr/language-info.lokalise.json index 9646b7f1b..cd4fd421f 100644 --- a/src/livecodes/i18n/locales/tr/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/tr/language-info.lokalise.json @@ -183,6 +183,15 @@ "cppWasm.name": { "translation": "C++ (Wasm)" }, + "crystal-wasm.desc": { + "translation": "Crystal'in kendi derleyicisi, WebAssembly'ye derlenmiş — LLVM'in bağlayıcısı ve bağlandığı WASI sysroot ile birlikte — tamamen tarayıcı içinde çalışır." + }, + "crystal-wasm.link": { + "translation": " Crystal resmi web sitesi Crystal dili referansı Standart kütüphane API'si Y dakikada X'i öğrenin, burada X=Crystal LiveCodes Belgeleri Başlangıç şablonunu yükle " + }, + "crystal-wasm.name": { + "translation": "Crystal (Wasm)" + }, "csharpWasm.desc": { "translation": "WebAssembly üzerinde çalışan C# derleyicisi, Blazor kullanılarak." }, @@ -201,6 +210,15 @@ "d-wasm.name": { "translation": "D (Wasm)" }, + "dart.desc": { + "translation": "Dart, Dart ekibinin istemci taraflı araç zinciri (DDC) — DartPad'i çalıştıran aynı araç zinciri — tarafından JavaScript'e derlenir ve tamamen tarayıcı içinde çalışır. Derlenen paket daha sonra sonuç sayfasında çalışır. Hiçbir sunucu devrede değildir." + }, + "dart.link": { + "translation": " Dart resmi web sitesi Dart belgeleri DartPad LiveCodes Belgeleri Başlangıç şablonunu yükle " + }, + "dart.name": { + "translation": "Dart" + }, "diagrams.desc1": { "translation": "(Deneysel)" }, @@ -279,6 +297,15 @@ "flow.name": { "translation": "Flow" }, + "flutter.desc": { + "translation": "Flutter, Dart ile aynı istemci taraflı araç zinciriyle JavaScript'e derlenir ve ardından Flutter motoru, uygulamanın oluşturulduğu sonuç sayfasında başlatılır. Hiçbir sunucu devrede değildir." + }, + "flutter.link": { + "translation": " Flutter resmi web sitesi Flutter belgeleri Widget'lara giriş LiveCodes Belgeleri Başlangıç şablonunu yükle " + }, + "flutter.name": { + "translation": "Flutter" + }, "fortran-wasm.desc": { "translation": "Modern Fortran, LFortran tarafından WebAssembly’ye derlenir ve tamamen tarayıcı içinde çalışır." }, diff --git a/src/livecodes/i18n/locales/tr/language-info.ts b/src/livecodes/i18n/locales/tr/language-info.ts index 1748d3574..ed71d0a3a 100644 --- a/src/livecodes/i18n/locales/tr/language-info.ts +++ b/src/livecodes/i18n/locales/tr/language-info.ts @@ -107,6 +107,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Standart C++ Vakfı <3> <4>Clang resmi web sitesi <5> <6>Y Dakikada X Öğrenin, X=C++ <7> <8>LiveCodes Belgeleri <9> <10>Başlangıç şablonunu yükle ', name: 'C++ (Wasm)', }, + 'crystal-wasm': { + desc: "Crystal'in kendi derleyicisi, WebAssembly'ye derlenmiş — LLVM'in bağlayıcısı ve bağlandığı WASI sysroot ile birlikte — tamamen tarayıcı içinde çalışır.", + link: "<1> <2>Crystal resmi web sitesi <3> <4>Crystal dili referansı <5> <6>Standart kütüphane API'si <7> <8>Y dakikada X'i öğrenin, burada X=Crystal <9> <10>LiveCodes Belgeleri <11> <12>Başlangıç şablonunu yükle ", + name: 'Crystal (Wasm)', + }, csharpWasm: { desc: 'WebAssembly üzerinde çalışan C# derleyicisi, <1>Blazor kullanılarak.', link: '<1> <2>C# dil dokümantasyonu <3> <4>Y Dakikada X Öğrenin, X=C# <5> <6>LiveCodes Dokümantasyonu <7> <8>Başlangıç şablonunu yükle ', @@ -117,6 +122,11 @@ const languageInfo: I18nLangInfoTranslation = { link: "<1> <2>D resmi web sitesi <3> <4>D dil spesifikasyonu <5> <6>D dil turu <7> <8>Y dakikada X'i öğrenin, burada X=D <9> <10>LiveCodes Belgeleri <11> <12>Başlangıç şablonunu yükle ", name: 'D (Wasm)', }, + dart: { + desc: "Dart, Dart ekibinin istemci taraflı araç zinciri (DDC) — DartPad'i çalıştıran aynı araç zinciri — tarafından JavaScript'e derlenir ve tamamen tarayıcı içinde çalışır. Derlenen paket daha sonra sonuç sayfasında çalışır. Hiçbir sunucu devrede değildir.", + link: '<1> <2>Dart resmi web sitesi <3> <4>Dart belgeleri <5> <6>DartPad <7> <8>LiveCodes Belgeleri <9> <10>Başlangıç şablonunu yükle ', + name: 'Dart', + }, diagrams: { desc1: '(Deneysel)', desc2: 'Kod olarak diyagramlar. Destekledikleri:', @@ -160,6 +170,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Flow resmi web sitesi <3> <4>Flow dokümantasyonu ', name: 'Flow', }, + flutter: { + desc: "Flutter, Dart ile aynı istemci taraflı araç zinciriyle JavaScript'e derlenir ve ardından Flutter motoru, uygulamanın oluşturulduğu sonuç sayfasında başlatılır. Hiçbir sunucu devrede değildir.", + link: "<1> <2>Flutter resmi web sitesi <3> <4>Flutter belgeleri <5> <6>Widget'lara giriş <7> <8>LiveCodes Belgeleri <9> <10>Başlangıç şablonunu yükle ", + name: 'Flutter', + }, 'fortran-wasm': { desc: 'Modern Fortran, <1>LFortran tarafından WebAssembly’ye derlenir ve tamamen tarayıcı içinde çalışır.', link: "<1> <2>Fortran öğrenin <3> <4>LFortran resmi web sitesi <5> <6>Fortran dili web sitesi <7> <8>Y dakikada X'i öğrenin, burada X=Fortran <9> <10>LiveCodes Belgeleri <11> <12>Başlangıç şablonunu yükle ", diff --git a/src/livecodes/i18n/locales/tr/translation.lokalise.json b/src/livecodes/i18n/locales/tr/translation.lokalise.json index 0f4f4d838..8f9c3bd83 100644 --- a/src/livecodes/i18n/locales/tr/translation.lokalise.json +++ b/src/livecodes/i18n/locales/tr/translation.lokalise.json @@ -1968,6 +1968,9 @@ "templates.starter.cpp-wasm": { "translation": "C++ (Wasm) Başlangıç" }, + "templates.starter.crystal-wasm": { + "translation": "Crystal Başlangıç" + }, "templates.starter.csharp-wasm": { "translation": "C# (Wasm) Başlangıç" }, @@ -1980,6 +1983,9 @@ "templates.starter.daisyui": { "translation": "daisyUI Başlangıç" }, + "templates.starter.dart": { + "translation": "Dart Başlangıç" + }, "templates.starter.diagrams": { "translation": "Diyagramlar Başlangıç" }, @@ -1992,6 +1998,9 @@ "templates.starter.fennel": { "translation": "Fennel Başlangıç" }, + "templates.starter.flutter": { + "translation": "Flutter Başlangıç" + }, "templates.starter.fortran-wasm": { "translation": "Fortran Başlangıç" }, diff --git a/src/livecodes/i18n/locales/tr/translation.ts b/src/livecodes/i18n/locales/tr/translation.ts index c7db42fc4..b97378417 100644 --- a/src/livecodes/i18n/locales/tr/translation.ts +++ b/src/livecodes/i18n/locales/tr/translation.ts @@ -996,14 +996,17 @@ const translation: I18nTranslation = { commonlisp: 'Common Lisp Başlangıç', cpp: 'C++ Başlangıç', 'cpp-wasm': 'C++ (Wasm) Başlangıç', + 'crystal-wasm': 'Crystal Başlangıç', 'csharp-wasm': 'C# (Wasm) Başlangıç', 'd-wasm': 'D Başlangıç', d3: 'D3 Başlangıç', daisyui: 'daisyUI Başlangıç', + dart: 'Dart Başlangıç', diagrams: 'Diyagramlar Başlangıç', elm: 'Elm Başlangıç', fanak: 'Fanak Başlangıç', fennel: 'Fennel Başlangıç', + flutter: 'Flutter Başlangıç', 'fortran-wasm': 'Fortran Başlangıç', fsharp: 'F# Başlangıç', 'fsharp-wasm': 'F# (Wasm) 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 943ff62f7..19aff173c 100644 --- a/src/livecodes/i18n/locales/ur/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/ur/language-info.lokalise.json @@ -183,6 +183,15 @@ "cppWasm.name": { "translation": "C++ (Wasm)" }, + "crystal-wasm.desc": { + "translation": "Crystal کا اپنا کمپائلر، WebAssembly میں مرتب شدہ — LLVM کے لنکر اور WASI sysroot کے ساتھ جس سے یہ لنک کرتا ہے — مکمل طور پر براؤزر میں چلتا ہے۔" + }, + "crystal-wasm.link": { + "translation": " Crystal آفیشل ویب سائٹ Crystal زبان کا حوالہ معیاری لائبریری API Y منٹ میں X سیکھیں، جہاں X=Crystal LiveCodes دستاویزی لوڈ اسٹارٹر ٹیمپلیٹ " + }, + "crystal-wasm.name": { + "translation": "Crystal (Wasm)" + }, "csharpWasm.desc": { "translation": "سی # کمپائلر ویب اسمبلی پر چل رہا ہے، استعمال کر رہا ہے Blazor" }, @@ -201,6 +210,15 @@ "d-wasm.name": { "translation": "D (Wasm)" }, + "dart.desc": { + "translation": "Dart کو Dart ٹیم کی کلائنٹ سائیڈ ٹول چین (DDC) کے ذریعے JavaScript میں مرتب کیا جاتا ہے — وہی جو DartPad کو چلاتی ہے — اور یہ مکمل طور پر براؤزر میں چلتا ہے۔ پھر مرتب شدہ بنڈل نتیجہ صفحہ پر چلتا ہے۔ کوئی سرور شامل نہیں ہے۔" + }, + "dart.link": { + "translation": " Dart آفیشل ویب سائٹ Dart دستاویزات DartPad LiveCodes دستاویزی لوڈ اسٹارٹر ٹیمپلیٹ " + }, + "dart.name": { + "translation": "Dart" + }, "diagrams.desc1": { "translation": "(تجرباتی)" }, @@ -279,6 +297,15 @@ "flow.name": { "translation": "فلو" }, + "flutter.desc": { + "translation": "Flutter کو Dart کی طرح اسی کلائنٹ سائیڈ ٹول چین کے ساتھ JavaScript میں مرتب کیا جاتا ہے، اور پھر Flutter انجن نتیجہ صفحہ پر بوٹ ہوتا ہے، جہاں ایپ رینڈر ہوتی ہے۔ کوئی سرور شامل نہیں ہے۔" + }, + "flutter.link": { + "translation": " Flutter آفیشل ویب سائٹ Flutter دستاویزات ویجٹس کا تعارف LiveCodes دستاویزی لوڈ اسٹارٹر ٹیمپلیٹ " + }, + "flutter.name": { + "translation": "Flutter" + }, "fortran-wasm.desc": { "translation": "جدید فورٹران LFortran کے ذریعے WebAssembly میں مرتب کیا جاتا ہے، جو مکمل طور پر براؤزر میں چلتا ہے۔" }, diff --git a/src/livecodes/i18n/locales/ur/language-info.ts b/src/livecodes/i18n/locales/ur/language-info.ts index dc8a0a007..96e63c83f 100644 --- a/src/livecodes/i18n/locales/ur/language-info.ts +++ b/src/livecodes/i18n/locales/ur/language-info.ts @@ -108,6 +108,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>معیاری سی++ فاؤنڈیشن <3> <4>کلینگ کی سرکاری ویب سائٹ <5> <6>X کو Y منٹ میں سیکھیں، جہاں X=سی++ <7> <8>لائیو کوڈز دستاویزات <9> <10>ابتدائی سانچہ لوڈ کریں ', name: 'C++ (Wasm)', }, + 'crystal-wasm': { + desc: 'Crystal کا اپنا کمپائلر، WebAssembly میں مرتب شدہ — LLVM کے لنکر اور WASI sysroot کے ساتھ جس سے یہ لنک کرتا ہے — مکمل طور پر براؤزر میں چلتا ہے۔', + link: '<1> <2>Crystal آفیشل ویب سائٹ <3> <4>Crystal زبان کا حوالہ <5> <6>معیاری لائبریری API <7> <8>Y منٹ میں X سیکھیں، جہاں X=Crystal <9> <10>LiveCodes دستاویزی <11> <12>لوڈ اسٹارٹر ٹیمپلیٹ ', + name: 'Crystal (Wasm)', + }, csharpWasm: { desc: 'سی # کمپائلر ویب اسمبلی پر چل رہا ہے، استعمال کر رہا ہے <1>Blazor', link: '<1> <2> C# زبان کی دستاویزات <3> <4> Y منٹوں میں X سیکھیں، جہاں X=C# <5> <6> LiveCodes ڈاکومینٹیشن <7> <8> شروع کریں ', @@ -118,6 +123,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>D آفیشل ویب سائٹ <3> <4>D زبان کی تفصیلات <5> <6>D زبان کا دورہ <7> <8>Y منٹ میں X سیکھیں، جہاں X=D <9> <10>لائیو کوڈز دستاویزات <11> <12>اسٹارٹر ٹیمپلیٹ لوڈ کریں ', name: 'D (Wasm)', }, + dart: { + desc: 'Dart کو Dart ٹیم کی کلائنٹ سائیڈ ٹول چین (DDC) کے ذریعے JavaScript میں مرتب کیا جاتا ہے — وہی جو DartPad کو چلاتی ہے — اور یہ مکمل طور پر براؤزر میں چلتا ہے۔ پھر مرتب شدہ بنڈل نتیجہ صفحہ پر چلتا ہے۔ کوئی سرور شامل نہیں ہے۔', + link: '<1> <2>Dart آفیشل ویب سائٹ <3> <4>Dart دستاویزات <5> <6>DartPad <7> <8>LiveCodes دستاویزی <9> <10>لوڈ اسٹارٹر ٹیمپلیٹ ', + name: 'Dart', + }, diagrams: { desc1: '(تجرباتی)', desc2: 'کوڈ کے طور پر خاکے۔ معاونت کرتا ہے:', @@ -161,6 +171,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>فلو کی سرکاری ویب سائٹ <3> <4>فلو کی دستاویزات ', name: 'فلو', }, + flutter: { + desc: 'Flutter کو Dart کی طرح اسی کلائنٹ سائیڈ ٹول چین کے ساتھ JavaScript میں مرتب کیا جاتا ہے، اور پھر Flutter انجن نتیجہ صفحہ پر بوٹ ہوتا ہے، جہاں ایپ رینڈر ہوتی ہے۔ کوئی سرور شامل نہیں ہے۔', + link: '<1> <2>Flutter آفیشل ویب سائٹ <3> <4>Flutter دستاویزات <5> <6>ویجٹس کا تعارف <7> <8>LiveCodes دستاویزی <9> <10>لوڈ اسٹارٹر ٹیمپلیٹ ', + name: 'Flutter', + }, 'fortran-wasm': { desc: 'جدید فورٹران <1>LFortran کے ذریعے WebAssembly میں مرتب کیا جاتا ہے، جو مکمل طور پر براؤزر میں چلتا ہے۔', link: '<1> <2>فورٹران سیکھیں <3> <4>LFortran آفیشل ویب سائٹ <5> <6>فورٹران زبان کی ویب سائٹ <7> <8>Y منٹ میں X سیکھیں، جہاں X=Fortran <9> <10>لائیو کوڈز دستاویزات <11> <12>اسٹارٹر ٹیمپلیٹ لوڈ کریں ', diff --git a/src/livecodes/i18n/locales/ur/translation.lokalise.json b/src/livecodes/i18n/locales/ur/translation.lokalise.json index 823e2d0ff..3e5e382dc 100644 --- a/src/livecodes/i18n/locales/ur/translation.lokalise.json +++ b/src/livecodes/i18n/locales/ur/translation.lokalise.json @@ -1968,6 +1968,9 @@ "templates.starter.cpp-wasm": { "translation": "سی++ (واسم) شروعاتی" }, + "templates.starter.crystal-wasm": { + "translation": "Crystal شروعاتی" + }, "templates.starter.csharp-wasm": { "translation": "C# (واسم) شروعاتی" }, @@ -1980,6 +1983,9 @@ "templates.starter.daisyui": { "translation": "daisyUI شروعاتی" }, + "templates.starter.dart": { + "translation": "Dart شروعاتی" + }, "templates.starter.diagrams": { "translation": "ڈایاگرامز شروعاتی" }, @@ -1992,6 +1998,9 @@ "templates.starter.fennel": { "translation": "فینل شروعاتی" }, + "templates.starter.flutter": { + "translation": "Flutter شروعاتی" + }, "templates.starter.fortran-wasm": { "translation": "Fortran شروعاتی" }, diff --git a/src/livecodes/i18n/locales/ur/translation.ts b/src/livecodes/i18n/locales/ur/translation.ts index 987d39016..4ffe0b3a9 100644 --- a/src/livecodes/i18n/locales/ur/translation.ts +++ b/src/livecodes/i18n/locales/ur/translation.ts @@ -995,14 +995,17 @@ const translation: I18nTranslation = { commonlisp: 'کامن لسپ شروعاتی', cpp: 'سی++ شروعاتی', 'cpp-wasm': 'سی++ (واسم) شروعاتی', + 'crystal-wasm': 'Crystal شروعاتی', 'csharp-wasm': 'C# (واسم) شروعاتی', 'd-wasm': 'D شروعاتی', d3: 'D3 شروعاتی', daisyui: 'daisyUI شروعاتی', + dart: 'Dart شروعاتی', diagrams: 'ڈایاگرامز شروعاتی', elm: 'ایلم شروعاتی', fanak: 'Fanak شروعاتی', fennel: 'فینل شروعاتی', + flutter: 'Flutter شروعاتی', 'fortran-wasm': 'Fortran شروعاتی', fsharp: 'F# شروعاتی', 'fsharp-wasm': 'F# (واسم) شروعاتی', 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 49c630ae7..7392a070b 100644 --- a/src/livecodes/i18n/locales/zh-CN/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/zh-CN/language-info.lokalise.json @@ -183,6 +183,15 @@ "cppWasm.name": { "translation": "C++ (Wasm)" }, + "crystal-wasm.desc": { + "translation": "Crystal 自带的编译器,编译为 WebAssembly — 搭配 LLVM 的链接器及其所链接的 WASI sysroot — 完全在浏览器中运行。" + }, + "crystal-wasm.link": { + "translation": " Crystal 官方网站 Crystal 语言参考 标准库 API 《Y分钟学会X》,其中X=Crystal LiveCodes 文档 加载入门模板 " + }, + "crystal-wasm.name": { + "translation": "Crystal (Wasm)" + }, "csharpWasm.desc": { "translation": "在 WebAssembly 上运行的 C# 编译器,使用Blazor" }, @@ -201,6 +210,15 @@ "d-wasm.name": { "translation": "D (Wasm)" }, + "dart.desc": { + "translation": "Dart 由 Dart 团队的客户端工具链(DDC)— 也就是驱动 DartPad 的同一套工具链 — 编译为 JavaScript,完全在浏览器中运行。编译后的包随后在结果页面中运行。不涉及任何服务器。" + }, + "dart.link": { + "translation": " Dart 官方网站 Dart 文档 DartPad LiveCodes 文档 加载入门模板 " + }, + "dart.name": { + "translation": "Dart" + }, "diagrams.desc1": { "translation": "(实验性)" }, @@ -279,6 +297,15 @@ "flow.name": { "translation": "Flow" }, + "flutter.desc": { + "translation": "Flutter 使用与 Dart 相同的客户端工具链编译为 JavaScript,随后 Flutter 引擎在结果页面中启动并渲染应用。不涉及任何服务器。" + }, + "flutter.link": { + "translation": " Flutter 官方网站 Flutter 文档 Widget 简介 LiveCodes 文档 加载入门模板 " + }, + "flutter.name": { + "translation": "Flutter" + }, "fortran-wasm.desc": { "translation": "现代 Fortran 由 LFortran 编译为 WebAssembly,完全在浏览器中运行。" }, diff --git a/src/livecodes/i18n/locales/zh-CN/language-info.ts b/src/livecodes/i18n/locales/zh-CN/language-info.ts index 0d84bf7e9..33b067eed 100644 --- a/src/livecodes/i18n/locales/zh-CN/language-info.ts +++ b/src/livecodes/i18n/locales/zh-CN/language-info.ts @@ -106,6 +106,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>标准 C++ 基金会 <3> <4>Clang 官网 <5> <6>在 Y 分钟内学习 X,其中 X=C++ <7> <8>LiveCodes 文档 <9> <10>加载启动模板 ', name: 'C++ (Wasm)', }, + 'crystal-wasm': { + desc: 'Crystal 自带的编译器,编译为 WebAssembly — 搭配 LLVM 的链接器及其所链接的 WASI sysroot — 完全在浏览器中运行。', + link: '<1> <2>Crystal 官方网站 <3> <4>Crystal 语言参考 <5> <6>标准库 API <7> <8>《Y分钟学会X》,其中X=Crystal <9> <10>LiveCodes 文档 <11> <12>加载入门模板 ', + name: 'Crystal (Wasm)', + }, csharpWasm: { desc: '在 WebAssembly 上运行的 C# 编译器,使用<1>Blazor', link: '<1> <2> C# 语言文档 <3> <4>在 Y 分钟内学习 X,其中 X=C# <5> <6> LiveCodes 文档 <7> <8>加载入门模板 ', @@ -116,6 +121,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>D 官方网站 <3> <4>D 语言规范 <5> <6>D 语言导览 <7> <8>《Y分钟学会X》,其中X=D <9> <10>LiveCodes 文档 <11> <12>加载入门模板 ', name: 'D (Wasm)', }, + dart: { + desc: 'Dart 由 Dart 团队的客户端工具链(DDC)— 也就是驱动 DartPad 的同一套工具链 — 编译为 JavaScript,完全在浏览器中运行。编译后的包随后在结果页面中运行。不涉及任何服务器。', + link: '<1> <2>Dart 官方网站 <3> <4>Dart 文档 <5> <6>DartPad <7> <8>LiveCodes 文档 <9> <10>加载入门模板 ', + name: 'Dart', + }, diagrams: { desc1: '(实验性)', desc2: '使用代码绘制图表。支持:', @@ -159,6 +169,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1> <2>Flow 官方网站 <3> <4>Flow 文档 ', name: 'Flow', }, + flutter: { + desc: 'Flutter 使用与 Dart 相同的客户端工具链编译为 JavaScript,随后 Flutter 引擎在结果页面中启动并渲染应用。不涉及任何服务器。', + link: '<1> <2>Flutter 官方网站 <3> <4>Flutter 文档 <5> <6>Widget 简介 <7> <8>LiveCodes 文档 <9> <10>加载入门模板 ', + name: 'Flutter', + }, 'fortran-wasm': { desc: '现代 Fortran 由 <1>LFortran 编译为 WebAssembly,完全在浏览器中运行。', link: '<1> <2>学习 Fortran <3> <4>LFortran 官方网站 <5> <6>Fortran 语言网站 <7> <8>《Y分钟学会X》,其中X=Fortran <9> <10>LiveCodes 文档 <11> <12>加载入门模板 ', diff --git a/src/livecodes/i18n/locales/zh-CN/translation.lokalise.json b/src/livecodes/i18n/locales/zh-CN/translation.lokalise.json index a839b5dfd..2a4ae41f3 100644 --- a/src/livecodes/i18n/locales/zh-CN/translation.lokalise.json +++ b/src/livecodes/i18n/locales/zh-CN/translation.lokalise.json @@ -1968,6 +1968,9 @@ "templates.starter.cpp-wasm": { "translation": "C++(WASM)启动模板" }, + "templates.starter.crystal-wasm": { + "translation": "Crystal 启动模板" + }, "templates.starter.csharp-wasm": { "translation": "C#(WASM)启动模板" }, @@ -1980,6 +1983,9 @@ "templates.starter.daisyui": { "translation": "daisyUI 启动模板" }, + "templates.starter.dart": { + "translation": "Dart 启动模板" + }, "templates.starter.diagrams": { "translation": "图表启动模板" }, @@ -1992,6 +1998,9 @@ "templates.starter.fennel": { "translation": "Fennel 启动模板" }, + "templates.starter.flutter": { + "translation": "Flutter 启动模板" + }, "templates.starter.fortran-wasm": { "translation": "Fortran 启动模板" }, diff --git a/src/livecodes/i18n/locales/zh-CN/translation.ts b/src/livecodes/i18n/locales/zh-CN/translation.ts index 457f481eb..297550662 100644 --- a/src/livecodes/i18n/locales/zh-CN/translation.ts +++ b/src/livecodes/i18n/locales/zh-CN/translation.ts @@ -993,14 +993,17 @@ const translation: I18nTranslation = { commonlisp: 'Common Lisp 启动模板', cpp: 'C++ 启动模板', 'cpp-wasm': 'C++(WASM)启动模板', + 'crystal-wasm': 'Crystal 启动模板', 'csharp-wasm': 'C#(WASM)启动模板', 'd-wasm': 'D 启动模板', d3: 'D3 启动模板', daisyui: 'daisyUI 启动模板', + dart: 'Dart 启动模板', diagrams: '图表启动模板', elm: 'Elm 启动模板', fanak: 'Fanak 启动模板', fennel: 'Fennel 启动模板', + flutter: 'Flutter 启动模板', 'fortran-wasm': 'Fortran 启动模板', fsharp: 'F# 启动模板', 'fsharp-wasm': 'F#(WASM)启动模板', diff --git a/src/livecodes/languages/crystal/__tests__/lang-crystal-wasm.spec.ts b/src/livecodes/languages/crystal/__tests__/lang-crystal-wasm.spec.ts new file mode 100644 index 000000000..c4fd3791a --- /dev/null +++ b/src/livecodes/languages/crystal/__tests__/lang-crystal-wasm.spec.ts @@ -0,0 +1,34 @@ +import { crystalWasm } from '../lang-crystal-wasm'; + +describe('Crystal (Wasm) language spec', () => { + test('is registered as crystal-wasm, with the wasm compiler script', () => { + expect(crystalWasm.name).toBe('crystal-wasm'); + expect(crystalWasm.title).toBe('Crystal (Wasm)'); + expect(crystalWasm.compiler).toMatchObject({ + scriptType: 'text/crystal-wasm', + compiledCodeLanguage: 'crystal-wasm', + liveReload: true, + }); + }); + + test('accepts the Crystal extensions', () => { + expect(crystalWasm.extensions).toEqual(expect.arrayContaining(['cr', 'crystal'])); + }); + + test('warns that the first run is a large download', () => { + // The compiler, the linker and the sysroot are ~22 MB compressed (68 MB inflated); the app + // shows a loading indicator while they arrive. + expect(crystalWasm.largeDownload).toBe(true); + }); + + test('loads the compiler script the build produces', () => { + const compiler = crystalWasm.compiler as unknown as { + scripts: (options: { baseUrl: string }) => string[]; + }; + expect(compiler.scripts({ baseUrl: '/' })).toEqual(['/{{hash:lang-crystal-wasm-script.js}}']); + }); + + test('highlights with the Prism Crystal grammar', () => { + expect(crystalWasm.editorSupport?.codejar).toEqual({ language: 'crystal' }); + }); +}); diff --git a/src/livecodes/languages/crystal/index.ts b/src/livecodes/languages/crystal/index.ts new file mode 100644 index 000000000..4d7e9f9aa --- /dev/null +++ b/src/livecodes/languages/crystal/index.ts @@ -0,0 +1 @@ +export * from './lang-crystal-wasm'; diff --git a/src/livecodes/languages/crystal/lang-crystal-wasm-script.ts b/src/livecodes/languages/crystal/lang-crystal-wasm-script.ts new file mode 100644 index 000000000..1b0c8bcfc --- /dev/null +++ b/src/livecodes/languages/crystal/lang-crystal-wasm-script.ts @@ -0,0 +1,203 @@ +/* eslint-disable no-console */ +import { crystalWasmBaseUrl } from '../../vendors'; +import { createLoadingReporter, runCompiler } from '../wasm-runtime'; +import { createWorkerRunner, type Runner } from '../worker-runner'; + +// Crystal's compiler is a Crystal program compiled to WebAssembly, and it does the whole job +// itself: the compiler, LLVM's linker and the WASI sysroot are one package fetched from the CDN, +// so a browser needs nothing else — there is no separate runtime to compile first, and no host +// tool. The compiler arrives through `importScripts` (its distributed build defines +// `self.crystalWasm`), and because it blocks the thread it runs on it gets a worker of its own, +// which is also what makes stdin, stdout, stderr and the exit code work. + +const SCRIPT_TYPE = 'text/crystal-wasm'; + +/** + * Options read from `config.customSettings`: `compileArgs` is fixed when the compiler is created, + * while `args` is a per-run option. + */ +interface CrystalWasmSettings { + compileArgs?: string[]; + args?: string[]; +} + +interface RunResult { + input: string; + output: string | null; + error: string | null; + exitCode: number | null; +} + +interface CrystalWasmApi { + 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(crystalWasmBaseUrl + 'dist/crystal-wasm.global.js')}); + +let compiler = null; +let compilerArgs = null; + +const getCompiler = (compileArgs = []) => { + const key = JSON.stringify(compileArgs); + if (compiler && compilerArgs === key) return compiler; + compilerArgs = key; + const previous = compiler; + const created = (async () => { + const next = await self.crystalWasm.createCompiler({ + baseUrl: ${JSON.stringify(crystalWasmBaseUrl + 'assets/crystal/')}, + compileArgs, + }); + // \`compileArgs\` is fixed when a compiler is created, so a change builds a new one and lets + // the old go; its assets are the browser's cache to keep. + 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, + // The compiler's and the linker's diagnostics; empty when the program built. + 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 => { + crystalWasm.input = input; + crystalWasm.output = output; + crystalWasm.error = error; + crystalWasm.exitCode = exitCode; + crystalWasm.ready = true; + + if (error != null) { + console.error(error); + } else if (output != null) { + console.log(output); + } + return { input, output, error, exitCode }; +}; + +window.livecodes.crystalWasm ??= {} as CrystalWasmApi; + +const crystalWasm = window.livecodes.crystalWasm; +crystalWasm.ready = false; +crystalWasm.failed = false; + +/** The custom settings of the running language, injected by the language's `inlineScript`. */ +const getSettings = (): CrystalWasmSettings => { + const settings = crystalWasm.settings?.['crystal-wasm']; + return settings != null && typeof settings === 'object' ? settings : {}; +}; + +/** The program, which the result page writes inline as a `text/crystal-wasm` script. */ +const getCode = () => { + let code = ''; + document.querySelectorAll(`script[type="${SCRIPT_TYPE}"]`).forEach((script) => { + code += `${script.textContent ?? ''}\n`; + }); + return code; +}; + +/** Start (once) downloading the compiler, showing the loading indicator while it happens. */ +const ensureLoaded = (runner: Runner): Promise => { + let init = crystalWasm.init; + if (!init) { + crystalWasm.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. + crystalWasm.init = null; + crystalWasm.failed = true; + throw error; + }); + // The failure is surfaced through `run`; do not also report it unhandled. + init.catch(() => undefined); + crystalWasm.init = init; + } + return init; +}; + +crystalWasm.loaded = new Promise((resolve, reject) => { + const interval = setInterval(() => { + if (crystalWasm.failed) { + clearInterval(interval); + reject(new Error(crystalWasm.error || 'Failed to initialize the Crystal compiler')); + } else if (crystalWasm.ready) { + clearInterval(interval); + resolve(); + } + }, 50); +}); + +crystalWasm.run = async (input?: string) => { + const stdin = `${input ?? crystalWasm.input ?? ''}`; + const code = getCode(); + if (!code.trim()) return setResult(stdin, null, null, null); + + const runner = (crystalWasm.runner = + crystalWasm.runner || createWorkerRunner({ getWorkerSrc, label: 'Crystal' })); + + return runCompiler(runner, ensureLoaded, code, stdin, setResult, getSettings()); +}; + +window.addEventListener('load', async () => { + reportLoading(true); + await crystalWasm.run(crystalWasm.input); + reportLoading(false); +}); diff --git a/src/livecodes/languages/crystal/lang-crystal-wasm.ts b/src/livecodes/languages/crystal/lang-crystal-wasm.ts new file mode 100644 index 000000000..d0ac86235 --- /dev/null +++ b/src/livecodes/languages/crystal/lang-crystal-wasm.ts @@ -0,0 +1,37 @@ +import { codemirrorLegacy } from '../../editor/codemirror/utils'; +import type { Config, LanguageSpecs } from '../../models'; +import { getLanguageCustomSettings } from '../../utils'; +import { codeMirrorBaseUrl, monacoLanguagesBaseUrl } from '../../vendors'; + +const getSettingsScript = (config: Config) => { + const settings = getLanguageCustomSettings('crystal-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-crystal-wasm-script.js}}'], + inlineScript: ({ config }) => getSettingsScript(config), + scriptType: 'text/crystal-wasm', + compiledCodeLanguage: 'crystal-wasm', + liveReload: true, + }, + extensions: ['cr', 'crystal'], + editor: 'script', + editorSupport: { + monaco: { languageSupport: monacoLanguagesBaseUrl + 'crystal.js', language: 'crystal' }, + codemirror: { + languageSupport: async () => + codemirrorLegacy((await import(codeMirrorBaseUrl + 'codemirror-lang-crystal.js')).crystal), + }, + codejar: { language: 'crystal' }, + }, + largeDownload: true, +}; diff --git a/src/livecodes/languages/languages.ts b/src/livecodes/languages/languages.ts index a82060716..647455e0e 100644 --- a/src/livecodes/languages/languages.ts +++ b/src/livecodes/languages/languages.ts @@ -18,6 +18,7 @@ import { cobolWasm } from './cobol-wasm'; import { coffeescript } from './coffeescript'; import { commonlisp } from './commonlisp'; import { cpp } from './cpp'; +import { crystalWasm } from './crystal'; import { csharpWasm } from './csharp-wasm'; import { css } from './css'; import { dWasm } from './d-wasm'; @@ -165,6 +166,7 @@ export const languages: LanguageSpecs[] = [ ocaml, nim, nimWasm, + crystalWasm, janetWasm, python, pythonWasm, diff --git a/src/livecodes/models.ts b/src/livecodes/models.ts index 693e3a4a1..d4e3ca09a 100644 --- a/src/livecodes/models.ts +++ b/src/livecodes/models.ts @@ -207,6 +207,7 @@ export interface Compiler { | 'text/d-wasm' | 'text/cobol-wasm' | 'text/rust-wasm' + | 'text/crystal-wasm' | 'text/zig-wasm' | 'text/java' | 'text/csharp-wasm' @@ -295,6 +296,7 @@ export type TemplateAlias = | 'pgsql' | 'janet' | 'mzn' + | 'crystal' | 'dartlang'; export type Template = Pick & diff --git a/src/livecodes/templates/starter/crystal-wasm-starter.ts b/src/livecodes/templates/starter/crystal-wasm-starter.ts new file mode 100644 index 000000000..6b11ae0ec --- /dev/null +++ b/src/livecodes/templates/starter/crystal-wasm-starter.ts @@ -0,0 +1,83 @@ +import type { Template } from '../../models'; + +export const crystalWasmStarter: Template = { + name: 'crystal-wasm', + aliases: ['crystal'], + title: window.deps.translateString('templates.starter.crystal-wasm', 'Crystal Starter'), + thumbnail: 'assets/templates/crystal.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: 'cr', + content: ` +title = "Crystal" +count = gets.try(&.to_i?) || -1 + +puts title +puts count + 1 +`.trimStart(), + }, +}; diff --git a/src/livecodes/templates/starter/index.ts b/src/livecodes/templates/starter/index.ts index c4df74ebf..76fd3ad70 100644 --- a/src/livecodes/templates/starter/index.ts +++ b/src/livecodes/templates/starter/index.ts @@ -19,6 +19,7 @@ import { cobolWasmStarter } from './cobol-wasm-starter'; import { coffeescriptStarter } from './coffeescript-starter'; import { commonlispStarter } from './commonlisp-starter'; import { cppStarter } from './cpp-starter'; +import { crystalWasmStarter } from './crystal-wasm-starter'; import { csharpWasmStarter } from './csharp-wasm-starter'; import { dWasmStarter } from './d-wasm-starter'; import { d3Starter } from './d3-starter'; @@ -135,6 +136,7 @@ export const starterTemplates = [ ocamlStarter, nimStarter, nimWasmStarter, + crystalWasmStarter, janetWasmStarter, pythonStarter, pythonWasmStarter, diff --git a/src/livecodes/vendors.ts b/src/livecodes/vendors.ts index 8539685ac..4958d9f7d 100644 --- a/src/livecodes/vendors.ts +++ b/src/livecodes/vendors.ts @@ -64,6 +64,8 @@ export const cjs2esUrl = /* @__PURE__ */ getUrl('cjs2es@1.1.1/dist/cjs2es.browse export const clangWasmBaseUrl = /* @__PURE__ */ getUrl('@live-codes/clang-wasm@0.3.0/'); +export const crystalWasmBaseUrl = /* @__PURE__ */ getUrl('@live-codes/crystal-wasm@0.2.0/'); + export const clioBaseUrl = /* @__PURE__ */ getUrl( '@live-codes/clio-browser-compiler@0.0.3/public/build/', ); @@ -366,7 +368,7 @@ export const monacoBaseUrl = /* @__PURE__ */ getUrl('@live-codes/monaco-editor@0 export const monacoEmacsUrl = /* @__PURE__ */ getUrl('monaco-emacs@0.3.0/dist/monaco-emacs.js'); export const monacoLanguagesBaseUrl = /* @__PURE__ */ getUrl( - '@live-codes/monaco-languages@0.3.11/dist/', + '@live-codes/monaco-languages@0.3.13/dist/', ); export const monacoThemesBaseUrl = /* @__PURE__ */ getUrl('monaco-themes@0.4.4/themes/'); diff --git a/src/sdk/models.ts b/src/sdk/models.ts index b4868c5ab..749c50a74 100644 --- a/src/sdk/models.ts +++ b/src/sdk/models.ts @@ -316,6 +316,9 @@ export type Language = | 'ocaml' | 'ml' | 'mli' + | 'cr' + | 'crystal' + | 'crystal-wasm' | 'nim' | 'nims' | 'nimble' @@ -519,6 +522,7 @@ export type TemplateName = | 'objc-wasm' | 'fortran-wasm' | 'd-wasm' + | 'crystal-wasm' | 'cobol-wasm' | 'v-wasm' | 'java' diff --git a/storybook/_stories/EmbedOptions/template.ts b/storybook/_stories/EmbedOptions/template.ts index f3e58846b..8670e7b1c 100644 --- a/storybook/_stories/EmbedOptions/template.ts +++ b/storybook/_stories/EmbedOptions/template.ts @@ -53,6 +53,7 @@ const storyDef: StoryDef = { Cpp: { props: { template: 'cpp' } }, CWasm: { props: { template: 'c-wasm' } }, CppWasm: { props: { template: 'cpp-wasm' } }, + CrystalWasm: { props: { template: 'crystal-wasm' }, storyName: 'Crystal (Wasm)' }, ObjcWasm: { props: { template: 'objc-wasm' } }, DWasm: { props: { template: 'd-wasm' } }, CobolWasm: { props: { template: 'cobol-wasm' }, storyName: 'COBOL (Wasm)' }, diff --git a/storybook/preact/stories/EmbedOptions/template.stories.ts b/storybook/preact/stories/EmbedOptions/template.stories.ts index bf24eef65..f49d5295c 100644 --- a/storybook/preact/stories/EmbedOptions/template.stories.ts +++ b/storybook/preact/stories/EmbedOptions/template.stories.ts @@ -67,6 +67,8 @@ PHPWasm.storyName = 'PHP Wasm'; export const Cpp = livecodesStory({ template: 'cpp' }); export const CWasm = livecodesStory({ template: 'c-wasm' }); export const CppWasm = livecodesStory({ template: 'cpp-wasm' }); +export const CrystalWasm = livecodesStory({ template: 'crystal-wasm' }); +CrystalWasm.storyName = 'Crystal (Wasm)'; export const ObjcWasm = livecodesStory({ template: 'objc-wasm' }); export const DWasm = livecodesStory({ template: 'd-wasm' }); export const CobolWasm = livecodesStory({ template: 'cobol-wasm' }); diff --git a/storybook/react/stories/EmbedOptions/template.stories.ts b/storybook/react/stories/EmbedOptions/template.stories.ts index bf24eef65..f49d5295c 100644 --- a/storybook/react/stories/EmbedOptions/template.stories.ts +++ b/storybook/react/stories/EmbedOptions/template.stories.ts @@ -67,6 +67,8 @@ PHPWasm.storyName = 'PHP Wasm'; export const Cpp = livecodesStory({ template: 'cpp' }); export const CWasm = livecodesStory({ template: 'c-wasm' }); export const CppWasm = livecodesStory({ template: 'cpp-wasm' }); +export const CrystalWasm = livecodesStory({ template: 'crystal-wasm' }); +CrystalWasm.storyName = 'Crystal (Wasm)'; export const ObjcWasm = livecodesStory({ template: 'objc-wasm' }); export const DWasm = livecodesStory({ template: 'd-wasm' }); export const CobolWasm = livecodesStory({ template: 'cobol-wasm' }); diff --git a/storybook/solid/stories/EmbedOptions/template.stories.ts b/storybook/solid/stories/EmbedOptions/template.stories.ts index bf24eef65..f49d5295c 100644 --- a/storybook/solid/stories/EmbedOptions/template.stories.ts +++ b/storybook/solid/stories/EmbedOptions/template.stories.ts @@ -67,6 +67,8 @@ PHPWasm.storyName = 'PHP Wasm'; export const Cpp = livecodesStory({ template: 'cpp' }); export const CWasm = livecodesStory({ template: 'c-wasm' }); export const CppWasm = livecodesStory({ template: 'cpp-wasm' }); +export const CrystalWasm = livecodesStory({ template: 'crystal-wasm' }); +CrystalWasm.storyName = 'Crystal (Wasm)'; export const ObjcWasm = livecodesStory({ template: 'objc-wasm' }); export const DWasm = livecodesStory({ template: 'd-wasm' }); export const CobolWasm = livecodesStory({ template: 'cobol-wasm' }); diff --git a/storybook/svelte/stories/EmbedOptions/template.stories.ts b/storybook/svelte/stories/EmbedOptions/template.stories.ts index bf24eef65..f49d5295c 100644 --- a/storybook/svelte/stories/EmbedOptions/template.stories.ts +++ b/storybook/svelte/stories/EmbedOptions/template.stories.ts @@ -67,6 +67,8 @@ PHPWasm.storyName = 'PHP Wasm'; export const Cpp = livecodesStory({ template: 'cpp' }); export const CWasm = livecodesStory({ template: 'c-wasm' }); export const CppWasm = livecodesStory({ template: 'cpp-wasm' }); +export const CrystalWasm = livecodesStory({ template: 'crystal-wasm' }); +CrystalWasm.storyName = 'Crystal (Wasm)'; export const ObjcWasm = livecodesStory({ template: 'objc-wasm' }); export const DWasm = livecodesStory({ template: 'd-wasm' }); export const CobolWasm = livecodesStory({ template: 'cobol-wasm' }); diff --git a/storybook/vue/stories/EmbedOptions/template.stories.ts b/storybook/vue/stories/EmbedOptions/template.stories.ts index bf24eef65..f49d5295c 100644 --- a/storybook/vue/stories/EmbedOptions/template.stories.ts +++ b/storybook/vue/stories/EmbedOptions/template.stories.ts @@ -67,6 +67,8 @@ PHPWasm.storyName = 'PHP Wasm'; export const Cpp = livecodesStory({ template: 'cpp' }); export const CWasm = livecodesStory({ template: 'c-wasm' }); export const CppWasm = livecodesStory({ template: 'cpp-wasm' }); +export const CrystalWasm = livecodesStory({ template: 'crystal-wasm' }); +CrystalWasm.storyName = 'Crystal (Wasm)'; export const ObjcWasm = livecodesStory({ template: 'objc-wasm' }); export const DWasm = livecodesStory({ template: 'd-wasm' }); export const CobolWasm = livecodesStory({ template: 'cobol-wasm' }); diff --git a/storybook/web-components/stories/EmbedOptions/template.stories.ts b/storybook/web-components/stories/EmbedOptions/template.stories.ts index bf24eef65..f49d5295c 100644 --- a/storybook/web-components/stories/EmbedOptions/template.stories.ts +++ b/storybook/web-components/stories/EmbedOptions/template.stories.ts @@ -67,6 +67,8 @@ PHPWasm.storyName = 'PHP Wasm'; export const Cpp = livecodesStory({ template: 'cpp' }); export const CWasm = livecodesStory({ template: 'c-wasm' }); export const CppWasm = livecodesStory({ template: 'cpp-wasm' }); +export const CrystalWasm = livecodesStory({ template: 'crystal-wasm' }); +CrystalWasm.storyName = 'Crystal (Wasm)'; export const ObjcWasm = livecodesStory({ template: 'objc-wasm' }); export const DWasm = livecodesStory({ template: 'd-wasm' }); export const CobolWasm = livecodesStory({ template: 'cobol-wasm' }); diff --git a/vendor-licenses.md b/vendor-licenses.md index c4d46c55a..6a32514a6 100644 --- a/vendor-licenses.md +++ b/vendor-licenses.md @@ -352,6 +352,12 @@ wacl: [BSD 3-Clause License](https://github.com/ecky-l/wacl/blob/9daacabb0102a99 @live-codes/dart-wasm: [MIT License](https://github.com/live-codes/browser-dart/blob/main/LICENSE) +@live-codes/crystal-wasm: [MIT License](https://github.com/live-codes/browser-crystal/blob/main/LICENSE) + +Crystal compiler and standard library: [Apache-2.0 License](https://github.com/crystal-lang/crystal/blob/master/LICENSE) + +LLVM and the wasm sysroot libraries: [Apache-2.0 WITH LLVM-exception](https://github.com/llvm/llvm-project/blob/main/LICENSE.TXT) and [MIT](https://github.com/WebAssembly/wasi-libc/blob/main/LICENSE.md) + @live-codes/dlang-wasm: [MIT License](https://github.com/live-codes/browser-d/blob/main/LICENSE) DMD / druntime / Phobos (Wasm): [BSL-1.0 License](https://github.com/dlang/dmd/blob/master/LICENSE.txt)