Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
78a201c
Docs: DOC-3243 - Directionality of Hebrew was incorrect (#4032)
kemister85 Mar 24, 2026
fd06c12
DOC-3243: New view_show option to display a specified view on initial…
kemister85 Mar 24, 2026
6198828
DOC-3243: Bundled content CSS is now loaded into preview iframes (#4014)
kemister85 Mar 25, 2026
69745dc
Docs: DOC-3243 - New argument fullpagehtml to editor.getContent() and…
kemister85 Mar 26, 2026
568da5e
DOC-3243: Pasting an HTML document was vulnerable to XSS attacks on l…
kemister85 Mar 26, 2026
5a76d84
Docs: DOC-3243 - SVG images can now be uploaded. (#4029)
kemister85 Mar 26, 2026
5ec510e
DOC-3243: Errors when creating new comments made the save button stuc…
kemister85 Mar 26, 2026
532c8c3
Docs: DOC-3243 - Document view rendering to reduce flickering when lo…
kemister85 Mar 26, 2026
70558e0
Docs: DOC-3243 - The noneditable feature can now be disabled with the…
kemister85 Mar 26, 2026
45b2f8c
DOC-3243: Replaced deprecated browser APIs with modern equivalents. (…
kemister85 Mar 26, 2026
e52df22
DOC-3243: Add new exportpdf v2 converter documentation. (#4005)
kemister85 Mar 26, 2026
6817238
DOC-3243: Certain deletion keyboard events in lists could not be prev…
kemister85 Mar 26, 2026
e63bfb0
DOC-3243: Attempting to remove a link after a `contentEditable="false…
kemister85 Mar 26, 2026
7d629b2
DOC-3243: Add table_default_header_rows and table_default_header_cols…
kemister85 Mar 26, 2026
16d6aa6
TINY-13420: Add both release note entries (Improvements and Additions…
kemister85 Mar 26, 2026
5368edc
Docs: DOC-3243 - The border-color style with multiple rgb colors woul…
kemister85 Mar 26, 2026
29f3e6a
DOC-3243 - Dropdown menus with `matchWidth: true` would be located to…
kemister85 Mar 26, 2026
0f437a7
Docs: DOC-3243 - Toolbars incorrectly had the role "group" instead of…
kemister85 Mar 26, 2026
016dfc7
Docs: DOC-3243 - Users with an `id` that includes `@` weren't parsed …
kemister85 Mar 26, 2026
d1578a8
Docs: DOC-3243 - Third-party library icons appear in formats when usi…
kemister85 Mar 26, 2026
e93b034
Docs: DOC-3243 - Setting width via Table Properties did not apply whe…
kemister85 Mar 26, 2026
c11eba5
DOC-3243: Directionality buttons now always apply to blocks and only …
kemister85 Mar 26, 2026
3a26cec
DOC-3243: Cancel button would always focus when the view opened, even…
kemister85 Mar 26, 2026
ddda59e
Docs: DOC-3243 - Toggling lists cause selection issues (#4023)
kemister85 Mar 26, 2026
f312d06
Docs: DOC-3243 - Now `link` dialog allows uploading empty files (#4022)
kemister85 Mar 26, 2026
a038409
Docs: DOC-3243 - Toolbar button was not initialized when used with th…
kemister85 Mar 26, 2026
ad4cf8a
Docs: DOC-3243 - Some formatting was not applied to items in multilev…
kemister85 Mar 26, 2026
5ad863f
DOC-3243: Dialogs did not retain focus when using the block/unblock A…
kemister85 Mar 26, 2026
e78a1c7
DOC-3243: Add 8.4.0 entries to Community changelog
kemister85 Mar 30, 2026
e7e2fc5
DOC-3243: Update TinyMCE 8.4 release and Premium Support end dates
kemister85 Mar 30, 2026
263e789
DOC-3356: New feature documentation for `tinymceai`. (#3976)
kemister85 Mar 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion -scripts/README-llm-files.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ The files are generated in `modules/ROOT/attachments/`:

**Post-build:** Files are moved to the root directory (handled in separate PR) and accessible at:
- `https://www.tiny.cloud/docs/tinymce/latest/llms.txt`
- `https://www.tiny.cloud/docs/tinymce/latest/llms-full.txt`
- `https://www.tiny.cloud/docs/llms-full.txt`

## How It Works

Expand Down
3 changes: 2 additions & 1 deletion -scripts/generate-llm-files.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ const http = require('http');
const sanitizeHtml = require('sanitize-html');

const BASE_URL = 'https://www.tiny.cloud/docs/tinymce/latest';
const DOCS_ROOT_URL = 'https://www.tiny.cloud/docs';
const OUTPUT_DIR = path.join(__dirname, '../modules/ROOT/attachments');

// Fetch sitemap from URL or file
Expand Down Expand Up @@ -1187,7 +1188,7 @@ function App() {
## Complete Documentation
For a complete list of all ${urls.length} documentation pages, see [llms-full.txt](${BASE_URL}/llms-full.txt).
For a complete list of all ${urls.length} documentation pages, see [llms-full.txt](${DOCS_ROOT_URL}/llms-full.txt).
`;
}
Expand Down
8 changes: 5 additions & 3 deletions antora.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ asciidoc:
companyurl: https://www.tiny.cloud
cdnurl: https://cdn.tiny.cloud/1/no-api-key/tinymce/8/tinymce.min.js
tdcdnurl: https://cdn.tiny.cloud/1/_your_api_key_/tinydrive/8/tinydrive.min.js
tinymce_live_demo_url: https://cdn.tiny.cloud/1/qagffr3pkuv17a8on1afax661irst1hbr4e6tbv888sz91jc/tinymce/8/tinymce.min.js
tinymce_live_demo_url: https://cdn.tiny.cloud/1/qagffr3pkuv17a8on1afax661irst1hbr4e6tbv888sz91jc/tinymce/8-testing/tinymce.min.js
tinydrive_live_demo_url: https://cdn.tiny.cloud/1/qagffr3pkuv17a8on1afax661irst1hbr4e6tbv888sz91jc/tinydrive/8/tinydrive.min.js
webcomponent_url: https://cdn.jsdelivr.net/npm/@tinymce/tinymce-webcomponent/dist/tinymce-webcomponent.min.js
jquery_url: https://cdn.jsdelivr.net/npm/@tinymce/tinymce-jquery@2/dist/tinymce-jquery.min.js
Expand All @@ -22,11 +22,13 @@ asciidoc:
dockerimageexporttopdf: registry.containers.tiny.cloud/pdf-converter-tiny
dockerimageexporttopdfwindows: registry.containers.tiny.cloud/pdf-converter-windows-tiny
# document converter placeholder variables
exportpdf_service_url: exportpdf_service_url placeholder
exportpdf_service_url: exportpdf_service_url placeholder
# TinyMCE AI demo API key
tinymceai_demo_api_key: qagffr3pkuv17a8on1afax661irst1hbr4e6tbv888sz91jc
# product variables
productname: TinyMCE
productmajorversion: 8
productminorversion: '8.3'
productminorversion: '8.4'
##### product name in codeblock
prodnamecode: tinymce
#### more names
Expand Down
2 changes: 1 addition & 1 deletion modules/ROOT/attachments/llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -101,5 +101,5 @@ function App() {

## Complete Documentation

For a complete list of all 395 documentation pages, see [llms-full.txt](https://www.tiny.cloud/docs/tinymce/latest/llms-full.txt).
For a complete list of all 395 documentation pages, see [llms-full.txt](https://www.tiny.cloud/docs/llms-full.txt).

12 changes: 6 additions & 6 deletions modules/ROOT/examples/live-demos/custom-view/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ tinymce.init({
text: 'Save code',
buttonType: 'primary',
onAction: () => {
const codeContent = document.querySelector('.tox-view__pane_panel').value;
const codeContent = document.querySelector('.my-textarea').value;
ed.setContent(codeContent);
ed.execCommand('ToggleView', false, 'code');
console.log('save');
Expand All @@ -28,12 +28,12 @@ tinymce.init({
],
onShow: (api) => {
const editorContent = ed.getContent();
api.getContainer().innerHTML = `
const container = api.getContainer();
container.innerHTML = `
<div style="height: 100%">
<textarea class="tox-view__pane_panel" style="width: 100%; height: 100%; resize: none; padding: 0.5em">
${editorContent}
</textarea>
</div>`.replace(/\s+/g, '');
<textarea class="my-textarea" style="width: 100%; height: 100%; resize: none; padding: 0.5em"></textarea>
</div>`;
container.querySelector('.my-textarea').value = editorContent;
},
onHide: (api) => {
console.log('Deactivate code', api.getContainer());
Expand Down
78 changes: 78 additions & 0 deletions modules/ROOT/examples/live-demos/exportpdf-v2/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
<textarea id="exportpdf-v2">
<h1>Streamline - The Next-Gen Learning Management System (LMS)</h1>
<p>This document provides a comprehensive overview of the Streamline Learning Management System (LMS) project.</p>

<figure class="image">
<img src="https://images.unsplash.com/photo-1522199755839-a2bacb67c546?q=80&amp;w=2072&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.0.3&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
alt="A laptop on a polished wood table with a bronze cup, creating a warm workspace ambiance" width="573" height="429">
<figcaption>An elegant workspace featuring a laptop on a polished wood table, accompanied by a bronze cup, creating a warm and productive atmosphere.</figcaption>
</figure>

<p>Photo by <a href="https://unsplash.com/@anete_lusina">Anete Lūsiņa</a> on <a href="https://unsplash.com">Unsplash</a></p>

<h2>Project Goals</h2>
<p>Streamline aims to revolutionize online learning by offering a robust and user-friendly platform for educators and learners. The primary goals include:</p>
<ul>
<li><strong>Empowering educators</strong> with intuitive tools for content creation, course management, and student assessment.</li>
<li><strong>Enhancing the learning experience for students</strong> through engaging content delivery, interactive features, and personalized learning paths.</li>
<li><strong>Increasing accessibility and scalability</strong> to cater to diverse learning needs and support a growing user base.</li>
</ul>

<h2>System Features</h2>
<p>Streamline is designed to enrich the learning process through a comprehensive set of features:</p>
<ul>
<li><strong>Content Management System (CMS)</strong>: An intuitive interface enabling educators to create and upload various learning materials, including videos, documents, presentations, and quizzes.</li>
<li><strong>Course Management Tools</strong>: Structure courses with clear objectives, organize content modules, and manage student enrollments effectively.</li>
<li><strong>Interactive Learning Activities</strong>: Includes gamification, discussion forums, collaborative assignments, and more to maintain student engagement.</li>
<li><strong>Assessment & Analytics</strong>: Tools for creating quizzes, tracking student progress, generating reports, and identifying improvement areas.</li>
<li><strong>Personalized Learning Paths</strong>: Machine learning algorithms provide tailored content recommendations based on student progress and needs.</li>
</ul>

<h3>Table 1: Streamline - Target User Groups</h3>
<table style="border-collapse: collapse; width: 100%;" border="1">
<thead>
<tr>
<th style="text-align: left;">User Group</th>
<th style="text-align: left;">Benefits</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Educators</strong></td>
<td>Easy content creation, efficient course management, and valuable student insights.</td>
</tr>
<tr>
<td><strong>Learners</strong></td>
<td>Engaging learning experience, personalized learning paths, and interactive collaboration.</td>
</tr>
<tr>
<td><strong>Administrators</strong></td>
<td>Scalable platform management, user access control, and comprehensive reporting tools.</td>
</tr>
</tbody>
</table>

<h2>Technology Stack</h2>
<p>Streamline will leverage a robust technology stack to ensure performance, scalability, and security:</p>
<ul>
<li><strong>Front-End</strong>: ReactJS for a responsive and user-friendly interface.</li>
<li><strong>Back-End</strong>: Node.js for efficient server-side operations.</li>
<li><strong>Database</strong>: MongoDB for flexible and scalable data storage.</li>
<li><strong>Cloud Platform</strong>: Amazon Web Services (AWS) for reliable hosting and infrastructure.</li>
</ul>

<h2>Project Timeline</h2>
<ul>
<li><strong>Phase 1 (2 Months)</strong>: System design, core functionalities development, and front-end prototype creation.</li>
<li><strong>Phase 2 (3 Months)</strong>: Integration of advanced features like personalized learning and assessment tools.</li>
<li><strong>Phase 3 (1 Month)</strong>: Rigorous testing, bug fixing, and UI refinement.</li>
<li><strong>Phase 4 (Ongoing)</strong>: Deployment, user feedback collection, and continuous iterative development.</li>
</ul>

<blockquote>
<p><em>This timeline is preliminary and may be subject to change.</em></p>
</blockquote>

<h2>Conclusion</h2>
<p>Streamline LMS is poised to become a game-changer in online education. By empowering educators and enhancing student experiences, it aims to make effective and accessible learning available to all.</p>
</textarea>
31 changes: 31 additions & 0 deletions modules/ROOT/examples/live-demos/exportpdf-v2/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
tinymce.init({
selector: 'textarea#exportpdf-v2',
height: '800px',
plugins: [
"exportpdf", "advlist", "anchor", "autolink", "charmap", "code", "codesample", "fullscreen",
"help", "image", "insertdatetime", "link", "lists", "media",
"preview", "searchreplace", "table", "visualblocks",
],
toolbar: "undo redo | exportpdf | styles | bold italic underline strikethrough | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image",
image_caption: true,
exportpdf_converter_options: {
version: '2',
document: {
size: 'A4',
orientation: 'portrait',
margins: {
top: '1in',
right: '1in',
bottom: '1in',
left: '1in',
enable_mirror_margins: true
}
},
metadata: {
title: 'Streamline LMS Overview',
author: 'TinyMCE',
subject: 'Learning Management System',
keywords: [ 'LMS', 'education', 'Streamline' ]
}
}
});
92 changes: 89 additions & 3 deletions modules/ROOT/examples/live-demos/exportpdf/index.html
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
<textarea id="exportpdf">
<div style="display: flex; gap: 20px; width: 100%;">
<div style="flex: 1; min-width: 0;">
<h2>Flat format (backwards compatible)</h2>
<textarea class="exportpdf-flat" style="width: 100%;">
<h1>Streamline - The Next-Gen Learning Management System (LMS)</h1>
<p>This document provides a comprehensive overview of the Streamline Learning Management System (LMS) project.</p>

<figure class="image">
<img src="https://images.unsplash.com/photo-1522199755839-a2bacb67c546?q=80&amp;w=2072&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.0.3&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
alt="A laptop on a polished wood table with a bronze cup, creating a warm workspace ambiance" width="573" height="429">
alt="A laptop on a polished wood table with a bronze cup, creating a warm workspace ambiance" style="width: 100%; height: auto;">
<figcaption>An elegant workspace featuring a laptop on a polished wood table, accompanied by a bronze cup, creating a warm and productive atmosphere.</figcaption>
</figure>

Expand Down Expand Up @@ -75,4 +78,87 @@ <h2>Project Timeline</h2>

<h2>Conclusion</h2>
<p>Streamline LMS is poised to become a game-changer in online education. By empowering educators and enhancing student experiences, it aims to make effective and accessible learning available to all.</p>
</textarea>
</textarea>
</div>
<div style="flex: 1; min-width: 0;">
<h2>Nested format (v2)</h2>
<textarea class="exportpdf-nested" style="width: 100%;">
<h1>Streamline - The Next-Gen Learning Management System (LMS)</h1>
<p>This document provides a comprehensive overview of the Streamline Learning Management System (LMS) project.</p>

<figure class="image">
<img src="https://images.unsplash.com/photo-1522199755839-a2bacb67c546?q=80&amp;w=2072&amp;auto=format&amp;fit=crop&amp;ixlib=rb-4.0.3&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
alt="A laptop on a polished wood table with a bronze cup, creating a warm workspace ambiance" style="width: 100%; height: auto;">
<figcaption>An elegant workspace featuring a laptop on a polished wood table, accompanied by a bronze cup, creating a warm and productive atmosphere.</figcaption>
</figure>

<p>Photo by <a href="https://unsplash.com/@anete_lusina">Anete Lūsiņa</a> on <a href="https://unsplash.com">Unsplash</a></p>

<h2>Project Goals</h2>
<p>Streamline aims to revolutionize online learning by offering a robust and user-friendly platform for educators and learners. The primary goals include:</p>
<ul>
<li><strong>Empowering educators</strong> with intuitive tools for content creation, course management, and student assessment.</li>
<li><strong>Enhancing the learning experience for students</strong> through engaging content delivery, interactive features, and personalized learning paths.</li>
<li><strong>Increasing accessibility and scalability</strong> to cater to diverse learning needs and support a growing user base.</li>
</ul>

<h2>System Features</h2>
<p>Streamline is designed to enrich the learning process through a comprehensive set of features:</p>
<ul>
<li><strong>Content Management System (CMS)</strong>: An intuitive interface enabling educators to create and upload various learning materials, including videos, documents, presentations, and quizzes.</li>
<li><strong>Course Management Tools</strong>: Structure courses with clear objectives, organize content modules, and manage student enrollments effectively.</li>
<li><strong>Interactive Learning Activities</strong>: Includes gamification, discussion forums, collaborative assignments, and more to maintain student engagement.</li>
<li><strong>Assessment & Analytics</strong>: Tools for creating quizzes, tracking student progress, generating reports, and identifying improvement areas.</li>
<li><strong>Personalized Learning Paths</strong>: Machine learning algorithms provide tailored content recommendations based on student progress and needs.</li>
</ul>

<h3>Table 1: Streamline - Target User Groups</h3>
<table style="border-collapse: collapse; width: 100%;" border="1">
<thead>
<tr>
<th style="text-align: left;">User Group</th>
<th style="text-align: left;">Benefits</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Educators</strong></td>
<td>Easy content creation, efficient course management, and valuable student insights.</td>
</tr>
<tr>
<td><strong>Learners</strong></td>
<td>Engaging learning experience, personalized learning paths, and interactive collaboration.</td>
</tr>
<tr>
<td><strong>Administrators</strong></td>
<td>Scalable platform management, user access control, and comprehensive reporting tools.</td>
</tr>
</tbody>
</table>

<h2>Technology Stack</h2>
<p>Streamline will leverage a robust technology stack to ensure performance, scalability, and security:</p>
<ul>
<li><strong>Front-End</strong>: ReactJS for a responsive and user-friendly interface.</li>
<li><strong>Back-End</strong>: Node.js for efficient server-side operations.</li>
<li><strong>Database</strong>: MongoDB for flexible and scalable data storage.</li>
<li><strong>Cloud Platform</strong>: Amazon Web Services (AWS) for reliable hosting and infrastructure.</li>
</ul>

<h2>Project Timeline</h2>
<ul>
<li><strong>Phase 1 (2 Months)</strong>: System design, core functionalities development, and front-end prototype creation.</li>
<li><strong>Phase 2 (3 Months)</strong>: Integration of advanced features like personalized learning and assessment tools.</li>
<li><strong>Phase 3 (1 Month)</strong>: Rigorous testing, bug fixing, and UI refinement.</li>
<li><strong>Phase 4 (Ongoing)</strong>: Deployment, user feedback collection, and continuous iterative development.</li>
</ul>

<blockquote>
<p><em>This timeline is preliminary and may be subject to change.</em></p>
</blockquote>

<h2>Conclusion</h2>
<p>Streamline LMS is poised to become a game-changer in online education. By empowering educators and enhancing student experiences, it aims to make effective and accessible learning available to all.</p>
</textarea>
</div>
</div>
34 changes: 33 additions & 1 deletion modules/ROOT/examples/live-demos/exportpdf/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
tinymce.init({
selector: 'textarea#exportpdf',
selector: 'textarea.exportpdf-flat',
height: '800px',
plugins: [
"exportpdf", "advlist", "anchor", "autolink", "charmap", "code", "codesample", "fullscreen",
Expand All @@ -16,3 +16,35 @@ tinymce.init({
margin_left: '1in'
}
});

tinymce.init({
selector: 'textarea.exportpdf-nested',
height: '800px',
plugins: [
"exportpdf", "advlist", "anchor", "autolink", "charmap", "code", "codesample", "fullscreen",
"help", "image", "insertdatetime", "link", "lists", "media",
"preview", "searchreplace", "table", "visualblocks",
],
toolbar: "undo redo | exportpdf | styles | bold italic underline strikethrough | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image",
image_caption: true,
exportpdf_converter_options: {
version: '2',
document: {
size: 'A4',
orientation: 'portrait',
margins: {
top: '1in',
right: '1in',
bottom: '1in',
left: '1in',
enable_mirror_margins: true
}
},
metadata: {
title: 'Streamline LMS Overview',
author: 'TinyMCE',
subject: 'Learning Management System',
keywords: [ 'LMS', 'education', 'Streamline' ]
}
}
});
51 changes: 51 additions & 0 deletions modules/ROOT/examples/live-demos/tinymceai-actions/example.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
// Step 1: Set up session - this should be part of the application's user management process.
// Open-source plugins below are only for editing the demo HTML (lists, links, tables). TinyMCE AI options are the focus.
tinymce.init({
selector: 'textarea#tinymceai-actions',
height: '800px',
plugins: ['tinymceai', 'advlist', 'lists', 'link', 'autolink', 'table', 'wordcount'],
toolbar: 'undo redo | tinymceai-chat tinymceai-review tinymceai-quickactions | styles | bold italic underline strikethrough | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link',
sidebar_show: 'tinymceai-chat',
tinymceai_token_provider: async () => {
return fetch('/api/tinymceai-token', { credentials: 'include' })
.then(resp => resp.text())
.then(token => ({ token }));
},
tinymceai_chat_fetch_sources: () => Promise.resolve([{
label: 'TinyMCE resources',
sources: [
{ id: 'docs', label: 'TinyMCE Documentation', type: 'web-resource' },
{ id: 'blog', label: 'Tiny Blog', type: 'web-resource' },
{ id: 'survey-2023', label: 'State of rich text editing 2023', type: 'web-resource' },
]
}]),
tinymceai_chat_fetch_source: (id) => {
const urls = {
'docs': 'https://www.tiny.cloud/docs/tinymce/latest/',
'blog': 'https://www.tiny.cloud/blog/',
'survey-2023': 'https://www.tiny.cloud/developer-survey-results-2023/',
};
return Promise.resolve({ type: 'web-resource', url: urls[id] });
},
tinymceai_quickactions_custom: [
{
type: 'chat',
title: 'Challenge',
prompt: 'Challenge statements, verify facts and identify assumptions'
}
],
tinymceai_languages: [
{ title: 'English', language: 'english' },
{ title: 'Chinese (Simplified)', language: 'chinese' },
{ title: 'Spanish', language: 'spanish' },
{ title: 'German', language: 'german' },
{ title: 'Japanese', language: 'japanese' },
{ title: 'Portuguese', language: 'portuguese' },
{ title: 'Swedish', language: 'swedish' },
{ title: 'Korean', language: 'korean' },
{ title: 'Hindi (Devanagari)', language: 'hindi devanagari' },
{ title: 'Italian', language: 'italian' },
{ title: 'Klingon', language: 'klingon' },
{ title: 'Dothraki', language: 'dothraki' },
]
});
Loading
Loading