### Create ODK Cloud Link Element Source: https://github.com/getodk/central/blob/master/docs/outdated-version.html This JavaScript code creates an anchor (``) element for the ODK Cloud link. It sets the `href`, `target` attributes, and `textContent` for the link, which is later used in the translated sentence. ```javascript const odkCloudLink = document.createElement('a'); odkCloudLink.href = "https://getodk.org/#success-stories"; odkCloudLink.target = "_blank"; odkCloudLink.textContent = "ODK Cloud"; ``` -------------------------------- ### Update Page Content on DOM Load Source: https://github.com/getodk/central/blob/master/docs/outdated-version.html This event listener waits for the DOM to be fully loaded before executing. It retrieves the language from URL query parameters and updates the heading, sentence1, and sentence2 elements with translated text. It also safely inserts the ODK Cloud hyperlink into the sentence2 element and makes the `.outdated-version` element visible. ```javascript document.addEventListener('DOMContentLoaded', () => { const queryParams = new URLSearchParams(location.search); const lang = queryParams.get('lang'); document.querySelector('.heading').textContent = getTranslatedText('heading', lang); document.querySelector('.sentence1').textContent = getTranslatedText('sentence1', lang); // Safer method to place hyperlink instead of using innerHTML const parts = getTranslatedText('sentence2', lang).split('{OdkCloudLink}'); document.querySelector('.sentence2').textContent = ''; document.querySelector('.sentence2').appendChild(document.createTextNode(parts[0])); document.querySelector('.sentence2').appendChild(odkCloudLink); document.querySelector('.sentence2').appendChild(document.createTextNode(parts[1])); // default style of .outdated-version is display:none, following line makes it visible document.querySelector('.outdated-version').style = 'display: flex;'; }); ``` -------------------------------- ### Translate Text Based on Language Parameter Source: https://github.com/getodk/central/blob/master/docs/outdated-version.html This JavaScript function retrieves translated text from the `i18n` object. It defaults to English if the specified language or key is not found. This is used to dynamically set the content of page elements. ```javascript const getTranslatedText = (key, lang) => { if(i18n\[lang\] && i18n\[lang\]\[key\]) return i18n\[lang\]\[key\]; else return i18n\[ 'en' \]\[key\]; }; ``` -------------------------------- ### Internationalized Outdated Version Message Source: https://github.com/getodk/central/blob/master/docs/outdated-version.html This JavaScript object stores translated messages for an outdated version warning in multiple languages. Use the `getTranslatedText` function to retrieve the appropriate message based on the user's language preference. ```javascript const i18n = { "en": { "heading": "You’re using a significantly outdated version of ODK Central", "sentence1": "Upgrade now to protect your data and take advantage of the latest features.", "sentence2": "If you don’t want to maintain Central, try {OdkCloudLink}." }, "fr": { "heading": "Vous utilisez une version ancienne d'ODK Central", "sentence1": "Effectuez une mise à jour pour protéger vos données et profiter des fonctionnalités les plus récentes.", "sentence2": "Si vous préférez ne pas être responsable des mises à jours, essayez {OdkCloudLink}." }, "es": { "heading": "Está utilizando una versión significativamente obsoleta de ODK Central", "sentence1": "Actualízate ahora para proteger tus datos y aprovechar las últimas funciones.", "sentence2": "Si no quiere mantener Central, pruebe con {OdkCloudLink}." }, "cs": { "heading": "Používáte výrazně zastaralou verzi ODK Central", "sentence1": "Aktualizujte nyní, abyste ochránili svá data a využili nejnovější funkce.", "sentence2": "Pokud nechcete spravovat Central, vyzkoušejte {OdkCloudLink}." }, "de": { "heading": "Sie verwenden eine deutlich veraltete Version von ODK Central", "sentence1": "Aktualisieren Sie jetzt, um Ihre Daten zu schützen und von den neuesten Funktionen zu profitieren.", "sentence2": "Wenn Sie Central nicht pflegen wollen, versuchen Sie {OdkCloudLink}." }, "id": { "heading": "Anda menggunakan versi ODK Central yang sangat usang", "sentence1": "Perbarui sekarang untuk melindungi data Anda dan memanfaatkan fitur terbaru.", "sentence2": "Jika Anda tidak ingin memelihara Central, coba {OdkCloudLink}." }, "it": { "heading": "Si sta utilizzando una versione significativamente obsoleta di ODK Central", "sentence1": "Eseguite subito l'aggiornamento per proteggere i vostri dati e sfruttare le funzioni più recenti.", "sentence2": "Se non si vuole mantenere Central, provare con {OdkCloudLink}." }, "pt": { "heading": "Você está usando uma versão consideravelmente ultrapassada do ODK Central", "sentence1": "Atualize agora para proteger seus dados e obter vantagem das últimas implementações.", "sentence2": "Se você não quer manter o Central, tente {OdkCloudLink}" }, "ja": { "heading": "ODK Central の大幅に古いバージョンを使用しています", "sentence1": "データを保護し、最新の機能を利用するために今すぐアップグレードしてください。", "sentence2": "Central を管理したくない場合は、{OdkCloudLink} を試してください。" }, "sw": { "heading": "Unatumia toleo la ODK Central ambalo limepitwa sana na wakati", "sentence1": "Sasisha sasa ili kulinda data zako na kutumia vipengele vipya zaidi.", "sentence2": "Kama hutaki kudumisha Central, jaribu {OdkCloudLink}." }, "zh": { "heading": "您使用的ODK Central版本过低", "sentence1": "立即升级以保护您的资料,同时使用最新的功能。", "sentence2": "如果您不想维护Central,请使用{OdkCloudLink}。" }, "zh-Hant": { "heading": "您使用的 ODK Central 版本明顯過時", "sentence1": "立即升級以保護您的資料並利用最新功能。", "sentence2": "如果您不想維護 Central,請嘗試 {OdkCloudLink}." } }; ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.