PageSourceSearch

https://www.geopelagic.com/assets/js/i18n.js

js geopelagic.com collected 2026-10-02 01:30:08 UTC 56,235 bytes, 1,166 lines download raw bytes

1(() => {
2  const SUPPORTED = ["ar","da","en","es","fil","fr","he","id","it","ja","ko","pt","th","tr","zh","zh-TW"];
3
4  const LOCALIZED_PAGES = new Set([
5    "index.html",
6    "about.html",
7    "about",
8    "pricing.html",
9    "faq.html",
10    "faq-support",
11    "checkout.html",
12    "account.html",
13    "confirm.html",
14  ]);
15
16  const CLEAN_TO_FILE = {
17    about: "about.html",
18    "faq-support": "faq.html",
19    "terms-of-use": "terms.html",
20    "privacy-policy": "privacy.html",
21    pricing: "pricing.html",
22    account: "account.html",
23    checkout: "checkout.html",
24    confirm: "confirm.html",
25  };
26
27  const FILE_TO_CLEAN = {
28    "about.html": "about",
29    "faq.html": "faq-support",
30    "terms.html": "terms-of-use",
31    "privacy.html": "privacy-policy",
32  };
33
34  const LOCALE_META = {
35    ar:      { nativeName: "العربية",        intl: "ar",    dir: "rtl" },
36    da:      { nativeName: "Dansk",           intl: "da-DK", dir: "ltr" },
37    en:      { nativeName: "English",         intl: "en-US", dir: "ltr" },
38    es:      { nativeName: "Español",         intl: "es-ES", dir: "ltr" },
39    fil:     { nativeName: "Filipino",        intl: "fil-PH", dir: "ltr" },
40    fr:      { nativeName: "Français",        intl: "fr-FR", dir: "ltr" },
41    he:      { nativeName: "עברית",           intl: "he-IL", dir: "rtl" },
42    id:      { nativeName: "Bahasa Indonesia", intl: "id-ID", dir: "ltr" },
43    it:      { nativeName: "Italiano",        intl: "it-IT", dir: "ltr" },
44    ja:      { nativeName: "日本語",           intl: "ja-JP", dir: "ltr" },
45    ko:      { nativeName: "한국어",           intl: "ko-KR", dir: "ltr" },
46    pt:      { nativeName: "Português",       intl: "pt-BR", dir: "ltr" },
47    th:      { nativeName: "ไทย",             intl: "th-TH", dir: "ltr" },
48    tr:      { nativeName: "Türkçe",          intl: "tr-TR", dir: "ltr" },
49    zh:      { nativeName: "简体中文",         intl: "zh-CN", dir: "ltr" },
50    "zh-TW": { nativeName: "繁體中文",         intl: "zh-TW", dir: "ltr" },
51  };
52
53  const STRINGS = {
54    ar: {
55      homeAria: "الصفحة الرئيسية لـ BigBlue",
56      navAbout: "حول",
57      navPricing: "الأسعار",
58      navDownload: "تنزيل",
59      navFaq: "常見問題",
60      navFaq: "الأسئلة الشائعة",
61      navAllPlans: "جميع الخطط",
62      footerPricing: "الأسعار",
63      footerAbout: "حول",
64      footerFaq: "الأسئلة الشائعة + الدعم",
65      footerTerms: "شروط الاستخدام",
66      footerPrivacy: "سياسة الخصوصية",
67      footerBrandTagline: "Copyright GeoPelagic LLC",
68      footerBrandTagline: "BigBlue من GeoPelagic LLC",
69      footerDisclaimer:
70        "بيانات الطقس للأغراض المعلوماتية فقط ولا ينبغي الاعتماد عليها في القرارات الحرجة المتعلقة بالسلامة. قياسات الأعماق للمرجعية فقط ولا يجب استخدامها للملاحة — راجع الخرائط البحرية الرسمية قبل الإبحار.",
71      footerLegalNote: "الشروط وسياسة الخصوصية متوفرة باللغة الإنجليزية.",
72      langLabel: "اللغة",
73      planNames: { sport: "Sport", commercial: "Commercial", fleet: "Fleet" },
74      planTitle: "خطة {plan}",
75      checkoutSignIn:
76        "سجّل الدخول بالبريد الإلكتروني للمتابعة إلى الدفع الآمن.",
77      checkoutSignInPriced:
78        "{bits} — سجّل الدخول بالبريد الإلكتروني للمتابعة إلى الدفع الآمن.",
79      deviceLicenses: "{count} تراخيص أجهزة (سطح مكتب أو هاتف)",
80      perDevice: "{rate} لكل جهاز",
81      dealerDiscount: "خصم الموزع {percent}%",
82      dealerDiscountApplied:
83        "تم تطبيق خصم الموزع {percent}% على {plans}.",
84      pleaseWait: "يرجى الانتظار…",
85      enterEmail: "أدخل عنوان بريدك الإلكتروني.",
86      enterCode: "أدخل الرمز الذي أرسلناه إليك.",
87      emailCodeBtn: "أرسل لي رمز تسجيل الدخول",
88      continuePayment: "المتابعة إلى الدفع",
89      openBilling: "فتح بوابة الفواتير",
90      opening: "جارٍ الفتح…",
91      unableSignIn: "تعذّر تسجيل الدخول. حاول مرة أخرى.",
92      unableVerify: "تعذّر التحقق من الرمز. حاول مرة أخرى.",
93      checkoutNotConfigured:
94        "الدفع غير مُهيّأ بعد. يرجى التواصل مع [email protected].",
95      billingNotConfigured: "بوابة الفواتير غير مُهيّأة.",
96      unableBilling: "تعذّر فتح بوابة الفواتير.",
97      portalUnavailable: "رابط البوابة غير متاح.",
98      codeHintCheckout:
99        "أدخل أحدث رمز أرسلناه إلى {email}. الرموز القديمة لن تعمل.",
100      codeHintAccount:
101        "أرسلنا رمزًا إلى {email}. الرمز الأحدث فقط يعمل.",
102      authRequestCode: "اطلب رمز تسجيل دخول جديدًا أولاً.",
103      authInvalidCode:
104        "هذا الرمز غير صالح أو منتهي الصلاحية. اطلب رمزًا جديدًا — البريد الأحدث فقط يعمل.",
105      mapLayers: {
106        none: "قياس الأعماق",
107        sst: "حرارة سطح البحر",
108        chl: "الكلوروفيل",
109        currents: "التيارات",
110        wind: "الرياح",
111        waves: "الأمواج",
112        sla: "شذوذ مستوى سطح البحر",
113        mld: "عمق الطبقة المختلطة",
114        sss: "ملوحة سطح البحر",
115        oxygen: "الأكسجين المذاب",
116      },
117    },
118    da: {
119      homeAria: "BigBlue startside",
120      navAbout: "Om",
121      navPricing: "Priser",
122      navDownload: "Download",
123      navFaq: "FAQ",
124      navAllPlans: "Alle planer",
125      footerPricing: "Priser",
126      footerAbout: "Om",
127      footerFaq: "FAQ + Support",
128      footerTerms: "Vilkår for brug",
129      footerPrivacy: "Privatlivspolitik",
130      footerBrandTagline: "Copyright GeoPelagic LLC",
131      footerDisclaimer:
132        "Vejrdata er til information og bør ikke bruges til sikkerhedskritiske beslutninger. Batymetri er kun til reference og må ikke bruges til navigation - konsulter officielle søkort før du går offshore.",
133      footerLegalNote: "Vilkår og privatlivspolitik er på engelsk.",
134      langLabel: "Sprog",
135      planNames: { sport: "Sport", commercial: "Commercial", fleet: "Fleet" },
136      planTitle: "{plan}-plan",
137      checkoutSignIn:
138        "Log ind med din e-mail for at fortsætte til sikker betaling.",
139      checkoutSignInPriced:
140        "{bits} - log ind med din e-mail for at fortsætte til sikker betaling.",
141      deviceLicenses:
142        "{count} enhedslicenser (desktop eller mobil)",
143      perDevice: "{rate} pr. enhed",
144      dealerDiscount: "{percent}% forhandler-rabat",
145      dealerDiscountApplied:
146        "{percent}% forhandler-rabat anvendt på {plans}.",
147      pleaseWait: "Vent venligst…",
148      enterEmail: "Indtast din e-mailadresse.",
149      enterCode: "Indtast koden, vi sendte dig.",
150      emailCodeBtn: "Send mig en login-kode",
151      continuePayment: "Fortsæt til betaling",
152      openBilling: "Åbn faktureringsportal",
153      opening: "Åbner…",
154      unableSignIn: "Kunne ikke logge ind. Prøv igen.",
155      unableVerify: "Kunne ikke bekræfte koden. Prøv igen.",
156      checkoutNotConfigured:
157        "Betaling er endnu ikke konfigureret. Kontakt [email protected].",
158      billingNotConfigured: "Faktureringsportalen er ikke konfigureret.",
159      unableBilling: "Kunne ikke åbne faktureringsportalen.",
160      portalUnavailable: "Portal-URL er ikke tilgængelig.",
161      codeHintCheckout:
162        "Indtast den nyeste kode, vi sendte til {email}. Ældre koder virker ikke.",
163      codeHintAccount:
164        "Vi sendte en kode til {email}. Kun den nyeste kode virker.",
165      authRequestCode: "Anmod om en ny login-kode først.",
166      authInvalidCode:
167        "Koden er ugyldig eller udløbet. Anmod om en ny - kun den nyeste e-mail virker.",
168      mapLayers: {
169        none: "Batymetri",
170        sst: "Havoverfladetemperatur",
171        chl: "Klorofyl",
172        currents: "Strømme",
173        wind: "Vind",
174        waves: "Bølger",
175        sla: "Havniveauanomali",
176        mld: "Blandet lags dybde",
177        sss: "Havoverfladesalinitet",
178        oxygen: "Opløst ilt",
179      },
180    },
181    en: {
182      homeAria: "BigBlue home",
183      navAbout: "About",
184      navPricing: "Pricing",
185      navDownload: "Download",
186      navFaq: "FAQ",
187      navAllPlans: "All plans",
188      footerPricing: "Pricing",
189      footerAbout: "About",
190      footerFaq: "FAQ + Support",
191      footerTerms: "Terms of Use",
192      footerPrivacy: "Privacy Policy",
193      footerBrandTagline: "Copyright GeoPelagic LLC",
194      footerDisclaimer:
195        "Weather data is informational and should not be relied on for safety-critical decisions. Bathymetry is for reference only and must not be used for navigation - consult official charts before heading offshore.",
196      footerLegalNote: "",
197      langLabel: "Language",
198      planNames: { sport: "Sport", commercial: "Commercial", fleet: "Fleet" },
199      planTitle: "{plan} plan",
200      checkoutSignIn:
201        "Sign in with your email to continue to secure checkout.",
202      checkoutSignInPriced:
203        "{bits} - sign in with your email to continue to secure checkout.",
204      deviceLicenses: "{count} device licenses (desktop or mobile)",
205      perDevice: "{rate} per device",
206      dealerDiscount: "{percent}% dealer discount",
207      dealerDiscountApplied:
208        "{percent}% dealer discount applied to {plans}.",
209      pleaseWait: "Please wait…",
210      enterEmail: "Enter your email address.",
211      enterCode: "Enter the code we emailed you.",
212      emailCodeBtn: "Email me a sign-in code",
213      continuePayment: "Continue to payment",
214      openBilling: "Open billing portal",
215      opening: "Opening…",
216      unableSignIn: "Unable to sign in. Try again.",
217      unableVerify: "Unable to verify code. Try again.",
218      checkoutNotConfigured:
219        "Checkout is not configured yet. Please contact [email protected].",
220      billingNotConfigured: "Billing portal is not configured.",
221      unableBilling: "Unable to open billing portal.",
222      portalUnavailable: "Portal url unavailable.",
223      codeHintCheckout:
224        "Enter the newest code we emailed to {email}. Older codes will not work.",
225      codeHintAccount:
226        "We emailed a code to {email}. Only the newest code works.",
227      authRequestCode: "Request a new sign-in code first.",
228      authInvalidCode:
229        "That code is invalid or expired. Request a new code - only the newest email works.",
230      mapLayers: {
231        none: "Bathymetry",
232        sst: "Sea Surface Temperature",
233        chl: "Chlorophyll",
234        currents: "Currents",
235        wind: "Wind",
236        waves: "Waves",
237        sla: "Sea Level Anomaly",
238        mld: "Mixed Layer Depth",
239        sss: "Sea Surface Salinity",
240        oxygen: "Dissolved Oxygen",
241      },
242    },
243    es: {
244      homeAria: "Inicio de BigBlue",
245      navAbout: "Acerca de",
246      navPricing: "Precios",
247      navDownload: "Descargar",
248      navFaq: "FAQ",
249      navAllPlans: "Todos los planes",
250      footerPricing: "Precios",
251      footerAbout: "Acerca de",
252      footerFaq: "Preguntas + Soporte",
253      footerTerms: "Términos de uso",
254      footerPrivacy: "Política de privacidad",
255      footerBrandTagline: "Copyright GeoPelagic LLC",
256      footerDisclaimer:
257        "Los datos meteorológicos son informativos y no deben usarse para decisiones críticas de seguridad. La batimetría es solo de referencia y no debe usarse para la navegación: consulte cartas oficiales antes de salir a mar abierto.",
258      footerLegalNote: "Términos y privacidad disponibles en inglés.",
259      langLabel: "Idioma",
260      planNames: { sport: "Sport", commercial: "Commercial", fleet: "Fleet" },
261      planTitle: "Plan {plan}",
262      checkoutSignIn:
263        "Inicie sesión con su correo para continuar al pago seguro.",
264      checkoutSignInPriced:
265        "{bits} - inicie sesión con su correo para continuar al pago seguro.",
266      deviceLicenses:
267        "{count} licencias de dispositivo (escritorio o móvil)",
268      perDevice: "{rate} por dispositivo",
269      dealerDiscount: "{percent}% de descuento de distribuidor",
270      dealerDiscountApplied:
271        "{percent}% de descuento de distribuidor aplicado a {plans}.",
272      pleaseWait: "Espere…",
273      enterEmail: "Introduzca su dirección de correo.",
274      enterCode: "Introduzca el código que le enviamos.",
275      emailCodeBtn: "Enviarme un código de acceso",
276      continuePayment: "Continuar al pago",
277      openBilling: "Abrir portal de facturación",
278      opening: "Abriendo…",
279      unableSignIn: "No se pudo iniciar sesión. Inténtelo de nuevo.",
280      unableVerify: "No se pudo verificar el código. Inténtelo de nuevo.",
281      checkoutNotConfigured:
282        "El pago aún no está configurado. Contacte a [email protected].",
283      billingNotConfigured: "El portal de facturación no está configurado.",
284      unableBilling: "No se pudo abrir el portal de facturación.",
285      portalUnavailable: "URL del portal no disponible.",
286      codeHintCheckout:
287        "Introduzca el código más reciente que enviamos a {email}. Los códigos anteriores no funcionan.",
288      codeHintAccount:
289        "Enviamos un código a {email}. Solo funciona el más reciente.",
290      authRequestCode: "Solicite primero un código de acceso nuevo.",
291      authInvalidCode:
292        "Ese código no es válido o ha caducado. Solicite uno nuevo: solo funciona el correo más reciente.",
293      mapLayers: {
294        none: "Batimetría",
295        sst: "Temperatura superficial del mar",
296        chl: "Clorofila",
297        currents: "Corrientes",
298        wind: "Viento",
299        waves: "Oleaje",
300        sla: "Anomalía del nivel del mar",
301        mld: "Profundidad de la capa mixta",
302        sss: "Salinidad superficial",
303        oxygen: "Oxígeno disuelto",
304      },
305    },
306    fil: {
307      homeAria: "BigBlue home",
308      navAbout: "Tungkol",
309      navPricing: "Presyo",
310      navDownload: "I-download",
311      navFaq: "FAQ",
312      navAllPlans: "Lahat ng plano",
313      footerPricing: "Presyo",
314      footerAbout: "Tungkol",
315      footerFaq: "FAQ + Suporta",
316      footerTerms: "Mga Tuntunin ng Paggamit",
317      footerPrivacy: "Patakaran sa Privacy",
318      footerBrandTagline: "Copyright GeoPelagic LLC",
319      footerDisclaimer:
320        "Ang data ng panahon ay pang-impormasyon lamang at hindi dapat gamitin para sa mga desisyong kritikal sa kaligtasan. Ang bathymetry ay para sa sanggunian lamang at hindi dapat gamitin para sa nabigasyon — sumangguni sa mga opisyal na tsart bago lumayag.",
321      footerLegalNote: "Mga tuntunin at patakaran sa privacy ay nasa Ingles.",
322      langLabel: "Wika",
323      planNames: { sport: "Sport", commercial: "Commercial", fleet: "Fleet" },
324      planTitle: "Planong {plan}",
325      checkoutSignIn:
326        "Mag-sign in gamit ang iyong email upang magpatuloy sa secure na checkout.",
327      checkoutSignInPriced:
328        "{bits} — mag-sign in gamit ang iyong email upang magpatuloy sa secure na checkout.",
329      deviceLicenses: "{count} lisensya ng device (desktop o mobile)",
330      perDevice: "{rate} bawat device",
331      dealerDiscount: "{percent}% diskwento ng dealer",
332      dealerDiscountApplied:
333        "{percent}% diskwento ng dealer na inilapat sa {plans}.",
334      pleaseWait: "Mangyaring maghintay…",
335      enterEmail: "Ilagay ang iyong email address.",
336      enterCode: "Ilagay ang code na ipinadala namin sa iyo.",
337      emailCodeBtn: "I-email sa akin ang sign-in code",
338      continuePayment: "Magpatuloy sa pagbabayad",
339      openBilling: "Buksan ang billing portal",
340      opening: "Binubuksan…",
341      unableSignIn: "Hindi makapag-sign in. Subukan muli.",
342      unableVerify: "Hindi ma-verify ang code. Subukan muli.",
343      checkoutNotConfigured:
344        "Hindi pa naka-configure ang checkout. Makipag-ugnayan sa [email protected].",
345      billingNotConfigured: "Hindi pa naka-configure ang billing portal.",
346      unableBilling: "Hindi mabuksan ang billing portal.",
347      portalUnavailable: "Hindi available ang URL ng portal.",
348      codeHintCheckout:
349        "Ilagay ang pinakabagong code na ipinadala namin sa {email}. Hindi gagana ang mga lumang code.",
350      codeHintAccount:
351        "Nagpadala kami ng code sa {email}. Ang pinakabagong code lang ang gagana.",
352      authRequestCode: "Humiling muna ng bagong sign-in code.",
353      authInvalidCode:
354        "Hindi valid o expired na ang code na iyon. Humiling ng bagong code — ang pinakabagong email lang ang gagana.",
355      mapLayers: {
356        none: "Bathymetry",
357        sst: "Temperatura ng Ibabaw ng Dagat",
358        chl: "Chlorophyll",
359        currents: "Mga Agos",
360        wind: "Hangin",
361        waves: "Alon",
362        sla: "Sea Level Anomaly",
363        mld: "Mixed Layer Depth",
364        sss: "Salinity ng Ibabaw ng Dagat",
365        oxygen: "Dissolved Oxygen",
366      },
367    },
368    fr: {
369      homeAria: "Accueil BigBlue",
370      navAbout: "À propos",
371      navPricing: "Tarifs",
372      navDownload: "Télécharger",
373      navFaq: "FAQ",
374      navAllPlans: "Tous les plans",
375      footerPricing: "Tarifs",
376      footerAbout: "À propos",
377      footerFaq: "FAQ + Assistance",
378      footerTerms: "Conditions d'utilisation",
379      footerPrivacy: "Politique de confidentialité",
380      footerBrandTagline: "Copyright GeoPelagic LLC",
381      footerDisclaimer:
382        "Les données météorologiques sont fournies à titre indicatif et ne doivent pas être utilisées pour des décisions critiques de sécurité. La bathymétrie est fournie à titre de référence uniquement et ne doit pas être utilisée pour la navigation — consultez les cartes officielles avant de prendre la mer.",
383      footerLegalNote: "Les conditions et la politique de confidentialité sont disponibles en anglais.",
384      langLabel: "Langue",
385      planNames: { sport: "Sport", commercial: "Commercial", fleet: "Fleet" },
386      planTitle: "Plan {plan}",
387      checkoutSignIn:
388        "Connectez-vous avec votre e-mail pour continuer vers le paiement sécurisé.",
389      checkoutSignInPriced:
390        "{bits} — connectez-vous avec votre e-mail pour continuer vers le paiement sécurisé.",
391      deviceLicenses: "{count} licences d'appareil (ordinateur ou mobile)",
392      perDevice: "{rate} par appareil",
393      dealerDiscount: "Remise revendeur de {percent}%",
394      dealerDiscountApplied:
395        "Remise revendeur de {percent}% appliquée à {plans}.",
396      pleaseWait: "Veuillez patienter…",
397      enterEmail: "Saisissez votre adresse e-mail.",
398      enterCode: "Saisissez le code que nous vous avons envoyé.",
399      emailCodeBtn: "Envoyez-moi un code de connexion",
400      continuePayment: "Continuer vers le paiement",
401      openBilling: "Ouvrir le portail de facturation",
402      opening: "Ouverture…",
403      unableSignIn: "Impossible de se connecter. Réessayez.",
404      unableVerify: "Impossible de vérifier le code. Réessayez.",
405      checkoutNotConfigured:
406        "Le paiement n'est pas encore configuré. Veuillez contacter [email protected].",
407      billingNotConfigured: "Le portail de facturation n'est pas configuré.",
408      unableBilling: "Impossible d'ouvrir le portail de facturation.",
409      portalUnavailable: "URL du portail non disponible.",
410      codeHintCheckout:
411        "Saisissez le code le plus récent envoyé à {email}. Les anciens codes ne fonctionnent pas.",
412      codeHintAccount:
413        "Nous avons envoyé un code à {email}. Seul le code le plus récent fonctionne.",
414      authRequestCode: "Demandez d'abord un nouveau code de connexion.",
415      authInvalidCode:
416        "Ce code est invalide ou expiré. Demandez un nouveau code — seul le dernier e-mail fonctionne.",
417      mapLayers: {
418        none: "Bathymétrie",
419        sst: "Température de surface de la mer",
420        chl: "Chlorophylle",
421        currents: "Courants",
422        wind: "Vent",
423        waves: "Vagues",
424        sla: "Anomalie du niveau de la mer",
425        mld: "Profondeur de la couche de mélange",
426        sss: "Salinité de surface",
427        oxygen: "Oxygène dissous",
428      },
429    },
430    he: {
431      homeAria: "דף הבית של BigBlue",
432      navAbout: "אודות",
433      navPricing: "תמחור",
434      navDownload: "הורדה",
435      navFaq: "שאלות נפוצות",
436      navAllPlans: "כל התוכניות",
437      footerPricing: "תמחור",
438      footerAbout: "אודות",
439      footerFaq: "שאלות נפוצות + תמיכה",
440      footerTerms: "תנאי שימוש",
441      footerPrivacy: "מדיניות פרטיות",
442      footerBrandTagline: "Copyright GeoPelagic LLC",
443      footerDisclaimer:
444        "נתוני מזג האוויר הם למטרות מידע בלבד ואין להסתמך עליהם להחלטות קריטיות לבטיחות. נתוני עומק הם לעיון בלבד ואין להשתמש בהם לניווט — יש לעיין במפות רשמיות לפני היציאה לים.",
445      footerLegalNote: "התנאים ומדיניות הפרטיות זמינים באנגלית.",
446      langLabel: "שפה",
447      planNames: { sport: "Sport", commercial: "Commercial", fleet: "Fleet" },
448      planTitle: "תוכנית {plan}",
449      checkoutSignIn:
450        "היכנסו עם האימייל שלכם כדי להמשיך לתשלום מאובטח.",
451      checkoutSignInPriced:
452        "{bits} — היכנסו עם האימייל שלכם כדי להמשיך לתשלום מאובטח.",
453      deviceLicenses: "{count} רישיונות מכשיר (מחשב או נייד)",
454      perDevice: "{rate} למכשיר",
455      dealerDiscount: "הנחת משווק {percent}%",
456      dealerDiscountApplied:
457        "הנחת משווק {percent}% הוחלה על {plans}.",
458      pleaseWait: "נא להמתין…",
459      enterEmail: "הזינו את כתובת האימייל שלכם.",
460      enterCode: "הזינו את הקוד ששלחנו לכם.",
461      emailCodeBtn: "שלחו לי קוד כניסה",
462      continuePayment: "המשך לתשלום",
463      openBilling: "פתיחת פורטל החיוב",
464      opening: "פותח…",
465      unableSignIn: "לא ניתן להיכנס. נסו שוב.",
466      unableVerify: "לא ניתן לאמת את הקוד. נסו שוב.",
467      checkoutNotConfigured:
468        "התשלום עדיין לא מוגדר. אנא פנו אל [email protected].",
469      billingNotConfigured: "פורטל החיוב אינו מוגדר.",
470      unableBilling: "לא ניתן לפתוח את פורטל החיוב.",
471      portalUnavailable: "כתובת הפורטל אינה זמינה.",
472      codeHintCheckout:
473        "הזינו את הקוד העדכני ביותר ששלחנו אל {email}. קודים ישנים לא יעבדו.",
474      codeHintAccount:
475        "שלחנו קוד אל {email}. רק הקוד העדכני ביותר עובד.",
476      authRequestCode: "בקשו קוד כניסה חדש תחילה.",
477      authInvalidCode:
478        "הקוד אינו תקף או שפג תוקפו. בקשו קוד חדש — רק האימייל האחרון עובד.",
479      mapLayers: {
480        none: "מדידת עומק",
481        sst: "טמפרטורת פני הים",
482        chl: "כלורופיל",
483        currents: "זרמים",
484        wind: "רוח",
485        waves: "גלים",
486        sla: "חריגת מפלס הים",
487        mld: "עומק שכבת הערבוב",
488        sss: "מליחות פני הים",
489        oxygen: "חמצן מומס",
490      },
491    },
492    id: {
493      homeAria: "Beranda BigBlue",
494      navAbout: "Tentang",
495      navPricing: "Harga",
496      navDownload: "Unduh",
497      navFaq: "FAQ",
498      navAllPlans: "Semua paket",
499      footerPricing: "Harga",
500      footerAbout: "Tentang",
501      footerFaq: "FAQ + Dukungan",
502      footerTerms: "Ketentuan Penggunaan",
503      footerPrivacy: "Kebijakan Privasi",
504      footerBrandTagline: "Copyright GeoPelagic LLC",
505      footerDisclaimer:
506        "Data cuaca bersifat informatif dan tidak boleh digunakan untuk keputusan yang bersifat kritis terhadap keselamatan. Batimetri hanya untuk referensi dan t
506idak boleh digunakan untuk navigasi — periksa peta laut resmi sebelum berlayar.",
507      footerLegalNote: "Ketentuan dan kebijakan privasi tersedia dalam bahasa Inggris.",
508      langLabel: "Bahasa",
509      planNames: { sport: "Sport", commercial: "Commercial", fleet: "Fleet" },
510      planTitle: "Paket {plan}",
511      checkoutSignIn:
512        "Masuk dengan email Anda untuk melanjutkan ke pembayaran aman.",
513      checkoutSignInPriced:
514        "{bits} — masuk dengan email Anda untuk melanjutkan ke pembayaran aman.",
515      deviceLicenses: "{count} lisensi perangkat (desktop atau seluler)",
516      perDevice: "{rate} per perangkat",
517      dealerDiscount: "Diskon dealer {percent}%",
518      dealerDiscountApplied:
519        "Diskon dealer {percent}% diterapkan pada {plans}.",
520      pleaseWait: "Harap tunggu…",
521      enterEmail: "Masukkan alamat email Anda.",
522      enterCode: "Masukkan kode yang kami kirimkan.",
523      emailCodeBtn: "Kirim kode masuk via email",
524      continuePayment: "Lanjutkan ke pembayaran",
525      openBilling: "Buka portal tagihan",
526      opening: "Membuka…",
527      unableSignIn: "Tidak dapat masuk. Coba lagi.",
528      unableVerify: "Tidak dapat memverifikasi kode. Coba lagi.",
529      checkoutNotConfigured:
530        "Checkout belum dikonfigurasi. Hubungi [email protected].",
531      billingNotConfigured: "Portal tagihan belum dikonfigurasi.",
532      unableBilling: "Tidak dapat membuka portal tagihan.",
533      portalUnavailable: "URL portal tidak tersedia.",
534      codeHintCheckout:
535        "Masukkan kode terbaru yang kami kirim ke {email}. Kode lama tidak berlaku.",
536      codeHintAccount:
537        "Kami mengirim kode ke {email}. Hanya kode terbaru yang berlaku.",
538      authRequestCode: "Minta kode masuk baru terlebih dahulu.",
539      authInvalidCode:
540        "Kode tersebut tidak valid atau sudah kedaluwarsa. Minta kode baru — hanya email terbaru yang berlaku.",
541      mapLayers: {
542        none: "Batimetri",
543        sst: "Suhu Permukaan Laut",
544        chl: "Klorofil",
545        currents: "Arus",
546        wind: "Angin",
547        waves: "Gelombang",
548        sla: "Anomali Tinggi Muka Laut",
549        mld: "Kedalaman Lapisan Campuran",
550        sss: "Salinitas Permukaan Laut",
551        oxygen: "Oksigen Terlarut",
552      },
553    },
554    it: {
555      homeAria: "Home di BigBlue",
556      navAbout: "Chi siamo",
557      navPricing: "Prezzi",
558      navDownload: "Scarica",
559      navFaq: "FAQ",
560      navAllPlans: "Tutti i piani",
561      footerPricing: "Prezzi",
562      footerAbout: "Chi siamo",
563      footerFaq: "FAQ + Supporto",
564      footerTerms: "Termini di utilizzo",
565      footerPrivacy: "Informativa sulla privacy",
566      footerBrandTagline: "Copyright GeoPelagic LLC",
567      footerDisclaimer:
568        "I dati meteorologici sono forniti a scopo informativo e non devono essere utilizzati per decisioni critiche per la sicurezza. La batimetria è solo a scopo di riferimento e non deve essere utilizzata per la navigazione — consultare le carte nautiche ufficiali prima di prendere il largo.",
569      footerLegalNote: "Termini e informativa sulla privacy disponibili in inglese.",
570      langLabel: "Lingua",
571      planNames: { sport: "Sport", commercial: "Commercial", fleet: "Fleet" },
572      planTitle: "Piano {plan}",
573      checkoutSignIn:
574        "Accedi con la tua email per procedere al pagamento sicuro.",
575      checkoutSignInPriced:
576        "{bits} — accedi con la tua email per procedere al pagamento sicuro.",
577      deviceLicenses: "{count} licenze dispositivo (desktop o mobile)",
578      perDevice: "{rate} per dispositivo",
579      dealerDiscount: "Sconto rivenditore {percent}%",
580      dealerDiscountApplied:
581        "Sconto rivenditore {percent}% applicato a {plans}.",
582      pleaseWait: "Attendere…",
583      enterEmail: "Inserisci il tuo indirizzo email.",
584      enterCode: "Inserisci il codice che ti abbiamo inviato.",
585      emailCodeBtn: "Inviami un codice di accesso",
586      continuePayment: "Continua al pagamento",
587      openBilling: "Apri il portale di fatturazione",
588      opening: "Apertura…",
589      unableSignIn: "Impossibile accedere. Riprova.",
590      unableVerify: "Impossibile verificare il codice. Riprova.",
591      checkoutNotConfigured:
592        "Il pagamento non è ancora configurato. Contatta [email protected].",
593      billingNotConfigured: "Il portale di fatturazione non è configurato.",
594      unableBilling: "Impossibile aprire il portale di fatturazione.",
595      portalUnavailable: "URL del portale non disponibile.",
596      codeHintCheckout:
597        "Inserisci il codice più recente che abbiamo inviato a {email}. I codici precedenti non funzioneranno.",
598      codeHintAccount:
599        "Abbiamo inviato un codice a {email}. Solo il codice più recente funziona.",
600      authRequestCode: "Richiedi prima un nuovo codice di accesso.",
601      authInvalidCode:
602        "Quel codice non è valido o è scaduto. Richiedi un nuovo codice — funziona solo l'email più recente.",
603      mapLayers: {
604        none: "Batimetria",
605        sst: "Temperatura superficiale del mare",
606        chl: "Clorofilla",
607        currents: "Correnti",
608        wind: "Vento",
609        waves: "Onde",
610        sla: "Anomalia del livello del mare",
611        mld: "Profondità dello strato di mescolamento",
612        sss: "Salinità superficiale del mare",
613        oxygen: "Ossigeno disciolto",
614      },
615    },
616    ja: {
617      homeAria: "BigBlueホーム",
618      navAbout: "概要",
619      navPricing: "料金",
620      navDownload: "ダウンロード",
621      navFaq: "FAQ",
622      navAllPlans: "全プラン",
623      footerPricing: "料金",
624      footerAbout: "概要",
625      footerFaq: "FAQ + サポート",
626      footerTerms: "利用規約",
627      footerPrivacy: "プライバシーポリシー",
628      footerBrandTagline: "Copyright GeoPelagic LLC",
629      footerDisclaimer:
630        "気象データは情報提供のみを目的としており、安全上重要な判断に使用しないでください。水深データは参考用であり航行に使用してはなりません — 沖合に出る前に公式海図をご確認ください。",
631      footerLegalNote: "利用規約とプライバシーポリシーは英語で提供されています。",
632      langLabel: "言語",
633      planNames: { sport: "Sport", commercial: "Commercial", fleet: "Fleet" },
634      planTitle: "{plan}プラン",
635      checkoutSignIn:
636        "メールアドレスでサインインして安全なお支払いに進みます。",
637      checkoutSignInPriced:
638        "{bits} — メールアドレスでサインインして安全なお支払いに進みます。",
639      deviceLicenses: "デバイスライセンス{count}台(デスクトップまたはモバイル)",
640      perDevice: "デバイスあたり{rate}",
641      dealerDiscount: "ディーラー割引{percent}%",
642      dealerDiscountApplied:
643        "{plans}に{percent}%のディーラー割引が適用されました。",
644      pleaseWait: "お待ちください…",
645      enterEmail: "メールアドレスを入力してください。",
646      enterCode: "送信されたコードを入力してください。",
647      emailCodeBtn: "サインインコードをメールで送信",
648      continuePayment: "お支払いに進む",
649      openBilling: "請求ポータルを開く",
650      opening: "開いています…",
651      unableSignIn: "サインインできませんでした。もう一度お試しください。",
652      unableVerify: "コードを確認できませんでした。もう一度お試しください。",
653      checkoutNotConfigured:
654        "チェックアウトはまだ設定されていません。[email protected]までご連絡ください。",
655      billingNotConfigured: "請求ポータルが設定されていません。",
656      unableBilling: "請求ポータルを開けませんでした。",
657      portalUnavailable: "ポータルURLが利用できません。",
658      codeHintCheckout:
659        "{email}にお送りした最新のコードを入力してください。以前のコードは無効です。",
660      codeHintAccount:
661        "{email}にコードを送信しました。最新のコードのみ有効です。",
662      authRequestCode: "まず新しいサインインコードをリクエストしてください。",
663      authInvalidCode:
664        "そのコードは無効または期限切れです。新しいコードをリクエストしてください — 最新のメールのみ有効です。",
665      mapLayers: {
666        none: "水深測量",
667        sst: "海面水温",
668        chl: "クロロフィル",
669        currents: "海流",
670        wind: "風",
671        waves: "波浪",
672        sla: "海面高度偏差",
673        mld: "混合層深度",
674        sss: "海面塩分",
675        oxygen: "溶存酸素",
676      },
677    },
678    ko: {
679      homeAria: "BigBlue 홈",
680      navAbout: "소개",
681      navPricing: "요금제",
682      navDownload: "다운로드",
683      navFaq: "FAQ",
684      navAllPlans: "전체 요금제",
685      footerPricing: "요금제",
686      footerAbout: "소개",
687      footerFaq: "FAQ + 지원",
688      footerTerms: "이용약관",
689      footerPrivacy: "개인정보 처리방침",
690      footerBrandTagline: "Copyright GeoPelagic LLC",
691      footerDisclaimer:
692        "기상 데이터는 정보 제공 목적이며 안전에 중요한 결정에 사용해서는 안 됩니다. 수심 데이터는 참고용이며 항해에 사용해서는 안 됩니다 — 출항 전 공식 해도를 확인하십시오.",
693      footerLegalNote: "이용약관 및 개인정보 처리방침은 영어로 제공됩니다.",
694      langLabel: "언어",
695      planNames: { sport: "Sport", commercial: "Commercial", fleet: "Fleet" },
696      planTitle: "{plan} 플랜",
697      checkoutSignIn:
698        "이메일로 로그인하여 안전한 결제로 진행하세요.",
699      checkoutSignInPriced:
700        "{bits} — 이메일로 로그인하여 안전한 결제로 진행하세요.",
701      deviceLicenses: "기기 라이선스 {count}대 (데스크톱 또는 모바일)",
702      perDevice: "기기당 {rate}",
703      dealerDiscount: "딜러 할인 {percent}%",
704      dealerDiscountApplied:
705        "{plans}에 {percent}% 딜러 할인이 적용되었습니다.",
706      pleaseWait: "잠시만 기다려 주세요…",
707      enterEmail: "이메일 주소를 입력하세요.",
708      enterCode: "발송된 코드를 입력하세요.",
709      emailCodeBtn: "로그인 코드 이메일로 받기",
710      continuePayment: "결제 진행",
711      openBilling: "결제 포털 열기",
712      opening: "여는 중…",
713      unableSignIn: "로그인할 수 없습니다. 다시 시도해 주세요.",
714      unableVerify: "코드를 확인할 수 없습니다. 다시 시도해 주세요.",
715      checkoutNotConfigured:
716        "결제가 아직 구성되지 않았습니다. [email protected]으로 문의해 주세요.",
717      billingNotConfigured: "결제 포털이 구성되지 않았습니다.",
718      unableBilling: "결제 포털을 열 수 없습니다.",
719      portalUnavailable: "포털 URL을 사용할 수 없습니다.",
720      codeHintCheckout:
721        "{email}(으)로 보낸 최신 코드를 입력하세요. 이전 코드는 작동하지 않습니다.",
722      codeHintAccount:
723        "{email}(으)로 코드를 보냈습니다. 최신 코드만 작동합니다.",
724      authRequestCode: "먼저 새 로그인 코드를 요청하세요.",
725      authInvalidCode:
726        "해당 코드는 유효하지 않거나 만료되었습니다. 새 코드를 요청하세요 — 최신 이메일만 작동합니다.",
727      mapLayers: {
728        none: "수심",
729        sst: "해수면 온도",
730        chl: "엽록소",
731        currents: "해류",
732        wind: "바람",
733        waves: "파고",
734        sla: "해수면 높이 편차",
735        mld: "혼합층 깊이",
736        sss: "해수면 염분",
737        oxygen: "용존 산소",
738      },
739    },
740    pt: {
741      homeAria: "Início do BigBlue",
742      navAbout: "Sobre",
743      navPricing: "Preços",
744      navDownload: "Baixar",
745      navFaq: "FAQ",
746      navAllPlans: "Todos os planos",
747      footerPricing: "Preços",
748      footerAbout: "Sobre",
749      footerFaq: "FAQ + Suporte",
750      footerTerms: "Termos de Uso",
751      footerPrivacy: "Política de Privacidade",
752      footerBrandTagline: "Copyright GeoPelagic LLC",
753      footerDisclaimer:
754        "Os dados meteorológicos são informativos e não devem ser usados para decisões críticas de segurança. A batimetria é apenas para referência e não deve ser usada para navegação — consulte cartas náuticas oficiais antes de sair para o mar.",
755      footerLegalNote: "Termos e política de privacidade disponíveis em inglês.",
756      langLabel: "Idioma",
757      planNames: { sport: "Sport", commercial: "Commercial", fleet: "Fleet" },
758      planTitle: "Plano {plan}",
759      checkoutSignIn:
760        "Entre com seu e-mail para continuar para o pagamento seguro.",
761      checkoutSignInPriced:
762        "{bits} — entre com seu e-mail para continuar para o pagamento seguro.",
763      deviceLicenses: "{count} licenças de dispositivo (desktop ou móvel)",
764      perDevice: "{rate} por dispositivo",
765      dealerDiscount: "Desconto de revendedor {percent}%",
766      dealerDiscountApplied:
767        "Desconto de revendedor {percent}
767% aplicado a {plans}.",
768      pleaseWait: "Aguarde…",
769      enterEmail: "Digite seu endereço de e-mail.",
770      enterCode: "Digite o código que enviamos para você.",
771      emailCodeBtn: "Enviar código de acesso por e-mail",
772      continuePayment: "Continuar para o pagamento",
773      openBilling: "Abrir portal de cobrança",
774      opening: "Abrindo…",
775      unableSignIn: "Não foi possível entrar. Tente novamente.",
776      unableVerify: "Não foi possível verificar o código. Tente novamente.",
777      checkoutNotConfigured:
778        "O pagamento ainda não está configurado. Entre em contato com [email protected].",
779      billingNotConfigured: "O portal de cobrança não está configurado.",
780      unableBilling: "Não foi possível abrir o portal de cobrança.",
781      portalUnavailable: "URL do portal não disponível.",
782      codeHintCheckout:
783        "Digite o código mais recente que enviamos para {email}. Códigos anteriores não funcionam.",
784      codeHintAccount:
785        "Enviamos um código para {email}. Apenas o código mais recente funciona.",
786      authRequestCode: "Solicite um novo código de acesso primeiro.",
787      authInvalidCode:
788        "Esse código é inválido ou expirou. Solicite um novo código — apenas o e-mail mais recente funciona.",
789      mapLayers: {
790        none: "Batimetria",
791        sst: "Temperatura da Superfície do Mar",
792        chl: "Clorofila",
793        currents: "Correntes",
794        wind: "Vento",
795        waves: "Ondas",
796        sla: "Anomalia do Nível do Mar",
797        mld: "Profundidade da Camada de Mistura",
798        sss: "Salinidade da Superfície do Mar",
799        oxygen: "Oxigênio Dissolvido",
800      },
801    },
802    th: {
803      homeAria: "หน้าหลัก BigBlue",
804      navAbout: "เกี่ยวกับ",
805      navPricing: "ราคา",
806      navDownload: "ดาวน์โหลด",
807      navFaq: "FAQ",
808      navAllPlans: "แผนทั้งหมด",
809      footerPricing: "ราคา",
810      footerAbout: "เกี่ยวกับ",
811      footerFaq: "คำถามที่พบบ่อย + การสนับสนุน",
812      footerTerms: "เงื่อนไขการใช้งาน",
813      footerPrivacy: "นโยบายความเป็นส่วนตัว",
814      footerBrandTagline: "Copyright GeoPelagic LLC",
815      footerDisclaimer:
816        "ข้อมูลสภาพอากาศมีไว้เพื่อเป็นข้อมูลเท่านั้นและไม่ควรนำมาใช้ในการตัดสินใจที่เกี่ยวข้องกับความปลอดภัย ข้อมูลความลึกท้องทะเลมีไว้เพื่อการอ้างอิงเท่านั้นและต้องไม่ใช้สำหรับการเดินเรือ — โปรดตรวจสอบแผนที่เดินเรือทางการก่อนออกทะเล",
817      footerLegalNote: "เงื่อนไขการใช้งานและนโยบายความเป็นส่วนตัวเป็นภาษาอังกฤษ",
818      langLabel: "ภาษา",
819      planNames: { sport: "Sport", commercial: "Commercial", fleet: "Fleet" },
820      planTitle: "แผน {plan}",
821      checkoutSignIn:
822        "ลงชื่อเข้าใช้ด้วยอีเมลเพื่อดำเนินการชำระเงินอย่างปลอดภัย",
823      checkoutSignInPriced:
824        "{bits} — ลงชื่อเข้าใช้ด้วยอีเมลเพื่อดำเนินการชำระเงินอย่างปลอดภัย",
825      deviceLicenses: "สิทธิ์การใช้งานอุปกรณ์ {count} เครื่อง (เดสก์ท็อปหรือมือถือ)",
826      perDevice: "{rate} ต่ออุปกรณ์",
827      dealerDiscount: "ส่วนลดตัวแทนจำหน่าย {percent}%",
828      dealerDiscountApplied:
829        "ส่วนลดตัวแทนจำหน่าย {percent}% ถูกนำไปใช้กับ {plans}",
830      pleaseWait: "กรุณารอสักครู่…",
831      enterEmail: "กรุณากรอกที่อยู่อีเมลของคุณ",
832      enterCode: "กรุณากรอกรหัสที่เราส่งให้คุณ",
833      emailCodeBtn: "ส่งรหัสเข้าสู่ระบบทางอีเมล",
834      continuePayment: "ดำเนินการชำระเงิน",
835      openBilling: "เปิดพอร์ทัลการเรียกเก็บเงิน",
836      opening: "กำลังเปิด…",
837      unableSignIn: "ไม่สามารถเข้าสู่ระบบได้ ลองอีกครั้ง",
838      unableVerify: "ไม่สามารถยืนยันรหัสได้ ลองอีกครั้ง",
839      checkoutNotConfigured:
840        "การชำระเงินยังไม่ได้ตั้งค่า กรุณาติดต่อ [email protected]",
841      billingNotConfigured: "พอร์ทัลการเรียกเก็บเงินยังไม่ได้ตั้งค่า",
842      unableBilling: "ไม่สามารถเปิดพอร์ทัลการเรียกเก็บเงินได้",
843      portalUnavailable: "URL ของพอร์ทัลไม่พร้อมใช้งาน",
844      codeHintCheckout:
845        "กรุณากรอกรหัสล่าสุดที่เราส่งไปยัง {email} รหัสเก่าจะใช้ไม่ได้",
846      codeHintAccount:
847        "เราส่งรหัสไปยัง {email} เฉพาะรหัสล่าสุดเท่านั้นที่ใช้ได้",
848      authRequestCode: "กรุณาขอรหัสเข้าสู่ระบบใหม่ก่อน",
849      authInvalidCode:
850        "รหัสนั้นไม่ถูกต้องหรือหมดอายุ ขอรหัสใหม่ — เฉพาะอีเมลล่าสุดเท่านั้นที่ใช้ได้",
851      mapLayers: {
852        none: "ความลึกท้องทะเล",
853        sst: "อุณหภูมิผิวน้ำทะเล",
854        chl: "คลอโรฟิลล์",
855        currents: "กระแสน้ำ",
856        wind: "ลม",
857        waves: "คลื่น",
858        sla: "ความผิดปกติของระดับน้ำทะเล",
859        mld: "ความลึกชั้นผสม",
860        sss: "ความเค็มผิวน้ำทะเล",
861        oxygen: "ออกซิเจนละลาย",
862      },
863    },
864    tr: {
865      homeAria: "BigBlue Ana Sayfa",
866      navAbout: "Hakkında",
867      navPricing: "Fiyatlandırma",
868      navDownload: "İndir",
869      navFaq: "SSS",
870      navAllPlans: "Tüm planlar",
871      footerPricing: "Fiyatlandırma",
872      footerAbout: "Hakkında",
873      footerFaq: "SSS + Destek",
874      footerTerms: "Kullanım Koşulları",
875      footerPrivacy: "Gizlilik Politikası",
876      footerBrandTagline: "Copyright GeoPelagic LLC",
877      footerDisclaimer:
878        "Hava durumu verileri bilgi amaçlıdır ve güvenlik açısından kritik kararlar için kullanılmamalıdır. Batimetri yalnızca referans amaçlıdır ve navigasyon için kullanılmamalıdır — açık denize çıkmadan önce resmi deniz haritalarına başvurun.",
879      footerLegalNote: "Kullanım koşulları ve gizlilik politikası İngilizce olarak sunulmaktadır.",
880      langLabel: "Dil",
881      planNames: { sport: "Sport", commercial: "Commercial", fleet: "Fleet" },
882      planTitle: "{plan} Planı",
883      checkoutSignIn:
884        "Güvenli ödemeye devam etmek için e-postanızla giriş yapın.",
885      checkoutSignInPriced:
886        "{bits} — güvenli ödemeye devam etmek için e-postanızla giriş yapın.",
887      deviceLicenses: "{count} cihaz lisansı (masaüstü veya mobil)",
888      perDevice: "Cihaz başına {rate}",
889      dealerDiscount: "%{percent} bayi indirimi",
890      dealerDiscountApplied:
891        "{plans} için %{percent} bayi indirimi uygulandı.",
892      pleaseWait: "Lütfen bekleyin…",
893      enterEmail: "E-posta adresinizi girin.",
894      enterCode: "Gönderdiğimiz kodu girin.",
895      emailCodeBtn: "Giriş kodu gönder",
896      continuePayment: "Ödemeye devam et",
897      openBilling: "Fatura portalını aç",
898      opening: "Açılıyor…",
899      unableSignIn: "Giriş yapılamadı. Tekrar deneyin.",
900      unableVerify: "Kod doğrulanamadı. Tekrar deneyin.",
901      checkoutNotConfigured:
902        "Ödeme henüz yapılandırılmadı. [email protected] ile iletişime geçin.",
903      billingNotConfigured: "Fatura portalı yapılandırılmadı.",
904      unableBilling: "Fatura portalı açılamadı.",
905      portalUnavailable: "Portal URL'si mevcut değil.",
906      codeHintCheckout:
907        "{email} adresine gönderdiğimiz en son kodu girin. Eski kodlar çalışmaz.",
908      codeHintAccount:
909        "{email} adresine bir kod gönderdik. Yalnızca en son kod geçerlidir.",
910      authRequestCode: "Önce yeni bir giriş kodu talep edin.",
911      authInvalidCode:
912        "Bu kod geçersiz veya süresi dolmuş. Yeni kod talep edin — yalnızca en son e-posta geçerlidir.",
913      mapLayers: {
914        none: "Batimetri",
915        sst: "Deniz Yüzey Sıcaklığı",
916        chl: "Klorofil",
917        currents: "Akıntılar",
918        wind: "Rüzgar",
919        waves: "Dalgalar",
920        sla: "Deniz Seviyesi Anomalisi",
921        mld: "Karışım Tabakası Derinliği",
922        sss: "Deniz Yüzey Tuzluluğu",
923        oxygen: "Çözünmüş Oksijen",
924      },
925    },
926    zh: {
927      homeAria: "BigBlue首页",
928      navAbout: "关于",
929      navPricing: "定价",
930      navDownload: "下载",
931      navFaq: "常见问题",
932      navAllPlans: "全部套餐",
933      footerPricing: "定价",
934      footerAbout: "关于",
935      footerFaq: "常见问题 + 支持",
936      footerTerms: "使用条款",
937      footerPrivacy: "隐私政策",
938      footerBrandTagline: "Copyright GeoPelagic LLC",
939      footerDisclaimer:
940        "气象数据仅供参考,不应用于安全关键决策。水深数据仅供参考,不得用于导航 — 出海前请查阅官方海图。",
941      footerLegalNote: "使用条款和隐私政策以英语提供。",
942      langLabel: "语言",
943      planNames: { sport: "Sport", commercial: "Commercial", fleet: "Fleet" },
944      planTitle: "{plan}套餐",
945      checkoutSignIn:
946        "使用您的电子邮件登录以继续安全结账。",
947      checkoutSignInPriced:
948        "{bits} — 使用您的电子邮件登录以继续安全结账。",
949      deviceLicenses: "{count}个设备许可证(桌面或移动)",
950      perDevice: "每台设备{rate}",
951      dealerDiscount: "经销商折扣{percent}%",
952      dealerDiscountApplied:
953        "{plans}已应用{percent}%经销商折扣。",
954      pleaseWait: "请稍候…",
955      enterEmail: "请输入您的电子邮件地址。",
956      enterCode: "请输入我们发送给您的验证码。",
957      emailCodeBtn: "发送登录验证码到邮箱",
958      continuePayment: "继续付款",
959      openBilling: "打开账单门户",
960      opening: "正在打开…",
961      unableSignIn: "无法登录。请重试。",
962      unableVerify: "无法验证验证码。请重试。",
963      checkoutNotConfigured:
964        "结账尚未配置。请联系[email protected]。",
965      billingNotConfigured: "账单门户尚未配置。",
966      unableBilling: "无法打开账单门户。",
967      portalUnavailable: "门户URL不可用。",
968      codeHintCheckout:
969        "请输入我们发送到{email}的最新验证码。旧验证码将无法使用。",
970      codeHintAccount:
971        "我们已向{email}发送验证码。仅最新验证码有效。",
972      authRequestCode: "请先请求新的登录验证码。",
973      authInvalidCode:
974        "该验证码无效或已过期。请请求新验证码 — 仅最新邮件中的验证码有效。",
975      mapLayers: {
976        none: "æ°´æ·±",
977        sst: "海面温度",
978        chl: "叶绿素",
979        currents: "海流",
980        wind: "风",
981        waves: "海浪",
982        sla: "海面高度异常",
983        mld: "混合层深度",
984        sss: "海面盐度",
985        oxygen: "溶解氧",
986      },
987    },
988    "zh-TW": {
989      homeAria: "BigBlue首頁",
990      navAbout: "關於",
991      navPricing: "定價",
992      navDownload: "下載",
993      navAllPlans: "全部方案",
994      footerPricing: "定價",
995      footerAbout: "關於",
996      footerFaq: "常見問題 + 支援",
997      footerTerms: "使用條款",
998      footerPrivacy: "隱私政策",
999      footerDisclaimer:
1000        "氣象資料僅供參考,不應用於安全關鍵決策。水深資料僅供參考,不得用於導航 — 出海前請查閱官方海圖。",
1001      footerLegalNote: "使用條款和隱私政策以英語提供。",
1002      langLabel: "語言",
1003      planNames: { sport: "Sport", commercial: "Commercial", fleet: "Fleet" },
1004      planTitle: "{plan}方案",
1005      checkoutSignIn:
1006        "使用您的電子郵件登入以繼續安全結帳。",
1007      checkoutSignInPriced:
1008        "{bits} — 使用您的電子郵件登入以繼續安全結帳。",
1009      deviceLicenses: "{count}個裝置授權(桌面或行動裝置)",
1010      perDevice: "每台裝置{rate}",
1011      dealerDiscount: "經銷商折扣{percent}%",
1012      dealerDiscountApplied:
1013        "{plans}已套用{percent}%經銷商折扣。",
1014      pleaseWait: "請稍候…",
1015      enterEmail: "請輸入您的電子郵件地址。",
1016      enterCode: "請輸入我們發送給您的驗證碼。",
1017      emailCodeBtn: "發送登入驗證碼到郵箱",
1018      continuePayment: "繼續付款",
1019      openBilling: "開啟帳單入口",
1020      opening: "正在開啟…",
1021      unableSignIn: "無法登入。請重試。",
1022      unableVerify: "無法驗證驗證碼。請重試。",
1023      checkoutNotConfigured:
1024        "結帳尚未設定。請聯繫[email protected]。",
1025      billingNotConfigured: "帳單入口尚未設定。",
1026      unableBilling: "無法開啟帳單入口。",
1027      portalUnavailable: "入口URL不可用。",
1028      codeHintCheckout:
1029        "請輸入我們發送到{email}的最新驗證碼。舊驗證碼將無法使用。",
1030      codeHintAccount:
1031        "我們已向{email}發送驗證碼。僅最新驗證碼有效。",
1032      authRequestCode: "請先請求新的登入驗證碼。",
1033      authInvalidCode:
1034        "該驗證碼無效或已過期。請請求新驗證碼 — 僅最新郵件中的驗證碼有效。",
1035      mapLayers: {
1036        none: "æ°´æ·±",
1037        sst: "海面溫度",
1038        chl: "葉綠素",
1039        currents: "海流",
1040        wind: "風",
1041        waves: "海浪",
1042        sla: "海面高度異常",
1043        mld: "混合層深度",
1044        sss: "海面鹽度",
1045        oxygen: "溶解氧",
1046      },
1047    },
1048  };
1049
1050  function normalize(lang) {
1051    let raw = String(lang || "en").replace(/_/g, "-");
1052    const lower = raw.toLowerCase();
1053    if (lower === "zh-tw" || lower === "zh-hant") return "zh-TW";
1054    if (lower === "zh-cn") return "zh";
1055    if (lower === "tl") return "fil";
1056    const exact = SUPPORTED.find(s => s.toLowerCase() === lower);
1057    if (exact) return exact;
1058    const prefix = lower.split("-")[0];
1059    const byPrefix = SUPPORTED.find(s => s.toLowerCase() === prefix);
1060    return byPrefix || "en";
1061  }
1062
1063  function locale() {
1064    return normalize(document.documentElement.lang);
1065  }
1066
1067  function assetRoot() {
1068    return locale() === "en" ? "" : "../";
1069  }
1070
1071  function pageFile() {
1072    const parts = location.pathname.split("/").filter(Boolean);
1073    let last = parts[parts.length - 1] || "index.html";
1074    if (!last.includes(".")) {
1075      last = CLEAN_TO_FILE[last] || "index.html";
1076    }
1077    return last;
1078  }
1079
1080  function switchPage() {
1081    const file = pageFile();
1082    return LOCALIZED_PAGES.has(file) || LOCALIZED_PAGES.has(FILE_TO_CLEAN[file] || "")
1083      ? file
1084      : "index.html";
1085  }
1086
1087  function publicName(file) {
1088    return FILE_TO_CLEAN[file] || file;
1089  }
1090
1091  function langHref(targetLang) {
1092    const target = normalize(targetLang);
1093    const cur = locale();
1094    const current = pageFile();
1095    if (target === cur) return publicName(current);
1096    const file = switchPage();
1097    const name = publicName(file);
1098    if (target === "en") return "../" + name;
1099    if (cur === "en") return target + "/" + name;
1100    return "../" + target + "/" + name;
1101  }
1102
1103  function hrefFor(lang, file) {
1104    const name = publicName(file || switchPage());
1105    const target = normalize(lang);
1106    if (target === "en") return assetRoot() === "" ? name : "../" + name;
1107    if (locale() === "en") return target + "/" + name;
1108    if (locale() === target) return name;
1109    return "../" + target + "/" + name;
1110  }
1111
1112  function t(key, vars) {
1113    const bag = STRINGS[locale()] || STRINGS.en;
1114    let value = bag[key];
1115    if (value == null) value = STRINGS.en[key];
1116    if (value == null) return key;
1117    if (typeof value !== "string") return value;
1118    return value.replace(/\{(\w+)\}/g, (_, name) =>
1119      vars && vars[name] != null ? String(vars[name]) : ""
1120    );
1121  }
1122
1123  function planName(plan) {
1124    const names = t("planNames") || STRINGS.en.planNames;
1125    return names[plan] || plan;
1126  }
1127
1128  function mapLayerLabel(id) {
1129    const layers = t("mapLayers") || STRINGS.en.mapLayers;
1130    return layers[id] || id;
1131  }
1132
1133  function intlLocale() {
1134    const meta = LOCALE_META[locale()];
1135    return meta ? meta.intl : "en-US";
1136  }
1137
1138  function remember() {
1139    try {
1140      localStorage.setItem("bigblue_lang", locale());
1141    } catch (_) {}
1142  }
1143
1144  function isRtl() {
1145    const meta = LOCALE_META[locale()];
1146    return meta ? meta.dir === "rtl" : false;
1147  }
1148
1149  window.BigBlueI18n = {
1150    SUPPORTED,
1151    LOCALIZED_PAGES,
1152    LOCALE_META,
1153    locale,
1154    assetRoot,
1155    pageFile,
1156    switchPage,
1157    langHref,
1158    hrefFor,
1159    t,
1160    planName,
1161    mapLayerLabel,
1162    intlLocale,
1163    remember,
1164    isRtl,
1165  };
1166})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.