PL
games/open-lemmings / tools / lang.py · commit 04e2e2a
#!/usr/bin/env python3"""The texts of the game in 14 languages -> config/lang.yaml:  python3 tools/lang.py"""import json, osKEYS = ['PLAY', 'OPTIONS', 'QUIT', 'TAGLINE', 'CREDITS', 'CHOOSE A LEVEL', 'BACK', 'PAUSE', 'RESUME', 'RESTART', 'LEVELS', 'SOUND', 'MUSIC',        'LANGUAGE', 'LANGNAME', 'FULLSCREEN', 'ON', 'OFF', 'INSTALL', 'EFFECTS', 'GRAPHICS', 'RETRO', 'NEXT LEVEL', 'RETRY', 'ALL DONE', 'WELL DONE', 'NOT ENOUGH',        'HOME {n}/{need}', 'RESCUED {n}%', 'OUT {n}', 'LEVEL {n}',        'SKILL climb', 'SKILL glide', 'SKILL boom', 'SKILL stop', 'SKILL bridge', 'SKILL bash', 'SKILL mine', 'SKILL dig', 'NUKE CONFIRM',        'FIRST LIGHT', 'THROUGH THE WALL', 'MIND THE GAP', 'LEAF FALL', 'UP AND OVER', 'DEEP DOWN', 'BIG BANG', 'STAIRWAY', 'LAVA WORKS',        'THE LONG WAY HOME',        'HINT DIG', 'HINT BASH', 'HINT BRIDGE', 'HINT GLIDE', 'HINT CLIMB', 'HINT MINE', 'HINT BOOM', 'HINT STAIRS', 'HINT TEAM', 'HINT ALL']T = { 'en': ['Play', 'Options', 'Quit', 'Guide the little lights home', 'An original game made with JumPHP', 'Choose a level', 'Back', 'Pause', 'Resume',        'Restart', 'Levels', 'Sound', 'Music', 'Language', 'English', 'Full screen', 'On', 'Off', 'Install', 'Glow effects', 'Graphics', 'Retro', 'Next level', 'Try again',        'You lit them all!', 'Well done!', 'Not enough came home', 'Home {n}/{need}', 'Rescued: {n}%', 'Out: {n}', 'Level {n}',        'Climber: goes up walls', 'Glider: falls slowly under a leaf', 'Firecracker: bursts after 3 seconds', 'Blocker: turns the others around',        'Builder: lays a stair of 12 bricks', 'Basher: digs straight ahead', 'Miner: digs down at an angle', 'Digger: digs straight down',        'Press again: everyone bursts!',        'First Light', 'Through the Wall', 'Mind the Gap', 'Leaf Fall', 'Up and Over', 'Deep Down', 'Big Bang', 'Stairway', 'Lava Works',        'The Long Way Home',        'Pick the shovel, then click a Lumikin: it digs down', 'A basher walks through a wall', 'A builder makes a bridge. A blocker holds the crowd',        'A long fall is deadly: give them a leaf', 'Climbers go over the wall', 'A miner digs a slope: the way down', 'Sometimes one must burst to open the way',        'Bridges stack up: build a stair to the top', 'Hold the crowd, bridge the lava, break the wall', 'Everything you learned. Bring them home!'], 'fr': ['Jouer', 'Options', 'Quitter', 'Guidez les petites lueurs jusqu\'à la maison', 'Un jeu original créé avec JumPHP', 'Choisissez un niveau', 'Retour',        'Pause', 'Reprendre', 'Recommencer', 'Niveaux', 'Sons', 'Musique', 'Langue', 'Français', 'Plein écran', 'Oui', 'Non', 'Installer', 'Effets lumineux', 'Graphismes', 'Rétro',        'Niveau suivant', 'Réessayer', 'Vous les avez tous éclairés !', 'Bravo !', 'Trop peu sont rentrés', 'Rentrés {n}/{need}', 'Sauvés : {n} %',        'Dehors : {n}', 'Niveau {n}',        'Grimpeur : monte aux murs', 'Planeur : tombe doucement sous une feuille', 'Pétard : éclate après 3 secondes', 'Bloqueur : fait demi-tour aux autres',        'Bâtisseur : pose un escalier de 12 briques', 'Foreur : creuse droit devant', 'Mineur : creuse en pente', 'Creuseur : creuse vers le bas',        'Encore une fois : tout le monde éclate !',        'Première lueur', 'À travers le mur', 'Attention au vide', 'Chute de feuilles', 'Par-dessus', 'Tout en bas', 'Grand boum', 'L\'escalier',        'La forge', 'Le long chemin',        'Prenez la pelle puis cliquez un Lumikin : il creuse', 'Un foreur traverse le mur', 'Un bâtisseur fait un pont. Un bloqueur retient la foule',        'Une longue chute est mortelle : donnez-leur une feuille', 'Les grimpeurs passent par-dessus le mur', 'Un mineur creuse une pente : le chemin vers le bas',        'Parfois il faut éclater pour ouvrir la voie', 'Les ponts s\'empilent : un escalier jusqu\'en haut', 'Retenez la foule, franchissez la lave, percez le mur',        'Tout ce que vous avez appris. Ramenez-les !'], 'es': ['Jugar', 'Opciones', 'Salir', 'Guía a las lucecitas hasta casa', 'Un juego original hecho con JumPHP', 'Elige un nivel', 'Volver', 'Pausa',        'Continuar', 'Reiniciar', 'Niveles', 'Sonido', 'Música', 'Idioma', 'Español', 'Pantalla completa', 'Sí', 'No', 'Instalar', 'Efectos de luz', 'Gráficos', 'Retro', 'Siguiente nivel',        'Reintentar', '¡Los iluminaste a todos!', '¡Bien hecho!', 'Volvieron muy pocos', 'En casa {n}/{need}', 'Salvados: {n} %', 'Fuera: {n}', 'Nivel {n}',        'Escalador: sube por las paredes', 'Planeador: cae despacio bajo una hoja', 'Petardo: estalla a los 3 segundos', 'Bloqueador: hace girar a los demás',        'Constructor: pone una escalera de 12 ladrillos', 'Perforador: cava hacia delante', 'Minero: cava en pendiente', 'Cavador: cava hacia abajo',        'Otra vez: ¡todos estallan!',        'Primera luz', 'A través del muro', 'Cuidado con el hueco', 'Caída de hojas', 'Por encima', 'En lo hondo', 'Gran bum', 'La escalera', 'La fragua',        'El largo camino',        'Toma la pala y haz clic en un Lumikin: cava', 'Un perforador atraviesa el muro', 'Un constructor hace un puente. Un bloqueador frena al grupo',        'Una caída larga es mortal: dales una hoja', 'Los escaladores pasan sobre el muro', 'Un minero cava una pendiente: el camino hacia abajo',        'A veces hay que estallar para abrir paso', 'Los puentes se apilan: una escalera hasta arriba', 'Frena al grupo, cruza la lava, rompe el muro',        'Todo lo aprendido. ¡Llévalos a casa!'], 'de': ['Spielen', 'Optionen', 'Beenden', 'Führe die kleinen Lichter nach Hause', 'Ein Originalspiel, gemacht mit JumPHP', 'Wähle ein Level', 'Zurück',        'Pause', 'Weiter', 'Neu starten', 'Level', 'Ton', 'Musik', 'Sprache', 'Deutsch', 'Vollbild', 'An', 'Aus', 'Installieren', 'Leuchteffekte', 'Grafik', 'Retro', 'Nächstes Level',        'Nochmal', 'Alle leuchten!', 'Gut gemacht!', 'Zu wenige sind angekommen', 'Zuhause {n}/{need}', 'Gerettet: {n} %', 'Draußen: {n}', 'Level {n}',        'Kletterer: steigt Wände hoch', 'Gleiter: fällt sanft unter einem Blatt', 'Knaller: platzt nach 3 Sekunden', 'Blocker: dreht die anderen um',        'Baumeister: legt eine Treppe aus 12 Steinen', 'Bohrer: gräbt geradeaus', 'Bergmann: gräbt schräg nach unten', 'Gräber: gräbt nach unten',        'Nochmal drücken: alle platzen!',        'Erstes Licht', 'Durch die Wand', 'Achtung, Lücke', 'Blätterfall', 'Hoch hinaus', 'Tief unten', 'Großer Knall', 'Die Treppe', 'Die Schmiede',        'Der lange Weg',        'Nimm die Schaufel, dann klick einen Lumikin: er gräbt', 'Ein Bohrer geht durch die Wand', 'Ein Baumeister baut eine Brücke. Ein Blocker hält die Menge',        'Ein tiefer Fall ist tödlich: gib ihnen ein Blatt', 'Kletterer kommen über die Wand', 'Ein Bergmann gräbt eine Schräge: der Weg nach unten',        'Manchmal muss einer platzen, um den Weg zu öffnen', 'Brücken stapeln sich: eine Treppe nach oben', 'Halte die Menge, überbrücke die Lava, brich die Wand',        'Alles, was du gelernt hast. Bring sie heim!'], 'it': ['Gioca', 'Opzioni', 'Esci', 'Guida le piccole luci fino a casa', 'Un gioco originale creato con JumPHP', 'Scegli un livello', 'Indietro', 'Pausa',        'Riprendi', 'Ricomincia', 'Livelli', 'Suoni', 'Musica', 'Lingua', 'Italiano', 'Schermo intero', 'Sì', 'No', 'Installa', 'Effetti di luce', 'Grafica', 'Retro', 'Livello successivo',        'Riprova', 'Li hai illuminati tutti!', 'Ben fatto!', 'Troppo pochi sono tornati', 'A casa {n}/{need}', 'Salvati: {n}%', 'Fuori: {n}', 'Livello {n}',        'Scalatore: sale sui muri', 'Aliante: cade piano sotto una foglia', 'Petardo: scoppia dopo 3 secondi', 'Bloccatore: fa girare gli altri',        'Costruttore: posa una scala di 12 mattoni', 'Perforatore: scava dritto', 'Minatore: scava in discesa', 'Scavatore: scava verso il basso',        'Ancora una volta: scoppiano tutti!',        'Prima luce', 'Attraverso il muro', 'Attento al vuoto', 'Caduta di foglie', 'Oltre il muro', 'Giù in fondo', 'Grande botto', 'La scala', 'La fucina',        'La lunga strada',        'Prendi la pala e clicca un Lumikin: scava', 'Un perforatore attraversa il muro', 'Un costruttore fa un ponte. Un bloccatore ferma la folla',        'Una lunga caduta è mortale: dagli una foglia', 'Gli scalatori passano sopra il muro', 'Un minatore scava una discesa: la via verso il basso',        'A volte bisogna scoppiare per aprire la via', 'I ponti si impilano: una scala fino in cima', 'Ferma la folla, supera la lava, rompi il muro',        'Tutto ciò che hai imparato. Portali a casa!'], 'pt': ['Jogar', 'Opções', 'Sair', 'Guie as luzinhas até casa', 'Um jogo original feito com JumPHP', 'Escolha um nível', 'Voltar', 'Pausa', 'Continuar',        'Recomeçar', 'Níveis', 'Som', 'Música', 'Idioma', 'Português', 'Tela cheia', 'Sim', 'Não', 'Instalar', 'Efeitos de luz', 'Gráficos', 'Retrô', 'Próximo nível', 'Tentar de novo',        'Você iluminou todos!', 'Muito bem!', 'Poucos chegaram em casa', 'Em casa {n}/{need}', 'Salvos: {n}%', 'Fora: {n}', 'Nível {n}',        'Escalador: sobe paredes', 'Planador: cai devagar sob uma folha', 'Bombinha: estoura após 3 segundos', 'Bloqueador: faz os outros voltarem',        'Construtor: põe uma escada de 12 tijolos', 'Perfurador: cava em frente', 'Mineiro: cava em rampa', 'Cavador: cava para baixo',        'De novo: todos estouram!',        'Primeira luz', 'Através do muro', 'Cuidado com o vão', 'Queda de folhas', 'Por cima', 'Lá no fundo', 'Grande bum', 'A escada', 'A forja',        'O longo caminho',        'Pegue a pá e clique num Lumikin: ele cava', 'Um perfurador atravessa o muro', 'Um construtor faz uma ponte. Um bloqueador segura a turma',        'Uma queda longa é fatal: dê uma folha a eles', 'Os escaladores passam por cima do muro', 'Um mineiro cava uma rampa: o caminho para baixo',        'Às vezes é preciso estourar para abrir caminho', 'As pontes se empilham: uma escada até o topo', 'Segure a turma, cruze a lava, quebre o muro',        'Tudo o que você aprendeu. Leve-os para casa!'], 'nl': ['Spelen', 'Opties', 'Stoppen', 'Breng de kleine lichtjes naar huis', 'Een origineel spel, gemaakt met JumPHP', 'Kies een level', 'Terug', 'Pauze',        'Verder', 'Opnieuw', 'Levels', 'Geluid', 'Muziek', 'Taal', 'Nederlands', 'Volledig scherm', 'Aan', 'Uit', 'Installeren', 'Lichteffecten', 'Beeld', 'Retro', 'Volgend level',        'Nog eens', 'Ze stralen allemaal!', 'Goed gedaan!', 'Te weinig kwamen thuis', 'Thuis {n}/{need}', 'Gered: {n}%', 'Buiten: {n}', 'Level {n}',        'Klimmer: gaat tegen muren op', 'Zwever: valt zacht onder een blad', 'Rotje: knalt na 3 seconden', 'Blokker: laat de anderen omkeren',        'Bouwer: legt een trap van 12 stenen', 'Boorder: graaft rechtdoor', 'Mijnwerker: graaft schuin omlaag', 'Graver: graaft naar beneden',        'Nog een keer: iedereen knalt!',        'Eerste licht', 'Door de muur', 'Pas op, een gat', 'Vallend blad', 'Eroverheen', 'Diep beneden', 'Grote knal', 'De trap', 'De smederij',        'De lange weg',        'Pak de schep en klik op een Lumikin: hij graaft', 'Een boorder gaat door de muur', 'Een bouwer maakt een brug. Een blokker houdt de groep tegen',        'Een lange val is dodelijk: geef ze een blad', 'Klimmers gaan over de muur', 'Een mijnwerker graaft een helling: de weg omlaag',        'Soms moet er een knallen om de weg te openen', 'Bruggen stapelen: een trap naar boven', 'Houd de groep tegen, overbrug de lava, breek de muur',        'Alles wat je leerde. Breng ze thuis!'], 'pl': ['Graj', 'Opcje', 'Wyjdź', 'Zaprowadź małe światełka do domu', 'Oryginalna gra stworzona w JumPHP', 'Wybierz poziom', 'Wróć', 'Pauza', 'Wznów',        'Od nowa', 'Poziomy', 'Dźwięk', 'Muzyka', 'Język', 'Polski', 'Pełny ekran', 'Tak', 'Nie', 'Zainstaluj', 'Efekty świetlne', 'Grafika', 'Retro', 'Następny poziom', 'Jeszcze raz',        'Wszystkie świecą!', 'Brawo!', 'Za mało wróciło do domu', 'W domu {n}/{need}', 'Uratowane: {n}%', 'Na zewnątrz: {n}', 'Poziom {n}',        'Wspinacz: wchodzi po ścianach', 'Lotnik: opada powoli pod liściem', 'Petarda: wybucha po 3 sekundach', 'Stróż: zawraca pozostałych',        'Budowniczy: układa schody z 12 cegieł', 'Wiertacz: kopie prosto przed siebie', 'Górnik: kopie ukośnie w dół', 'Kopacz: kopie w dół',        'Jeszcze raz: wszyscy wybuchają!',        'Pierwsze światło', 'Przez ścianę', 'Uwaga, przepaść', 'Spadające liście', 'Górą', 'Głęboko w dół', 'Wielki huk', 'Schody', 'Kuźnia',        'Długa droga',        'Weź łopatę i kliknij Lumikina: zacznie kopać', 'Wiertacz przejdzie przez ścianę', 'Budowniczy stawia most. Stróż zatrzymuje tłum',        'Długi upadek jest zabójczy: daj im liść', 'Wspinacze przejdą nad ścianą', 'Górnik kopie pochylnię: drogę w dół',        'Czasem ktoś musi wybuchnąć, by otworzyć drogę', 'Mosty się łączą: schody na samą górę', 'Zatrzymaj tłum, pokonaj lawę, przebij ścianę',        'Wszystko, czego się nauczyłeś. Zabierz je do domu!'], 'ru': ['Играть', 'Настройки', 'Выход', 'Проводите маленькие огоньки домой', 'Оригинальная игра на JumPHP', 'Выберите уровень', 'Назад', 'Пауза',        'Продолжить', 'Заново', 'Уровни', 'Звук', 'Музыка', 'Язык', 'Русский', 'Полный экран', 'Вкл', 'Выкл', 'Установить', 'Свечение', 'Графика', 'Ретро', 'Следующий уровень',        'Ещё раз', 'Все огоньки горят!', 'Отлично!', 'Слишком мало вернулось', 'Дома {n}/{need}', 'Спасено: {n}%', 'Снаружи: {n}', 'Уровень {n}',        'Верхолаз: лезет по стенам', 'Планёр: плавно падает под листом', 'Хлопушка: лопается через 3 секунды', 'Сторож: разворачивает остальных',        'Строитель: кладёт лестницу из 12 кирпичей', 'Бурильщик: копает прямо вперёд', 'Шахтёр: копает наискось вниз', 'Землекоп: копает вниз',        'Ещё раз: лопнут все!',        'Первый свет', 'Сквозь стену', 'Осторожно, обрыв', 'Листопад', 'Через верх', 'Глубоко вниз', 'Большой бум', 'Лестница', 'Кузница',        'Долгий путь домой',        'Возьмите лопату и щёлкните по Люмикину: он копает', 'Бурильщик пройдёт сквозь стену', 'Строитель кладёт мост. Сторож держит толпу',        'Долгое падение смертельно: дайте им лист', 'Верхолазы перелезут через стену', 'Шахтёр роет склон: путь вниз',        'Иногда нужно лопнуть, чтобы открыть путь', 'Мосты складываются: лестница до самого верха', 'Удержите толпу, перейдите лаву, пробейте стену',        'Всё, чему вы научились. Верните их домой!'], 'uk': ['Грати', 'Налаштування', 'Вихід', 'Проведіть маленькі вогники додому', 'Оригінальна гра на JumPHP', 'Оберіть рівень', 'Назад', 'Пауза',        'Продовжити', 'Заново', 'Рівні', 'Звук', 'Музика', 'Мова', 'Українська', 'На весь екран', 'Увімк', 'Вимк', 'Встановити', 'Сяйво', 'Графіка', 'Ретро', 'Наступний рівень',        'Ще раз', 'Усі вогники сяють!', 'Чудово!', 'Замало повернулося', 'Вдома {n}/{need}', 'Врятовано: {n}%', 'Надворі: {n}', 'Рівень {n}',        'Верхолаз: лізе по стінах', 'Планер: повільно падає під листком', 'Хлопавка: лускає за 3 секунди', 'Вартовий: розвертає інших',        'Будівник: кладе сходи з 12 цеглин', 'Бурильник: копає прямо вперед', 'Шахтар: копає навскіс униз', 'Землекоп: копає вниз',        'Ще раз: луснуть усі!',        'Перше світло', 'Крізь стіну', 'Обережно, прірва', 'Листопад', 'Через верх', 'Глибоко вниз', 'Великий бум', 'Сходи', 'Кузня',        'Довга дорога додому',        'Візьміть лопату і клацніть Люмікіна: він копає', 'Бурильник пройде крізь стіну', 'Будівник кладе міст. Вартовий тримає юрбу',        'Довге падіння смертельне: дайте їм листок', 'Верхолази перелізуть через стіну', 'Шахтар риє схил: шлях униз',        'Іноді треба луснути, щоб відкрити шлях', 'Мости складаються: сходи аж нагору', 'Стримайте юрбу, перейдіть лаву, пробийте стіну',        'Усе, чого ви навчилися. Поверніть їх додому!'], 'tr': ['Oyna', 'Ayarlar', 'Çıkış', 'Küçük ışıkları evlerine götür', 'JumPHP ile yapılmış özgün bir oyun', 'Bir bölüm seç', 'Geri', 'Duraklat', 'Devam',        'Yeniden başla', 'Bölümler', 'Ses', 'Müzik', 'Dil', 'Türkçe', 'Tam ekran', 'Açık', 'Kapalı', 'Yükle', 'Işık efektleri', 'Grafik', 'Retro', 'Sonraki bölüm', 'Tekrar dene',        'Hepsini aydınlattın!', 'Aferin!', 'Çok azı eve döndü', 'Evde {n}/{need}', 'Kurtarılan: %{n}', 'Dışarıda: {n}', 'Bölüm {n}',        'Tırmanıcı: duvarlara çıkar', 'Süzülücü: yaprağın altında yavaş düşer', 'Maytap: 3 saniye sonra patlar', 'Engelci: diğerlerini geri çevirir',        'Usta: 12 tuğlalık merdiven döşer', 'Delici: dümdüz ileri kazar', 'Madenci: eğimli aşağı kazar', 'Kazıcı: aşağı doğru kazar',        'Bir daha bas: herkes patlar!',        'İlk ışık', 'Duvarın içinden', 'Boşluğa dikkat', 'Yaprak dökümü', 'Üstünden aş', 'Derinlere', 'Büyük patlama', 'Merdiven', 'Demirhane',        'Eve uzun yol',        'Küreği seç, sonra bir Lumikin\'e tıkla: kazar', 'Delici duvarın içinden geçer', 'Usta köprü kurar. Engelci kalabalığı tutar',        'Uzun düşüş öldürür: onlara yaprak ver', 'Tırmanıcılar duvarı aşar', 'Madenci bir rampa kazar: aşağıya giden yol',        'Bazen yolu açmak için patlamak gerekir', 'Köprüler üst üste biner: tepeye merdiven', 'Kalabalığı tut, lavı geç, duvarı kır',        'Öğrendiğin her şey. Onları eve getir!'], 'ja': ['あそぶ', 'せってい', 'おわる', '小さな灯りたちを家へみちびこう', 'JumPHPで作ったオリジナルゲーム', 'ステージをえらぶ', 'もどる', 'ポーズ', 'つづける',        'やりなおす', 'ステージ', '効果音', '音楽', '言語', '日本語', '全画面', 'オン', 'オフ', 'インストール', '光のエフェクト', 'グラフィック', 'レトロ', '次のステージ', 'もう一度',        '全員に灯がともった!', 'おみごと!', '帰れた数が足りない', '帰宅 {n}/{need}', '救出: {n}%', '外に: {n}', 'ステージ {n}',        'クライマー: 壁をのぼる', 'グライダー: 葉っぱでゆっくり落ちる', 'クラッカー: 3秒後にはじける', 'ブロッカー: 仲間を引き返させる',        'ビルダー: 12段の階段をつくる', 'バッシャー: まっすぐ掘り進む', 'マイナー: ななめ下に掘る', 'ディガー: 真下に掘る',        'もう一度押すと全員はじける!',        'はじめての灯', '壁をぬけて', 'すきまに注意', '落ち葉', 'のりこえろ', '深い底へ', '大ばくはつ', '階段', '溶岩工場', '長い帰り道',        'スコップを選んでルミキンをクリック: 下に掘る', 'バッシャーは壁を通りぬける', 'ビルダーが橋をかける。ブロッカーが群れを止める',        '長い落下は命とり: 葉っぱをあげよう', 'クライマーは壁をこえる', 'マイナーは坂を掘る: 下への道', 'ときには道を開くためにはじける',        '橋はつながる: てっぺんまで階段を', '群れを止め、溶岩をわたり、壁をこわせ', '学んだことを全部つかって、家へ帰そう!'], 'zh': ['开始', '设置', '退出', '带领小小灯火回家', '用 JumPHP 制作的原创游戏', '选择关卡', '返回', '暂停', '继续', '重新开始', '关卡', '音效', '音乐',        '语言', '中文', '全屏', '开', '关', '安装', '光效', '画面', '复古', '下一关', '再试一次', '全部点亮了!', '干得好!', '回家的太少了', '到家 {n}/{need}', '救出: {n}%',        '在外: {n}', '第 {n} 关',        '攀爬者: 爬上墙壁', '滑翔者: 撑着叶子慢慢落下', '爆竹: 3 秒后炸开', '拦路者: 让同伴掉头', '建造者: 铺 12 块砖的台阶', '冲撞者: 向前挖通',        '矿工: 斜着向下挖', '挖掘者: 垂直向下挖', '再按一次: 全部炸开!',        '第一道光', '穿墙而过', '小心空隙', '落叶', '翻越', '深处', '大爆炸', '阶梯', '熔岩工坊', '漫漫回家路',        '选铲子, 再点一个小灯灵: 它会向下挖', '冲撞者能穿过墙', '建造者搭桥, 拦路者挡住队伍', '摔得太高会没命: 给它们叶子', '攀爬者能翻过墙',        '矿工挖出斜坡: 向下的路', '有时必须炸开才能开路', '桥可以接起来: 搭一条通到顶的台阶', '挡住队伍, 跨过熔岩, 打穿墙壁', '用上学到的一切, 带它们回家!'], 'ko': ['시작', '설정', '종료', '작은 불빛들을 집으로 이끌어요', 'JumPHP로 만든 오리지널 게임', '레벨 선택', '뒤로', '일시정지', '계속', '다시 시작', '레벨',        '효과음', '음악', '언어', '한국어', '전체 화면', '켬', '끔', '설치', '빛 효과', '그래픽', '레트로', '다음 레벨', '다시 도전', '모두 불을 밝혔어요!', '잘했어요!', '집에 온 수가 모자라요',        '집 {n}/{need}', '구출: {n}%', '밖: {n}', '레벨 {n}',        '등반가: 벽을 올라요', '활공가: 잎을 타고 천천히 내려와요', '폭죽: 3초 뒤에 터져요', '막는이: 친구들을 돌려보내요', '건축가: 벽돌 12개로 계단을 놓아요',        '돌파자: 앞으로 곧장 파요', '광부: 비스듬히 아래로 파요', '굴착자: 아래로 곧장 파요', '한 번 더 누르면 모두 터져요!',        '첫 불빛', '벽을 뚫고', '틈을 조심', '낙엽', '넘어가기', '깊은 곳', '큰 폭발', '계단', '용암 공방', '집으로 가는 먼 길',        '삽을 고르고 루미킨을 누르세요: 아래로 파요', '돌파자는 벽을 뚫고 가요', '건축가는 다리를 놓고 막는이는 무리를 멈춰요', '높이 떨어지면 위험해요: 잎을 주세요',        '등반가는 벽을 넘어가요', '광부는 비탈길을 파요: 아래로 가는 길', '때로는 길을 열려고 터져야 해요', '다리는 이어져요: 꼭대기까지 계단을',        '무리를 멈추고 용암을 건너 벽을 부숴요', '배운 것을 모두 써서 집으로 데려가요!'],}DESC = { 'en': 'Guide a crowd of little lantern creatures home: dig, build, climb, glide. 24 levels, original music, mouse or touch.', 'fr': 'Guidez une foule de petites créatures-lanternes jusqu\'à la maison : creusez, bâtissez, grimpez, planez. 24 niveaux, musique originale, souris ou tactile.', 'es': 'Guía a un grupo de criaturitas farol hasta casa: cava, construye, escala, planea. 24 niveles, música original, ratón o táctil.', 'de': 'Führe eine Schar kleiner Laternenwesen nach Hause: graben, bauen, klettern, gleiten. 24 Level, eigene Musik, Maus oder Touch.', 'it': 'Guida una folla di piccole creature lanterna fino a casa: scava, costruisci, scala, plana. 24 livelli, musica originale, mouse o touch.', 'pt': 'Guie um grupo de criaturinhas lanterna até casa: cave, construa, escale, plane. 24 níveis, música original, mouse ou toque.', 'nl': 'Breng een groep kleine lantaarnwezentjes naar huis: graven, bouwen, klimmen, zweven. 24 levels, eigen muziek, muis of touch.', 'pl': 'Zaprowadź gromadę małych latarenkowych stworków do domu: kop, buduj, wspinaj się, szybuj. 24 poziomy, oryginalna muzyka, mysz lub dotyk.', 'ru': 'Проводите толпу маленьких существ-фонариков домой: копайте, стройте, карабкайтесь, планируйте. 24 уровня, своя музыка, мышь или касания.', 'uk': 'Проведіть юрбу маленьких істот-ліхтариків додому: копайте, будуйте, лізьте, плануйте. 24 рівні, власна музика, миша або дотик.', 'tr': 'Küçük fener yaratıklarını evlerine götür: kaz, inşa et, tırman, süzül. 24 bölüm, özgün müzik, fare ya da dokunmatik.', 'ja': '小さなランタンの生きものたちを家へ導こう。掘る、作る、登る、滑空する。全24ステージ、オリジナル音楽、マウスとタッチ対応。', 'zh': '带领一群小小灯灵回家: 挖掘、建造、攀爬、滑翔。24 个关卡, 原创音乐, 支持鼠标和触屏。', 'ko': '작은 등불 친구들을 집으로 이끌어요: 파고, 짓고, 오르고, 활공해요. 24개 레벨, 오리지널 음악, 마우스와 터치 지원.',}KEYS += ['DUNE SEA', 'SUNKEN GATE', 'FROZEN STEP', 'CREVASSE', 'ROOTS', 'CANOPY', 'CLOUD GATES', 'LAST LIGHT']NAMES2 = {'en': ['Dune Sea', 'Sunken Gate', 'Frozen Step', 'Crevasse', 'Roots', 'Canopy', 'Cloud Gates', 'Last Light'], 'fr': ['Mer de dunes', 'La porte enfouie', 'Marche gelée', 'La crevasse', 'Racines', 'La canopée', 'Portes des nuages', 'Dernière lueur'], 'es': ['Mar de dunas', 'La puerta hundida', 'Escalón helado', 'La grieta', 'Raíces', 'El dosel', 'Puertas de nubes', 'Última luz'], 'de': ['Dünenmeer', 'Das versunkene Tor', 'Gefrorene Stufe', 'Gletscherspalte', 'Wurzeln', 'Blätterdach', 'Wolkentore', 'Letztes Licht'], 'it': ['Mare di dune', 'La porta sepolta', 'Gradino gelato', 'Il crepaccio', 'Radici', 'La volta verde', 'Porte di nuvole', 'Ultima luce'], 'pt': ['Mar de dunas', 'O portão afundado', 'Degrau gelado', 'A fenda', 'Raízes', 'A copa', 'Portões de nuvens', 'Última luz'], 'nl': ['Duinenzee', 'De verzonken poort', 'Bevroren trede', 'De kloof', 'Wortels', 'Het bladerdak', 'Wolkenpoorten', 'Laatste licht'], 'pl': ['Morze wydm', 'Zatopiona brama', 'Zamarznięty stopień', 'Szczelina', 'Korzenie', 'Korony drzew', 'Bramy chmur', 'Ostatnie światło'], 'ru': ['Море дюн', 'Затонувшие врата', 'Ледяная ступень', 'Расщелина', 'Корни', 'Кроны', 'Облачные врата', 'Последний свет'], 'uk': ['Море дюн', 'Затонула брама', 'Крижана сходинка', 'Розколина', 'Коріння', 'Крони', 'Хмарні брами', 'Останнє світло'], 'tr': ['Kumul denizi', 'Batık kapı', 'Donmuş basamak', 'Yarık', 'Kökler', 'Ağaç tepeleri', 'Bulut kapıları', 'Son ışık'], 'ja': ['砂丘の海', '沈んだ門', '凍った段', 'クレバス', '根っこ', 'こずえ', '雲の門', 'さいごの灯'], 'zh': ['沙丘之海', '沉没之门', '冰阶', '冰裂缝', '树根', '树冠', '云之门', '最后的光'], 'ko': ['모래 언덕 바다', '가라앉은 문', '얼어붙은 계단', '크레바스', '뿌리', '나무 꼭대기', '구름의 문', '마지막 불빛']}for _lang in T:    T[_lang] = T[_lang] + NAMES2[_lang]KEYS += ['AMBER WOODS', 'HOLLOW TRUNK', 'CORAL MAZE', 'THE TRENCH', 'GEARWORKS', 'CLOCK TOWER']NAMES3 = {'en': ['Amber Woods', 'Hollow Trunk', 'Coral Maze', 'The Trench', 'Gearworks', 'Clock Tower'], 'fr': ["Bois d'ambre", 'Le tronc creux', 'Le labyrinthe de corail', 'La fosse', 'Les engrenages', "La tour de l'horloge"], 'es': ['Bosque ámbar', 'El tronco hueco', 'Laberinto de coral', 'La fosa', 'Engranajes', 'La torre del reloj'], 'de': ['Bernsteinwald', 'Der hohle Stamm', 'Korallenlabyrinth', 'Der Graben', 'Zahnradwerk', 'Der Uhrturm'], 'it': ["Bosco d'ambra", 'Il tronco cavo', 'Labirinto di corallo', 'La fossa', 'Ingranaggi', "La torre dell'orologio"], 'pt': ['Bosque âmbar', 'O tronco oco', 'Labirinto de coral', 'A fossa', 'Engrenagens', 'A torre do relógio'], 'nl': ['Amberbos', 'De holle stam', 'Koraaldoolhof', 'De trog', 'Raderwerk', 'De klokkentoren'], 'pl': ['Bursztynowy las', 'Pusty pień', 'Koralowy labirynt', 'Rów', 'Zębatki', 'Wieża zegarowa'], 'ru': ['Янтарный лес', 'Дуплистый ствол', 'Коралловый лабиринт', 'Впадина', 'Шестерёнки', 'Часовая башня'], 'uk': ['Бурштиновий ліс', 'Дуплисте дерево', 'Кораловий лабіринт', 'Западина', 'Шестерні', 'Годинникова вежа'], 'tr': ['Kehribar orman', 'Kof gövde', 'Mercan labirenti', 'Çukur', 'Dişliler', 'Saat kulesi'], 'ja': ['こはく色の森', 'うろのある幹', 'サンゴの迷路', '海溝', '歯車の工房', '時計塔'], 'zh': ['琥珀森林', '空心树干', '珊瑚迷宫', '海沟', '齿轮工坊', '钟楼'], 'ko': ['호박빛 숲', '속 빈 나무', '산호 미로', '해구', '톱니바퀴 공방', '시계탑']}for _lang in T:    T[_lang] = T[_lang] + NAMES3[_lang]if __name__ == '__main__':    root = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..')    out = ['# Written by tools/lang.py (the texts live there): do not edit by hand.']    for lang, values in T.items():        assert len(values) == len(KEYS), (lang, len(values), len(KEYS))        out.append(f'{lang}:')        for k, v in zip(KEYS, values):            out.append(f'  {json.dumps(k, ensure_ascii=False)}: {json.dumps(v, ensure_ascii=False)}')    open(os.path.join(root, 'config', 'lang.yaml'), 'w').write('\n'.join(out) + '\n')    p = os.path.join(root, 'config', 'project.yaml')    s = open(p).read().split('\n')    for i, line in enumerate(s):        if line.strip().startswith('descriptions:'):            s[i] = '  descriptions: ' + json.dumps(DESC, ensure_ascii=False)    open(p, 'w').write('\n'.join(s))    print('lang.yaml written,', len(KEYS), 'texts x', len(T), 'languages')