1/* 05.10.2026 â "2027 kursları için 31 Aralık 2026'ya kadar 2026 fiyatları" duyurusu. 2 Kural (kullanıcı, 22.09.2026): 2027 tarihli kayıtlar 31.12.2026'ya kadar 2026 fiyatıyla alınır. 3 1 Ocak 2027 00:00 (İstanbul) itibarıyla hiçbir Åey göstermez â elle kaldırmaya gerek yok. 4 Kullanım: <script src="/js/price-notice-2027.js?v=1" data-mode="prices|bu|home" defer></script> 5 Sihirbaz: window.RTS_PRICE_2027.wizardNote(lang, startDate) â HTML ya da '' */ 6(function () { 7 var END = Date.parse('2027-01-01T00:00:00+03:00'); 8 var active = function () { return Date.now() < END; }; 9 // 2026 â 2027 (tablo fiyatları; 2027'de kısa süreler kademeli â 1 hafta örneÄi) 10 var T = { 11 en: { title: '2027 courses at 2026 prices until 31 December', body: 'Our prices change on 1 January 2027. If you book a course that starts in 2027 by 31 December 2026, the current 2026 price applies.', ex: 'For example, one week:', int: 'Intensive course', std: 'Standard course', bu: 'Bildungsurlaub', now: 'now', from: 'from 2027', week: 'per week', home: 'Planning for 2027? Book by 31 December and the 2026 price applies.', more: 'See prices', wiz: 'Your 2027 course is booked at the 2026 price. This applies to bookings made by 31 December 2026.' }, 12 tr: { title: '31 Aralıkâa kadar 2027 kursları 2026 fiyatlarıyla', body: 'Fiyatlarımız 1 Ocak 2027âde deÄiÅiyor. 2027âde baÅlayacak bir kursa 31 Aralık 2026âya kadar kayıt olursanız güncel 2026 fiyatı geçerlidir.', ex: 'ÃrneÄin bir hafta:', int: 'YoÄun kurs', std: 'Standart kurs', bu: 'Bildungsurlaub', now: 'Åimdi', from: '2027âden itibaren', week: 'haftalık', home: '2027âyi mi planlıyorsunuz? 31 Aralıkâa kadar kayıt olun, 2026 fiyatı geçerli olsun.', more: 'Fiyatları görün', wiz: '2027 kursunuz 2026 fiyatıyla alınıyor. Bu fiyat 31 Aralık 2026âya kadar yapılan kayıtlar için geçerlidir.' }, 13 de: { title: '2027er Kurse zu 2026er Preisen bis 31. Dezember', body: 'Unsere Preise ändern sich am 1. Januar 2027. Wenn Sie einen Kurs mit Beginn 2027 bis zum 31. Dezember 2026 buchen, gilt der aktuelle Preis von 2026.', ex: 'Zum Beispiel eine Woche:', int: 'Intensivkurs', std: 'Standardkurs', bu: 'Bildungsurlaub', now: 'jetzt', from: 'ab 2027', week: 'pro Woche', home: 'Sie planen 2027? Bis 31. Dezember buchen, es gilt der Preis von 2026.', more: 'Preise ansehen', wiz: 'Ihr Kurs 2027 wird zum Preis von 2026 gebucht. Dies gilt für Buchungen bis zum 31. Dezember 2026.' }, 14 es: { title: 'Cursos de 2027 a precios de 2026 hasta el 31 de diciembre', body: 'Nuestros precios cambian el 1 de enero de 2027. Si reservas un curso que empieza en 2027 antes del 31 de diciembre de 2026, se aplica el precio actual de 2026.', ex: 'Por ejemplo, una semana:', int: 'Curso intensivo', std: 'Curso estándar', bu: 'Bildungsurlaub', now: 'ahora', from: 'desde 2027', week: 'por semana', home: '¿Planeas 2027? Reserva antes del 31 de diciembre y se aplica el precio de 2026.', more: 'Ver precios', wiz: 'Tu curso de 2027 se reserva al precio de 2026. Válido para reservas hechas hasta el 31 de diciembre de 2026.' }, 15 fr: { title: 'Cours 2027 aux tarifs 2026 jusquâau 31 décembre', body: 'Nos tarifs changent le 1er janvier 2027. Si vous réservez un cours qui commence en 2027 dâici le 31 décembre 2026, le tarif actuel de 2026 sâapplique.', ex: 'Par exemple, une semaine :', int: 'Cours intensif', std: 'Cours standard', bu: 'Bildungsurlaub', now: 'aujourdâhui', from: 'à partir de 2027', week: 'par semaine', home: 'Vous préparez 2027 ? Réservez dâici le 31 décembre et le tarif 2026 sâapplique.', more: 'Voir les tarifs', wiz: 'Votre cours 2027 est réservé au tarif 2026. Valable pour les réservations faites jusquâau 31 décembre 2026.' }, 16 it: { title: 'Corsi 2027 ai prezzi 2026 fino al 31 dicembre', body: 'I nostri prezzi cambiano il 1° gennaio 2027. Se prenoti un corso che inizia nel 2027 entro il 31 dicembre 2026, si applica il prezzo attuale del 2026.', ex: 'Per esempio, una settimana:', int: 'Corso intensivo', std: 'Corso standard', bu: 'Bildungsurlaub', now: 'ora', from: 'dal 2027', week: 'a settimana', home: 'Stai pianificando il 2027? Prenota entro il 31 dicembre e si applica il prezzo 2026.', more: 'Vedi i prezzi', wiz: 'Il tuo corso 2027 è prenotato al prezzo 2026. Valido per le prenotazioni fatte entro il 31 dicembre 2026.' }, 17 ru: { title: 'ÐÑÑÑÑ 2027 года по Ñенам 2026 года до 31 декабÑÑ', body: 'ÐаÑи ÑÐµÐ½Ñ Ð¼ÐµÐ½ÑÑÑÑÑ 1 ÑнваÑÑ 2027 года. ÐÑли Ð²Ñ Ð·Ð°Ð±ÑониÑÑеÑе кÑÑÑ Ñ Ð½Ð°Ñалом в 2027 Ð³Ð¾Ð´Ñ Ð´Ð¾ 31 декабÑÑ 2026 Ð
17³Ð¾Ð´Ð°, дейÑÑвÑÐµÑ ÑекÑÑÐ°Ñ Ñена 2026 года.', ex: 'ÐапÑимеÑ, одна неделÑ:', int: 'ÐнÑенÑивнÑй кÑÑÑ', std: 'СÑандаÑÑнÑй кÑÑÑ', bu: 'Bildungsurlaub', now: 'ÑейÑаÑ', from: 'Ñ 2027', week: 'в неделÑ', home: 'ÐланиÑÑеÑе 2027 год? ÐабÑониÑÑйÑе до 31 декабÑÑ, и дейÑÑвÑÐµÑ Ñена 2026 года.', more: 'ÐоÑмоÑÑеÑÑ ÑенÑ', wiz: 'ÐÐ°Ñ ÐºÑÑÑ 2027 года бÑониÑÑеÑÑÑ Ð¿Ð¾ Ñене 2026 года. ÐейÑÑвÑÐµÑ Ð´Ð»Ñ Ð±ÑониÑований до 31 декабÑÑ 2026 года.' }, 18 ar: { title: 'Ø¯ÙØ±Ø§Øª 2027 بأسعار 2026 ØØªÙ 31 Ø¯ÙØ³Ù بر', body: 'ØªØªØºÙØ± Ø£Ø³Ø¹Ø§Ø±ÙØ§ ÙÙ 1 ÙÙØ§Ùر 2027. إذا ØØ¬Ø²Øª Ø¯ÙØ±Ø© تبدأ ÙÙ 2027 ØØªÙ 31 Ø¯ÙØ³Ù بر 2026Ø ÙÙØ·Ø¨ÙÙ٠سعر 2026 Ø§ÙØØ§ÙÙ.', ex: 'عÙ٠سبÙ٠اÙÙ Ø«Ø§ÙØ Ø£Ø³Ø¨ÙØ¹ ÙØ§ØØ¯:', int: 'Ø§ÙØ¯Ùرة اÙÙ ÙØ«ÙØ©', std: 'Ø§ÙØ¯Ùرة Ø§ÙØ¹Ø§Ø¯ÙØ©', bu: 'Bildungsurlaub', now: 'Ø§ÙØ¢Ù', from: 'Ù Ù 2027', week: 'Ø£Ø³Ø¨ÙØ¹ÙÙØ§', home: 'تخطط ÙØ¹Ø§Ù 2027Ø Ø§ØØ¬Ø² ØØªÙ 31 Ø¯ÙØ³Ù بر ÙÙÙØ·Ø¨ÙÙ٠سعر 2026.', more: 'اطÙÙØ¹ عÙÙ Ø§ÙØ£Ø³Ø¹Ø§Ø±', wiz: 'ØªÙØØ¬Ø² Ø¯ÙØ±ØªÙ ÙØ¹Ø§Ù 2027 بسعر 2026. ÙÙØ·Ø¨Ù ذÙ٠عÙÙ Ø§ÙØØ¬ÙØ²Ø§Øª ØØªÙ 31 Ø¯ÙØ³Ù بر 2026.' }, 19 ja: { title: '12æ31æ¥ã¾ã§ã2027å¹´ã®ã³ã¼ã¹ã2026å¹´æéã§', body: 'æéã¯2027å¹´1æ1æ¥ã«æ¹å®ããã¾ãã2027å¹´éå§ã®ã³ã¼ã¹ã2026å¹´12æ31æ¥ã¾ã§ã«ãç³ãè¾¼ã¿ããã ãã¨ãç¾å¨ã®2026å¹´æéãé©ç¨ããã¾ãã', ex: 'ä¾ï¼1é±éã®å ´å', int: 'éä¸ã³ã¼ã¹', std: 'ã¹ã¿ã³ãã¼ãã³ã¼ã¹', bu: 'Bildungsurlaub', now: 'ç¾å¨', from: '2027年以é', week: '1é±é', home: '2027å¹´ã®ãäºå®ã¯ï¼12æ31æ¥ã¾ã§ã®ãç³ãè¾¼ã¿ã§2026å¹´æéãé©ç¨ããã¾ãã', more: 'æéãè¦ã', wiz: '2027å¹´ã®ã³ã¼ã¹ã¯2026å¹´æéã§ã®ãç³ãè¾¼ã¿ã¨ãªãã¾ãã2026å¹´12æ31æ¥ã¾ã§ã®ãç³ãè¾¼ã¿ã«é©ç¨ããã¾ãã' }, 20 zh: { title: '12æ31æ¥åé¢è®¢ï¼2027年课ç¨äº«2026å¹´ä»·æ ¼', body: 'æä»¬çä»·æ ¼å°äº2027å¹´1æ1æ¥è°æ´ãå¨2026å¹´12æ31æ¥åé¢è®¢2027å¹´å¼è¯¾ç课ç¨ï¼éç¨å½åç2026å¹´ä»·æ ¼ã', ex: 'ä¾å¦ä¸å¨ï¼', int: '强å课ç¨', std: 'æ å课ç¨', bu: 'Bildungsurlaub', now: 'ç°ä»·', from: '2027å¹´èµ·', week: 'æ¯å¨', home: '计å2027å¹´å¦ä¹ ï¼12æ31æ¥åé¢è®¢å³äº«2026å¹´ä»·æ ¼ã', more: 'æ¥çä»·æ ¼', wiz: 'ä½ ç2027å¹´è¯¾ç¨æ2026å¹´ä»·æ ¼é¢è®¢ï¼éç¨äº2026å¹´12æ31æ¥åçé¢è®¢ã' }, 21 }; 22 var PRICE_PAGE = { en: '/prices.html', tr: '/tr/fiyatlar.html', de: '/de/preise.html', es: '/es/precios.html', fr: '/fr/prix.html', it: '/it/prezzi.html', ru: '/ru/tseny.html', ar: '/ar/al-asaar.html', ja: '/ja/ryokin.html', zh: '/zh/jiage.html' }; 23 function L(lang) { var l = String(lang || document.documentElement.lang || 'en').slice(0, 2).toLowerCase(); return T[l] ? l : 'en'; } 24 function box(inner) { 25 var d = document.createElement('div'); 26 d.className = 'rts-p27'; 27 d.setAttribute('role', 'note'); 28 d.style.cssText = 'max-width:880px;margin:0 auto 28px;background:#fff;border:1px solid #e3e8ef;border-inline-start:4px solid #0F1B2D;border-radius:12px;padding:18px 22px;text-align:start;box-shadow:0 4px 16px rgba(15,27,45,.05);font-family:inherit;'; 29 d.innerHTML = inner; 30 return d; 31 } 32 function row(name, a, b, t) { 33 return '<div style="display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-top:1px solid #f1f5f9;font-size:14px;"><span style="color:#334155;">' + name + '</span><span style="white-space:nowrap;font-variant-numeric:tabular-nums;"><b style="color:#0F1B2D;">â¬' + a + '</b> <span style="color:#64748b;">' + t.now + '</span> · <span style="color:#64748b;">â¬' + b + ' ' + t.from + '</span></span></div>'; 34 } 35 function prices(t) { 36 return '<div style="font-weight:800;color:#0F1B2D;font-size:17px;margin-bottom:6px;">' + t.title + '</div>' 37 + '<p style="color:#475569;font-size:14.5px;line-height:1.6;margin:0 0 10px;">' + t.body + '</p>' 38 + '<div style="font-size:13px;font-weight:700;color:#64748b;margin-bottom:2px;">' + t.ex + '</div>' 39 + row(t.int, 200, 230, t) + row(t.std, 150, 175, t) + row(t.bu + ' (' + t.week + ')', 400, 450, t); 40 } 41 function bu(t) { 42 return '<div style="font-weight:800;color:#0F1B2D;font-size:17px;margin-bottom:6px;">' + t.title + '</div>' 43 + '<p style="color:#475569;font-size:14.5px;line-height:1.6;margin:0 0 10px;">' + t.body + '</p>' 44 + row(t.bu + ' · 30 UStd (' + t.week + ')', 400, 450, t) + row(t.bu + ' · 40 UStd, NDS/HE (' + t.week + ')', 535, 600, t); 45 } 46 function home(t, l) { 47 return '<div style="display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;"><span style="color:#0F1B2D;font-weight:700;font-size:15px;">' + t.home + '</span>' 48 + '<a href="' + (PRICE_PAGE[l] || '/prices.html') + '" style="color:#E31E24;font-weight:700;text-decoration:none;white-space:nowrap;">' + t.more + ' â</a></div>'; 49 } 50 function mount() { 51 if (!active()) return; 52 var s = document.currentScript || document.querySelector('script[src*="price-notice-2027"]'); 53 var mode = s && s.getAttribute('data-mode'); 54 var l = L(), t = T[l], el, ref; 55 if (document.querySelector('.rts-p27')) return; 56 if (mode === 'prices' && (ref = document.querySelector('.prices-grid'))) { el = box(prices(t)); ref.parentNode.insertBefore(el, ref); } 57 else if (mode === 'bu' && (ref = document.querySelector('.bu-hero'))) { el = box(bu(t)); el.style.margin = '28px auto 92px'; /* alttaki .state-table-card -60px ile yukarı biniyor */ ref.insertAdjacentElement('afterend', el); } 58 else if (mode === 'home' && (ref = document.querySelector('section.hero'))) { el = box(home(t, l)); el.style.margin = '24px auto'; el.style.maxWidth = '1100px'; var w = document.createElement('div'); w.style.cssText = 'padding:0 16px 40px;'; /* alttaki Eda kartı -36px ile yukarı biniyor */ w.appendChild(el); ref.insertAdjacentElement('afterend', w); } 59 } 60 window.RTS_PRICE_2027 = { 61 active: active, 62 wizardNote: function (lang, startDate) { 63 if (!active() || !/^2027-/.test(String(startDate || ''))) return ''; 64 var t = T[L(lang)]; 65 return '<div class="rts-p27-wiz" style="margin-top:8px;background:#f0fdf4;border:1px solid #bbf7d0;color:#166534;border-radius:10px;padding:8px 12px;font-size:12.5px;font-weight:600;line-height:1.45;">
65' + t.wiz + '</div>'; 66 }, 67 }; 68 if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', mount); else mount(); 69})();
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.