1
0
mirror of https://github.com/danog/MadelineProto.git synced 2025-01-22 18:11:24 +01:00

Add JSON localization files

This commit is contained in:
Daniil Gentili 2023-06-24 18:25:26 +02:00
parent 03a78dba98
commit 9292b375b4
Signed by: danog
GPG Key ID: 8C1BE3B34B230CA7
5 changed files with 249 additions and 2 deletions

2
docs

@ -1 +1 @@
Subproject commit 6936aa2703675f1b144d613e69e4922b51ea358f Subproject commit bce6cc5873d8df45cf72e428f157cda54d2d5aff

122
langs/en.json Normal file
View File

@ -0,0 +1,122 @@
{
"go": "Go",
"apiChooseManualAutoTip": "Note that you can also provide the API ID\/hash directly in the code using the settings: %s",
"apiChooseManualAutoTipWeb": "Note that you can also provide the API ID\/hash directly in the code using the <a target=\"_blank\" href=\"%s\">settings<\/a>.",
"apiChoosePrompt": "Your choice (m\/a): ",
"apiManualInstructions0": "Login to https:\/\/my.telegram.org",
"apiManualInstructions1": "Go to API development tools",
"apiManualInstructions2": "Click on create application",
"apiAppInstructionsManual0": "your app's name, can be anything",
"apiAppInstructionsManual1": "your app's short name, alphanumeric, 5-32 characters",
"apiAppInstructionsManual2": "your app\/website's URL, or t.me\/yourusername",
"apiAppInstructionsManual3": "anything",
"apiAppInstructionsManual4": "Describe your app here",
"apiManualWeb": "Enter your API ID and API hash",
"apiManualPrompt0": "Enter your API ID: ",
"apiManualPrompt1": "Enter your API hash: ",
"apiAutoWeb": "Enter a phone number that is <b>already registered<\/b> on telegram to get the API ID",
"apiAutoPrompt0": "Enter a phone number that is already registered on Telegram: ",
"apiAutoPrompt1": "Enter the verification code you received in Telegram: ",
"apiAppWeb": "Enter API information",
"apiAppInstructionsAuto0": "Enter the app's name, can be anything: ",
"apiAppInstructionsAuto1": "Enter the app's short name, alphanumeric, 5-32 characters: ",
"apiAppInstructionsAuto2": "Enter the app\/website's URL, or t.me\/yourusername: ",
"apiAppInstructionsAuto3": "Enter the app platform: ",
"apiAppInstructionsAuto4": "Describe your app: ",
"apiAppInstructionsAutoTypeOther": "Other (specify in description)",
"apiParamsError": "You didn't provide all of the required parameters!",
"apiError": "ERROR: %s. Try again.",
"loginChoosePromptWeb": "Do you want to login as a user or as a bot?",
"loginWebQr": "You can also login automatically by scanning the following QR code:",
"loginWebQr1": "Open Telegram on your phone",
"loginWebQr2": "Go to Settings > Devices > Link Desktop Device",
"loginWebQr3": "Point your phone at this screen to confirm login",
"loginOptionBot": "Bot",
"loginOptionUser": "User",
"loginBot": "Enter your bot token: ",
"loginUser": "Enter your phone number: ",
"loginQr": "Scan the above QR code to login automatically.",
"loginManual": "Alternatively, you can also enter a bot token or phone number to login manually: ",
"loginUserCode": "Enter the code: ",
"loginUserPass": "Enter your password (hint %s): ",
"loginUserPassWeb": "Enter your password: ",
"loginUserPassHint": "Hint: %s",
"signupFirstName": "Enter your first name: ",
"signupLastName": "Enter your last name (can be empty): ",
"signupWeb": "Sign up please",
"signupFirstNameWeb": "First name",
"signupLastNameWeb": "Last name",
"loginNoCode": "You didn't provide a phone code!",
"loginNoPass": "You didn't provide the password!",
"loginNoName": "You didn't provide the first name!",
"loginBotTokenWeb": "Bot token",
"loginUserPhoneWeb": "Phone number",
"loginUserPhoneCodeWeb": "Code",
"done": "Done!",
"nearest_dc": "We're in %s, nearest DC is %d.",
"serialization_ofd": "Serialization is out of date, reconstructing object!",
"api_not_set": "You must provide an api key and an api id, get your own @ my.telegram.org",
"session_corrupted": "The session is corrupted!",
"length_not_4": "The specified base256 32-bit integer must be exactly 4 bytes long.",
"length_not_8": "The specified base256 64-bit integer must be exactly 8 bytes long.",
"value_bigger_than_2147483647": "Provided value %s is bigger than 2147483647",
"value_smaller_than_2147483648": "Provided value %s is smaller than -2147483648",
"value_bigger_than_9223372036854775807": "Provided value %s is bigger than 9223372036854775807",
"value_smaller_than_9223372036854775808": "Provided value %s is smaller than -9223372036854775808",
"value_bigger_than_4294967296": "Provided value %s is bigger than 4294967296",
"value_smaller_than_0": "Provided value %s is smaller than 0",
"encode_double_error": "Could not properly encode double",
"file_not_exist": "File does not exist",
"deserialization_error": "An error occurred on deserialization",
"rpc_tg_error": "Telegram returned an RPC error: %s (%s), caused by %s:%s%sTL trace:",
"madelineproto_ready": "MadelineProto is ready!",
"logout_ok": "Logged out successfully!",
"already_loggedIn": "This instance of MadelineProto is already logged in!",
"login_ok": "Logged in successfully!",
"login_user": "Logging in as a normal user...",
"login_bot": "Logging in as a bot...",
"login_code_sending": "Sending code...",
"login_code_sent": "Code sent successfully! Once you receive the code you should use the completePhoneLogin function.",
"login_code_uncalled": "I'm not waiting for the code! Please call the phoneLogin method first",
"login_2fa_enabled": "2FA enabled, you will have to call the complete2falogin function...",
"login_need_signup": "An account has not been created for this number, you will have to call the completeSignup function...",
"login_auth_key": "Logging in using auth key...",
"not_loggedIn": "I'm not logged in!",
"signup_uncalled": "I'm not waiting to signup! Please call the phoneLogin and the completePhoneLogin methods first!",
"signing_up": "Signing up as a normal user...",
"signup_ok": "Signed up in successfully!",
"2fa_uncalled": "I'm not waiting for the password! Please call the phoneLogin and the completePhoneLogin methods first!",
"peer_not_in_db": "This peer is not present in the internal peer database",
"call_error_1": "Could not find and accept call %s",
"accepting_call": "Accepting call from %s...",
"call_already_accepted": "Call %s already accepted",
"call_already_declined": "Call %s already declined",
"call_error_2": "Could not find and confirm call %s",
"call_confirming": "Confirming call from %s...",
"call_error_3": "Could not find and complete call %s",
"call_completing": "Completing call from %s...",
"fingerprint_invalid": "Invalid key fingerprint!",
"call_discarding": "Discarding call %s...",
"file_parsing": "Parsing %s...",
"src_file_invalid": "Invalid source file was provided: ",
"bool_error": "Could not extract boolean",
"not_numeric": "Given value isn't numeric",
"long_not_16": "Given value is not 16 bytes long",
"long_not_32": "Given value is not 32 bytes long",
"long_not_64": "Given value is not 64 bytes long",
"array_invalid": "You didn't provide a valid array",
"predicate_not_set": "Predicate (value under _) was not set!",
"type_extract_error": "Could not extract type \"%s\", you should update MadelineProto!",
"method_not_found": "Could not find method: ",
"params_missing": "Missing required parameter",
"sec_peer_not_in_db": "This secret peer is not present in the internal peer database",
"stream_handle_invalid": "An invalid stream handle was provided.",
"length_too_big": "Length is too big",
"type_extract_error_id": "Could not extract type: %s with id %s, you should update MadelineProto!",
"constructor_not_found": "Constructor not found for type: ",
"botapi_conversion_error": "Can't convert %s to a bot API object",
"non_text_conversion": "Can't convert non text messages yet!",
"last_byte_invalid": "Invalid last byte",
"file_type_invalid": "Invalid file type detected (%s)",
"secret_chat_skipping": "I do not have the secret chat %s in the database, skipping message..."
}

122
langs/it.json Normal file
View File

@ -0,0 +1,122 @@
{
"nearest_dc": "Siamo in %s, il DC pi\u00f9 vicino \u00e8 %d.",
"serialization_ofd": "La serializzazione non \u00e8 aggiornata, reistanziamento dell'oggetto in corso!",
"api_not_set": "Devi specificare una chiave ed un ID API, ottienili su https:\/\/my.telegram.org",
"session_corrupted": "La sessione si \u00e8 corrotta!",
"length_not_4": "The specified base256 32-bit integer must be exactly 4 bytes long.",
"length_not_8": "The specified base256 64-bit integer must be exactly 8 bytes long.",
"value_bigger_than_2147483647": "Il valore fornito (%s) \u00e8 maggiore di 2147483647",
"value_smaller_than_2147483648": "Il valore fornito (%s) \u00e8 minore di -2147483648",
"value_bigger_than_9223372036854775807": "Il valore fornito (%s) \u00e8 maggiore di 9223372036854775807",
"value_smaller_than_9223372036854775808": "Il valore fornito (%s) \u00e8 minore di -9223372036854775808",
"value_bigger_than_4294967296": "Il valore fornito (%s) \u00e8 maggiore di 4294967296",
"value_smaller_than_0": "Il valore fornito (%s) \u00e8 minore di 0",
"encode_double_error": "Non sono riuscito a codificare il numero a virgola mobile fornito",
"file_not_exist": "Il file specificato non esiste",
"deserialization_error": "C'\u00e8 stato un errore durante la deserializzazione",
"rpc_tg_error": "Telegram ha ritornato un errore RPC: %s (%s), causato da %s:%s%sTL trace:",
"madelineproto_ready": "MadelineProto \u00e8 pronto!",
"logout_ok": "Il logout \u00e8 stato eseguito correttamente!",
"already_loggedIn": "Questa istanza di MadelineProto \u00e8 gi\u00e0 loggata!",
"login_ok": "Il login \u00e8 stato eseguito correttamente!",
"login_user": "Sto eseguendo il login come utente normale...",
"login_bot": "Sto eseguendo il login come bot...",
"login_code_sending": "Sto inviando il codice...",
"login_code_sent": "Il codice \u00e8 stato inviato correttamente! Una volta ricevuto il codice dovrai usare la funzione completePhoneLogin.",
"login_code_uncalled": "Non sto aspettando il codice! Usa la funzione phoneLogin.",
"login_2fa_enabled": "L'autenticazione a due fattori \u00e8 abilitata, dovrai chiamare il metodo complete2falogin...",
"login_need_signup": "Questo numero non \u00e8 registrato su telegram, dovrai chiamare la funzione completeSignup...",
"login_auth_key": "Sto facendo il login con la chiave di autorizzazione...",
"not_loggedIn": "Non ho ancora fatto il login!",
"signup_uncalled": "Chiama prima le funzioni phoneLogin e completePhoneLogin.",
"signing_up": "Mi sto registrando su telegram come utente normale...",
"signup_ok": "Mi sono registrato su Telegram!",
"2fa_uncalled": "Non sto aspettando la password, chiama prima le funzioni phoneLogin e completePhoneLogin!",
"peer_not_in_db": "Questo utente\/gruppo\/canale non \u00e8 presente nel database interno MadelineProto",
"call_error_1": "Impossibile trovare ed accettare la chiamata %s",
"accepting_call": "Sto accettando una chiamata da %s...",
"call_already_accepted": "La chiamata %s \u00e8 gi\u00e0 stata accettata.",
"call_already_declined": "La chiamata %s \u00e8 gi\u00e0 stata annullata.",
"call_error_2": "Impossibile trovare e confermare la chiamata %s",
"call_confirming": "Sto confermando una chiamata da %s",
"call_error_3": "Impossibile trovare e completare la chiamata %s",
"call_completing": "Sto completando una chiamata da %s...",
"fingerprint_invalid": "fingerprint della chiave non valido!",
"call_discarding": "Sto rifiutando la chiamata %s...",
"file_parsing": "Leggendo %s...",
"src_file_invalid": "\u00c8 stato fornito un file sorgente non valido: ",
"bool_error": "Non sono riuscito ad estrarre un booleano",
"not_numeric": "Il valore fornito non \u00e8 numerico",
"long_not_16": "Il valore fornito non \u00e8 lungo 16 byte",
"long_not_32": "Il valore fornito non \u00e8 lungo 32 byte",
"long_not_64": "Il valore fornito non \u00e8 lungo 64 byte",
"array_invalid": "Il valore fornito non \u00e8 un array",
"predicate_not_set": "Il predicato (valore sotto chiave _, esempio ['_' => 'inputPeer']) non \u00e8 impostato!",
"type_extract_error": "Impossibile estrarre il tipo \"%s\"",
"method_not_found": "Impossibile trovare il seguente metodo: ",
"params_missing": "Non hai fornito un parametro obbligatorio, rileggi la documentazione API",
"sec_peer_not_in_db": "La chat segreta non \u00e8 presente nel database interno MadelineProto",
"stream_handle_invalid": "Il valore fornito non \u00e8 uno stream",
"length_too_big": "Il valore fornito \u00e8 troppo lungo",
"type_extract_error_id": "Non sono riuscito ad estrarre il tipo %s con ID %s",
"constructor_not_found": "Costruttore non trovato per tipo: ",
"botapi_conversion_error": "Non sono risucito a convertire %s in un oggetto bot API",
"non_text_conversion": "Non posso ancora convertire messaggi media",
"last_byte_invalid": "L'ultimo byte non \u00e8 valido",
"file_type_invalid": "\u00c8 stato fornito un tipo file errato",
"secret_chat_skipping": "Non ho la chat segreta %s nel database, ignorando messaggio",
"done": "Fatto!",
"apiAppInstructionsAuto0": "Inserisci il nome dell'app, pu\u00f2 essere qualsiasi cosa: ",
"apiAppInstructionsAuto1": "Inserisci il nome ridotto dell'app, caratteri alfanumerici: ",
"apiAppInstructionsAuto2": "Inserisci il sito internet dell'app, oppure t.me\/username: ",
"apiAppInstructionsAuto3": "Inserisci la piattaforma dell'app: ",
"apiAppInstructionsAuto4": "Descrivi la tua app: ",
"apiAppInstructionsManual0": "titolo dell'app, pu\u00f2 essere qualsiasi cosa",
"apiAppInstructionsManual1": "il nome ridotto dell'app, caratteri alfanumerici: ",
"apiAppInstructionsManual2": "L'indirizzo del tuo sito, oppure t.me\/username",
"apiAppInstructionsManual3": "Qualsiasi",
"apiAppInstructionsManual4": "Descrivi la tua app",
"apiAutoPrompt0": "Inserisci un numero di telefono che \u00e8 gi\u00e0 registrato su Telegram: ",
"apiAutoPrompt1": "Inserisci il codice di verifica che hai ricevuto su Telegram: ",
"apiChooseManualAutoTip": "Nota che puoi anche fornire i parametri API direttamente nelle impostazioni: %s",
"apiChoosePrompt": "La tua scelta (m\/a): ",
"apiError": "ERRORE: %s. Prova ancora.",
"apiManualInstructions0": "Effettua il login su https:\/\/my.telegram.org",
"apiManualInstructions1": "Vai su API development tools",
"apiManualInstructions2": "Clicca su create application",
"apiManualPrompt0": "Inserisci il tuo API ID: ",
"apiManualPrompt1": "Inserisci il tuo API hash: ",
"apiParamsError": "Non hai fornito tutti i parametri richiesti!",
"loginBot": "Inserisci il tuo bot token: ",
"loginQr": "Scansiona il codice QR per fare il login automaticamente.",
"loginManual": "In alternativa, puoi inserire un bot token o un numero di telefono per effettuare il login manualmente: ",
"loginNoCode": "Non hai fornito un codice di verifica!",
"loginNoName": "Non hai fornito un nome!",
"loginNoPass": "Non hai fornito la password!",
"loginUser": "Inserisci il tuo numero di telefono: ",
"loginUserPass": "Inserisci la tua password (suggerimento %s): ",
"loginUserPassHint": "Suggerimento: %s",
"loginUserPassWeb": "Inserisci la tua password: ",
"loginUserCode": "Inserisci il codice di verifica: ",
"signupFirstName": "Inserisci il tuo nome: ",
"signupFirstNameWeb": "Nome",
"signupLastName": "Inserisci il tuo cognome: ",
"signupLastNameWeb": "Cognome",
"signupWeb": "Registrazione",
"go": "Vai",
"loginChoosePromptWeb": "Vuoi effettuare il login come utente o come bot?",
"loginWebQr": "Puoi anche effettuare il login automaticamente scansionando il seguente codice QR:",
"loginWebQr1": "Apri Telegram sul tuo telefono",
"loginWebQr2": "Vai su Impostazioni > Dispositivi > Collega dispositivo desktop",
"loginWebQr3": "Inquadra il codice sullo schermo per completare il login",
"loginOptionBot": "Bot",
"loginOptionUser": "Utente",
"loginBotTokenWeb": "Token del bot",
"loginUserPhoneCodeWeb": "Codice di verifica",
"loginUserPhoneWeb": "Numero di telefono",
"apiAutoWeb": "Inserisci un numero di telefono <b>gi&agrave; registrato su Telegram<\/b> per ottenere l&apos;API ID",
"apiManualWeb": "Inserisci il tuo API ID e API hash",
"apiAppInstructionsAutoTypeOther": "Altro (specificare nella descrizione)",
"apiAppWeb": "Inserire informazioni API",
"apiChooseManualAutoTipWeb": "Nota che puoi anche fornire i parametri API direttamente nelle <a target=\"_blank\" href=\"%s\">impostazioni<\/a>."
}

View File

@ -99,6 +99,7 @@ trait Methods
$type_or_bare_type = \ctype_upper(Tools::end(\explode('.', $param[$type_or_subtype]))[0]) || \in_array($param[$type_or_subtype], ['!X', 'X', 'bytes', 'true', 'false', 'double', 'string', 'Bool', 'int', 'long', 'int128', 'int256', 'int512', 'int53']) ? 'types' : 'constructors'; $type_or_bare_type = \ctype_upper(Tools::end(\explode('.', $param[$type_or_subtype]))[0]) || \in_array($param[$type_or_subtype], ['!X', 'X', 'bytes', 'true', 'false', 'double', 'string', 'Bool', 'int', 'long', 'int128', 'int256', 'int512', 'int53']) ? 'types' : 'constructors';
$param[$type_or_subtype] = \str_replace(['true', 'false'], ['Bool', 'Bool'], $param[$type_or_subtype]); $param[$type_or_subtype] = \str_replace(['true', 'false'], ['Bool', 'Bool'], $param[$type_or_subtype]);
$param[$type_or_subtype] = '['.StrTools::markdownEscape($param[$type_or_subtype]).'](/API_docs/'.$type_or_bare_type.'/'.$param[$type_or_subtype].'.md)'; $param[$type_or_subtype] = '['.StrTools::markdownEscape($param[$type_or_subtype]).'](/API_docs/'.$type_or_bare_type.'/'.$param[$type_or_subtype].'.md)';
$param[$type_or_subtype] = '$'.$param[$type_or_subtype];
$params .= $param['name'].': '.(isset($param['subtype']) ? '\\['.$param[$type_or_subtype].'\\]' : $param[$type_or_subtype]).', '; $params .= $param['name'].': '.(isset($param['subtype']) ? '\\['.$param[$type_or_subtype].'\\]' : $param[$type_or_subtype]).', ';
} }
if (!isset($this->tdDescriptions['methods'][$method])) { if (!isset($this->tdDescriptions['methods'][$method])) {
@ -189,7 +190,7 @@ trait Methods
$table .= '|'.StrTools::markdownEscape($param['name']).'|'.(isset($param['subtype']) ? 'Array of ' : '').'['.StrTools::markdownEscape($human_ptype).'](/API_docs/'.$type_or_bare_type.'/'.$ptype.'.md) | '.(isset($param['pow']) || ($param['type'] === 'long' && $param['name'] === 'hash')|| ($id = $this->TL->getConstructors($this->td)->findByPredicate(\lcfirst($param['type']).'Empty')) && $id['type'] === $param['type'] || ($id = $this->TL->getConstructors($this->td)->findByPredicate('input'.$param['type'].'Empty')) && $id['type'] === $param['type'] ? 'Optional' : 'Yes').'|'; $table .= '|'.StrTools::markdownEscape($param['name']).'|'.(isset($param['subtype']) ? 'Array of ' : '').'['.StrTools::markdownEscape($human_ptype).'](/API_docs/'.$type_or_bare_type.'/'.$ptype.'.md) | '.(isset($param['pow']) || ($param['type'] === 'long' && $param['name'] === 'hash')|| ($id = $this->TL->getConstructors($this->td)->findByPredicate(\lcfirst($param['type']).'Empty')) && $id['type'] === $param['type'] || ($id = $this->TL->getConstructors($this->td)->findByPredicate('input'.$param['type'].'Empty')) && $id['type'] === $param['type'] ? 'Optional' : 'Yes').'|';
} }
$table .= PHP_EOL; $table .= PHP_EOL;
$pptype = \in_array($ptype, ['string', 'bytes']) ? "'".$ptype."'" : $ptype; $pptype = \in_array($ptype, ['string', 'bytes']) ? "'".$ptype."'" : '$'.$ptype;
$ppptype = \in_array($ptype, ['string']) ? '"'.$ptype.'"' : $ptype; $ppptype = \in_array($ptype, ['string']) ? '"'.$ptype.'"' : $ptype;
$ppptype = \in_array($ptype, ['bytes']) ? '{"_": "bytes", "bytes":"base64 encoded '.$ptype.'"}' : $ppptype; $ppptype = \in_array($ptype, ['bytes']) ? '{"_": "bytes", "bytes":"base64 encoded '.$ptype.'"}' : $ppptype;
$params .= $param['name'].': '; $params .= $param['name'].': ';

View File

@ -34,9 +34,11 @@ final class Lang
foreach (Lang::$lang as $code => &$currentLang) { foreach (Lang::$lang as $code => &$currentLang) {
if ($code === 'en') { if ($code === 'en') {
file_put_contents("langs/$code.json", json_encode($currentLang, JSON_PRETTY_PRINT));
continue; continue;
} }
$currentLang = array_intersect_key($currentLang, Lang::$lang['en']); $currentLang = array_intersect_key($currentLang, Lang::$lang['en']);
file_put_contents("langs/$code.json", json_encode($currentLang, JSON_PRETTY_PRINT));
} }
$lang_code = readline('Enter the language you whish to localize: '); $lang_code = readline('Enter the language you whish to localize: ');