-
Notifications
You must be signed in to change notification settings - Fork 33
/
translation.js
205 lines (196 loc) · 9.7 KB
/
translation.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
// We can have as many locales here as we want,
// and use any locales we want. We have English
// and German as locales here as examples.
let translations = {
// English translations
"en": {
"_publicKey":"public key",
"addChannel":"Add by channel id",
"addChannelPlaceholder":"channel id",
"addFirstChannelImage":"add a channel image first",
"addFirstChannelName":"add a channel name first",
"adminKey":"Your admin key",
"ago":"ago",
"channelId":"Channel id",
"channelImagePlaceholder":"channel image e.g. https://i.ibb.co/Q8X9cQL/bitcoin-chess.png",
"channelNamePlaceholder":"channel name",
"checkSomeone":"Check someone out",
"comingSoon":"coming soon",
"copied":"copied",
"copy":"Copy",
"createChannel":"Create a channel",
"day" : "day",
"days" : "days",
"DESC":"Talk to people",
"directMessage":"Direct message this user",
"hour" : "hour",
"hours" : "hours",
"imageInstructions":"The image needs to be hosted externally (such as on imgur or imgbb) because I don't want to store a bunch of images",
"imageUploadInfo":"There are no image uploads, but fear not! Paste an image from the web into your message and the next time you click this image button your image will appear here for easy access. By the way, images must be hosted externally (such as on imgur or imgbb) because I don't want to store a bunch of images.",
"import":"Import",
"importAccount":"Import an account",
"importWalletError":"Something went wrong while importing your wallet, contact a developer for help",
"invalidHexColor.":"Invalid HEX color.",
"isNotHex":"your private key is not a hex-formatted string",
"loading":"Loading...",
"manageChannels" : "Manage channels",
"manageChannelsMessage" : "Find/create/remove channels",
"manageWallet":"Manage wallet",
"message" : "Message",
"minute" : "minute",
"minutes" : "minutes",
"modifyAllThings":"Modify all the things",
"month" : "month",
"months" : "months",
"mustBe32Byte":"Your private key must be a 32 byte hex-formatted string",
"nameLives":" lives in an abandoned warehouse on top of a mountain in a jungle. Surviving only on bananas and leftover car parts, roams the wild horizon of the amazon, looking on and on for something not yet grokked",
"pastePrivateKey":"paste a private key",
"privateKey":"Your private key",
"profile":"Profile",
"publicKey":"Your public key",
"readKey":"Your read key",
"relayApparentlySent":"Your relay apparently sent you a message with an invalid signature",
"relaysPart":"They should never do that and it indicates malicious behavior on the relay's part. Consider switching to a new relay",
"removeChannel":"Remove a channel",
"replyToMessageNotFound" : "This post is a reply to a message that could not be found",
"replyToThisMessage" : "Reply to this message",
"saySomething" : "Say something",
"second" : "second",
"seconds" : "seconds",
"settings":"Settings",
"startPageText":"Please select a channel on the left. You can also go to Settings (three dots in the top right) to import a private key or backup your current keys.",
"submit":"Submit",
"successAccountImported":"success, your account was imported",
"unknown" : "Unknown",
"unknownError" : "unknown error, could not add this channel -- please contact a developer for help",
"viewThisEvent" : "View this event on nostr.guru",
"viewYourProfil":"View your profile",
"walletUrl":"Your wallet url",
"year" : "year",
"years" : "years",
"yourInfo":"Your info",
"yourInfoAboutPlaceholder":"enter info about yourself",
"yourInfoImagePlaceholder":"user picture e.g. https://i.ibb.co/Q8X9cQL/bitcoin-chess.png",
"yourInfoNamePlaceholder":"display name",
"yourInfoProcessed":"Your info was processed",
"NAME":"Anigma",
"convert":"Convert",
"global":"Global",
"globalDesc":"What everyone's talking about",
"blockThisUser":"Block this user",
"confirmUserBlock":"Are you sure you want to block all posts by this user? This will only affect what you see, not what others see"
},
// German translations
"de": {
"_publicKey":"Öffentlicher Schüssel",
"addChannel":"Hinzufügen nach Kanal-ID",
"addChannelPlaceholder":"Kanal-ID",
"addFirstChannelImage":"add a channel image first",
"addFirstChannelName":"add a channel name first",
"adminKey": "Ihr Admin-,Verwaltungsschlüssel",
"ago":"her",
"channelId" : "Kanal Id",
"channelImagePlaceholder":"Kanal-Bild z.B.. https://i.ibb.co/Q8X9cQL/bitcoin-chess.png",
"channelNamePlaceholder":"Kanal-Name",
"checkSomeone":"Jemanden überprüfen",
"comingSoon":"demnächst verfügbar",
"copied":"kopiert",
"copy": "kopieren",
"createChannel":"Einen Kanal erstellen",
"day" : "Tag",
"days" : "Tage",
"DESC":"Talk to people",
"directMessage":"Direktnachricht an diesen Benutzer",
"hour" : "Stunde",
"hours" : "Stunden",
"imageInstructions":"Das Bild muss extern gehostet werden (z.B. auf imgur oder imgbb), weil ich nicht einen Haufen Bilder speichern möchte.",
"imageUploadInfo":"Es können keine Bilder hochgeladen werden, aber keine Sorge! Fügen Sie ein Bild aus dem Internet in Ihre Nachricht ein, und wenn Sie das nächste Mal auf diese Schaltfläche klicken, wird Ihr Bild hier angezeigt, damit Sie leicht darauf zugreifen können. Die Bilder müssen übrigens extern gehostet werden (z. B. auf imgur oder imgbb), weil ich nicht einen ganzen Haufen Bilder speichern möchte.",
"import": "Importieren",
"importAccount": "Ein User-Konto importieren",
"importWalletError":"Beim Importieren Ihrer Wallet ist etwas schief gelaufen, kontaktieren Sie einen Entwickler für Hilfe",
"invalidHexColor.":"Ungültige HEX-Farbe.",
"isNotHex":"Ihr privater Schlüssel ist keine hex-Formatierte Zeichenkette",
"loading":"Lade...",
"manageChannels" : "Kanäle verwalten",
"manageChannelsMessage" : "Kanäle suchen/erstellen/entfernen",
"manageWallet":"Wallet verwalten",
"message":"Nachricht",
"minute" : "Minute",
"minutes" : "Minuten",
"modifyAllThings": "Ändern Sie alle Dinge",
"month" : "Monat",
"months" : "Monate",
"mustBe32Byte":"Ihr privater Schlüssel muss eine 32-Byte-Zeichenkette im Hex-Format sein",
"nameLives":"lebt in einem verlassenen Lagerhaus auf dem Gipfel eines Berges im Dschungel, lebt von Bananen und übrig gebliebenen Autoteilen und durchstreift den wilden Horizont des Amazonas, immer auf der Suche nach etwas, das er noch nicht verstanden hat",
"pastePrivateKey": "Privaten Schlüssel einfügen",
"privateKey": "Ihr privater Schlüssel",
"profile":"Profil",
"publicKey": "Ihr öffentlicher Schlüssel",
"readKey": "Ihr Leseschlüssel",
"relayApparentlySent":"Ihr Relais hat Ihnen offenbar eine Nachricht mit einer ungültigen Signatur geschickt.",
"relaysPart":"Das sollten sie niemals tun, und es deutet auf ein böswilliges Verhalten des Relais hin. Erwägen Sie den Wechsel zu einem neuen Relais!",
"removeChannel":"Kanal entfernen",
"replyToMessageNotFound" : "Dieser Beitrag ist eine Antwort auf eine Nachricht, die nicht gefunden werden konnte",
"replyToThisMessage" : "Auf diese Nachricht antworten",
"saySomething" : "Sag etwas",
"seconds" : "Sekunden",
"settings":"Einstellungen",
"startPageText":"Bitte wählen Sie einen Kanal auf der linken Seite. Sie können auch zu den Einstellungen gehen (drei Punkte oben rechts), um einen privaten Schlüssel zu importieren oder Ihre aktuellen Schlüssel zu sichern.",
"submit":"senden",
"successAccountImported":"Ihr Konto wurde erfolgreich importiert.d",
"unknown" : "Unbekannt",
"unknownError": "unbekannter Fehler, konnte diesen Kanal nicht hinzufügen -- bitte kontaktieren Sie einen Entwickler für Hilfe",
"viewThisEvent" : "Dieses Ereignis auf nostr.guru ansehen",
"viewYourProfil":"Ihr Profil ansehen",
"walletUrl": "Ihre Wallet-URL",
"year" : "Jahr",
"years" : "Jahre",
"yourInfo": "Deine Info",
"yourInfoAboutPlaceholder": "Gib Informationen über dich ein",
"yourInfoImagePlaceholder": "Benutzerbild z.B. https://i.ibb.co/Q8X9cQL/bitcoin-chess.png",
"yourInfoNamePlaceholder": "angezeigter Name",
"yourInfoProcessed": "Deine Info wurde bearbeitet",
"NAME":"Anigma",
"convert":"verwandeln",
"global":"Global",
"globalDesc":"Worüber alle reden",
"blockThisUser":"diesen Benutzer blockieren",
"confirmUserBlock":"Möchten Sie wirklich alle Beiträge dieses Benutzers blockieren? Dies wirkt sich nur auf das aus, was Sie sehen, nicht auf das, was andere sehen"
},
};
// The locale our app first shows
const defaultLocale = "en";
// The active locale
let locale;
// When the page content is ready...
document.addEventListener("DOMContentLoaded", () => {
// Translate the page to the default locale
setLocale(defaultLocale);
});
// Load translations for the given locale and translate
// the page to this locale
async function setLocale(newLocale) {
if (newLocale === locale) return;
locale = newLocale;
translatePage();
}
// Replace the inner text of each element that has a
// data-i18n-key attribute with the translation corresponding
// to its data-i18n-key
function translatePage() {
document
.querySelectorAll("[data-i18n-key]")
.forEach(translateElement);
}
// Replace the inner text of the given HTML element
// with the translation in the active locale,
// corresponding to the element's data-i18n-key
function translateElement(element) {
const key = element.getAttribute("data-i18n-key");
const translation = translations[locale][key];
element.innerText = translation;
}
function t(key) {
if ( !locale ) return;
return translations[locale][key]
}