nixamp 0.27.3 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/backtoschool/dist/assets/ar-DK3LI2hP.js +1 -0
  2. package/backtoschool/dist/assets/cs-C9cckHFh.js +1 -0
  3. package/backtoschool/dist/assets/da-BpNIZAZo.js +1 -0
  4. package/backtoschool/dist/assets/de-C1DX_kDk.js +1 -0
  5. package/backtoschool/dist/assets/es-bymdOEnB.js +1 -0
  6. package/backtoschool/dist/assets/fi-p1DAJXf3.js +1 -0
  7. package/backtoschool/dist/assets/fr-w1qH9bbD.js +1 -0
  8. package/backtoschool/dist/assets/hi-DnZJakpY.js +1 -0
  9. package/backtoschool/dist/assets/hu-N7uSyLAk.js +1 -0
  10. package/backtoschool/dist/assets/id-CX3MVU3E.js +1 -0
  11. package/backtoschool/dist/assets/index-4LdMSur6.js +93 -0
  12. package/backtoschool/dist/assets/{index-Bot4FEXQ.css → index-D06NfY1L.css} +1 -1
  13. package/backtoschool/dist/assets/it-CQ0H28FI.js +1 -0
  14. package/backtoschool/dist/assets/nl-DJqCLHMq.js +1 -0
  15. package/backtoschool/dist/assets/ru-Rk2yagke.js +1 -0
  16. package/backtoschool/dist/assets/sv-1r9eOl4-.js +1 -0
  17. package/backtoschool/dist/assets/uk-CrRsLNHV.js +1 -0
  18. package/backtoschool/dist/assets/vi-B5kxrjP7.js +1 -0
  19. package/backtoschool/dist/assets/zh-BB_S8QpG.js +1 -0
  20. package/backtoschool/dist/index.html +44 -43
  21. package/dist/admin.js +5 -4
  22. package/dist/i18n.d.ts +26 -0
  23. package/dist/i18n.js +81 -0
  24. package/dist/locales/ar.d.ts +201 -0
  25. package/dist/locales/ar.js +200 -0
  26. package/dist/locales/cs.d.ts +201 -0
  27. package/dist/locales/cs.js +200 -0
  28. package/dist/locales/da.d.ts +201 -0
  29. package/dist/locales/da.js +200 -0
  30. package/dist/locales/de.d.ts +201 -0
  31. package/dist/locales/de.js +200 -0
  32. package/dist/locales/en.d.ts +201 -0
  33. package/dist/locales/en.js +201 -0
  34. package/dist/locales/es.d.ts +201 -0
  35. package/dist/locales/es.js +200 -0
  36. package/dist/locales/fi.d.ts +201 -0
  37. package/dist/locales/fi.js +200 -0
  38. package/dist/locales/fr.d.ts +201 -0
  39. package/dist/locales/fr.js +200 -0
  40. package/dist/locales/hi.d.ts +201 -0
  41. package/dist/locales/hi.js +200 -0
  42. package/dist/locales/hu.d.ts +201 -0
  43. package/dist/locales/hu.js +200 -0
  44. package/dist/locales/id.d.ts +201 -0
  45. package/dist/locales/id.js +200 -0
  46. package/dist/locales/it.d.ts +201 -0
  47. package/dist/locales/it.js +200 -0
  48. package/dist/locales/nl.d.ts +201 -0
  49. package/dist/locales/nl.js +200 -0
  50. package/dist/locales/ru.d.ts +201 -0
  51. package/dist/locales/ru.js +200 -0
  52. package/dist/locales/sv.d.ts +201 -0
  53. package/dist/locales/sv.js +200 -0
  54. package/dist/locales/uk.d.ts +201 -0
  55. package/dist/locales/uk.js +200 -0
  56. package/dist/locales/vi.d.ts +201 -0
  57. package/dist/locales/vi.js +200 -0
  58. package/dist/locales/zh.d.ts +201 -0
  59. package/dist/locales/zh.js +200 -0
  60. package/dist/main.js +26 -12
  61. package/dist/ui-aliases.d.ts +4 -0
  62. package/dist/ui-aliases.js +41 -0
  63. package/dist/ui-languages.d.ts +62 -0
  64. package/dist/ui-languages.js +32 -0
  65. package/package.json +1 -1
  66. package/src/admin.ts +5 -4
  67. package/src/i18n.ts +74 -0
  68. package/src/locales/ar.ts +201 -0
  69. package/src/locales/cs.ts +201 -0
  70. package/src/locales/da.ts +201 -0
  71. package/src/locales/de.ts +201 -0
  72. package/src/locales/en.ts +201 -0
  73. package/src/locales/es.ts +201 -0
  74. package/src/locales/fi.ts +201 -0
  75. package/src/locales/fr.ts +201 -0
  76. package/src/locales/hi.ts +201 -0
  77. package/src/locales/hu.ts +201 -0
  78. package/src/locales/id.ts +201 -0
  79. package/src/locales/it.ts +201 -0
  80. package/src/locales/nl.ts +201 -0
  81. package/src/locales/ru.ts +201 -0
  82. package/src/locales/sv.ts +201 -0
  83. package/src/locales/uk.ts +201 -0
  84. package/src/locales/vi.ts +201 -0
  85. package/src/locales/zh.ts +201 -0
  86. package/src/main.ts +25 -12
  87. package/src/ui-aliases.ts +42 -0
  88. package/src/ui-languages.ts +31 -0
  89. package/web/dist/assets/ar-DK3LI2hP.js +1 -0
  90. package/web/dist/assets/cs-C9cckHFh.js +1 -0
  91. package/web/dist/assets/da-BpNIZAZo.js +1 -0
  92. package/web/dist/assets/de-C1DX_kDk.js +1 -0
  93. package/web/dist/assets/es-bymdOEnB.js +1 -0
  94. package/web/dist/assets/fi-p1DAJXf3.js +1 -0
  95. package/web/dist/assets/fr-w1qH9bbD.js +1 -0
  96. package/web/dist/assets/hi-DnZJakpY.js +1 -0
  97. package/web/dist/assets/{hls-3VKVEQE3-_BiJh76x.js → hls-3VKVEQE3-DURNoQ5W.js} +1 -1
  98. package/web/dist/assets/hu-N7uSyLAk.js +1 -0
  99. package/web/dist/assets/id-CX3MVU3E.js +1 -0
  100. package/web/dist/assets/index-BXJlt2r6.js +3 -0
  101. package/web/dist/assets/index-Brm9OAsr.css +1 -0
  102. package/web/dist/assets/it-CQ0H28FI.js +1 -0
  103. package/web/dist/assets/{mpegts-CV0glck7.js → mpegts-BdyqUrVC.js} +1 -1
  104. package/web/dist/assets/{mpegts-LO6RVLD6-iuTMg-O6.js → mpegts-LO6RVLD6-yGogIzG9.js} +1 -1
  105. package/web/dist/assets/nl-DJqCLHMq.js +1 -0
  106. package/web/dist/assets/ru-Rk2yagke.js +1 -0
  107. package/web/dist/assets/sv-1r9eOl4-.js +1 -0
  108. package/web/dist/assets/uk-CrRsLNHV.js +1 -0
  109. package/web/dist/assets/vi-B5kxrjP7.js +1 -0
  110. package/web/dist/assets/zh-BB_S8QpG.js +1 -0
  111. package/web/dist/index.html +132 -131
  112. package/web/dist/sw.js +23 -6
  113. package/backtoschool/dist/assets/index-Cjai7LgT.js +0 -93
  114. package/web/dist/assets/index-BgLxkXKe.js +0 -3
  115. package/web/dist/assets/index-D34dTY18.css +0 -1
@@ -0,0 +1 @@
1
+ var e={"Interface language":`Мова інтерфейсу`,Language:`Мова`,"Translation language":`Мова перекладу`,"Original (auto-detect)":`Оригінал (автовизначення)`,Play:`Відтворити`,Pause:`Пауза`,Stop:`Зупинити`,Next:`Далі`,Previous:`Назад`,Select:`Вибрати`,"Next/Prev":`Далі/Назад`,Quit:`Вийти`,"Now Playing":`Зараз грає`,"Spectrum Analyser":`Аналізатор спектра`,Playlist:`Список відтворення`,Files:`Файли`,"Open files":`Відкрити файли`,"Open folder":`Відкрити папку`,"Add to library":`Додати до бібліотеки`,"Replace playlist":`Замінити список`,Filter:`Фільтр`,Search:`Пошук`,"Nothing loaded.":`Нічого не завантажено.`,"Empty.":`Порожньо.`,"Loading…":`Завантаження…`,"Connecting…":`Підключення…`,Connected:`Підключено`,"Not connected":`Немає з’єднання`,"No source":`Немає джерела`,Playing:`Відтворення`,Stopped:`Зупинено`,Volume:`Гучність`,Seek:`Позиція відтворення`,"Full screen":`На весь екран`,Download:`Завантажити`,Share:`Поділитися`,Copy:`Копіювати`,"Copy link":`Копіювати посилання`,Copied:`Скопійовано`,Save:`Зберегти`,Cancel:`Скасувати`,Close:`Закрити`,Remove:`Прибрати`,Delete:`Видалити`,Edit:`Редагувати`,Add:`Додати`,Send:`Надіслати`,Retry:`Спробувати ще`,Back:`Назад`,"Next page":`Наступна сторінка`,"Previous page":`Попередня сторінка`,"Show more":`Показати більше`,Panels:`Панелі`,"Reset layout":`Скинути розташування`,Show:`Показати`,Hide:`Приховати`,Collapse:`Згорнути`,Expand:`Розгорнути`,"Move up":`Вгору`,"Move down":`Вниз`,Install:`Установити`,"TV mode":`Режим ТБ`,On:`Увімк.`,Off:`Вимк.`,Account:`Обліковий запис`,"Sign in":`Увійти`,"Sign out":`Вийти з облікового запису`,"Create account":`Створити обліковий запис`,Email:`Ел. пошта`,Password:`Пароль`,"Forgot password?":`Забули пароль?`,"Welcome back":`З поверненням`,Profile:`Профіль`,Handle:`Ім’я користувача`,"Your servers":`Ваші сервери`,Server:`Сервер`,Connect:`Підключитися`,Disconnect:`Відключитися`,Directory:`Каталог`,Favourites:`Обране`,Follow:`Підписатися`,Unfollow:`Відписатися`,Notifications:`Сповіщення`,"Phone number":`Номер телефону`,"Save number":`Зберегти номер`,Transcript:`Транскрипція`,Captions:`Субтитри`,"Translate audio":`Перекладати аудіо`,"Audio language":`Мова аудіо`,"Audio options":`Налаштування аудіо`,"Keep background sound":`Зберегти фонові звуки`,"Background level":`Гучність фону`,"Speaker voices":`Голоси учасників`,"Any voice":`Будь-який голос`,"Male voice":`Чоловічий голос`,"Female voice":`Жіночий голос`,"Original audio.":`Оригінальне аудіо.`,"Buy translated audio":`Придбати переклад аудіо`,"Audio credit":`Аудіобаланс`,"Buy pass":`Купити пропуск`,Pass:`Пропуск`,"Pay with":`Оплатити через`,"Check payment":`Перевірити оплату`,"Open checkout":`Перейти до оплати`,"Free sessions":`Безкоштовні сеанси`,"Usage rates and expiry":`Тарифи та строк дії`,Catalogs:`Каталоги`,"Add catalog":`Додати каталог`,"Catalog name":`Назва каталогу`,Link:`Посилання`,"Play link":`Відтворити посилання`,"Go live":`Почати ефір`,Publish:`Опублікувати`,Listen:`Слухати`,"Live now":`Зараз наживо`,Upcoming:`Незабаром`,Parties:`Спільні перегляди`,"Join party":`Приєднатися до перегляду`,"Invite code":`Код запрошення`,Invite:`Запросити`,Chat:`Чат`,"Chat message":`Повідомлення чату`,People:`Учасники`,Speaker:`Мовець`,Speakers:`Мовці`,Listener:`Слухач`,Moderator:`Модератор`,"Raise hand":`Підняти руку`,"Hand raises":`Підняті руки`,Questions:`Запитання`,Resources:`Матеріали`,Replay:`Запис`,Schedule:`Розклад`,Event:`Подія`,Host:`Ведучий`,About:`Про подію`,Stage:`Сцена`,Title:`Назва`,Description:`Опис`,Topic:`Тема`,Public:`Публічна`,"Anyone with the link":`Усі з посиланням`,"Invited people":`Запрошені люди`,"Who can join":`Хто може приєднатися`,"Date and time":`Дата й час`,"Expected length":`Очікувана тривалість`,Repeat:`Повторення`,"Does not repeat":`Не повторюється`,"Every day":`Щодня`,"Every week":`Щотижня`,Homepage:`Вебсайт`,"Host name":`Ім’я ведучого`,"Profile photo URL":`URL фото профілю`,"Broadcast link":`Посилання на трансляцію`,"Edit event":`Редагувати подію`,"Save changes":`Зберегти зміни`,"Create live":`Створити ефір`,"Schedule class":`Запланувати заняття`,"Start class":`Почати заняття`,"End event":`Завершити подію`,"End session":`Завершити сеанс`,"Session ended":`Сеанс завершено`,"Event ended":`Подію завершено`,Cancelled:`Скасовано`,"Replay available":`Запис доступний`,Join:`Приєднатися`,"Create invite":`Створити запрошення`,"Invite as":`Запросити як`,"Watch now":`Дивитися зараз`,"Start a room":`Створити кімнату`,"Recent replays":`Нещодавні записи`,"Your account":`Ваш обліковий запис`,"Write with AI":`Написати з ШІ`,"Suggested title":`Запропонована назва`,"Suggested description":`Запропонований опис`,"Suggested topic":`Запропонована тема`,"Use these details":`Використати ці дані`,"Learn something live.":`Навчайтеся наживо.`,"Screen share":`Поділитися екраном`,"Upload and broadcast":`Завантажити й транслювати`,Help:`Довідка`,"Reload Player":`Перезавантажити плеєр`,"Copy Bundled CLI Path":`Копіювати шлях до вбудованого CLI`,"Developer tools":`Інструменти розробника`,Undo:`Скасувати дію`,Redo:`Повторити дію`,Cut:`Вирізати`,Paste:`Вставити`,"Select all":`Вибрати все`,Status:`Стан`,"Activity log":`Журнал активності`,Admin:`Адміністрування`,"Playback controls":`Керування відтворенням`,"Tracks and folders":`Треки та папки`,"Original-language captions.":`Субтитри мовою оригіналу.`,"Skip to playback controls":`До керування відтворенням`,"Skip to playlist":`До списку відтворення`,"Skip to transcript and translated audio":`До транскрипції та перекладу аудіо`};export{e as default};
@@ -0,0 +1 @@
1
+ var e={"Interface language":`Ngôn ngữ giao diện`,Language:`Ngôn ngữ`,"Translation language":`Ngôn ngữ dịch`,"Original (auto-detect)":`Gốc (tự động phát hiện)`,Play:`Phát`,Pause:`Tạm dừng`,Stop:`Dừng`,Next:`Tiếp theo`,Previous:`Trước`,Select:`Chọn`,"Next/Prev":`Tiếp/Trước`,Quit:`Thoát`,"Now Playing":`Đang phát`,"Spectrum Analyser":`Bộ phân tích phổ`,Playlist:`Danh sách phát`,Files:`Tệp`,"Open files":`Mở tệp`,"Open folder":`Mở thư mục`,"Add to library":`Thêm vào thư viện`,"Replace playlist":`Thay danh sách phát`,Filter:`Lọc`,Search:`Tìm kiếm`,"Nothing loaded.":`Chưa tải nội dung.`,"Empty.":`Trống.`,"Loading…":`Đang tải…`,"Connecting…":`Đang kết nối…`,Connected:`Đã kết nối`,"Not connected":`Chưa kết nối`,"No source":`Không có nguồn`,Playing:`Đang phát`,Stopped:`Đã dừng`,Volume:`Âm lượng`,Seek:`Vị trí phát`,"Full screen":`Toàn màn hình`,Download:`Tải xuống`,Share:`Chia sẻ`,Copy:`Sao chép`,"Copy link":`Sao chép liên kết`,Copied:`Đã sao chép`,Save:`Lưu`,Cancel:`Hủy`,Close:`Đóng`,Remove:`Bỏ`,Delete:`Xóa`,Edit:`Sửa`,Add:`Thêm`,Send:`Gửi`,Retry:`Thử lại`,Back:`Quay lại`,"Next page":`Trang tiếp`,"Previous page":`Trang trước`,"Show more":`Xem thêm`,Panels:`Bảng`,"Reset layout":`Đặt lại bố cục`,Show:`Hiện`,Hide:`Ẩn`,Collapse:`Thu gọn`,Expand:`Mở rộng`,"Move up":`Chuyển lên`,"Move down":`Chuyển xuống`,Install:`Cài đặt`,"TV mode":`Chế độ TV`,On:`Bật`,Off:`Tắt`,Account:`Tài khoản`,"Sign in":`Đăng nhập`,"Sign out":`Đăng xuất`,"Create account":`Tạo tài khoản`,Email:`Email`,Password:`Mật khẩu`,"Forgot password?":`Quên mật khẩu?`,"Welcome back":`Chào mừng trở lại`,Profile:`Hồ sơ`,Handle:`Tên người dùng`,"Your servers":`Máy chủ của bạn`,Server:`Máy chủ`,Connect:`Kết nối`,Disconnect:`Ngắt kết nối`,Directory:`Danh bạ`,Favourites:`Yêu thích`,Follow:`Theo dõi`,Unfollow:`Bỏ theo dõi`,Notifications:`Thông báo`,"Phone number":`Số điện thoại`,"Save number":`Lưu số`,Transcript:`Bản chép lời`,Captions:`Phụ đề`,"Translate audio":`Dịch âm thanh`,"Audio language":`Ngôn ngữ âm thanh`,"Audio options":`Tùy chọn âm thanh`,"Keep background sound":`Giữ âm thanh nền`,"Background level":`Âm lượng nền`,"Speaker voices":`Giọng người nói`,"Any voice":`Giọng bất kỳ`,"Male voice":`Giọng nam`,"Female voice":`Giọng nữ`,"Original audio.":`Âm thanh gốc.`,"Buy translated audio":`Mua âm thanh đã dịch`,"Audio credit":`Số dư âm thanh`,"Buy pass":`Mua vé truy cập`,Pass:`Vé truy cập`,"Pay with":`Thanh toán bằng`,"Check payment":`Kiểm tra thanh toán`,"Open checkout":`Đi đến thanh toán`,"Free sessions":`Phiên miễn phí`,"Usage rates and expiry":`Giá sử dụng và thời hạn`,Catalogs:`Danh mục`,"Add catalog":`Thêm danh mục`,"Catalog name":`Tên danh mục`,Link:`Liên kết`,"Play link":`Phát liên kết`,"Go live":`Phát trực tiếp`,Publish:`Xuất bản`,Listen:`Nghe`,"Live now":`Đang trực tiếp`,Upcoming:`Sắp diễn ra`,Parties:`Buổi xem chung`,"Join party":`Tham gia xem chung`,"Invite code":`Mã mời`,Invite:`Mời`,Chat:`Trò chuyện`,"Chat message":`Tin nhắn trò chuyện`,People:`Mọi người`,Speaker:`Người nói`,Speakers:`Người nói`,Listener:`Người nghe`,Moderator:`Điều hành viên`,"Raise hand":`Giơ tay`,"Hand raises":`Các lượt giơ tay`,Questions:`Câu hỏi`,Resources:`Tài liệu`,Replay:`Bản phát lại`,Schedule:`Lịch`,Event:`Sự kiện`,Host:`Người chủ trì`,About:`Giới thiệu`,Stage:`Sân khấu`,Title:`Tiêu đề`,Description:`Mô tả`,Topic:`Chủ đề`,Public:`Công khai`,"Anyone with the link":`Bất kỳ ai có liên kết`,"Invited people":`Người được mời`,"Who can join":`Ai có thể tham gia`,"Date and time":`Ngày và giờ`,"Expected length":`Thời lượng dự kiến`,Repeat:`Lặp lại`,"Does not repeat":`Không lặp lại`,"Every day":`Mỗi ngày`,"Every week":`Mỗi tuần`,Homepage:`Trang web`,"Host name":`Tên người chủ trì`,"Profile photo URL":`URL ảnh hồ sơ`,"Broadcast link":`Liên kết phát sóng`,"Edit event":`Sửa sự kiện`,"Save changes":`Lưu thay đổi`,"Create live":`Tạo buổi trực tiếp`,"Schedule class":`Lên lịch lớp học`,"Start class":`Bắt đầu lớp học`,"End event":`Kết thúc sự kiện`,"End session":`Kết thúc phiên`,"Session ended":`Phiên đã kết thúc`,"Event ended":`Sự kiện đã kết thúc`,Cancelled:`Đã hủy`,"Replay available":`Có bản phát lại`,Join:`Tham gia`,"Create invite":`Tạo lời mời`,"Invite as":`Mời với vai trò`,"Watch now":`Xem ngay`,"Start a room":`Tạo phòng`,"Recent replays":`Bản phát lại gần đây`,"Your account":`Tài khoản của bạn`,"Write with AI":`Viết bằng AI`,"Suggested title":`Tiêu đề gợi ý`,"Suggested description":`Mô tả gợi ý`,"Suggested topic":`Chủ đề gợi ý`,"Use these details":`Dùng thông tin này`,"Learn something live.":`Học điều mới qua trực tiếp.`,"Screen share":`Chia sẻ màn hình`,"Upload and broadcast":`Tải lên và phát sóng`,Help:`Trợ giúp`,"Reload Player":`Tải lại trình phát`,"Copy Bundled CLI Path":`Sao chép đường dẫn CLI đi kèm`,"Developer tools":`Công cụ nhà phát triển`,Undo:`Hoàn tác`,Redo:`Làm lại`,Cut:`Cắt`,Paste:`Dán`,"Select all":`Chọn tất cả`,Status:`Trạng thái`,"Activity log":`Nhật ký hoạt động`,Admin:`Quản trị`,"Playback controls":`Điều khiển phát`,"Tracks and folders":`Bản nhạc và thư mục`,"Original-language captions.":`Phụ đề bằng ngôn ngữ gốc.`,"Skip to playback controls":`Chuyển đến điều khiển phát`,"Skip to playlist":`Chuyển đến danh sách phát`,"Skip to transcript and translated audio":`Chuyển đến bản chép lời và âm thanh đã dịch`};export{e as default};
@@ -0,0 +1 @@
1
+ var e={"Interface language":`界面语言`,Language:`语言`,"Translation language":`翻译语言`,"Original (auto-detect)":`原文(自动检测)`,Play:`播放`,Pause:`暂停`,Stop:`停止`,Next:`下一个`,Previous:`上一个`,Select:`选择`,"Next/Prev":`下一个/上一个`,Quit:`退出`,"Now Playing":`正在播放`,"Spectrum Analyser":`频谱分析仪`,Playlist:`播放列表`,Files:`文件`,"Open files":`打开文件`,"Open folder":`打开文件夹`,"Add to library":`添加到媒体库`,"Replace playlist":`替换播放列表`,Filter:`筛选`,Search:`搜索`,"Nothing loaded.":`尚未加载内容。`,"Empty.":`空。`,"Loading…":`正在加载…`,"Connecting…":`正在连接…`,Connected:`已连接`,"Not connected":`未连接`,"No source":`无来源`,Playing:`播放中`,Stopped:`已停止`,Volume:`音量`,Seek:`播放位置`,"Full screen":`全屏`,Download:`下载`,Share:`分享`,Copy:`复制`,"Copy link":`复制链接`,Copied:`已复制`,Save:`保存`,Cancel:`取消`,Close:`关闭`,Remove:`移除`,Delete:`删除`,Edit:`编辑`,Add:`添加`,Send:`发送`,Retry:`重试`,Back:`返回`,"Next page":`下一页`,"Previous page":`上一页`,"Show more":`显示更多`,Panels:`面板`,"Reset layout":`重置布局`,Show:`显示`,Hide:`隐藏`,Collapse:`收起`,Expand:`展开`,"Move up":`上移`,"Move down":`下移`,Install:`安装`,"TV mode":`电视模式`,On:`开启`,Off:`关闭`,Account:`账户`,"Sign in":`登录`,"Sign out":`退出登录`,"Create account":`创建账户`,Email:`电子邮箱`,Password:`密码`,"Forgot password?":`忘记密码?`,"Welcome back":`欢迎回来`,Profile:`个人资料`,Handle:`用户名`,"Your servers":`你的服务器`,Server:`服务器`,Connect:`连接`,Disconnect:`断开连接`,Directory:`目录`,Favourites:`收藏`,Follow:`关注`,Unfollow:`取消关注`,Notifications:`通知`,"Phone number":`电话号码`,"Save number":`保存号码`,Transcript:`文字稿`,Captions:`字幕`,"Translate audio":`翻译音频`,"Audio language":`音频语言`,"Audio options":`音频选项`,"Keep background sound":`保留背景声音`,"Background level":`背景音量`,"Speaker voices":`说话者声音`,"Any voice":`任意声音`,"Male voice":`男声`,"Female voice":`女声`,"Original audio.":`原始音频。`,"Buy translated audio":`购买翻译音频`,"Audio credit":`音频余额`,"Buy pass":`购买通行证`,Pass:`通行证`,"Pay with":`支付方式`,"Check payment":`检查付款`,"Open checkout":`前往付款`,"Free sessions":`免费会话`,"Usage rates and expiry":`使用费率与有效期`,Catalogs:`内容目录`,"Add catalog":`添加目录`,"Catalog name":`目录名称`,Link:`链接`,"Play link":`播放链接`,"Go live":`开始直播`,Publish:`发布`,Listen:`收听`,"Live now":`正在直播`,Upcoming:`即将开始`,Parties:`一起看`,"Join party":`加入一起看`,"Invite code":`邀请码`,Invite:`邀请`,Chat:`聊天`,"Chat message":`聊天消息`,People:`参与者`,Speaker:`发言者`,Speakers:`发言者`,Listener:`听众`,Moderator:`主持人`,"Raise hand":`举手`,"Hand raises":`举手列表`,Questions:`问题`,Resources:`资料`,Replay:`回放`,Schedule:`日程`,Event:`活动`,Host:`主办人`,About:`关于`,Stage:`舞台`,Title:`标题`,Description:`描述`,Topic:`主题`,Public:`公开`,"Anyone with the link":`拥有链接的任何人`,"Invited people":`受邀者`,"Who can join":`谁可以加入`,"Date and time":`日期与时间`,"Expected length":`预计时长`,Repeat:`重复`,"Does not repeat":`不重复`,"Every day":`每天`,"Every week":`每周`,Homepage:`网站`,"Host name":`主办人姓名`,"Profile photo URL":`头像网址`,"Broadcast link":`直播链接`,"Edit event":`编辑活动`,"Save changes":`保存更改`,"Create live":`创建直播`,"Schedule class":`安排课程`,"Start class":`开始课程`,"End event":`结束活动`,"End session":`结束本次会话`,"Session ended":`会话已结束`,"Event ended":`活动已结束`,Cancelled:`已取消`,"Replay available":`可观看回放`,Join:`加入`,"Create invite":`创建邀请`,"Invite as":`邀请身份`,"Watch now":`立即观看`,"Start a room":`创建房间`,"Recent replays":`近期回放`,"Your account":`你的账户`,"Write with AI":`用 AI 撰写`,"Suggested title":`建议标题`,"Suggested description":`建议描述`,"Suggested topic":`建议主题`,"Use these details":`使用这些信息`,"Learn something live.":`实时学习新知识。`,"Screen share":`共享屏幕`,"Upload and broadcast":`上传并直播`,Help:`帮助`,"Reload Player":`重新加载播放器`,"Copy Bundled CLI Path":`复制内置命令行工具路径`,"Developer tools":`开发者工具`,Undo:`撤销`,Redo:`重做`,Cut:`剪切`,Paste:`粘贴`,"Select all":`全选`,Status:`状态`,"Activity log":`活动日志`,Admin:`管理`,"Playback controls":`播放控制`,"Tracks and folders":`曲目与文件夹`,"Original-language captions.":`原语言字幕。`,"Skip to playback controls":`跳转到播放控制`,"Skip to playlist":`跳转到播放列表`,"Skip to transcript and translated audio":`跳转到文字稿和翻译音频`};export{e as default};
@@ -12,8 +12,8 @@
12
12
  <link rel="manifest" href="/manifest.webmanifest" />
13
13
  <link rel="icon" href="/icon.svg" type="image/svg+xml" />
14
14
  <title>BackToSchool.help — Learn something live</title>
15
- <script type="module" crossorigin src="/assets/index-Cjai7LgT.js"></script>
16
- <link rel="stylesheet" crossorigin href="/assets/index-Bot4FEXQ.css">
15
+ <script type="module" crossorigin src="/assets/index-4LdMSur6.js"></script>
16
+ <link rel="stylesheet" crossorigin href="/assets/index-D06NfY1L.css">
17
17
  </head>
18
18
  <body>
19
19
  <div id="app">
@@ -22,17 +22,18 @@
22
22
  <span class="wordmark-mark" aria-hidden="true">B</span>
23
23
  <span>BackToSchool<span>.help</span></span>
24
24
  </a>
25
- <nav class="site-nav" aria-label="Main navigation">
26
- <a href="/#live">Live now</a>
27
- <a href="/#upcoming">Upcoming</a>
28
- <button class="button button-quiet" id="account-button" type="button">Sign in</button>
25
+ <nav class="site-nav" aria-label="Main navigation" data-i18n-aria-label="Main navigation">
26
+ <a href="/#live" data-i18n="Live now">Live now</a>
27
+ <a href="/#upcoming" data-i18n="Upcoming">Upcoming</a>
28
+ <label class="ui-language"><span data-i18n="Interface language">Interface language</span> <select data-ui-language aria-label="Interface language" data-i18n-aria-label="Interface language"></select></label>
29
+ <button class="button button-quiet" id="account-button" type="button" data-i18n="Sign in">Sign in</button>
29
30
  </nav>
30
31
  </header>
31
32
  <main id="main" tabindex="-1">
32
33
  <section class="loading-page" aria-live="polite">
33
34
  <span class="eyebrow">BackToSchool.help</span>
34
- <h1>Learn something live.</h1>
35
- <p>Finding today’s conversations…</p>
35
+ <h1 data-i18n="Learn something live.">Learn something live.</h1>
36
+ <p data-i18n="Finding today’s conversations…">Finding today’s conversations…</p>
36
37
  </section>
37
38
  </main>
38
39
  <footer class="site-footer">
@@ -42,59 +43,59 @@
42
43
  </div>
43
44
 
44
45
  <dialog id="account-dialog" class="dialog" aria-labelledby="account-title">
45
- <button class="dialog-close" type="button" data-close aria-label="Close">×</button>
46
- <span class="eyebrow">Your NixAmp account</span>
47
- <h2 id="account-title">Welcome back</h2>
46
+ <button class="dialog-close" type="button" data-close aria-label="Close" data-i18n-aria-label="Close">×</button>
47
+ <span class="eyebrow" data-i18n="Your NixAmp account">Your NixAmp account</span>
48
+ <h2 id="account-title" data-i18n="Welcome back">Welcome back</h2>
48
49
  <p id="account-copy">Sign in to host, chat, or raise your hand.</p>
49
50
  <form id="account-form" class="form-stack">
50
- <label>Email<input name="email" type="email" autocomplete="email" required /></label>
51
- <label>Password<input name="password" type="password" autocomplete="current-password" minlength="8" required /></label>
51
+ <label><span data-i18n="Email">Email</span><input name="email" type="email" autocomplete="email" required /></label>
52
+ <label><span data-i18n="Password">Password</span><input name="password" type="password" autocomplete="current-password" minlength="8" required /></label>
52
53
  <p class="form-error" id="account-error" role="alert"></p>
53
- <button class="button button-primary" type="submit">Sign in</button>
54
- <a class="text-button" id="account-forgot" href="/reset-password">Forgot password?</a>
55
- <button class="text-button" id="account-mode" type="button">New here? Create an account</button>
54
+ <button class="button button-primary" type="submit" data-i18n="Sign in">Sign in</button>
55
+ <a class="text-button" id="account-forgot" href="/reset-password" data-i18n="Forgot password?">Forgot password?</a>
56
+ <button class="text-button" id="account-mode" type="button" data-i18n="New here? Create an account">New here? Create an account</button>
56
57
  </form>
57
58
  </dialog>
58
59
 
59
60
  <dialog id="event-dialog" class="dialog dialog-wide" aria-labelledby="event-form-title">
60
- <button class="dialog-close" type="button" data-close aria-label="Close">×</button>
61
+ <button class="dialog-close" type="button" data-close aria-label="Close" data-i18n-aria-label="Close">×</button>
61
62
  <span class="eyebrow" id="event-kicker">Start a conversation</span>
62
- <h2 id="event-form-title">Go live</h2>
63
+ <h2 id="event-form-title" data-i18n="Go live">Go live</h2>
63
64
  <form id="event-form" class="form-stack">
64
65
  <fieldset class="broadcast-options">
65
66
  <legend>Broadcast your class</legend>
66
67
  <p>Share your screen with Pairux, or upload a file and go live in Nixamp. Paste the share link below.</p>
67
- <div class="broadcast-links"><a class="button button-secondary" href="https://pairux.com/dashboard" target="_blank" rel="noopener noreferrer">Screen share with Pairux ↗</a><a class="button button-secondary" href="https://nixamp.com/#files-panel" target="_blank" rel="noopener noreferrer">Upload &amp; broadcast in Nixamp ↗</a></div>
68
- <label>Broadcast link<input name="broadcastUrl" type="url" maxlength="2048" placeholder="Pairux join link or Nixamp Share link" aria-describedby="broadcast-help" /></label>
68
+ <div class="broadcast-links"><a class="button button-secondary" href="https://pairux.com/dashboard" target="_blank" rel="noopener noreferrer" data-i18n="Screen share with Pairux ↗">Screen share with Pairux ↗</a><a class="button button-secondary" href="https://nixamp.com/#files-panel" target="_blank" rel="noopener noreferrer" data-i18n="Upload &amp; broadcast in Nixamp ↗">Upload &amp; broadcast in Nixamp ↗</a></div>
69
+ <label><span data-i18n="Broadcast link">Broadcast link</span><input name="broadcastUrl" type="url" maxlength="2048" placeholder="Pairux join link or Nixamp Share link" aria-describedby="broadcast-help" /></label>
69
70
  <p class="form-note" id="broadcast-help">You can add the link now or edit your event when the broadcast is ready.</p>
70
71
  </fieldset>
71
- <label>Title<input name="title" maxlength="160" placeholder="What will people learn?" required /></label>
72
- <label>Description<textarea name="description" maxlength="5000" rows="3" placeholder="What will students learn?"></textarea></label>
72
+ <label><span data-i18n="Title">Title</span><input name="title" maxlength="160" placeholder="What will people learn?" required /></label>
73
+ <label><span data-i18n="Description">Description</span><textarea name="description" maxlength="5000" rows="3" placeholder="What will students learn?"></textarea></label>
73
74
  <div class="form-pair">
74
- <label>Topic<input name="topic" maxlength="100" placeholder="Technology, music…" /></label>
75
- <label>Who can join
76
- <select name="visibility">
77
- <option value="public">Public</option>
78
- <option value="unlisted">Anyone with the link</option>
79
- <option value="private">Invited people</option>
75
+ <label><span data-i18n="Topic">Topic</span><input name="topic" maxlength="100" placeholder="Technology, music…" /></label>
76
+ <label><span data-i18n="Who can join">Who can join
77
+ </span><select name="visibility">
78
+ <option value="public" data-i18n="Public">Public</option>
79
+ <option value="unlisted" data-i18n="Anyone with the link">Anyone with the link</option>
80
+ <option value="private" data-i18n="Invited people">Invited people</option>
80
81
  </select>
81
82
  </label>
82
83
  </div>
83
84
  <div class="ai-writer">
84
- <div class="ai-writer-actions"><button class="button button-secondary" type="button" id="event-ai-write">Write with AI</button><button class="text-button" type="button" id="event-ai-cancel" hidden>Cancel</button></div>
85
+ <div class="ai-writer-actions"><button class="button button-secondary" type="button" id="event-ai-write" data-i18n="Write with AI">Write with AI</button><button class="text-button" type="button" id="event-ai-cancel" hidden data-i18n="Cancel">Cancel</button></div>
85
86
  <p class="form-note">Optional: use your current title, description, and topic as the prompt. Review the draft before using it.</p>
86
87
  <p id="event-ai-status" class="form-note ai-writer-status" role="status" aria-live="polite"></p>
87
88
  <div id="event-ai-preview" class="form-stack" hidden>
88
- <label for="event-ai-title">Suggested title</label><input id="event-ai-title" readonly />
89
- <label for="event-ai-description">Suggested description</label><textarea id="event-ai-description" rows="6" readonly></textarea>
90
- <label for="event-ai-topic">Suggested topic</label><input id="event-ai-topic" readonly />
91
- <button class="button button-secondary" type="button" id="event-ai-apply" aria-disabled="true">Use these details</button>
89
+ <label for="event-ai-title" data-i18n="Suggested title">Suggested title</label><input id="event-ai-title" readonly />
90
+ <label for="event-ai-description" data-i18n="Suggested description">Suggested description</label><textarea id="event-ai-description" rows="6" readonly></textarea>
91
+ <label for="event-ai-topic" data-i18n="Suggested topic">Suggested topic</label><input id="event-ai-topic" readonly />
92
+ <button class="button button-secondary" type="button" id="event-ai-apply" aria-disabled="true" data-i18n="Use these details">Use these details</button>
92
93
  </div>
93
94
  </div>
94
95
  <div id="schedule-fields" class="form-pair" hidden>
95
- <label>Date and time<input name="startsAt" type="datetime-local" /></label>
96
- <label>Expected length
97
- <select name="expectedDurationMinutes">
96
+ <label><span data-i18n="Date and time">Date and time</span><input name="startsAt" type="datetime-local" /></label>
97
+ <label><span data-i18n="Expected length">Expected length
98
+ </span><select name="expectedDurationMinutes">
98
99
  <option value="30">30 minutes</option>
99
100
  <option value="60" selected>1 hour</option>
100
101
  <option value="90">90 minutes</option>
@@ -103,20 +104,20 @@
103
104
  </label>
104
105
  </div>
105
106
  <p class="form-note" id="schedule-timezone"></p>
106
- <label for="event-recurrence">Repeat</label><select id="event-recurrence" name="recurrence"><option value="none">Does not repeat</option><option value="daily">Every day</option><option value="weekly">Every week</option></select>
107
+ <label for="event-recurrence" data-i18n="Repeat">Repeat</label><select id="event-recurrence" name="recurrence"><option value="none" data-i18n="Does not repeat">Does not repeat</option><option value="daily" data-i18n="Every day">Every day</option><option value="weekly" data-i18n="Every week">Every week</option></select>
107
108
  <p class="form-note">Repeating classes keep this same link. Ending a session schedules the next one at the same local time.</p>
108
109
  <fieldset class="broadcast-options"><legend>Host profile</legend>
109
- <label>Host name<input name="hostName" maxlength="100" autocomplete="name" /></label>
110
- <label>Homepage<input name="homepageUrl" type="url" maxlength="2048" placeholder="https://your-site.com" /></label>
111
- <label>Profile photo URL<input name="avatarUrl" type="url" maxlength="2048" placeholder="https://your-site.com/photo.jpg" /></label>
110
+ <label><span data-i18n="Host name">Host name</span><input name="hostName" maxlength="100" autocomplete="name" /></label>
111
+ <label><span data-i18n="Homepage">Homepage</span><input name="homepageUrl" type="url" maxlength="2048" placeholder="https://your-site.com" /></label>
112
+ <label><span data-i18n="Profile photo URL">Profile photo URL</span><input name="avatarUrl" type="url" maxlength="2048" placeholder="https://your-site.com/photo.jpg" /></label>
112
113
  </fieldset>
113
114
  <div class="form-checks">
114
- <label><input name="chatEnabled" type="checkbox" checked /> Chat</label>
115
- <label><input name="handRaiseEnabled" type="checkbox" checked /> Raise hand</label>
115
+ <label><input name="chatEnabled" type="checkbox" checked /><span data-i18n="Chat"> Chat</span></label>
116
+ <label><input name="handRaiseEnabled" type="checkbox" checked /><span data-i18n="Raise hand"> Raise hand</span></label>
116
117
 
117
118
  </div>
118
119
  <p class="form-error" id="event-error" role="alert"></p>
119
- <button class="button button-primary" type="submit" id="event-submit">Create live</button>
120
+ <button class="button button-primary" type="submit" id="event-submit" data-i18n="Create live">Create live</button>
120
121
  </form>
121
122
  </dialog>
122
123
 
package/dist/admin.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { t as uiMessage } from "./i18n.js";
1
2
  /**
2
3
  * `nixamp admin` — what the daemon is doing, and who is listening to it.
3
4
  *
@@ -206,7 +207,7 @@ export function draw(ui, theme, view) {
206
207
  const { report, snapshot } = view;
207
208
  const now = report?.now ?? Date.now();
208
209
  ui.row({ size: 7, gap: 1 }, (row) => {
209
- row.panel({ title: "Server" }, (p) => {
210
+ row.panel({ title: uiMessage("Server") }, (p) => {
210
211
  p.text(view.url, { fg: theme.primary });
211
212
  p.label(snapshot?.root ?? "—");
212
213
  p.keyValues([
@@ -215,7 +216,7 @@ export function draw(ui, theme, view) {
215
216
  { label: "Listeners", value: String(report?.active ?? 0), color: theme.success },
216
217
  ]);
217
218
  });
218
- row.panel({ title: "Now playing" }, (p) => {
219
+ row.panel({ title: uiMessage("Now playing") }, (p) => {
219
220
  const track = snapshot ? snapshot.tracks[snapshot.index] : undefined;
220
221
  p.text(track?.title ?? "nothing", { fg: theme.accent });
221
222
  p.label(track?.artist || "—");
@@ -306,9 +307,9 @@ export function draw(ui, theme, view) {
306
307
  }
307
308
  ui.statusBar({
308
309
  items: [
309
- { key: "a", label: "Add" },
310
+ { key: "a", label: uiMessage("Add") },
310
311
  { key: "r", label: "Replace" },
311
- { key: "q", label: "Quit" },
312
+ { key: "q", label: uiMessage("Quit") },
312
313
  ],
313
314
  right: [{ key: "", label: report ? `${report.connections.length} seen` : "connecting" }],
314
315
  });
package/dist/i18n.d.ts ADDED
@@ -0,0 +1,26 @@
1
+ import en from './locales/en.ts';
2
+ import { type UiLanguage } from './ui-languages.ts';
3
+ export { UI_LANGUAGES, UI_LANGUAGE_KEY, uiLanguage, preferredUiLanguage, terminalUiLanguage } from './ui-languages.ts';
4
+ export type { UiLanguage } from './ui-languages.ts';
5
+ export type Message = keyof typeof en;
6
+ export type Catalogue = Record<Message, string>;
7
+ /** Independent instances prevent one server request from changing another's locale. */
8
+ export declare class I18n {
9
+ private readonly load;
10
+ private code;
11
+ get language(): UiLanguage;
12
+ constructor(load?: (language: UiLanguage) => Promise<Catalogue>);
13
+ private messages;
14
+ private revision;
15
+ private numberFormats;
16
+ private dateFormats;
17
+ private listeners;
18
+ setLanguage(value: unknown): Promise<boolean>;
19
+ onChange(changed: () => void): () => void;
20
+ text(source: string, values?: Record<string, string | number>): string;
21
+ number(value: number, options?: Intl.NumberFormatOptions): string;
22
+ date(value: Date | number, options?: Intl.DateTimeFormatOptions): string;
23
+ get direction(): 'ltr' | 'rtl';
24
+ }
25
+ export declare const i18n: I18n;
26
+ export declare const t: (source: string, values?: Record<string, string | number>) => string;
package/dist/i18n.js ADDED
@@ -0,0 +1,81 @@
1
+ import en from './locales/en.js';
2
+ import { aliases } from './ui-aliases.js';
3
+ import { uiLanguage } from './ui-languages.js';
4
+ export { UI_LANGUAGES, UI_LANGUAGE_KEY, uiLanguage, preferredUiLanguage, terminalUiLanguage } from './ui-languages.js';
5
+ const loaders = {
6
+ en: async () => ({ default: en }),
7
+ de: () => import('./locales/de.js'), sv: () => import('./locales/sv.js'),
8
+ es: () => import('./locales/es.js'), fr: () => import('./locales/fr.js'),
9
+ it: () => import('./locales/it.js'), nl: () => import('./locales/nl.js'),
10
+ da: () => import('./locales/da.js'), fi: () => import('./locales/fi.js'),
11
+ ru: () => import('./locales/ru.js'), uk: () => import('./locales/uk.js'),
12
+ cs: () => import('./locales/cs.js'), hu: () => import('./locales/hu.js'),
13
+ zh: () => import('./locales/zh.js'), ar: () => import('./locales/ar.js'),
14
+ hi: () => import('./locales/hi.js'), vi: () => import('./locales/vi.js'),
15
+ id: () => import('./locales/id.js'),
16
+ };
17
+ /** Independent instances prevent one server request from changing another's locale. */
18
+ export class I18n {
19
+ load;
20
+ code = 'en';
21
+ get language() { return this.code; }
22
+ constructor(load = async (language) => (await loaders[language]()).default) {
23
+ this.load = load;
24
+ }
25
+ messages = en;
26
+ revision = 0;
27
+ numberFormats = new Map();
28
+ dateFormats = new Map();
29
+ listeners = new Set();
30
+ async setLanguage(value) {
31
+ const revision = ++this.revision;
32
+ const language = uiLanguage(value);
33
+ const catalogue = await this.load(language);
34
+ if (revision !== this.revision)
35
+ return false;
36
+ this.code = language;
37
+ this.messages = catalogue;
38
+ this.numberFormats.clear();
39
+ this.dateFormats.clear();
40
+ for (const changed of this.listeners)
41
+ changed();
42
+ return true;
43
+ }
44
+ onChange(changed) {
45
+ this.listeners.add(changed);
46
+ return () => this.listeners.delete(changed);
47
+ }
48
+ text(source, values = {}) {
49
+ const key = (this.language !== 'en' && Object.hasOwn(aliases, source) ? aliases[source] : source);
50
+ let translated = Object.hasOwn(this.messages, key) ? this.messages[key] : source;
51
+ if (this.language !== 'en' && Object.hasOwn(aliases, source)) {
52
+ translated = (source.match(/^[▶■●⤓]\s+/)?.[0] ?? '') + translated + (source.endsWith(' ✓') ? ' ✓' : '');
53
+ }
54
+ return translated.replace(/\{([\w]+)\}/g, (original, name) => Object.hasOwn(values, name) ? String(values[name]) : original);
55
+ }
56
+ number(value, options) {
57
+ const key = JSON.stringify(options ?? {});
58
+ let formatter = this.numberFormats.get(key);
59
+ if (!formatter) {
60
+ if (this.numberFormats.size >= 64)
61
+ this.numberFormats.clear();
62
+ formatter = new Intl.NumberFormat(this.language, options);
63
+ this.numberFormats.set(key, formatter);
64
+ }
65
+ return formatter.format(value);
66
+ }
67
+ date(value, options) {
68
+ const key = JSON.stringify(options ?? {});
69
+ let formatter = this.dateFormats.get(key);
70
+ if (!formatter) {
71
+ if (this.dateFormats.size >= 64)
72
+ this.dateFormats.clear();
73
+ formatter = new Intl.DateTimeFormat(this.language, options);
74
+ this.dateFormats.set(key, formatter);
75
+ }
76
+ return formatter.format(value);
77
+ }
78
+ get direction() { return this.language === 'ar' ? 'rtl' : 'ltr'; }
79
+ }
80
+ export const i18n = new I18n();
81
+ export const t = (source, values) => i18n.text(source, values);
@@ -0,0 +1,201 @@
1
+ declare const _default: {
2
+ "Interface language": string;
3
+ Language: string;
4
+ "Translation language": string;
5
+ "Original (auto-detect)": string;
6
+ Play: string;
7
+ Pause: string;
8
+ Stop: string;
9
+ Next: string;
10
+ Previous: string;
11
+ Select: string;
12
+ "Next/Prev": string;
13
+ Quit: string;
14
+ "Now Playing": string;
15
+ "Spectrum Analyser": string;
16
+ Playlist: string;
17
+ Files: string;
18
+ "Open files": string;
19
+ "Open folder": string;
20
+ "Add to library": string;
21
+ "Replace playlist": string;
22
+ Filter: string;
23
+ Search: string;
24
+ "Nothing loaded.": string;
25
+ "Empty.": string;
26
+ "Loading\u2026": string;
27
+ "Connecting\u2026": string;
28
+ Connected: string;
29
+ "Not connected": string;
30
+ "No source": string;
31
+ Playing: string;
32
+ Stopped: string;
33
+ Volume: string;
34
+ Seek: string;
35
+ "Full screen": string;
36
+ Download: string;
37
+ Share: string;
38
+ Copy: string;
39
+ "Copy link": string;
40
+ Copied: string;
41
+ Save: string;
42
+ Cancel: string;
43
+ Close: string;
44
+ Remove: string;
45
+ Delete: string;
46
+ Edit: string;
47
+ Add: string;
48
+ Send: string;
49
+ Retry: string;
50
+ Back: string;
51
+ "Next page": string;
52
+ "Previous page": string;
53
+ "Show more": string;
54
+ Panels: string;
55
+ "Reset layout": string;
56
+ Show: string;
57
+ Hide: string;
58
+ Collapse: string;
59
+ Expand: string;
60
+ "Move up": string;
61
+ "Move down": string;
62
+ Install: string;
63
+ "TV mode": string;
64
+ On: string;
65
+ Off: string;
66
+ Account: string;
67
+ "Sign in": string;
68
+ "Sign out": string;
69
+ "Create account": string;
70
+ Email: string;
71
+ Password: string;
72
+ "Forgot password?": string;
73
+ "Welcome back": string;
74
+ Profile: string;
75
+ Handle: string;
76
+ "Your servers": string;
77
+ Server: string;
78
+ Connect: string;
79
+ Disconnect: string;
80
+ Directory: string;
81
+ Favourites: string;
82
+ Follow: string;
83
+ Unfollow: string;
84
+ Notifications: string;
85
+ "Phone number": string;
86
+ "Save number": string;
87
+ Transcript: string;
88
+ Captions: string;
89
+ "Translate audio": string;
90
+ "Audio language": string;
91
+ "Audio options": string;
92
+ "Keep background sound": string;
93
+ "Background level": string;
94
+ "Speaker voices": string;
95
+ "Any voice": string;
96
+ "Male voice": string;
97
+ "Female voice": string;
98
+ "Original audio.": string;
99
+ "Buy translated audio": string;
100
+ "Audio credit": string;
101
+ "Buy pass": string;
102
+ Pass: string;
103
+ "Pay with": string;
104
+ "Check payment": string;
105
+ "Open checkout": string;
106
+ "Free sessions": string;
107
+ "Usage rates and expiry": string;
108
+ Catalogs: string;
109
+ "Add catalog": string;
110
+ "Catalog name": string;
111
+ Link: string;
112
+ "Play link": string;
113
+ "Go live": string;
114
+ Publish: string;
115
+ Listen: string;
116
+ "Live now": string;
117
+ Upcoming: string;
118
+ Parties: string;
119
+ "Join party": string;
120
+ "Invite code": string;
121
+ Invite: string;
122
+ Chat: string;
123
+ "Chat message": string;
124
+ People: string;
125
+ Speaker: string;
126
+ Speakers: string;
127
+ Listener: string;
128
+ Moderator: string;
129
+ "Raise hand": string;
130
+ "Hand raises": string;
131
+ Questions: string;
132
+ Resources: string;
133
+ Replay: string;
134
+ Schedule: string;
135
+ Event: string;
136
+ Host: string;
137
+ About: string;
138
+ Stage: string;
139
+ Title: string;
140
+ Description: string;
141
+ Topic: string;
142
+ Public: string;
143
+ "Anyone with the link": string;
144
+ "Invited people": string;
145
+ "Who can join": string;
146
+ "Date and time": string;
147
+ "Expected length": string;
148
+ Repeat: string;
149
+ "Does not repeat": string;
150
+ "Every day": string;
151
+ "Every week": string;
152
+ Homepage: string;
153
+ "Host name": string;
154
+ "Profile photo URL": string;
155
+ "Broadcast link": string;
156
+ "Edit event": string;
157
+ "Save changes": string;
158
+ "Create live": string;
159
+ "Schedule class": string;
160
+ "Start class": string;
161
+ "End event": string;
162
+ "End session": string;
163
+ "Session ended": string;
164
+ "Event ended": string;
165
+ Cancelled: string;
166
+ "Replay available": string;
167
+ Join: string;
168
+ "Create invite": string;
169
+ "Invite as": string;
170
+ "Watch now": string;
171
+ "Start a room": string;
172
+ "Recent replays": string;
173
+ "Your account": string;
174
+ "Write with AI": string;
175
+ "Suggested title": string;
176
+ "Suggested description": string;
177
+ "Suggested topic": string;
178
+ "Use these details": string;
179
+ "Learn something live.": string;
180
+ "Screen share": string;
181
+ "Upload and broadcast": string;
182
+ Help: string;
183
+ "Reload Player": string;
184
+ "Copy Bundled CLI Path": string;
185
+ "Developer tools": string;
186
+ Undo: string;
187
+ Redo: string;
188
+ Cut: string;
189
+ Paste: string;
190
+ "Select all": string;
191
+ Status: string;
192
+ "Activity log": string;
193
+ Admin: string;
194
+ "Playback controls": string;
195
+ "Tracks and folders": string;
196
+ "Original-language captions.": string;
197
+ "Skip to playback controls": string;
198
+ "Skip to playlist": string;
199
+ "Skip to transcript and translated audio": string;
200
+ };
201
+ export default _default;