From 596d795b5fa7cc95c0293aa5d9084c20f9f0f85d Mon Sep 17 00:00:00 2001 From: Ben Kyd Date: Sat, 3 Apr 2021 23:00:43 +0100 Subject: [PATCH] translation scripts --- data/README.md | 11 ++++++ data/en.lang | 59 ++++++++++++++++++++++++++++++ data/es.lang | 59 ++++++++++++++++++++++++++++++ data/locale.json | 4 +- data/pt.lang | 59 ++++++++++++++++++++++++++++++ package.json | 7 ---- scripts/localeToLang.js | 54 +++++++++++++++++++++++++++ scripts/newLocale.js | 0 scripts/updateLocaleFromEnglish.js | 2 + 9 files changed, 246 insertions(+), 9 deletions(-) create mode 100644 data/README.md create mode 100644 data/en.lang create mode 100644 data/es.lang create mode 100644 data/pt.lang create mode 100644 scripts/newLocale.js create mode 100644 scripts/updateLocaleFromEnglish.js diff --git a/data/README.md b/data/README.md new file mode 100644 index 0000000..e08a67f --- /dev/null +++ b/data/README.md @@ -0,0 +1,11 @@ + + +### language files + +Language files start on the line after 4 hyphens, everything prior is metadata about the language. Some will be parsed by the locale parser + +Locales are defined by their locale code, the translations are seperated by a colon (:) after the locale code. + +Sometimes context clues may be neccesary for an accurate translation, everything after a semicolon won't be interpreted by the parser, therefore context clues can be given. These will be defined in the english (en) file + +Capitalisation is also important, if the english words are capitalised, the translations need to be capitalised in the same (if it makes sense) place diff --git a/data/en.lang b/data/en.lang new file mode 100644 index 0000000..973da43 --- /dev/null +++ b/data/en.lang @@ -0,0 +1,59 @@ +language:en +country:Britain +---- +button-back:back; (Action) to go back (a page) +button-create:create +button-join:join; (Action) to join +button-leave-lobby:Leave Lobby +button-send:send; (Action) to send a message +button-singleplayer:Play singleplayer +button-start-game:Start Game +button-submit:Submit; (Action) to submit (a) message +connection-waiting:Waiting for connection +error-bad-intent:Client has no intent +error-bold:ERROR +error-cannot-join-lobby:Cannot join lobby +error-creating-lobby:An error occurred while creating the lobby +error-illegal-lobby:Illegal lobby +error-illegal-user:Illegal user +error-invalid-username:Invalid username +error-lobby-id-required:A lobby ID is required +error-lobby-joining:An error occurred while joining the lobby +error-lobby-name-required:A name is requred +error-lobby-not-exist:Lobby does not exist +error-malformed-lobby:Lobby malformed +error-no-username:Username not present; there is no username +error-taken-lobby-ownership:User already owns lobby +error-taken-user-connection:User already connected +error-taken-username:Username taken +error-too-many-clients:Too many connections +error-unknown-uid:Unknown user ID +game-lobby:create or join a game +joined:joined; (Action) of joining something (a game) +left:left; (Action) of leaving +left-lobby:left lobby; (Action) of leaving the (lobby) +lobby:Lobby +lobby-allow-spectators:allow spectators +lobby-code:lobby code +lobby-create:Create Lobby +lobby-created:created lobby +lobby-created-joining:Lobby created, Joining... +lobby-deleted:deleted lobby +lobby-join:Join Lobby +lobby-join-code:Join Code +lobby-join-spectator:join as spectator +lobby-joined:joined lobby +lobby-joining:joining lobby +lobby-private:private lobby +log-console:log console +message:message; (noun) piece of text +name:name +players:Players +scrabble-name:Scrabble +spectators:Spectators +status:Status; (noun) position +status-connected:Connected +status-connected-as:Connected as +status-disconnected:Disconnected +username:Username +visibility:Visibility diff --git a/data/es.lang b/data/es.lang new file mode 100644 index 0000000..f297efe --- /dev/null +++ b/data/es.lang @@ -0,0 +1,59 @@ +language:es +country:España +---- +button-back:regresar +button-create:crear +button-join:participar +button-leave-lobby:Salir del Lobby +button-send:enviar +button-singleplayer:Jugar a un(a) jugador(a) +button-start-game:Empezar Juego +button-submit:Enviar +connection-waiting:Esperando la conexión +error-bad-intent:Cliente no tiene intención +error-bold:ERRO +error-cannot-join-lobby:No se puede unir al lobby +error-creating-lobby:Ocurrió un error al crear el lobby +error-illegal-lobby:Lobby ilegal +error-illegal-user:Usuario ilegal +error-invalid-username:Nombre de usuario no es válido +error-lobby-id-required:Se requiere un lobby ID +error-lobby-joining:Ocurrió un error al conectarse al lobby +error-lobby-name-required:Se requiere un nombre +error-lobby-not-exist:Lobby no existe +error-malformed-lobby:Lobby malformado +error-no-username:Nombre de usuario no esta presente +error-taken-lobby-ownership:Usuario ya tiene lobby +error-taken-user-connection:Usuario ya está conectado/a +error-taken-username:Nombre de usuario no esta disponible +error-too-many-clients:Demasiadas conexiones +error-unknown-uid:ID de usuario desconocido +game-lobby:crea o conecta a un juego +joined:conectado(a) +left:salió +left-lobby:salió del lobby +lobby:Lobby +lobby-allow-spectators:permitir espectadores +lobby-code:código de lobby +lobby-create:Crear Lobby +lobby-created:lobby creado +lobby-created-joining:Lobby creado, Conectando... +lobby-deleted:lobby eliminado +lobby-join:Conectarse al Lobby +lobby-join-code:Código para Conectar +lobby-join-spectator:conectar como espectador(a) +lobby-joined:entró en el lobby +lobby-joining:entrando al lobby +lobby-private:lobby privado +log-console:consola de log +message:mensaje +name:nombre +players:Jugadores +scrabble-name:Scrabble +spectators:Espectadores +status:Status +status-connected:Conectado(a) +status-connected-as:Conectado/a como +status-disconnected:Desconectado/a +username:Nombre de usuario +visibility:Visibilidad diff --git a/data/locale.json b/data/locale.json index d11ec75..639003c 100644 --- a/data/locale.json +++ b/data/locale.json @@ -6,8 +6,8 @@ }, "game-lobby": { "en": "create or join a game", - "es": "Crea o conecta a un juego", - "pt": "Crie ou entre em um jogo" + "es": "crea o conecta a un juego", + "pt": "crie ou entre em um jogo" }, "name": { "en": "name", diff --git a/data/pt.lang b/data/pt.lang new file mode 100644 index 0000000..0de38d8 --- /dev/null +++ b/data/pt.lang @@ -0,0 +1,59 @@ +language:pt +country:Portugal +---- +button-back:voltar +button-create:criar +button-join:entrar +button-leave-lobby:Sair do Lobby +button-send:enviar +button-singleplayer:Jogar singleplayer +button-start-game:Começar Jogo +button-submit:Enviar +connection-waiting:Aguardando conexão +error-bad-intent:Cliente não tem intenção +error-bold:ERROR +error-cannot-join-lobby:Não é possível entrar no lobby +error-creating-lobby:Ocorreu um erro ao criar o lobby +error-illegal-lobby:Lobby ilegal +error-illegal-user:Usuário ilegal +error-invalid-username:Nome de usuário Inválido +error-lobby-id-required:É necessário um lobby ID +error-lobby-joining:Ocorreu um erro ao entrar no lobby +error-lobby-name-required:Um nome é obrigatório +error-lobby-not-exist:Lobby não existe +error-malformed-lobby:Lobby malformado +error-no-username:Nome de usuário não esta presente +error-taken-lobby-ownership:Usuário já tem um lobby +error-taken-user-connection:Usuário já está conectado/a +error-taken-username:Nome de usuário já está em uso +error-too-many-clients:Demasiadas conexões +error-unknown-uid:ID de usuário desconhecido +game-lobby:crie ou entre em um jogo +joined:juntou +left:saiu +left-lobby:saiu do lobby +lobby:Lobby +lobby-allow-spectators:permitir espectadores +lobby-code:código do lobby +lobby-create:Criar Lobby +lobby-created:Lobby criado +lobby-created-joining:Lobby criaso, Juntando-se... +lobby-deleted:lobby apagado +lobby-join:Conectar ao Lobby +lobby-join-code:Código para Conectar +lobby-join-spectator:junte-se como espectador +lobby-joined:entrou no lobby +lobby-joining:entrando no lobby +lobby-private:lobby privado +log-console:console de log +message:mensagem +name:nome +players:Jogadores +scrabble-name:Scrabble +spectators:Espectadores +status:Status +status-connected:Conectado(a) +status-connected-as:Conectado/a como +status-disconnected:Desconectado/a +username:Nome de usuàrio +visibility:Visibilidade diff --git a/package.json b/package.json index d7e5a4f..ddeb03d 100644 --- a/package.json +++ b/package.json @@ -8,13 +8,6 @@ }, "author": "Ben Kyd (https://benkyd.co.uk)", "license": "UNLICENSED", - // "eslintConfig": { - // "extends": "portsoc", - // "root": true, - // "env": { - // "browser": true - // } - // }, "dependencies": { "eslint": "^7.23.0", "eslint-config-portsoc": "^0.8.1" diff --git a/scripts/localeToLang.js b/scripts/localeToLang.js index e69de29..60df33a 100644 --- a/scripts/localeToLang.js +++ b/scripts/localeToLang.js @@ -0,0 +1,54 @@ +// to take the locale.json and split into seperate langauge files for +// easy contribution of translations + +// DOES NOT PARSE, WILL OVERWRITE LANG FILES + +const fs = require('fs'); + +const localeJSONRaw = fs.readFileSync('../data/locale.json'); +const localeJSON = JSON.parse(localeJSONRaw); + +let localeCodes = []; +let languages = []; + +for (const localeCode in localeJSON) +{ + localeCodes.push(localeCode); + + for (const lang in localeJSON[localeCode]) + { + if (!languages.includes(lang)) + languages.push(lang); + } +} + +// good enough lol +localeCodes = localeCodes.sort(); + +for (let lang in languages) +{ + // if there is already a language file for this language, parse it and only put in the new locale codes + // if (fs.existsSync(`../data/${languages[lang]}.lang`)) + // { + // let localeCodesFromLangFile = fs.readFileSync(`../data/${languages[lang]}.lang`).toString(); + // localeCodesFromLangFile = localeCodesFromLangFile.split('----')[1].split('\n'); + + // console.log(localeCodesFromLangFile); + + // } + + let toWrite = ''; + for (const code of localeCodes) + { + if (localeJSON[code][languages[lang]]) + { + toWrite += code + ':' + localeJSON[code][languages[lang]] + '\n'; + } else + { + toWrite += code + ':' + localeJSON[code]['en'] + '\n'; + } + } + + fs.writeFileSync(`../data/${languages[lang]}.lang`, toWrite); +} + diff --git a/scripts/newLocale.js b/scripts/newLocale.js new file mode 100644 index 0000000..e69de29 diff --git a/scripts/updateLocaleFromEnglish.js b/scripts/updateLocaleFromEnglish.js new file mode 100644 index 0000000..139597f --- /dev/null +++ b/scripts/updateLocaleFromEnglish.js @@ -0,0 +1,2 @@ + +