aboutsummaryrefslogtreecommitdiff
path: root/lang
diff options
context:
space:
mode:
Diffstat (limited to 'lang')
-rw-r--r--lang/de.json191
-rw-r--r--lang/en.json191
-rw-r--r--lang/es.json180
-rw-r--r--lang/fr.json191
-rw-r--r--lang/it.json191
-rw-r--r--lang/jp.json191
-rw-r--r--lang/languages.json12
-rw-r--r--lang/loader.js46
-rw-r--r--lang/nl.json191
-rw-r--r--lang/preload.js2
-rw-r--r--lang/pt.json191
-rw-r--r--lang/ru.json191
-rw-r--r--lang/zh.json191
13 files changed, 1959 insertions, 0 deletions
diff --git a/lang/de.json b/lang/de.json
new file mode 100644
index 0000000..8358c34
--- /dev/null
+++ b/lang/de.json
@@ -0,0 +1,191 @@
+{
+ "_name": "Franz\u00f6sisch",
+ "crash": {
+ "title": "Kartik Crash Reporter",
+ "head": "Kartik hat aufgeh\u00f6rt zu arbeiten",
+ "intro": "Kartik stie\u00df auf ein Problem und hielt unerwartet an. ",
+ "report": [
+ "Zus\u00e4tzlich wurde ein Absturzbericht in \"",
+ "Damit Sie es an die Entwickler senden k\u00f6nnen, wenn Sie \u00fcber einen Internetzugang verf\u00fcgen."
+ ],
+ "close": "Schlie\u00dfen",
+ "reset": "Kartik zur\u00fccksetzen und schlie\u00dfen"
+ },
+ "updates": {
+ "ok": "Auf dem neusten Stand",
+ "available": "Spiel-Updates verf\u00fcgbar",
+ "git": "Ausf\u00fchren der Trunk-Version",
+ "error": "Es kann nicht nach Updates gesucht werden",
+ "wait": "Nach Updates suchen ...",
+ "warn": [
+ "Updates sind verf\u00fcgbar",
+ "Laden Sie die neue Version von Kartik von der offiziellen Website herunter, um von den neuesten Funktionen und Fehlerkorrekturen zu profitieren."
+ ]
+ },
+ "scenario": {
+ "intro": [
+ "Hey, hi, wie w\u00e4re es mit einem schnellen Lauf?",
+ "Ah, da bist du wieder! ",
+ "Was w\u00e4re, wenn wir ein kleines Rennen h\u00e4tten?",
+ "Sollen wir spazieren gehen?"
+ ],
+ "ahead1": [
+ "Ach nein !",
+ "Verdammt, das ist nicht m\u00f6glich!",
+ "Aber ich werde nicht dorthin gelangen ...",
+ "Und Schei\u00dfe ...",
+ "Warum du ?"
+ ],
+ "ahead2": [
+ "Hee hee hee",
+ "Dieser ist f\u00fcr mich!",
+ "Ich werde es haben !",
+ "Sie ist f\u00fcr mich!",
+ "Es geh\u00f6rt mir !"
+ ],
+ "won1": [
+ "Gute Partie !",
+ "Schade f\u00fcr mich ...",
+ "Ich h\u00e4tte hoffen k\u00f6nnen ...",
+ "Aber es ist nicht sehr sch\u00f6n!",
+ "Gut gemacht !"
+ ],
+ "won2": [
+ "Ich habe es dir gesagt !",
+ "Als h\u00e4tte ich dich nicht gewarnt!",
+ "Ich habe gewonnen !",
+ "Gro\u00dfartig, ich habe es gewonnen!",
+ "Und noch eine f\u00fcr mich!"
+ ],
+ "wall1": [
+ "Ah ah!",
+ "Na dann, gehen wir nicht richtig?",
+ "Autsch",
+ "Es muss weh tun ...",
+ "Splaf, kein Hindernis!"
+ ],
+ "wall2": [
+ "Scheisse",
+ "Poop",
+ "Nicht m\u00f6glich",
+ "Puti"
+ ],
+ "start": [
+ "Ich werde Spa\u00df haben!",
+ "Du wirst sehen, ich werde dich zu einem dieser Rennen machen!",
+ "Erz\u00e4hl mir Neuigkeiten",
+ "Lass uns gehen!",
+ "Auf geht's !",
+ "Wooo, vorw\u00e4rts!"
+ ]
+ },
+ "discord": {
+ "credits": [
+ "Warten",
+ "Im Abspann"
+ ],
+ "game": [
+ "Anteil",
+ "Solo-Modus",
+ "Versus-Modus",
+ "In der Pause"
+ ],
+ "intro": [
+ "In der Warteschleife",
+ "Zur Einf\u00fchrung"
+ ],
+ "settings": [
+ "In der Warteschleife",
+ "In den Parametern"
+ ],
+ "win": [
+ "Ich habe gerade gewonnen.",
+ "Hat gerade verloren."
+ ]
+ },
+ "intro": [
+ "Tippen Sie auf Eingabe zum Starten",
+ "Dr\u00fccken Sie A, um zu beginnen"
+ ],
+ "game": {
+ "credits": {
+ "by": "durch"
+ },
+ "gpause": {
+ "title": "Spiel in der Pause",
+ "continueg": "Weiter",
+ "showhb": "Hitbox anzeigen",
+ "hidehb": "Hitbox ausblenden",
+ "quit": "Verlassen"
+ }
+ },
+ "menu": {
+ "titles": [
+ "Solo",
+ "Versus",
+ "Optionen",
+ "Mittel",
+ "Verlassen"
+ ],
+ "descriptions": [
+ "Spielen Sie allein und offline gegen einen Roboter",
+ "Zu zweit auf dem gleichen Bildschirm spielen",
+ "Zoom und Einstellungen \u00e4ndern",
+ "Liste der Autoren des Spiels anzeigen",
+ "Das Spiel schlie\u00dfen und zur\u00fcck zu"
+ ],
+ "distribute": "Nicht verteilen"
+ },
+ "settings": {
+ "title": "Optionen",
+ "back": "Zur\u00fcck",
+ "size": "Gr\u00f6\u00dfe der Schnittstelle",
+ "music": "Musik aktivieren",
+ "lang": "Sprache",
+ "voice": "Stimme aktivieren",
+ "yes": "Ja, ja",
+ "no": "nein, nein",
+ "notice": "Die Parameter werden erst nach dem Neustart von Kartik angewendet"
+ },
+ "win": {
+ "solo": {
+ "win": "Sie haben gewonnen!",
+ "lose": "Sie haben verloren!"
+ },
+ "versus": "Spieler 0 hat gewonnen!",
+ "quit": [
+ "Tippen Sie auf \"\u00c9chap\", um zu verlassen",
+ "Dr\u00fccken Sie B, um zu verlassen"
+ ]
+ },
+ "online": {
+ "menu": {
+ "local": "Lokal",
+ "online": "Online",
+ "dlocal": "Mit einem Freund auf der gleichen Maschine spielen",
+ "donline": "Mit einem Freund auf verschiedenen Maschinen spielen"
+ },
+ "error": {
+ "connection": "Fehler bei der Kommunikation",
+ "disconnect": "Offline"
+ },
+ "connecting": "Verbindung zum Server...",
+ "intro": {
+ "create": "Ein Teil erstellen",
+ "pcreate": "Geben Sie ihrem Partner diesen Code, damit er sich mit Ihrem Teil verbinden kann:",
+ "join": "Einem Teil beitreten",
+ "pjoin": "Geben Sie den Code Ihres Teamkollegen ein, um sich seinem Spiel anzuschlie\u00dfen:"
+ },
+ "disconnected": "Verbindung verloren",
+ "unable": "Mit dem Server kann keine Verbindung m\u00f6glich sein",
+ "internal": "Internes Systemfehler",
+ "loading": "Vorbereitung des Spiels...",
+ "discord": "Online",
+ "generate": "Laden Sie das Grundst\u00fcck...",
+ "discord2": "Trifft auf einen Fehler",
+ "timeout": "Die Wartezeit wurde \u00fcberschritten",
+ "aborted": "Der andere Spieler verlie\u00df das Spiel",
+ "car0": "Ihr Auto",
+ "car1": "Sein Auto"
+ }
+} \ No newline at end of file
diff --git a/lang/en.json b/lang/en.json
new file mode 100644
index 0000000..37feb2d
--- /dev/null
+++ b/lang/en.json
@@ -0,0 +1,191 @@
+{
+ "_name": "English",
+ "crash": {
+ "title": "Kartik Crash Reporter",
+ "head": "Kartik stopped working",
+ "intro": "Kartik encountered a problem and exited unexpectedly. We recorded some additional information, and a crash report has been automatically sent to the developers if you were connected to the Internet.",
+ "report": [
+ "Alternately, a crash report has been created in « ",
+ " », so that you can send it to the developers when you will have Internet access."
+ ],
+ "close": "Close",
+ "reset": "Reset Kartik and close"
+ },
+ "updates": {
+ "ok": "Up to date",
+ "available": "Game updates available",
+ "git": "Running trunk version",
+ "error": "Unable to check for updates",
+ "wait": "Checking for updates...",
+ "warn": [
+ "Updates available",
+ "Download the new version of Kartik from the official website to get the newest features and bug fixes."
+ ]
+ },
+ "scenario": {
+ "intro": [
+ "Heyo, what about a lil race?",
+ "Hey, you're back! What 'bout a lil race?",
+ "Shall we do a lil race?",
+ "Have a race?"
+ ],
+ "ahead1": [
+ "Oh no!",
+ "Aw shit, that's not possible!",
+ "But I won't get it...",
+ "Damnit...",
+ "Why you?"
+ ],
+ "ahead2": [
+ "Hey hey hey",
+ "This one's for me!",
+ "I'll get it!",
+ "It's for me!",
+ "For me!"
+ ],
+ "won1": [
+ "Good game!",
+ "Nevermind...",
+ "At least I hoped...",
+ "But, that's not kind!",
+ "Congrats!"
+ ],
+ "won2": [
+ "I told ya!",
+ "As if I hadn't told you!",
+ "I won!",
+ "Great, I won this one!",
+ "And one more for me!"
+ ],
+ "wall1": [
+ "Hey hey!",
+ "Well then, you don't drive well?",
+ "Ouch",
+ "That must've hurt...",
+ "Ouch, in the wall..."
+ ],
+ "wall2": [
+ "Damnit...",
+ "Well...",
+ "Impossible",
+ "Aw crap"
+ ],
+ "start": [
+ "Let's get you airborne!",
+ "You'll see, I'll make you one of those races!",
+ "You'll tell me what ya think",
+ "Let's go!",
+ "And, let's go!",
+ "Wooo, right away!"
+ ]
+ },
+ "discord": {
+ "credits": [
+ "Waiting",
+ "Viewing the credits"
+ ],
+ "game": [
+ "In game",
+ "Singleplayer",
+ "Versus",
+ "Paused"
+ ],
+ "intro": [
+ "Waiting",
+ "On the intro"
+ ],
+ "settings": [
+ "Waiting",
+ "In the settings"
+ ],
+ "win": [
+ "Just won",
+ "Just lost"
+ ]
+ },
+ "intro": [
+ "Press Enter to start",
+ "Press A to start"
+ ],
+ "game": {
+ "credits": {
+ "by": "by"
+ },
+ "gpause": {
+ "title": "Game Paused",
+ "continueg": "Continue",
+ "showhb": "Show hitboxes",
+ "hidehb": "Hide hitboxes",
+ "quit": "Quit"
+ }
+ },
+ "menu": {
+ "titles": [
+ "Singleplayer",
+ "Versus",
+ "Settings",
+ "Credits",
+ "Quit"
+ ],
+ "descriptions": [
+ "Play alone and offline against a robot",
+ "Play with a friend on one screen",
+ "Change zoom and other settings",
+ "View game authors list",
+ "Close the game and return to"
+ ],
+ "distribute": "Do not distribute"
+ },
+ "settings": {
+ "title": "Settings",
+ "back": "Back",
+ "size": "Interface size",
+ "music": "Enable music",
+ "lang": "Language",
+ "voice": "Enable voice",
+ "yes": "yes",
+ "no": "no",
+ "notice": "Changed settings won't apply until you restart Kartik"
+ },
+ "win": {
+ "solo": {
+ "win": "You win!",
+ "lose": "You lose!"
+ },
+ "versus": "Player 0 win!",
+ "quit": [
+ "Press Esc to quit",
+ "Press B to quit"
+ ]
+ },
+ "online": {
+ "menu": {
+ "local": "Local",
+ "online": "Online",
+ "dlocal": "Play with a friend on the same computer",
+ "donline": "Play with a friend on different computers"
+ },
+ "error": {
+ "connection": "Communication Error",
+ "disconnect": "Disconnected"
+ },
+ "connecting": "Connecting to server...",
+ "intro": {
+ "create": "Create a party",
+ "join": "Join a party",
+ "pcreate": "Give this code to your teammate so they can connect to your party:",
+ "pjoin": "Enter the code your teammate gave to connect to their party:"
+ },
+ "disconnected": "Connection Lost",
+ "unable": "Unable to connect to server",
+ "internal": "Internal System Error",
+ "loading": "Preparing to play...",
+ "discord": "Online",
+ "generate": "Loading terrain...",
+ "discord2": "Facing an error",
+ "timeout": "The connection timed out",
+ "aborted": "The other player ended the game",
+ "car0": "Your car",
+ "car1": "Their car"
+ }
+}
diff --git a/lang/es.json b/lang/es.json
new file mode 100644
index 0000000..b505752
--- /dev/null
+++ b/lang/es.json
@@ -0,0 +1,180 @@
+{
+ "_name": "Español",
+ "updates": {
+ "ok": "Al día",
+ "available": "Actualizaciones de juegos disponibles",
+ "git": "Ejecutando la versión trunk",
+ "error": "No se puede buscar actualizaciones",
+ "wait": "Comprobando actualizaciones ...",
+ "warn": [
+ "Hay actualizaciones disponibles",
+ "Descargue la nueva versión de Kartik del sitio web oficial para beneficiarse de las últimas funciones y correcciones de errores."
+ ]
+ },
+ "scenario": {
+ "intro": [
+ "Oye, ¿qué tal una pequeña carrera?",
+ "¡Oye, has vuelto! ¿Qué tal una pequeña carrera?",
+ "¿Hacemos una pequeña carrera?",
+ "¿Tenemos una carrera?"
+ ],
+ "ahead1": [
+ "¡Oh no!",
+ "¡Oh mierda, eso no es posible!",
+ "Pero no lo conseguiré ...",
+ "Maldita sea...",
+ "¿Por qué tú?"
+ ],
+ "ahead2": [
+ "Hey hey hey",
+ "¡Este es para mí!",
+ "¡Lo conseguiré!",
+ "¡Es para mi!",
+ "¡Para mí!"
+ ],
+ "won1": [
+ "¡Buen juego!",
+ "No importa...",
+ "Al menos esperaba ...",
+ "¡Pero eso no es amable!",
+ "¡Felicitaciones!"
+ ],
+ "won2": [
+ "¡Te lo dije!",
+ "¡Como si no te lo hubiera dicho!",
+ "¡Gané!",
+ "¡Genial, gané este!",
+ "¡Y uno más para mí!"
+ ],
+ "wall1": [
+ "¡Oye, oye!",
+ "Bueno entonces, ¿no conduces bien?",
+ "Ay",
+ "Eso debe haber dolido ...",
+ "Ay, en la pared ..."
+ ],
+ "wall2": [
+ "Maldita sea...",
+ "Bien...",
+ "Imposible",
+ "Oh mierda"
+ ],
+ "start": [
+ "¡Vamos a ponerte en el aire!",
+ "¡Ya verás, te haré una de esas carreras!",
+ "Me dirás lo que piensas",
+ "¡Vamos!",
+ "¡Y vamos!",
+ "¡Wooo, ahora mismo!"
+ ]
+ },
+ "discord": {
+ "credits": [
+ "Espera",
+ "Ver los créditos"
+ ],
+ "game": [
+ "En el juego",
+ "Un solo jugador",
+ "Versus",
+ "Pausado"
+ ],
+ "intro": [
+ "Espera",
+ "En la introducción"
+ ],
+ "settings": [
+ "Espera",
+ "En la configuración"
+ ],
+ "win": [
+ "Acaba de ganar",
+ "Acaba de perder"
+ ]
+ },
+ "intro": [
+ "Presiona Enter para comenzar",
+ "Presiona A para comenzar"
+ ],
+ "game": {
+ "credits": {
+ "by": "por"
+ },
+ "gpause": {
+ "title": "Juego en pausa",
+ "continueg": "Continuar",
+ "showhb": "Mostrar hitboxes",
+ "hidehb": "Ocultar hitboxes",
+ "quit": "Salir"
+ }
+ },
+ "menu": {
+ "titles": [
+ "Solo",
+ "Versus",
+ "Ajustes",
+ "Créditos",
+ "Renunciar"
+ ],
+ "descriptions": [
+ "Juega solo y sin conexión contra un robot",
+ "Juega con un amigo en una pantalla",
+ "Cambiar el zoom y otras configuraciones",
+ "Ver lista de autores de juegos",
+ "Cierra el juego y vuelve a"
+ ],
+ "distribute": "No distribuir"
+ },
+ "settings": {
+ "title": "Configuración",
+ "back": "Atras",
+ "size": "Tamaño de la interfaz",
+ "music": "Habilitar música",
+ "lang": "Idioma",
+ "voice": "Activar voz",
+ "yes": "sí",
+ "no": "no",
+ "notice": "La configuración modificada no se aplicará hasta que reinicie Kartik"
+ },
+ "win": {
+ "solo": {
+ "win": "¡Tú ganas!",
+ "lose": "¡Tú pierdes!"
+ },
+ "versus": "¡El jugador 0 gana!",
+ "quit": [
+ "Presione Esc para salir",
+ "Presiona B para salir"
+ ]
+ },
+ "online": {
+ "menu": {
+ "local": "Local",
+ "online": "Online",
+ "dlocal": "Juega con un amigo en la misma máquina",
+ "donline": "Juega con un amigo en diferentes máquinas"
+ },
+ "error": {
+ "connection": "Error de comunicación",
+ "disconnect": "Desconectado"
+ },
+ "connecting": "Conexión al servidor ...",
+ "intro": {
+ "create": "Crea un juego",
+ "pcreate": "Dale este código a tu compañero de equipo para que se conecte a tu juego:",
+ "join": "Únete a un juego",
+ "pjoin": "Ingresa el código de tu compañero de equipo para unirse a su juego:"
+ },
+ "disconnected": "Conexión perdida",
+ "unable": "No se puede conectar al servidor",
+ "internal": "Error interno del sistema",
+ "loading": "Preparación del juego ...",
+ "discord": "En línea",
+ "generate": "Cargando el campo ...",
+ "discord2": "Se encontró un error",
+ "timeout": "Se ha excedido el tiempo de espera",
+ "aborted": "El otro jugador ha abandonado el juego",
+ "car0": "Tu auto",
+ "car1": "Su auto"
+ }
+}
diff --git a/lang/fr.json b/lang/fr.json
new file mode 100644
index 0000000..afcdaed
--- /dev/null
+++ b/lang/fr.json
@@ -0,0 +1,191 @@
+{
+ "_name": "Français",
+ "crash": {
+ "title": "Rapporteur de plantages de Kartik",
+ "head": "Kartik a cessé de fonctionner",
+ "intro": "Kartik a rencontré un problème et s'est arrêté inopinément. Nous avons collecté des informations supplémentaires, et un rapport de plantage a automatiquement été envoyé aux développeurs si vous étiez connecté à Internet.",
+ "report": [
+ "De plus, un rapport de plantage a été créé dans « ",
+ " », afin que vous puissiez l'envoyer aux développeurs lorsque vous aurez accès à Internet."
+ ],
+ "close": "Fermer",
+ "reset": "Réinitialiser Kartik et fermer"
+ },
+ "updates": {
+ "ok": "À jour",
+ "available": "Mises à jour du jeu disponibles",
+ "git": "Exécution de la version trunk",
+ "error": "Impossible de rechercher les mises à jour",
+ "wait": "Recherche de mises à jour...",
+ "warn": [
+ "Des mises à jour sont disponibles",
+ "Téléchargez la nouvelle version de Kartik depuis le site officiel pour bénéficier des dernières fonctionnalités et corrections de bugs."
+ ]
+ },
+ "scenario": {
+ "intro": [
+ "Hey, salut, ça te dit une petite course ?",
+ "Ah, te revoilà ! Ça te dit une petite course ?",
+ "Et si on se faisait une petite course ?",
+ "On fait un tour ?"
+ ],
+ "ahead1": [
+ "Oh non !",
+ "Putain, c'est pas possible !",
+ "Mais je vais pas y arriver...",
+ "Et merde...",
+ "Pourquoi toi ?"
+ ],
+ "ahead2": [
+ "Hi hi hi",
+ "Celle-là est pour moi !",
+ "Je l'aurai !",
+ "Elle est pour moi !",
+ "C'est à moi !"
+ ],
+ "won1": [
+ "Bien joué !",
+ "Tant pis pour moi...",
+ "J'aurai pu espérer...",
+ "Mais, c'est pas très sympa !",
+ "Bravo !"
+ ],
+ "won2": [
+ "Je te l'avais dit !",
+ "Comme si je t'avais pas prévenu !",
+ "J'ai gagné !",
+ "Génial, je l'ai gagnée !",
+ "Et une de plus pour moi !"
+ ],
+ "wall1": [
+ "Ah ah !",
+ "Bah alors, on va pas droit ?",
+ "Ouch",
+ "Ça doit faire mal...",
+ "Splaf, c't'obstacle !"
+ ],
+ "wall2": [
+ "Merde",
+ "Crotte",
+ "Pas possible",
+ "Puti"
+ ],
+ "start": [
+ "Je vais t'éclater !",
+ "Tu vas voir, je vais t'en faire une de ces courses !",
+ "Tu m'en diras des nouvelles",
+ "Allons-y !",
+ "Et, c'est parti !",
+ "Wooo, en avant !"
+ ]
+ },
+ "discord": {
+ "credits": [
+ "En attente",
+ "Dans les crédits"
+ ],
+ "game": [
+ "En jeu",
+ "Mode Solo",
+ "Mode Versus",
+ "En pause"
+ ],
+ "intro": [
+ "En attente",
+ "Sur l'introduction"
+ ],
+ "settings": [
+ "En attente",
+ "Dans les paramètres"
+ ],
+ "win": [
+ "Vient de gagner",
+ "Vient de perdre"
+ ]
+ },
+ "intro": [
+ "Appuyez sur Entrée pour commencer",
+ "Appuyez sur A pour commencer"
+ ],
+ "game": {
+ "credits": {
+ "by": "par"
+ },
+ "gpause": {
+ "title": "Jeu en pause",
+ "continueg": "Continuer",
+ "showhb": "Afficher hitbox",
+ "hidehb": "Masquer hitbox",
+ "quit": "Quitter"
+ }
+ },
+ "menu": {
+ "titles": [
+ "Solo",
+ "Versus",
+ "Options",
+ "Crédits",
+ "Quitter"
+ ],
+ "descriptions": [
+ "Jouer seul et hors ligne contre un robot",
+ "Jouer à deux sur le même écran",
+ "Modifier le zoom et les paramètres",
+ "Afficher la liste des auteurs du jeu",
+ "Fermer le jeu et retourner à"
+ ],
+ "distribute": "Ne pas distribuer"
+ },
+ "settings": {
+ "title": "Options",
+ "back": "Retour",
+ "size": "Taille de l'interface",
+ "music": "Activer la musique",
+ "lang": "Langue",
+ "voice": "Activer la voix",
+ "yes": "oui",
+ "no": "non",
+ "notice": "Les paramètres ne seront appliqués qu'après le redémarrage de Kartik"
+ },
+ "win": {
+ "solo": {
+ "win": "Vous avez gagné !",
+ "lose": "Vous avez perdu !"
+ },
+ "versus": "Joueur 0 a gagné !",
+ "quit": [
+ "Appuyez sur Échap pour quitter",
+ "Appuyez sur B pour quitter"
+ ]
+ },
+ "online": {
+ "menu": {
+ "local": "Local",
+ "online": "En ligne",
+ "dlocal": "Jouer avec un ami sur la même machine",
+ "donline": "Jouer avec un ami sur des machines différentes"
+ },
+ "error": {
+ "connection": "Erreur de communication",
+ "disconnect": "Déconnecté"
+ },
+ "connecting": "Connexion au serveur...",
+ "intro": {
+ "create": "Créer une partie",
+ "pcreate": "Donnez ce code à votre coéquipier pour qu'il se connecte à votre partie :",
+ "join": "Rejoindre une partie",
+ "pjoin": "Entrez le code de votre coéquipier pour rejoindre sa partie :"
+ },
+ "disconnected": "Connexion perdue",
+ "unable": "Impossible de se connecter au serveur",
+ "internal": "Erreur système interne",
+ "loading": "Préparation de la partie...",
+ "discord": "En ligne",
+ "generate": "Chargement du terrain...",
+ "discord2": "Rencontre une erreur",
+ "timeout": "Le délai d'attente a été dépassé",
+ "aborted": "L'autre joueur à quitté la partie",
+ "car0": "Votre voiture",
+ "car1": "Sa voiture"
+ }
+}
diff --git a/lang/it.json b/lang/it.json
new file mode 100644
index 0000000..d6c7f2a
--- /dev/null
+++ b/lang/it.json
@@ -0,0 +1,191 @@
+{
+ "_name": "Francese",
+ "crash": {
+ "title": "Kartik Crash Reporter",
+ "head": "Kartik ha smesso di funzionare",
+ "intro": "Kartik ha riscontrato un problema e si \u00e8 fermato inaspettatamente. ",
+ "report": [
+ "Inoltre, \u00e8 stato creato un rapporto sugli arresti anomali in \"",
+ "In modo che tu possa inviarlo agli sviluppatori quando hai accesso a Internet."
+ ],
+ "close": "Chiudere",
+ "reset": "Resetta Kartik e chiudi"
+ },
+ "updates": {
+ "ok": "Aggiornato",
+ "available": "Aggiornamenti del gioco disponibili",
+ "git": "Esecuzione della versione bagagliaio",
+ "error": "Impossibile controllare gli aggiornamenti",
+ "wait": "Verifica aggiornamenti ...",
+ "warn": [
+ "Sono disponibili aggiornamenti",
+ "Scarica la nuova versione di Kartik dal sito ufficiale per beneficiare delle ultime funzionalit\u00e0 e correzioni di bug."
+ ]
+ },
+ "scenario": {
+ "intro": [
+ "Ehi, ciao, che ne dici di una corsa veloce?",
+ "Ah, eccoti di nuovo! ",
+ "E se facessimo una piccola gara?",
+ "Facciamo una passeggiata?"
+ ],
+ "ahead1": [
+ "Oh no!",
+ "Dannazione, non \u00e8 possibile!",
+ "Ma non ci arriver\u00f2 ...",
+ "E merda ...",
+ "Perche tu ?"
+ ],
+ "ahead2": [
+ "Ih ih ih",
+ "Questo \u00e8 per me!",
+ "Lo avr\u00f2!",
+ "Lei \u00e8 per me!",
+ "\u00c8 mio !"
+ ],
+ "won1": [
+ "Bel gioco !",
+ "Peccato per me ...",
+ "Avrei potuto sperare ...",
+ "Ma non \u00e8 molto carino!",
+ "Ben fatto !"
+ ],
+ "won2": [
+ "Te l'avevo detto !",
+ "Come se non ti avessi avvertito!",
+ "Ho vinto !",
+ "Fantastico, l'ho vinto!",
+ "E ancora uno per me!"
+ ],
+ "wall1": [
+ "Ah ah!",
+ "Ebbene, non stiamo andando bene?",
+ "Ahia",
+ "Deve far male ...",
+ "Splaf, c't'ostacle!"
+ ],
+ "wall2": [
+ "Merda",
+ "Cacca",
+ "Non possibile",
+ "Puti"
+ ],
+ "start": [
+ "Mi divertir\u00f2!",
+ "Vedrai, ti far\u00f2 una di quelle gare!",
+ "Dimmi qualche notizia",
+ "Andiamo!",
+ "Eccoci qui !",
+ "Wooo, avanti!"
+ ]
+ },
+ "discord": {
+ "credits": [
+ "In attesa",
+ "Nei titoli di coda"
+ ],
+ "game": [
+ "Palo",
+ "Modalit\u00e0 Solo",
+ "Modalit\u00e0 Versus",
+ "In pausa"
+ ],
+ "intro": [
+ "In attesa",
+ "Circa l'introduzione"
+ ],
+ "settings": [
+ "In attesa",
+ "Nelle impostazioni"
+ ],
+ "win": [
+ "Appena vinto",
+ "Appena perso"
+ ]
+ },
+ "intro": [
+ "Toccare Voce per iniziare",
+ "Premere A per iniziare"
+ ],
+ "game": {
+ "credits": {
+ "by": "presso"
+ },
+ "gpause": {
+ "title": "Gioco in pausa",
+ "continueg": "continuare",
+ "showhb": "Mostra hitbox",
+ "hidehb": "Nascondi hitbox",
+ "quit": "Lasciare"
+ }
+ },
+ "menu": {
+ "titles": [
+ "assolo",
+ "contro",
+ "Opzioni",
+ "Crediti",
+ "Lasciare"
+ ],
+ "descriptions": [
+ "Giocare da soli e offline contro un robot",
+ "Riproduci due sullo stesso schermo",
+ "Modificare lo zoom e le impostazioni",
+ "Visualizza elenco di autori di giochi",
+ "Chiudere la partita e tornare a"
+ ],
+ "distribute": "Non distribuire"
+ },
+ "settings": {
+ "title": "Opzioni",
+ "back": "ritorno",
+ "size": "Dimensioni interfaccia",
+ "music": "Attivare la musica",
+ "lang": "lingua",
+ "voice": "Attivare la voce",
+ "yes": "s\u00ec",
+ "no": "No",
+ "notice": "Le impostazioni non verranno applicate fino a dopo il riavvio di Kartik"
+ },
+ "win": {
+ "solo": {
+ "win": "Hai vinto!",
+ "lose": "Hai perso!"
+ },
+ "versus": "Giocatore 0 ha vinto!",
+ "quit": [
+ "Premere ESC per andarsene",
+ "Premere B per uscire"
+ ]
+ },
+ "online": {
+ "menu": {
+ "local": "locale",
+ "online": "in linea",
+ "dlocal": "Giocare con un amico sulla stessa macchina",
+ "donline": "Giocare con un amico su macchine diverse"
+ },
+ "error": {
+ "connection": "Errore di comunicazione",
+ "disconnect": "sconnesso"
+ },
+ "connecting": "Connessione al server in corso...",
+ "intro": {
+ "create": "Creare un gioco",
+ "pcreate": "Dai questo codice al tuo compagno di squadra per connetterti al tuo gioco:",
+ "join": "Partecipa a una partita",
+ "pjoin": "Inserisci il codice del tuo compagno di squadra per unirti al suo gioco:"
+ },
+ "disconnected": "Connessione persa",
+ "unable": "Non \u00e8 possibile connettersi al server",
+ "internal": "Errore interno del sistema",
+ "loading": "Prepararsi per il gioco...",
+ "discord": "in linea",
+ "generate": "Caricare il terreno...",
+ "discord2": "Incontra un errore",
+ "timeout": "Il tempo di attesa \u00e8 stato superato",
+ "aborted": "L'altro giocatore ha lasciato il gioco",
+ "car0": "La tua auto",
+ "car1": "La sua auto"
+ }
+} \ No newline at end of file
diff --git a/lang/jp.json b/lang/jp.json
new file mode 100644
index 0000000..ccf83ed
--- /dev/null
+++ b/lang/jp.json
@@ -0,0 +1,191 @@
+{
+ "_name": "\u30d5\u30e9\u30f3\u30b9\u8a9e",
+ "crash": {
+ "title": "\u30ab\u30eb\u30c6\u30a3\u30af\u30af\u30e9\u30c3\u30b7\u30e5\u30ec\u30dd\u30fc\u30bf\u30fc",
+ "head": "\u30ab\u30eb\u30c6\u30a3\u30af\u306f\u4ed5\u4e8b\u3092\u3084\u3081\u305f",
+ "intro": "Kartik \u306f\u554f\u984c\u306b\u906d\u9047\u3057\u3001\u4e88\u671f\u305b\u305a\u505c\u6b62\u3057\u307e\u3057\u305f\u3002\u8ffd\u52a0\u60c5\u5831\u3092\u53ce\u96c6\u3057\u3001\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u306b\u63a5\u7d9a\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u30af\u30e9\u30c3\u30b7\u30e5 \u30ec\u30dd\u30fc\u30c8\u304c\u81ea\u52d5\u7684\u306b\u958b\u767a\u8005\u306b\u9001\u4fe1\u3055\u308c\u307e\u3057\u305f\u3002",
+ "report": [
+ "\u3055\u3089\u306b\u3001\u30af\u30e9\u30c3\u30b7\u30e5 \u30ec\u30dd\u30fc\u30c8\u306f\u3001",
+ "\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u5834\u5408\u306f\u3001\u958b\u767a\u8005\u306b\u9001\u4fe1\u3067\u304d\u307e\u3059\u3002"
+ ],
+ "close": "\u9589\u3081\u308b",
+ "reset": "\u30ab\u30eb\u30c6\u30a3\u30c3\u30af\u3092\u30ea\u30bb\u30c3\u30c8\u3057\u3066\u9589\u3058\u308b"
+ },
+ "updates": {
+ "ok": "\u6700\u65b0\u3067\u3059",
+ "available": "\u5229\u7528\u53ef\u80fd\u306a\u30b2\u30fc\u30e0\u306e\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8",
+ "git": "\u30c8\u30e9\u30f3\u30af \u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u5b9f\u884c",
+ "error": "\u66f4\u65b0\u30d7\u30ed\u30b0\u30e9\u30e0\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093",
+ "wait": "\u66f4\u65b0\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u691c\u7d22\u3057\u307e\u3059\u3002",
+ "warn": [
+ "\u66f4\u65b0\u30d7\u30ed\u30b0\u30e9\u30e0\u304c\u5229\u7528\u53ef\u80fd\u3067\u3059",
+ "\u6700\u65b0\u306e\u6a5f\u80fd\u3068\u30d0\u30b0\u4fee\u6b63\u306e\u305f\u3081\u306e\u516c\u5f0f\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u304b\u3089Kartik\u306e\u65b0\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u304f\u3060\u3055\u3044\u3002"
+ ]
+ },
+ "scenario": {
+ "intro": [
+ "\u306d\u3048\u3001\u3053\u3093\u306b\u3061\u306f\u3001\u5c11\u3057\u8d70\u308b\u306e\u306f\u3069\u3046\u3067\u3059\u304b?",
+ "\u3042\u3042\u3001\u3053\u3053\u3067\u3042\u306a\u305f\u306f\u518d\u3073\u3067\u3059!\u5c11\u3057\u8d70\u308b\u306e\u306f\u3069\u3046\u3067\u3059\u304b?",
+ "\u5c11\u3057\u8d70\u308a\u307e\u305b\u3093\u304b\u3002",
+ "\u79c1\u305f\u3061\u306f\u6563\u6b69\u306b\u884c\u304f\u3064\u3082\u308a\u3067\u3059\u304b?"
+ ],
+ "ahead1": [
+ "\u3042\u3042\u9055\u3044\u307e\u3059\uff01",
+ "\u5730\u7344\u3001\u305d\u308c\u306f\u4e0d\u53ef\u80fd\u3067\u3059!",
+ "\u3057\u304b\u3057\u3001\u79c1\u306f\u305d\u308c\u3092\u4f5c\u308b\u3064\u3082\u308a\u306f\u3042\u308a\u307e\u305b\u3093.",
+ "\u304a\u3084\u3002\u3002\u3002",
+ "\u3069\u3046\u3057\u3066\u305d\u3093\u306a\u3053\u3068\u3092\u3057\u306a\u306a\u306e?"
+ ],
+ "ahead2": [
+ "\u3053\u3093\u306b\u3061\u306f\u3053\u3093\u306b\u3061\u306f",
+ "\u3053\u308c\u306f\u79c1\u306e\u305f\u3081\u306e\u3082\u306e\u3067\u3059!",
+ "\u53d6\u3063\u3066\u304d\u307e\u3059\uff01",
+ "\u305d\u308c\u306f\u79c1\u306e\u305f\u3081\u3067\u3059!",
+ "\u79c1\u306e\u3058\u3083\u3042\u308a\u307e\u305b\u3093\uff01"
+ ],
+ "won1": [
+ "\u3088\u304f\u3084\u308a\u307e\u3057\u305f\u306d\uff01",
+ "\u79c1\u306b\u306f\u6b8b\u5ff5\u3067\u3059.",
+ "\u79c1\u306f\u671b\u3080\u3053\u3068\u304c\u3067\u304d\u305f.",
+ "\u3057\u304b\u3057\u3001\u305d\u308c\u306f\u975e\u5e38\u306b\u826f\u3044\u3067\u306f\u3042\u308a\u307e\u305b\u3093!",
+ "\u3088\u304f\u3084\u308a\u307e\u3057\u305f\u306d\uff01"
+ ],
+ "won2": [
+ "\u8a00\u3063\u305f\u3067\u3057\u3087\u3046\uff01",
+ "\u3042\u305f\u304b\u3082\u79c1\u304c\u3042\u306a\u305f\u306b\u8b66\u544a\u3057\u3066\u3044\u306a\u304b\u3063\u305f\u304b\u306e\u3088\u3046\u306b!",
+ "\u79c1\u304c\u52dd\u3061\u307e\u3057\u305f\uff01",
+ "\u7d20\u6674\u3089\u3057\u3044\u3001\u79c1\u306f\u305d\u308c\u3092\u7372\u5f97\u3057\u307e\u3057\u305f!",
+ "\u305d\u3057\u3066\u3001\u79c1\u306e\u305f\u3081\u306b\u3082\u3046\u4e00\u3064!"
+ ],
+ "wall1": [
+ "\u3042\u3042\u3042\u3042\uff01",
+ "\u3058\u3083\u3042\u3001\u307e\u3063\u3059\u3050\u884c\u304b\u306a\u3044\u306e?",
+ "\u75db\u3044",
+ "\u305d\u308c\u306f\u50b7\u3064\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059.",
+ "\u30b9\u30d7\u30e9\u30d5\u3001\u305d\u308c\u304c\u969c\u5bb3\u3060!"
+ ],
+ "wall2": [
+ "\u3061\u304f\u3057\u3087\u3046",
+ "\u3084\u3070\u3044",
+ "\u305d\u3093\u306a\u7b48\u306f\u3042\u308a\u307e\u305b\u3093",
+ "\u30d7\u30fc\u30c6\u30a3"
+ ],
+ "start": [
+ "\u79c1\u306f\u3042\u306a\u305f\u3092\u5439\u304d\u98db\u3070\u3059\u3064\u3082\u308a\u3067\u3059!",
+ "\u3042\u306a\u305f\u304c\u898b\u308b\u3067\u3057\u3087\u3046\u3001\u79c1\u306f\u3042\u306a\u305f\u306b\u305d\u308c\u3089\u306e\u30ec\u30fc\u30b9\u306e\u4e00\u3064\u3092\u4f5c\u308a\u307e\u3059!",
+ "\u3042\u306a\u305f\u306f\u79c1\u306b\u3044\u304f\u3064\u304b\u306e\u30cb\u30e5\u30fc\u30b9\u3092\u6559\u3048\u3066\u304f\u308c\u307e\u3059",
+ "\u884c\u304d\u307e\u3057\u3087\u3046\uff01",
+ "\u3055\u3042\u59cb\u3081\u307e\u3059\uff01",
+ "\u30a6\u30fc\u3001\u524d\u9032!"
+ ]
+ },
+ "discord": {
+ "credits": [
+ "\u5f85\u3064\u3053\u3068",
+ "\u30af\u30ec\u30b8\u30c3\u30c8\u3067"
+ ],
+ "game": [
+ "\u5371\u967a\u306b\u3055\u3089\u3055\u308c\u3066\u3044\u308b",
+ "\u30e2\u30fc\u30c9\u30bd\u30ed",
+ "\u30e2\u30fc\u30c9\u5bfe",
+ "\u4e00\u6642\u505c\u6b62\u4e2d"
+ ],
+ "intro": [
+ "\u5f85\u3064\u3053\u3068",
+ "\u5c0e\u5165\u306b\u3064\u3044\u3066"
+ ],
+ "settings": [
+ "\u5f85\u3064\u3053\u3068",
+ "\u8a2d\u5b9a\u3067"
+ ],
+ "win": [
+ "\u3061\u3087\u3046\u3069\u52dd\u3063\u305f",
+ "\u3061\u3087\u3046\u3069\u5931\u308f\u308c\u305f"
+ ]
+ },
+ "intro": [
+ "[\u30a8\u30f3\u30c8\u30ea]\u3092\u30bf\u30c3\u30d7\u3057\u3066\u958b\u59cb\u3057\u307e\u3059\u3002",
+ "\u958b\u59cb\u3059\u308b\u306b\u306f A \u3092\u62bc\u3057\u307e\u3059\u3002"
+ ],
+ "game": {
+ "credits": {
+ "by": "\u306b\u3088\u3063\u3066"
+ },
+ "gpause": {
+ "title": "\u4e00\u6642\u505c\u6b62\u4e2d\u306e\u30b2\u30fc\u30e0",
+ "continueg": "\u7d9a\u3051\u308b",
+ "showhb": "\u30d2\u30c3\u30c8\u30dc\u30c3\u30af\u30b9\u3092\u8868\u793a\u3059\u308b",
+ "hidehb": "\u30d2\u30c3\u30c8\u30dc\u30c3\u30af\u30b9\u3092\u975e\u8868\u793a\u306b\u3059\u308b",
+ "quit": "\u3053\u3053\u3092\u51fa\u307e\u3059"
+ }
+ },
+ "menu": {
+ "titles": [
+ "\u30bd\u30ed",
+ "\u5bfe",
+ "\u30aa\u30d7\u30b7\u30e7\u30f3",
+ "\u30af\u30ec\u30b8\u30c3\u30c8",
+ "\u3053\u3053\u3092\u51fa\u307e\u3059"
+ ],
+ "descriptions": [
+ "\u30ed\u30dc\u30c3\u30c8\u306b\u5bfe\u3057\u3066\u5358\u72ec\u3067\u30aa\u30d5\u30e9\u30a4\u30f3\u3067\u904a\u3076",
+ "\u540c\u3058\u753b\u9762\u3067 2 \u3064\u3092\u518d\u751f\u3059\u308b",
+ "\u30ba\u30fc\u30e0\u3068\u8a2d\u5b9a\u3092\u5909\u66f4\u3059\u308b",
+ "\u30b2\u30fc\u30e0\u4f5c\u6210\u8005\u306e\u4e00\u89a7\u3092\u8868\u793a\u3059\u308b",
+ "\u30b2\u30fc\u30e0\u3092\u9589\u3058\u3066\u3001\u6b21\u306e\u30da\u30fc\u30b8\u306b\u623b\u308a\u307e\u3059\u3002"
+ ],
+ "distribute": "\u914d\u5e03\u3057\u306a\u3044"
+ },
+ "settings": {
+ "title": "\u30aa\u30d7\u30b7\u30e7\u30f3",
+ "back": "\u5e30\u308b",
+ "size": "\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30a4\u30b9\u30b5\u30a4\u30ba",
+ "music": "\u97f3\u697d\u3092\u30a2\u30af\u30c6\u30a3\u30d6\u306b\u3059\u308b",
+ "lang": "\u820c",
+ "voice": "\u97f3\u58f0\u3092\u30a2\u30af\u30c6\u30a3\u30d6\u306b\u3059\u308b",
+ "yes": "\u306f\u3044",
+ "no": "\u3044\u3044\u3048",
+ "notice": "\u8a2d\u5b9a\u306fKartik\u306e\u518d\u8d77\u52d5\u5f8c\u307e\u3067\u9069\u7528\u3055\u308c\u307e\u305b\u3093"
+ },
+ "win": {
+ "solo": {
+ "win": "\u3042\u306a\u305f\u306f\u52dd\u3063\u305f!",
+ "lose": "\u3042\u306a\u305f\u306f\u5931\u3044\u307e\u3059\uff01"
+ },
+ "versus": "\u30d7\u30ec\u30a4\u30e4\u30fc0\u304c\u52dd\u3063\u305f!",
+ "quit": [
+ "\u7d42\u4e86\u3059\u308b\u30a8\u30b9\u30b1\u30fc\u30d7\u3092\u62bc\u3059",
+ "B \u3092\u62bc\u3057\u3066\u9000\u53bb"
+ ]
+ },
+ "online": {
+ "menu": {
+ "local": "\u5730\u5143\u306e",
+ "online": "\u30aa\u30f3\u30e9\u30a4\u30f3",
+ "dlocal": "\u540c\u3058\u30de\u30b7\u30f3\u4e0a\u306e\u53cb\u4eba\u3068\u904a\u3076",
+ "donline": "\u7570\u306a\u308b\u30de\u30b7\u30f3\u4e0a\u306e\u53cb\u4eba\u3068\u904a\u3076"
+ },
+ "error": {
+ "connection": "\u901a\u4fe1\u30a8\u30e9\u30fc",
+ "disconnect": "\u9014\u5207\u308c\u9014\u5207\u308c"
+ },
+ "connecting": "\u30b5\u30fc\u30d0\u30fc\u3078\u306e\u63a5\u7d9a.",
+ "intro": {
+ "create": "\u30b2\u30fc\u30e0\u3092\u4f5c\u6210\u3059\u308b",
+ "pcreate": "\u3053\u306e\u30b3\u30fc\u30c9\u3092\u30c1\u30fc\u30e0\u30e1\u30a4\u30c8\u306b\u6e21\u3057\u3066\u30b2\u30fc\u30e0\u306b\u63a5\u7d9a\u3057\u307e\u3059\u3002",
+ "join": "\u30b2\u30fc\u30e0\u306b\u53c2\u52a0\u3059\u308b",
+ "pjoin": "\u30c1\u30fc\u30e0\u30e1\u30a4\u30c8\u306e\u30b3\u30fc\u30c9\u3092\u5165\u529b\u3057\u3066\u30b2\u30fc\u30e0\u306b\u53c2\u52a0\u3057\u307e\u3059\u3002"
+ },
+ "disconnected": "\u63a5\u7d9a\u304c\u5207\u65ad\u3055\u308c\u305f",
+ "unable": "\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093",
+ "internal": "\u5185\u90e8\u30b7\u30b9\u30c6\u30e0 \u30a8\u30e9\u30fc",
+ "loading": "\u30b2\u30fc\u30e0\u306e\u6e96\u5099.",
+ "discord": "\u30aa\u30f3\u30e9\u30a4\u30f3",
+ "generate": "\u571f\u5730\u3092\u30ed\u30fc\u30c9\u3057\u307e\u3059\u3002",
+ "discord2": "\u9593\u9055\u3044\u3092\u6e80\u305f\u3059",
+ "timeout": "\u5f85\u3061\u6642\u9593\u3092\u8d85\u3048\u307e\u3057\u305f",
+ "aborted": "\u4ed6\u306e\u30d7\u30ec\u30a4\u30e4\u30fc\u306f\u30b2\u30fc\u30e0\u3092\u96e2\u308c\u305f",
+ "car0": "\u3042\u306a\u305f\u306e\u8eca",
+ "car1": "\u5f7c\u306e\u8eca"
+ }
+} \ No newline at end of file
diff --git a/lang/languages.json b/lang/languages.json
new file mode 100644
index 0000000..7cdf3f6
--- /dev/null
+++ b/lang/languages.json
@@ -0,0 +1,12 @@
+{
+ "en": "English",
+ "fr": "Français",
+ "es": "Español",
+ "it": "Italiano",
+ "pt": "Português",
+ "de": "Deutsch",
+ "nl": "Nederlands",
+ "zh": "中国人",
+ "jp": "日本語",
+ "ru": "русский"
+}
diff --git a/lang/loader.js b/lang/loader.js
new file mode 100644
index 0000000..fdd5ec2
--- /dev/null
+++ b/lang/loader.js
@@ -0,0 +1,46 @@
+function getCookie(cname) {
+ var name = cname + "=";
+ var decodedCookie = decodeURIComponent(document.cookie);
+ var ca = decodedCookie.split(';');
+ for(var i = 0; i <ca.length; i++) {
+ var c = ca[i];
+ while (c.charAt(0) == ' ') {
+ c = c.substring(1);
+ }
+ if (c.indexOf(name) == 0) {
+ return c.substring(name.length, c.length);
+ }
+ }
+ return "";
+}
+
+if (getCookie("kartik_lang").trim() === "") {
+ document.cookie = "kartik_lang=en; path=/";
+}
+
+if (typeof native === "boolean" && !native) {
+ try {
+ global.lp = getCookie("kartik_lang");
+ global.ll_length = getCookie("kartik_i18n_" + lp) - 1 + 2;
+ global.ll_raw = "";
+
+ for (i = 1; i <= ll_length; i++) {
+ global.ll_raw = ll_raw + getCookie("kartik_i18n_" + lp + "_" + (i - 1));
+ }
+
+ global.lang = JSON.parse(ll_raw);
+ } catch (e) {
+ console.error(e);
+ global.lp = "en";
+ global.lang = JSON.parse(window.fetch("./lang/" + lp + ".json").toString());
+ }
+} else {
+ try {
+ global.lp = require('electron').remote.getCurrentWindow().lp.trim();
+ global.lang = JSON.parse(require('fs').readFileSync("./lang/" + lp + ".json").toString());
+ } catch (e) {
+ console.error(e);
+ global.lp = "en";
+ global.lang = JSON.parse(require('fs').readFileSync("./lang/" + lp + ".json").toString());
+ }
+}
diff --git a/lang/nl.json b/lang/nl.json
new file mode 100644
index 0000000..6b7b2a1
--- /dev/null
+++ b/lang/nl.json
@@ -0,0 +1,191 @@
+{
+ "_name": "Frans",
+ "crash": {
+ "title": "Kartik Crash Verslaggever",
+ "head": "Kartik werkt niet meer",
+ "intro": "Kartik ondervond een probleem en stopte onverwacht.We hebben aanvullende informatie verzameld en er is automatisch een crashrapport naar ontwikkelaars verzonden als u verbinding hebt gemaakt met internet.",
+ "report": [
+ "Daarnaast is er een crashrapport gemaakt in \"",
+ "zodat u het naar ontwikkelaars kunt sturen wanneer u toegang hebt tot internet."
+ ],
+ "close": "Sluiten",
+ "reset": "Reset Kartik en sluit"
+ },
+ "updates": {
+ "ok": "Bijdetijds",
+ "available": "Game-updates beschikbaar",
+ "git": "De trunkversie uitvoeren",
+ "error": "Kan geen updates vinden",
+ "wait": "Zoeken naar updates...",
+ "warn": [
+ "Updates zijn beschikbaar",
+ "Download de nieuwe versie van Kartik van de offici\u00eble website voor de nieuwste functies en bugfixes."
+ ]
+ },
+ "scenario": {
+ "intro": [
+ "H\u00e9, hallo, wat dacht je van een kleine run?",
+ "Ah, hier ben je weer! Wat dacht je van een beetje rennen?",
+ "Waarom gaan we niet even rennen?",
+ "Gaan we wandelen?"
+ ],
+ "ahead1": [
+ "Oh nee!",
+ ", het is niet mogelijk!",
+ "Maar ik ga het niet halen...",
+ "Oh...",
+ "Waarom moet je dat doen?"
+ ],
+ "ahead2": [
+ "Hallo hi hi",
+ "Deze is voor mij.",
+ "Ik pak het wel.",
+ "Het is voor mij!",
+ "Het is van mij!"
+ ],
+ "won1": [
+ "Goed gedaan!",
+ "Jammer voor mij...",
+ "Ik had kunnen hopen...",
+ "Maar het is niet erg leuk!",
+ "Goed gedaan!"
+ ],
+ "won2": [
+ "Zei ik je toch!",
+ "Alsof ik je niet gewaarschuwd had.",
+ "Ik heb gewonnen.",
+ "Geweldig, ik heb gewonnen!",
+ "En nog eentje voor mij."
+ ],
+ "wall1": [
+ "Ah ah!",
+ "Gaan we dan niet rechtdoor?",
+ "Ouch",
+ "Het moet pijn doen...",
+ "Splaf, dat is het obstakel!"
+ ],
+ "wall2": [
+ "Verdomd",
+ "Crap",
+ "Echt niet",
+ "Puti"
+ ],
+ "start": [
+ "Ik ga je wegblazen!",
+ "Je zult zien, ik maak van jou zo'n race!",
+ "Vertel me wat nieuws.",
+ "We gaan!",
+ "Daar gaan we!",
+ "Wooo, vooruit!"
+ ]
+ },
+ "discord": {
+ "credits": [
+ "Wachten",
+ "In de aftiteling"
+ ],
+ "game": [
+ "in gevaar",
+ "Modus Solo",
+ "Modus versus",
+ "Bij pauze"
+ ],
+ "intro": [
+ "Wachten",
+ "Over de introductie"
+ ],
+ "settings": [
+ "Wachten",
+ "In de instellingen"
+ ],
+ "win": [
+ "Net gewonnen",
+ "Net verdwaald"
+ ]
+ },
+ "intro": [
+ "Tik op Invoeren om aan de slag te gaan",
+ "Druk op A om aan de slag te gaan"
+ ],
+ "game": {
+ "credits": {
+ "by": "Door"
+ },
+ "gpause": {
+ "title": "Spel op pauze",
+ "continueg": "Blijven",
+ "showhb": "Hitbox weergeven",
+ "hidehb": "Hitbox verbergen",
+ "quit": "Om te vertrekken"
+ }
+ },
+ "menu": {
+ "titles": [
+ "Solo",
+ "Versus",
+ "Opties",
+ "Credits",
+ "Om te vertrekken"
+ ],
+ "descriptions": [
+ "Alleen en offline spelen tegen een robot",
+ "Twee op hetzelfde scherm afspelen",
+ "Zoom en instellingen wijzigen",
+ "Lijst met gameauteurs weergeven",
+ "Sluit het spel en keer terug naar"
+ ],
+ "distribute": "Niet distribueren"
+ },
+ "settings": {
+ "title": "Opties",
+ "back": "Terug",
+ "size": "Interfacegrootte",
+ "music": "Muziek activeren",
+ "lang": "Tong",
+ "voice": "Activeer de stem",
+ "yes": "Ja",
+ "no": "niet",
+ "notice": "De instellingen worden pas toegepast nadat Kartik opnieuw is opgestart"
+ },
+ "win": {
+ "solo": {
+ "win": "Je hebt gewonnen.",
+ "lose": "Jij hebt verloren!"
+ },
+ "versus": "Speler 0 heeft gewonnen!",
+ "quit": [
+ "Druk op Escape om te vertrekken",
+ "Druk op B om te vertrekken"
+ ]
+ },
+ "online": {
+ "menu": {
+ "local": "Lokale",
+ "online": "Online",
+ "dlocal": "Spelen met een vriend op dezelfde machine",
+ "donline": "Het spelen met een vriend op verschillende machines"
+ },
+ "error": {
+ "connection": "Communicatiefout",
+ "disconnect": "Verbroken"
+ },
+ "connecting": "Verbinding maken met de server...",
+ "intro": {
+ "create": "Een spel maken",
+ "pcreate": "Geef deze code aan je teamgenoot om verbinding te maken met je spel:",
+ "join": "Deelnemen aan een spel",
+ "pjoin": "Voer de code van je teamgenoot in om deel te nemen aan zijn spel:"
+ },
+ "disconnected": "Verbroken verbinding",
+ "unable": "Kan geen verbinding maken met de server",
+ "internal": "Interne systeemfout",
+ "loading": "Voorbereiding op het spel...",
+ "discord": "Online",
+ "generate": "Het land laden...",
+ "discord2": "Ontmoet een fout",
+ "timeout": "De wachttijd is overschreden",
+ "aborted": "De andere speler verliet het spel",
+ "car0": "Uw auto",
+ "car1": "Zijn auto"
+ }
+} \ No newline at end of file
diff --git a/lang/preload.js b/lang/preload.js
new file mode 100644
index 0000000..5fbaa65
--- /dev/null
+++ b/lang/preload.js
@@ -0,0 +1,2 @@
+global.lp = win.lp;
+global.lang = JSON.parse(require('fs').readFileSync("./lang/" + lp + ".json")); \ No newline at end of file
diff --git a/lang/pt.json b/lang/pt.json
new file mode 100644
index 0000000..ec5b9d6
--- /dev/null
+++ b/lang/pt.json
@@ -0,0 +1,191 @@
+{
+ "_name": "Franc\u00eas",
+ "crash": {
+ "title": "Kartik Crash Reporter",
+ "head": "Kartik parou de trabalhar",
+ "intro": "Kartik encontrou um problema e parou inesperadamente.Coletamos informa\u00e7\u00f5es adicionais, e um relat\u00f3rio de falha foi enviado automaticamente aos desenvolvedores se voc\u00ea estivesse conectado \u00e0 Internet.",
+ "report": [
+ "Al\u00e9m disso, um relat\u00f3rio de acidente foi criado em \"",
+ "para que voc\u00ea possa envi\u00e1-lo para desenvolvedores quando voc\u00ea tiver acesso \u00e0 Internet."
+ ],
+ "close": "fechar",
+ "reset": "Redefinir Kartik e fechar"
+ },
+ "updates": {
+ "ok": "Atualizado",
+ "available": "Atualiza\u00e7\u00f5es de jogos dispon\u00edveis",
+ "git": "Executando a vers\u00e3o do porta-malas",
+ "error": "N\u00e3o consigo encontrar atualiza\u00e7\u00f5es",
+ "wait": "Procure por atualiza\u00e7\u00f5es...",
+ "warn": [
+ "Atualiza\u00e7\u00f5es est\u00e3o dispon\u00edveis",
+ "Baixe a nova vers\u00e3o de Kartik no site oficial para os recursos mais recentes e corre\u00e7\u00f5es de bugs."
+ ]
+ },
+ "scenario": {
+ "intro": [
+ "Ei, oi, que tal uma pequena corrida?",
+ "Ah, aqui est\u00e1 voc\u00ea de novo! Que tal uma pequena corrida?",
+ "Por que n\u00e3o corremos um pouco?",
+ "Vamos dar uma volta?"
+ ],
+ "ahead1": [
+ "Ah, n\u00e3o!",
+ "Inferno, n\u00e3o \u00e9 poss\u00edvel!",
+ "Mas eu n\u00e3o vou conseguir...",
+ "ah...",
+ "Por que voc\u00ea tem que fazer isso?"
+ ],
+ "ahead2": [
+ "Oi oi oi",
+ "Este \u00e9 para mim!",
+ "Eu vou peg\u00e1-lo!",
+ "\u00c9 para mim!",
+ "\u00c9 meu!"
+ ],
+ "won1": [
+ "Muito bem!",
+ "Muito ruim para mim...",
+ "Eu poderia ter esperado...",
+ "Mas n\u00e3o \u00e9 muito agrad\u00e1vel!",
+ "Muito bem!"
+ ],
+ "won2": [
+ "Eu te avisei!",
+ "Como se eu n\u00e3o tivesse avisado voc\u00ea!",
+ "Eu ganhei!",
+ "\u00d3timo, eu ganhei!",
+ "E mais um para mim!"
+ ],
+ "wall1": [
+ "Ah ah!",
+ "Bem, ent\u00e3o, n\u00e3o vamos direto?",
+ "ai",
+ "Deve doer...",
+ "Splaf, esse \u00e9 o obst\u00e1culo!"
+ ],
+ "wall2": [
+ "droga",
+ "porcaria",
+ "De maneira nenhuma",
+ "Puti"
+ ],
+ "start": [
+ "Eu vou te surpreender!",
+ "Voc\u00ea vai ver, eu vou fazer de voc\u00ea uma dessas corridas!",
+ "Voc\u00ea vai me contar algumas novidades.",
+ "Vamos!",
+ "Aqui vamos n\u00f3s!",
+ "Wooo, para a frente!"
+ ]
+ },
+ "discord": {
+ "credits": [
+ "espera",
+ "Nos cr\u00e9ditos"
+ ],
+ "game": [
+ "em risco",
+ "Modo Solo",
+ "Modo Versus",
+ "Em pausa"
+ ],
+ "intro": [
+ "espera",
+ "Na introdu\u00e7\u00e3o"
+ ],
+ "settings": [
+ "espera",
+ "Nas configura\u00e7\u00f5es"
+ ],
+ "win": [
+ "Acabou de ganhar.",
+ "Acabou de perder"
+ ]
+ },
+ "intro": [
+ "Toque em Entrar para come\u00e7ar",
+ "Pressione A para come\u00e7ar"
+ ],
+ "game": {
+ "credits": {
+ "by": "por"
+ },
+ "gpause": {
+ "title": "Jogo em pausa",
+ "continueg": "continuar",
+ "showhb": "Show hitbox",
+ "hidehb": "Ocultar caixa de sucesso",
+ "quit": "Sair"
+ }
+ },
+ "menu": {
+ "titles": [
+ "solo",
+ "contra",
+ "Op\u00e7\u00f5es",
+ "Cr\u00e9ditos",
+ "Sair"
+ ],
+ "descriptions": [
+ "Jogando sozinho e offline contra um rob\u00f4",
+ "Jogue dois na mesma tela",
+ "Alterar zoom e configura\u00e7\u00f5es",
+ "Ver lista de autores de jogos",
+ "Feche o jogo e volte para"
+ ],
+ "distribute": "N\u00e3o distribua."
+ },
+ "settings": {
+ "title": "Op\u00e7\u00f5es",
+ "back": "retornar",
+ "size": "Tamanho da interface",
+ "music": "Ativar m\u00fasica",
+ "lang": "l\u00edngua",
+ "voice": "Ativar a voz",
+ "yes": "sim",
+ "no": "N\u00e3o",
+ "notice": "As configura\u00e7\u00f5es n\u00e3o ser\u00e3o aplicadas at\u00e9 depois da reinicializa\u00e7\u00e3o de Kartik"
+ },
+ "win": {
+ "solo": {
+ "win": "Voc\u00ea ganhou!",
+ "lose": "Voc\u00ea perdeu!"
+ },
+ "versus": "Jogador 0 ganhou!",
+ "quit": [
+ "Pressione Escape para sair",
+ "Pressione B para sair"
+ ]
+ },
+ "online": {
+ "menu": {
+ "local": "local",
+ "online": "online",
+ "dlocal": "Brincando com um amigo na mesma m\u00e1quina",
+ "donline": "Brincando com um amigo em diferentes m\u00e1quinas"
+ },
+ "error": {
+ "connection": "Erro de comunica\u00e7\u00e3o",
+ "disconnect": "Desconectado"
+ },
+ "connecting": "Conectando-se ao servidor...",
+ "intro": {
+ "create": "Crie um jogo",
+ "pcreate": "D\u00ea este c\u00f3digo ao seu companheiro de equipe para se conectar ao seu jogo:",
+ "join": "Participe de um jogo",
+ "pjoin": "Digite o c\u00f3digo do seu companheiro de equipe para participar do jogo dele:"
+ },
+ "disconnected": "Conex\u00e3o perdida",
+ "unable": "N\u00e3o pode se conectar ao servidor",
+ "internal": "Erro interno do sistema",
+ "loading": "Preparando-se para o jogo...",
+ "discord": "online",
+ "generate": "Carregando a terra...",
+ "discord2": "Encontra um erro",
+ "timeout": "O tempo de espera foi excedido",
+ "aborted": "O outro jogador deixou o jogo.",
+ "car0": "Seu carro",
+ "car1": "O carro dele."
+ }
+} \ No newline at end of file
diff --git a/lang/ru.json b/lang/ru.json
new file mode 100644
index 0000000..88e9271
--- /dev/null
+++ b/lang/ru.json
@@ -0,0 +1,191 @@
+{
+ "_name": "\u0444\u0440\u0430\u043d\u0446\u0443\u0437\u0441\u043a\u0438\u0439",
+ "crash": {
+ "title": "Kartik \u0410\u0432\u0430\u0440\u0438\u0438 \u0420\u0435\u043f\u043e\u0440\u0442\u0435\u0440",
+ "head": "\u041a\u0430\u0440\u0442\u0438\u043a \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c",
+ "intro": "\u041a\u0430\u0440\u0442\u0438\u043a \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439 \u0438 \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f.\u041c\u044b \u0441\u043e\u0431\u0440\u0430\u043b\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u0438 \u043e\u0442\u0447\u0435\u0442 \u043e \u0441\u0431\u043e\u044f\u0445 \u0431\u044b\u043b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c, \u0435\u0441\u043b\u0438 \u0432\u044b \u0431\u044b\u043b\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043a \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0443.",
+ "report": [
+ "\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432 \"",
+ "\u0442\u0430\u043a \u0447\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c, \u043a\u043e\u0433\u0434\u0430 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0443."
+ ],
+ "close": "\u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0442\u044c",
+ "reset": "\u0421\u0431\u0440\u043e\u0441\u0438\u0442\u044c Kartik \u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u044c"
+ },
+ "updates": {
+ "ok": "\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439",
+ "available": "\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u0433\u0440",
+ "git": "\u0417\u0430\u043f\u0443\u0441\u043a \u0432\u0435\u0440\u0441\u0438\u0438 \u0431\u0430\u0433\u0430\u0436\u043d\u0438\u043a\u0430",
+ "error": "\u041d\u0435 \u043c\u043e\u0433\u0443 \u043d\u0430\u0439\u0442\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f",
+ "wait": "\u041f\u043e\u0438\u0441\u043a \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439...",
+ "warn": [
+ "\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f",
+ "\u0421\u043a\u0430\u0447\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Kartik \u0441 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0442\u0430 \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u043e\u0448\u0438\u0431\u043e\u043a."
+ ]
+ },
+ "scenario": {
+ "intro": [
+ "\u042d\u0439, \u043f\u0440\u0438\u0432\u0435\u0442, \u043a\u0430\u043a \u043d\u0430\u0441\u0447\u0435\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u043e\u0431\u0435\u0436\u043a\u0438?",
+ ", \u0432\u043e\u0442 \u0432\u044b \u0441\u043d\u043e\u0432\u0430! \u041a\u0430\u043a \u043d\u0430\u0441\u0447\u0435\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u043e\u0431\u0435\u0436\u043a\u0438?",
+ "\u041f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0430\u043c \u043d\u0435 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0431\u0435\u0433\u0430\u0442\u044c?",
+ "\u041c\u044b \u0438\u0434\u0435\u043c \u0433\u0443\u043b\u044f\u0442\u044c?"
+ ],
+ "ahead1": [
+ "\u041e, \u043d\u0435\u0442!",
+ "\u0427\u0435\u0440\u0442, \u044d\u0442\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e!",
+ "\u041d\u043e \u044f \u043d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0441\u044c \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e ...",
+ "\u041e,...",
+ "\u0417\u0430\u0447\u0435\u043c \u0442\u044b \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0448\u044c?"
+ ],
+ "ahead2": [
+ "\u041f\u0440\u0438\u0432\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0442",
+ "\u042d\u0442\u043e \u0434\u043b\u044f \u043c\u0435\u043d\u044f!",
+ "\u042f \u044d\u0442\u043e \u0434\u043e\u0441\u0442\u0430\u043d\u0443!",
+ "\u042d\u0442\u043e \u0434\u043b\u044f \u043c\u0435\u043d\u044f!",
+ "\u042d\u0442\u043e \u043c\u043e\u0451!"
+ ],
+ "won1": [
+ "\u041f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e!",
+ "\u0421\u043b\u0438\u0448\u043a\u043e\u043c \u043f\u043b\u043e\u0445\u043e \u0434\u043b\u044f \u043c\u0435\u043d\u044f ...",
+ "\u042f, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043d\u0430\u0434\u0435\u044f\u043b\u0441\u044f...",
+ "\u041d\u043e, \u044d\u0442\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u0438\u044f\u0442\u043d\u043e!",
+ "\u041f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e!"
+ ],
+ "won2": [
+ "\u042f \u0433\u043e\u0432\u043e\u0440\u0438\u043b \u0442\u0435\u0431\u0435!",
+ "\u041a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u044f \u043d\u0435 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u043b \u0442\u0435\u0431\u044f!",
+ "\u042f \u043f\u043e\u0431\u0435\u0434\u0438\u043b!",
+ "\u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u044f \u0432\u044b\u0438\u0433\u0440\u0430\u043b\u0430!",
+ "\u0418 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0434\u043b\u044f \u043c\u0435\u043d\u044f!"
+ ],
+ "wall1": [
+ "\u0430\u0445!",
+ "\u041d\u0443, \u0442\u043e\u0433\u0434\u0430 \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u044f\u043c\u043e?",
+ "\u043e\u0439",
+ "\u042d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0431\u043e\u043b\u044c\u043d\u043e ...",
+ "\u0421\u043f\u043b\u0430\u0444, \u044d\u0442\u043e \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0438\u0435!"
+ ],
+ "wall2": [
+ "\u043f\u0440\u043e\u043a\u043b\u0438\u043d\u0430\u0442\u044c",
+ "\u0434\u0435\u0440\u044c\u043c\u043e",
+ "\u0412\u044b \u0448\u0443\u0442\u0438\u0442\u0435",
+ "\u041f\u0443\u0442\u0438"
+ ],
+ "start": [
+ "\u042f \u0442\u0435\u0431\u044f \u0432\u0437\u043e\u0440\u0432\u0443!",
+ "\u0412\u043e\u0442 \u0443\u0432\u0438\u0434\u0438\u0448\u044c, \u044f \u0441\u0434\u0435\u043b\u0430\u044e \u0442\u0435\u0431\u044f \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u044d\u0442\u0438\u0445 \u0440\u0430\u0441!",
+ "\u0412\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u0442\u0435 \u043c\u043d\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u043e\u0432\u043e\u0441\u0442\u0438",
+ "\u041f\u043e\u0435\u0445\u0430\u043b\u0438!",
+ "\u0432\u043e\u0442 \u0442\u0430\u043a!",
+ "\u0412\u0443, \u0432\u043f\u0435\u0440\u0435\u0434!"
+ ]
+ },
+ "discord": {
+ "credits": [
+ "\u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435",
+ "\u0412 \u0442\u0438\u0442\u0440\u0430\u0445"
+ ],
+ "game": [
+ "\u0432 \u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438",
+ "\u0420\u0435\u0436\u0438\u043c \u0421\u043e\u043b\u043e",
+ "\u0420\u0435\u0436\u0438\u043c \u043f\u0440\u043e\u0442\u0438\u0432",
+ "\u041d\u0430 \u043f\u0430\u0443\u0437\u0435"
+ ],
+ "intro": [
+ "\u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435",
+ "\u041e \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0438"
+ ],
+ "settings": [
+ "\u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435",
+ "\u0412 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445"
+ ],
+ "win": [
+ "\u0422\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0432\u044b\u0438\u0433\u0440\u0430\u043b",
+ "\u041f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0442\u0435\u0440\u044f\u043b"
+ ]
+ },
+ "intro": [
+ "\u041d\u0430\u0436\u043c\u0438\u0442\u0435 \u0412\u0445\u043e\u0434, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443",
+ "\u041d\u0430\u0436\u043c\u0438\u0442\u0435 A, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0443"
+ ],
+ "game": {
+ "credits": {
+ "by": "\u043e\u043a\u043e\u043b\u043e"
+ },
+ "gpause": {
+ "title": "\u0418\u0433\u0440\u0430 \u043d\u0430 \u043f\u0430\u0443\u0437\u0435",
+ "continueg": "\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c",
+ "showhb": "\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0445\u0438\u0442\u0431\u043e\u043a\u0441",
+ "hidehb": "\u0421\u043a\u0440\u044b\u0442\u044c \u0445\u0438\u0442\u0431\u043e\u043a\u0441",
+ "quit": "\u0423\u0435\u0437\u0436\u0430\u0442\u044c"
+ }
+ },
+ "menu": {
+ "titles": [
+ "\u0441\u043e\u043b\u043e",
+ "\u043f\u0440\u043e\u0442\u0438\u0432",
+ "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b",
+ "\u043a\u0440\u0435\u0434\u0438\u0442\u044b",
+ "\u0423\u0435\u0437\u0436\u0430\u0442\u044c"
+ ],
+ "descriptions": [
+ "\u0418\u0433\u0440\u0430\u044f \u0432 \u043e\u0434\u0438\u043d\u043e\u0447\u043a\u0443 \u0438 \u0432 \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u0440\u043e\u0442\u0438\u0432 \u0440\u043e\u0431\u043e\u0442\u0430",
+ "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0434\u0432\u0443\u0445 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u044d\u043a\u0440\u0430\u043d\u0435",
+ "\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a",
+ "\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0430\u0432\u0442\u043e\u0440\u043e\u0432 \u0438\u0433\u0440",
+ "\u0417\u0430\u043a\u0440\u043e\u0439\u0442\u0435 \u0438\u0433\u0440\u0443 \u0438 \u0432\u0435\u0440\u043d\u0438\u0442\u0435\u0441\u044c \u043a"
+ ],
+ "distribute": "\u041d\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0439\u0442\u0435"
+ },
+ "settings": {
+ "title": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b",
+ "back": "\u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c",
+ "size": "\u0420\u0430\u0437\u043c\u0435\u0440 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430",
+ "music": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0443\u0437\u044b\u043a\u0443",
+ "lang": "\u044f\u0437\u044b\u043a",
+ "voice": "\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0433\u043e\u043b\u043e\u0441",
+ "yes": "\u0414\u0430",
+ "no": "\u041d\u0435\u0442",
+ "notice": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 Kartik"
+ },
+ "win": {
+ "solo": {
+ "win": "\u0422\u044b \u0432\u044b\u0438\u0433\u0440\u0430\u043b\u0430!",
+ "lose": "\u0422\u044b \u043f\u0440\u043e\u0438\u0433\u0440\u0430\u043b!"
+ },
+ "versus": "\u0418\u0433\u0440\u043e\u043a 0 \u0432\u044b\u0438\u0433\u0440\u0430\u043b!",
+ "quit": [
+ "\u041f\u0440\u0435\u0441\u0441 \u041f\u043e\u0431\u0435\u0433 \u0443\u0439\u0442\u0438",
+ "\u041d\u0430\u0436\u043c\u0438\u0442\u0435 B, \u0447\u0442\u043e\u0431\u044b \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c"
+ ]
+ },
+ "online": {
+ "menu": {
+ "local": "\u043c\u0435\u0441\u0442\u043d\u044b\u0439",
+ "online": "\u041e\u043d\u043b\u0430\u0439\u043d",
+ "dlocal": "\u0418\u0433\u0440\u0430 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435",
+ "donline": "\u0418\u0433\u0440\u0430 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445"
+ },
+ "error": {
+ "connection": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0441\u0432\u044f\u0437\u0438",
+ "disconnect": "\u0431\u0435\u0441\u0441\u0432\u044f\u0437\u043d\u044b\u0439"
+ },
+ "connecting": "\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443...",
+ "intro": {
+ "create": "\u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0438\u0433\u0440\u0443",
+ "pcreate": "\u0414\u0430\u0439\u0442\u0435 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434 \u0432\u0430\u0448\u0435\u043c\u0443 \u0442\u043e\u0432\u0430\u0440\u0438\u0449\u0443 \u043f\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a \u0432\u0430\u0448\u0435\u0439 \u0438\u0433\u0440\u0435:",
+ "join": "\u041f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u043a \u0438\u0433\u0440\u0435",
+ "pjoin": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u0434 \u0432\u0430\u0448\u0435\u0433\u043e \u0442\u043e\u0432\u0430\u0440\u0438\u0449\u0430 \u043f\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u043a \u0435\u0433\u043e \u0438\u0433\u0440\u0435:"
+ },
+ "disconnected": "\u041f\u043e\u0442\u0435\u0440\u044f\u043d\u043d\u043e\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435",
+ "unable": "\u041d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443",
+ "internal": "\u041e\u0448\u0438\u0431\u043a\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b",
+ "loading": "\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043a \u0438\u0433\u0440\u0435...",
+ "discord": "\u041e\u043d\u043b\u0430\u0439\u043d",
+ "generate": "\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0437\u0435\u043c\u043b\u0438...",
+ "discord2": "\u0412\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443",
+ "timeout": "\u0412\u0440\u0435\u043c\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d\u043e",
+ "aborted": "\u0414\u0440\u0443\u0433\u043e\u0439 \u0438\u0433\u0440\u043e\u043a \u043f\u043e\u043a\u0438\u043d\u0443\u043b \u0438\u0433\u0440\u0443",
+ "car0": "\u0412\u0430\u0448 \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044c",
+ "car1": "\u0415\u0433\u043e \u043c\u0430\u0448\u0438\u043d\u0430"
+ }
+} \ No newline at end of file
diff --git a/lang/zh.json b/lang/zh.json
new file mode 100644
index 0000000..0ca8a43
--- /dev/null
+++ b/lang/zh.json
@@ -0,0 +1,191 @@
+{
+ "_name": "\u6cd5\u8bed",
+ "crash": {
+ "title": "\u5361\u8482\u514b\u5d29\u6e83\u8bb0\u8005",
+ "head": "\u5361\u8482\u514b\u505c\u6b62\u5de5\u4f5c",
+ "intro": "\u5361\u8482\u514b\u9047\u5230\u4e86\u95ee\u9898\uff0c\u610f\u5916\u5730\u505c\u4e86\u4e0b\u6765\u3002\u6211\u4eec\u6536\u96c6\u4e86\u5176\u4ed6\u4fe1\u606f\uff0c\u5982\u679c\u60a8\u8fde\u63a5\u5230 Internet\uff0c\u5219\u4f1a\u81ea\u52a8\u5411\u5f00\u53d1\u4eba\u5458\u53d1\u9001\u5d29\u6e83\u62a5\u544a\u3002",
+ "report": [
+ "\u6b64\u5916\uff0c\u5728\"",
+ "\u56e0\u6b64\uff0c\u60a8\u53ef\u4ee5\u5728\u8bbf\u95ee\u4e92\u8054\u7f51\u65f6\u5c06\u5176\u53d1\u9001\u7ed9\u5f00\u53d1\u4eba\u5458\u3002"
+ ],
+ "close": "\u5173\u95ed",
+ "reset": "\u91cd\u7f6e\u5361\u63d0\u514b\u5e76\u5173\u95ed"
+ },
+ "updates": {
+ "ok": "\u6700\u65b0\u7684",
+ "available": "\u53ef\u7528\u7684\u6e38\u620f\u66f4\u65b0",
+ "git": "\u8fd0\u884c\u4e3b\u5e72\u7248\u672c",
+ "error": "\u627e\u4e0d\u5230\u66f4\u65b0",
+ "wait": "\u641c\u7d22\u66f4\u65b0...",
+ "warn": [
+ "\u63d0\u4f9b\u66f4\u65b0",
+ "\u4ece\u5b98\u65b9\u7f51\u7ad9\u4e0b\u8f7d\u65b0\u7248\u672c\u7684 Kartik\uff0c\u4e86\u89e3\u6700\u65b0\u529f\u80fd\u548c\u9519\u8bef\u4fee\u590d\u3002"
+ ]
+ },
+ "scenario": {
+ "intro": [
+ "\u563f\uff0c\u55e8\uff0c\u8dd1\u4e00\u4f1a\u513f\u600e\u4e48\u6837\uff1f",
+ "\u554a\uff0c\u4f60\u53c8\u6765\u4e86\uff01\u8dd1\u4e00\u4f1a\u513f\u600e\u4e48\u6837\uff1f",
+ "\u6211\u4eec\u4e3a\u4ec0\u4e48\u4e0d\u8dd1\u4e00\u5c0f\u8dd1\u5462\uff1f",
+ "\u6211\u4eec\u8981\u53bb\u6563\u6b65\u5417\uff1f"
+ ],
+ "ahead1": [
+ "\u54e6\u4e0d\uff01",
+ "\u89c1\u9b3c\uff0c\u8fd9\u662f\u4e0d\u53ef\u80fd\u7684\uff01",
+ "\u4f46\u6211\u4e0d\u4f1a\u6210\u529f\u3002\u3002\u3002",
+ "\u54e6\u3002\u3002\u3002",
+ "\u4f60\u4e3a\u4ec0\u4e48\u8981\u8fd9\u4e48\u505a\uff1f"
+ ],
+ "ahead2": [
+ "\u55e8\u55e8\u55e8\u55e8",
+ "\u8fd9\u4e2a\u662f\u7ed9\u6211\u7684\uff01",
+ "\u6211\u4f1a\u62ff\u5230\u7684\uff01",
+ "\u662f\u7ed9\u6211\u7684\uff01",
+ "\u662f\u6211\u7684\uff01"
+ ],
+ "won1": [
+ "\u5e72\u7684\u597d\uff01",
+ "\u5bf9\u6211\u6765\u8bf4\u592a\u7cdf\u7cd5\u4e86\u3002\u3002\u3002",
+ "\u6211\u672c\u6765\u5e0c\u671b\u3002\u3002\u3002",
+ "\u4f46\u662f\uff0c\u5b83\u4e0d\u662f\u5f88\u597d\uff01",
+ "\u5e72\u7684\u597d\uff01"
+ ],
+ "won2": [
+ "\u6211\u544a\u8bc9\u8fc7\u4f60\uff01",
+ "\u597d\u50cf\u6211\u6ca1\u8b66\u544a\u8fc7\u4f60\uff01",
+ "\u6211\u8d62\u4e86\uff01",
+ "\u592a\u597d\u4e86\uff0c\u6211\u8d62\u4e86\uff01",
+ "\u518d\u7ed9\u6211\u4e00\u4e2a\uff01"
+ ],
+ "wall1": [
+ "\u554a\u554a\uff01",
+ "\u90a3\u6211\u4eec\u5c31\u4e0d\u76f4\u4e86\uff1f",
+ "\u54ce\u54df",
+ "\u4e00\u5b9a\u5f88\u75db\u3002\u3002\u3002",
+ "\u65af\u666e\u62c9\u592b\uff0c\u8fd9\u5c31\u662f\u969c\u788d\uff01"
+ ],
+ "wall2": [
+ "\u8be5\u6b7b\u7684",
+ "\u5e9f\u8bdd",
+ "\u4e0d\u53ef\u80fd",
+ "\u666e\u8482"
+ ],
+ "start": [
+ "\u6211\u8981\u628a\u4f60\u5439\u8d70\uff01",
+ "\u4f60\u4f1a\u770b\u5230\uff0c\u6211\u4f1a\u8ba9\u4f60\u7684\u90a3\u4e9b\u6bd4\u8d5b\u4e4b\u4e00\uff01",
+ "\u4f60\u4f1a\u544a\u8bc9\u6211\u4e00\u4e9b\u6d88\u606f",
+ "\u6211\u4eec\u8d70\u5427\uff01",
+ "\u6765\u5427\uff01",
+ "\u54c7\uff0c\u5411\u524d\uff01"
+ ]
+ },
+ "discord": {
+ "credits": [
+ "\u7b49\u5f85",
+ "\u5728\u5b66\u5206\u4e2d"
+ ],
+ "game": [
+ "\u5904\u4e8e\u5371\u9669\u4e4b\u4e2d",
+ "\u6a21\u5f0f\u72ec\u594f",
+ "\u6a21\u5f0f\u4e0e",
+ "\u6682\u505c"
+ ],
+ "intro": [
+ "\u7b49\u5f85",
+ "\u5173\u4e8e\u4ecb\u7ecd"
+ ],
+ "settings": [
+ "\u7b49\u5f85",
+ "\u5728\u8bbe\u7f6e\u4e2d"
+ ],
+ "win": [
+ "\u521a\u8d62\u4e86",
+ "\u53ea\u662f\u8f93\u4e86"
+ ]
+ },
+ "intro": [
+ "\u70b9\u51fb\u8fdb\u5165\u5f00\u59cb",
+ "\u6309 A \u5f00\u59cb"
+ ],
+ "game": {
+ "credits": {
+ "by": "\u7531"
+ },
+ "gpause": {
+ "title": "\u6682\u505c\u6e38\u620f",
+ "continueg": "\u7ee7\u7eed",
+ "showhb": "\u663e\u793a\u547d\u4e2d\u6846",
+ "hidehb": "\u9690\u85cf\u547d\u4e2d\u6846",
+ "quit": "\u79bb\u5f00"
+ }
+ },
+ "menu": {
+ "titles": [
+ "\u72ec\u594f",
+ "\u5bf9",
+ "\u9009\u9879",
+ "\u5b66\u5206",
+ "\u79bb\u5f00"
+ ],
+ "descriptions": [
+ "\u5355\u72ec\u548c\u79bb\u7ebf\u4e0e\u673a\u5668\u4eba\u6bd4\u8d5b",
+ "\u5728\u540c\u4e00\u5c4f\u5e55\u4e0a\u64ad\u653e\u4e24\u4e2a",
+ "\u66f4\u6539\u53d8\u7126\u548c\u8bbe\u7f6e",
+ "\u67e5\u770b\u6e38\u620f\u4f5c\u8005\u5217\u8868",
+ "\u5173\u95ed\u6e38\u620f\u5e76\u8fd4\u56de\u5230"
+ ],
+ "distribute": "\u4e0d\u5206\u53d1"
+ },
+ "settings": {
+ "title": "\u9009\u9879",
+ "back": "\u8fd4\u56de",
+ "size": "\u63a5\u53e3\u5927\u5c0f",
+ "music": "\u6fc0\u6d3b\u97f3\u4e50",
+ "lang": "\u820c",
+ "voice": "\u6fc0\u6d3b\u8bed\u97f3",
+ "yes": "\u662f\u7684",
+ "no": "\u4e0d",
+ "notice": "\u8fd9\u4e9b\u8bbe\u7f6e\u8981\u5230\u5361\u63d0\u514b\u91cd\u65b0\u542f\u52a8\u540e\u624d\u4f1a\u5e94\u7528"
+ },
+ "win": {
+ "solo": {
+ "win": "\u4f60\u8d62\u4e86\uff01",
+ "lose": "\u4f60\u4e22\u5931\uff01"
+ },
+ "versus": "\u73a9\u5bb60\u8d62\u4e86\uff01",
+ "quit": [
+ "\u6309\u4e0b\u9003\u751f\u79bb\u5f00",
+ "\u6309 B \u79bb\u5f00"
+ ]
+ },
+ "online": {
+ "menu": {
+ "local": "\u5f53\u5730",
+ "online": "\u5728\u7ebf",
+ "dlocal": "\u5728\u540c\u4e00\u53f0\u673a\u5668\u4e0a\u4e0e\u670b\u53cb\u73a9\u800d",
+ "donline": "\u5728\u4e0d\u540c\u7684\u673a\u5668\u4e0a\u4e0e\u670b\u53cb\u73a9\u800d"
+ },
+ "error": {
+ "connection": "\u901a\u4fe1\u9519\u8bef",
+ "disconnect": "\u65ad\u5f00"
+ },
+ "connecting": "\u8fde\u63a5\u5230\u670d\u52a1\u5668\u3002\u3002\u3002",
+ "intro": {
+ "create": "\u521b\u5efa\u6e38\u620f",
+ "pcreate": "\u5c06\u6b64\u4ee3\u7801\u4ea4\u7ed9\u60a8\u7684\u961f\u53cb\u4ee5\u8fde\u63a5\u5230\u60a8\u7684\u6e38\u620f\uff1a",
+ "join": "\u52a0\u5165\u6e38\u620f",
+ "pjoin": "\u8f93\u5165\u961f\u53cb\u7684\u4ee3\u7801\u4ee5\u52a0\u5165\u4ed6\u7684\u6e38\u620f\uff1a"
+ },
+ "disconnected": "\u8fde\u63a5\u4e22\u5931",
+ "unable": "\u65e0\u6cd5\u8fde\u63a5\u5230\u670d\u52a1\u5668",
+ "internal": "\u5185\u90e8\u7cfb\u7edf\u9519\u8bef",
+ "loading": "\u51c6\u5907\u6bd4\u8d5b\u3002\u3002\u3002",
+ "discord": "\u5728\u7ebf",
+ "generate": "\u88c5\u8f7d\u571f\u5730...",
+ "discord2": "\u9047\u5230\u9519\u8bef",
+ "timeout": "\u7b49\u5f85\u65f6\u95f4\u5df2\u8fc7",
+ "aborted": "\u53e6\u4e00\u4e2a\u73a9\u5bb6\u79bb\u5f00\u4e86\u6e38\u620f",
+ "car0": "\u4f60\u7684\u8f66",
+ "car1": "\u4ed6\u7684\u8f66"
+ }
+} \ No newline at end of file