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++ القياسية2> 1> <3> <4>الموقع الرسمي لـ Clang4> 3> <5> <6>تعلم X في Y دقائق، حيث X=C++6> 5> <7> <8>وثائق LiveCodes8> 7> <9> <10>تحميل القالب الأولي10> 9>',
name: 'C++ (Wasm)',
},
+ 'crystal-wasm': {
+ desc: 'مترجم Crystal الخاص، المُجمَّع إلى WebAssembly — مع رابط LLVM ونظام WASI sysroot الذي يرتبط به — يعمل بالكامل داخل المتصفح.',
+ link: '<1> <2>الموقع الرسمي لـ Crystal2> 1> <3> <4>مرجع لغة Crystal4> 3> <5> <6>واجهة برمجة المكتبة القياسية6> 5> <7> <8>تعلم X في Y دقيقة، حيث X = Crystal8> 7> <9> <10>وثائق LiveCodes10> 9> <11> <12>تحميل قالب البدء12> 11>',
+ name: 'Crystal (Wasm)',
+ },
csharpWasm: {
desc: 'مترجم C# الذي يعمل على WebAssembly، باستخدام <1>Blazor1>',
link: '<1> <2>وثائق لغة C#2> 1> <3> <4> تعلم X في دقائق Y، حيث X = C#4> 3> <5> <6> وثائق LiveCodes6> 5> <7> <8> تحميل قالب البدء8> 7>',
@@ -116,6 +121,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>الموقع الرسمي لـ D2> 1> <3> <4>مواصفات لغة D4> 3> <5> <6>جولة في لغة D6> 5> <7> <8>تعلم X في Y دقيقة، حيث X = D8> 7> <9> <10>وثائق LiveCodes10> 9> <11> <12>تحميل قالب البدء12> 11>',
name: 'D (Wasm)',
},
+ dart: {
+ desc: 'يتم تجميع Dart إلى JavaScript بواسطة سلسلة أدوات Dart من جهة العميل (DDC) — نفسها التي تشغّل DartPad — وتعمل بالكامل داخل المتصفح. ثم تعمل الحزمة المُجمَّعة في صفحة النتيجة. لا يشارك أي خادم.',
+ link: '<1> <2>الموقع الرسمي لـ Dart2> 1> <3> <4>وثائق Dart4> 3> <5> <6>DartPad6> 5> <7> <8>وثائق LiveCodes8> 7> <9> <10>تحميل قالب البدء10> 9>',
+ name: 'Dart',
+ },
diagrams: {
desc1: '(تجريبي)',
desc2: 'رسومات بيانية كبرمجة. يدعم:',
@@ -159,6 +169,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>الموقع الرسمي لفلو2> 1> <3> <4>وثائق فلو4> 3>',
name: 'Flow',
},
+ flutter: {
+ desc: 'يتم تجميع Flutter إلى JavaScript باستخدام سلسلة الأدوات من جهة العميل نفسها التي يستخدمها Dart، ثم يتم تشغيل محرك Flutter في صفحة النتيجة، حيث يُعرض التطبيق. لا يشارك أي خادم.',
+ link: '<1> <2>الموقع الرسمي لـ Flutter2> 1> <3> <4>وثائق Flutter4> 3> <5> <6>مقدمة إلى الودجات6> 5> <7> <8>وثائق LiveCodes8> 7> <9> <10>تحميل قالب البدء10> 9>',
+ name: 'Flutter',
+ },
'fortran-wasm': {
desc: 'يتم تجميع Fortran الحديثة إلى WebAssembly بواسطة <1>LFortran1>، وتعمل بالكامل داخل المتصفح.',
link: '<1> <2>تعلم Fortran2> 1> <3> <4>الموقع الرسمي لـ LFortran4> 3> <5> <6>موقع لغة Fortran6> 5> <7> <8>تعلم X في Y دقيقة، حيث X = Fortran8> 7> <9> <10>وثائق LiveCodes10> 9> <11> <12>تحميل قالب البدء12> 11>',
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++ Foundation2> 1> <3> <4>Clang অফিসিয়াল ওয়েবসাইট4> 3> <5> <6>Y মিনিটে X শিখুন, যেখানে X=C++6> 5> <7> <8>লাইভকোডস ডকুমেন্টেশন8> 7> <9> <10>স্টার্টার টেমপ্লেট লোড করুন10> 9>',
name: 'C++ (Wasm)',
},
+ 'crystal-wasm': {
+ desc: 'Crystal-এর নিজস্ব কম্পাইলার, WebAssembly-তে কম্পাইল করা — LLVM-এর লিঙ্কার এবং যে WASI sysroot-এর সাথে এটি লিঙ্ক করে, তা সহ — সম্পূর্ণভাবে ব্রাউজারে চলে।',
+ link: '<1> <2>Crystal অফিসিয়াল ওয়েবসাইট2> 1> <3> <4>Crystal ভাষার রেফারেন্স4> 3> <5> <6>স্ট্যান্ডার্ড লাইব্রেরি API6> 5> <7> <8>Y মিনিটে X শিখুন, যেখানে X=Crystal8> 7> <9> <10>লাইভকোড ডকুমেন্টেশন10> 9> <11> <12>স্টার্টার টেমপ্লেট লোড করুন12> 11>',
+ name: 'Crystal (Wasm)',
+ },
csharpWasm: {
desc: 'WebAssembly-তে চলমান C# কম্পাইলার, <1>Blazor1> ব্যবহার করে',
link: '<1> <2>C# ভাষা ডকুমেন্টেশন2> 1> <3> <4>Y মিনিটে X শিখুন, যেখানে X=C#4> 3> <5> <6>LiveCodes ডকুমেন্টেশন6> 5> <7> <8>স্টার্টার টেমপ্লেট লোড করুন8> 7>',
@@ -116,6 +121,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>D অফিসিয়াল ওয়েবসাইট2> 1> <3> <4>D ভাষা স্পেসিফিকেশন4> 3> <5> <6>D ভাষা ট্যুর6> 5> <7> <8>Y মিনিটে X শিখুন, যেখানে X=D8> 7> <9> <10>লাইভকোডস ডকুমেন্টেশন10> 9> <11> <12>স্টার্টার টেমপ্লেট লোড করুন12> 11>',
name: 'D (Wasm)',
},
+ dart: {
+ desc: 'Dart-কে Dart দলের ক্লায়েন্ট-সাইড টুলচেইন (DDC) দ্বারা JavaScript-এ কম্পাইল করা হয় — যেটি DartPad চালায় — এবং এটি সম্পূর্ণভাবে ব্রাউজারে চলে। এরপর কম্পাইল করা বান্ডেলটি ফলাফল পৃষ্ঠায় চলে। কোনো সার্ভার জড়িত নয়।',
+ link: '<1> <2>Dart অফিসিয়াল ওয়েবসাইট2> 1> <3> <4>Dart ডকুমেন্টেশন4> 3> <5> <6>DartPad6> 5> <7> <8>লাইভকোড ডকুমেন্টেশন8> 7> <9> <10>স্টার্টার টেমপ্লেট লোড করুন10> 9>',
+ name: 'Dart',
+ },
diagrams: {
desc1: '(পরীক্ষামূলক)',
desc2: 'কোড-হিসাবে-ডায়াগ্রাম। সমর্থন করে:',
@@ -159,6 +169,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Flow অফিসিয়াল ওয়েবসাইট2> 1> <3> <4>Flow ডকুমেন্টেশন4> 3>',
name: 'Flow',
},
+ flutter: {
+ desc: 'Flutter-কে Dart-এর মতো একই ক্লায়েন্ট-সাইড টুলচেইন দিয়ে JavaScript-এ কম্পাইল করা হয়, এবং এরপর Flutter ইঞ্জিন ফলাফল পৃষ্ঠায় বুট হয়, যেখানে অ্যাপটি রেন্ডার হয়। কোনো সার্ভার জড়িত নয়।',
+ link: '<1> <2>Flutter অফিসিয়াল ওয়েবসাইট2> 1> <3> <4>Flutter ডকুমেন্টেশন4> 3> <5> <6>উইজেটের পরিচিতি6> 5> <7> <8>লাইভকোড ডকুমেন্টেশন8> 7> <9> <10>স্টার্টার টেমপ্লেট লোড করুন10> 9>',
+ name: 'Flutter',
+ },
'fortran-wasm': {
desc: 'আধুনিক Fortran <1>LFortran1> দ্বারা WebAssembly-তে কম্পাইল করা হয় এবং সম্পূর্ণভাবে ব্রাউজারে চলে।',
link: '<1> <2>Fortran শিখুন2> 1> <3> <4>LFortran অফিসিয়াল ওয়েবসাইট4> 3> <5> <6>Fortran ভাষার ওয়েবসাইট6> 5> <7> <8>Y মিনিটে X শিখুন, যেখানে X=Fortran8> 7> <9> <10>লাইভকোডস ডকুমেন্টেশন10> 9> <11> <12>স্টার্টার টেমপ্লেট লোড করুন12> 11>',
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++ Foundation2> 1> <3> <4>Clang offizielle Website4> 3> <5> <6>Lerne X in Y Minuten, wobei X=C++6> 5> <7> <8>LiveCodes-Dokumentation8> 7> <9> <10>Starter-Vorlage laden10> 9>',
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 Crystal2> 1> <3> <4>Crystal-Sprachreferenz4> 3> <5> <6>Standardbibliothek-API6> 5> <7> <8>Lerne X in Y Minuten, wobei X = Crystal8> 7> <9> <10>LiveCodes-Dokumentation10> 9> <11> <12>Startervorlage laden12> 11>',
+ name: 'Crystal (Wasm)',
+ },
csharpWasm: {
desc: 'C#-Compiler, der auf WebAssembly läuft, unter Verwendung von <1>Blazor1>',
link: '<1> <2>Dokumentation der Sprache C#2> 1> <3> <4> Lernen Sie X in Y Minuten, wobei X=C#4> 3> <5> <6> LiveCodes Dokumentation6> 5> <7> <8> Laden Sie die Startvorlage8> 7>',
@@ -118,6 +123,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Offizielle Website von D2> 1> <3> <4>D-Sprachspezifikation4> 3> <5> <6>D Sprachführung6> 5> <7> <8>Lerne X in Y Minuten, wobei X = D8> 7> <9> <10>LiveCodes-Dokumentation10> 9> <11> <12>Startervorlage laden12> 11>',
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 Dart2> 1> <3> <4>Dart-Dokumentation4> 3> <5> <6>DartPad6> 5> <7> <8>LiveCodes-Dokumentation8> 7> <9> <10>Startervorlage laden10> 9>',
+ name: 'Dart',
+ },
diagrams: {
desc1: '(Experimentell)',
desc2: 'Diagramme als Code. Unterstützt:',
@@ -161,6 +171,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Flow offizielle Website2> 1> <3> <4>Flow Dokumentation4> 3>',
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 Flutter2> 1> <3> <4>Flutter-Dokumentation4> 3> <5> <6>Einführung in Widgets6> 5> <7> <8>LiveCodes-Dokumentation8> 7> <9> <10>Startervorlage laden10> 9>',
+ name: 'Flutter',
+ },
'fortran-wasm': {
desc: 'Modernes Fortran wird von <1>LFortran1> nach WebAssembly kompiliert und läuft vollständig im Browser.',
link: '<1> <2>Fortran lernen2> 1> <3> <4>Offizielle Website von LFortran4> 3> <5> <6>Website der Sprache Fortran6> 5> <7> <8>Lerne X in Y Minuten, wobei X = Fortran8> 7> <9> <10>LiveCodes-Dokumentation10> 9> <11> <12>Startervorlage laden12> 11>',
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++ Foundation2> 1> <3> <4>Clang official website4> 3> <5> <6>Learn X in Y minutes, where X=C++6> 5> <7> <8>LiveCodes Documentation8> 7> <9> <10>Load starter template10> 9>',
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 website2> 1> <3> <4>Crystal language reference4> 3> <5> <6>Standard library API6> 5> <7> <8>Learn X in Y minutes, where X=Crystal8> 7> <9> <10>LiveCodes Documentation10> 9> <11> <12>Load starter template12> 11>',
+ name: 'Crystal (Wasm)',
+ },
csharpWasm: {
desc: 'C# compiler running on WebAssembly, using <1>Blazor1>',
link: '<1> <2>C# language documentation2> 1> <3> <4>Learn X in Y minutes, where X=C#4> 3> <5> <6>LiveCodes Documentation6> 5> <7> <8>Load starter template8> 7>',
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++2> 1> <3> <4>Sitio web oficial de Clang4> 3> <5> <6>Aprende X en Y minutos, donde X=C++6> 5> <7> <8>Documentación de LiveCodes8> 7> <9> <10>Cargar plantilla inicial10> 9>',
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 Crystal2> 1> <3> <4>Referencia del lenguaje Crystal4> 3> <5> <6>API de la biblioteca estándar6> 5> <7> <8>Aprende X en Y minutos, donde X = Crystal8> 7> <9> <10>Documentación de LiveCodes10> 9> <11> <12>Cargar plantilla de inicio12> 11>',
+ name: 'Crystal (Wasm)',
+ },
csharpWasm: {
desc: 'Compilador de C# que funciona con WebAssembly, utilizando <1>Blazor1>',
link: '<1> <2>Documentación del lenguaje C#2> 1> <3> <4> Aprenda X en Y minutos, donde X=C#4> 3> <5> <6> Documentación de LiveCodes6> 5> <7> <8> Cargue la plantilla de inicio8> 7>',
@@ -117,6 +122,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Página web oficial de D2> 1> <3> <4>Especificación del lenguaje D4> 3> <5> <6>Tour del lenguaje D6> 5> <7> <8>Aprende X en Y minutos, donde X = D8> 7> <9> <10>Documentación de LiveCodes10> 9> <11> <12>Cargar plantilla de inicio12> 11>',
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 Dart2> 1> <3> <4>Documentación de Dart4> 3> <5> <6>DartPad6> 5> <7> <8>Documentación de LiveCodes8> 7> <9> <10>Cargar plantilla de inicio10> 9>',
+ 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 Flow2> 1> <3> <4>Documentación de Flow4> 3>',
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 Flutter2> 1> <3> <4>Documentación de Flutter4> 3> <5> <6>Introducción a los widgets6> 5> <7> <8>Documentación de LiveCodes8> 7> <9> <10>Cargar plantilla de inicio10> 9>',
+ name: 'Flutter',
+ },
'fortran-wasm': {
desc: 'Fortran moderno compilado a WebAssembly por <1>LFortran1>, ejecutándose íntegramente en el navegador.',
link: '<1> <2>Aprender Fortran2> 1> <3> <4>Página web oficial de LFortran4> 3> <5> <6>Sitio web del lenguaje Fortran6> 5> <7> <8>Aprende X en Y minutos, donde X = Fortran8> 7> <9> <10>Documentación de LiveCodes10> 9> <11> <12>Cargar plantilla de inicio12> 11>',
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>بنیاد استاندارد ++C2> 1> <3> <4>وبسایت رسمی Clang4> 3> <5> <6>یادگیری X در Y دقیقه، جایی که X=C++6> 5> <7> <8>مستندات لایوکدز8> 7> <9> <10>بارگذاری قالب شروع کننده10> 9>',
name: 'C++ (Wasm)',
},
+ 'crystal-wasm': {
+ desc: 'کامپایلر اختصاصی Crystal، که به WebAssembly کامپایل شده — همراه با پیونددهنده LLVM و sysroot WASI که به آن پیوند میخورد — کاملاً در مرورگر اجرا میشود.',
+ link: '<1> <2>وبسایت رسمی Crystal2> 1> <3> <4>مرجع زبان Crystal4> 3> <5> <6>API کتابخانه استاندارد6> 5> <7> <8>یادگیری X در Y دقیقه، که X=Crystal8> 7> <9> <10>مستندات LiveCodes10> 9> <11> <12>بارگیری قالب شروع12> 11>',
+ name: 'Crystal (Wasm)',
+ },
csharpWasm: {
desc: 'کامپایلر #C که روی WebAssembly اجرا میشود، با استفاده از <1>Blazor1>',
link: '<1> <2>مستندات زبان #C2> 1> <3> <4>یادگیری X در Y دقیقه، جایی که X=C#4> 3> <5> <6>مستندات LiveCodes6> 5> <7> <8>بارگذاری قالب شروع کننده8> 7>',
@@ -117,6 +122,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>وبسایت رسمی D2> 1> <3> <4>مشخصات زبان D4> 3> <5> <6>تور زبان D6> 5> <7> <8>یادگیری X در Y دقیقه، که X=D8> 7> <9> <10>مستندات لایوکدز10> 9> <11> <12>بارگذاری قالب شروع12> 11>',
name: 'D (Wasm)',
},
+ dart: {
+ desc: 'Dart توسط زنجیره ابزار سمت کلاینت تیم Dart (DDC) — همان که DartPad را اجرا میکند — به JavaScript کامپایل میشود و کاملاً در مرورگر اجرا میشود. سپس بسته کامپایلشده در صفحه نتیجه اجرا میشود. هیچ سروری دخیل نیست.',
+ link: '<1> <2>وبسایت رسمی Dart2> 1> <3> <4>اسناد Dart4> 3> <5> <6>DartPad6> 5> <7> <8>مستندات LiveCodes8> 7> <9> <10>بارگیری قالب شروع10> 9>',
+ name: 'Dart',
+ },
diagrams: {
desc1: '(آزمایشی)',
desc2: 'نمودارها به صورت کد. پشتیبانی از:',
@@ -160,6 +170,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>وبسایت رسمی Flow2> 1> <3> <4>مستندات Flow4> 3>',
name: 'Flow',
},
+ flutter: {
+ desc: 'Flutter با همان زنجیره ابزار سمت کلاینتی که Dart استفاده میکند به JavaScript کامپایل میشود، و سپس موتور Flutter در صفحه نتیجه راهاندازی میشود، جایی که برنامه رندر میشود. هیچ سروری دخیل نیست.',
+ link: '<1> <2>وبسایت رسمی Flutter2> 1> <3> <4>اسناد Flutter4> 3> <5> <6>مقدمهای بر ویجتها6> 5> <7> <8>مستندات LiveCodes8> 7> <9> <10>بارگیری قالب شروع10> 9>',
+ name: 'Flutter',
+ },
'fortran-wasm': {
desc: 'فورتران مدرن توسط <1>LFortran1> به WebAssembly کامپایل میشود و کاملاً در مرورگر اجرا میشود.',
link: '<1> <2>یادگیری Fortran2> 1> <3> <4>وبسایت رسمی LFortran4> 3> <5> <6>وبسایت زبان Fortran6> 5> <7> <8>یادگیری X در Y دقیقه، که X=Fortran8> 7> <9> <10>مستندات لایوکدز10> 9> <11> <12>بارگذاری قالب شروع12> 11>',
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++2> 1> <3> <4>Site officiel de Clang4> 3> <5> <6>Apprenez X en Y minutes, où X=C++6> 5> <7> <8>Documentation LiveCodes8> 7> <9> <10>Charger le modèle de démarrage10> 9>',
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 Crystal2> 1> <3> <4>Référence du langage Crystal4> 3> <5> <6>API de la bibliothèque standard6> 5> <7> <8>Apprenez X en Y minutes, où X = Crystal8> 7> <9> <10>Documentation LiveCodes10> 9> <11> <12>Charger un modèle de démarrage12> 11>',
+ name: 'Crystal (Wasm)',
+ },
csharpWasm: {
desc: 'Compilateur C# fonctionnant sur WebAssembly, utilisant <1>Blazor1>',
link: '<1> <2>Documentation sur le langage C#2> 1> <3> <4> Apprenez X en Y minutes, où X=C#4> 3> <5> <6> Documentation LiveCodes6> 5> <7> <8> Charger le modèle de démarrage8> 7>',
@@ -117,6 +122,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Site officiel de D2> 1> <3> <4>Spécification du langage D4> 3> <5> <6>Tour du langage D6> 5> <7> <8>Apprenez X en Y minutes, où X = D8> 7> <9> <10>Documentation LiveCodes10> 9> <11> <12>Charger un modèle de démarrage12> 11>',
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 Dart2> 1> <3> <4>Documentation Dart4> 3> <5> <6>DartPad6> 5> <7> <8>Documentation LiveCodes8> 7> <9> <10>Charger un modèle de démarrage10> 9>',
+ 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 Flow2> 1> <3> <4>Documentation de Flow4> 3>',
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 Flutter2> 1> <3> <4>Documentation Flutter4> 3> <5> <6>Introduction aux widgets6> 5> <7> <8>Documentation LiveCodes8> 7> <9> <10>Charger un modèle de démarrage10> 9>',
+ name: 'Flutter',
+ },
'fortran-wasm': {
desc: "Fortran moderne compilé en WebAssembly par <1>LFortran1>, s'exécutant entièrement dans le navigateur.",
link: '<1> <2>Apprendre Fortran2> 1> <3> <4>Site officiel de LFortran4> 3> <5> <6>Site web du langage Fortran6> 5> <7> <8>Apprenez X en Y minutes, où X = Fortran8> 7> <9> <10>Documentation LiveCodes10> 9> <11> <12>Charger un modèle de démarrage12> 11>',
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++ फाउंडेशन2> 1> <3> <4>Clang आधिकारिक वेबसाइट4> 3> <5> <6>X को Y मिनटों में सीखें, जहां X=C++6> 5> <7> <8>लाइवकोड्स दस्तावेज़ीकरण8> 7> <9> <10>स्टार्टर टेम्पलेट लोड करें10> 9>',
name: 'C++ (Wasm)',
},
+ 'crystal-wasm': {
+ desc: 'Crystal का अपना कंपाइलर, WebAssembly में संकलित — LLVM के लिंकर और WASI sysroot के साथ जिससे यह लिंक करता है — पूरी तरह से ब्राउज़र में चलता है।',
+ link: '<1> <2>Crystal आधिकारिक वेबसाइट2> 1> <3> <4>Crystal भाषा संदर्भ4> 3> <5> <6>मानक पुस्तकालय API6> 5> <7> <8>Y मिनट में X सीखें, जहाँ X=Crystal8> 7> <9> <10>लाइवकोड दस्तावेजीकरण10> 9> <11> <12>स्टार्टर टेम्पलेट लोड करें12> 11>',
+ name: 'Crystal (Wasm)',
+ },
csharpWasm: {
desc: 'C# कंपाइलर WebAssembly पर चल रहा है, का उपयोग करके <1>ब्लेज़र1>',
link: '<1> <2>सी# भाषा दस्तावेज़ीकरण2> 1> <3> <4>एक्स को वाई मिनटों में सीखें, जहां एक्स=सी#4> 3> <5> <6>लाइवकोड दस्तावेज़ीकरण6> 5> <7> <8>स्टार्टर टेम्पलेट लोड करें8> 7>',
@@ -117,6 +122,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>D आधिकारिक वेबसाइट2> 1> <3> <4>D भाषा विनिर्देश4> 3> <5> <6>D भाषा टूर6> 5> <7> <8>Y मिनट में X सीखें, जहाँ X=D8> 7> <9> <10>लाइवकोड्स दस्तावेज़ीकरण10> 9> <11> <12>स्टार्टर टेम्पलेट लोड करें12> 11>',
name: 'D (Wasm)',
},
+ dart: {
+ desc: 'Dart को Dart टीम की क्लाइंट-साइड टूलचेन (DDC) द्वारा JavaScript में संकलित किया जाता है — वही जो DartPad को चलाती है — और यह पूरी तरह से ब्राउज़र में चलता है। फिर संकलित बंडल परिणाम पृष्ठ पर चलता है। कोई सर्वर शामिल नहीं है।',
+ link: '<1> <2>Dart आधिकारिक वेबसाइट2> 1> <3> <4>Dart दस्तावेज4> 3> <5> <6>DartPad6> 5> <7> <8>लाइवकोड दस्तावेजीकरण8> 7> <9> <10>स्टार्टर टेम्पलेट लोड करें10> 9>',
+ name: 'Dart',
+ },
diagrams: {
desc1: '(प्रायोगिक)',
desc2: 'कोड के रूप में आरेख। समर्थन करता है:',
@@ -160,6 +170,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Flow आधिकारिक वेबसाइट2> 1> <3> <4>Flow दस्तावेज़ीकरण4> 3>',
name: 'Flow',
},
+ flutter: {
+ desc: 'Flutter को Dart के समान क्लाइंट-साइड टूलचेन के साथ JavaScript में संकलित किया जाता है, और फिर Flutter इंजन परिणाम पृष्ठ पर बूट होता है, जहाँ ऐप रेंडर होता है। कोई सर्वर शामिल नहीं है।',
+ link: '<1> <2>Flutter आधिकारिक वेबसाइट2> 1> <3> <4>Flutter दस्तावेज4> 3> <5> <6>विजेट का परिचय6> 5> <7> <8>लाइवकोड दस्तावेजीकरण8> 7> <9> <10>स्टार्टर टेम्पलेट लोड करें10> 9>',
+ name: 'Flutter',
+ },
'fortran-wasm': {
desc: 'आधुनिक फोरट्रान को <1>LFortran1> द्वारा WebAssembly में संकलित किया जाता है, जो पूरी तरह से ब्राउज़र में चलता है।',
link: '<1> <2>फोरट्रान सीखें2> 1> <3> <4>LFortran आधिकारिक वेबसाइट4> 3> <5> <6>फोरट्रान भाषा वेबसाइट6> 5> <7> <8>Y मिनट में X सीखें, जहाँ X=Fortran8> 7> <9> <10>लाइवकोड्स दस्तावेज़ीकरण10> 9> <11> <12>स्टार्टर टेम्पलेट लोड करें12> 11>',
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++ Foundation2> 1> <3> <4>Clang hivatalos weboldal4> 3> <5> <6>Tanulj X-et Y perc alatt, ahol X=C++6> 5> <7> <8>LiveCodes dokumentáció8> 7> <9> <10>Kezdő sablon betöltése10> 9>',
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 weboldala2> 1> <3> <4>Crystal nyelvi referencia4> 3> <5> <6>Standard könyvtár API6> 5> <7> <8>Tanulj meg X-et Y perc alatt, ahol X=Crystal8> 7> <9> <10>LiveCodes dokumentáció10> 9> <11> <12>Kezdő sablon betöltése12> 11>',
+ name: 'Crystal (Wasm)',
+ },
csharpWasm: {
desc: 'C# fordító WebAssembly-n futva, a <1>Blazor1> használatával',
link: '<1> <2>C# nyelvi dokumentáció2> 1> <3> <4>Tanulj X-et Y perc alatt, ahol X=C#4> 3> <5> <6>LiveCodes dokumentáció6> 5> <7> <8>Kezdő sablon betöltése8> 7>',
@@ -118,6 +123,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>A D hivatalos weboldala2> 1> <3> <4>D nyelvi specifikáció4> 3> <5> <6>D nyelvi túra6> 5> <7> <8>Tanulj meg X-et Y perc alatt, ahol X=D8> 7> <9> <10>LiveCodes dokumentáció10> 9> <11> <12>Indító sablon betöltése12> 11>',
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 weboldala2> 1> <3> <4>Dart dokumentáció4> 3> <5> <6>DartPad6> 5> <7> <8>LiveCodes dokumentáció8> 7> <9> <10>Kezdő sablon betöltése10> 9>',
+ 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 weboldal2> 1> <3> <4>Flow dokumentáció4> 3>',
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 weboldala2> 1> <3> <4>Flutter dokumentáció4> 3> <5> <6>Bevezetés a widgetekbe6> 5> <7> <8>LiveCodes dokumentáció8> 7> <9> <10>Kezdő sablon betöltése10> 9>',
+ name: 'Flutter',
+ },
'fortran-wasm': {
desc: 'A modern Fortran a <1>LFortran1> segítségével WebAssembly-re fordul, és teljes egészében a böngészőben fut.',
link: '<1> <2>Fortran tanulása2> 1> <3> <4>Az LFortran hivatalos weboldala4> 3> <5> <6>A Fortran nyelv weboldala6> 5> <7> <8>Tanulj meg X-et Y perc alatt, ahol X=Fortran8> 7> <9> <10>LiveCodes dokumentáció10> 9> <11> <12>Indító sablon betöltése12> 11>',
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++2> 1> <3> <4>Situs web resmi Clang4> 3> <5> <6>Pelajari X dalam Y menit, dengan X=C++6> 5> <7> <8>Dokumentasi LiveCodes8> 7> <9> <10>Muat template pemula10> 9>',
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 Crystal2> 1> <3> <4>Referensi bahasa Crystal4> 3> <5> <6>API pustaka standar6> 5> <7> <8>Belajar X dalam Y menit, di mana X = Crystal8> 7> <9> <10>Dokumentasi LiveCodes10> 9> <11> <12>Muat templat awal12> 11>',
+ name: 'Crystal (Wasm)',
+ },
csharpWasm: {
desc: 'Kompiler C# berjalan di WebAssembly, menggunakan <1>Blazor1>',
link: '<1> <2>Dokumentasi bahasa C#2> 1> <3> <4>Pelajari X dalam Y menit, dengan X=C#4> 3> <5> <6>Dokumentasi LiveCodes6> 5> <7> <8>Muat template pemula8> 7>',
@@ -118,6 +123,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Situs web resmi D2> 1> <3> <4>Spesifikasi bahasa D4> 3> <5> <6>Tur bahasa D6> 5> <7> <8>Belajar X dalam Y menit, di mana X = D8> 7> <9> <10>Dokumentasi LiveCodes10> 9> <11> <12>Muat templat awal12> 11>',
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 Dart2> 1> <3> <4>Dokumentasi Dart4> 3> <5> <6>DartPad6> 5> <7> <8>Dokumentasi LiveCodes8> 7> <9> <10>Muat templat awal10> 9>',
+ name: 'Dart',
+ },
diagrams: {
desc1: '(Eksperimental)',
desc2: 'Diagram-sebagai-kode. Mendukung:',
@@ -161,6 +171,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Situs web resmi Flow2> 1> <3> <4>Dokumentasi Flow4> 3>',
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 Flutter2> 1> <3> <4>Dokumentasi Flutter4> 3> <5> <6>Pengenalan widget6> 5> <7> <8>Dokumentasi LiveCodes8> 7> <9> <10>Muat templat awal10> 9>',
+ name: 'Flutter',
+ },
'fortran-wasm': {
desc: 'Fortran modern dikompilasi ke WebAssembly oleh <1>LFortran1>, berjalan sepenuhnya di dalam browser.',
link: '<1> <2>Belajar Fortran2> 1> <3> <4>Situs web resmi LFortran4> 3> <5> <6>Situs web bahasa Fortran6> 5> <7> <8>Belajar X dalam Y menit, di mana X = Fortran8> 7> <9> <10>Dokumentasi LiveCodes10> 9> <11> <12>Muat templat awal12> 11>',
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++2> 1> <3> <4>Sito ufficiale di Clang4> 3> <5> <6>Impara X in Y minuti, dove X=C++6> 5> <7> <8>Documentazione di LiveCodes8> 7> <9> <10>Carica il modello di partenza10> 9>',
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 Crystal2> 1> <3> <4>Riferimento del linguaggio Crystal4> 3> <5> <6>API della libreria standard6> 5> <7> <8>Impara X in Y minuti, dove X = Crystal8> 7> <9> <10>Documentazione di LiveCodes10> 9> <11> <12>Carica il modello di avvio12> 11>',
+ name: 'Crystal (Wasm)',
+ },
csharpWasm: {
desc: 'Compilatore C# in esecuzione su WebAssembly, utilizzando <1>Blazor1>',
link: '<1> <2>Documentazione sul linguaggio C#2> 1> <3> <4> Imparare X in Y minuti, dove X=C#4> 3> <5> <6> Documentazione LiveCodes6> 5> <7> <8> Carica il modello iniziale8> 7>',
@@ -117,6 +122,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Sito web ufficiale di D2> 1> <3> <4>Specifica del linguaggio D4> 3> <5> <6>Tour del linguaggio D6> 5> <7> <8>Impara X in Y minuti, dove X = D8> 7> <9> <10>Documentazione di LiveCodes10> 9> <11> <12>Carica il modello di avvio12> 11>',
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 Dart2> 1> <3> <4>Documentazione di Dart4> 3> <5> <6>DartPad6> 5> <7> <8>Documentazione di LiveCodes8> 7> <9> <10>Carica il modello di avvio10> 9>',
+ name: 'Dart',
+ },
diagrams: {
desc1: '(Sperimentale)',
desc2: 'Diagrammi come codice. Supporta:',
@@ -160,6 +170,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Sito ufficiale di Flow2> 1> <3> <4>Documentazione di Flow4> 3>',
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 Flutter2> 1> <3> <4>Documentazione di Flutter4> 3> <5> <6>Introduzione ai widget6> 5> <7> <8>Documentazione di LiveCodes8> 7> <9> <10>Carica il modello di avvio10> 9>',
+ name: 'Flutter',
+ },
'fortran-wasm': {
desc: 'Fortran moderno compilato in WebAssembly da <1>LFortran1>, eseguito interamente nel browser.',
link: '<1> <2>Impara Fortran2> 1> <3> <4>Sito web ufficiale di LFortran4> 3> <5> <6>Sito web del linguaggio Fortran6> 5> <7> <8>Impara X in Y minuti, dove X = Fortran8> 7> <9> <10>Documentazione di LiveCodes10> 9> <11> <12>Carica il modello di avvio12> 11>',
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++ 財団2> 1> <3> <4>Clang 公式ウェブサイト4> 3> <5> <6>X分でYを学ぶ、X=C++6> 5> <7> <8>LiveCodes ドキュメント8> 7> <9> <10>スターターテンプレートを読み込む10> 9>',
name: 'C++ (Wasm)',
},
+ 'crystal-wasm': {
+ desc: 'Crystal 自身のコンパイラを WebAssembly にコンパイルしたもの — LLVM のリンカーと、リンク先の WASI sysroot を伴い — ブラウザ内で完全に実行されます。',
+ link: '<1> <2>Crystal 公式サイト2> 1> <3> <4>Crystal 言語リファレンス4> 3> <5> <6>標準ライブラリ API6> 5> <7> <8>「Y分でXを学ぶ」(X=Crystal)8> 7> <9> <10>LiveCodes ドキュメント10> 9> <11> <12>スターターテンプレートの読み込み12> 11>',
+ name: 'Crystal (Wasm)',
+ },
csharpWasm: {
desc: 'WebAssembly 上で動作する C# コンパイラ。<1>Blazor を使用。1>',
link: '<1> <2>C# 言語のドキュメント2> 1> <3> <4>X を Y 分で学習します (X=C の場合)#4> 3> <5> <6>LiveCodesドキュメンテーション6> 5> <7> <8>スターターテンプレートをロードする8> 7>',
@@ -117,6 +122,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>D 公式サイト2> 1> <3> <4>D 言語仕様4> 3> <5> <6>D 言語ツアー6> 5> <7> <8>「Y分でXを学ぶ」(X=D)8> 7> <9> <10>LiveCodes ドキュメント10> 9> <11> <12>スターターテンプレートを読み込む12> 11>',
name: 'D (Wasm)',
},
+ dart: {
+ desc: 'Dart は Dart チームのクライアントサイドツールチェーン(DDC)— DartPad を動かしているものと同じ — によって JavaScript にコンパイルされ、ブラウザ内で完全に実行されます。コンパイルされたバンドルはその後、結果ページで実行されます。サーバーは関与しません。',
+ link: '<1> <2>Dart 公式サイト2> 1> <3> <4>Dart ドキュメント4> 3> <5> <6>DartPad6> 5> <7> <8>LiveCodes ドキュメント8> 7> <9> <10>スターターテンプレートの読み込み10> 9>',
+ name: 'Dart',
+ },
diagrams: {
desc1: '(実験的)',
desc2: 'コードとしての図表。サポート:',
@@ -160,6 +170,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Flow 公式ウェブサイト2> 1> <3> <4>Flow ドキュメント4> 3>',
name: 'Flow',
},
+ flutter: {
+ desc: 'Flutter は Dart と同じクライアントサイドツールチェーンで JavaScript にコンパイルされ、その後 Flutter エンジンが結果ページで起動し、そこでアプリがレンダリングされます。サーバーは関与しません。',
+ link: '<1> <2>Flutter 公式サイト2> 1> <3> <4>Flutter ドキュメント4> 3> <5> <6>ウィジェット入門6> 5> <7> <8>LiveCodes ドキュメント8> 7> <9> <10>スターターテンプレートの読み込み10> 9>',
+ name: 'Flutter',
+ },
'fortran-wasm': {
desc: 'モダンな Fortran は <1>LFortran1> によって WebAssembly にコンパイルされ、ブラウザ内で完全に実行されます。',
link: '<1> <2>Fortran を学ぶ2> 1> <3> <4>LFortran 公式サイト4> 3> <5> <6>Fortran 言語のウェブサイト6> 5> <7> <8>「Y分でXを学ぶ」(X=Fortran)8> 7> <9> <10>LiveCodes ドキュメント10> 9> <11> <12>スターターテンプレートを読み込む12> 11>',
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++ Foundation2> 1> <3> <4>Clang officiële website4> 3> <5> <6>Leer X in Y minuten, waarbij X=C++6> 5> <7> <8>LiveCodes-documentatie8> 7> <9> <10>Startsjabloon laden10> 9>',
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 Crystal2> 1> <3> <4>Crystal-taalreferentie4> 3> <5> <6>API van de standaardbibliotheek6> 5> <7> <8>Leer X in Y minuten, waarbij X = Crystal8> 7> <9> <10>LiveCodes-documentatie10> 9> <11> <12>Startersjabloon laden12> 11>',
+ name: 'Crystal (Wasm)',
+ },
csharpWasm: {
desc: 'C#-compiler draaiend op WebAssembly, met <1>Blazor1>',
link: '<1> <2>C#-taaldocumentatie2> 1> <3> <4>Leer X in Y minuten, waarbij X=C#4> 3> <5> <6>LiveCodes Documentatie6> 5> <7> <8>Startsjabloon laden8> 7>',
@@ -117,6 +122,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Officiële website van D2> 1> <3> <4>D-taalspecificatie4> 3> <5> <6>D taaltour6> 5> <7> <8>Leer X in Y minuten, waarbij X = D8> 7> <9> <10>LiveCodes-documentatie10> 9> <11> <12>Starterssjabloon laden12> 11>',
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 Dart2> 1> <3> <4>Dart-documentatie4> 3> <5> <6>DartPad6> 5> <7> <8>LiveCodes-documentatie8> 7> <9> <10>Startersjabloon laden10> 9>',
+ name: 'Dart',
+ },
diagrams: {
desc1: '(Experimenteel)',
desc2: 'Diagrammen als code. Ondersteunt:',
@@ -160,6 +170,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Flow officiële website2> 1> <3> <4>Flow documentatie4> 3>',
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 Flutter2> 1> <3> <4>Flutter-documentatie4> 3> <5> <6>Inleiding tot widgets6> 5> <7> <8>LiveCodes-documentatie8> 7> <9> <10>Startersjabloon laden10> 9>',
+ name: 'Flutter',
+ },
'fortran-wasm': {
desc: 'Moderne Fortran wordt door <1>LFortran1> gecompileerd naar WebAssembly en draait volledig in de browser.',
link: '<1> <2>Fortran leren2> 1> <3> <4>Officiële website van LFortran4> 3> <5> <6>Website van de taal Fortran6> 5> <7> <8>Leer X in Y minuten, waarbij X = Fortran8> 7> <9> <10>LiveCodes-documentatie10> 9> <11> <12>Starterssjabloon laden12> 11>',
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ão2> 1> <3> <4>Site oficial do Clang4> 3> <5> <6>Aprenda X em Y minutos, onde X=C++6> 5> <7> <8>Documentação do LiveCodes8> 7> <9> <10>Carregar modelo inicial10> 9>',
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 Crystal2> 1> <3> <4>Referência da linguagem Crystal4> 3> <5> <6>API da biblioteca padrão6> 5> <7> <8>Aprenda X em Y minutos, onde X = Crystal8> 7> <9> <10>Documentação do LiveCodes10> 9> <11> <12>Carregar modelo inicial12> 11>',
+ name: 'Crystal (Wasm)',
+ },
csharpWasm: {
desc: 'Compilador C# executado no WebAssembly, usando <1>Blazor1>',
link: '<1> <2>Documentação da linguagem C#2> 1> <3> <4> Aprenda X em Y minutos, onde X=C#4> 3> <5> <6> Documentação LiveCodes6> 5> <7> <8> Carregar modelo inicial8> 7>',
@@ -117,6 +122,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Site oficial do D2> 1> <3> <4>Especificação da linguagem D4> 3> <5> <6>Tour pela linguagem D6> 5> <7> <8>Aprenda X em Y minutos, onde X = D8> 7> <9> <10>Documentação do LiveCodes10> 9> <11> <12>Carregar modelo inicial12> 11>',
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 Dart2> 1> <3> <4>Documentação do Dart4> 3> <5> <6>DartPad6> 5> <7> <8>Documentação do LiveCodes8> 7> <9> <10>Carregar modelo inicial10> 9>',
+ name: 'Dart',
+ },
diagrams: {
desc1: '(Experimental)',
desc2: 'Diagramas como código. Suporta:',
@@ -160,6 +170,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Site oficial do Flow2> 1> <3> <4>Documentação do Flow4> 3>',
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 Flutter2> 1> <3> <4>Documentação do Flutter4> 3> <5> <6>Introdução aos widgets6> 5> <7> <8>Documentação do LiveCodes8> 7> <9> <10>Carregar modelo inicial10> 9>',
+ name: 'Flutter',
+ },
'fortran-wasm': {
desc: 'Fortran moderno compilado para WebAssembly pelo <1>LFortran1>, executado na íntegra no navegador.',
link: '<1> <2>Aprender Fortran2> 1> <3> <4>Site oficial do LFortran4> 3> <5> <6>Site da linguagem Fortran6> 5> <7> <8>Aprenda X em Y minutos, onde X = Fortran8> 7> <9> <10>Documentação do LiveCodes10> 9> <11> <12>Carregar modelo inicial12> 11>',
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++2> 1> <3> <4>Официальный сайт Clang4> 3> <5> <6>Изучите X за Y минут, где X=C++6> 5> <7> <8>Документация LiveCodes8> 7> <9> <10>Загрузить стартовый шаблон10> 9>',
name: 'C++ (Wasm)',
},
+ 'crystal-wasm': {
+ desc: 'Собственный компилятор Crystal, скомпилированный в WebAssembly — вместе с компоновщиком LLVM и sysroot WASI, с которым он связывается — полностью выполняется в браузере.',
+ link: '<1> <2>Официальный сайт Crystal2> 1> <3> <4>Справочник по языку Crystal4> 3> <5> <6>API стандартной библиотеки6> 5> <7> <8>«Изучите X за Y минут», где X = Crystal8> 7> <9> <10>Документация LiveCodes10> 9> <11> <12>Загрузить стартовый шаблон12> 11>',
+ name: 'Crystal (Wasm)',
+ },
csharpWasm: {
desc: 'Компилятор C#, работающий на WebAssembly, с использованием <1>Blazor1>',
link: '<1> <2>Документация по языку C#2> 1> <3> <4> Узнайте X за Y минут, где X=C#4> 3> <5> <6> Документация LiveCodes6> 5> <7> <8> Загрузите стартовый шаблон8> 7>',
@@ -118,6 +123,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Официальный сайт D2> 1> <3> <4>Спецификация языка D4> 3> <5> <6>Тур по языку D6> 5> <7> <8>«Изучите X за Y минут», где X = D8> 7> <9> <10>Документация LiveCodes10> 9> <11> <12>Загрузить стартовый шаблон12> 11>',
name: 'D (Wasm)',
},
+ dart: {
+ desc: 'Dart компилируется в JavaScript клиентской цепочкой инструментов команды Dart (DDC) — той же, что лежит в основе DartPad — и полностью выполняется в браузере. Затем скомпилированный бандл выполняется на странице результата. Сервер не задействован.',
+ link: '<1> <2>Официальный сайт Dart2> 1> <3> <4>Документация по Dart4> 3> <5> <6>DartPad6> 5> <7> <8>Документация LiveCodes8> 7> <9> <10>Загрузить стартовый шаблон10> 9>',
+ name: 'Dart',
+ },
diagrams: {
desc1: '(Экспериментально)',
desc2: 'Диаграммы как код. Поддерживает:',
@@ -161,6 +171,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Официальный сайт Flow2> 1> <3> <4>Документация Flow4> 3>',
name: 'Flow',
},
+ flutter: {
+ desc: 'Flutter компилируется в JavaScript той же клиентской цепочкой инструментов, что и Dart, после чего движок Flutter загружается на странице результата, где отрисовывается приложение. Сервер не задействован.',
+ link: '<1> <2>Официальный сайт Flutter2> 1> <3> <4>Документация по Flutter4> 3> <5> <6>Введение в виджеты6> 5> <7> <8>Документация LiveCodes8> 7> <9> <10>Загрузить стартовый шаблон10> 9>',
+ name: 'Flutter',
+ },
'fortran-wasm': {
desc: 'Современный Fortran компилируется в WebAssembly с помощью <1>LFortran1> и полностью выполняется в браузере.',
link: '<1> <2>Изучите Fortran2> 1> <3> <4>Официальный сайт LFortran4> 3> <5> <6>Сайт языка Fortran6> 5> <7> <8>«Изучите X за Y минут», где X = Fortran8> 7> <9> <10>Документация LiveCodes10> 9> <11> <12>Загрузить стартовый шаблон12> 11>',
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ı2> 1> <3> <4>Clang resmi web sitesi4> 3> <5> <6>Y Dakikada X Öğrenin, X=C++6> 5> <7> <8>LiveCodes Belgeleri8> 7> <9> <10>Başlangıç şablonunu yükle10> 9>',
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 sitesi2> 1> <3> <4>Crystal dili referansı4> 3> <5> <6>Standart kütüphane API'si6> 5> <7> <8>Y dakikada X'i öğrenin, burada X=Crystal8> 7> <9> <10>LiveCodes Belgeleri10> 9> <11> <12>Başlangıç şablonunu yükle12> 11>",
+ name: 'Crystal (Wasm)',
+ },
csharpWasm: {
desc: 'WebAssembly üzerinde çalışan C# derleyicisi, <1>Blazor1> kullanılarak.',
link: '<1> <2>C# dil dokümantasyonu2> 1> <3> <4>Y Dakikada X Öğrenin, X=C#4> 3> <5> <6>LiveCodes Dokümantasyonu6> 5> <7> <8>Başlangıç şablonunu yükle8> 7>',
@@ -117,6 +122,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: "<1> <2>D resmi web sitesi2> 1> <3> <4>D dil spesifikasyonu4> 3> <5> <6>D dil turu6> 5> <7> <8>Y dakikada X'i öğrenin, burada X=D8> 7> <9> <10>LiveCodes Belgeleri10> 9> <11> <12>Başlangıç şablonunu yükle12> 11>",
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 sitesi2> 1> <3> <4>Dart belgeleri4> 3> <5> <6>DartPad6> 5> <7> <8>LiveCodes Belgeleri8> 7> <9> <10>Başlangıç şablonunu yükle10> 9>',
+ name: 'Dart',
+ },
diagrams: {
desc1: '(Deneysel)',
desc2: 'Kod olarak diyagramlar. Destekledikleri:',
@@ -160,6 +170,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Flow resmi web sitesi2> 1> <3> <4>Flow dokümantasyonu4> 3>',
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 sitesi2> 1> <3> <4>Flutter belgeleri4> 3> <5> <6>Widget'lara giriş6> 5> <7> <8>LiveCodes Belgeleri8> 7> <9> <10>Başlangıç şablonunu yükle10> 9>",
+ name: 'Flutter',
+ },
'fortran-wasm': {
desc: 'Modern Fortran, <1>LFortran1> tarafından WebAssembly’ye derlenir ve tamamen tarayıcı içinde çalışır.',
link: "<1> <2>Fortran öğrenin2> 1> <3> <4>LFortran resmi web sitesi4> 3> <5> <6>Fortran dili web sitesi6> 5> <7> <8>Y dakikada X'i öğrenin, burada X=Fortran8> 7> <9> <10>LiveCodes Belgeleri10> 9> <11> <12>Başlangıç şablonunu yükle12> 11>",
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>معیاری سی++ فاؤنڈیشن2> 1> <3> <4>کلینگ کی سرکاری ویب سائٹ4> 3> <5> <6>X کو Y منٹ میں سیکھیں، جہاں X=سی++6> 5> <7> <8>لائیو کوڈز دستاویزات8> 7> <9> <10>ابتدائی سانچہ لوڈ کریں10> 9>',
name: 'C++ (Wasm)',
},
+ 'crystal-wasm': {
+ desc: 'Crystal کا اپنا کمپائلر، WebAssembly میں مرتب شدہ — LLVM کے لنکر اور WASI sysroot کے ساتھ جس سے یہ لنک کرتا ہے — مکمل طور پر براؤزر میں چلتا ہے۔',
+ link: '<1> <2>Crystal آفیشل ویب سائٹ2> 1> <3> <4>Crystal زبان کا حوالہ4> 3> <5> <6>معیاری لائبریری API6> 5> <7> <8>Y منٹ میں X سیکھیں، جہاں X=Crystal8> 7> <9> <10>LiveCodes دستاویزی10> 9> <11> <12>لوڈ اسٹارٹر ٹیمپلیٹ12> 11>',
+ name: 'Crystal (Wasm)',
+ },
csharpWasm: {
desc: 'سی # کمپائلر ویب اسمبلی پر چل رہا ہے، استعمال کر رہا ہے <1>Blazor1>',
link: '<1> <2> C# زبان کی دستاویزات 2> 1> <3> <4> Y منٹوں میں X سیکھیں، جہاں X=C# 4> 3> <5> <6> LiveCodes ڈاکومینٹیشن 6> 5> <7> <8> 8> شروع کریں 7>',
@@ -118,6 +123,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>D آفیشل ویب سائٹ2> 1> <3> <4>D زبان کی تفصیلات4> 3> <5> <6>D زبان کا دورہ6> 5> <7> <8>Y منٹ میں X سیکھیں، جہاں X=D8> 7> <9> <10>لائیو کوڈز دستاویزات10> 9> <11> <12>اسٹارٹر ٹیمپلیٹ لوڈ کریں12> 11>',
name: 'D (Wasm)',
},
+ dart: {
+ desc: 'Dart کو Dart ٹیم کی کلائنٹ سائیڈ ٹول چین (DDC) کے ذریعے JavaScript میں مرتب کیا جاتا ہے — وہی جو DartPad کو چلاتی ہے — اور یہ مکمل طور پر براؤزر میں چلتا ہے۔ پھر مرتب شدہ بنڈل نتیجہ صفحہ پر چلتا ہے۔ کوئی سرور شامل نہیں ہے۔',
+ link: '<1> <2>Dart آفیشل ویب سائٹ2> 1> <3> <4>Dart دستاویزات4> 3> <5> <6>DartPad6> 5> <7> <8>LiveCodes دستاویزی8> 7> <9> <10>لوڈ اسٹارٹر ٹیمپلیٹ10> 9>',
+ name: 'Dart',
+ },
diagrams: {
desc1: '(تجرباتی)',
desc2: 'کوڈ کے طور پر خاکے۔ معاونت کرتا ہے:',
@@ -161,6 +171,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>فلو کی سرکاری ویب سائٹ2> 1> <3> <4>فلو کی دستاویزات4> 3>',
name: 'فلو',
},
+ flutter: {
+ desc: 'Flutter کو Dart کی طرح اسی کلائنٹ سائیڈ ٹول چین کے ساتھ JavaScript میں مرتب کیا جاتا ہے، اور پھر Flutter انجن نتیجہ صفحہ پر بوٹ ہوتا ہے، جہاں ایپ رینڈر ہوتی ہے۔ کوئی سرور شامل نہیں ہے۔',
+ link: '<1> <2>Flutter آفیشل ویب سائٹ2> 1> <3> <4>Flutter دستاویزات4> 3> <5> <6>ویجٹس کا تعارف6> 5> <7> <8>LiveCodes دستاویزی8> 7> <9> <10>لوڈ اسٹارٹر ٹیمپلیٹ10> 9>',
+ name: 'Flutter',
+ },
'fortran-wasm': {
desc: 'جدید فورٹران <1>LFortran1> کے ذریعے WebAssembly میں مرتب کیا جاتا ہے، جو مکمل طور پر براؤزر میں چلتا ہے۔',
link: '<1> <2>فورٹران سیکھیں2> 1> <3> <4>LFortran آفیشل ویب سائٹ4> 3> <5> <6>فورٹران زبان کی ویب سائٹ6> 5> <7> <8>Y منٹ میں X سیکھیں، جہاں X=Fortran8> 7> <9> <10>لائیو کوڈز دستاویزات10> 9> <11> <12>اسٹارٹر ٹیمپلیٹ لوڈ کریں12> 11>',
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++ 基金会2> 1> <3> <4>Clang 官网4> 3> <5> <6>在 Y 分钟内学习 X,其中 X=C++6> 5> <7> <8>LiveCodes 文档8> 7> <9> <10>加载启动模板10> 9>',
name: 'C++ (Wasm)',
},
+ 'crystal-wasm': {
+ desc: 'Crystal 自带的编译器,编译为 WebAssembly — 搭配 LLVM 的链接器及其所链接的 WASI sysroot — 完全在浏览器中运行。',
+ link: '<1> <2>Crystal 官方网站2> 1> <3> <4>Crystal 语言参考4> 3> <5> <6>标准库 API6> 5> <7> <8>《Y分钟学会X》,其中X=Crystal8> 7> <9> <10>LiveCodes 文档10> 9> <11> <12>加载入门模板12> 11>',
+ name: 'Crystal (Wasm)',
+ },
csharpWasm: {
desc: '在 WebAssembly 上运行的 C# 编译器,使用<1>Blazor1>',
link: '<1> <2> C# 语言文档2> 1> <3> <4>在 Y 分钟内学习 X,其中 X=C# 4> 3> <5> <6> LiveCodes 文档6> 5> <7> <8>加载入门模板8> 7>',
@@ -116,6 +121,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>D 官方网站2> 1> <3> <4>D 语言规范4> 3> <5> <6>D 语言导览6> 5> <7> <8>《Y分钟学会X》,其中X=D8> 7> <9> <10>LiveCodes 文档10> 9> <11> <12>加载入门模板12> 11>',
name: 'D (Wasm)',
},
+ dart: {
+ desc: 'Dart 由 Dart 团队的客户端工具链(DDC)— 也就是驱动 DartPad 的同一套工具链 — 编译为 JavaScript,完全在浏览器中运行。编译后的包随后在结果页面中运行。不涉及任何服务器。',
+ link: '<1> <2>Dart 官方网站2> 1> <3> <4>Dart 文档4> 3> <5> <6>DartPad6> 5> <7> <8>LiveCodes 文档8> 7> <9> <10>加载入门模板10> 9>',
+ name: 'Dart',
+ },
diagrams: {
desc1: '(实验性)',
desc2: '使用代码绘制图表。支持:',
@@ -159,6 +169,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Flow 官方网站2> 1> <3> <4>Flow 文档4> 3>',
name: 'Flow',
},
+ flutter: {
+ desc: 'Flutter 使用与 Dart 相同的客户端工具链编译为 JavaScript,随后 Flutter 引擎在结果页面中启动并渲染应用。不涉及任何服务器。',
+ link: '<1> <2>Flutter 官方网站2> 1> <3> <4>Flutter 文档4> 3> <5> <6>Widget 简介6> 5> <7> <8>LiveCodes 文档8> 7> <9> <10>加载入门模板10> 9>',
+ name: 'Flutter',
+ },
'fortran-wasm': {
desc: '现代 Fortran 由 <1>LFortran1> 编译为 WebAssembly,完全在浏览器中运行。',
link: '<1> <2>学习 Fortran2> 1> <3> <4>LFortran 官方网站4> 3> <5> <6>Fortran 语言网站6> 5> <7> <8>《Y分钟学会X》,其中X=Fortran8> 7> <9> <10>LiveCodes 文档10> 9> <11> <12>加载入门模板12> 11>',
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)