1
+ <!DOCTYPE html>
2
+ < html >
3
+
4
+ < head >
5
+ < meta charset ="utf-8 ">
6
+ < title > ODK Central</ title >
7
+ < link rel ="stylesheet " href ="style.css ">
8
+ </ head >
9
+
10
+ < body >
11
+ <!-- this page is rendered in an iframe of size 600x250 -->
12
+ < div class ="outdated-version " style ="display: none; ">
13
+ < h1 class ="heading "> </ h1 >
14
+ < p >
15
+ < span class ="sentence1 "> </ span >
16
+ < span class ="sentence2 "> </ span >
17
+ </ p >
18
+ < script defer src ='https://static.cloudflareinsights.com/beacon.min.js '
19
+ data-cf-beacon ='{"token": "81f288331d6e4638be205e0e63388165"} '> </ script >
20
+ </ div >
21
+
22
+ < script >
23
+ const i18n = {
24
+ "en" : {
25
+ "heading" : "You’re using a significantly outdated version of ODK Central" ,
26
+ "sentence1" : "Upgrade now to protect your data and take advantage of the latest features." ,
27
+ "sentence2" : "If you don't want to maintain Central, try {OdkCloudLink}."
28
+ } ,
29
+ "fr" : {
30
+ "heading" : "Vous utilisez une version ancienne d'ODK Central" ,
31
+ "sentence1" : "Effectuez une mise à jour pour protéger vos données et profiter des fonctionnalités les plus récentes." ,
32
+ "sentence2" : "Si vous préférez ne pas être responsable des mises à jours, essayez {OdkCloudLink}."
33
+ } ,
34
+ "es" : {
35
+ "heading" : "Está utilizando una versión significativamente obsoleta de ODK Central" ,
36
+ "sentence1" : "Actualízate ahora para proteger tus datos y aprovechar las últimas funciones." ,
37
+ "sentence2" : "Si no quiere mantener Central, pruebe con {OdkCloudLink}."
38
+ } ,
39
+ "cs" : {
40
+ "heading" : "Používáte výrazně zastaralou verzi ODK Central" ,
41
+ "sentence1" : "Aktualizujte nyní, abyste ochránili svá data a využili nejnovější funkce." ,
42
+ "sentence2" : "Pokud nechcete spravovat Central, vyzkoušejte {OdkCloudLink}."
43
+ } ,
44
+ "de" : {
45
+ "heading" : "Sie verwenden eine deutlich veraltete Version von ODK Central" ,
46
+ "sentence1" : "Aktualisieren Sie jetzt, um Ihre Daten zu schützen und die neuesten Funktionen zu nutzen." ,
47
+ "sentence2" : "Wenn Sie Central nicht warten möchten, probieren Sie {OdkCloudLink} aus."
48
+ } ,
49
+ "id" : {
50
+ "heading" : "Anda menggunakan versi ODK Central yang sangat usang" ,
51
+ "sentence1" : "Perbarui sekarang untuk melindungi data Anda dan memanfaatkan fitur terbaru." ,
52
+ "sentence2" : "Jika Anda tidak ingin memelihara Central, coba {OdkCloudLink}."
53
+ } ,
54
+ "it" : {
55
+ "heading" : "Si sta utilizzando una versione significativamente obsoleta di ODK Central" ,
56
+ "sentence1" : "Eseguite subito l'aggiornamento per proteggere i vostri dati e sfruttare le funzioni più recenti." ,
57
+ "sentence2" : "Se non si vuole mantenere Central, provare con {OdkCloudLink}."
58
+ } ,
59
+ "ja" : {
60
+ "heading" : "ODK Central の大幅に古いバージョンを使用しています" ,
61
+ "sentence1" : "データを保護し、最新の機能を利用するために今すぐアップグレードしてください。" ,
62
+ "sentence2" : "Central を管理したくない場合は、{OdkCloudLink} を試してください。"
63
+ } ,
64
+ "sw" : {
65
+ "heading" : "Unatumia toleo la ODK Central ambalo limepitwa sana na wakati" ,
66
+ "sentence1" : "Sasisha sasa ili kulinda data zako na kutumia vipengele vipya zaidi." ,
67
+ "sentence2" : "Kama hutaki kudumisha Central, jaribu {OdkCloudLink}."
68
+ } ,
69
+ "zh-Hant" : {
70
+ "heading" : "您正在使用一个明显过时的 ODK Central 版本" ,
71
+ "sentence1" : "立即升级以保护您的数据并利用最新功能。" ,
72
+ "sentence2" : "如果您不想维护 Central,请尝试 {OdkCloudLink}。"
73
+ }
74
+ } ;
75
+
76
+ const getTranslatedText = ( key , lang ) => {
77
+ if ( i18n [ lang ] && i18n [ lang ] [ key ] )
78
+ return i18n [ lang ] [ key ] ;
79
+ else
80
+ return i18n [ 'en' ] [ key ] ;
81
+ } ;
82
+
83
+ const odkCloudLink = document . createElement ( 'a' ) ;
84
+ odkCloudLink . href = "https://getodk.org/#success-stories" ;
85
+ odkCloudLink . target = "_blank" ;
86
+ odkCloudLink . textContent = "ODK Cloud" ;
87
+
88
+ document . addEventListener ( 'DOMContentLoaded' , ( ) => {
89
+ const queryParams = new URLSearchParams ( location . search ) ;
90
+ const lang = queryParams . get ( 'lang' ) ;
91
+
92
+ document . querySelector ( '.heading' ) . textContent = getTranslatedText ( 'heading' , lang ) ;
93
+ document . querySelector ( '.sentence1' ) . textContent = getTranslatedText ( 'sentence1' , lang ) ;
94
+
95
+ // Safer method to place hyperlink instead of using innerHTML
96
+ const parts = getTranslatedText ( 'sentence2' , lang ) . split ( '{OdkCloudLink}' ) ;
97
+ document . querySelector ( '.sentence2' ) . textContent = '' ;
98
+ document . querySelector ( '.sentence2' ) . appendChild ( document . createTextNode ( parts [ 0 ] ) ) ;
99
+ document . querySelector ( '.sentence2' ) . appendChild ( odkCloudLink ) ;
100
+ document . querySelector ( '.sentence2' ) . appendChild ( document . createTextNode ( parts [ 1 ] ) ) ;
101
+
102
+ // default style of .outdated-version is display:none, following line makes it visible
103
+ document . querySelector ( '.outdated-version' ) . style = 'display: flex;'
104
+ } ) ;
105
+ </ script >
106
+ </ body >
107
+
108
+ </ html >
0 commit comments