diff --git a/docs b/docs index 6936aa270..bce6cc587 160000 --- a/docs +++ b/docs @@ -1 +1 @@ -Subproject commit 6936aa2703675f1b144d613e69e4922b51ea358f +Subproject commit bce6cc5873d8df45cf72e428f157cda54d2d5aff diff --git a/langs/en.json b/langs/en.json new file mode 100644 index 000000000..4fc010475 --- /dev/null +++ b/langs/en.json @@ -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 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 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..." +} \ No newline at end of file diff --git a/langs/it.json b/langs/it.json new file mode 100644 index 000000000..0f9c561c6 --- /dev/null +++ b/langs/it.json @@ -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 già registrato su Telegram<\/b> per ottenere l'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 impostazioni<\/a>." +} \ No newline at end of file diff --git a/src/DocsBuilder/Methods.php b/src/DocsBuilder/Methods.php index 0f4b80369..1f105d169 100644 --- a/src/DocsBuilder/Methods.php +++ b/src/DocsBuilder/Methods.php @@ -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'; $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] = '$'.$param[$type_or_subtype]; $params .= $param['name'].': '.(isset($param['subtype']) ? '\\['.$param[$type_or_subtype].'\\]' : $param[$type_or_subtype]).', '; } 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 .= 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, ['bytes']) ? '{"_": "bytes", "bytes":"base64 encoded '.$ptype.'"}' : $ppptype; $params .= $param['name'].': '; diff --git a/tools/translator.php b/tools/translator.php index 0e66cada6..6e7d8fd3a 100644 --- a/tools/translator.php +++ b/tools/translator.php @@ -34,9 +34,11 @@ final class Lang foreach (Lang::$lang as $code => &$currentLang) { if ($code === 'en') { + file_put_contents("langs/$code.json", json_encode($currentLang, JSON_PRETTY_PRINT)); continue; } $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: ');