ESP32: перевести UI регистрации на английский

This commit is contained in:
AidarKC 2026-06-12 23:35:05 +04:00
parent 0c9afea67a
commit 3262ec9b4a
2 changed files with 52 additions and 52 deletions

View File

@ -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()) {

View File

@ -1,2 +1,2 @@
client.version=1.2.165
server.version=1.2.154
client.version=1.2.166
server.version=1.2.155