ESP32: перевести UI регистрации на английский
This commit is contained in:
parent
0c9afea67a
commit
3262ec9b4a
@ -982,11 +982,11 @@ static bool loadWalletBalanceLamports(uint64_t &lamportsOut, String &messageOut)
|
||||
messageOut = "";
|
||||
lamportsOut = 0;
|
||||
if (WiFi.status() != WL_CONNECTED) {
|
||||
messageOut = "Баланс: Wi-Fi не подключен";
|
||||
messageOut = "Balance: Wi-Fi not connected";
|
||||
return false;
|
||||
}
|
||||
if (gDevicePubB58.isEmpty()) {
|
||||
messageOut = "Баланс: секрет не задан";
|
||||
messageOut = "Balance: secret not set";
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -994,12 +994,12 @@ static bool loadWalletBalanceLamports(uint64_t &lamportsOut, String &messageOut)
|
||||
String payload;
|
||||
String req = "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"getBalance\",\"params\":[\"" + gDevicePubB58 + "\",{\"commitment\":\"confirmed\"}]}";
|
||||
if (!httpPostJson(gSolanaRpcUrl, req, code, payload)) {
|
||||
messageOut = "Баланс: RPC не ответил";
|
||||
messageOut = "Balance: RPC unavailable";
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!jsonInt64Field(payload, "value", lamportsOut)) {
|
||||
messageOut = "Баланс: не удалось прочитать";
|
||||
messageOut = "Balance: failed to load";
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1258,15 +1258,15 @@ static std::vector<uint8_t> buildEd25519InstructionData(const uint8_t signature[
|
||||
static bool getLatestBlockhashBytes(uint8_t out[32], String &blockhashB58, String &messageOut) {
|
||||
String payload;
|
||||
if (!rpcCallSolana("getLatestBlockhash", "[{\"commitment\":\"confirmed\"}]", payload)) {
|
||||
messageOut = "RPC не вернул blockhash";
|
||||
messageOut = "RPC did not return blockhash";
|
||||
return false;
|
||||
}
|
||||
if (!jsonStringField(payload, "blockhash", blockhashB58) || blockhashB58.isEmpty()) {
|
||||
messageOut = "В ответе нет blockhash";
|
||||
messageOut = "Blockhash missing in response";
|
||||
return false;
|
||||
}
|
||||
if (!base58ToFixed32(blockhashB58, out)) {
|
||||
messageOut = "Некорректный blockhash";
|
||||
messageOut = "Invalid blockhash";
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
@ -1278,23 +1278,23 @@ static bool pdaAlreadyExists(const String &login, String &pdaAddress, String &me
|
||||
std::vector<uint8_t>((const uint8_t *)kUsersSeedPrefix, (const uint8_t *)kUsersSeedPrefix + strlen(kUsersSeedPrefix)),
|
||||
std::vector<uint8_t>((const uint8_t *)login.c_str(), (const uint8_t *)login.c_str() + login.length())};
|
||||
if (!findProgramAddress(seeds, kShineUsersProgramId, userPda)) {
|
||||
messageOut = "Не удалось вычислить user PDA";
|
||||
messageOut = "Failed to derive user PDA";
|
||||
return false;
|
||||
}
|
||||
pdaAddress = bytesToBase58(userPda, 32);
|
||||
String payload;
|
||||
if (!rpcCallSolana("getAccountInfo", "[\"" + pdaAddress + "\",{\"encoding\":\"base64\",\"commitment\":\"confirmed\"}]", payload)) {
|
||||
messageOut = "Не удалось проверить PDA";
|
||||
messageOut = "Failed to check PDA";
|
||||
return false;
|
||||
}
|
||||
if (payload.indexOf("\"value\":null") >= 0) {
|
||||
return false;
|
||||
}
|
||||
if (payload.indexOf("\"value\"") >= 0) {
|
||||
messageOut = "Такой логин уже зарегистрирован";
|
||||
messageOut = "Login is already registered";
|
||||
return true;
|
||||
}
|
||||
messageOut = "Непонятный ответ getAccountInfo";
|
||||
messageOut = "Unexpected getAccountInfo response";
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1391,12 +1391,12 @@ static bool awaitTransactionConfirmation(const String &signatureB58, String &mes
|
||||
return true;
|
||||
}
|
||||
if (payload.indexOf("\"err\":{") >= 0 || payload.indexOf("\"err\":\"") >= 0) {
|
||||
messageOut = "Транзакция отклонена сетью";
|
||||
messageOut = "Transaction rejected by network";
|
||||
return false;
|
||||
}
|
||||
delay(1000);
|
||||
}
|
||||
messageOut = "RPC не подтвердил транзакцию вовремя";
|
||||
messageOut = "RPC did not confirm transaction in time";
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1404,19 +1404,19 @@ static bool registerHomeserverOnSolana(String &messageOut) {
|
||||
messageOut = "";
|
||||
String cleanLogin = normalizeLoginValue(gLoginValue);
|
||||
if (cleanLogin.isEmpty()) {
|
||||
messageOut = "Логин не задан";
|
||||
messageOut = "Login is not set";
|
||||
return false;
|
||||
}
|
||||
if (!gSecretConfigured || gRootPrivB58.isEmpty() || gBlockchainPrivB58.isEmpty() || gDevicePrivB58.isEmpty()) {
|
||||
messageOut = "Секрет не готов";
|
||||
messageOut = "Secret is not ready";
|
||||
return false;
|
||||
}
|
||||
if (WiFi.status() != WL_CONNECTED) {
|
||||
messageOut = "Сначала подключите Wi-Fi";
|
||||
messageOut = "Connect Wi-Fi first";
|
||||
return false;
|
||||
}
|
||||
if (gSolanaRpcUrl.isEmpty()) {
|
||||
messageOut = "Сначала задайте Solana RPC";
|
||||
messageOut = "Set Solana RPC first";
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1427,14 +1427,14 @@ static bool registerHomeserverOnSolana(String &messageOut) {
|
||||
gRegistrationSignature = "";
|
||||
saveAccountPrefs();
|
||||
gAccountPdaStatus = ACCOUNT_PDA_OK;
|
||||
gAccountPdaStatusMessage = "Пользователь уже зарегистрирован";
|
||||
gAccountPdaStatusMessage = "User is already registered";
|
||||
gShowRegisterAccountButton = false;
|
||||
gAccountStatusMessage = "Пользователь уже зарегистрирован";
|
||||
gAccountStatusMessage = "User is already registered";
|
||||
gShineStatusLine = String("SHiNE: ") + (gShineServerUrl.isEmpty() ? "not set" : gShineServerUrl) + " registered";
|
||||
refreshAccountPdaStatus();
|
||||
return true;
|
||||
}
|
||||
if (pdaCheckMessage == "Не удалось вычислить user PDA" || pdaCheckMessage == "Не удалось проверить PDA" || pdaCheckMessage == "Непонятный ответ getAccountInfo") {
|
||||
if (pdaCheckMessage == "Failed to derive user PDA" || pdaCheckMessage == "Failed to check PDA" || pdaCheckMessage == "Unexpected getAccountInfo response") {
|
||||
messageOut = pdaCheckMessage;
|
||||
return false;
|
||||
}
|
||||
@ -1452,7 +1452,7 @@ static bool registerHomeserverOnSolana(String &messageOut) {
|
||||
!findProgramAddress({
|
||||
std::vector<uint8_t>((const uint8_t *)kPaymentsInflowSeed, (const uint8_t *)kPaymentsInflowSeed + strlen(kPaymentsInflowSeed))
|
||||
}, kShinePaymentsProgramId, inflowVault)) {
|
||||
messageOut = "Не удалось вычислить обязательные PDA";
|
||||
messageOut = "Failed to derive required PDAs";
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1468,7 +1468,7 @@ static bool registerHomeserverOnSolana(String &messageOut) {
|
||||
if (!deriveSeedKeypairFromBase58(gRootPrivB58, rootSeed, rootPub, rootSec) ||
|
||||
!deriveSeedKeypairFromBase58(gBlockchainPrivB58, blockchainSeed, blockchainPub, blockchainSec) ||
|
||||
!deriveSeedKeypairFromBase58(gDevicePrivB58, deviceSeed, devicePub, deviceSec)) {
|
||||
messageOut = "Не удалось восстановить ключи";
|
||||
messageOut = "Failed to restore keys";
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1478,7 +1478,7 @@ static bool registerHomeserverOnSolana(String &messageOut) {
|
||||
uint8_t lastBlockSignature[64];
|
||||
sha256calc(lastBlockState.data(), lastBlockState.size(), lastBlockHash);
|
||||
if (!signMessageEd25519(std::vector<uint8_t>(lastBlockHash, lastBlockHash + 32), blockchainSec, lastBlockSignature)) {
|
||||
messageOut = "Не удалось подписать LastBlockState";
|
||||
messageOut = "Failed to sign LastBlockState";
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1491,7 +1491,7 @@ static bool registerHomeserverOnSolana(String &messageOut) {
|
||||
uint8_t rootSignature[64];
|
||||
sha256calc(unsignedRecord.data(), unsignedRecord.size(), unsignedHash);
|
||||
if (!signMessageEd25519(std::vector<uint8_t>(unsignedHash, unsignedHash + 32), rootSec, rootSignature)) {
|
||||
messageOut = "Не удалось подписать PDA-запись";
|
||||
messageOut = "Failed to sign PDA record";
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1519,7 +1519,7 @@ static bool registerHomeserverOnSolana(String &messageOut) {
|
||||
createData);
|
||||
uint8_t txSignature[64];
|
||||
if (!signMessageEd25519(message, deviceSec, txSignature)) {
|
||||
messageOut = "Не удалось подписать Solana-транзакцию";
|
||||
messageOut = "Failed to sign Solana transaction";
|
||||
return false;
|
||||
}
|
||||
String txBase64 = encodeTransactionBase64(txSignature, message);
|
||||
@ -1527,11 +1527,11 @@ static bool registerHomeserverOnSolana(String &messageOut) {
|
||||
|
||||
String payload;
|
||||
if (!rpcCallSolana("sendTransaction", "[\"" + txBase64 + "\",{\"encoding\":\"base64\",\"preflightCommitment\":\"confirmed\"}]", payload)) {
|
||||
messageOut = "RPC не принял транзакцию";
|
||||
messageOut = "RPC did not accept transaction";
|
||||
return false;
|
||||
}
|
||||
if (rpcResponseHasError(payload)) {
|
||||
messageOut = "RPC вернул ошибку sendTransaction";
|
||||
messageOut = "RPC returned sendTransaction error";
|
||||
return false;
|
||||
}
|
||||
if (!awaitTransactionConfirmation(signatureB58, messageOut)) {
|
||||
@ -1540,14 +1540,14 @@ static bool registerHomeserverOnSolana(String &messageOut) {
|
||||
|
||||
gUserPdaAddress = bytesToBase58(userPda, 32);
|
||||
gRegistrationSignature = signatureB58;
|
||||
gAccountStatusMessage = "Solana-регистрация завершена";
|
||||
gAccountStatusMessage = "Solana registration complete";
|
||||
gAccountPdaStatus = ACCOUNT_PDA_OK;
|
||||
gAccountPdaStatusMessage = "Пользователь зарегистрирован";
|
||||
gAccountPdaStatusMessage = "User registered";
|
||||
gShowRegisterAccountButton = false;
|
||||
gShineStatusLine = String("SHiNE: ") + (gShineServerUrl.isEmpty() ? "not set" : gShineServerUrl) + " registered";
|
||||
saveAccountPrefs();
|
||||
refreshAccountPdaStatus();
|
||||
messageOut = "Solana-регистрация подтверждена";
|
||||
messageOut = "Solana registration confirmed";
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -1563,15 +1563,15 @@ static void prepareRegisterAccountScreen() {
|
||||
|
||||
String cleanLogin = normalizeLoginValue(gLoginValue);
|
||||
if (cleanLogin.isEmpty()) {
|
||||
gRegisterConfirmMessage = "Логин не задан";
|
||||
gRegisterConfirmMessage = "Login is not set";
|
||||
return;
|
||||
}
|
||||
if (!gSecretConfigured) {
|
||||
gRegisterConfirmMessage = "Секрет не задан";
|
||||
gRegisterConfirmMessage = "Secret is not set";
|
||||
return;
|
||||
}
|
||||
if (WiFi.status() != WL_CONNECTED) {
|
||||
gRegisterConfirmMessage = "Wi-Fi не подключен";
|
||||
gRegisterConfirmMessage = "Wi-Fi is not connected";
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1582,16 +1582,16 @@ static void prepareRegisterAccountScreen() {
|
||||
} else {
|
||||
gRegisterConfirmBalanceLine = formatSolValue(lamports);
|
||||
if (lamports < 20000000ULL) {
|
||||
gRegisterConfirmMessage = "Баланс меньше 0.020 SOL";
|
||||
gRegisterConfirmMessage = "Balance is below 0.020 SOL";
|
||||
} else {
|
||||
gRegisterConfirmMessage = "Баланс подходит: 0.020 SOL или выше";
|
||||
gRegisterConfirmMessage = "Balance is OK: 0.020 SOL or more";
|
||||
}
|
||||
}
|
||||
|
||||
if (gHomeserverValue.isEmpty()) {
|
||||
gRegisterConfirmHomeserverLine = "Homeserver не задан";
|
||||
gRegisterConfirmHomeserverLine = "Homeserver is not set";
|
||||
} else if (gHomeserverValue == "homeserver1") {
|
||||
gRegisterConfirmHomeserverLine = "Homeserver: homeserver1 (стандартное значение)";
|
||||
gRegisterConfirmHomeserverLine = "Homeserver: homeserver1 (default value)";
|
||||
} else {
|
||||
gRegisterConfirmHomeserverLine = String("Homeserver: ") + gHomeserverValue;
|
||||
}
|
||||
@ -1599,24 +1599,24 @@ static void prepareRegisterAccountScreen() {
|
||||
ShinePdaUserState pdaState;
|
||||
String pdaError;
|
||||
if (!readShineUserPda(cleanLogin, pdaState, pdaError)) {
|
||||
gRegisterConfirmPdaLine = pdaError.isEmpty() ? "PDA: не удалось проверить" : String("PDA: ") + pdaError;
|
||||
gRegisterConfirmPdaLine = pdaError.isEmpty() ? "PDA: failed to check" : String("PDA: ") + pdaError;
|
||||
if (gRegisterConfirmMessage.isEmpty()) {
|
||||
gRegisterConfirmMessage = pdaError.isEmpty() ? "Не удалось проверить PDA" : pdaError;
|
||||
gRegisterConfirmMessage = pdaError.isEmpty() ? "Failed to check PDA" : pdaError;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (pdaState.found) {
|
||||
gRegisterConfirmPdaLine = "PDA уже занят, этот login не свободен";
|
||||
gRegisterConfirmPdaLine = "PDA is already occupied, login is not free";
|
||||
if (gRegisterConfirmMessage.isEmpty()) {
|
||||
gRegisterConfirmMessage = "Login уже зарегистрирован";
|
||||
gRegisterConfirmMessage = "Login is already registered";
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
gRegisterConfirmPdaLine = "PDA свободен для регистрации";
|
||||
gRegisterConfirmPdaLine = "PDA is free for registration";
|
||||
if (gRegisterConfirmMessage.isEmpty()) {
|
||||
gRegisterConfirmMessage = "Все проверки пройдены";
|
||||
gRegisterConfirmMessage = "All checks passed";
|
||||
}
|
||||
gRegisterConfirmCanSubmit = true;
|
||||
}
|
||||
@ -3085,12 +3085,12 @@ static void actionButtonCb(lv_event_t *event) {
|
||||
String registerMessage;
|
||||
if (registerHomeserverOnSolana(registerMessage)) {
|
||||
gRegisterResultSuccess = true;
|
||||
gRegisterResultMessage = "Регистрация в Сиянии завершена";
|
||||
gRegisterResultMessage = "Registration in SHiNE completed";
|
||||
gRegisterResultDetails = registerMessage;
|
||||
gAccountStatusMessage = "Регистрация завершена";
|
||||
gAccountStatusMessage = "Registration completed";
|
||||
} else {
|
||||
gRegisterResultSuccess = false;
|
||||
gRegisterResultMessage = "Регистрация не выполнена";
|
||||
gRegisterResultMessage = "Registration failed";
|
||||
gRegisterResultDetails = registerMessage;
|
||||
gAccountStatusMessage = registerMessage;
|
||||
}
|
||||
@ -3635,7 +3635,7 @@ static void drawSecretGenerateCancelConfirmScreen() {
|
||||
static void drawRegisterAccountConfirmScreen() {
|
||||
setRootStyle();
|
||||
makeTitle("REGISTER ACCOUNT", 22, &lv_font_montserrat_24);
|
||||
String topLine = gRegisterConfirmMessage.isEmpty() ? String("Проверка регистрации") : gRegisterConfirmMessage;
|
||||
String topLine = gRegisterConfirmMessage.isEmpty() ? String("Registration check") : gRegisterConfirmMessage;
|
||||
makeBody(topLine.c_str(), 96, 420);
|
||||
if (!gRegisterConfirmPdaLine.isEmpty()) {
|
||||
makeBody(gRegisterConfirmPdaLine.c_str(), 138, 420);
|
||||
@ -3647,9 +3647,9 @@ static void drawRegisterAccountConfirmScreen() {
|
||||
makeBody(gRegisterConfirmHomeserverLine.c_str(), 222, 420);
|
||||
}
|
||||
if (gRegisterConfirmCanSubmit) {
|
||||
makeButton("ЗАРЕГИСТРИРОВАТЬ В СИЯНИИ", 22, 296, 436, 74, 0x2A9D8F, ACTION_REGISTER_ACCOUNT_EXECUTE, &lv_font_montserrat_18);
|
||||
makeButton("REGISTER IN SHINE", 22, 296, 436, 74, 0x2A9D8F, ACTION_REGISTER_ACCOUNT_EXECUTE, &lv_font_montserrat_18);
|
||||
} else {
|
||||
makeButton("НЕДОСТУПНО", 22, 296, 436, 74, 0x4A5560, ACTION_NONE, &lv_font_montserrat_20);
|
||||
makeButton("UNAVAILABLE", 22, 296, 436, 74, 0x4A5560, ACTION_NONE, &lv_font_montserrat_20);
|
||||
}
|
||||
makeButton("BACK", 140, 384, 200, 54, 0x5A6570, ACTION_BACK_HOME, &lv_font_montserrat_20);
|
||||
makeVersionTag();
|
||||
@ -3658,7 +3658,7 @@ static void drawRegisterAccountConfirmScreen() {
|
||||
static void drawRegisterAccountResultScreen() {
|
||||
setRootStyle();
|
||||
makeTitle("REGISTER RESULT", 22, &lv_font_montserrat_24);
|
||||
String resultTopLine = gRegisterResultSuccess ? String("Регистрация завершилась успешно") : String("Регистрация завершилась с ошибкой");
|
||||
String resultTopLine = gRegisterResultSuccess ? String("Registration completed successfully") : String("Registration failed");
|
||||
makeBody(resultTopLine.c_str(), 96, 420);
|
||||
makeBody(gRegisterResultMessage.c_str(), 140, 420);
|
||||
if (!gRegisterResultDetails.isEmpty()) {
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
client.version=1.2.165
|
||||
server.version=1.2.154
|
||||
client.version=1.2.166
|
||||
server.version=1.2.155
|
||||
|
||||
Loading…
Reference in New Issue
Block a user