openinpwa.html 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="Cache-Control" content="max-age=0">
  6. <link rel="icon" href="%%FAV_ICO%%" type="image/x-icon">
  7. <meta name="apple-mobile-web-app-status-bar-style" content="black">
  8. <meta name="apple-mobile-web-app-title" content="%%BRAND_TITLE%%">
  9. <meta name="screen-orientation" content="portrait">
  10. <meta name="x5-orientation" content="portrait">
  11. <meta name="referrer" content="origin">
  12. <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
  13. <title>%%BRAND_TITLE%%</title>
  14. <script src="./fingerprint2.js"></script>
  15. <script src="./js/load.m.js"></script>
  16. <script>
  17. window.home_video="";
  18. window.game_title="%%BRAND_TITLE%%";
  19. window.pwaTitle = window.game_title
  20. window.developer="Sands Spin Inc";
  21. window.weblog=window.themeConfig.api+"/api/weblog";
  22. </script>
  23. <style>
  24. * {
  25. margin: 0;
  26. padding: 0;
  27. box-sizing: border-box;
  28. }
  29. body {
  30. font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;
  31. background: rgba(0, 0, 0, 0.9);
  32. min-height: 100vh;
  33. overflow: hidden;
  34. }
  35. .guide-overlay {
  36. position: fixed;
  37. top: 0;
  38. left: 0;
  39. right: 0;
  40. bottom: 0;
  41. display: flex;
  42. flex-direction: column;
  43. z-index: 9999;
  44. }
  45. /* Top section with arrow */
  46. .top-section {
  47. display: flex;
  48. justify-content: flex-end;
  49. padding: 10px 15px;
  50. }
  51. /* Arrow pointing to top-right corner */
  52. .arrow-container {
  53. display: flex;
  54. flex-direction: column;
  55. align-items: center;
  56. margin-right: 5px;
  57. animation: bounce 1.5s infinite;
  58. }
  59. .arrow {
  60. width: 40px;
  61. height: 40px;
  62. border: none;
  63. }
  64. .arrow::before {
  65. content: '';
  66. display: block;
  67. width: 20px;
  68. height: 20px;
  69. border-top: 4px solid #fff;
  70. border-right: 4px solid #fff;
  71. transform: rotate(-45deg);
  72. margin: 10px auto;
  73. }
  74. .tap-text {
  75. color: #fff;
  76. font-size: 14px;
  77. margin-top: 5px;
  78. text-align: center;
  79. }
  80. @keyframes bounce {
  81. 0%, 100% { transform: translateY(0); }
  82. 50% { transform: translateY(-10px); }
  83. }
  84. /* Center content area */
  85. .center-content {
  86. display: flex;
  87. flex-direction: column;
  88. align-items: center;
  89. justify-content: center;
  90. padding: 20px;
  91. flex: 1;
  92. }
  93. /* Logo */
  94. .logo-container {
  95. margin-bottom: 20px;
  96. }
  97. .logo {
  98. width: 80px;
  99. height: 80px;
  100. border-radius: 18px;
  101. box-shadow: 0 4px 20px rgba(0, 0, 0, 0.4);
  102. }
  103. /* Instruction text */
  104. .instruction-text {
  105. color: #fff;
  106. font-size: 16px;
  107. text-align: center;
  108. line-height: 1.6;
  109. max-width: 320px;
  110. margin-bottom: 20px;
  111. }
  112. /* Simulated Chrome menu - directly below instruction */
  113. .fake-menu {
  114. background: #fff;
  115. border-radius: 16px;
  116. box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
  117. width: 280px;
  118. overflow: hidden;
  119. }
  120. /* Top icons row */
  121. .menu-icons {
  122. display: flex;
  123. justify-content: space-around;
  124. padding: 20px 30px;
  125. border-bottom: 1px solid #e0e0e0;
  126. }
  127. .menu-icon {
  128. width: 44px;
  129. height: 44px;
  130. background: #f5f5f5;
  131. border-radius: 50%;
  132. display: flex;
  133. align-items: center;
  134. justify-content: center;
  135. color: #333;
  136. font-size: 18px;
  137. }
  138. .menu-icon svg {
  139. width: 22px;
  140. height: 22px;
  141. fill: #333;
  142. }
  143. /* Menu items */
  144. .menu-item {
  145. padding: 16px 20px;
  146. font-size: 16px;
  147. color: #333;
  148. display: flex;
  149. align-items: center;
  150. transition: background 0.2s;
  151. }
  152. .menu-item:active {
  153. background: #f0f0f0;
  154. }
  155. .menu-item.highlight {
  156. background: linear-gradient(90deg, #e8f5e9, #c8e6c9);
  157. position: relative;
  158. animation: pulse 2s infinite;
  159. }
  160. .menu-item.highlight::before {
  161. content: '';
  162. position: absolute;
  163. left: 0;
  164. top: 0;
  165. bottom: 0;
  166. width: 4px;
  167. background: #4caf50;
  168. }
  169. .menu-item.highlight .finger {
  170. margin-left: auto;
  171. font-size: 24px;
  172. animation: point 1s infinite;
  173. }
  174. @keyframes pulse {
  175. 0%, 100% { box-shadow: inset 0 0 0 0 rgba(76, 175, 80, 0.2); }
  176. 50% { box-shadow: inset 0 0 20px 0 rgba(76, 175, 80, 0.3); }
  177. }
  178. @keyframes point {
  179. 0%, 100% { transform: translateX(0); }
  180. 50% { transform: translateX(-5px); }
  181. }
  182. .menu-item.disabled {
  183. color: #999;
  184. }
  185. /* Chrome footer */
  186. .menu-footer {
  187. padding: 12px 20px;
  188. border-top: 1px solid #e0e0e0;
  189. display: flex;
  190. align-items: center;
  191. gap: 10px;
  192. font-size: 13px;
  193. color: #666;
  194. }
  195. .chrome-icon {
  196. width: 20px;
  197. height: 20px;
  198. border-radius: 50%;
  199. background: linear-gradient(135deg, #ea4335 25%, #fbbc05 25%, #fbbc05 50%, #34a853 50%, #34a853 75%, #4285f4 75%);
  200. }
  201. </style>
  202. </head>
  203. <body>
  204. <noscript>You need to enable JavaScript to run this app.</noscript>
  205. <div id="root"></div>
  206. <div class="guide-overlay" id="guideOverlay">
  207. <!-- Top section with arrow -->
  208. <div class="top-section">
  209. <div class="arrow-container">
  210. <div class="arrow"></div>
  211. <div class="tap-text" data-i18n="tapMenu">Tap the menu</div>
  212. </div>
  213. </div>
  214. <!-- Center content with logo, instruction and menu -->
  215. <div class="center-content">
  216. <div class="logo-container">
  217. <img class="logo" id="appLogo" src="" alt="Logo" onerror="this.style.display='none'">
  218. </div>
  219. <div class="instruction-text" data-i18n="instruction">
  220. Tap the button above and select from the menu below for quick access and better experience.
  221. </div>
  222. <!-- Fake Chrome Menu - now inside center-content -->
  223. <div class="fake-menu">
  224. <!-- Top icons -->
  225. <div class="menu-icons">
  226. <div class="menu-icon">
  227. <svg viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92-1.31-2.92-2.92-2.92z"/></svg>
  228. </div>
  229. <div class="menu-icon">
  230. <svg viewBox="0 0 24 24"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"/></svg>
  231. </div>
  232. <div class="menu-icon">
  233. <svg viewBox="0 0 24 24"><path d="M17.65 6.35A7.958 7.958 0 0012 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08A5.99 5.99 0 0112 18c-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"/></svg>
  234. </div>
  235. </div>
  236. <!-- Menu items -->
  237. <div class="menu-item" data-i18n="share">Share...</div>
  238. <div class="menu-item" data-i18n="findInPage">Find in page</div>
  239. <div class="menu-item highlight">
  240. <span data-i18n="addToHome">Add to Home screen</span>
  241. <span class="finger">👆</span>
  242. </div>
  243. <div class="menu-item disabled" data-i18n="translate">Translate...</div>
  244. <!-- Footer -->
  245. <div class="menu-footer">
  246. <div class="chrome-icon"></div>
  247. <span data-i18n="runningIn">Running in Chrome</span>
  248. </div>
  249. </div>
  250. </div>
  251. </div>
  252. <script>
  253. // Multi-language translations
  254. const translations = {
  255. en: {
  256. tapMenu: "Tap the menu",
  257. instruction: "Tap the button above and select from the menu below for quick access and better experience.",
  258. share: "Share...",
  259. findInPage: "Find in page",
  260. addToHome: "Add to Home screen",
  261. translate: "Translate...",
  262. runningIn: "Running in Chrome",
  263. },
  264. pt: {
  265. tapMenu: "Toque no menu",
  266. instruction: "Toque no botão acima e selecione no menu abaixo para acesso rápido e melhor experiência.",
  267. share: "Compartilhar...",
  268. findInPage: "Encontrar na página",
  269. addToHome: "Adicionar à tela inicial",
  270. translate: "Traduzir...",
  271. runningIn: "Executando no Chrome",
  272. },
  273. es: {
  274. tapMenu: "Toca el menú",
  275. instruction: "Toca el botón de arriba y selecciona en el menú de abajo para acceso rápido y mejor experiencia.",
  276. share: "Compartir...",
  277. findInPage: "Buscar en la página",
  278. addToHome: "Añadir a pantalla de inicio",
  279. translate: "Traducir...",
  280. runningIn: "Ejecutándose en Chrome",
  281. },
  282. ja: {
  283. tapMenu: "メニューをタップ",
  284. instruction: "上のボタンをタップし、下のメニューから選択してください。すばやくアクセスでき、より良い体験ができます。",
  285. share: "共有...",
  286. findInPage: "ページ内検索",
  287. addToHome: "ホーム画面に追加",
  288. translate: "翻訳...",
  289. runningIn: "Chromeで実行中",
  290. },
  291. ko: {
  292. tapMenu: "메뉴를 탭하세요",
  293. instruction: "위의 버튼을 탭하고 아래 메뉴에서 선택하여 빠른 액세스와 더 나은 경험을 즐기세요.",
  294. share: "공유...",
  295. findInPage: "페이지에서 찾기",
  296. addToHome: "홈 화면에 추가",
  297. translate: "번역...",
  298. runningIn: "Chrome에서 실행 중",
  299. },
  300. de: {
  301. tapMenu: "Menü antippen",
  302. instruction: "Tippen Sie auf die Schaltfläche oben und wählen Sie aus dem Menü unten für schnellen Zugriff und bessere Erfahrung.",
  303. share: "Teilen...",
  304. findInPage: "Auf Seite suchen",
  305. addToHome: "Zum Startbildschirm hinzufügen",
  306. translate: "Übersetzen...",
  307. runningIn: "Wird in Chrome ausgeführt",
  308. },
  309. fr: {
  310. tapMenu: "Appuyez sur le menu",
  311. instruction: "Appuyez sur le bouton ci-dessus et sélectionnez dans le menu ci-dessous pour un accès rapide et une meilleure expérience.",
  312. share: "Partager...",
  313. findInPage: "Rechercher sur la page",
  314. addToHome: "Ajouter à l'écran d'accueil",
  315. translate: "Traduire...",
  316. runningIn: "Exécution dans Chrome",
  317. },
  318. it: {
  319. tapMenu: "Tocca il menu",
  320. instruction: "Tocca il pulsante sopra e seleziona dal menu sotto per accesso rapido e migliore esperienza.",
  321. share: "Condividi...",
  322. findInPage: "Trova nella pagina",
  323. addToHome: "Aggiungi a schermata Home",
  324. translate: "Traduci...",
  325. runningIn: "In esecuzione in Chrome",
  326. },
  327. ru: {
  328. tapMenu: "Нажмите на меню",
  329. instruction: "Нажмите кнопку выше и выберите из меню ниже для быстрого доступа и лучшего опыта.",
  330. share: "Поделиться...",
  331. findInPage: "Найти на странице",
  332. addToHome: "Добавить на главный экран",
  333. translate: "Перевести...",
  334. runningIn: "Работает в Chrome",
  335. },
  336. ar: {
  337. tapMenu: "اضغط على القائمة",
  338. instruction: "اضغط على الزر أعلاه واختر من القائمة أدناه للوصول السريع وتجربة أفضل.",
  339. share: "مشاركة...",
  340. findInPage: "البحث في الصفحة",
  341. addToHome: "إضافة إلى الشاشة الرئيسية",
  342. translate: "ترجمة...",
  343. runningIn: "يعمل في Chrome",
  344. },
  345. hi: {
  346. tapMenu: "मेनू पर टैप करें",
  347. instruction: "त्वरित पहुंच और बेहतर अनुभव के लिए ऊपर बटन टैप करें और नीचे मेनू से चुनें।",
  348. share: "शेयर करें...",
  349. findInPage: "पेज में खोजें",
  350. addToHome: "होम स्क्रीन पर जोड़ें",
  351. translate: "अनुवाद करें...",
  352. runningIn: "Chrome में चल रहा है",
  353. },
  354. th: {
  355. tapMenu: "แตะเมนู",
  356. instruction: "แตะปุ่มด้านบนและเลือกจากเมนูด้านล่างเพื่อการเข้าถึงที่รวดเร็วและประสบการณ์ที่ดีขึ้น",
  357. share: "แชร์...",
  358. findInPage: "ค้นหาในหน้า",
  359. addToHome: "เพิ่มไปที่หน้าจอหลัก",
  360. translate: "แปล...",
  361. runningIn: "ทำงานใน Chrome",
  362. },
  363. vi: {
  364. tapMenu: "Nhấn vào menu",
  365. instruction: "Nhấn vào nút ở trên và chọn từ menu bên dưới để truy cập nhanh và trải nghiệm tốt hơn.",
  366. share: "Chia sẻ...",
  367. findInPage: "Tìm trong trang",
  368. addToHome: "Thêm vào màn hình chính",
  369. translate: "Dịch...",
  370. runningIn: "Đang chạy trong Chrome",
  371. },
  372. id: {
  373. tapMenu: "Ketuk menu",
  374. instruction: "Ketuk tombol di atas dan pilih dari menu di bawah untuk akses cepat dan pengalaman yang lebih baik.",
  375. share: "Bagikan...",
  376. findInPage: "Temukan di halaman",
  377. addToHome: "Tambahkan ke layar utama",
  378. translate: "Terjemahkan...",
  379. runningIn: "Berjalan di Chrome",
  380. },
  381. ms: {
  382. tapMenu: "Ketik menu",
  383. instruction: "Ketik butang di atas dan pilih dari menu di bawah untuk akses pantas dan pengalaman yang lebih baik.",
  384. share: "Kongsi...",
  385. findInPage: "Cari dalam halaman",
  386. addToHome: "Tambah ke skrin utama",
  387. translate: "Terjemah...",
  388. runningIn: "Berjalan di Chrome",
  389. },
  390. tr: {
  391. tapMenu: "Menüye dokunun",
  392. instruction: "Hızlı erişim ve daha iyi deneyim için yukarıdaki düğmeye dokunun ve aşağıdaki menüden seçin.",
  393. share: "Paylaş...",
  394. findInPage: "Sayfada bul",
  395. addToHome: "Ana ekrana ekle",
  396. translate: "Çevir...",
  397. runningIn: "Chrome'da çalışıyor",
  398. },
  399. // European languages
  400. nl: {
  401. tapMenu: "Tik op het menu",
  402. instruction: "Tik op de knop hierboven en selecteer uit het menu hieronder voor snelle toegang en een betere ervaring.",
  403. share: "Delen...",
  404. findInPage: "Zoeken op pagina",
  405. addToHome: "Toevoegen aan startscherm",
  406. translate: "Vertalen...",
  407. runningIn: "Wordt uitgevoerd in Chrome",
  408. },
  409. pl: {
  410. tapMenu: "Dotknij menu",
  411. instruction: "Dotknij przycisku powyżej i wybierz z menu poniżej, aby uzyskać szybki dostęp i lepsze wrażenia.",
  412. share: "Udostępnij...",
  413. findInPage: "Znajdź na stronie",
  414. addToHome: "Dodaj do ekranu głównego",
  415. translate: "Przetłumacz...",
  416. runningIn: "Działa w Chrome",
  417. },
  418. cs: {
  419. tapMenu: "Klepněte na menu",
  420. instruction: "Klepněte na tlačítko výše a vyberte z nabídky níže pro rychlý přístup a lepší zážitek.",
  421. share: "Sdílet...",
  422. findInPage: "Najít na stránce",
  423. addToHome: "Přidat na plochu",
  424. translate: "Přeložit...",
  425. runningIn: "Běží v Chrome",
  426. },
  427. sk: {
  428. tapMenu: "Ťuknite na menu",
  429. instruction: "Ťuknite na tlačidlo vyššie a vyberte z ponuky nižšie pre rýchly prístup a lepší zážitok.",
  430. share: "Zdieľať...",
  431. findInPage: "Nájsť na stránke",
  432. addToHome: "Pridať na plochu",
  433. translate: "Preložiť...",
  434. runningIn: "Beží v Chrome",
  435. },
  436. hu: {
  437. tapMenu: "Érintse meg a menüt",
  438. instruction: "Érintse meg a fenti gombot, és válasszon az alábbi menüből a gyors hozzáférés és a jobb élmény érdekében.",
  439. share: "Megosztás...",
  440. findInPage: "Keresés az oldalon",
  441. addToHome: "Hozzáadás a kezdőképernyőhöz",
  442. translate: "Fordítás...",
  443. runningIn: "Chrome-ban fut",
  444. },
  445. ro: {
  446. tapMenu: "Atingeți meniul",
  447. instruction: "Atingeți butonul de mai sus și selectați din meniul de mai jos pentru acces rapid și o experiență mai bună.",
  448. share: "Distribuie...",
  449. findInPage: "Găsește în pagină",
  450. addToHome: "Adaugă pe ecranul de start",
  451. translate: "Traduce...",
  452. runningIn: "Rulează în Chrome",
  453. },
  454. bg: {
  455. tapMenu: "Докоснете менюто",
  456. instruction: "Докоснете бутона по-горе и изберете от менюто по-долу за бърз достъп и по-добро изживяване.",
  457. share: "Сподели...",
  458. findInPage: "Намери в страницата",
  459. addToHome: "Добави към началния екран",
  460. translate: "Преведи...",
  461. runningIn: "Работи в Chrome",
  462. },
  463. el: {
  464. tapMenu: "Πατήστε το μενού",
  465. instruction: "Πατήστε το κουμπί παραπάνω και επιλέξτε από το μενού παρακάτω για γρήγορη πρόσβαση και καλύτερη εμπειρία.",
  466. share: "Κοινοποίηση...",
  467. findInPage: "Εύρεση στη σελίδα",
  468. addToHome: "Προσθήκη στην αρχική οθόνη",
  469. translate: "Μετάφραση...",
  470. runningIn: "Εκτελείται στο Chrome",
  471. },
  472. uk: {
  473. tapMenu: "Торкніться меню",
  474. instruction: "Торкніться кнопки вище та виберіть з меню нижче для швидкого доступу та кращого досвіду.",
  475. share: "Поділитися...",
  476. findInPage: "Знайти на сторінці",
  477. addToHome: "Додати на головний екран",
  478. translate: "Перекласти...",
  479. runningIn: "Працює в Chrome",
  480. },
  481. sv: {
  482. tapMenu: "Tryck på menyn",
  483. instruction: "Tryck på knappen ovan och välj från menyn nedan för snabb åtkomst och bättre upplevelse.",
  484. share: "Dela...",
  485. findInPage: "Sök på sidan",
  486. addToHome: "Lägg till på startskärmen",
  487. translate: "Översätt...",
  488. runningIn: "Körs i Chrome",
  489. },
  490. no: {
  491. tapMenu: "Trykk på menyen",
  492. instruction: "Trykk på knappen ovenfor og velg fra menyen nedenfor for rask tilgang og bedre opplevelse.",
  493. share: "Del...",
  494. findInPage: "Finn på siden",
  495. addToHome: "Legg til på startskjermen",
  496. translate: "Oversett...",
  497. runningIn: "Kjører i Chrome",
  498. },
  499. da: {
  500. tapMenu: "Tryk på menuen",
  501. instruction: "Tryk på knappen ovenfor og vælg fra menuen nedenfor for hurtig adgang og bedre oplevelse.",
  502. share: "Del...",
  503. findInPage: "Find på siden",
  504. addToHome: "Føj til startskærm",
  505. translate: "Oversæt...",
  506. runningIn: "Kører i Chrome",
  507. },
  508. fi: {
  509. tapMenu: "Napauta valikkoa",
  510. instruction: "Napauta yllä olevaa painiketta ja valitse alla olevasta valikosta nopeaa käyttöä ja parempaa kokemusta varten.",
  511. share: "Jaa...",
  512. findInPage: "Etsi sivulta",
  513. addToHome: "Lisää aloitusnäytölle",
  514. translate: "Käännä...",
  515. runningIn: "Toimii Chromessa",
  516. },
  517. hr: {
  518. tapMenu: "Dodirnite izbornik",
  519. instruction: "Dodirnite gornji gumb i odaberite iz donjeg izbornika za brzi pristup i bolje iskustvo.",
  520. share: "Podijeli...",
  521. findInPage: "Pronađi na stranici",
  522. addToHome: "Dodaj na početni zaslon",
  523. translate: "Prevedi...",
  524. runningIn: "Pokreće se u Chromeu",
  525. },
  526. sl: {
  527. tapMenu: "Tapnite meni",
  528. instruction: "Tapnite zgornji gumb in izberite iz spodnjega menija za hiter dostop in boljšo izkušnjo.",
  529. share: "Deli...",
  530. findInPage: "Najdi na strani",
  531. addToHome: "Dodaj na začetni zaslon",
  532. translate: "Prevedi...",
  533. runningIn: "Deluje v Chromu",
  534. },
  535. sr: {
  536. tapMenu: "Додирните мени",
  537. instruction: "Додирните дугме изнад и изаберите из менија испод за брз приступ и боље искуство.",
  538. share: "Подели...",
  539. findInPage: "Пронађи на страници",
  540. addToHome: "Додај на почетни екран",
  541. translate: "Преведи...",
  542. runningIn: "Покреће се у Chrome-у",
  543. },
  544. lt: {
  545. tapMenu: "Bakstelėkite meniu",
  546. instruction: "Bakstelėkite mygtuką viršuje ir pasirinkite iš meniu apačioje, kad greitai pasiektumėte ir patirtumėte geresnę patirtį.",
  547. share: "Bendrinti...",
  548. findInPage: "Rasti puslapyje",
  549. addToHome: "Pridėti prie pradžios ekrano",
  550. translate: "Versti...",
  551. runningIn: "Veikia Chrome",
  552. },
  553. lv: {
  554. tapMenu: "Pieskarieties izvēlnei",
  555. instruction: "Pieskarieties pogai augšā un izvēlieties no izvēlnes zemāk, lai ātri piekļūtu un iegūtu labāku pieredzi.",
  556. share: "Kopīgot...",
  557. findInPage: "Atrast lapā",
  558. addToHome: "Pievienot sākuma ekrānam",
  559. translate: "Tulkot...",
  560. runningIn: "Darbojas Chrome",
  561. },
  562. et: {
  563. tapMenu: "Puudutage menüüd",
  564. instruction: "Puudutage ülalolevat nuppu ja valige allolevast menüüst kiireks juurdepääsuks ja paremaks kogemuseks.",
  565. share: "Jaga...",
  566. findInPage: "Leia lehelt",
  567. addToHome: "Lisa avakuvale",
  568. translate: "Tõlgi...",
  569. runningIn: "Töötab Chrome'is",
  570. },
  571. ca: {
  572. tapMenu: "Toqueu el menú",
  573. instruction: "Toqueu el botó de dalt i seleccioneu del menú de baix per a un accés ràpid i una millor experiència.",
  574. share: "Comparteix...",
  575. findInPage: "Cerca a la pàgina",
  576. addToHome: "Afegeix a la pantalla d'inici",
  577. translate: "Tradueix...",
  578. runningIn: "S'executa a Chrome",
  579. },
  580. eu: {
  581. tapMenu: "Ukitu menua",
  582. instruction: "Ukitu goiko botoia eta hautatu beheko menutik sarbide azkarra eta esperientzia hobea izateko.",
  583. share: "Partekatu...",
  584. findInPage: "Bilatu orrian",
  585. addToHome: "Gehitu hasierako pantailara",
  586. translate: "Itzuli...",
  587. runningIn: "Chrome-n exekutatzen",
  588. },
  589. gl: {
  590. tapMenu: "Toca o menú",
  591. instruction: "Toca o botón de arriba e selecciona no menú de abaixo para un acceso rápido e mellor experiencia.",
  592. share: "Compartir...",
  593. findInPage: "Buscar na páxina",
  594. addToHome: "Engadir á pantalla de inicio",
  595. translate: "Traducir...",
  596. runningIn: "Executándose en Chrome",
  597. },
  598. is: {
  599. tapMenu: "Ýttu á valmyndina",
  600. instruction: "Ýttu á hnappinn hér að ofan og veldu úr valmyndinni hér að neðan til að fá skjótan aðgang og betri upplifun.",
  601. share: "Deila...",
  602. findInPage: "Finna á síðu",
  603. addToHome: "Bæta við heimaskjá",
  604. translate: "Þýða...",
  605. runningIn: "Keyrir í Chrome",
  606. },
  607. mt: {
  608. tapMenu: "Mexmex il-menu",
  609. instruction: "Mexmex il-buttuna ta' fuq u agħżel mill-menu ta' taħt għal aċċess malajr u esperjenza aħjar.",
  610. share: "Aqsam...",
  611. findInPage: "Sib fil-paġna",
  612. addToHome: "Żid fuq l-iskrin ewlieni",
  613. translate: "Ittraduċi...",
  614. runningIn: "Qed jaħdem f'Chrome",
  615. },
  616. sq: {
  617. tapMenu: "Prekni menunë",
  618. instruction: "Prekni butonin më lart dhe zgjidhni nga menyja më poshtë për akses të shpejtë dhe përvojë më të mirë.",
  619. share: "Ndaj...",
  620. findInPage: "Gjej në faqe",
  621. addToHome: "Shto në ekranin bazë",
  622. translate: "Përkthe...",
  623. runningIn: "Po ekzekutohet në Chrome",
  624. },
  625. mk: {
  626. tapMenu: "Допрете го менито",
  627. instruction: "Допрете го копчето погоре и изберете од менито подолу за брз пристап и подобро искуство.",
  628. share: "Сподели...",
  629. findInPage: "Најди на страница",
  630. addToHome: "Додај на почетен екран",
  631. translate: "Преведи...",
  632. runningIn: "Работи во Chrome",
  633. },
  634. bs: {
  635. tapMenu: "Dodirnite meni",
  636. instruction: "Dodirnite dugme iznad i odaberite iz menija ispod za brzi pristup i bolje iskustvo.",
  637. share: "Podijeli...",
  638. findInPage: "Pronađi na stranici",
  639. addToHome: "Dodaj na početni ekran",
  640. translate: "Prevedi...",
  641. runningIn: "Radi u Chromeu",
  642. },
  643. be: {
  644. tapMenu: "Націсніце на меню",
  645. instruction: "Націсніце кнопку вышэй і выберыце з меню ніжэй для хуткага доступу і лепшага вопыту.",
  646. share: "Падзяліцца...",
  647. findInPage: "Знайсці на старонцы",
  648. addToHome: "Дадаць на галоўны экран",
  649. translate: "Перакласці...",
  650. runningIn: "Працуе ў Chrome",
  651. }
  652. };
  653. let currentLang = 'en';
  654. // Detect browser language
  655. function detectLanguage() {
  656. const browserLang = navigator.language || navigator.userLanguage;
  657. const langCode = browserLang.split('-')[0].toLowerCase();
  658. if (translations[langCode]) {
  659. return langCode;
  660. }
  661. return 'en';
  662. }
  663. // Apply translations
  664. function applyTranslations(lang) {
  665. currentLang = lang;
  666. const elements = document.querySelectorAll('[data-i18n]');
  667. elements.forEach(el => {
  668. const key = el.getAttribute('data-i18n');
  669. if (translations[lang] && translations[lang][key]) {
  670. el.textContent = translations[lang][key];
  671. }
  672. });
  673. }
  674. // Set logo from themeConfig
  675. function setLogo() {
  676. const logoEl = document.getElementById('appLogo');
  677. if (window.themeConfig && window.themeConfig.icon) {
  678. logoEl.src = window.themeConfig.icon;
  679. } else {
  680. // Fallback: try to get icon after a delay (in case themeConfig loads later)
  681. setTimeout(() => {
  682. if (window.themeConfig && window.themeConfig.icon) {
  683. logoEl.src = window.themeConfig.icon;
  684. }
  685. }, 500);
  686. }
  687. }
  688. // Initialize
  689. document.addEventListener('DOMContentLoaded', () => {
  690. // Set logo
  691. setLogo();
  692. // Auto-detect language
  693. const detectedLang = detectLanguage();
  694. applyTranslations(detectedLang);
  695. });
  696. </script>
  697. </body>
  698. </html>