diff --git a/README.md b/README.md index 22186ae7a2..29b061bfdb 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ A [feature-rich](https://livecodes.io/docs/features/), open-source, **client-sid [![LiveCodes: npm version](https://img.shields.io/npm/v/livecodes)](https://www.npmjs.com/package/livecodes) [![LiveCodes: npm downloads](https://img.shields.io/npm/dm/livecodes)](https://www.npmjs.com/package/livecodes) [![LiveCodes: jsdelivr downloads](https://data.jsdelivr.com/v1/package/npm/livecodes/badge?style=rounded)](https://www.jsdelivr.com/package/npm/livecodes) -[![LiveCodes: languages](https://img.shields.io/badge/languages-110-blue)](https://livecodes.io/docs/languages/) +[![LiveCodes: languages](https://img.shields.io/badge/languages-111-blue)](https://livecodes.io/docs/languages/) [![LiveCodes: docs](https://img.shields.io/badge/Documentation-575757?logo=gitbook&logoColor=white)](https://livecodes.io/docs/) [![LiveCodes: llms.txt](https://img.shields.io/badge/llms.txt-575757?logo=googledocs&logoColor=white)](https://livecodes.io/docs/llms.txt) [![LiveCodes: llms-full.txt](https://img.shields.io/badge/llms--full.txt-575757?logo=googledocs&logoColor=white)](https://livecodes.io/docs/llms-full.txt) diff --git a/docs/docs/languages/fanak.mdx b/docs/docs/languages/fanak.mdx new file mode 100644 index 0000000000..31ab6e828d --- /dev/null +++ b/docs/docs/languages/fanak.mdx @@ -0,0 +1,115 @@ +# Fanak + +Fanak is a functional programming language that compiles to CIL (.NET). It has +algebraic data types with pattern matching, typeclasses, higher-order functions +and a small effectful standard library. + +In LiveCodes, Fanak compiles and runs entirely in the browser: the Fanak +compiler and a .NET WebAssembly runtime (Blazor WebAssembly) are fetched from +the Fanak project, the program's assembly is emitted in memory, and the result +runs in the page. + +## Usage + +Demo: + +import LiveCodes from '../../src/components/LiveCodes.tsx'; +export const fanakConfig = { + activeEditor: 'script', + script: { + language: 'fanak', + content: `import std; + +Unit main() { + List xs = List.empty().add(1).add(2).add(3); + List tens = xs.iter().map((int x) => x * 10).toList(); + runUnit(println(tens)); +}`, + }, + mode: 'simple', + editor: 'auto', + tools: { + status: 'full', + }, +}; + + + +## Language Info + +### Name + +`fanak` + +### Aliases / Extensions + +`fnk`, `fanak` + +### Editor + +`script` + +## Compiler + +The Fanak compiler and .NET WebAssembly runtime (Blazor WebAssembly), fetched +from the [Fanak project](https://gitlab.com/AhmedWael216/fanak) and run entirely +in the browser. There is no server round-trip; the first run downloads the +runtime and can take a moment. + +The prelude is implicit in every file. The standard library is opt-in with +`import std;`. + +### Version + +0.1.0 + +## Code Formatting + +In the Monaco editor, formatting is provided by the Fanak language service +(compiler-backed, using the Fanak compiler's own formatter). It is not +available in the CodeMirror or CodeJar editors. + +## Communication with JavaScript + +The Fanak program runs in the context of the result page. A few helpers are +available on the browser global `livecodes.fanak` object: + +- `livecodes.fanak.loaded`: a promise that resolves when the compiler and the + program have finished running. +- `livecodes.fanak.output`: the program's standard output (a string), or `null`. +- `livecodes.fanak.error`: the program's error output (a string), or `null`. +- `livecodes.fanak.exitCode`: `0` on success, `1` on error. +- `livecodes.fanak.run`: re-runs the program and returns a promise resolving to an + object with `output`, `error` and `exitCode`. (It accepts an `input` argument + for host parity, but Fanak has no standard-input primitive yet, so it is + currently ignored.) + +Example: + + + +## Live Reload + +By default, new code changes are sent to the result page for re-evaluation +without a full page reload, avoiding the need to reinitialize the compiler. + +## Example Usage + +```fanak +import std; + +Unit main() { + // Options, lambdas and pattern matching + Option answer = Some(6 * 7); + runUnit(println(answer.getOr(0))); // 42 +} +``` + +## Starter Template + +https://livecodes.io/?template=fanak + +## Links + +- [Fanak](https://gitlab.com/AhmedWael216/fanak) +- [Fanak documentation](https://ahmedwael216.gitlab.io/fanak/) diff --git a/docs/src/components/LanguageSliders.tsx b/docs/src/components/LanguageSliders.tsx index 3ba35444b0..28ac9405be 100644 --- a/docs/src/components/LanguageSliders.tsx +++ b/docs/src/components/LanguageSliders.tsx @@ -102,6 +102,7 @@ export default function Sliders() { { name: 'vb-wasm', title: 'VB.NET (Wasm)' }, { name: 'fsharp', title: 'F#' }, { name: 'fsharp-wasm', title: 'F# (Wasm)' }, + { name: 'fanak', title: 'Fanak' }, { name: 'scheme', title: 'Scheme' }, { name: 'commonlisp', title: 'Lisp' }, { name: 'clojurescript-cherry', title: 'CLJS (Cherry)' }, diff --git a/docs/src/components/TemplateList.tsx b/docs/src/components/TemplateList.tsx index f6a6501883..79f06a5cc5 100644 --- a/docs/src/components/TemplateList.tsx +++ b/docs/src/components/TemplateList.tsx @@ -60,6 +60,7 @@ const templates = [ { name: 'vb-wasm', title: 'VB.NET (Wasm)', thumbnail: 'vb.svg' }, { name: 'fsharp', title: 'F# Starter', thumbnail: 'fsharp.svg' }, { name: 'fsharp-wasm', title: 'F# (Wasm) Starter', thumbnail: 'fsharp.svg' }, + { name: 'fanak', title: 'Fanak Starter', thumbnail: 'fanak.png' }, { name: 'scheme', title: 'Scheme Starter', thumbnail: 'scheme.svg' }, { name: 'commonlisp', title: 'Common Lisp Starter', thumbnail: 'commonlisp.svg' }, { name: 'clojurescript', title: 'ClojureScript Starter', thumbnail: 'cljs.svg' }, diff --git a/functions/vendors/templates.js b/functions/vendors/templates.js index 4e9c320618..cf497ac972 100644 --- a/functions/vendors/templates.js +++ b/functions/vendors/templates.js @@ -58,6 +58,7 @@ export const starterTemplates = { "vb-wasm": "VB.NET (Wasm) Starter", "fsharp": "F# Starter", "fsharp-wasm": "F# (Wasm) Starter", + "fanak": "Fanak Starter", "haskell": "Haskell Starter", "haskell-wasm": "Haskell (Wasm) Starter", "scheme": "Scheme Starter", diff --git a/scripts/build.js b/scripts/build.js index 175b06a45e..be402e0419 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -230,6 +230,7 @@ const iifeBuild = () => 'languages/clang-wasm/lang-clang-wasm-script.ts', 'languages/go-wasm/lang-go-wasm-script.ts', 'languages/csharp-wasm/lang-csharp-wasm-script.ts', + 'languages/fanak/lang-fanak-script.ts', 'languages/vb-wasm/lang-vb-wasm-script.ts', 'languages/zig-wasm/lang-zig-wasm-script.ts', 'languages/dot/lang-dot-compiler.ts', diff --git a/server/php/inc/starter-templates.json b/server/php/inc/starter-templates.json index 984a4497a0..e80e6b8207 100644 --- a/server/php/inc/starter-templates.json +++ b/server/php/inc/starter-templates.json @@ -58,6 +58,7 @@ "vb-wasm": "VB.NET (Wasm) Starter", "fsharp": "F# Starter", "fsharp-wasm": "F# (Wasm) Starter", + "fanak": "Fanak Starter", "haskell": "Haskell Starter", "haskell-wasm": "Haskell (Wasm) Starter", "scheme": "Scheme Starter", diff --git a/src/livecodes/UI/command-menu-actions.ts b/src/livecodes/UI/command-menu-actions.ts index 091bc04112..ab421fc4a5 100644 --- a/src/livecodes/UI/command-menu-actions.ts +++ b/src/livecodes/UI/command-menu-actions.ts @@ -314,6 +314,7 @@ export const getCommandMenuActions = ({ 'vb-wasm', 'fsharp', 'fsharp-wasm', + 'fanak', 'haskell', 'haskell-wasm', 'scheme', diff --git a/src/livecodes/assets/templates/fanak.png b/src/livecodes/assets/templates/fanak.png new file mode 100644 index 0000000000..879f4e1462 Binary files /dev/null and b/src/livecodes/assets/templates/fanak.png differ diff --git a/src/livecodes/html/language-info.html b/src/livecodes/html/language-info.html index a3af5fa038..fc54b1d23f 100644 --- a/src/livecodes/html/language-info.html +++ b/src/livecodes/html/language-info.html @@ -781,6 +781,36 @@

F# (Wasm)

+
+

Fanak

+
+ Fanak is a functional programming language that compiles to CIL (.NET). Its compiler and .NET + WebAssembly runtime run entirely in the browser, fetched from the Fanak project, so the first + run downloads the runtime and can take a moment. +
+ +

Gleam

diff --git a/src/livecodes/i18n/locales/ar/language-info.lokalise.json b/src/livecodes/i18n/locales/ar/language-info.lokalise.json index 2a2565f934..f6fcfee1f1 100644 --- a/src/livecodes/i18n/locales/ar/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/ar/language-info.lokalise.json @@ -207,6 +207,15 @@ "eta.name": { "translation": "Eta" }, + "fanak.desc": { + "translation": "Fanak هي لغة برمجة وظيفية تُترجم إلى CIL ‏(.NET). يعمل مُترجمها وبيئة تشغيل .NET WebAssembly بالكامل في المتصفح، ويتم جلبهما من مشروع Fanak، لذا يؤدي التشغيل الأول إلى تنزيل بيئة التشغيل وقد يستغرق بعض الوقت." + }, + "fanak.link": { + "translation": " مستودع Fanak وثائق Fanak وثائق LiveCodes تحميل قالب البدء " + }, + "fanak.name": { + "translation": "Fanak" + }, "fennel.desc": { "translation": "فينل هي لغة برمجة تجمع بين سرعة وبساطة ونطاق لوا مع مرونة بناء جملة ليسب ونظام الماكرو." }, diff --git a/src/livecodes/i18n/locales/ar/language-info.ts b/src/livecodes/i18n/locales/ar/language-info.ts index f9db2261f8..24fec63268 100644 --- a/src/livecodes/i18n/locales/ar/language-info.ts +++ b/src/livecodes/i18n/locales/ar/language-info.ts @@ -119,6 +119,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>الموقع الرسمي <3> <4>الوثائق <5> <6>وثائق LiveCodes ', name: 'Eta', }, + fanak: { + desc: 'Fanak هي لغة برمجة وظيفية تُترجم إلى CIL ‏(.NET). يعمل مُترجمها وبيئة تشغيل .NET WebAssembly بالكامل في المتصفح، ويتم جلبهما من مشروع Fanak، لذا يؤدي التشغيل الأول إلى تنزيل بيئة التشغيل وقد يستغرق بعض الوقت.', + link: '<1> <2>مستودع Fanak <3> <4>وثائق Fanak <5> <6>وثائق LiveCodes <7> <8>تحميل قالب البدء ', + name: 'Fanak', + }, fennel: { desc: 'فينل هي لغة برمجة تجمع بين سرعة وبساطة ونطاق لوا مع مرونة بناء جملة ليسب ونظام الماكرو.', link: '<1> <2>الموقع الرسمي لفينل <3> <4>البدء مع فينل <5> <6>وثائق LiveCodes <7> <8>تحميل قالب البداية ', diff --git a/src/livecodes/i18n/locales/ar/translation.lokalise.json b/src/livecodes/i18n/locales/ar/translation.lokalise.json index f2feafe7c6..47e2204006 100644 --- a/src/livecodes/i18n/locales/ar/translation.lokalise.json +++ b/src/livecodes/i18n/locales/ar/translation.lokalise.json @@ -1971,6 +1971,9 @@ "templates.starter.elm": { "translation": "قالب Elm" }, + "templates.starter.fanak": { + "translation": "قالب Fanak" + }, "templates.starter.fennel": { "translation": "قالب Fennel" }, diff --git a/src/livecodes/i18n/locales/ar/translation.ts b/src/livecodes/i18n/locales/ar/translation.ts index 54eb34f467..bb914603ba 100644 --- a/src/livecodes/i18n/locales/ar/translation.ts +++ b/src/livecodes/i18n/locales/ar/translation.ts @@ -996,6 +996,7 @@ const translation: I18nTranslation = { daisyui: 'قالب daisyUI', diagrams: 'قالب الرسوم البيانية', elm: 'قالب Elm', + fanak: 'قالب Fanak', fennel: 'قالب Fennel', 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 5946bb66a4..95f2d27f3d 100644 --- a/src/livecodes/i18n/locales/bn/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/bn/language-info.lokalise.json @@ -207,6 +207,15 @@ "eta.name": { "translation": "Eta" }, + "fanak.desc": { + "translation": "Fanak হলো একটি কার্যকরী প্রোগ্রামিং ভাষা যা CIL (.NET)-এ কম্পাইল হয়। এর কম্পাইলার এবং .NET WebAssembly রানটাইম সম্পূর্ণভাবে ব্রাউজারে চলে, যা Fanak প্রকল্প থেকে আনা হয়, তাই প্রথমবার চালানোর সময় রানটাইমটি ডাউনলোড হয় এবং কিছুটা সময় নিতে পারে।" + }, + "fanak.link": { + "translation": " Fanak রেপো Fanak ডকুমেন্টেশন লাইভকোড ডকুমেন্টেশন স্টার্টার টেমপ্লেট লোড করুন " + }, + "fanak.name": { + "translation": "Fanak" + }, "fennel.desc": { "translation": "Fennel একটি প্রোগ্রামিং ভাষা যা Lua-এর গতি, সরলতা এবং পৌঁছানোকে একটি lisp সিনট্যাক্স এবং ম্যাক্রো সিস্টেমের নমনীয়তার সাথে একত্রিত করে।" }, diff --git a/src/livecodes/i18n/locales/bn/language-info.ts b/src/livecodes/i18n/locales/bn/language-info.ts index 40afdc745c..b519f5bd04 100644 --- a/src/livecodes/i18n/locales/bn/language-info.ts +++ b/src/livecodes/i18n/locales/bn/language-info.ts @@ -119,6 +119,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>অফিসিয়াল ওয়েবসাইট <3> <4>ডকুমেন্টেশন <5> <6>LiveCodes ডকুমেন্টেশন ', name: 'Eta', }, + fanak: { + desc: 'Fanak হলো একটি কার্যকরী প্রোগ্রামিং ভাষা যা CIL (.NET)-এ কম্পাইল হয়। এর কম্পাইলার এবং .NET WebAssembly রানটাইম সম্পূর্ণভাবে ব্রাউজারে চলে, যা Fanak প্রকল্প থেকে আনা হয়, তাই প্রথমবার চালানোর সময় রানটাইমটি ডাউনলোড হয় এবং কিছুটা সময় নিতে পারে।', + link: '<1> <2>Fanak রেপো <3> <4>Fanak ডকুমেন্টেশন <5> <6>লাইভকোড ডকুমেন্টেশন <7> <8>স্টার্টার টেমপ্লেট লোড করুন ', + name: 'Fanak', + }, fennel: { desc: 'Fennel একটি প্রোগ্রামিং ভাষা যা Lua-এর গতি, সরলতা এবং পৌঁছানোকে একটি lisp সিনট্যাক্স এবং ম্যাক্রো সিস্টেমের নমনীয়তার সাথে একত্রিত করে।', link: '<1> <2>Fennel অফিসিয়াল ওয়েবসাইট <3> <4>Fennel দিয়ে শুরু করা <5> <6>LiveCodes ডকুমেন্টেশন <7> <8>স্টার্টার টেমপ্লেট লোড করুন ', diff --git a/src/livecodes/i18n/locales/bn/translation.lokalise.json b/src/livecodes/i18n/locales/bn/translation.lokalise.json index 914792bd9b..9dd80cbdec 100644 --- a/src/livecodes/i18n/locales/bn/translation.lokalise.json +++ b/src/livecodes/i18n/locales/bn/translation.lokalise.json @@ -1971,6 +1971,9 @@ "templates.starter.elm": { "translation": "Elm স্টার্টার" }, + "templates.starter.fanak": { + "translation": "Fanak স্টার্টার" + }, "templates.starter.fennel": { "translation": "Fennel স্টার্টার" }, diff --git a/src/livecodes/i18n/locales/bn/translation.ts b/src/livecodes/i18n/locales/bn/translation.ts index c677bfcc35..2de63382ef 100644 --- a/src/livecodes/i18n/locales/bn/translation.ts +++ b/src/livecodes/i18n/locales/bn/translation.ts @@ -996,6 +996,7 @@ const translation: I18nTranslation = { daisyui: 'daisyUI স্টার্টার', diagrams: 'Diagrams স্টার্টার', elm: 'Elm স্টার্টার', + fanak: 'Fanak স্টার্টার', fennel: 'Fennel স্টার্টার', 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 0fbdaf2e0c..8287c7b681 100644 --- a/src/livecodes/i18n/locales/de/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/de/language-info.lokalise.json @@ -207,6 +207,15 @@ "eta.name": { "translation": "Eta" }, + "fanak.desc": { + "translation": "Fanak ist eine funktionale Programmiersprache, die zu CIL (.NET) kompiliert wird. Ihr Compiler und die .NET-WebAssembly-Laufzeit laufen vollständig im Browser und werden vom Fanak-Projekt abgerufen, sodass beim ersten Start die Laufzeitumgebung heruntergeladen wird und es einen Moment dauern kann." + }, + "fanak.link": { + "translation": " Fanak-Repository Fanak-Dokumentation LiveCodes-Dokumentation Startervorlage laden " + }, + "fanak.name": { + "translation": "Fanak" + }, "fennel.desc": { "translation": "Fennel ist eine Programmiersprache, die die Geschwindigkeit, Einfachheit und Reichweite von Lua mit der Flexibilität einer Lisp-Syntax und eines Makrosystems verbindet." }, diff --git a/src/livecodes/i18n/locales/de/language-info.ts b/src/livecodes/i18n/locales/de/language-info.ts index f5e540a135..4f0d0f545c 100644 --- a/src/livecodes/i18n/locales/de/language-info.ts +++ b/src/livecodes/i18n/locales/de/language-info.ts @@ -121,6 +121,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>Offizielle Website <3> <4>Dokumentation <5> <6>LiveCodes Dokumentation ', name: 'Eta', }, + fanak: { + desc: 'Fanak ist eine funktionale Programmiersprache, die zu CIL (.NET) kompiliert wird. Ihr Compiler und die .NET-WebAssembly-Laufzeit laufen vollständig im Browser und werden vom Fanak-Projekt abgerufen, sodass beim ersten Start die Laufzeitumgebung heruntergeladen wird und es einen Moment dauern kann.', + link: '<1> <2>Fanak-Repository <3> <4>Fanak-Dokumentation <5> <6>LiveCodes-Dokumentation <7> <8>Startervorlage laden ', + name: 'Fanak', + }, fennel: { desc: 'Fennel ist eine Programmiersprache, die die Geschwindigkeit, Einfachheit und Reichweite von Lua mit der Flexibilität einer Lisp-Syntax und eines Makrosystems verbindet.', link: '<1> <2>Fennel offizielle Website <3> <4>Erste Schritte mit Fennel <5> <6>LiveCodes Dokumentation <7> <8>Starter-Vorlage laden ', diff --git a/src/livecodes/i18n/locales/de/translation.lokalise.json b/src/livecodes/i18n/locales/de/translation.lokalise.json index be9f2e91a9..89a218b453 100644 --- a/src/livecodes/i18n/locales/de/translation.lokalise.json +++ b/src/livecodes/i18n/locales/de/translation.lokalise.json @@ -1971,6 +1971,9 @@ "templates.starter.elm": { "translation": "Elm-Starter" }, + "templates.starter.fanak": { + "translation": "Fanak-Starter" + }, "templates.starter.fennel": { "translation": "Fennel-Starter" }, diff --git a/src/livecodes/i18n/locales/de/translation.ts b/src/livecodes/i18n/locales/de/translation.ts index 501fbf92ad..502c426666 100644 --- a/src/livecodes/i18n/locales/de/translation.ts +++ b/src/livecodes/i18n/locales/de/translation.ts @@ -998,6 +998,7 @@ const translation: I18nTranslation = { daisyui: 'daisyUI-Starter', diagrams: 'Diagramm-Starter', elm: 'Elm-Starter', + fanak: 'Fanak-Starter', fennel: 'Fennel-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 cfc122c7aa..51e1184f85 100644 --- a/src/livecodes/i18n/locales/en/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/en/language-info.lokalise.json @@ -276,6 +276,18 @@ "notes": "", "translation": "Eta" }, + "fanak.desc": { + "notes": "", + "translation": "Fanak is a functional programming language that compiles to CIL (.NET). Its compiler and .NET WebAssembly runtime run entirely in the browser, fetched from the Fanak project, so the first run downloads the runtime and can take a moment." + }, + "fanak.link": { + "notes": "### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n### ###\n
  • \n\n### ###\n\n\n", + "translation": " Fanak repository Fanak documentation LiveCodes Documentation Load starter template " + }, + "fanak.name": { + "notes": "", + "translation": "Fanak" + }, "fennel.desc": { "notes": "", "translation": "Fennel is a programming language that brings together the speed, simplicity, and reach of Lua with the flexibility of a lisp syntax and macro system." diff --git a/src/livecodes/i18n/locales/en/language-info.ts b/src/livecodes/i18n/locales/en/language-info.ts index 1c5e4eb021..d77637dc7a 100644 --- a/src/livecodes/i18n/locales/en/language-info.ts +++ b/src/livecodes/i18n/locales/en/language-info.ts @@ -127,6 +127,11 @@ const languageInfo = { link: '<1><2>Official website <3> <4>Documentation <5> <6>LiveCodes Documentations ', name: 'Eta', }, + fanak: { + desc: 'Fanak is a functional programming language that compiles to CIL (.NET). Its compiler and .NET WebAssembly runtime run entirely in the browser, fetched from the Fanak project, so the first run downloads the runtime and can take a moment.', + link: '<1> <2>Fanak repository <3> <4>Fanak documentation <5> <6>LiveCodes Documentation <7> <8>Load starter template ', + name: 'Fanak', + }, fennel: { desc: 'Fennel is a programming language that brings together the speed, simplicity, and reach of Lua with the flexibility of a lisp syntax and macro system.', link: '<1> <2>Fennel official website <3> <4>Getting Started with Fennel <5> <6>LiveCodes Documentations <7> <8>Load starter template ', diff --git a/src/livecodes/i18n/locales/en/translation.lokalise.json b/src/livecodes/i18n/locales/en/translation.lokalise.json index 482321065f..a0cce78c0f 100644 --- a/src/livecodes/i18n/locales/en/translation.lokalise.json +++ b/src/livecodes/i18n/locales/en/translation.lokalise.json @@ -2628,6 +2628,10 @@ "notes": "", "translation": "Elm Starter" }, + "templates.starter.fanak": { + "notes": "", + "translation": "Fanak Starter" + }, "templates.starter.fennel": { "notes": "", "translation": "Fennel Starter" diff --git a/src/livecodes/i18n/locales/en/translation.ts b/src/livecodes/i18n/locales/en/translation.ts index d80bc7f6ec..94649e5ca0 100644 --- a/src/livecodes/i18n/locales/en/translation.ts +++ b/src/livecodes/i18n/locales/en/translation.ts @@ -1003,6 +1003,7 @@ const translation = { daisyui: 'daisyUI Starter', diagrams: 'Diagrams Starter', elm: 'Elm Starter', + fanak: 'Fanak Starter', fennel: 'Fennel Starter', fsharp: 'F# Starter', 'fsharp-wasm': 'F# (Wasm) Starter', diff --git a/src/livecodes/i18n/locales/es/language-info.lokalise.json b/src/livecodes/i18n/locales/es/language-info.lokalise.json index 4ff33090fa..472aa29203 100644 --- a/src/livecodes/i18n/locales/es/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/es/language-info.lokalise.json @@ -207,6 +207,15 @@ "eta.name": { "translation": "Eta" }, + "fanak.desc": { + "translation": "Fanak es un lenguaje de programación funcional que compila a CIL (.NET). Su compilador y el entorno de ejecución .NET para WebAssembly se ejecutan completamente en el navegador, obtenidos del proyecto Fanak, por lo que la primera ejecución descarga el entorno de ejecución y puede tardar un momento." + }, + "fanak.link": { + "translation": " repositorio de Fanak Documentación de Fanak Documentación de LiveCodes Cargar plantilla de inicio " + }, + "fanak.name": { + "translation": "Fanak" + }, "fennel.desc": { "translation": "Fennel es un lenguaje de programación que combina la velocidad, simplicidad y alcance de Lua con la flexibilidad de una sintaxis de lisp y un sistema de macros." }, diff --git a/src/livecodes/i18n/locales/es/language-info.ts b/src/livecodes/i18n/locales/es/language-info.ts index 49d5ecdfbc..d7b7681ace 100644 --- a/src/livecodes/i18n/locales/es/language-info.ts +++ b/src/livecodes/i18n/locales/es/language-info.ts @@ -120,6 +120,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>Sitio web oficial <3> <4>Documentación <5> <6>Documentación de LiveCodes ', name: 'Eta', }, + fanak: { + desc: 'Fanak es un lenguaje de programación funcional que compila a CIL (.NET). Su compilador y el entorno de ejecución .NET para WebAssembly se ejecutan completamente en el navegador, obtenidos del proyecto Fanak, por lo que la primera ejecución descarga el entorno de ejecución y puede tardar un momento.', + link: '<1> <2>repositorio de Fanak <3> <4>Documentación de Fanak <5> <6>Documentación de LiveCodes <7> <8>Cargar plantilla de inicio ', + name: 'Fanak', + }, fennel: { desc: 'Fennel es un lenguaje de programación que combina la velocidad, simplicidad y alcance de Lua con la flexibilidad de una sintaxis de lisp y un sistema de macros.', link: '<1> <2>Sitio web oficial de Fennel <3> <4>Introducción a Fennel <5> <6>Documentación de LiveCodes <7> <8>Cargar plantilla inicial ', diff --git a/src/livecodes/i18n/locales/es/translation.lokalise.json b/src/livecodes/i18n/locales/es/translation.lokalise.json index e694648254..45fc39d135 100644 --- a/src/livecodes/i18n/locales/es/translation.lokalise.json +++ b/src/livecodes/i18n/locales/es/translation.lokalise.json @@ -1971,6 +1971,9 @@ "templates.starter.elm": { "translation": "Inicio Elm" }, + "templates.starter.fanak": { + "translation": "Inicio Fanak" + }, "templates.starter.fennel": { "translation": "Inicio Fennel" }, diff --git a/src/livecodes/i18n/locales/es/translation.ts b/src/livecodes/i18n/locales/es/translation.ts index c943ad56f7..011383c68d 100644 --- a/src/livecodes/i18n/locales/es/translation.ts +++ b/src/livecodes/i18n/locales/es/translation.ts @@ -996,6 +996,7 @@ const translation: I18nTranslation = { daisyui: 'Inicio daisyUI', diagrams: 'Inicio Diagramas', elm: 'Inicio Elm', + fanak: 'Inicio Fanak', fennel: 'Inicio Fennel', 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 fc3245b201..09c5bb6d7a 100644 --- a/src/livecodes/i18n/locales/fa/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/fa/language-info.lokalise.json @@ -207,6 +207,15 @@ "eta.name": { "translation": "Eta" }, + "fanak.desc": { + "translation": "Fanak یک زبان برنامه‌نویسی تابعی است که به CIL (.NET) کامپایل می‌شود. کامپایلر آن و محیط اجرایی .NET WebAssembly کاملاً در مرورگر اجرا می‌شوند و از پروژه Fanak دریافت می‌شوند، بنابراین اولین اجرا محیط اجرایی را دانلود می‌کند و ممکن است کمی طول بکشد." + }, + "fanak.link": { + "translation": " مخزن Fanak مستندات Fanak مستندات LiveCodes بارگیری قالب شروع " + }, + "fanak.name": { + "translation": "Fanak" + }, "fennel.desc": { "translation": "Fennel یک زبان برنامه‌نویسی است که سرعت، سادگی و دسترسی Lua را با انعطاف‌پذیری نحو لیسپ و سیستم ماکرو ترکیب می‌کند." }, diff --git a/src/livecodes/i18n/locales/fa/language-info.ts b/src/livecodes/i18n/locales/fa/language-info.ts index 0d394b3eb9..952a677ef0 100644 --- a/src/livecodes/i18n/locales/fa/language-info.ts +++ b/src/livecodes/i18n/locales/fa/language-info.ts @@ -120,6 +120,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>وب‌سایت رسمی <3> <4>مستندات <5> <6>مستندات LiveCodes ', name: 'Eta', }, + fanak: { + desc: 'Fanak یک زبان برنامه‌نویسی تابعی است که به CIL (.NET) کامپایل می‌شود. کامپایلر آن و محیط اجرایی .NET WebAssembly کاملاً در مرورگر اجرا می‌شوند و از پروژه Fanak دریافت می‌شوند، بنابراین اولین اجرا محیط اجرایی را دانلود می‌کند و ممکن است کمی طول بکشد.', + link: '<1> <2>مخزن Fanak <3> <4>مستندات Fanak <5> <6>مستندات LiveCodes <7> <8>بارگیری قالب شروع ', + name: 'Fanak', + }, fennel: { desc: 'Fennel یک زبان برنامه‌نویسی است که سرعت، سادگی و دسترسی Lua را با انعطاف‌پذیری نحو لیسپ و سیستم ماکرو ترکیب می‌کند.', link: '<1> <2>وب‌سایت رسمی Fennel <3> <4>شروع کار با Fennel <5> <6>مستندات LiveCodes <7> <8>بارگذاری قالب شروع کننده ', diff --git a/src/livecodes/i18n/locales/fa/translation.lokalise.json b/src/livecodes/i18n/locales/fa/translation.lokalise.json index ec20a37980..615d286f52 100644 --- a/src/livecodes/i18n/locales/fa/translation.lokalise.json +++ b/src/livecodes/i18n/locales/fa/translation.lokalise.json @@ -1971,6 +1971,9 @@ "templates.starter.elm": { "translation": "شروع کننده Elm" }, + "templates.starter.fanak": { + "translation": "شروع کننده Fanak" + }, "templates.starter.fennel": { "translation": "شروع کننده Fennel" }, diff --git a/src/livecodes/i18n/locales/fa/translation.ts b/src/livecodes/i18n/locales/fa/translation.ts index 55163f22b0..5c96028612 100644 --- a/src/livecodes/i18n/locales/fa/translation.ts +++ b/src/livecodes/i18n/locales/fa/translation.ts @@ -997,6 +997,7 @@ const translation: I18nTranslation = { daisyui: 'شروع کننده daisyUI', diagrams: 'شروع کننده نمودارها', elm: 'شروع کننده Elm', + fanak: 'شروع کننده Fanak', fennel: 'شروع کننده Fennel', 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 30547f00c1..f1d1422767 100644 --- a/src/livecodes/i18n/locales/fr/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/fr/language-info.lokalise.json @@ -207,6 +207,15 @@ "eta.name": { "translation": "Eta" }, + "fanak.desc": { + "translation": "Fanak est un langage de programmation fonctionnel qui se compile en CIL (.NET). Son compilateur et le runtime .NET WebAssembly s'exécutent entièrement dans le navigateur, récupérés depuis le projet Fanak, donc la première exécution télécharge le runtime et peut prendre un moment." + }, + "fanak.link": { + "translation": " dépôt Fanak Documentation Fanak Documentation LiveCodes Charger un modèle de démarrage " + }, + "fanak.name": { + "translation": "Fanak" + }, "fennel.desc": { "translation": "Fennel est un langage de programmation qui allie la vitesse, la simplicité et la portée de Lua à la flexibilité d'une syntaxe lisp et d'un système de macros." }, diff --git a/src/livecodes/i18n/locales/fr/language-info.ts b/src/livecodes/i18n/locales/fr/language-info.ts index 753745d587..57f5f20c1e 100644 --- a/src/livecodes/i18n/locales/fr/language-info.ts +++ b/src/livecodes/i18n/locales/fr/language-info.ts @@ -120,6 +120,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>Site officiel <3> <4>Documentation <5> <6>Documentation LiveCodes ', name: 'Eta', }, + fanak: { + desc: "Fanak est un langage de programmation fonctionnel qui se compile en CIL (.NET). Son compilateur et le runtime .NET WebAssembly s'exécutent entièrement dans le navigateur, récupérés depuis le projet Fanak, donc la première exécution télécharge le runtime et peut prendre un moment.", + link: '<1> <2>dépôt Fanak <3> <4>Documentation Fanak <5> <6>Documentation LiveCodes <7> <8>Charger un modèle de démarrage ', + name: 'Fanak', + }, fennel: { desc: "Fennel est un langage de programmation qui allie la vitesse, la simplicité et la portée de Lua à la flexibilité d'une syntaxe lisp et d'un système de macros.", link: '<1> <2>Site officiel de Fennel <3> <4>Débuter avec Fennel <5> <6>Documentation LiveCodes <7> <8>Charger le modèle de démarrage ', diff --git a/src/livecodes/i18n/locales/fr/translation.lokalise.json b/src/livecodes/i18n/locales/fr/translation.lokalise.json index ecf3a38156..c45aed6b64 100644 --- a/src/livecodes/i18n/locales/fr/translation.lokalise.json +++ b/src/livecodes/i18n/locales/fr/translation.lokalise.json @@ -1971,6 +1971,9 @@ "templates.starter.elm": { "translation": "Démarrage Elm" }, + "templates.starter.fanak": { + "translation": "Démarrage Fanak" + }, "templates.starter.fennel": { "translation": "Démarrage Fennel" }, diff --git a/src/livecodes/i18n/locales/fr/translation.ts b/src/livecodes/i18n/locales/fr/translation.ts index 88b5d1df05..8ecb67e5a8 100644 --- a/src/livecodes/i18n/locales/fr/translation.ts +++ b/src/livecodes/i18n/locales/fr/translation.ts @@ -998,6 +998,7 @@ const translation: I18nTranslation = { daisyui: 'Démarrage daisyUI', diagrams: 'Démarrage Diagrammes', elm: 'Démarrage Elm', + fanak: 'Démarrage Fanak', fennel: 'Démarrage Fennel', 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 beabd6f8ec..21d35a925f 100644 --- a/src/livecodes/i18n/locales/hi/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/hi/language-info.lokalise.json @@ -207,6 +207,15 @@ "eta.name": { "translation": "Eta" }, + "fanak.desc": { + "translation": "Fanak एक कार्यात्मक प्रोग्रामिंग भाषा है जो CIL (.NET) में संकलित होती है। इसका कंपाइलर और .NET WebAssembly रनटाइम पूरी तरह से ब्राउज़र में चलते हैं, जो Fanak प्रोजेक्ट से प्राप्त होते हैं, इसलिए पहली बार चलाने पर रनटाइम डाउनलोड होता है और इसमें कुछ समय लग सकता है।" + }, + "fanak.link": { + "translation": " Fanak रेपो Fanak दस्तावेज लाइवकोड दस्तावेजीकरण स्टार्टर टेम्पलेट लोड करें " + }, + "fanak.name": { + "translation": "Fanak" + }, "fennel.desc": { "translation": "Fennel एक प्रोग्रामिंग भाषा है जो Lua की गति, सरलता, और पहुंच को लिस्प सिंटैक्स और मैक्रो सिस्टम की लचीलेपन के साथ जोड़ती है।" }, diff --git a/src/livecodes/i18n/locales/hi/language-info.ts b/src/livecodes/i18n/locales/hi/language-info.ts index c1cbc04830..0911683d55 100644 --- a/src/livecodes/i18n/locales/hi/language-info.ts +++ b/src/livecodes/i18n/locales/hi/language-info.ts @@ -120,6 +120,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>आधिकारिक वेबसाइट <3> <4>दस्तावेज़ीकरण <5> <6>LiveCodes दस्तावेज़ीकरण ', name: 'Eta', }, + fanak: { + desc: 'Fanak एक कार्यात्मक प्रोग्रामिंग भाषा है जो CIL (.NET) में संकलित होती है। इसका कंपाइलर और .NET WebAssembly रनटाइम पूरी तरह से ब्राउज़र में चलते हैं, जो Fanak प्रोजेक्ट से प्राप्त होते हैं, इसलिए पहली बार चलाने पर रनटाइम डाउनलोड होता है और इसमें कुछ समय लग सकता है।', + link: '<1> <2>Fanak रेपो <3> <4>Fanak दस्तावेज <5> <6>लाइवकोड दस्तावेजीकरण <7> <8>स्टार्टर टेम्पलेट लोड करें ', + name: 'Fanak', + }, fennel: { desc: 'Fennel एक प्रोग्रामिंग भाषा है जो Lua की गति, सरलता, और पहुंच को लिस्प सिंटैक्स और मैक्रो सिस्टम की लचीलेपन के साथ जोड़ती है।', link: '<1> <2>Fennel आधिकारिक वेबसाइट <3> <4>Fennel के साथ शुरुआत करना <5> <6>LiveCodes दस्तावेज़ीकरण <7> <8>स्टार्टर टेम्पलेट लोड करें ', diff --git a/src/livecodes/i18n/locales/hi/translation.lokalise.json b/src/livecodes/i18n/locales/hi/translation.lokalise.json index ff6dc55e66..c9ef803528 100644 --- a/src/livecodes/i18n/locales/hi/translation.lokalise.json +++ b/src/livecodes/i18n/locales/hi/translation.lokalise.json @@ -1971,6 +1971,9 @@ "templates.starter.elm": { "translation": "Elm स्टार्टर" }, + "templates.starter.fanak": { + "translation": "Fanak स्टार्टर" + }, "templates.starter.fennel": { "translation": "Fennel स्टार्टर" }, diff --git a/src/livecodes/i18n/locales/hi/translation.ts b/src/livecodes/i18n/locales/hi/translation.ts index a815bfa6a4..f553c3463f 100644 --- a/src/livecodes/i18n/locales/hi/translation.ts +++ b/src/livecodes/i18n/locales/hi/translation.ts @@ -996,6 +996,7 @@ const translation: I18nTranslation = { daisyui: 'daisyUI स्टार्टर', diagrams: 'आरेख स्टार्टर', elm: 'Elm स्टार्टर', + fanak: 'Fanak स्टार्टर', fennel: 'Fennel स्टार्टर', 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 e44f08e61d..9edeaab662 100644 --- a/src/livecodes/i18n/locales/hu/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/hu/language-info.lokalise.json @@ -207,6 +207,15 @@ "eta.name": { "translation": "Eta" }, + "fanak.desc": { + "translation": "A Fanak egy funkcionális programozási nyelv, amely CIL (.NET) kódra fordul. A fordítója és a .NET WebAssembly futtatókörnyezet teljes egészében a böngészőben fut, a Fanak projektből letöltve, ezért az első futtatáskor a futtatókörnyezet letöltése megtörténik, ami eltarthat egy ideig." + }, + "fanak.link": { + "translation": " Fanak tároló Fanak dokumentáció LiveCodes dokumentáció Kezdő sablon betöltése " + }, + "fanak.name": { + "translation": "Fanak" + }, "fennel.desc": { "translation": "A Fennel egy programozási nyelv, amely ötvözi a Lua sebességét, egyszerűségét és elérhetőségét a lisp szintaxis és makrórendszer rugalmasságával." }, diff --git a/src/livecodes/i18n/locales/hu/language-info.ts b/src/livecodes/i18n/locales/hu/language-info.ts index d2306d8a53..49d38e93f7 100644 --- a/src/livecodes/i18n/locales/hu/language-info.ts +++ b/src/livecodes/i18n/locales/hu/language-info.ts @@ -121,6 +121,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>Hivatalos weboldal <3> <4>Dokumentáció <5> <6>LiveCodes dokumentáció ', name: 'Eta', }, + fanak: { + desc: 'A Fanak egy funkcionális programozási nyelv, amely CIL (.NET) kódra fordul. A fordítója és a .NET WebAssembly futtatókörnyezet teljes egészében a böngészőben fut, a Fanak projektből letöltve, ezért az első futtatáskor a futtatókörnyezet letöltése megtörténik, ami eltarthat egy ideig.', + link: '<1> <2>Fanak tároló <3> <4>Fanak dokumentáció <5> <6>LiveCodes dokumentáció <7> <8>Kezdő sablon betöltése ', + name: 'Fanak', + }, fennel: { desc: 'A Fennel egy programozási nyelv, amely ötvözi a Lua sebességét, egyszerűségét és elérhetőségét a lisp szintaxis és makrórendszer rugalmasságával.', link: '<1> <2>Fennel hivatalos weboldal <3> <4>Kezdés a Fennel-lel <5> <6>LiveCodes dokumentáció <7> <8>Kezdő sablon betöltése ', diff --git a/src/livecodes/i18n/locales/hu/translation.lokalise.json b/src/livecodes/i18n/locales/hu/translation.lokalise.json index 104635491a..0882594eeb 100644 --- a/src/livecodes/i18n/locales/hu/translation.lokalise.json +++ b/src/livecodes/i18n/locales/hu/translation.lokalise.json @@ -1971,6 +1971,9 @@ "templates.starter.elm": { "translation": "Elm kezdő" }, + "templates.starter.fanak": { + "translation": "Fanak kezdő" + }, "templates.starter.fennel": { "translation": "Fennel kezdő" }, diff --git a/src/livecodes/i18n/locales/hu/translation.ts b/src/livecodes/i18n/locales/hu/translation.ts index 2211b85db4..b56cca5b32 100644 --- a/src/livecodes/i18n/locales/hu/translation.ts +++ b/src/livecodes/i18n/locales/hu/translation.ts @@ -997,6 +997,7 @@ const translation: I18nTranslation = { daisyui: 'daisyUI kezdő', diagrams: 'Diagramok kezdő', elm: 'Elm kezdő', + fanak: 'Fanak kezdő', fennel: 'Fennel 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 c16b14315e..26225bebf1 100644 --- a/src/livecodes/i18n/locales/id/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/id/language-info.lokalise.json @@ -207,6 +207,15 @@ "eta.name": { "translation": "Eta" }, + "fanak.desc": { + "translation": "Fanak adalah bahasa pemrograman fungsional yang dikompilasi ke CIL (.NET). Kompiler dan runtime .NET WebAssembly-nya berjalan sepenuhnya di browser, diambil dari proyek Fanak, sehingga proses pertama kali dijalankan akan mengunduh runtime dan mungkin membutuhkan waktu sejenak." + }, + "fanak.link": { + "translation": " Repo Fanak Dokumentasi Fanak Dokumentasi LiveCodes Muat templat awal " + }, + "fanak.name": { + "translation": "Fanak" + }, "fennel.desc": { "translation": "Fennel adalah bahasa pemrograman yang menggabungkan kecepatan, kesederhanaan, dan jangkauan Lua dengan fleksibilitas sintaks lisp dan sistem makro." }, diff --git a/src/livecodes/i18n/locales/id/language-info.ts b/src/livecodes/i18n/locales/id/language-info.ts index 29d6af08b0..d62f8faee7 100644 --- a/src/livecodes/i18n/locales/id/language-info.ts +++ b/src/livecodes/i18n/locales/id/language-info.ts @@ -121,6 +121,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>Situs web resmi <3> <4>Dokumentasi <5> <6>Dokumentasi LiveCodes ', name: 'Eta', }, + fanak: { + desc: 'Fanak adalah bahasa pemrograman fungsional yang dikompilasi ke CIL (.NET). Kompiler dan runtime .NET WebAssembly-nya berjalan sepenuhnya di browser, diambil dari proyek Fanak, sehingga proses pertama kali dijalankan akan mengunduh runtime dan mungkin membutuhkan waktu sejenak.', + link: '<1> <2>Repo Fanak <3> <4>Dokumentasi Fanak <5> <6>Dokumentasi LiveCodes <7> <8>Muat templat awal ', + name: 'Fanak', + }, fennel: { desc: 'Fennel adalah bahasa pemrograman yang menggabungkan kecepatan, kesederhanaan, dan jangkauan Lua dengan fleksibilitas sintaks lisp dan sistem makro.', link: '<1> <2>Situs web resmi Fennel <3> <4>Memulai dengan Fennel <5> <6>Dokumentasi LiveCodes <7> <8>Muat template pemula ', diff --git a/src/livecodes/i18n/locales/id/translation.lokalise.json b/src/livecodes/i18n/locales/id/translation.lokalise.json index 88ff86c599..38dbcc7089 100644 --- a/src/livecodes/i18n/locales/id/translation.lokalise.json +++ b/src/livecodes/i18n/locales/id/translation.lokalise.json @@ -1971,6 +1971,9 @@ "templates.starter.elm": { "translation": "Pemula Elm" }, + "templates.starter.fanak": { + "translation": "Pemula Fanak" + }, "templates.starter.fennel": { "translation": "Pemula Fennel" }, diff --git a/src/livecodes/i18n/locales/id/translation.ts b/src/livecodes/i18n/locales/id/translation.ts index fb8b322120..12038db736 100644 --- a/src/livecodes/i18n/locales/id/translation.ts +++ b/src/livecodes/i18n/locales/id/translation.ts @@ -996,6 +996,7 @@ const translation: I18nTranslation = { daisyui: 'Pemula daisyUI', diagrams: 'Pemula Diagram', elm: 'Pemula Elm', + fanak: 'Pemula Fanak', fennel: 'Pemula Fennel', 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 e87184820a..17f73e0add 100644 --- a/src/livecodes/i18n/locales/it/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/it/language-info.lokalise.json @@ -207,6 +207,15 @@ "eta.name": { "translation": "Eta" }, + "fanak.desc": { + "translation": "Fanak è un linguaggio di programmazione funzionale che viene compilato in CIL (.NET). Il suo compilatore e il runtime .NET WebAssembly vengono eseguiti interamente nel browser, recuperati dal progetto Fanak, quindi la prima esecuzione scarica il runtime e può richiedere un po' di tempo." + }, + "fanak.link": { + "translation": " repository di Fanak Documentazione di Fanak Documentazione di LiveCodes Carica il modello di avvio " + }, + "fanak.name": { + "translation": "Fanak" + }, "fennel.desc": { "translation": "Fennel è un linguaggio di programmazione che unisce la velocità, la semplicità e la portata di Lua con la flessibilità di una sintassi lisp e un sistema di macro." }, diff --git a/src/livecodes/i18n/locales/it/language-info.ts b/src/livecodes/i18n/locales/it/language-info.ts index 946954ff46..29e33f1f42 100644 --- a/src/livecodes/i18n/locales/it/language-info.ts +++ b/src/livecodes/i18n/locales/it/language-info.ts @@ -120,6 +120,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>Sito ufficiale <3> <4>Documentazione <5> <6>Documentazione LiveCodes ', name: 'Eta', }, + fanak: { + desc: "Fanak è un linguaggio di programmazione funzionale che viene compilato in CIL (.NET). Il suo compilatore e il runtime .NET WebAssembly vengono eseguiti interamente nel browser, recuperati dal progetto Fanak, quindi la prima esecuzione scarica il runtime e può richiedere un po' di tempo.", + link: '<1> <2>repository di Fanak <3> <4>Documentazione di Fanak <5> <6>Documentazione di LiveCodes <7> <8>Carica il modello di avvio ', + name: 'Fanak', + }, fennel: { desc: 'Fennel è un linguaggio di programmazione che unisce la velocità, la semplicità e la portata di Lua con la flessibilità di una sintassi lisp e un sistema di macro.', link: '<1> <2>Sito ufficiale di Fennel <3> <4>Iniziare con Fennel <5> <6>Documentazione LiveCodes <7> <8>Carica modello di partenza ', diff --git a/src/livecodes/i18n/locales/it/translation.lokalise.json b/src/livecodes/i18n/locales/it/translation.lokalise.json index c8c7981ddd..735d44b92d 100644 --- a/src/livecodes/i18n/locales/it/translation.lokalise.json +++ b/src/livecodes/i18n/locales/it/translation.lokalise.json @@ -1971,6 +1971,9 @@ "templates.starter.elm": { "translation": "Starter Elm" }, + "templates.starter.fanak": { + "translation": "Starter Fanak" + }, "templates.starter.fennel": { "translation": "Starter Fennel" }, diff --git a/src/livecodes/i18n/locales/it/translation.ts b/src/livecodes/i18n/locales/it/translation.ts index af608f2a13..48b495660f 100644 --- a/src/livecodes/i18n/locales/it/translation.ts +++ b/src/livecodes/i18n/locales/it/translation.ts @@ -997,6 +997,7 @@ const translation: I18nTranslation = { daisyui: 'Starter daisyUI', diagrams: 'Starter Diagrammi', elm: 'Starter Elm', + fanak: 'Starter Fanak', fennel: 'Starter Fennel', 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 d510b784d6..86a110c20b 100644 --- a/src/livecodes/i18n/locales/ja/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/ja/language-info.lokalise.json @@ -207,6 +207,15 @@ "eta.name": { "translation": "Eta" }, + "fanak.desc": { + "translation": "Fanak は CIL (.NET) にコンパイルされる関数型プログラミング言語です。そのコンパイラと .NET WebAssembly ランタイムは完全にブラウザ上で動作し、Fanak プロジェクトから取得されるため、初回実行時にはランタイムがダウンロードされ、少し時間がかかることがあります。" + }, + "fanak.link": { + "translation": " Fanak リポジトリ Fanak ドキュメント LiveCodes ドキュメント スターターテンプレートの読み込み " + }, + "fanak.name": { + "translation": "Fanak" + }, "fennel.desc": { "translation": "Fennel は、Lua のスピード、シンプルさ、リーチと、Lisp 構文とマクロシステムの柔軟性を組み合わせたプログラミング言語です。" }, diff --git a/src/livecodes/i18n/locales/ja/language-info.ts b/src/livecodes/i18n/locales/ja/language-info.ts index 2c4fa14c44..1887ed349c 100644 --- a/src/livecodes/i18n/locales/ja/language-info.ts +++ b/src/livecodes/i18n/locales/ja/language-info.ts @@ -120,6 +120,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>公式ウェブサイト <3> <4>ドキュメント <5> <6>LiveCodes ドキュメント ', name: 'Eta', }, + fanak: { + desc: 'Fanak は CIL (.NET) にコンパイルされる関数型プログラミング言語です。そのコンパイラと .NET WebAssembly ランタイムは完全にブラウザ上で動作し、Fanak プロジェクトから取得されるため、初回実行時にはランタイムがダウンロードされ、少し時間がかかることがあります。', + link: '<1> <2>Fanak リポジトリ <3> <4>Fanak ドキュメント <5> <6>LiveCodes ドキュメント <7> <8>スターターテンプレートの読み込み ', + name: 'Fanak', + }, fennel: { desc: 'Fennel は、Lua のスピード、シンプルさ、リーチと、Lisp 構文とマクロシステムの柔軟性を組み合わせたプログラミング言語です。', link: '<1> <2>Fennel 公式ウェブサイト <3> <4>Fennel 入門 <5> <6>LiveCodes ドキュメント <7> <8>スターターテンプレートを読み込む ', diff --git a/src/livecodes/i18n/locales/ja/translation.lokalise.json b/src/livecodes/i18n/locales/ja/translation.lokalise.json index 01185a398e..d68fe42008 100644 --- a/src/livecodes/i18n/locales/ja/translation.lokalise.json +++ b/src/livecodes/i18n/locales/ja/translation.lokalise.json @@ -1971,6 +1971,9 @@ "templates.starter.elm": { "translation": "Elmスターター" }, + "templates.starter.fanak": { + "translation": "Fanakスターター" + }, "templates.starter.fennel": { "translation": "Fennelスターター" }, diff --git a/src/livecodes/i18n/locales/ja/translation.ts b/src/livecodes/i18n/locales/ja/translation.ts index 000e5cf657..ecac2992c8 100644 --- a/src/livecodes/i18n/locales/ja/translation.ts +++ b/src/livecodes/i18n/locales/ja/translation.ts @@ -997,6 +997,7 @@ const translation: I18nTranslation = { daisyui: 'daisyUIスターター', diagrams: 'ダイアグラムスターター', elm: 'Elmスターター', + fanak: 'Fanakスターター', fennel: 'Fennelスターター', 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 f962a695b8..4b720bcd4b 100644 --- a/src/livecodes/i18n/locales/nl/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/nl/language-info.lokalise.json @@ -207,6 +207,15 @@ "eta.name": { "translation": "Eta" }, + "fanak.desc": { + "translation": "Fanak is een functionele programmeertaal die compileert naar CIL (.NET). De compiler en de .NET WebAssembly-runtime draaien volledig in de browser en worden opgehaald uit het Fanak-project, dus de eerste keer dat je het uitvoert wordt de runtime gedownload en kan het even duren." + }, + "fanak.link": { + "translation": " Fanak-repo Fanak-documentatie LiveCodes-documentatie Startersjabloon laden " + }, + "fanak.name": { + "translation": "Fanak" + }, "fennel.desc": { "translation": "Fennel is een programmeertaal die de snelheid, eenvoud en bereik van Lua combineert met de flexibiliteit van een lisp-syntaxis en macrosysteem." }, diff --git a/src/livecodes/i18n/locales/nl/language-info.ts b/src/livecodes/i18n/locales/nl/language-info.ts index d355a2d516..a85454f595 100644 --- a/src/livecodes/i18n/locales/nl/language-info.ts +++ b/src/livecodes/i18n/locales/nl/language-info.ts @@ -120,6 +120,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>Officiële website <3> <4>Documentatie <5> <6>LiveCodes Documentatie ', name: 'Eta', }, + fanak: { + desc: 'Fanak is een functionele programmeertaal die compileert naar CIL (.NET). De compiler en de .NET WebAssembly-runtime draaien volledig in de browser en worden opgehaald uit het Fanak-project, dus de eerste keer dat je het uitvoert wordt de runtime gedownload en kan het even duren.', + link: '<1> <2>Fanak-repo <3> <4>Fanak-documentatie <5> <6>LiveCodes-documentatie <7> <8>Startersjabloon laden ', + name: 'Fanak', + }, fennel: { desc: 'Fennel is een programmeertaal die de snelheid, eenvoud en bereik van Lua combineert met de flexibiliteit van een lisp-syntaxis en macrosysteem.', link: '<1> <2>Fennel officiële website <3> <4>Aan de slag met Fennel <5> <6>LiveCodes Documentatie <7> <8>Startsjabloon laden ', diff --git a/src/livecodes/i18n/locales/nl/translation.lokalise.json b/src/livecodes/i18n/locales/nl/translation.lokalise.json index 28bad6fb4e..4d6665872d 100644 --- a/src/livecodes/i18n/locales/nl/translation.lokalise.json +++ b/src/livecodes/i18n/locales/nl/translation.lokalise.json @@ -1971,6 +1971,9 @@ "templates.starter.elm": { "translation": "Elm-starter" }, + "templates.starter.fanak": { + "translation": "Fanak-starter" + }, "templates.starter.fennel": { "translation": "Fennel-starter" }, diff --git a/src/livecodes/i18n/locales/nl/translation.ts b/src/livecodes/i18n/locales/nl/translation.ts index eae95d3766..07d5815b61 100644 --- a/src/livecodes/i18n/locales/nl/translation.ts +++ b/src/livecodes/i18n/locales/nl/translation.ts @@ -997,6 +997,7 @@ const translation: I18nTranslation = { daisyui: 'daisyUI-starter', diagrams: 'Diagrammen-starter', elm: 'Elm-starter', + fanak: 'Fanak-starter', fennel: 'Fennel-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 527e405db1..b99a73afd7 100644 --- a/src/livecodes/i18n/locales/pt/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/pt/language-info.lokalise.json @@ -207,6 +207,15 @@ "eta.name": { "translation": "Eta" }, + "fanak.desc": { + "translation": "Fanak é uma linguagem de programação funcional que compila para CIL (.NET). O seu compilador e o ambiente de execução .NET WebAssembly funcionam inteiramente no navegador, obtidos a partir do projeto Fanak, pelo que a primeira execução descarrega o ambiente de execução e pode demorar um momento." + }, + "fanak.link": { + "translation": " Repositório do Fanak Documentação do Fanak Documentação do LiveCodes Carregar modelo inicial " + }, + "fanak.name": { + "translation": "Fanak" + }, "fennel.desc": { "translation": "Fennel é uma linguagem de programação que une a velocidade, simplicidade e alcance do Lua com a flexibilidade de uma sintaxe lisp e sistema de macros." }, diff --git a/src/livecodes/i18n/locales/pt/language-info.ts b/src/livecodes/i18n/locales/pt/language-info.ts index c30c4689e1..580c368cd3 100644 --- a/src/livecodes/i18n/locales/pt/language-info.ts +++ b/src/livecodes/i18n/locales/pt/language-info.ts @@ -120,6 +120,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>Site oficial <3> <4>Documentação <5> <6>Documentação do LiveCodes ', name: 'Eta', }, + fanak: { + desc: 'Fanak é uma linguagem de programação funcional que compila para CIL (.NET). O seu compilador e o ambiente de execução .NET WebAssembly funcionam inteiramente no navegador, obtidos a partir do projeto Fanak, pelo que a primeira execução descarrega o ambiente de execução e pode demorar um momento.', + link: '<1> <2>Repositório do Fanak <3> <4>Documentação do Fanak <5> <6>Documentação do LiveCodes <7> <8>Carregar modelo inicial ', + name: 'Fanak', + }, fennel: { desc: 'Fennel é uma linguagem de programação que une a velocidade, simplicidade e alcance do Lua com a flexibilidade de uma sintaxe lisp e sistema de macros.', link: '<1> <2>Site oficial do Fennel <3> <4>Começando com Fennel <5> <6>Documentação do LiveCodes <7> <8>Carregar modelo inicial ', diff --git a/src/livecodes/i18n/locales/pt/translation.lokalise.json b/src/livecodes/i18n/locales/pt/translation.lokalise.json index a9f4e98a9f..8d80a73ec9 100644 --- a/src/livecodes/i18n/locales/pt/translation.lokalise.json +++ b/src/livecodes/i18n/locales/pt/translation.lokalise.json @@ -1971,6 +1971,9 @@ "templates.starter.elm": { "translation": "Iniciante Elm" }, + "templates.starter.fanak": { + "translation": "Iniciante Fanak" + }, "templates.starter.fennel": { "translation": "Iniciante Fennel" }, diff --git a/src/livecodes/i18n/locales/pt/translation.ts b/src/livecodes/i18n/locales/pt/translation.ts index b08a6eb025..27751ab0e3 100644 --- a/src/livecodes/i18n/locales/pt/translation.ts +++ b/src/livecodes/i18n/locales/pt/translation.ts @@ -997,6 +997,7 @@ const translation: I18nTranslation = { daisyui: 'Iniciante daisyUI', diagrams: 'Iniciante Diagrams', elm: 'Iniciante Elm', + fanak: 'Iniciante Fanak', fennel: 'Iniciante Fennel', 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 76c5c5f4fc..9b8c12ffbf 100644 --- a/src/livecodes/i18n/locales/ru/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/ru/language-info.lokalise.json @@ -207,6 +207,15 @@ "eta.name": { "translation": "Eta" }, + "fanak.desc": { + "translation": "Fanak — это функциональный язык программирования, который компилируется в CIL (.NET). Его компилятор и среда выполнения .NET WebAssembly работают полностью в браузере и загружаются из проекта Fanak, поэтому при первом запуске среда выполнения скачивается, что может занять некоторое время." + }, + "fanak.link": { + "translation": " Репозиторий Fanak Документация по Fanak Документация LiveCodes Загрузить стартовый шаблон " + }, + "fanak.name": { + "translation": "Fanak" + }, "fennel.desc": { "translation": "Fennel - это язык программирования, который объединяет скорость, простоту и охват Lua с гибкостью синтаксиса и системы макросов Lisp." }, diff --git a/src/livecodes/i18n/locales/ru/language-info.ts b/src/livecodes/i18n/locales/ru/language-info.ts index 791f0d80b4..e662aef78c 100644 --- a/src/livecodes/i18n/locales/ru/language-info.ts +++ b/src/livecodes/i18n/locales/ru/language-info.ts @@ -121,6 +121,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>Официальный сайт <3> <4>Документация <5> <6>Документация LiveCodes ', name: 'Eta', }, + fanak: { + desc: 'Fanak — это функциональный язык программирования, который компилируется в CIL (.NET). Его компилятор и среда выполнения .NET WebAssembly работают полностью в браузере и загружаются из проекта Fanak, поэтому при первом запуске среда выполнения скачивается, что может занять некоторое время.', + link: '<1> <2>Репозиторий Fanak <3> <4>Документация по Fanak <5> <6>Документация LiveCodes <7> <8>Загрузить стартовый шаблон ', + name: 'Fanak', + }, fennel: { desc: 'Fennel - это язык программирования, который объединяет скорость, простоту и охват Lua с гибкостью синтаксиса и системы макросов Lisp.', link: '<1> <2>Официальный сайт Fennel <3> <4>Начало работы с Fennel <5> <6>Документация LiveCodes <7> <8>Загрузить стартовый шаблон ', diff --git a/src/livecodes/i18n/locales/ru/translation.lokalise.json b/src/livecodes/i18n/locales/ru/translation.lokalise.json index 555a504e14..d56a419821 100644 --- a/src/livecodes/i18n/locales/ru/translation.lokalise.json +++ b/src/livecodes/i18n/locales/ru/translation.lokalise.json @@ -1971,6 +1971,9 @@ "templates.starter.elm": { "translation": "Стартер Elm" }, + "templates.starter.fanak": { + "translation": "Стартер Fanak" + }, "templates.starter.fennel": { "translation": "Стартер Fennel" }, diff --git a/src/livecodes/i18n/locales/ru/translation.ts b/src/livecodes/i18n/locales/ru/translation.ts index 37c1cde383..ca892a017b 100644 --- a/src/livecodes/i18n/locales/ru/translation.ts +++ b/src/livecodes/i18n/locales/ru/translation.ts @@ -996,6 +996,7 @@ const translation: I18nTranslation = { daisyui: 'Стартер daisyUI', diagrams: 'Стартер диаграмм', elm: 'Стартер Elm', + fanak: 'Стартер Fanak', fennel: 'Стартер Fennel', 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 78771904f1..459e854398 100644 --- a/src/livecodes/i18n/locales/tr/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/tr/language-info.lokalise.json @@ -207,6 +207,15 @@ "eta.name": { "translation": "Eta" }, + "fanak.desc": { + "translation": "Fanak, CIL (.NET) diline derlenen işlevsel bir programlama dilidir. Derleyicisi ve .NET WebAssembly çalışma zamanı tamamen tarayıcıda çalışır ve Fanak projesinden alınır; bu nedenle ilk çalıştırmada çalışma zamanı indirilir ve bu biraz zaman alabilir." + }, + "fanak.link": { + "translation": " Fanak deposu Fanak belgeleri LiveCodes Belgeleri Başlangıç şablonunu yükle " + }, + "fanak.name": { + "translation": "Fanak" + }, "fennel.desc": { "translation": "Fennel, Lua'nın hızını, basitliğini ve erişimini bir lisp sözdizimi ve makro sisteminin esnekliğiyle birleştiren bir programlama dilidir." }, diff --git a/src/livecodes/i18n/locales/tr/language-info.ts b/src/livecodes/i18n/locales/tr/language-info.ts index 81a269936b..1357b5c61b 100644 --- a/src/livecodes/i18n/locales/tr/language-info.ts +++ b/src/livecodes/i18n/locales/tr/language-info.ts @@ -120,6 +120,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>Resmi web sitesi <3> <4>Dokümantasyon <5> <6>LiveCodes Dokümantasyonu ', name: 'Eta', }, + fanak: { + desc: 'Fanak, CIL (.NET) diline derlenen işlevsel bir programlama dilidir. Derleyicisi ve .NET WebAssembly çalışma zamanı tamamen tarayıcıda çalışır ve Fanak projesinden alınır; bu nedenle ilk çalıştırmada çalışma zamanı indirilir ve bu biraz zaman alabilir.', + link: '<1> <2>Fanak deposu <3> <4>Fanak belgeleri <5> <6>LiveCodes Belgeleri <7> <8>Başlangıç şablonunu yükle ', + name: 'Fanak', + }, fennel: { desc: "Fennel, Lua'nın hızını, basitliğini ve erişimini bir lisp sözdizimi ve makro sisteminin esnekliğiyle birleştiren bir programlama dilidir.", link: "<1> <2>Fennel resmi web sitesi <3> <4>Fennel'e Başlarken <5> <6>LiveCodes Dokümantasyonu <7> <8>Başlangıç şablonunu yükle ", diff --git a/src/livecodes/i18n/locales/tr/translation.lokalise.json b/src/livecodes/i18n/locales/tr/translation.lokalise.json index 48f581a7e0..f3b871ef0c 100644 --- a/src/livecodes/i18n/locales/tr/translation.lokalise.json +++ b/src/livecodes/i18n/locales/tr/translation.lokalise.json @@ -1971,6 +1971,9 @@ "templates.starter.elm": { "translation": "Elm Başlangıç" }, + "templates.starter.fanak": { + "translation": "Fanak Başlangıç" + }, "templates.starter.fennel": { "translation": "Fennel Başlangıç" }, diff --git a/src/livecodes/i18n/locales/tr/translation.ts b/src/livecodes/i18n/locales/tr/translation.ts index 77025c5968..317dd798c6 100644 --- a/src/livecodes/i18n/locales/tr/translation.ts +++ b/src/livecodes/i18n/locales/tr/translation.ts @@ -997,6 +997,7 @@ const translation: I18nTranslation = { daisyui: 'daisyUI Başlangıç', diagrams: 'Diyagramlar Başlangıç', elm: 'Elm Başlangıç', + fanak: 'Fanak Başlangıç', fennel: 'Fennel 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 e836b2d5b2..8589817f35 100644 --- a/src/livecodes/i18n/locales/ur/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/ur/language-info.lokalise.json @@ -207,6 +207,15 @@ "eta.name": { "translation": "ایٹا" }, + "fanak.desc": { + "translation": "Fanak ایک فنکشنل پروگرامنگ لینگویج ہے جو CIL (.NET) میں کمپائل ہوتی ہے۔ اس کا کمپائلر اور .NET WebAssembly رن ٹائم مکمل طور پر براؤزر میں چلتے ہیں، جو Fanak پروجیکٹ سے حاصل کیے جاتے ہیں، اس لیے پہلی بار چلانے پر رن ٹائم ڈاؤن لوڈ ہوتا ہے اور اس میں کچھ وقت لگ سکتا ہے۔" + }, + "fanak.link": { + "translation": " Fanak ریپو Fanak دستاویزات LiveCodes دستاویزی لوڈ اسٹارٹر ٹیمپلیٹ " + }, + "fanak.name": { + "translation": "Fanak" + }, "fennel.desc": { "translation": "فینل ایک پروگرامنگ زبان ہے جو لوا کی رفتار، سادگی اور پہنچ کو لسپ نحو اور میکرو سسٹم کی لچک کے ساتھ جمع کرتی ہے۔" }, diff --git a/src/livecodes/i18n/locales/ur/language-info.ts b/src/livecodes/i18n/locales/ur/language-info.ts index 894a3292c1..e8f1835f5b 100644 --- a/src/livecodes/i18n/locales/ur/language-info.ts +++ b/src/livecodes/i18n/locales/ur/language-info.ts @@ -121,6 +121,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>سرکاری ویب سائٹ <3> <4>دستاویزات <5> <6>لائیو کوڈز دستاویزات ', name: 'ایٹا', }, + fanak: { + desc: 'Fanak ایک فنکشنل پروگرامنگ لینگویج ہے جو CIL (.NET) میں کمپائل ہوتی ہے۔ اس کا کمپائلر اور .NET WebAssembly رن ٹائم مکمل طور پر براؤزر میں چلتے ہیں، جو Fanak پروجیکٹ سے حاصل کیے جاتے ہیں، اس لیے پہلی بار چلانے پر رن ٹائم ڈاؤن لوڈ ہوتا ہے اور اس میں کچھ وقت لگ سکتا ہے۔', + link: '<1> <2>Fanak ریپو <3> <4>Fanak دستاویزات <5> <6>LiveCodes دستاویزی <7> <8>لوڈ اسٹارٹر ٹیمپلیٹ ', + name: 'Fanak', + }, fennel: { desc: 'فینل ایک پروگرامنگ زبان ہے جو لوا کی رفتار، سادگی اور پہنچ کو لسپ نحو اور میکرو سسٹم کی لچک کے ساتھ جمع کرتی ہے۔', link: '<1> <2>فینل کی سرکاری ویب سائٹ <3> <4>فینل کے ساتھ شروعات <5> <6>لائیو کوڈز دستاویزات <7> <8>ابتدائی سانچہ لوڈ کریں ', diff --git a/src/livecodes/i18n/locales/ur/translation.lokalise.json b/src/livecodes/i18n/locales/ur/translation.lokalise.json index e3c100f646..7480f23a61 100644 --- a/src/livecodes/i18n/locales/ur/translation.lokalise.json +++ b/src/livecodes/i18n/locales/ur/translation.lokalise.json @@ -1971,6 +1971,9 @@ "templates.starter.elm": { "translation": "ایلم شروعاتی" }, + "templates.starter.fanak": { + "translation": "Fanak شروعاتی" + }, "templates.starter.fennel": { "translation": "فینل شروعاتی" }, diff --git a/src/livecodes/i18n/locales/ur/translation.ts b/src/livecodes/i18n/locales/ur/translation.ts index de0e09e88a..7fa12626f2 100644 --- a/src/livecodes/i18n/locales/ur/translation.ts +++ b/src/livecodes/i18n/locales/ur/translation.ts @@ -996,6 +996,7 @@ const translation: I18nTranslation = { daisyui: 'daisyUI شروعاتی', diagrams: 'ڈایاگرامز شروعاتی', elm: 'ایلم شروعاتی', + fanak: 'Fanak شروعاتی', fennel: 'فینل شروعاتی', 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 21618b6c8f..d1cea57d39 100644 --- a/src/livecodes/i18n/locales/zh-CN/language-info.lokalise.json +++ b/src/livecodes/i18n/locales/zh-CN/language-info.lokalise.json @@ -207,6 +207,15 @@ "eta.name": { "translation": "Eta" }, + "fanak.desc": { + "translation": "Fanak 是一种编译为 CIL (.NET) 的函数式编程语言。其编译器和 .NET WebAssembly 运行时完全在浏览器中运行,并从 Fanak 项目获取,因此首次运行时会下载运行时,可能需要一些时间。" + }, + "fanak.link": { + "translation": " Fanak 仓库 Fanak 文档 LiveCodes 文档 加载入门模板 " + }, + "fanak.name": { + "translation": "Fanak" + }, "fennel.desc": { "translation": "Fennel 是一种编程语言,它结合了 Lua 的快速、简洁和广泛性以及 Lisp 语法和宏系统的灵活性。" }, diff --git a/src/livecodes/i18n/locales/zh-CN/language-info.ts b/src/livecodes/i18n/locales/zh-CN/language-info.ts index 5673a2f181..2f6e4bdcd3 100644 --- a/src/livecodes/i18n/locales/zh-CN/language-info.ts +++ b/src/livecodes/i18n/locales/zh-CN/language-info.ts @@ -119,6 +119,11 @@ const languageInfo: I18nLangInfoTranslation = { link: '<1><2>官方网站 <3> <4>文档 <5> <6>LiveCodes 文档 ', name: 'Eta', }, + fanak: { + desc: 'Fanak 是一种编译为 CIL (.NET) 的函数式编程语言。其编译器和 .NET WebAssembly 运行时完全在浏览器中运行,并从 Fanak 项目获取,因此首次运行时会下载运行时,可能需要一些时间。', + link: '<1> <2>Fanak 仓库 <3> <4>Fanak 文档 <5> <6>LiveCodes 文档 <7> <8>加载入门模板 ', + name: 'Fanak', + }, fennel: { desc: 'Fennel 是一种编程语言,它结合了 Lua 的快速、简洁和广泛性以及 Lisp 语法和宏系统的灵活性。', link: '<1> <2>Fennel 官方网站 <3> <4>Fennel 入门 <5> <6>LiveCodes 文档 <7> <8>加载启动模板 ', diff --git a/src/livecodes/i18n/locales/zh-CN/translation.lokalise.json b/src/livecodes/i18n/locales/zh-CN/translation.lokalise.json index 8baeaa45d1..1f9003607d 100644 --- a/src/livecodes/i18n/locales/zh-CN/translation.lokalise.json +++ b/src/livecodes/i18n/locales/zh-CN/translation.lokalise.json @@ -1971,6 +1971,9 @@ "templates.starter.elm": { "translation": "Elm 启动模板" }, + "templates.starter.fanak": { + "translation": "Fanak 启动模板" + }, "templates.starter.fennel": { "translation": "Fennel 启动模板" }, diff --git a/src/livecodes/i18n/locales/zh-CN/translation.ts b/src/livecodes/i18n/locales/zh-CN/translation.ts index c90e5e0ce6..5778e5ca5f 100644 --- a/src/livecodes/i18n/locales/zh-CN/translation.ts +++ b/src/livecodes/i18n/locales/zh-CN/translation.ts @@ -994,6 +994,7 @@ const translation: I18nTranslation = { daisyui: 'daisyUI 启动模板', diagrams: '图表启动模板', elm: 'Elm 启动模板', + fanak: 'Fanak 启动模板', fennel: 'Fennel 启动模板', fsharp: 'F# 启动模板', 'fsharp-wasm': 'F#(WASM)启动模板', diff --git a/src/livecodes/languages/fanak/index.ts b/src/livecodes/languages/fanak/index.ts new file mode 100644 index 0000000000..3d5b05e0c4 --- /dev/null +++ b/src/livecodes/languages/fanak/index.ts @@ -0,0 +1 @@ +export * from './lang-fanak'; diff --git a/src/livecodes/languages/fanak/lang-fanak-script.ts b/src/livecodes/languages/fanak/lang-fanak-script.ts new file mode 100644 index 0000000000..72816c348d --- /dev/null +++ b/src/livecodes/languages/fanak/lang-fanak-script.ts @@ -0,0 +1,206 @@ +import { getErrorMessage } from '../../utils'; +import { fanakBaseUrl } from '../../vendors'; + +declare const livecodes: any; + +declare global { + interface Window { + DotNet: any; + Blazor: { start: (options: any) => Promise }; + } +} + +livecodes.fanak ??= {}; +livecodes.fanak.ready = false; + +const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)); + +const waitFor = async (condition: () => boolean | Promise, timeout = 60_000) => { + const startTime = Date.now(); + while (!(await condition())) { + if (Date.now() - startTime > timeout) return false; + await sleep(100); + } + return true; +}; + +// The result runs in an iframe; post status updates to the app origin. Mirrors +// the other WASM language scripts (`haskell-wasm`). +const parentOrigin = + window.parent === window + ? window.location.origin + : window.location.ancestorOrigins?.[0] || + (() => { + if (!document.referrer) return '*'; + try { + return new URL(document.referrer).origin; + } catch { + // Ignore malformed referrers and use the wildcard fallback below. + return '*'; + } + })(); + +let activeRuns = 0; +const postLoading = (payload: boolean) => { + activeRuns += payload ? 1 : -1; + parent.postMessage({ type: 'loading', payload: activeRuns > 0 }, parentOrigin); // NOSONAR - fallback is safe with source/origin checks in the parent. +}; + +/** + * Only patches Blazor's fetches with `credentials: 'omit'`, so a cross-origin + * compiler URL does not send cookies (mirrors the C# (Wasm) integration). + */ +const patchFetch = () => { + const originalFetch = window.fetch; + window.fetch = (resource: string | Request | URL, init = {}) => { + const url = + typeof resource === 'string' + ? resource + : 'url' in resource // Request + ? resource.url + : resource.href; // URL + if (url.startsWith(fanakBaseUrl)) { + return originalFetch(resource, { ...init, credentials: 'omit' as RequestCredentials }); + } + return originalFetch(resource, init); + }; +}; + +const loadBlazorScript = () => + new Promise((resolve, reject) => { + const scriptSrc = `${fanakBaseUrl}_framework/blazor.webassembly.js`; + if (document.querySelector(`script[src="${scriptSrc}"]`)) { + resolve(); + return; + } + const script = document.createElement('script'); + script.src = scriptSrc; + script.setAttribute('autostart', 'false'); + script.onload = () => resolve(); + script.onerror = () => + reject(new Error(`Failed to load the Fanak compiler bundle from ${scriptSrc}`)); + document.head.appendChild(script); + }); + +const isReady = async () => { + if (!window.DotNet) return false; + try { + await window.DotNet.invokeMethodAsync('Fanak.Runner', 'RunCode', 'Unit main() { }', ''); + return true; + } catch { + return false; + } +}; + +livecodes.fanak.init ??= (async () => { + if (livecodes.fanak.ready) return; + + // eslint-disable-next-line no-console + console.log('Initializing Fanak environment...'); + postLoading(true); + try { + await loadBlazorScript(); + + if (!window.Blazor) { + throw new Error(`The Fanak compiler bundle at ${fanakBaseUrl} did not load`); + } + + patchFetch(); + await window.Blazor.start({ + loadBootResource: (_type: string, name: string) => `${fanakBaseUrl}_framework/${name}`, + }); + + if (!(await waitFor(isReady))) { + throw new Error(`Timed out waiting for the Fanak runner at ${fanakBaseUrl}`); + } + + // eslint-disable-next-line no-console + console.log('Fanak environment initialized successfully'); + } catch (err) { + livecodes.fanak.ready = false; + livecodes.fanak.failed = true; + livecodes.fanak.error = getErrorMessage(err); + // eslint-disable-next-line no-console + console.error('Failed to initialize Fanak environment:', err); + throw err; + } finally { + postLoading(false); + } +})(); + +const runFanakCode = async ( + code: string, + input = '', +): Promise<{ output: string | null; error: string | null }> => { + try { + await livecodes.fanak.init; + if (livecodes.fanak.failed) { + throw new Error(livecodes.fanak.error || 'Fanak runner failed to initialize'); + } + const { output, errors } = await window.DotNet.invokeMethodAsync( + 'Fanak.Runner', + 'RunCode', + code, + input, + ); + return { output: output ?? null, error: errors ?? null }; + } catch (err) { + return { output: null, error: 'Error: ' + getErrorMessage(err) }; + } +}; + +let runSequence = 0; + +livecodes.fanak.run ??= async (input?: string) => { + const runId = ++runSequence; + livecodes.fanak.input = input; + livecodes.fanak.output = null; + livecodes.fanak.ready = false; + + let code = ''; + document + .querySelectorAll('script[type="text/fanak"]') + .forEach((script) => (code += script.innerHTML + '\n')); + + const { output, error } = !code.trim() + ? { output: null, error: null } + : await runFanakCode(code, input); + + // A newer run started while this one was awaiting; keep the newer result. + if (runId !== runSequence) return { output: null, error: null, exitCode: 0 }; + + 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); + } + + livecodes.fanak.output = output; + livecodes.fanak.error = error; + livecodes.fanak.exitCode = error ? 1 : 0; + livecodes.fanak.ready = true; + return { output, error, exitCode: error ? 1 : 0 }; +}; + +livecodes.fanak.loaded = new Promise((resolve, reject) => { + const interval = setInterval(() => { + if (livecodes.fanak.failed) { + clearInterval(interval); + reject(new Error(livecodes.fanak.error || 'Failed to initialize the Fanak environment')); + } else if (livecodes.fanak.ready) { + clearInterval(interval); + resolve(); + } + }, 50); +}); + +window.addEventListener('load', async () => { + postLoading(true); + try { + await livecodes.fanak.run(livecodes.fanak.input); + } finally { + postLoading(false); + } +}); diff --git a/src/livecodes/languages/fanak/lang-fanak.ts b/src/livecodes/languages/fanak/lang-fanak.ts new file mode 100644 index 0000000000..a7011ab8dd --- /dev/null +++ b/src/livecodes/languages/fanak/lang-fanak.ts @@ -0,0 +1,43 @@ +import { codemirrorLegacy } from '../../editor/codemirror/utils'; +import type { LanguageSpecs } from '../../models'; +import { codeMirrorBaseUrl, fanakBaseUrl, fanakMonacoUrl } from '../../vendors'; + +export const fanak: LanguageSpecs = { + name: 'fanak', + title: 'Fanak', + compiler: { + // The compiler runs in a Blazor WASM runner that is fetched from + // `fanakBaseUrl` at run time (see lang-fanak-script.ts); LiveCodes just + // hands the source through and the runner reports output/errors. + factory: () => async (code) => code, + scripts: ({ baseUrl }) => [baseUrl + '{{hash:lang-fanak-script.js}}'], + scriptType: 'text/fanak', + compiledCodeLanguage: 'fanak', + liveReload: true, + }, + extensions: ['fnk', 'fanak'], + editor: 'script', + editorSupport: { + monaco: { + language: 'fanak', + languageSupport: async (monaco: any) => { + try { + // The Monaco module runs the Fanak compiler (served from + // `fanakBaseUrl`) in a hidden frame for formatting, diagnostics and + // compiler-backed symbols. Hand it the URL as an explicit option; + // without it the module falls back to its offline heuristics. + const module = await import(/* @vite-ignore */ fanakMonacoUrl); + await module.default?.(monaco, () => undefined, { baseUrl: fanakBaseUrl }); + } catch { + monaco.languages.register({ id: 'fanak' }); + } + }, + }, + codemirror: { + languageSupport: async () => + codemirrorLegacy((await import(codeMirrorBaseUrl + 'codemirror-lang-clike.js')).csharp), + }, + codejar: { language: 'csharp' }, + }, + largeDownload: true, +}; diff --git a/src/livecodes/languages/languages.ts b/src/livecodes/languages/languages.ts index c065a0b354..3fe75db640 100644 --- a/src/livecodes/languages/languages.ts +++ b/src/livecodes/languages/languages.ts @@ -21,6 +21,7 @@ import { dot } from './dot'; import { ejs } from './ejs'; import { elm } from './elm'; import { eta } from './eta'; +import { fanak } from './fanak'; import { fennel } from './fennel'; import { flow } from './flow'; import { fsharp } from './fsharp'; @@ -172,6 +173,7 @@ export const languages: LanguageSpecs[] = [ vbWasm, fsharp, fsharpWasm, + fanak, haskell, haskellWasm, scheme, diff --git a/src/livecodes/models.ts b/src/livecodes/models.ts index 97e897d66c..123d42e961 100644 --- a/src/livecodes/models.ts +++ b/src/livecodes/models.ts @@ -205,6 +205,7 @@ export interface Compiler { | 'text/zig-wasm' | 'text/java' | 'text/csharp-wasm' + | 'text/fanak' | 'text/vb-wasm' | 'text/fsharp-wasm' | 'text/perl' diff --git a/src/livecodes/templates/starter/fanak-starter.ts b/src/livecodes/templates/starter/fanak-starter.ts new file mode 100644 index 0000000000..2945527cf2 --- /dev/null +++ b/src/livecodes/templates/starter/fanak-starter.ts @@ -0,0 +1,56 @@ +import type { Template } from '../../models'; + +export const fanakStarter: Template = { + name: 'fanak', + title: window.deps.translateString('templates.starter.fanak', 'Fanak Starter'), + thumbnail: 'assets/templates/fanak.png', + activeEditor: 'script', + markup: { + language: 'html', + content: ` +
    +

    Fanak

    +
    Loading...
    +
    + + +`.trimStart(), + }, + style: { + language: 'css', + content: ` +.container { + font: 1em sans-serif; +} +#output { + background: #f4f4f4; + padding: 1em; + border-radius: 4px; +} +`.trimStart(), + }, + script: { + language: 'fanak', + content: ` +Unit main() { + runUnit(println("Hello, Fanak!")); + int answer = 6 * 7; + runUnit(println(answer)); +} +`.trimStart(), + }, +}; diff --git a/src/livecodes/templates/starter/index.ts b/src/livecodes/templates/starter/index.ts index fb6ac41bf8..337647f173 100644 --- a/src/livecodes/templates/starter/index.ts +++ b/src/livecodes/templates/starter/index.ts @@ -20,6 +20,7 @@ import { d3Starter } from './d3-starter'; import { daisyuiStarter } from './daisyui-starter'; import { diagramsStarter } from './diagrams-starter'; import { elmStarter } from './elm-starter'; +import { fanakStarter } from './fanak-starter'; import { fennelStarter } from './fennel-starter'; import { fsharpStarter } from './fsharp-starter'; import { fsharpWasmStarter } from './fsharp-wasm-starter'; @@ -140,6 +141,7 @@ export const starterTemplates = [ vbWasmStarter, fsharpStarter, fsharpWasmStarter, + fanakStarter, haskellStarter, haskellWasmStarter, schemeStarter, diff --git a/src/livecodes/vendors.ts b/src/livecodes/vendors.ts index ab2e3163d5..957178bd10 100644 --- a/src/livecodes/vendors.ts +++ b/src/livecodes/vendors.ts @@ -146,6 +146,10 @@ export const esModuleShimsPath = 'es-module-shims@1.10.0/dist/es-module-shims.js export const etaUrl = /* @__PURE__ */ getUrl('eta@3.4.0/dist/eta.umd.js'); +export const fanakBaseUrl = 'https://ahmedwael216.gitlab.io/fanak/runner/latest/'; + +export const fanakMonacoUrl = 'https://ahmedwael216.gitlab.io/fanak/monaco/fanak.js'; + export const fflateUrl = /* @__PURE__ */ getUrl('fflate@0.8.1/esm/browser.js'); export const flexSearchUrl = /* @__PURE__ */ getUrl('flexsearch@0.7.21/dist/flexsearch.bundle.js'); diff --git a/src/sdk/models.ts b/src/sdk/models.ts index c67357382b..fed81a4453 100644 --- a/src/sdk/models.ts +++ b/src/sdk/models.ts @@ -213,6 +213,8 @@ export type Language = | 'fs-wasm' | 'wasm.fs' | 'wasm.fsx' + | 'fanak' + | 'fnk' | 'rust' | 'rs' | 'rust-wasm' @@ -453,6 +455,7 @@ export type TemplateName = | 'vb-wasm' | 'fsharp' | 'fsharp-wasm' + | 'fanak' | 'rust-wasm' | 'swift-wasm' | 'zig-wasm' @@ -856,6 +859,7 @@ export type CustomSettings = Partial< | 'text/objcpp-wasm' | 'text/java' | 'text/csharp-wasm' + | 'text/fanak' | 'text/vb-wasm' | 'text/perl' | 'text/julia' diff --git a/vendor-licenses.md b/vendor-licenses.md index 9f69e8528a..6bea72150a 100644 --- a/vendor-licenses.md +++ b/vendor-licenses.md @@ -86,6 +86,8 @@ Fable: [MIT License](https://github.com/fable-compiler/Fable/blob/67e8540a211832 F#: [MIT License](https://github.com/dotnet/fsharp/blob/df0e60991911eed31f861bb38403a389346055e2/License.txt) +Fanak: [Apache License 2.0](https://gitlab.com/AhmedWael216/fanak/-/blob/main/LICENSE) + .NET runtime: [MIT License](https://github.com/dotnet/runtime/blob/20f7be9ec07eafd5b756df30de33a9452c9e1c14/LICENSE.TXT) fengari-web: [MIT License](https://github.com/fengari-lua/fengari-web/blob/77d35f5e1516f431cbb96e165b4272f2fc9b0b3a/LICENSE)