diff --git a/src/livecodes/i18n/locales/ar/language-info.lokalise.json b/src/livecodes/i18n/locales/ar/language-info.lokalise.json
index 6bb24477c7..2a2565f934 100644
--- a/src/livecodes/i18n/locales/ar/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/ar/language-info.lokalise.json
@@ -804,6 +804,15 @@
"svelte.name": {
"translation": "Svelte"
},
+ "swiftWasm.desc": {
+ "translation": "يتم تجميع Swift إلى WebAssembly بواسطة مُترجم Swift نفسه:
swift-frontend و
wasm-ld ، وكلاهما مُجمَّع إلى WebAssembly ويعمل بالكامل داخل المتصفح. لا يتضمن ذلك أي خادم."
+ },
+ "swiftWasm.link": {
+ "translation": "
الموقع الرسمي لـ Swift لغة البرمجة Swift تعلم X في Y دقائق، حيث X = Swift وثائق LiveCodes تحميل قالب البدء "
+ },
+ "swiftWasm.name": {
+ "translation": "Swift (Wasm)"
+ },
"tcl.desc": {
"translation": "Tcl يعمل في المتصفح، باستخدام
wacl ."
},
diff --git a/src/livecodes/i18n/locales/ar/language-info.ts b/src/livecodes/i18n/locales/ar/language-info.ts
index ef022213d7..f9db2261f8 100644
--- a/src/livecodes/i18n/locales/ar/language-info.ts
+++ b/src/livecodes/i18n/locales/ar/language-info.ts
@@ -451,6 +451,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>الموقع الرسمي لـ Svelte2> 1> <3> <4>وثائق Svelte4> 3> <5> <6>تحميل القالب الأولي6> 5>',
name: 'Svelte',
},
+ swiftWasm: {
+ desc: 'يتم تجميع Swift إلى WebAssembly بواسطة مُترجم Swift نفسه: <1>swift-frontend1> و<2>wasm-ld2>، وكلاهما مُجمَّع إلى WebAssembly ويعمل بالكامل داخل المتصفح. لا يتضمن ذلك أي خادم.',
+ link: '<1> <2>الموقع الرسمي لـ Swift2> 1> <3> <4>لغة البرمجة Swift4> 3> <5> <6>تعلم X في Y دقائق، حيث X = Swift6> 5> <7> <8>وثائق LiveCodes8> 7> <9> <10>تحميل قالب البدء10> 9>',
+ name: 'Swift (Wasm)',
+ },
tcl: {
desc: 'Tcl يعمل في المتصفح، باستخدام <1>wacl1>.',
link: '<1> <2>الموقع الرسمي لـ Tcl2> 1> <3> <4>مستودع wacl4> 3> <5> <6>تعلم X في Y دقائق، حيث X=Tcl6> 5> <7> <8>تحميل القالب الأولي8> 7>',
diff --git a/src/livecodes/i18n/locales/ar/translation.lokalise.json b/src/livecodes/i18n/locales/ar/translation.lokalise.json
index 72155023ac..f2feafe7c6 100644
--- a/src/livecodes/i18n/locales/ar/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/ar/translation.lokalise.json
@@ -2127,6 +2127,9 @@
"templates.starter.svelte": {
"translation": "قالب Svelte"
},
+ "templates.starter.swift-wasm": {
+ "translation": "قالب Swift (Wasm)"
+ },
"templates.starter.tailwindcss": {
"translation": "قالب Tailwind CSS"
},
diff --git a/src/livecodes/i18n/locales/ar/translation.ts b/src/livecodes/i18n/locales/ar/translation.ts
index 7b59d49733..54eb34f467 100644
--- a/src/livecodes/i18n/locales/ar/translation.ts
+++ b/src/livecodes/i18n/locales/ar/translation.ts
@@ -1048,6 +1048,7 @@ const translation: I18nTranslation = {
sql: 'قالب SQL',
stencil: 'قالب Stencil',
svelte: 'قالب Svelte',
+ 'swift-wasm': 'قالب Swift (Wasm)',
tailwindcss: 'قالب Tailwind CSS',
tcl: 'قالب Tcl',
teal: 'قالب Teal',
diff --git a/src/livecodes/i18n/locales/bn/language-info.lokalise.json b/src/livecodes/i18n/locales/bn/language-info.lokalise.json
index 4d266c8c31..5946bb66a4 100644
--- a/src/livecodes/i18n/locales/bn/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/bn/language-info.lokalise.json
@@ -804,6 +804,15 @@
"svelte.name": {
"translation": "Svelte"
},
+ "swiftWasm.desc": {
+ "translation": "Swift স্বয়ং Swift কম্পাইলার দ্বারা WebAssembly-তে কম্পাইল করা হয়েছে:
swift-frontend এবং
wasm-ld , উভয়ই WebAssembly-তে কম্পাইল করা হয়েছে এবং সম্পূর্ণরূপে ব্রাউজারে চলে। কোনো সার্ভার জড়িত নয়।"
+ },
+ "swiftWasm.link": {
+ "translation": "
Swift অফিসিয়াল ওয়েবসাইট Swift প্রোগ্রামিং ভাষা Y মিনিটে X শিখুন, যেখানে X=Swift লাইভকোডস ডকুমেন্টেশন স্টার্টার টেমপ্লেট লোড করুন "
+ },
+ "swiftWasm.name": {
+ "translation": "Swift (Wasm)"
+ },
"tcl.desc": {
"translation": "
wacl ব্যবহার করে ব্রাউজারে চলমান Tcl।"
},
diff --git a/src/livecodes/i18n/locales/bn/language-info.ts b/src/livecodes/i18n/locales/bn/language-info.ts
index dd714c4b38..40afdc745c 100644
--- a/src/livecodes/i18n/locales/bn/language-info.ts
+++ b/src/livecodes/i18n/locales/bn/language-info.ts
@@ -453,6 +453,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Svelte অফিসিয়াল ওয়েবসাইট2> 1> <3> <4>Svelte ডকুমেন্টেশন4> 3> <5> <6>স্টার্টার টেমপ্লেট লোড করুন6> 5>',
name: 'Svelte',
},
+ swiftWasm: {
+ desc: 'Swift স্বয়ং Swift কম্পাইলার দ্বারা WebAssembly-তে কম্পাইল করা হয়েছে: <1>swift-frontend1> এবং <2>wasm-ld2>, উভয়ই WebAssembly-তে কম্পাইল করা হয়েছে এবং সম্পূর্ণরূপে ব্রাউজারে চলে। কোনো সার্ভার জড়িত নয়।',
+ link: '<1> <2>Swift অফিসিয়াল ওয়েবসাইট2> 1> <3> <4>Swift প্রোগ্রামিং ভাষা4> 3> <5> <6>Y মিনিটে X শিখুন, যেখানে X=Swift6> 5> <7> <8>লাইভকোডস ডকুমেন্টেশন8> 7> <9> <10>স্টার্টার টেমপ্লেট লোড করুন10> 9>',
+ name: 'Swift (Wasm)',
+ },
tcl: {
desc: '<1>wacl1> ব্যবহার করে ব্রাউজারে চলমান Tcl।',
link: '<1> <2>Tcl অফিসিয়াল ওয়েবসাইট2> 1> <3> <4>wacl রেপো4> 3> <5> <6>Y মিনিটে X শিখুন, যেখানে X=Tcl6> 5> <7> <8>স্টার্টার টেমপ্লেট লোড করুন8> 7>',
diff --git a/src/livecodes/i18n/locales/bn/translation.lokalise.json b/src/livecodes/i18n/locales/bn/translation.lokalise.json
index ea9f7036af..914792bd9b 100644
--- a/src/livecodes/i18n/locales/bn/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/bn/translation.lokalise.json
@@ -2127,6 +2127,9 @@
"templates.starter.svelte": {
"translation": "Svelte স্টার্টার"
},
+ "templates.starter.swift-wasm": {
+ "translation": "Swift (Wasm) স্টার্টার"
+ },
"templates.starter.tailwindcss": {
"translation": "Tailwind CSS স্টার্টার"
},
diff --git a/src/livecodes/i18n/locales/bn/translation.ts b/src/livecodes/i18n/locales/bn/translation.ts
index 3ec23901ac..c677bfcc35 100644
--- a/src/livecodes/i18n/locales/bn/translation.ts
+++ b/src/livecodes/i18n/locales/bn/translation.ts
@@ -1048,6 +1048,7 @@ const translation: I18nTranslation = {
sql: 'SQL স্টার্টার',
stencil: 'Stencil স্টার্টার',
svelte: 'Svelte স্টার্টার',
+ 'swift-wasm': 'Swift (Wasm) স্টার্টার',
tailwindcss: 'Tailwind CSS স্টার্টার',
tcl: 'Tcl স্টার্টার',
teal: 'Teal স্টার্টার',
diff --git a/src/livecodes/i18n/locales/de/language-info.lokalise.json b/src/livecodes/i18n/locales/de/language-info.lokalise.json
index aee8e5666b..0fbdaf2e0c 100644
--- a/src/livecodes/i18n/locales/de/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/de/language-info.lokalise.json
@@ -804,6 +804,15 @@
"svelte.name": {
"translation": "Svelte"
},
+ "swiftWasm.desc": {
+ "translation": "Swift wird vom Swift-Compiler selbst zu WebAssembly kompiliert:
swift-frontend und
wasm-ld sind beide zu WebAssembly kompiliert und laufen vollständig im Browser. Es ist kein Server beteiligt."
+ },
+ "swiftWasm.link": {
+ "translation": "
Offizielle Website von Swift Die Swift Programmiersprache Lerne X in Y Minuten, wobei X = Swift LiveCodes-Dokumentation Startervorlage laden "
+ },
+ "swiftWasm.name": {
+ "translation": "Swift (Wasm)"
+ },
"tcl.desc": {
"translation": "Tcl läuft im Browser mit
wacl ."
},
diff --git a/src/livecodes/i18n/locales/de/language-info.ts b/src/livecodes/i18n/locales/de/language-info.ts
index f63dd5dfe6..f5e540a135 100644
--- a/src/livecodes/i18n/locales/de/language-info.ts
+++ b/src/livecodes/i18n/locales/de/language-info.ts
@@ -455,6 +455,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Offizielle Svelte-Website2> 1> <3> <4>Svelte-Dokumentation4> 3> <5> <6>Starter-Vorlage laden6> 5>',
name: 'Svelte',
},
+ swiftWasm: {
+ desc: 'Swift wird vom Swift-Compiler selbst zu WebAssembly kompiliert: <1>swift-frontend1> und <2>wasm-ld2> sind beide zu WebAssembly kompiliert und laufen vollständig im Browser. Es ist kein Server beteiligt.',
+ link: '<1> <2>Offizielle Website von Swift2> 1> <3> <4>Die Swift Programmiersprache4> 3> <5> <6>Lerne X in Y Minuten, wobei X = Swift6> 5> <7> <8>LiveCodes-Dokumentation8> 7> <9> <10>Startervorlage laden10> 9>',
+ name: 'Swift (Wasm)',
+ },
tcl: {
desc: 'Tcl läuft im Browser mit <1>wacl1>.',
link: '<1> <2>Offizielle Tcl-Website2> 1> <3> <4>wacl-Repository4> 3> <5> <6>Lerne X in Y Minuten, wobei X=Tcl6> 5> <7> <8>Starter-Vorlage laden8> 7>',
diff --git a/src/livecodes/i18n/locales/de/translation.lokalise.json b/src/livecodes/i18n/locales/de/translation.lokalise.json
index ff21e11d38..be9f2e91a9 100644
--- a/src/livecodes/i18n/locales/de/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/de/translation.lokalise.json
@@ -2127,6 +2127,9 @@
"templates.starter.svelte": {
"translation": "Svelte-Starter"
},
+ "templates.starter.swift-wasm": {
+ "translation": "Swift (Wasm)-Starter"
+ },
"templates.starter.tailwindcss": {
"translation": "Tailwind CSS-Starter"
},
diff --git a/src/livecodes/i18n/locales/de/translation.ts b/src/livecodes/i18n/locales/de/translation.ts
index 13c141a2ff..501fbf92ad 100644
--- a/src/livecodes/i18n/locales/de/translation.ts
+++ b/src/livecodes/i18n/locales/de/translation.ts
@@ -1050,6 +1050,7 @@ const translation: I18nTranslation = {
sql: 'SQL-Starter',
stencil: 'Stencil-Starter',
svelte: 'Svelte-Starter',
+ 'swift-wasm': 'Swift (Wasm)-Starter',
tailwindcss: 'Tailwind CSS-Starter',
tcl: 'Tcl-Starter',
teal: 'Teal-Starter',
diff --git a/src/livecodes/i18n/locales/en/language-info.lokalise.json b/src/livecodes/i18n/locales/en/language-info.lokalise.json
index fa108af989..cfc122c7aa 100644
--- a/src/livecodes/i18n/locales/en/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/en/language-info.lokalise.json
@@ -1072,6 +1072,18 @@
"notes": "",
"translation": "Svelte"
},
+ "swiftWasm.desc": {
+ "notes": "###
###\n\n\n### ###\n\n\n",
+ "translation": "Swift is compiled to WebAssembly by the Swift compiler itself: swift-frontend and wasm-ld , both compiled to WebAssembly, run entirely in the browser. No server is involved."
+ },
+ "swiftWasm.link": {
+ "notes": "### ###\n \n\n### ###\n \n\n### ###\n \n\n### ###\n \n\n### ###\n \n\n### ###\n \n\n### ###\n \n\n### ###\n \n\n### ###\n \n\n### ###\n \n\n",
+ "translation": " Swift official website The Swift Programming Language Learn X in Y minutes, where X=Swift LiveCodes Documentation Load starter template "
+ },
+ "swiftWasm.name": {
+ "notes": "",
+ "translation": "Swift (Wasm)"
+ },
"tcl.desc": {
"notes": "### ###\n \n\n",
"translation": "Tcl running in the browser, using wacl ."
diff --git a/src/livecodes/i18n/locales/en/language-info.ts b/src/livecodes/i18n/locales/en/language-info.ts
index 77bf111ed5..1c5e4eb021 100644
--- a/src/livecodes/i18n/locales/en/language-info.ts
+++ b/src/livecodes/i18n/locales/en/language-info.ts
@@ -461,6 +461,11 @@ const languageInfo = {
link: '<1> <2>Svelte official website2> 1> <3> <4>Svelte documentation4> 3> <5> <6>Load starter template6> 5>',
name: 'Svelte',
},
+ swiftWasm: {
+ desc: 'Swift is compiled to WebAssembly by the Swift compiler itself: <1>swift-frontend1> and <2>wasm-ld2>, both compiled to WebAssembly, run entirely in the browser. No server is involved.',
+ link: '<1> <2>Swift official website2> 1> <3> <4>The Swift Programming Language4> 3> <5> <6>Learn X in Y minutes, where X=Swift6> 5> <7> <8>LiveCodes Documentation8> 7> <9> <10>Load starter template10> 9>',
+ name: 'Swift (Wasm)',
+ },
tcl: {
desc: 'Tcl running in the browser, using <1>wacl1>.',
link: '<1> <2>Tcl official website2> 1> <3> <4>wacl repo4> 3> <5> <6>Learn X in Y minutes, where X=Tcl6> 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 b8d30ff3cf..482321065f 100644
--- a/src/livecodes/i18n/locales/en/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/en/translation.lokalise.json
@@ -2836,6 +2836,10 @@
"notes": "",
"translation": "Svelte Starter"
},
+ "templates.starter.swift-wasm": {
+ "notes": "",
+ "translation": "Swift (Wasm) Starter"
+ },
"templates.starter.tailwindcss": {
"notes": "",
"translation": "Tailwind CSS Starter"
diff --git a/src/livecodes/i18n/locales/en/translation.ts b/src/livecodes/i18n/locales/en/translation.ts
index ea3e305035..d80bc7f6ec 100644
--- a/src/livecodes/i18n/locales/en/translation.ts
+++ b/src/livecodes/i18n/locales/en/translation.ts
@@ -1055,6 +1055,7 @@ const translation = {
sql: 'SQL Starter',
stencil: 'Stencil Starter',
svelte: 'Svelte Starter',
+ 'swift-wasm': 'Swift (Wasm) Starter',
tailwindcss: 'Tailwind CSS Starter',
tcl: 'Tcl Starter',
teal: 'Teal Starter',
diff --git a/src/livecodes/i18n/locales/es/language-info.lokalise.json b/src/livecodes/i18n/locales/es/language-info.lokalise.json
index cca2bb5d0a..4ff33090fa 100644
--- a/src/livecodes/i18n/locales/es/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/es/language-info.lokalise.json
@@ -804,6 +804,15 @@
"svelte.name": {
"translation": "Svelte"
},
+ "swiftWasm.desc": {
+ "translation": "Swift se compila a WebAssembly por el propio compilador de Swift: swift-frontend y wasm-ld , ambos compilados a WebAssembly, se ejecutan íntegramente en el navegador. No hay ningún servidor involucrado."
+ },
+ "swiftWasm.link": {
+ "translation": " Página web oficial de Swift El Lenguaje de Programación Swift Aprende X en Y minutos, donde X = Swift Documentación de LiveCodes Cargar plantilla de inicio "
+ },
+ "swiftWasm.name": {
+ "translation": "Swift (Wasm)"
+ },
"tcl.desc": {
"translation": "Tcl ejecutándose en el navegador, usando wacl ."
},
diff --git a/src/livecodes/i18n/locales/es/language-info.ts b/src/livecodes/i18n/locales/es/language-info.ts
index 0eed2116d1..49d5ecdfbc 100644
--- a/src/livecodes/i18n/locales/es/language-info.ts
+++ b/src/livecodes/i18n/locales/es/language-info.ts
@@ -455,6 +455,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Sitio web oficial de Svelte2> 1> <3> <4>Documentación de Svelte4> 3> <5> <6>Cargar plantilla inicial6> 5>',
name: 'Svelte',
},
+ swiftWasm: {
+ desc: 'Swift se compila a WebAssembly por el propio compilador de Swift: <1>swift-frontend1> y <2>wasm-ld2>, ambos compilados a WebAssembly, se ejecutan íntegramente en el navegador. No hay ningún servidor involucrado.',
+ link: '<1> <2>Página web oficial de Swift2> 1> <3> <4>El Lenguaje de Programación Swift4> 3> <5> <6>Aprende X en Y minutos, donde X = Swift6> 5> <7> <8>Documentación de LiveCodes8> 7> <9> <10>Cargar plantilla de inicio10> 9>',
+ name: 'Swift (Wasm)',
+ },
tcl: {
desc: 'Tcl ejecutándose en el navegador, usando <1>wacl1>.',
link: '<1> <2>Sitio web oficial de Tcl2> 1> <3> <4>Repositorio de wacl4> 3> <5> <6>Aprende X en Y minutos, donde X=Tcl6> 5> <7> <8>Cargar plantilla inicial8> 7>',
diff --git a/src/livecodes/i18n/locales/es/translation.lokalise.json b/src/livecodes/i18n/locales/es/translation.lokalise.json
index fa60fc91bb..e694648254 100644
--- a/src/livecodes/i18n/locales/es/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/es/translation.lokalise.json
@@ -2127,6 +2127,9 @@
"templates.starter.svelte": {
"translation": "Inicio Svelte"
},
+ "templates.starter.swift-wasm": {
+ "translation": "Inicio Swift (Wasm)"
+ },
"templates.starter.tailwindcss": {
"translation": "Inicio Tailwind CSS"
},
diff --git a/src/livecodes/i18n/locales/es/translation.ts b/src/livecodes/i18n/locales/es/translation.ts
index 5eb246339e..c943ad56f7 100644
--- a/src/livecodes/i18n/locales/es/translation.ts
+++ b/src/livecodes/i18n/locales/es/translation.ts
@@ -1048,6 +1048,7 @@ const translation: I18nTranslation = {
sql: 'Inicio SQL',
stencil: 'Inicio Stencil',
svelte: 'Inicio Svelte',
+ 'swift-wasm': 'Inicio Swift (Wasm)',
tailwindcss: 'Inicio Tailwind CSS',
tcl: 'Inicio Tcl',
teal: 'Inicio Teal',
diff --git a/src/livecodes/i18n/locales/fa/language-info.lokalise.json b/src/livecodes/i18n/locales/fa/language-info.lokalise.json
index d95d566527..fc3245b201 100644
--- a/src/livecodes/i18n/locales/fa/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/fa/language-info.lokalise.json
@@ -804,6 +804,15 @@
"svelte.name": {
"translation": "Svelte"
},
+ "swiftWasm.desc": {
+ "translation": "Swift توسط خود کامپایلر Swift به WebAssembly کامپایل میشود: swift-frontend و wasm-ld که هر دو به WebAssembly کامپایل شدهاند و کاملاً در مرورگر اجرا میشوند. هیچ سروری درگیر نیست."
+ },
+ "swiftWasm.link": {
+ "translation": " وبسایت رسمی Swift زبان برنامهنویسی Swift یادگیری X در Y دقیقه، که X=Swift مستندات لایوکدز بارگذاری قالب شروع "
+ },
+ "swiftWasm.name": {
+ "translation": "Swift (Wasm)"
+ },
"tcl.desc": {
"translation": "Tcl که در مرورگر اجرا میشود، با استفاده از wacl ."
},
diff --git a/src/livecodes/i18n/locales/fa/language-info.ts b/src/livecodes/i18n/locales/fa/language-info.ts
index c650f797ed..0d394b3eb9 100644
--- a/src/livecodes/i18n/locales/fa/language-info.ts
+++ b/src/livecodes/i18n/locales/fa/language-info.ts
@@ -454,6 +454,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>وبسایت رسمی Svelte2> 1> <3> <4>مستندات Svelte4> 3> <5> <6>بارگذاری قالب شروع کننده6> 5>',
name: 'Svelte',
},
+ swiftWasm: {
+ desc: 'Swift توسط خود کامپایلر Swift به WebAssembly کامپایل میشود: <1>swift-frontend1> و <2>wasm-ld2> که هر دو به WebAssembly کامپایل شدهاند و کاملاً در مرورگر اجرا میشوند. هیچ سروری درگیر نیست.',
+ link: '<1> <2>وبسایت رسمی Swift2> 1> <3> <4>زبان برنامهنویسی Swift4> 3> <5> <6>یادگیری X در Y دقیقه، که X=Swift6> 5> <7> <8>مستندات لایوکدز8> 7> <9> <10>بارگذاری قالب شروع10> 9>',
+ name: 'Swift (Wasm)',
+ },
tcl: {
desc: 'Tcl که در مرورگر اجرا میشود، با استفاده از <1>wacl1>.',
link: '<1> <2>وبسایت رسمی Tcl2> 1> <3> <4>مخزن wacl4> 3> <5> <6>یادگیری X در Y دقیقه، جایی که X=Tcl6> 5> <7> <8>بارگذاری قالب شروع کننده8> 7>',
diff --git a/src/livecodes/i18n/locales/fa/translation.lokalise.json b/src/livecodes/i18n/locales/fa/translation.lokalise.json
index cd2a637323..ec20a37980 100644
--- a/src/livecodes/i18n/locales/fa/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/fa/translation.lokalise.json
@@ -2127,6 +2127,9 @@
"templates.starter.svelte": {
"translation": "شروع کننده Svelte"
},
+ "templates.starter.swift-wasm": {
+ "translation": "شروع کننده Swift (Wasm)"
+ },
"templates.starter.tailwindcss": {
"translation": "شروع کننده Tailwind CSS"
},
diff --git a/src/livecodes/i18n/locales/fa/translation.ts b/src/livecodes/i18n/locales/fa/translation.ts
index 8ab63e9250..55163f22b0 100644
--- a/src/livecodes/i18n/locales/fa/translation.ts
+++ b/src/livecodes/i18n/locales/fa/translation.ts
@@ -1049,6 +1049,7 @@ const translation: I18nTranslation = {
sql: 'شروع کننده SQL',
stencil: 'شروع کننده Stencil',
svelte: 'شروع کننده Svelte',
+ 'swift-wasm': 'شروع کننده Swift (Wasm)',
tailwindcss: 'شروع کننده Tailwind CSS',
tcl: 'شروع کننده Tcl',
teal: 'شروع کننده Teal',
diff --git a/src/livecodes/i18n/locales/fr/language-info.lokalise.json b/src/livecodes/i18n/locales/fr/language-info.lokalise.json
index 80cfa86b57..30547f00c1 100644
--- a/src/livecodes/i18n/locales/fr/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/fr/language-info.lokalise.json
@@ -804,6 +804,15 @@
"svelte.name": {
"translation": "Svelte"
},
+ "swiftWasm.desc": {
+ "translation": "Swift est compilé en WebAssembly par le compilateur Swift lui-même : swift-frontend et wasm-ld , tous deux compilés en WebAssembly, s'exécutent entièrement dans le navigateur. Aucun serveur n'est impliqué."
+ },
+ "swiftWasm.link": {
+ "translation": " Site officiel de Swift Le langage de programmation Swift Apprenez X en Y minutes, où X = Swift Documentation LiveCodes Charger un modèle de démarrage "
+ },
+ "swiftWasm.name": {
+ "translation": "Swift (Wasm)"
+ },
"tcl.desc": {
"translation": "Tcl s'exécutant dans le navigateur, en utilisant wacl ."
},
diff --git a/src/livecodes/i18n/locales/fr/language-info.ts b/src/livecodes/i18n/locales/fr/language-info.ts
index 89953200dd..753745d587 100644
--- a/src/livecodes/i18n/locales/fr/language-info.ts
+++ b/src/livecodes/i18n/locales/fr/language-info.ts
@@ -455,6 +455,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Site officiel de Svelte2> 1> <3> <4>Documentation de Svelte4> 3> <5> <6>Charger le modèle de démarrage6> 5>',
name: 'Svelte',
},
+ swiftWasm: {
+ desc: "Swift est compilé en WebAssembly par le compilateur Swift lui-même : <1>swift-frontend1> et <2>wasm-ld2>, tous deux compilés en WebAssembly, s'exécutent entièrement dans le navigateur. Aucun serveur n'est impliqué.",
+ link: '<1> <2>Site officiel de Swift2> 1> <3> <4>Le langage de programmation Swift4> 3> <5> <6>Apprenez X en Y minutes, où X = Swift6> 5> <7> <8>Documentation LiveCodes8> 7> <9> <10>Charger un modèle de démarrage10> 9>',
+ name: 'Swift (Wasm)',
+ },
tcl: {
desc: "Tcl s'exécutant dans le navigateur, en utilisant <1>wacl1>.",
link: '<1> <2>Site officiel de Tcl2> 1> <3> <4>Dépôt wacl4> 3> <5> <6>Apprenez X en Y minutes, où X=Tcl6> 5> <7> <8>Charger le modèle de démarrage8> 7>',
diff --git a/src/livecodes/i18n/locales/fr/translation.lokalise.json b/src/livecodes/i18n/locales/fr/translation.lokalise.json
index f1d696ba05..ecf3a38156 100644
--- a/src/livecodes/i18n/locales/fr/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/fr/translation.lokalise.json
@@ -2127,6 +2127,9 @@
"templates.starter.svelte": {
"translation": "Démarrage Svelte"
},
+ "templates.starter.swift-wasm": {
+ "translation": "Démarrage Swift (Wasm)"
+ },
"templates.starter.tailwindcss": {
"translation": "Démarrage Tailwind CSS"
},
diff --git a/src/livecodes/i18n/locales/fr/translation.ts b/src/livecodes/i18n/locales/fr/translation.ts
index 06cd6ee5a0..88b5d1df05 100644
--- a/src/livecodes/i18n/locales/fr/translation.ts
+++ b/src/livecodes/i18n/locales/fr/translation.ts
@@ -1050,6 +1050,7 @@ const translation: I18nTranslation = {
sql: 'Démarrage SQL',
stencil: 'Démarrage Stencil',
svelte: 'Démarrage Svelte',
+ 'swift-wasm': 'Démarrage Swift (Wasm)',
tailwindcss: 'Démarrage Tailwind CSS',
tcl: 'Démarrage Tcl',
teal: 'Démarrage Teal',
diff --git a/src/livecodes/i18n/locales/hi/language-info.lokalise.json b/src/livecodes/i18n/locales/hi/language-info.lokalise.json
index 5cb25eb594..beabd6f8ec 100644
--- a/src/livecodes/i18n/locales/hi/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/hi/language-info.lokalise.json
@@ -804,6 +804,15 @@
"svelte.name": {
"translation": "Svelte"
},
+ "swiftWasm.desc": {
+ "translation": "Swift को स्वयं Swift कंपाइलर द्वारा WebAssembly में संकलित किया गया है: swift-frontend और wasm-ld , दोनों WebAssembly में संकलित हैं और पूरी तरह से ब्राउज़र में चलते हैं। कोई सर्वर शामिल नहीं है।"
+ },
+ "swiftWasm.link": {
+ "translation": " Swift आधिकारिक वेबसाइट Swift प्रोग्रामिंग भाषा Y मिनट में X सीखें, जहाँ X=Swift लाइवकोड्स दस्तावेज़ीकरण स्टार्टर टेम्पलेट लोड करें "
+ },
+ "swiftWasm.name": {
+ "translation": "Swift (Wasm)"
+ },
"tcl.desc": {
"translation": "wacl का उपयोग करके ब्राउज़र में चलने वाला Tcl।"
},
diff --git a/src/livecodes/i18n/locales/hi/language-info.ts b/src/livecodes/i18n/locales/hi/language-info.ts
index bb0e724eef..c1cbc04830 100644
--- a/src/livecodes/i18n/locales/hi/language-info.ts
+++ b/src/livecodes/i18n/locales/hi/language-info.ts
@@ -456,6 +456,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Svelte आधिकारिक वेबसाइट2> 1> <3> <4>Svelte दस्तावेज़ीकरण4> 3> <5> <6>स्टार्टर टेम्पलेट लोड करें6> 5>',
name: 'Svelte',
},
+ swiftWasm: {
+ desc: 'Swift को स्वयं Swift कंपाइलर द्वारा WebAssembly में संकलित किया गया है: <1>swift-frontend1> और <2>wasm-ld2>, दोनों WebAssembly में संकलित हैं और पूरी तरह से ब्राउज़र में चलते हैं। कोई सर्वर शामिल नहीं है।',
+ link: '<1> <2>Swift आधिकारिक वेबसाइट2> 1> <3> <4>Swift प्रोग्रामिंग भाषा4> 3> <5> <6>Y मिनट में X सीखें, जहाँ X=Swift6> 5> <7> <8>लाइवकोड्स दस्तावेज़ीकरण8> 7> <9> <10>स्टार्टर टेम्पलेट लोड करें10> 9>',
+ name: 'Swift (Wasm)',
+ },
tcl: {
desc: '<1>wacl1> का उपयोग करके ब्राउज़र में चलने वाला Tcl।',
link: '<1> <2>Tcl आधिकारिक वेबसाइट2> 1> <3> <4>wacl रेपो4> 3> <5> <6>X को Y मिनटों में सीखें, जहां X=Tcl6> 5> <7> <8>स्टार्टर टेम्पलेट लोड करें8> 7>',
diff --git a/src/livecodes/i18n/locales/hi/translation.lokalise.json b/src/livecodes/i18n/locales/hi/translation.lokalise.json
index 2de91b7ab3..ff6dc55e66 100644
--- a/src/livecodes/i18n/locales/hi/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/hi/translation.lokalise.json
@@ -2127,6 +2127,9 @@
"templates.starter.svelte": {
"translation": "Svelte स्टार्टर"
},
+ "templates.starter.swift-wasm": {
+ "translation": "Swift (Wasm) स्टार्टर"
+ },
"templates.starter.tailwindcss": {
"translation": "Tailwind CSS स्टार्टर"
},
diff --git a/src/livecodes/i18n/locales/hi/translation.ts b/src/livecodes/i18n/locales/hi/translation.ts
index e58d96f5b0..a815bfa6a4 100644
--- a/src/livecodes/i18n/locales/hi/translation.ts
+++ b/src/livecodes/i18n/locales/hi/translation.ts
@@ -1048,6 +1048,7 @@ const translation: I18nTranslation = {
sql: 'SQL स्टार्टर',
stencil: 'Stencil स्टार्टर',
svelte: 'Svelte स्टार्टर',
+ 'swift-wasm': 'Swift (Wasm) स्टार्टर',
tailwindcss: 'Tailwind CSS स्टार्टर',
tcl: 'Tcl स्टार्टर',
teal: 'Teal स्टार्टर',
diff --git a/src/livecodes/i18n/locales/hu/language-info.lokalise.json b/src/livecodes/i18n/locales/hu/language-info.lokalise.json
index e994cd63b8..e44f08e61d 100644
--- a/src/livecodes/i18n/locales/hu/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/hu/language-info.lokalise.json
@@ -804,6 +804,15 @@
"svelte.name": {
"translation": "Svelte"
},
+ "swiftWasm.desc": {
+ "translation": "A Swiftet maga a Swift-fordító fordítja WebAssembly-re: a swift-frontend és a wasm-ld is WebAssembly-re van fordítva, és teljes egészében a böngészőben fut. Nem vesz igénybe szervert."
+ },
+ "swiftWasm.link": {
+ "translation": " A Swift hivatalos weboldala A Swift programozási nyelv Tanulj meg X-et Y perc alatt, ahol X=Swift LiveCodes dokumentáció Indító sablon betöltése "
+ },
+ "swiftWasm.name": {
+ "translation": "Swift (Wasm)"
+ },
"tcl.desc": {
"translation": "Tcl fut a böngészőben, a wacl használatával."
},
diff --git a/src/livecodes/i18n/locales/hu/language-info.ts b/src/livecodes/i18n/locales/hu/language-info.ts
index 68d675e987..d2306d8a53 100644
--- a/src/livecodes/i18n/locales/hu/language-info.ts
+++ b/src/livecodes/i18n/locales/hu/language-info.ts
@@ -455,6 +455,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Svelte hivatalos weboldal2> 1> <3> <4>Svelte dokumentáció4> 3> <5> <6>Kezdő sablon betöltése6> 5>',
name: 'Svelte',
},
+ swiftWasm: {
+ desc: 'A Swiftet maga a Swift-fordító fordítja WebAssembly-re: a <1>swift-frontend1> és a <2>wasm-ld2> is WebAssembly-re van fordítva, és teljes egészében a böngészőben fut. Nem vesz igénybe szervert.',
+ link: '<1> <2>A Swift hivatalos weboldala2> 1> <3> <4>A Swift programozási nyelv4> 3> <5> <6>Tanulj meg X-et Y perc alatt, ahol X=Swift6> 5> <7> <8>LiveCodes dokumentáció8> 7> <9> <10>Indító sablon betöltése10> 9>',
+ name: 'Swift (Wasm)',
+ },
tcl: {
desc: 'Tcl fut a böngészőben, a <1>wacl1> használatával.',
link: '<1> <2>Tcl hivatalos weboldal2> 1> <3> <4>wacl repo4> 3> <5> <6>Tanulj X-et Y perc alatt, ahol X=Tcl6> 5> <7> <8>Kezdő sablon betöltése8> 7>',
diff --git a/src/livecodes/i18n/locales/hu/translation.lokalise.json b/src/livecodes/i18n/locales/hu/translation.lokalise.json
index 1042d7f77d..104635491a 100644
--- a/src/livecodes/i18n/locales/hu/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/hu/translation.lokalise.json
@@ -2127,6 +2127,9 @@
"templates.starter.svelte": {
"translation": "Svelte kezdő"
},
+ "templates.starter.swift-wasm": {
+ "translation": "Swift (Wasm) kezdő"
+ },
"templates.starter.tailwindcss": {
"translation": "Tailwind CSS kezdő"
},
diff --git a/src/livecodes/i18n/locales/hu/translation.ts b/src/livecodes/i18n/locales/hu/translation.ts
index 57f8fc7175..2211b85db4 100644
--- a/src/livecodes/i18n/locales/hu/translation.ts
+++ b/src/livecodes/i18n/locales/hu/translation.ts
@@ -1049,6 +1049,7 @@ const translation: I18nTranslation = {
sql: 'SQL kezdő',
stencil: 'Stencil kezdő',
svelte: 'Svelte kezdő',
+ 'swift-wasm': 'Swift (Wasm) kezdő',
tailwindcss: 'Tailwind CSS kezdő',
tcl: 'Tcl kezdő',
teal: 'Teal kezdő',
diff --git a/src/livecodes/i18n/locales/id/language-info.lokalise.json b/src/livecodes/i18n/locales/id/language-info.lokalise.json
index eb099732b4..c16b14315e 100644
--- a/src/livecodes/i18n/locales/id/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/id/language-info.lokalise.json
@@ -804,6 +804,15 @@
"svelte.name": {
"translation": "Svelte"
},
+ "swiftWasm.desc": {
+ "translation": "Swift dikompilasi ke WebAssembly oleh kompiler Swift itu sendiri: swift-frontend dan wasm-ld , keduanya dikompilasi ke WebAssembly dan berjalan sepenuhnya di dalam browser. Tidak ada server yang terlibat."
+ },
+ "swiftWasm.link": {
+ "translation": " Situs web resmi Swift Bahasa Pemrograman Swift Belajar X dalam Y menit, di mana X = Swift Dokumentasi LiveCodes Muat templat awal "
+ },
+ "swiftWasm.name": {
+ "translation": "Swift (Wasm)"
+ },
"tcl.desc": {
"translation": "Tcl berjalan di browser, menggunakan wacl ."
},
diff --git a/src/livecodes/i18n/locales/id/language-info.ts b/src/livecodes/i18n/locales/id/language-info.ts
index cb1f8338e7..29d6af08b0 100644
--- a/src/livecodes/i18n/locales/id/language-info.ts
+++ b/src/livecodes/i18n/locales/id/language-info.ts
@@ -455,6 +455,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Situs web resmi Svelte2> 1> <3> <4>Dokumentasi Svelte4> 3> <5> <6>Muat template pemula6> 5>',
name: 'Svelte',
},
+ swiftWasm: {
+ desc: 'Swift dikompilasi ke WebAssembly oleh kompiler Swift itu sendiri: <1>swift-frontend1> dan <2>wasm-ld2>, keduanya dikompilasi ke WebAssembly dan berjalan sepenuhnya di dalam browser. Tidak ada server yang terlibat.',
+ link: '<1> <2>Situs web resmi Swift2> 1> <3> <4>Bahasa Pemrograman Swift4> 3> <5> <6>Belajar X dalam Y menit, di mana X = Swift6> 5> <7> <8>Dokumentasi LiveCodes8> 7> <9> <10>Muat templat awal10> 9>',
+ name: 'Swift (Wasm)',
+ },
tcl: {
desc: 'Tcl berjalan di browser, menggunakan <1>wacl1>.',
link: '<1> <2>Situs web resmi Tcl2> 1> <3> <4>Repo wacl4> 3> <5> <6>Pelajari X dalam Y menit, dengan X=Tcl6> 5> <7> <8>Muat template pemula8> 7>',
diff --git a/src/livecodes/i18n/locales/id/translation.lokalise.json b/src/livecodes/i18n/locales/id/translation.lokalise.json
index 859904e2eb..88ff86c599 100644
--- a/src/livecodes/i18n/locales/id/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/id/translation.lokalise.json
@@ -2127,6 +2127,9 @@
"templates.starter.svelte": {
"translation": "Pemula Svelte"
},
+ "templates.starter.swift-wasm": {
+ "translation": "Pemula Swift (Wasm)"
+ },
"templates.starter.tailwindcss": {
"translation": "Pemula Tailwind CSS"
},
diff --git a/src/livecodes/i18n/locales/id/translation.ts b/src/livecodes/i18n/locales/id/translation.ts
index dd1b6c6ce1..fb8b322120 100644
--- a/src/livecodes/i18n/locales/id/translation.ts
+++ b/src/livecodes/i18n/locales/id/translation.ts
@@ -1048,6 +1048,7 @@ const translation: I18nTranslation = {
sql: 'Pemula SQL',
stencil: 'Pemula Stencil',
svelte: 'Pemula Svelte',
+ 'swift-wasm': 'Pemula Swift (Wasm)',
tailwindcss: 'Pemula Tailwind CSS',
tcl: 'Pemula Tcl',
teal: 'Pemula Teal',
diff --git a/src/livecodes/i18n/locales/it/language-info.lokalise.json b/src/livecodes/i18n/locales/it/language-info.lokalise.json
index b6769267c7..e87184820a 100644
--- a/src/livecodes/i18n/locales/it/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/it/language-info.lokalise.json
@@ -804,6 +804,15 @@
"svelte.name": {
"translation": "Svelte"
},
+ "swiftWasm.desc": {
+ "translation": "Swift viene compilato in WebAssembly dal compilatore Swift stesso: swift-frontend e wasm-ld , entrambi compilati in WebAssembly, vengono eseguiti interamente nel browser. Nessun server è coinvolto."
+ },
+ "swiftWasm.link": {
+ "translation": " Sito web ufficiale di Swift Il linguaggio di programmazione Swift Impara X in Y minuti, dove X = Swift Documentazione di LiveCodes Carica il modello di partenza "
+ },
+ "swiftWasm.name": {
+ "translation": "Swift (Wasm)"
+ },
"tcl.desc": {
"translation": "Tcl in esecuzione nel browser, utilizzando wacl ."
},
diff --git a/src/livecodes/i18n/locales/it/language-info.ts b/src/livecodes/i18n/locales/it/language-info.ts
index c90adeda89..946954ff46 100644
--- a/src/livecodes/i18n/locales/it/language-info.ts
+++ b/src/livecodes/i18n/locales/it/language-info.ts
@@ -454,6 +454,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Sito ufficiale di Svelte2> 1> <3> <4>Documentazione di Svelte4> 3> <5> <6>Carica modello di partenza6> 5>',
name: 'Svelte',
},
+ swiftWasm: {
+ desc: 'Swift viene compilato in WebAssembly dal compilatore Swift stesso: <1>swift-frontend1> e <2>wasm-ld2>, entrambi compilati in WebAssembly, vengono eseguiti interamente nel browser. Nessun server è coinvolto.',
+ link: '<1> <2>Sito web ufficiale di Swift2> 1> <3> <4>Il linguaggio di programmazione Swift4> 3> <5> <6>Impara X in Y minuti, dove X = Swift6> 5> <7> <8>Documentazione di LiveCodes8> 7> <9> <10>Carica il modello di partenza10> 9>',
+ name: 'Swift (Wasm)',
+ },
tcl: {
desc: 'Tcl in esecuzione nel browser, utilizzando <1>wacl1>.',
link: '<1> <2>Sito ufficiale di Tcl2> 1> <3> <4>Repository di wacl4> 3> <5> <6>Impara X in Y minuti, dove X=Tcl6> 5> <7> <8>Carica modello di partenza8> 7>',
diff --git a/src/livecodes/i18n/locales/it/translation.lokalise.json b/src/livecodes/i18n/locales/it/translation.lokalise.json
index 1bc2feacf0..c8c7981ddd 100644
--- a/src/livecodes/i18n/locales/it/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/it/translation.lokalise.json
@@ -2127,6 +2127,9 @@
"templates.starter.svelte": {
"translation": "Starter Svelte"
},
+ "templates.starter.swift-wasm": {
+ "translation": "Starter Swift (Wasm)"
+ },
"templates.starter.tailwindcss": {
"translation": "Starter Tailwind CSS"
},
diff --git a/src/livecodes/i18n/locales/it/translation.ts b/src/livecodes/i18n/locales/it/translation.ts
index bdb355a444..af608f2a13 100644
--- a/src/livecodes/i18n/locales/it/translation.ts
+++ b/src/livecodes/i18n/locales/it/translation.ts
@@ -1049,6 +1049,7 @@ const translation: I18nTranslation = {
sql: 'Starter SQL',
stencil: 'Starter Stencil',
svelte: 'Starter Svelte',
+ 'swift-wasm': 'Starter Swift (Wasm)',
tailwindcss: 'Starter Tailwind CSS',
tcl: 'Starter Tcl',
teal: 'Starter Teal',
diff --git a/src/livecodes/i18n/locales/ja/language-info.lokalise.json b/src/livecodes/i18n/locales/ja/language-info.lokalise.json
index 71a266a5d3..d510b784d6 100644
--- a/src/livecodes/i18n/locales/ja/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/ja/language-info.lokalise.json
@@ -804,6 +804,15 @@
"svelte.name": {
"translation": "Svelte"
},
+ "swiftWasm.desc": {
+ "translation": "Swift は Swift コンパイラ自身によって WebAssembly にコンパイルされます。swift-frontend と wasm-ld はいずれも WebAssembly にコンパイルされ、完全にブラウザ内で実行されます。サーバーは関与しません。"
+ },
+ "swiftWasm.link": {
+ "translation": " Swift 公式サイト Swiftプログラミング言語 「Y分でXを学ぶ」(X=Swift) LiveCodes ドキュメント スターターテンプレートを読み込む "
+ },
+ "swiftWasm.name": {
+ "translation": "Swift (Wasm)"
+ },
"tcl.desc": {
"translation": "wacl を使用してブラウザで動作する Tcl。"
},
diff --git a/src/livecodes/i18n/locales/ja/language-info.ts b/src/livecodes/i18n/locales/ja/language-info.ts
index 9213e76bad..2c4fa14c44 100644
--- a/src/livecodes/i18n/locales/ja/language-info.ts
+++ b/src/livecodes/i18n/locales/ja/language-info.ts
@@ -455,6 +455,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Svelte 公式ウェブサイト2> 1> <3> <4>Svelte ドキュメント4> 3> <5> <6>スターターテンプレートを読み込む6> 5>',
name: 'Svelte',
},
+ swiftWasm: {
+ desc: 'Swift は Swift コンパイラ自身によって WebAssembly にコンパイルされます。<1>swift-frontend1> と <2>wasm-ld2> はいずれも WebAssembly にコンパイルされ、完全にブラウザ内で実行されます。サーバーは関与しません。',
+ link: '<1> <2>Swift 公式サイト2> 1> <3> <4>Swiftプログラミング言語4> 3> <5> <6>「Y分でXを学ぶ」(X=Swift)6> 5> <7> <8>LiveCodes ドキュメント8> 7> <9> <10>スターターテンプレートを読み込む10> 9>',
+ name: 'Swift (Wasm)',
+ },
tcl: {
desc: '<1>wacl1>を使用してブラウザで動作する Tcl。',
link: '<1> <2>Tcl 公式ウェブサイト2> 1> <3> <4>wacl リポジトリ4> 3> <5> <6>X分でYを学ぶ、X=Tcl6> 5> <7> <8>スターターテンプレートを読み込む8> 7>',
diff --git a/src/livecodes/i18n/locales/ja/translation.lokalise.json b/src/livecodes/i18n/locales/ja/translation.lokalise.json
index 84d988f0a9..01185a398e 100644
--- a/src/livecodes/i18n/locales/ja/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/ja/translation.lokalise.json
@@ -2127,6 +2127,9 @@
"templates.starter.svelte": {
"translation": "Svelteスターター"
},
+ "templates.starter.swift-wasm": {
+ "translation": "Swift(Wasm)スターター"
+ },
"templates.starter.tailwindcss": {
"translation": "Tailwind CSSスターター"
},
diff --git a/src/livecodes/i18n/locales/ja/translation.ts b/src/livecodes/i18n/locales/ja/translation.ts
index d2c019e3d3..000e5cf657 100644
--- a/src/livecodes/i18n/locales/ja/translation.ts
+++ b/src/livecodes/i18n/locales/ja/translation.ts
@@ -1049,6 +1049,7 @@ const translation: I18nTranslation = {
sql: 'SQLスターター',
stencil: 'Stencilスターター',
svelte: 'Svelteスターター',
+ 'swift-wasm': 'Swift(Wasm)スターター',
tailwindcss: 'Tailwind CSSスターター',
tcl: 'Tclスターター',
teal: 'Tealスターター',
diff --git a/src/livecodes/i18n/locales/nl/language-info.lokalise.json b/src/livecodes/i18n/locales/nl/language-info.lokalise.json
index 24e4e6eda5..f962a695b8 100644
--- a/src/livecodes/i18n/locales/nl/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/nl/language-info.lokalise.json
@@ -804,6 +804,15 @@
"svelte.name": {
"translation": "Svelte"
},
+ "swiftWasm.desc": {
+ "translation": "Swift wordt door de Swift-compiler zelf naar WebAssembly gecompileerd: swift-frontend en wasm-ld zijn beide naar WebAssembly gecompileerd en draaien volledig in de browser. Er is geen server bij betrokken."
+ },
+ "swiftWasm.link": {
+ "translation": " Officiële website van Swift The Swift Programming Language Leer X in Y minuten, waarbij X = Swift LiveCodes-documentatie Starterssjabloon laden "
+ },
+ "swiftWasm.name": {
+ "translation": "Swift (Wasm)"
+ },
"tcl.desc": {
"translation": "Tcl draaiend in de browser, met wacl ."
},
diff --git a/src/livecodes/i18n/locales/nl/language-info.ts b/src/livecodes/i18n/locales/nl/language-info.ts
index 488cac5f59..d355a2d516 100644
--- a/src/livecodes/i18n/locales/nl/language-info.ts
+++ b/src/livecodes/i18n/locales/nl/language-info.ts
@@ -454,6 +454,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Svelte officiële website2> 1> <3> <4>Svelte documentatie4> 3> <5> <6>Startsjabloon laden6> 5>',
name: 'Svelte',
},
+ swiftWasm: {
+ desc: 'Swift wordt door de Swift-compiler zelf naar WebAssembly gecompileerd: <1>swift-frontend1> en <2>wasm-ld2> zijn beide naar WebAssembly gecompileerd en draaien volledig in de browser. Er is geen server bij betrokken.',
+ link: '<1> <2>Officiële website van Swift2> 1> <3> <4>The Swift Programming Language4> 3> <5> <6>Leer X in Y minuten, waarbij X = Swift6> 5> <7> <8>LiveCodes-documentatie8> 7> <9> <10>Starterssjabloon laden10> 9>',
+ name: 'Swift (Wasm)',
+ },
tcl: {
desc: 'Tcl draaiend in de browser, met <1>wacl1>.',
link: '<1> <2>Tcl officiële website2> 1> <3> <4>wacl repo4> 3> <5> <6>Leer X in Y minuten, waarbij X=Tcl6> 5> <7> <8>Startsjabloon laden8> 7>',
diff --git a/src/livecodes/i18n/locales/nl/translation.lokalise.json b/src/livecodes/i18n/locales/nl/translation.lokalise.json
index 93598f3957..28bad6fb4e 100644
--- a/src/livecodes/i18n/locales/nl/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/nl/translation.lokalise.json
@@ -2127,6 +2127,9 @@
"templates.starter.svelte": {
"translation": "Svelte-starter"
},
+ "templates.starter.swift-wasm": {
+ "translation": "Swift (Wasm)-starter"
+ },
"templates.starter.tailwindcss": {
"translation": "Tailwind CSS-starter"
},
diff --git a/src/livecodes/i18n/locales/nl/translation.ts b/src/livecodes/i18n/locales/nl/translation.ts
index 2130970f82..eae95d3766 100644
--- a/src/livecodes/i18n/locales/nl/translation.ts
+++ b/src/livecodes/i18n/locales/nl/translation.ts
@@ -1049,6 +1049,7 @@ const translation: I18nTranslation = {
sql: 'SQL-starter',
stencil: 'Stencil-starter',
svelte: 'Svelte-starter',
+ 'swift-wasm': 'Swift (Wasm)-starter',
tailwindcss: 'Tailwind CSS-starter',
tcl: 'Tcl-starter',
teal: 'Teal-starter',
diff --git a/src/livecodes/i18n/locales/pt/language-info.lokalise.json b/src/livecodes/i18n/locales/pt/language-info.lokalise.json
index 185a1c2b58..527e405db1 100644
--- a/src/livecodes/i18n/locales/pt/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/pt/language-info.lokalise.json
@@ -804,6 +804,15 @@
"svelte.name": {
"translation": "Svelte"
},
+ "swiftWasm.desc": {
+ "translation": "O Swift é compilado para WebAssembly pelo próprio compilador Swift: swift-frontend e wasm-ld , ambos compilados para WebAssembly, são executados inteiramente no navegador. Nenhum servidor está envolvido."
+ },
+ "swiftWasm.link": {
+ "translation": " Site oficial do Swift A Linguagem de Programação Swift Aprenda X em Y minutos, onde X = Swift Documentação do LiveCodes Carregar modelo inicial "
+ },
+ "swiftWasm.name": {
+ "translation": "Swift (Wasm)"
+ },
"tcl.desc": {
"translation": "Tcl rodando no navegador, usando wacl ."
},
diff --git a/src/livecodes/i18n/locales/pt/language-info.ts b/src/livecodes/i18n/locales/pt/language-info.ts
index 616c965a82..c30c4689e1 100644
--- a/src/livecodes/i18n/locales/pt/language-info.ts
+++ b/src/livecodes/i18n/locales/pt/language-info.ts
@@ -454,6 +454,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Site oficial do Svelte2> 1> <3> <4>Documentação do Svelte4> 3> <5> <6>Carregar modelo inicial6> 5>',
name: 'Svelte',
},
+ swiftWasm: {
+ desc: 'O Swift é compilado para WebAssembly pelo próprio compilador Swift: <1>swift-frontend1> e <2>wasm-ld2>, ambos compilados para WebAssembly, são executados inteiramente no navegador. Nenhum servidor está envolvido.',
+ link: '<1> <2>Site oficial do Swift2> 1> <3> <4>A Linguagem de Programação Swift4> 3> <5> <6>Aprenda X em Y minutos, onde X = Swift6> 5> <7> <8>Documentação do LiveCodes8> 7> <9> <10>Carregar modelo inicial10> 9>',
+ name: 'Swift (Wasm)',
+ },
tcl: {
desc: 'Tcl rodando no navegador, usando <1>wacl1>.',
link: '<1> <2>Site oficial do Tcl2> 1> <3> <4>Repositório do wacl4> 3> <5> <6>Aprenda X em Y minutos, onde X=Tcl6> 5> <7> <8>Carregar modelo inicial8> 7>',
diff --git a/src/livecodes/i18n/locales/pt/translation.lokalise.json b/src/livecodes/i18n/locales/pt/translation.lokalise.json
index 5235490e33..a9f4e98a9f 100644
--- a/src/livecodes/i18n/locales/pt/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/pt/translation.lokalise.json
@@ -2127,6 +2127,9 @@
"templates.starter.svelte": {
"translation": "Iniciante Svelte"
},
+ "templates.starter.swift-wasm": {
+ "translation": "Iniciante Swift (Wasm)"
+ },
"templates.starter.tailwindcss": {
"translation": "Iniciante Tailwind CSS"
},
diff --git a/src/livecodes/i18n/locales/pt/translation.ts b/src/livecodes/i18n/locales/pt/translation.ts
index 09214b06cf..b08a6eb025 100644
--- a/src/livecodes/i18n/locales/pt/translation.ts
+++ b/src/livecodes/i18n/locales/pt/translation.ts
@@ -1049,6 +1049,7 @@ const translation: I18nTranslation = {
sql: 'Iniciante SQL',
stencil: 'Iniciante Stencil',
svelte: 'Iniciante Svelte',
+ 'swift-wasm': 'Iniciante Swift (Wasm)',
tailwindcss: 'Iniciante Tailwind CSS',
tcl: 'Iniciante Tcl',
teal: 'Iniciante Teal',
diff --git a/src/livecodes/i18n/locales/ru/language-info.lokalise.json b/src/livecodes/i18n/locales/ru/language-info.lokalise.json
index 912af64d61..76c5c5f4fc 100644
--- a/src/livecodes/i18n/locales/ru/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/ru/language-info.lokalise.json
@@ -804,6 +804,15 @@
"svelte.name": {
"translation": "Svelte"
},
+ "swiftWasm.desc": {
+ "translation": "Swift компилируется в WebAssembly самим компилятором Swift: swift-frontend и wasm-ld также скомпилированы в WebAssembly и выполняются полностью в браузере. Сервер не задействован."
+ },
+ "swiftWasm.link": {
+ "translation": " Официальный сайт Swift Язык программирования Swift «Изучите X за Y минут», где X = Swift Документация LiveCodes Загрузить стартовый шаблон "
+ },
+ "swiftWasm.name": {
+ "translation": "Swift (Wasm)"
+ },
"tcl.desc": {
"translation": "Tcl, работающий в браузере, с использованием wacl ."
},
diff --git a/src/livecodes/i18n/locales/ru/language-info.ts b/src/livecodes/i18n/locales/ru/language-info.ts
index bb9498cd55..791f0d80b4 100644
--- a/src/livecodes/i18n/locales/ru/language-info.ts
+++ b/src/livecodes/i18n/locales/ru/language-info.ts
@@ -456,6 +456,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Официальный сайт Svelte2> 1> <3> <4>Документация Svelte4> 3> <5> <6>Загрузить стартовый шаблон6> 5>',
name: 'Svelte',
},
+ swiftWasm: {
+ desc: 'Swift компилируется в WebAssembly самим компилятором Swift: <1>swift-frontend1> и <2>wasm-ld2> также скомпилированы в WebAssembly и выполняются полностью в браузере. Сервер не задействован.',
+ link: '<1> <2>Официальный сайт Swift2> 1> <3> <4>Язык программирования Swift4> 3> <5> <6>«Изучите X за Y минут», где X = Swift6> 5> <7> <8>Документация LiveCodes8> 7> <9> <10>Загрузить стартовый шаблон10> 9>',
+ name: 'Swift (Wasm)',
+ },
tcl: {
desc: 'Tcl, работающий в браузере, с использованием <1>wacl1>.',
link: '<1> <2>Официальный сайт Tcl2> 1> <3> <4>Репозиторий wacl4> 3> <5> <6>Изучите X за Y минут, где X=Tcl6> 5> <7> <8>Загрузить стартовый шаблон8> 7>',
diff --git a/src/livecodes/i18n/locales/ru/translation.lokalise.json b/src/livecodes/i18n/locales/ru/translation.lokalise.json
index b9a3330222..555a504e14 100644
--- a/src/livecodes/i18n/locales/ru/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/ru/translation.lokalise.json
@@ -2127,6 +2127,9 @@
"templates.starter.svelte": {
"translation": "Стартер Svelte"
},
+ "templates.starter.swift-wasm": {
+ "translation": "Стартер Swift (Wasm)"
+ },
"templates.starter.tailwindcss": {
"translation": "Стартер Tailwind CSS"
},
diff --git a/src/livecodes/i18n/locales/ru/translation.ts b/src/livecodes/i18n/locales/ru/translation.ts
index 1b15b20e06..37c1cde383 100644
--- a/src/livecodes/i18n/locales/ru/translation.ts
+++ b/src/livecodes/i18n/locales/ru/translation.ts
@@ -1048,6 +1048,7 @@ const translation: I18nTranslation = {
sql: 'Стартер SQL',
stencil: 'Стартер Stencil',
svelte: 'Стартер Svelte',
+ 'swift-wasm': 'Стартер Swift (Wasm)',
tailwindcss: 'Стартер Tailwind CSS',
tcl: 'Стартер Tcl',
teal: 'Стартер Teal',
diff --git a/src/livecodes/i18n/locales/tr/language-info.lokalise.json b/src/livecodes/i18n/locales/tr/language-info.lokalise.json
index e19a93fb22..78771904f1 100644
--- a/src/livecodes/i18n/locales/tr/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/tr/language-info.lokalise.json
@@ -804,6 +804,15 @@
"svelte.name": {
"translation": "Svelte"
},
+ "swiftWasm.desc": {
+ "translation": "Swift, Swift derleyicisinin kendisi tarafından WebAssembly'ye derlenir: swift-frontend ve wasm-ld de WebAssembly'ye derlenir ve tamamen tarayıcı içinde çalışır. Hiçbir sunucu devreye girmez."
+ },
+ "swiftWasm.link": {
+ "translation": " Swift resmi web sitesi Swift Programlama Dili Y dakikada X'i öğrenin, burada X=Swift LiveCodes Belgeleri Başlangıç şablonunu yükle "
+ },
+ "swiftWasm.name": {
+ "translation": "Swift (Wasm)"
+ },
"tcl.desc": {
"translation": "Tarayıcıda, wacl kullanılarak çalışan Tcl."
},
diff --git a/src/livecodes/i18n/locales/tr/language-info.ts b/src/livecodes/i18n/locales/tr/language-info.ts
index af9bebfb41..81a269936b 100644
--- a/src/livecodes/i18n/locales/tr/language-info.ts
+++ b/src/livecodes/i18n/locales/tr/language-info.ts
@@ -455,6 +455,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Svelte resmi web sitesi2> 1> <3> <4>Svelte dokümantasyonu4> 3> <5> <6>Başlangıç şablonunu yükle6> 5>',
name: 'Svelte',
},
+ swiftWasm: {
+ desc: "Swift, Swift derleyicisinin kendisi tarafından WebAssembly'ye derlenir: <1>swift-frontend1> ve <2>wasm-ld2> de WebAssembly'ye derlenir ve tamamen tarayıcı içinde çalışır. Hiçbir sunucu devreye girmez.",
+ link: "<1> <2>Swift resmi web sitesi2> 1> <3> <4>Swift Programlama Dili4> 3> <5> <6>Y dakikada X'i öğrenin, burada X=Swift6> 5> <7> <8>LiveCodes Belgeleri8> 7> <9> <10>Başlangıç şablonunu yükle10> 9>",
+ name: 'Swift (Wasm)',
+ },
tcl: {
desc: 'Tarayıcıda, <1>wacl1> kullanılarak çalışan Tcl.',
link: "<1> <2>Tcl resmi web sitesi2> 1> <3> <4>wacl repo'su4> 3> <5> <6>Y Dakikada X Öğrenin, X=Tcl6> 5> <7> <8>Başlangıç şablonunu yükle8> 7>",
diff --git a/src/livecodes/i18n/locales/tr/translation.lokalise.json b/src/livecodes/i18n/locales/tr/translation.lokalise.json
index 8c70b159c8..48f581a7e0 100644
--- a/src/livecodes/i18n/locales/tr/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/tr/translation.lokalise.json
@@ -2127,6 +2127,9 @@
"templates.starter.svelte": {
"translation": "Svelte Başlangıç"
},
+ "templates.starter.swift-wasm": {
+ "translation": "Swift (Wasm) Başlangıç"
+ },
"templates.starter.tailwindcss": {
"translation": "Tailwind CSS Başlangıç"
},
diff --git a/src/livecodes/i18n/locales/tr/translation.ts b/src/livecodes/i18n/locales/tr/translation.ts
index 32fa784668..77025c5968 100644
--- a/src/livecodes/i18n/locales/tr/translation.ts
+++ b/src/livecodes/i18n/locales/tr/translation.ts
@@ -1049,6 +1049,7 @@ const translation: I18nTranslation = {
sql: 'SQL Başlangıç',
stencil: 'Stencil Başlangıç',
svelte: 'Svelte Başlangıç',
+ 'swift-wasm': 'Swift (Wasm) Başlangıç',
tailwindcss: 'Tailwind CSS Başlangıç',
tcl: 'Tcl Başlangıç',
teal: 'Teal 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 2440d4542d..e836b2d5b2 100644
--- a/src/livecodes/i18n/locales/ur/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/ur/language-info.lokalise.json
@@ -804,6 +804,15 @@
"svelte.name": {
"translation": "Svelte"
},
+ "swiftWasm.desc": {
+ "translation": "Swift کو خود Swift کمپائلر کے ذریعے WebAssembly میں مرتب کیا گیا ہے: swift-frontend اور wasm-ld , دونوں WebAssembly میں مرتب ہیں اور مکمل طور پر براؤزر میں چلتے ہیں۔ کوئی سرور شامل نہیں ہے۔"
+ },
+ "swiftWasm.link": {
+ "translation": " Swift آفیشل ویب سائٹ Swift پروگرامنگ زبان Y منٹ میں X سیکھیں، جہاں X=Swift لائیو کوڈز دستاویزات اسٹارٹر ٹیمپلیٹ لوڈ کریں "
+ },
+ "swiftWasm.name": {
+ "translation": "Swift (Wasm)"
+ },
"tcl.desc": {
"translation": "wacl کا استعمال کرتے ہوئے براؤزر میں چلنے والی Tcl۔"
},
diff --git a/src/livecodes/i18n/locales/ur/language-info.ts b/src/livecodes/i18n/locales/ur/language-info.ts
index eae6ae722e..894a3292c1 100644
--- a/src/livecodes/i18n/locales/ur/language-info.ts
+++ b/src/livecodes/i18n/locales/ur/language-info.ts
@@ -457,6 +457,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Svelte کی سرکاری ویب سائٹ2> 1> <3> <4>Svelte دستاویزات4> 3> <5> <6>شروعاتی سانچہ لوڈ کریں6> 5>',
name: 'Svelte',
},
+ swiftWasm: {
+ desc: 'Swift کو خود Swift کمپائلر کے ذریعے WebAssembly میں مرتب کیا گیا ہے: <1>swift-frontend1> اور <2>wasm-ld2>, دونوں WebAssembly میں مرتب ہیں اور مکمل طور پر براؤزر میں چلتے ہیں۔ کوئی سرور شامل نہیں ہے۔',
+ link: '<1> <2>Swift آفیشل ویب سائٹ2> 1> <3> <4>Swift پروگرامنگ زبان4> 3> <5> <6>Y منٹ میں X سیکھیں، جہاں X=Swift6> 5> <7> <8>لائیو کوڈز دستاویزات8> 7> <9> <10>اسٹارٹر ٹیمپلیٹ لوڈ کریں10> 9>',
+ name: 'Swift (Wasm)',
+ },
tcl: {
desc: '<1>wacl1> کا استعمال کرتے ہوئے براؤزر میں چلنے والی Tcl۔',
link: '<1> <2>Tcl کی سرکاری ویب سائٹ2> 1> <3> <4>wacl ریپو4> 3> <5> <6>X کو Y منٹ میں سیکھیں، جہاں X=Tcl6> 5> <7> <8>شروعاتی سانچہ لوڈ کریں8> 7>',
diff --git a/src/livecodes/i18n/locales/ur/translation.lokalise.json b/src/livecodes/i18n/locales/ur/translation.lokalise.json
index fe6532506c..e3c100f646 100644
--- a/src/livecodes/i18n/locales/ur/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/ur/translation.lokalise.json
@@ -2127,6 +2127,9 @@
"templates.starter.svelte": {
"translation": "سویلٹ شروعاتی"
},
+ "templates.starter.swift-wasm": {
+ "translation": "سوفٹ (واسم) شروعاتی"
+ },
"templates.starter.tailwindcss": {
"translation": "ٹیل ونڈ سی ایس ایس شروعاتی"
},
diff --git a/src/livecodes/i18n/locales/ur/translation.ts b/src/livecodes/i18n/locales/ur/translation.ts
index 1b9bd36c99..de0e09e88a 100644
--- a/src/livecodes/i18n/locales/ur/translation.ts
+++ b/src/livecodes/i18n/locales/ur/translation.ts
@@ -1048,6 +1048,7 @@ const translation: I18nTranslation = {
sql: 'ایس کیو ایل شروعاتی',
stencil: 'اسٹینسل شروعاتی',
svelte: 'سویلٹ شروعاتی',
+ 'swift-wasm': 'سوفٹ (واسم) شروعاتی',
tailwindcss: 'ٹیل ونڈ سی ایس ایس شروعاتی',
tcl: 'ٹی سی ایل شروعاتی',
teal: 'ٹیل شروعاتی',
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 4853c99f1d..21618b6c8f 100644
--- a/src/livecodes/i18n/locales/zh-CN/language-info.lokalise.json
+++ b/src/livecodes/i18n/locales/zh-CN/language-info.lokalise.json
@@ -804,6 +804,15 @@
"svelte.name": {
"translation": "Svelte"
},
+ "swiftWasm.desc": {
+ "translation": "Swift 由 Swift 编译器自身编译为 WebAssembly:swift-frontend 和 wasm-ld 均编译为 WebAssembly,完全在浏览器中运行。不涉及任何服务器。"
+ },
+ "swiftWasm.link": {
+ "translation": " Swift 官方网站 Swift 编程语言 《Y分钟学会X》,其中X=Swift LiveCodes 文档 加载入门模板 "
+ },
+ "swiftWasm.name": {
+ "translation": "Swift (Wasm)"
+ },
"tcl.desc": {
"translation": "使用 wacl 在浏览器中运行的 Tcl。"
},
diff --git a/src/livecodes/i18n/locales/zh-CN/language-info.ts b/src/livecodes/i18n/locales/zh-CN/language-info.ts
index f18b92b47e..5673a2f181 100644
--- a/src/livecodes/i18n/locales/zh-CN/language-info.ts
+++ b/src/livecodes/i18n/locales/zh-CN/language-info.ts
@@ -448,6 +448,11 @@ const languageInfo: I18nLangInfoTranslation = {
link: '<1> <2>Svelte 官方网站2> 1> <3> <4>Svelte 文档4> 3> <5> <6>加载启动模板6> 5>',
name: 'Svelte',
},
+ swiftWasm: {
+ desc: 'Swift 由 Swift 编译器自身编译为 WebAssembly:<1>swift-frontend1> 和 <2>wasm-ld2> 均编译为 WebAssembly,完全在浏览器中运行。不涉及任何服务器。',
+ link: '<1> <2>Swift 官方网站2> 1> <3> <4>Swift 编程语言4> 3> <5> <6>《Y分钟学会X》,其中X=Swift6> 5> <7> <8>LiveCodes 文档8> 7> <9> <10>加载入门模板10> 9>',
+ name: 'Swift (Wasm)',
+ },
tcl: {
desc: '使用 <1>wacl1> 在浏览器中运行的 Tcl。',
link: '<1> <2>Tcl 官方网站2> 1> <3> <4>wacl 仓库4> 3> <5> <6>在 Y 分钟内学习 X,其中 X=Tcl6> 5> <7> <8>加载启动模板8> 7>',
diff --git a/src/livecodes/i18n/locales/zh-CN/translation.lokalise.json b/src/livecodes/i18n/locales/zh-CN/translation.lokalise.json
index 9202fc4e89..8baeaa45d1 100644
--- a/src/livecodes/i18n/locales/zh-CN/translation.lokalise.json
+++ b/src/livecodes/i18n/locales/zh-CN/translation.lokalise.json
@@ -2127,6 +2127,9 @@
"templates.starter.svelte": {
"translation": "Svelte 启动模板"
},
+ "templates.starter.swift-wasm": {
+ "translation": "Swift(WASM)启动模板"
+ },
"templates.starter.tailwindcss": {
"translation": "Tailwind CSS 启动模板"
},
diff --git a/src/livecodes/i18n/locales/zh-CN/translation.ts b/src/livecodes/i18n/locales/zh-CN/translation.ts
index 74695d6680..c90e5e0ce6 100644
--- a/src/livecodes/i18n/locales/zh-CN/translation.ts
+++ b/src/livecodes/i18n/locales/zh-CN/translation.ts
@@ -1046,6 +1046,7 @@ const translation: I18nTranslation = {
sql: 'SQL 启动模板',
stencil: 'Stencil 启动模板',
svelte: 'Svelte 启动模板',
+ 'swift-wasm': 'Swift(WASM)启动模板',
tailwindcss: 'Tailwind CSS 启动模板',
tcl: 'Tcl 启动模板',
teal: 'Teal 启动模板',
diff --git a/src/livecodes/languages/languages.ts b/src/livecodes/languages/languages.ts
index f6ed3728d4..c065a0b354 100644
--- a/src/livecodes/languages/languages.ts
+++ b/src/livecodes/languages/languages.ts
@@ -79,6 +79,7 @@ import { stylis } from './stylis';
import { stylus } from './stylus';
import { sucrase } from './sucrase';
import { svelte, svelteApp } from './svelte';
+import { swiftWasm } from './swift-wasm';
import { tcl } from './tcl';
import { teal } from './teal';
import { twig } from './twig';
@@ -164,6 +165,7 @@ export const languages: LanguageSpecs[] = [
objcWasm,
objcppWasm,
rustWasm,
+ swiftWasm,
zigWasm,
java,
csharpWasm,
diff --git a/src/livecodes/languages/swift-wasm/index.ts b/src/livecodes/languages/swift-wasm/index.ts
new file mode 100644
index 0000000000..fdc3d0e5ca
--- /dev/null
+++ b/src/livecodes/languages/swift-wasm/index.ts
@@ -0,0 +1 @@
+export * from './lang-swift-wasm';
diff --git a/src/livecodes/languages/swift-wasm/lang-swift-wasm-script.ts b/src/livecodes/languages/swift-wasm/lang-swift-wasm-script.ts
new file mode 100644
index 0000000000..5853ac39da
--- /dev/null
+++ b/src/livecodes/languages/swift-wasm/lang-swift-wasm-script.ts
@@ -0,0 +1,209 @@
+import { swiftWasmBaseUrl } from '../../vendors';
+
+interface SwiftDiagnostic {
+ file: string;
+ line: number;
+ column: number;
+ severity: string;
+ message: string;
+}
+
+interface SwiftResult {
+ ok: boolean;
+ output: string;
+ error: string;
+ exitCode: number;
+ diagnostics: SwiftDiagnostic[];
+}
+
+interface SwiftRuntime {
+ warmUp: () => Promise;
+ run: (files: string, options?: { input?: string }) => Promise;
+ destroy: () => void;
+}
+
+interface SwiftRunResult {
+ output: string | null;
+ error: string | null;
+ exitCode: number;
+}
+
+declare const window: Window & {
+ SwiftWasm?: {
+ createRuntime: (options?: { baseUrl?: string }) => Promise;
+ };
+ livecodes: {
+ swift?: {
+ ready?: boolean;
+ failed?: boolean;
+ init?: Promise | null;
+ runtime?: SwiftRuntime;
+ run?: (input?: string) => Promise;
+ loaded?: Promise;
+ input?: string;
+ output?: string | null;
+ error?: string | null;
+ exitCode?: number | null;
+ };
+ };
+};
+
+// The toolchain is ~70 MB on first use, so boot gets a generous budget; a single compile
+// takes seconds, so anything far beyond that means the worker is stuck.
+const BOOT_TIMEOUT_MS = 5 * 60_000;
+const RUN_TIMEOUT_MS = 60_000;
+
+const formatDiagnostic = (diagnostic: SwiftDiagnostic) =>
+ `${diagnostic.file}:${diagnostic.line}:${diagnostic.column}: ${diagnostic.severity}: ${diagnostic.message}`;
+
+const withTimeout = (
+ promise: Promise,
+ ms: number,
+ message: string,
+ onTimeout?: () => void,
+): Promise =>
+ new Promise((resolve, reject) => {
+ const timer = setTimeout(() => {
+ onTimeout?.();
+ reject(new Error(message));
+ }, ms);
+ promise.then(
+ (value) => {
+ clearTimeout(timer);
+ resolve(value);
+ },
+ (error) => {
+ clearTimeout(timer);
+ reject(error);
+ },
+ );
+ });
+
+window.livecodes.swift ??= {};
+
+const swift = window.livecodes.swift;
+swift.ready = false;
+
+/** Start (once) loading the runtime and its toolchain. */
+const ensureLoaded = (): Promise => {
+ let init = swift.init;
+ if (!init) {
+ init = (async () => {
+ parent.postMessage({ type: 'loading', payload: true }, '*');
+ try {
+ // Injected by the language's `scripts`; it installs `window.SwiftWasm`.
+ const createRuntime = window.SwiftWasm?.createRuntime;
+ if (!createRuntime) {
+ throw new Error('the swift-wasm runtime failed to load');
+ }
+ const runtime = await createRuntime({ baseUrl: `${swiftWasmBaseUrl}toolchain/` });
+ await runtime.warmUp();
+ swift.runtime = runtime;
+ } finally {
+ parent.postMessage({ type: 'loading', payload: false }, '*');
+ }
+ })().catch((err: Error) => {
+ // Reset so a later run can retry the download, and record the failure so
+ // `loaded` can reject instead of resolving into a broken environment.
+ swift.init = null;
+ swift.failed = true;
+ swift.error = err.message;
+ throw err;
+ });
+ // The failure is surfaced through `run`; do not also report it unhandled.
+ init.catch(() => undefined);
+ swift.init = init;
+ }
+ return init;
+};
+
+const setResult = (output: string | null, error: string | null, exitCode: number) => {
+ swift.output = output;
+ swift.error = error;
+ swift.exitCode = exitCode;
+ swift.ready = true;
+
+ if (error != null) {
+ // eslint-disable-next-line no-console
+ console.error(error);
+ } else if (output != null) {
+ // eslint-disable-next-line no-console
+ console.log(output);
+ }
+ return { output, error, exitCode };
+};
+
+swift.run = async (input?: string) => {
+ let code = '';
+ document.querySelectorAll('script[type="text/swift-wasm"]').forEach((script) => {
+ code += `${script.innerHTML}\n`;
+ });
+ swift.input = input;
+
+ if (!code.trim()) return setResult(null, null, 0);
+
+ try {
+ await withTimeout(
+ ensureLoaded(),
+ BOOT_TIMEOUT_MS,
+ 'Timed out while loading the Swift toolchain.',
+ );
+ } catch (err) {
+ return setResult(null, `Error: ${(err as Error).message}`, 1);
+ }
+
+ try {
+ const result = await withTimeout(
+ swift.runtime!.run(code, { input: input ?? '' }),
+ RUN_TIMEOUT_MS,
+ 'Swift execution timed out.',
+ () => {
+ // The package has no per-run timeout and dispatches every run to a single
+ // worker, so a hung program (e.g. an infinite loop) leaves that worker busy.
+ // Tear it down so the next run starts from a fresh worker.
+ swift.runtime?.destroy();
+ swift.runtime = undefined;
+ swift.init = null;
+ },
+ );
+
+ const diagnostics = result.diagnostics.map(formatDiagnostic).join('\n');
+ if (!result.ok) {
+ // Compiler diagnostics are the useful message; fall back to raw stderr.
+ return setResult(
+ result.output || null,
+ diagnostics || result.error.trim() || `Exited with code ${result.exitCode}`,
+ result.exitCode || 1,
+ );
+ }
+
+ if (diagnostics) {
+ // Warnings on a successful run are worth surfacing, but are not errors.
+ // eslint-disable-next-line no-console
+ console.warn(diagnostics);
+ }
+ return setResult(result.output, null, 0);
+ } catch (err) {
+ return setResult(null, `Error: ${(err as Error).message}`, 1);
+ }
+};
+
+ensureLoaded();
+
+swift.loaded = new Promise((resolve, reject) => {
+ const interval = setInterval(() => {
+ if (swift.failed) {
+ clearInterval(interval);
+ reject(new Error(swift.error || 'Failed to initialize the Swift environment'));
+ } else if (swift.ready) {
+ clearInterval(interval);
+ resolve();
+ }
+ }, 50);
+});
+
+window.addEventListener('load', async () => {
+ parent.postMessage({ type: 'loading', payload: true }, '*');
+ await swift.run?.(swift.input);
+ parent.postMessage({ type: 'loading', payload: false }, '*');
+});
diff --git a/src/livecodes/languages/swift-wasm/lang-swift-wasm.ts b/src/livecodes/languages/swift-wasm/lang-swift-wasm.ts
new file mode 100644
index 0000000000..dc42100d06
--- /dev/null
+++ b/src/livecodes/languages/swift-wasm/lang-swift-wasm.ts
@@ -0,0 +1,29 @@
+import { codemirrorLegacy } from '../../editor/codemirror/utils';
+import type { LanguageSpecs } from '../../models';
+import { codeMirrorBaseUrl, monacoLanguagesBaseUrl, swiftWasmBaseUrl } from '../../vendors';
+
+export const swiftWasm: LanguageSpecs = {
+ name: 'swift-wasm',
+ title: 'Swift (Wasm)',
+ compiler: {
+ factory: () => async (code) => code,
+ scripts: ({ baseUrl }) => [
+ swiftWasmBaseUrl + 'dist/swift-wasm.iife.js',
+ baseUrl + '{{hash:lang-swift-wasm-script.js}}',
+ ],
+ scriptType: 'text/swift-wasm',
+ compiledCodeLanguage: 'swift',
+ liveReload: true,
+ },
+ extensions: ['swift', 'wasm.swift', 'swift-wasm'],
+ editor: 'script',
+ editorSupport: {
+ monaco: { languageSupport: monacoLanguagesBaseUrl + 'swift.js', language: 'swift' },
+ codemirror: {
+ languageSupport: async () =>
+ codemirrorLegacy((await import(codeMirrorBaseUrl + 'codemirror-lang-swift.js')).swift),
+ },
+ codejar: { language: 'swift' },
+ },
+ largeDownload: true,
+};
diff --git a/src/livecodes/models.ts b/src/livecodes/models.ts
index 642f7268ee..97e897d66c 100644
--- a/src/livecodes/models.ts
+++ b/src/livecodes/models.ts
@@ -217,6 +217,7 @@ export interface Compiler {
| 'text/haskell-wasm'
| 'text/minizinc'
| 'text/go-wasm'
+ | 'text/swift-wasm'
| 'application/json'
| 'application/lua'
| 'text/fennel'
@@ -263,6 +264,7 @@ export type TemplateAlias =
| 'fs-wasm'
| 'rust'
| 'rs'
+ | 'swift'
| 'hs'
| 'hs-wasm'
| 'pl'
diff --git a/src/livecodes/templates/starter/index.ts b/src/livecodes/templates/starter/index.ts
index b77261fade..fb6ac41bf8 100644
--- a/src/livecodes/templates/starter/index.ts
+++ b/src/livecodes/templates/starter/index.ts
@@ -69,6 +69,7 @@ import { solidStarter } from './solid-starter';
import { sqlStarter } from './sql-starter';
import { stencilStarter } from './stencil-starter';
import { svelteStarter } from './svelte-starter';
+import { swiftWasmStarter } from './swift-wasm-starter';
import { tailwindcssStarter } from './tailwindcss-starter';
import { tclStarter } from './tcl-starter';
import { tealStarter } from './teal-starter';
@@ -132,6 +133,7 @@ export const starterTemplates = [
cppWasmStarter,
objcWasmStarter,
rustWasmStarter,
+ swiftWasmStarter,
zigWasmStarter,
javaStarter,
csharpWasmStarter,
diff --git a/src/livecodes/templates/starter/swift-wasm-starter.ts b/src/livecodes/templates/starter/swift-wasm-starter.ts
new file mode 100644
index 0000000000..f41e77fa60
--- /dev/null
+++ b/src/livecodes/templates/starter/swift-wasm-starter.ts
@@ -0,0 +1,98 @@
+import type { Template } from '../../models';
+
+export const swiftWasmStarter: Template = {
+ name: 'swift-wasm',
+ aliases: ['swift'],
+ title: window.deps.translateString('templates.starter.swift-wasm', 'Swift (Wasm) Starter'),
+ thumbnail: 'assets/templates/swift.svg',
+ activeEditor: 'script',
+ markup: {
+ language: 'html',
+ content: `
+
+
Hello, World !
+
+
You clicked 0 times.
+
Loading...
+
+
+
+`.trimStart(),
+ },
+ style: {
+ language: 'css',
+ content: `
+.container,
+.container button {
+ text-align: center;
+ font: 1em sans-serif;
+}
+.logo {
+ width: 150px;
+}
+`.trimStart(),
+ },
+ script: {
+ language: 'swift-wasm',
+ content: `
+// The current count arrives on standard input, so every run is a fresh process
+// that prints the next value.
+let current = Int(readLine() ?? "") ?? 0
+print("Swift")
+print(current + 1)
+
+struct Greeting {
+ let name: String
+ var message: String { "Hello, \\(name)!" }
+}
+
+for name in ["World", "LiveCodes", "Swift"] {
+ print(Greeting(name: name).message)
+}
+`.trimStart(),
+ },
+};
diff --git a/src/livecodes/vendors.ts b/src/livecodes/vendors.ts
index 4da75840fb..ab2e3163d5 100644
--- a/src/livecodes/vendors.ts
+++ b/src/livecodes/vendors.ts
@@ -456,6 +456,8 @@ export const wasmRustcBaseUrl = /* @__PURE__ */ getUrl('@live-codes/wasm-rustc@0
export const snackbarUrl = /* @__PURE__ */ getUrl('@snackbar/core@1.7.0/dist/snackbar.css');
+export const swiftWasmBaseUrl = /* @__PURE__ */ getUrl('@live-codes/swift-wasm@0.1.0/');
+
export const spacingJsUrl = /* @__PURE__ */ getUrl('spacingjs@1.0.7/dist/bundle.js');
export const sqlFormatterUrl = /* @__PURE__ */ getUrl(
diff --git a/src/sdk/models.ts b/src/sdk/models.ts
index 53e04210ce..c67357382b 100644
--- a/src/sdk/models.ts
+++ b/src/sdk/models.ts
@@ -255,6 +255,8 @@ export type Language =
| 'edn'
| 'gleam'
| 'swift'
+ | 'swift-wasm'
+ | 'wasm.swift'
| 'rust'
| 'zig'
| 'zig-wasm'
@@ -452,6 +454,7 @@ export type TemplateName =
| 'fsharp'
| 'fsharp-wasm'
| 'rust-wasm'
+ | 'swift-wasm'
| 'zig-wasm'
| 'perl'
| 'lua'
diff --git a/storybook/_stories/EmbedOptions/template.ts b/storybook/_stories/EmbedOptions/template.ts
index 63a5de4c1a..da0d6f4de4 100644
--- a/storybook/_stories/EmbedOptions/template.ts
+++ b/storybook/_stories/EmbedOptions/template.ts
@@ -52,6 +52,7 @@ const storyDef: StoryDef = {
CppWasm: { props: { template: 'cpp-wasm' } },
ObjcWasm: { props: { template: 'objc-wasm' } },
RustWasm: { props: { template: 'rust-wasm' } },
+ SwiftWasm: { props: { template: 'swift-wasm' } },
ZigWasm: { props: { template: 'zig-wasm' } },
Java: { props: { template: 'java' } },
CSharpWasm: { props: { template: 'csharp-wasm' } },
diff --git a/storybook/preact/stories/EmbedOptions/template.stories.ts b/storybook/preact/stories/EmbedOptions/template.stories.ts
index 4a912db246..48c6b69067 100644
--- a/storybook/preact/stories/EmbedOptions/template.stories.ts
+++ b/storybook/preact/stories/EmbedOptions/template.stories.ts
@@ -66,6 +66,7 @@ export const CWasm = livecodesStory({ template: 'c-wasm' });
export const CppWasm = livecodesStory({ template: 'cpp-wasm' });
export const ObjcWasm = livecodesStory({ template: 'objc-wasm' });
export const RustWasm = livecodesStory({ template: 'rust-wasm' });
+export const SwiftWasm = livecodesStory({ template: 'swift-wasm' });
export const ZigWasm = livecodesStory({ template: 'zig-wasm' });
export const Java = livecodesStory({ template: 'java' });
export const CSharpWasm = livecodesStory({ template: 'csharp-wasm' });
diff --git a/storybook/react/stories/EmbedOptions/template.stories.ts b/storybook/react/stories/EmbedOptions/template.stories.ts
index 4a912db246..48c6b69067 100644
--- a/storybook/react/stories/EmbedOptions/template.stories.ts
+++ b/storybook/react/stories/EmbedOptions/template.stories.ts
@@ -66,6 +66,7 @@ export const CWasm = livecodesStory({ template: 'c-wasm' });
export const CppWasm = livecodesStory({ template: 'cpp-wasm' });
export const ObjcWasm = livecodesStory({ template: 'objc-wasm' });
export const RustWasm = livecodesStory({ template: 'rust-wasm' });
+export const SwiftWasm = livecodesStory({ template: 'swift-wasm' });
export const ZigWasm = livecodesStory({ template: 'zig-wasm' });
export const Java = livecodesStory({ template: 'java' });
export const CSharpWasm = livecodesStory({ template: 'csharp-wasm' });
diff --git a/storybook/solid/src/solid.ts b/storybook/solid/src/solid.ts
index 8319c10a3e..60804254ee 100644
--- a/storybook/solid/src/solid.ts
+++ b/storybook/solid/src/solid.ts
@@ -8,9 +8,10 @@
*/
import { createComponent } from '@live-codes/solid-sdk';
-import type { EmbedOptions, Playground } from 'livecodes';
-import { createPlayground } from 'livecodes';
import type { Component, JSX } from 'solid-js';
+import { createPlayground } from 'livecodes';
+
+import type { EmbedOptions, Playground } from 'livecodes';
export type { Code, Config, EmbedOptions, Language, Playground } from 'livecodes';
/**
diff --git a/storybook/solid/stories/EmbedOptions/template.stories.ts b/storybook/solid/stories/EmbedOptions/template.stories.ts
index 4a912db246..48c6b69067 100644
--- a/storybook/solid/stories/EmbedOptions/template.stories.ts
+++ b/storybook/solid/stories/EmbedOptions/template.stories.ts
@@ -66,6 +66,7 @@ export const CWasm = livecodesStory({ template: 'c-wasm' });
export const CppWasm = livecodesStory({ template: 'cpp-wasm' });
export const ObjcWasm = livecodesStory({ template: 'objc-wasm' });
export const RustWasm = livecodesStory({ template: 'rust-wasm' });
+export const SwiftWasm = livecodesStory({ template: 'swift-wasm' });
export const ZigWasm = livecodesStory({ template: 'zig-wasm' });
export const Java = livecodesStory({ template: 'java' });
export const CSharpWasm = livecodesStory({ template: 'csharp-wasm' });
diff --git a/storybook/svelte/stories/EmbedOptions/template.stories.ts b/storybook/svelte/stories/EmbedOptions/template.stories.ts
index 4a912db246..48c6b69067 100644
--- a/storybook/svelte/stories/EmbedOptions/template.stories.ts
+++ b/storybook/svelte/stories/EmbedOptions/template.stories.ts
@@ -66,6 +66,7 @@ export const CWasm = livecodesStory({ template: 'c-wasm' });
export const CppWasm = livecodesStory({ template: 'cpp-wasm' });
export const ObjcWasm = livecodesStory({ template: 'objc-wasm' });
export const RustWasm = livecodesStory({ template: 'rust-wasm' });
+export const SwiftWasm = livecodesStory({ template: 'swift-wasm' });
export const ZigWasm = livecodesStory({ template: 'zig-wasm' });
export const Java = livecodesStory({ template: 'java' });
export const CSharpWasm = livecodesStory({ template: 'csharp-wasm' });
diff --git a/storybook/vue/stories/EmbedOptions/template.stories.ts b/storybook/vue/stories/EmbedOptions/template.stories.ts
index 4a912db246..48c6b69067 100644
--- a/storybook/vue/stories/EmbedOptions/template.stories.ts
+++ b/storybook/vue/stories/EmbedOptions/template.stories.ts
@@ -66,6 +66,7 @@ export const CWasm = livecodesStory({ template: 'c-wasm' });
export const CppWasm = livecodesStory({ template: 'cpp-wasm' });
export const ObjcWasm = livecodesStory({ template: 'objc-wasm' });
export const RustWasm = livecodesStory({ template: 'rust-wasm' });
+export const SwiftWasm = livecodesStory({ template: 'swift-wasm' });
export const ZigWasm = livecodesStory({ template: 'zig-wasm' });
export const Java = livecodesStory({ template: 'java' });
export const CSharpWasm = livecodesStory({ template: 'csharp-wasm' });
diff --git a/storybook/web-components/stories/EmbedOptions/template.stories.ts b/storybook/web-components/stories/EmbedOptions/template.stories.ts
index 4a912db246..48c6b69067 100644
--- a/storybook/web-components/stories/EmbedOptions/template.stories.ts
+++ b/storybook/web-components/stories/EmbedOptions/template.stories.ts
@@ -66,6 +66,7 @@ export const CWasm = livecodesStory({ template: 'c-wasm' });
export const CppWasm = livecodesStory({ template: 'cpp-wasm' });
export const ObjcWasm = livecodesStory({ template: 'objc-wasm' });
export const RustWasm = livecodesStory({ template: 'rust-wasm' });
+export const SwiftWasm = livecodesStory({ template: 'swift-wasm' });
export const ZigWasm = livecodesStory({ template: 'zig-wasm' });
export const Java = livecodesStory({ template: 'java' });
export const CSharpWasm = livecodesStory({ template: 'csharp-wasm' });
diff --git a/vendor-licenses.md b/vendor-licenses.md
index 3ff02207b3..9f69e8528a 100644
--- a/vendor-licenses.md
+++ b/vendor-licenses.md
@@ -284,6 +284,8 @@ Sucrase: [MIT License](https://github.com/alangpierce/sucrase/blob/7284b3733aa11
Svelte: [MIT License](https://github.com/sveltejs/svelte/blob/dafbdc286eef3de2243088a9a826e6899e20465c/LICENSE)
+Swift: [Apache License 2.0 with Runtime Library Exception](https://github.com/swiftlang/swift/blob/main/LICENSE.txt) (the Swift compiler frontend, the linker and the standard library, built to run on WebAssembly by [swift-toolchain-wasm](https://github.com/tothambrus11/swift-toolchain-wasm): [Apache License 2.0](https://github.com/tothambrus11/swift-toolchain-wasm/blob/main/LICENSE))
+
SVG Logos: [CC0-1.0 License](https://github.com/gilbarbara/logos/blob/e0babf54f7ac9127942111bf177f549b709a60be/LICENSE.txt)
svgbob-wasm: [Apache License 2.0](https://github.com/agoose77/svgbob-wasm/blob/45e280096ee7f7a07981de2ce95aba343bc94123/LICENSE_APACHE)