diff --git a/AVR_Miner.py b/AVR_Miner.py index caa64480..8309d694 100644 --- a/AVR_Miner.py +++ b/AVR_Miner.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 """ -Duino-Coin Official AVR Miner 4.0 © MIT licensed +Duino-Coin Official AVR Miner 4.1 © MIT licensed https://duinocoin.com https://github.com/revoxhere/duino-coin Duino-Coin Team & Community 2019-2024 @@ -109,7 +109,7 @@ def port_num(com): class Settings: - VER = '4.0' + VER = '4.1' SOC_TIMEOUT = 15 REPORT_TIME = 120 AVR_TIMEOUT = 10 @@ -515,6 +515,8 @@ def start(donation_level): lang = 'italian' elif locale.startswith('pt'): lang = 'portuguese' + if locale.startswith("zh_TW"): + lang = "chinese_Traditional" elif locale.startswith('zh'): lang = 'chinese_simplified' elif locale.startswith('th'): @@ -1239,7 +1241,7 @@ def mine_avr(com, threadid, fastest_pool, thread_rigid): if shares[0] % 100 == 0 and shares[0] > 1: pretty_print("sys0", - f"{get_string('surpassed')} {accept.value} {get_string('surpassed_shares')}", + f"{get_string('surpassed')} {shares[0]} {get_string('surpassed_shares')}", "success") title(get_string('duco_avr_miner') + str(Settings.VER) diff --git a/Arduino_Code/Arduino_Code.ino b/Arduino_Code/Arduino_Code.ino index 20cfda34..697b56a0 100644 --- a/Arduino_Code/Arduino_Code.ino +++ b/Arduino_Code/Arduino_Code.ino @@ -4,7 +4,7 @@ ( _ \( )( )(_ _)( \( )( _ )___ / __)( _ )(_ _)( \( ) )(_) ))(__)( _)(_ ) ( )(_)((___)( (__ )(_)( _)(_ ) ( (____/(______)(____)(_)\_)(_____) \___)(_____)(____)(_)\_) - Official code for Arduino boards (and relatives) version 4.0 + Official code for Arduino boards (and relatives) version 4.1 Duino-Coin Team & Community 2019-2024 © MIT Licensed https://duinocoin.com diff --git a/ESP_Code/Dashboard.h b/ESP_Code/Dashboard.h index 4955e880..f2349858 100644 --- a/ESP_Code/Dashboard.h +++ b/ESP_Code/Dashboard.h @@ -7,7 +7,7 @@ const char WEBSITE[] PROGMEM = R"=====( diff --git a/ESP_Code/ESP_Code.ino b/ESP_Code/ESP_Code.ino index f4302d64..64ba34d1 100644 --- a/ESP_Code/ESP_Code.ino +++ b/ESP_Code/ESP_Code.ino @@ -3,7 +3,7 @@ ( _ \( )( )(_ _)( \( )( _ )___ / __)( _ )(_ _)( \( ) )(_) ))(__)( _)(_ ) ( )(_)((___)( (__ )(_)( _)(_ ) ( (____/(______)(____)(_)\_)(_____) \___)(_____)(____)(_)\_) - Official code for all ESP8266/32 boards version 4.0 + Official code for all ESP8266/32 boards version 4.1 Main .ino file The Duino-Coin Team & Community 2019-2024 © MIT Licensed @@ -34,6 +34,7 @@ #include #else #include + #include #include #include #include @@ -50,6 +51,10 @@ #include "MiningJob.h" #include "Settings.h" +#ifdef USE_LAN + #include +#endif + #if defined(WEB_DASHBOARD) #include "Dashboard.h" #endif @@ -82,6 +87,10 @@ namespace { EasyMutex mutexClientData, mutexConnectToServer; #endif + #ifdef USE_LAN + static bool eth_connected = false; + #endif + void UpdateHostPort(String input) { // Thanks @ricaun for the code DynamicJsonDocument doc(256); @@ -92,7 +101,9 @@ namespace { configuration->port = doc["port"].as(); node_id = String(name); - Serial.println("Poolpicker selected the best mining node: " + node_id); + #if defined(SERIAL_PRINTING) + Serial.println("Poolpicker selected the best mining node: " + node_id); + #endif } String httpGetString(String URL) { @@ -107,7 +118,9 @@ namespace { if (httpCode == HTTP_CODE_OK) payload = http.getString(); else - Serial.printf("Error fetching node from poolpicker: %s\n", http.errorToString(httpCode).c_str()); + #if defined(SERIAL_PRINTING) + Serial.printf("Error fetching node from poolpicker: %s\n", http.errorToString(httpCode).c_str()); + #endif http.end(); } @@ -120,7 +133,9 @@ namespace { int poolIndex = 0; while (input == "") { - Serial.println("Fetching mining node from the poolpicker in " + String(waitTime) + "s"); + #if defined(SERIAL_PRINTING) + Serial.println("Fetching mining node from the poolpicker in " + String(waitTime) + "s"); + #endif input = httpGetString("https://server.duinocoin.com/getPool"); delay(waitTime * 1000); @@ -134,8 +149,76 @@ namespace { UpdateHostPort(input); } + #ifdef USE_LAN + void WiFiEvent(WiFiEvent_t event) + { + switch (event) { + case ARDUINO_EVENT_ETH_START: + #if defined(SERIAL_PRINTING) + Serial.println("ETH Started"); + #endif + // The hostname must be set after the interface is started, but needs + // to be set before DHCP, so set it from the event handler thread. + ETH.setHostname("esp32-ethernet"); + break; + case ARDUINO_EVENT_ETH_CONNECTED: + #if defined(SERIAL_PRINTING) + Serial.println("ETH Connected"); + #endif + break; + case ARDUINO_EVENT_ETH_GOT_IP: + #if defined(SERIAL_PRINTING) + Serial.println("ETH Got IP"); + #endif + eth_connected = true; + break; + + case ARDUINO_EVENT_ETH_DISCONNECTED: + #if defined(SERIAL_PRINTING) + Serial.println("ETH Disconnected"); + #endif + eth_connected = false; + break; + case ARDUINO_EVENT_ETH_STOP: + #if defined(SERIAL_PRINTING) + Serial.println("ETH Stopped"); + #endif + eth_connected = false; + break; + default: + break; + } + } + #endif + void SetupWifi() { - Serial.println("Connecting to: " + String(SSID)); + + #ifdef USE_LAN + #if defined(SERIAL_PRINTING) + Serial.println("Connecting to Ethernet..."); + #endif + WiFi.onEvent(WiFiEvent); // Will call WiFiEvent() from another thread. + ETH.begin(); + + + while (!eth_connected) { + delay(500); + #if defined(SERIAL_PRINTING) + Serial.print("."); + #endif + } + + #if defined(SERIAL_PRINTING) + Serial.println("\n\nSuccessfully connected to Ethernet"); + Serial.println("Local IP address: " + ETH.localIP().toString()); + Serial.println("Rig name: " + String(RIG_IDENTIFIER)); + Serial.println(); + #endif + + #else + #if defined(SERIAL_PRINTING) + Serial.println("Connecting to: " + String(SSID)); + #endif WiFi.mode(WIFI_STA); // Setup ESP in client mode #if defined(ESP8266) WiFi.setSleepMode(WIFI_NONE_SLEEP); @@ -147,17 +230,23 @@ namespace { int wait_passes = 0; while (WiFi.waitForConnectResult() != WL_CONNECTED) { delay(500); - Serial.print("."); + #if defined(SERIAL_PRINTING) + Serial.print("."); + #endif if (++wait_passes >= 10) { WiFi.begin(SSID, PASSWORD); wait_passes = 0; } } - Serial.println("\n\nSuccessfully connected to WiFi"); - Serial.println("Local IP address: " + WiFi.localIP().toString()); - Serial.println("Rig name: " + String(RIG_IDENTIFIER)); - Serial.println(); + #if defined(SERIAL_PRINTING) + Serial.println("\n\nSuccessfully connected to WiFi"); + Serial.println("Local IP address: " + WiFi.localIP().toString()); + Serial.println("Rig name: " + String(RIG_IDENTIFIER)); + Serial.println(); + #endif + + #endif SelectNode(); } @@ -165,27 +254,51 @@ namespace { void SetupOTA() { // Prepare OTA handler ArduinoOTA.onStart([]() - { Serial.println("Start"); }); + { + #if defined(SERIAL_PRINTING) + Serial.println("Start"); + #endif + }); ArduinoOTA.onEnd([]() - { Serial.println("\nEnd"); }); + { + #if defined(SERIAL_PRINTING) + Serial.println("\nEnd"); + #endif + }); ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) - { Serial.printf("Progress: %u%%\r", (progress / (total / 100))); }); + { + #if defined(SERIAL_PRINTING) + Serial.printf("Progress: %u%%\r", (progress / (total / 100))); + #endif + }); ArduinoOTA.onError([](ota_error_t error) { - Serial.printf("Error[%u]: ", error); - if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed"); - else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed"); - else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed"); - else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed"); - else if (error == OTA_END_ERROR) Serial.println("End Failed"); }); + Serial.printf("Error[%u]: ", error); + #if defined(SERIAL_PRINTING) + if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed"); + else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed"); + else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed"); + else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed"); + else if (error == OTA_END_ERROR) Serial.println("End Failed"); + #endif + }); ArduinoOTA.setHostname(RIG_IDENTIFIER); // Give port a name ArduinoOTA.begin(); } void VerifyWifi() { + #ifdef USE_LAN + while ((!eth_connected) || (ETH.localIP() == IPAddress(0, 0, 0, 0))) { + #if defined(SERIAL_PRINTING) + Serial.println("Ethernet connection lost. Reconnect..." ); + #endif + SetupWifi(); + } + #else while (WiFi.status() != WL_CONNECTED || WiFi.localIP() == IPAddress(0, 0, 0, 0)) WiFi.reconnect(); + #endif } void handleSystemEvents(void) { @@ -196,9 +309,15 @@ namespace { #if defined(WEB_DASHBOARD) void dashboard() { - Serial.println("Handling HTTP client"); + #if defined(SERIAL_PRINTING) + Serial.println("Handling HTTP client"); + #endif String s = WEBSITE; - s.replace("@@IP_ADDR@@", WiFi.localIP().toString()); + #ifdef USE_LAN + s.replace("@@IP_ADDR@@", ETH.localIP().toString()); + #else + s.replace("@@IP_ADDR@@", WiFi.localIP().toString()); + #endif s.replace("@@HASHRATE@@", String(hashrate / 1000)); s.replace("@@DIFF@@", String(difficulty / 100)); @@ -253,8 +372,10 @@ void task2_func(void *) { void setup() { delay(500); - Serial.begin(500000); - Serial.println("\n\nDuino-Coin " + String(configuration->MINER_VER)); + #if defined(SERIAL_PRINTING) + Serial.begin(500000); + Serial.println("\n\nDuino-Coin " + String(configuration->MINER_VER)); + #endif pinMode(LED_BUILTIN, OUTPUT); assert(CORE == 1 || CORE == 2); @@ -262,28 +383,40 @@ void setup() { job[0] = new MiningJob(0, configuration); #if defined(USE_DHT) - Serial.println("Initializing DHT sensor (Duino IoT)"); + #if defined(SERIAL_PRINTING) + Serial.println("Initializing DHT sensor (Duino IoT)"); + #endif dht.begin(); - Serial.println("Test reading: " + String(dht.readHumidity()) + "% humidity"); - Serial.println("Test reading: temperature " + String(dht.readTemperature()) + "°C"); + #if defined(SERIAL_PRINTING) + Serial.println("Test reading: " + String(dht.readHumidity()) + "% humidity"); + Serial.println("Test reading: temperature " + String(dht.readTemperature()) + "°C"); + #endif #endif #if defined(USE_DS18B20) - Serial.println("Initializing DS18B20 sensor (Duino IoT)"); + #if defined(SERIAL_PRINTING) + Serial.println("Initializing DS18B20 sensor (Duino IoT)"); + #endif sensors.begin(); sensors.requestTemperatures(); - Serial.println("Test reading: " + String(sensors.getTempCByIndex(0)) + "°C"); + #if defined(SERIAL_PRINTING) + Serial.println("Test reading: " + String(sensors.getTempCByIndex(0)) + "°C"); + #endif #endif #if defined(USE_INTERNAL_SENSOR) - Serial.println("Initializing internal ESP32 temperature sensor (Duino IoT)"); + #if defined(SERIAL_PRINTING) + Serial.println("Initializing internal ESP32 temperature sensor (Duino IoT)"); + #endif temp_sensor_config_t temp_sensor = TSENS_CONFIG_DEFAULT(); temp_sensor.dac_offset = TSENS_DAC_L2; temp_sensor_set_config(temp_sensor); temp_sensor_start(); float result = 0; temp_sensor_read_celsius(&result); - Serial.println("Test reading: " + String(result) + "°C"); + #if defined(SERIAL_PRINTING) + Serial.println("Test reading: " + String(result) + "°C"); + #endif #endif SetupWifi(); @@ -291,11 +424,21 @@ void setup() { #if defined(WEB_DASHBOARD) if (!MDNS.begin(RIG_IDENTIFIER)) { - Serial.println("mDNS unavailable"); + #if defined(SERIAL_PRINTING) + Serial.println("mDNS unavailable"); + #endif } MDNS.addService("http", "tcp", 80); - Serial.println("Configured mDNS for dashboard on http://" + String(RIG_IDENTIFIER) - + ".local (or http://" + WiFi.localIP().toString() + ")"); + #if defined(SERIAL_PRINTING) + #ifdef USE_LAN + Serial.println("Configured mDNS for dashboard on http://" + String(RIG_IDENTIFIER) + + ".local (or http://" + ETH.localIP().toString() + ")"); + #else + Serial.println("Configured mDNS for dashboard on http://" + String(RIG_IDENTIFIER) + + ".local (or http://" + WiFi.localIP().toString() + ")"); + #endif + #endif + server.on("/", dashboard); server.begin(); #endif diff --git a/ESP_Code/MiningJob.h b/ESP_Code/MiningJob.h index 5c186c1f..9d488c7e 100644 --- a/ESP_Code/MiningJob.h +++ b/ESP_Code/MiningJob.h @@ -140,7 +140,7 @@ class MiningJob { #if defined(ESP8266) String MINER_BANNER = "Official ESP8266 Miner"; #elif defined(CONFIG_FREERTOS_UNICORE) - String MINER_BANNER = "OFficial ESP32-S2 Miner"; + String MINER_BANNER = "Official ESP32-S2 Miner"; #else String MINER_BANNER = "Official ESP32 Miner"; #endif @@ -182,21 +182,31 @@ class MiningJob { AutoRigName.toUpperCase(); config->RIG_IDENTIFIER = AutoRigName.c_str(); #endif - Serial.println("Core [" + String(core) + "] - Rig identifier: " - + config->RIG_IDENTIFIER); + #if defined(SERIAL_PRINTING) + Serial.println("Core [" + String(core) + "] - Rig identifier: " + + config->RIG_IDENTIFIER); + #endif } void connectToNode() { if (client.connected()) return; - Serial.println("Core [" + String(core) + "] - Connecting to a Duino-Coin node..."); - while (!client.connect(config->host.c_str(), config->port)); - + unsigned int stopWatch = millis(); + #if defined(SERIAL_PRINTING) + Serial.println("Core [" + String(core) + "] - Connecting to a Duino-Coin node..."); + #endif + while (!client.connect(config->host.c_str(), config->port)) { + if (millis()-stopWatch>100000) ESP.restart(); + } + waitForClientData(); - Serial.println("Core [" + String(core) + "] - Connected. Node reported version: " - + client_buffer); + #if defined(SERIAL_PRINTING) + Serial.println("Core [" + String(core) + "] - Connected. Node reported version: " + + client_buffer); + #endif blink(BLINK_CLIENT_CONNECT); + } void waitForClientData() { @@ -224,12 +234,14 @@ class MiningJob { waitForClientData(); - Serial.println("Core [" + String(core) + "] - " + - client_buffer + - " share #" + String(share_count) + - " (" + String(counter) + ")" + - " hashrate: " + String(hashrate / 1000, 2) + " kH/s (" + - String(elapsed_time_s) + "s)\n"); + #if defined(SERIAL_PRINTING) + Serial.println("Core [" + String(core) + "] - " + + client_buffer + + " share #" + String(share_count) + + " (" + String(counter) + ")" + + " hashrate: " + String(hashrate / 1000, 2) + " kH/s (" + + String(elapsed_time_s) + "s)\n"); + #endif } bool parse() { @@ -267,8 +279,10 @@ class MiningJob { #if defined(USE_DS18B20) sensors.requestTemperatures(); float temp = sensors.getTempCByIndex(0); - Serial.println("DS18B20 reading: " + String(temp) + "°C"); - + #if defined(SERIAL_PRINTING) + Serial.println("DS18B20 reading: " + String(temp) + "°C"); + #endif + client.print("JOB," + String(config->DUCO_USER) + SEP_TOKEN + config->START_DIFF + @@ -278,8 +292,10 @@ class MiningJob { #elif defined(USE_DHT) float temp = dht.readTemperature(); float hum = dht.readHumidity(); - Serial.println("DHT reading: " + String(temp) + "°C"); - Serial.println("DHT reading: " + String(hum) + "%"); + #if defined(SERIAL_PRINTING) + Serial.println("DHT reading: " + String(temp) + "°C"); + Serial.println("DHT reading: " + String(hum) + "%"); + #endif client.print("JOB," + String(config->DUCO_USER) + @@ -291,7 +307,9 @@ class MiningJob { #elif defined(USE_INTERNAL_SENSOR) float temp = 0; temp_sensor_read_celsius(&temp); - Serial.println("Internal temp sensor reading: " + String(temp) + "°C"); + #if defined(SERIAL_PRINTING) + Serial.println("Internal temp sensor reading: " + String(temp) + "°C"); + #endif client.print("JOB," + String(config->DUCO_USER) + @@ -308,15 +326,19 @@ class MiningJob { #endif waitForClientData(); - Serial.println("Core [" + String(core) + "] - Received job with size of " - + String(client_buffer.length()) - + " bytes " + client_buffer); + #if defined(SERIAL_PRINTING) + Serial.println("Core [" + String(core) + "] - Received job with size of " + + String(client_buffer.length()) + + " bytes " + client_buffer); + #endif parse(); - Serial.println("Core [" + String(core) + "] - Parsed job: " - + getLastBlockHash() + " " - + getExpectedHashStr() + " " - + String(getDifficulty())); + #if defined(SERIAL_PRINTING) + Serial.println("Core [" + String(core) + "] - Parsed job: " + + getLastBlockHash() + " " + + getExpectedHashStr() + " " + + String(getDifficulty())); + #endif } const String &getLastBlockHash() const { return last_block_hash; } diff --git a/ESP_Code/Settings.h b/ESP_Code/Settings.h index 859cf0bc..f58e8d20 100644 --- a/ESP_Code/Settings.h +++ b/ESP_Code/Settings.h @@ -7,19 +7,27 @@ extern const char DUCO_USER[] = "my_cool_username"; // Change the part in brackets to your mining key (if you have set it in the wallet) extern const char MINER_KEY[] = "mySecretPass"; +// Change the part in brackets if you want to set a custom miner name +// Use Auto to autogenerate, None for no custom identifier +extern const char RIG_IDENTIFIER[] = "None"; // Change the part in brackets to your WiFi name extern const char SSID[] = "SSID"; // Change the part in brackets to your WiFi password extern const char PASSWORD[] = "PASSW0RD"; -// Change the part in brackets if you want to set a custom miner name -// Use Auto to autogenerate, None for no custom identifier -extern const char RIG_IDENTIFIER[] = "None"; // Uncomment if you want to host the dashboard page (available on ESPs IP address) // #define WEB_DASHBOARD +// Uncomment if you want to use LAN8720. WLAN-credentials will be ignored using LAN +// Select correct Board in ArduinoIDE!!! Really! +// #define USE_LAN + // Comment out the line below if you wish to disable LED blinking #define LED_BLINKING + +// Comment out the line below if you wish to disable Serial printing +#define SERIAL_PRINTING + // -------------------------------------------------------------- // // ---------------------- IoT examples -------------------------- // @@ -54,7 +62,7 @@ extern const char RIG_IDENTIFIER[] = "None"; #define BLINK_SETUP_COMPLETE 2 #define BLINK_CLIENT_CONNECT 5 -#define SOFTWARE_VERSION "4.0" +#define SOFTWARE_VERSION "4.1" extern unsigned int hashrate = 0; extern unsigned int difficulty = 0; extern unsigned long share_count = 0; diff --git a/PC_Miner.py b/PC_Miner.py index 92bd2887..c7557fc1 100644 --- a/PC_Miner.py +++ b/PC_Miner.py @@ -1,12 +1,12 @@ #!/usr/bin/env python3 """ -Duino-Coin Official PC Miner 4.0 © MIT licensed +Duino-Coin Official PC Miner 4.1 © MIT licensed https://duinocoin.com https://github.com/revoxhere/duino-coin Duino-Coin Team & Community 2019-2024 """ -from time import time, sleep, strptime, ctime +from time import time, sleep, strptime, ctime, time_ns from hashlib import sha1 from socket import socket @@ -142,7 +142,7 @@ class Settings: """ ENCODING = "UTF8" SEPARATOR = "," - VER = 4.0 + VER = 4.1 DATA_DIR = "Duino-Coin PC Miner " + str(VER) TRANSLATIONS = ("https://raw.githubusercontent.com/" + "revoxhere/" @@ -346,18 +346,21 @@ def DUCOS1(last_h: str, exp_h: str, diff: int, eff: int): fasthash_supported = False if fasthash_supported: - time_start = time() + time_start = time_ns() hasher = libducohasher.DUCOHasher(bytes(last_h, encoding='ascii')) nonce = hasher.DUCOS1( bytes(bytearray.fromhex(exp_h)), diff, int(eff)) - time_elapsed = time() - time_start - hashrate = nonce / time_elapsed + time_elapsed = time_ns() - time_start + if time_elapsed > 0: + hashrate = 1e9 * nonce / time_elapsed + else: + return [nonce,0] return [nonce, hashrate] else: - time_start = time() + time_start = time_ns() base_hash = sha1(last_h.encode('ascii')) for nonce in range(100 * diff + 1): @@ -370,8 +373,11 @@ def DUCOS1(last_h: str, exp_h: str, diff: int, eff: int): sleep(eff / 100) if d_res == exp_h: - time_elapsed = time() - time_start - hashrate = nonce / time_elapsed + time_elapsed = time_ns() - time_start + if time_elapsed > 0: + hashrate = 1e9 * nonce / time_elapsed + else: + return [nonce,0] return [nonce, hashrate] @@ -886,8 +892,10 @@ def preload(): lang = "italian" elif locale.startswith("sk"): lang = "slovak" + if locale.startswith("zh_TW"): + lang = "chinese_Traditional" elif locale.startswith("zh"): - lang = "chinese_simplified" + lang = "chinese_simplified" elif locale.startswith("th"): lang = "thai" elif locale.startswith("ko"): diff --git a/README.md b/README.md index 07c9869c..ae14846c 100644 --- a/README.md +++ b/README.md @@ -220,7 +220,6 @@ Please note the DUCO/day column has been removed since version 4.0 changed the r * [Duino AVR Monitor](https://www.microsoft.com/store/apps/9NJ7HPFSR9V5) - GUI Windows App for monitoring AVR devices mining DUCO by niknak * [Duino-Coin Arduino library](https://github.com/ricaun/arduino-DuinoCoin) by ricaun * [DuinoCoinI2C](https://github.com/ricaun/DuinoCoinI2C) - Use ESP8266/ESP32 as a master for Arduinos by ricaun - * [Duino-Coin Mining Dashboard](https://lulaschkas.github.io/duco-mining-dashboard/) and troubleshooting helper by Lulaschkas * [duco-miners](https://github.com/dansinclair25/duco-miners) CLI mining dashboard made by dansinclair25 * [Duco-Coin Symbol Icon ttf](https://github.com/SandUhrGucker/Duco-Coin-Symbol-Icon-ttf-.h) by SandUhrGucker * [DUCO Monitor](https://siunus.github.io/duco-monitor/) account statistics website by siunus diff --git a/Resources/AVR_Miner_langs.json b/Resources/AVR_Miner_langs.json index e363d9fb..6b9103a1 100644 --- a/Resources/AVR_Miner_langs.json +++ b/Resources/AVR_Miner_langs.json @@ -81,7 +81,7 @@ "node_picker_unavailable": "Node picker doesn't seem to be responding properly - retrying in ", "node_picker_error": "Fatal error fetching server from the node picker - retrying in ", "connecting_node": " Retrieved mining node: ", - "new_version": "A new version is available, you want to update miner [Y/n] ? ", + "new_version": "A new version is available, do you want to update the miner [Y/n] ? ", "updating": "The miner is outdated. Updating....", "ask_mining_key": "Enter your mining key (only required if you activated this option in the webwallet - press enter to skip): ", "mining_key_required": "Mining key is required to mine on this account", @@ -275,7 +275,12 @@ "using_config": "Konfigurační soubor: ", "motd": "Serverová zpráva dne: ", "hashrate_test": "Test hashratu skončil s výsledkem ", - "hashrate_test_diff": ", systém přiřadil těžební obtížnost: " + "hashrate_test_diff": ", systém přiřadil těžební obtížnost: ", + "diff": "obtížnost", + "hashrate_total": "celkem", + "surpassed": "Gratulujeme k dosažení", + "surpassed_shares": "úspěšných operací!", + "miner_is_outdated": "Težební program je zastaralý" }, "korean": { "translation_autor": "hotmoist, roroxxn, hj-k66 ", @@ -646,8 +651,41 @@ "load_config_error": " Fehler beim Laden der Konfigurationsdatei (", "load_config_error_warning": "/Miner_config.cfg). Versuche sie zu entfernen und neu zu konfigurieren. Miner schließt in 10s", "connection_search": "Suche nach der schnellsten Verbindung zu dem Server", - "new_version": "A new version is available, you want to update miner [Y/n] ? ", - "updating": "The miner is outdated. Updating...." + "uptime_seconds": " Sekunden", + "uptime_minute": " Minute", + "uptime_minutes": " Minuten", + "uptime_hour": " Stunde", + "uptime_hours": " Stunden", + "periodic_mining_report": "Periodische Mining Bericht: ", + "report_period": "\n\t\t‖ Während den letzten ", + "report_time": " Sekunden", + "report_body1": "\n\t\t‖ Wurden ", + "report_body2": " Shares geschürft (", + "report_body3": " Shares/s)", + "report_body4": "\n\t\t‖ Mit einer Hashrate von ", + "report_body5": "\n\t\t‖ In dieser Zeitdauer, hast du ", + "report_body6": " Hashes gelöst", + "report_body7": "\n\t\t‖ Gefundene Blöcke: ", + "total_mining_time": "\n\t\t‖ Totale Betriebszeit des Miners: ", + "node_picker_unavailable": "Node Picker scheint nicht richtig zu reagieren - versuche erneut in ", + "node_picker_error": "Schwerer Fehler beim Abruefn des Servers vom Node Picker - versuche erneut in ", + "connecting_node": " Abgerufener Mining Knoten: ", + "new_version": "Eine neue Version ist verfügbar. Möchtest du den Miner aktualisieren [Y/n]? ", + "updating": "Der Miner ist veraltet. Aktualisiere....", + "ask_mining_key": "Gib deinen Miningschlüssel an (nur nötig, wenn du diese Option im Webwallet aktiviert hast - Drück die Eingabetaste um zu überspringen): ", + "mining_key_required": "Ein Miningschlüssel ist erforderlich um auf diesem Konto zu schürfen", + "invalid_mining_key": "Der angegebene Miningschlüssel ist inkorrekt!", + "incorrect_username": "Der angegebene Nutzername existiert nicht!", + "system_threads_notice": "Warnung: Du versucht mehr Threads zu verwenden, als du hast. \n\t\tDas wird zu nicht gewollten Nebeneffekten führen, wie z.B., dass das System nicht mehr reagiert. \n\t\tStarte in 10s", + "using_config": "Konfigurationsdatei: ", + "motd": "Server Nachricht des Tages: ", + "hashrate_test": "Hashrate Test endete mit ", + "hashrate_test_diff": ", zugeteilte Startschwierigkeit: ", + "diff": "diff.", + "hashrate_total": "Total", + "surpassed": "Glückwunsch zum Übertreffen von", + "surpassed_shares": "korrekten Shares!", + "miner_is_outdated": "Der Miner ist veraltet" }, "french": { "translation_autor": "Bilaboz", @@ -716,69 +754,69 @@ "updating": "The miner is outdated. Updating...." }, "slovak": { - "translation_autor": "JoyBed", - "sigint_detected": " Ukoncujem.", + "translation_autor": "JoyBed & MatusOllah", + "sigint_detected": " Ukončujem.", "goodbye": " Dovidenia!", - "greeting_morning": "Prajem prijemne rano", - "greeting_noon": "Prajem chutny obed", - "greeting_afternoon": "Prajem mierumilovne poobedie", - "greeting_evening": "Prajem pohodlny vecer", - "greeting_back": "Vitaj naspat", - "banner": "Oficialny Duino-Coin © AVR Miner", - "donation_level": "Uroven prispevku pre vyvojarov: ", + "greeting_morning": "Prajem príjemné ráno", + "greeting_noon": "Prajem chutný obed", + "greeting_afternoon": "Prajem mierumilovné poobedie", + "greeting_evening": "Prajem pohodlný večer", + "greeting_back": "Vitaj späť", + "banner": "Oficiálny Duino-Coin © AVR Miner", + "donation_level": "Úroveň príspevku pre vývojárov: ", "avr_on_port": "AVR doska(y) na porte(och): ", "algorithm": "Algoritmus: ", - "rig_identifier": "Rig identifikator: ", - "basic_config_tool": "\nDuino-Coin zakladne nastavenie\nEdit ", - "edit_config_file_warning": "/Miner_config.cfg subor neskor pre zmenu.", - "dont_have_account": "Nemas Duino-Coin ucet? Pouzi ", - "wallet": "Penazenka", + "rig_identifier": "Rig identifikátor: ", + "basic_config_tool": "\nDuino-Coin základne nastavenie\nEdit ", + "edit_config_file_warning": "/Miner_config.cfg súbor neskôr pre zmenu.", + "dont_have_account": "Nemáš Duino-Coin účet? Použi ", + "wallet": "Peňaženka", "register_warning": " na zaregistrovanie na serveri.\n", "ask_username": "Zadaj svoje Duino-Coin meno: ", - "ports_message": "Nastroj nasiel na nasledujucich portoch:", - "ports_notice": "Ked tu nevidite svoju dosku, uistite sa ze je spravne pripojena a program k nej ma pristup (admin/sudo prava).", - "ask_avrport": "Zapiste port svojej dosky (napr. COM1 (Windows) alebo /dev/ttyUSB1 (Unix/Linux)): ", - "ask_anotherport": "Chcete pridat dalsiu dosku? (y/N): ", - "ask_higherdiff": "Chcete pouzit vyssiu obtiaznost? (iba pre Arduino DUE dosku) (y/N): ", - "ask_rig_identifier": "Chcete priradit meno tomuto rigu? (y/N) ", + "ports_message": "Nástroj našiel na nasledujúcich portoch:", + "ports_notice": "Keď tu nevidíte svoju dosku, uistite sa že je správne pripojená a program k nej má pristup (admin/sudo práva).", + "ask_avrport": "Zapíšte port svojej dosky (napr. COM1 (Windows) alebo /dev/ttyUSB1 (Unix/Linux)): ", + "ask_anotherport": "Chcete pridať ďalšiu dosku? (y/N): ", + "ask_higherdiff": "Chcete použiť vyššiu obtiažnosť? (iba pre Arduino DUE dosku) (y/N): ", + "ask_rig_identifier": "Chcete priradiť meno tomuto rigu? (y/N) ", "ask_rig_name": "Zadajte meno rigu: ", - "ask_donation_level": "Zadajte uroven prispievania (0-5) (odporucane: 1), neznizi to vas zisk: ", - "config_saved": "Nastavenie ulozene! Spusta sa miner", - "free_network_warning": " Duino-Coin je uplne bez poplatkov a vzdy aj bude", - "donate_warning": "\nNeberieme ziadne poplatky z vasho miningu.\nNaozaj nam pomozete vasim stedrym prispevkom.\nNavstivte ", - "learn_more_donate": " aby ste zistili viac a aj ako nam mozete pomoct :)", - "starting_donation": "Zacina sa prispevkovy program", - "thanks_donation": " Dakujeme za vas stedry prispevok ❤️ Vas prispevok nam pomoze udrzat server v chode tak ako je teraz.", - "data_error": " Chyba stahovania dat z GitHubu! Odznova o 10s.", - "connected": " Pripojene", - "connected_server": " na hlavny Duino-Coin server (v", - "outdated_miner": " Miner je zastarany (v", + "ask_donation_level": "Zadajte úroveň prispievania (0-5) (odporúčane: 1), nezníži to vas zisk: ", + "config_saved": "Nastavenie uložené! Spúšťa sa miner", + "free_network_warning": " Duino-Coin je úplne bez poplatkov a vždy aj bude", + "donate_warning": "\nNeberieme žiadne poplatky z vášho miningu.\nNaozaj nám pomôžete vašim štedrým prispevkom.\nNavštívte ", + "learn_more_donate": " aby ste zistili viac a aj ako nám môžete pomôct :)", + "starting_donation": "Začína sa príspevkový program", + "thanks_donation": " Ďakujeme za vás štedrý príspevok ❤️ Váš príspevok nám pomôže udržať server v chode tak ako je teraz.", + "data_error": " Chyba sťahovania dát z GitHubu! Odznova o 10s.", + "connected": " Pripojené", + "connected_server": " na hlavný Duino-Coin server (v", + "outdated_miner": " Miner je zastaraný (v", "server_is_on_version": " server na v", - "update_warning": ", stiahnite si najnovsiu verziu z https://github.com/revoxhere/duino-coin/releases/", - "connecting_error": " Chyba pri pripajani na server. Odznova o 10s", + "update_warning": ", stiahnite si najnovšiu verziu z https://github.com/revoxhere/duino-coin/releases/", + "connecting_error": " Chyba pri pripájaní sa na server. Odznova o 10s", "duco_avr_miner": "Duino-Coin AVR Miner (v", - "accepted_shares": " prijate riesenia", - "accepted": " Prijate ", - "block_found": " Blok najdeny ", - "rejected": " Odmietnuty ", - "error_while_mining": " Chyba pocas miningu - pravdepodobne chyba pripojenia - restart za 5s.", + "accepted_shares": " prijaté riešenia", + "accepted": " Prijaté ", + "block_found": " Blok nájdený ", + "rejected": " Odmietnutý ", + "error_while_mining": " Chyba počas miningu - pravdepodobne chyba pripojenia - reštart za 5s.", "board_on_port": " AVR na porte ", - "board_is_connected": " je pripojena", - "board_connection_error": " AVR pripojenie chybne na porte ", - "board_connection_error2": ", skontrolujte ci je pripojene alebo nie.", - "mining_start": " AVR mining sa zacina na ", - "mining_algorithm": " pouzitim DUCO-S1A algoritmu (", + "board_is_connected": " je pripojená", + "board_connection_error": " AVR pripojenie chybné na porte ", + "board_connection_error2": ", skontrolujte či je pripojené alebo nie.", + "mining_start": " AVR mining sa začína na ", + "mining_algorithm": " použitím DUCO-S1A algoritmu (", "mining_avr_connection_error": " Chyba pripojenia k AVR! Odznova o 10s", - "mining_avr_not_responding": " Arduino dlho neodpoveda, posielam novu pracu ", - "internal_server_error": " Vnutorna chyba serveru.", + "mining_avr_not_responding": " Arduino dlho neodpovedá, posielam novú prácu ", + "internal_server_error": " Vnútorná chyba serveru.", "retrying": " Odznova o 10s", - "mining_user": " Uzivatel ", + "mining_user": " Uživateľ ", "mining_not_exist": " Neexistuje.", - "mining_not_exist_warning": " Skontrolujte ci mate spravne zadane meno. Skontrolujte konfiguracny subor. Odznova o 10s", - "load_config_error": " chyba nacitavania konfiguracneho suboru (", - "load_config_error_warning": "/Miner_config.cfg). Skuste ho odstranit a spustit odznova konfiguraciu. Ukoncenie o 10s", - "new_version": "A new version is available, you want to update miner [Y/n] ? ", - "updating": "The miner is outdated. Updating...." + "mining_not_exist_warning": " Skontrolujte či máte správne zadané meno. Skontrolujte konfiguračný súbor. Odznova o 10s", + "load_config_error": " chyba načítavania konfiguračného suboru (", + "load_config_error_warning": "/Miner_config.cfg). Skúste ho odstrániť a spustiť odznova konfiguráciu. Ukončenie o 10s", + "new_version": "K dispozícii je nová verzia, chcete aktualizovať miner [A/n] ? ", + "updating": "Miner je zastaraný. Aktualizujem...." }, "italian": { "translation_autor": "Il mastro Stefanuzzo (no spaces on GitHub)", diff --git a/Resources/CLI_Wallet_langs.json b/Resources/CLI_Wallet_langs.json index 27820c39..af3b4081 100644 --- a/Resources/CLI_Wallet_langs.json +++ b/Resources/CLI_Wallet_langs.json @@ -988,5 +988,95 @@ "donate_3": " (wrapperi osoite)", "donate_4": " (revox, DUCO:n pääkehittäjä)", "donate_5": " (wDUCO-kehittäjä)" + }, + "german": { + "translation_autor": "EinWildesPanda", + "cant_connect_to_server": "Verbindung zum Server fehlgeschlagen. Wahrscheinlich wird dieser gerade gewartet oder ist temporär nicht erreichbar.\nVersuche in 15 Sekunden nochmals.", + "cant_recieve_pool_ip_and_port": " Pooladresse und IP können nicht empfangen werden.\nSchliesse in 15 Sekunden.", + "server_message": "Server Nachricht: ", + "success": "Erfolg!", + "cancelled": "Abgebrochen...", + "duco_commands": " DUCO Befehle:", + "wrapper_commands": " Wrapper-bezogene Befehle:", + "base64_not_installed": "Base64 ist nicht installiert. Bitte installiere \"base64\" manuell.\nSchliesse in 15s.", + "tronpy_not_installed": "Tronpy ist nicht installiert. Bitte installiere es mittels: python3 -m pip install tronpy.\nWrapper ist deaktiviert, weil tronpy nicht installiert ist.", + "tronpy_not_installed_2": "Tronpy ist nicht installiert. Bitte installiere es mittels: python3 -m pip install tronpy.", + "cryptography_not_installed": "Cryptography ist nicht installiert. Bitte installiere es mittels: python3 -m pip install cryptography.\nSchliesse in 15s.", + "secrets_not_installed": "Secrets ist nicht installiert. Bitte installiere es mittels: python3 -m pip install secrets.\nSchliesse in 15s.", + "websocket_not_installed": "Websocket-client ist nicht installiert. Bitte installiere es mittels: python3 -m pip install websocket-client.\nSchliesse in 15s.", + "colorama_not_installed": "Colorama ist nicht installiert. Bitte installiere es mittels: python3 -m pip install colorama.\nSchliesse in 15s.", + "first_run": "Duino-Coin CLI Wallet Erstausführung\n", + "select_option": "Wähle eine Option", + "choice_input": " 1 - Login\n 2 - Registrieren\n 3 - Schliessen\n", + "choice_input_wrapper": "1 - Neuen Schlüssel generieren \n2 - Schlüssel importieren \n3 - Abbrechen\n", + "value_not_numeric": "Fehler, Wert muss numerisch sein", + "enter_username": "Gib deinen Nutzernamen ein: ", + "enter_email": "Gib deine E-Mail Adresse ein: ", + "enter_password": "Gib dein Passwort ein (aus Gründen des Datenschutzes nicht angezeigt): ", + "confirm_password": "Bestätige dein Passowrt (aus Gründen des Datenschutzes nicht angezeigt): ", + "enter_current_password": "Gib dein aktuelles Passwort ein: ", + "enter_new_password": "Gib ein neues Passwort ein: ", + "agree_requirments": "Durch die Registrierung akzeptierst du die Servicebedingungen und die Datenschutzbestimmungen, welche erhältlich sind unter ", + "register_success": "Erfolgreich ein neues Konto registriert", + "register_failed": "Neuer Nutzer konnte nicht regstriert werden. Grund: ", + "login_success": "Erfolgreiche Anmeldung", + "login_failed": "Anmeldung fehlgeschlagen. Grund: ", + "decrypt_private_key": "Passphrase um den persönlichen Schlüssel zu entschlüsseln: ", + "encrypt_private_key": "Gib deine Passphrase zur Verschlüsselung des persönlichen Schlüssels an: ", + "invalid_passphrase_wrapper": "Ungültige Passphrase, deaktiviere Wrapper für diese Sitzung", + "input_private_key": "Gib deinen eigenen persönlichen Schlüssen an: ", + "incorrect_key": "Ungültiger Schlüssel wurde angegeben", + "incorrect_value": "Ungültiger Wert wurde angegeben", + "cli_wallet_text": "\nDuino-Coin CLI Wallet", + "you_have": "Du hast ", + "which_is_about": "Das ist etwa ", + "duco_price": "DUCO Preis: ", + "pending_unwraps": "Ausstehende Unwraps ", + "tron_address": "Tron-Addresse für den Empfang: ", + "trx_balance": "TRX Saldo (nützlich für Gebühren): ", + "how_encrypt_private_key": "Wie möchtest du den persönlichen Schlüssel innerhalb der Konfigurationsdatei verschlüsseln?", + "encryption_choice": "1 - Verschlüsseln mittels DUCO-Passwort\n2 - Benutzerdefinierte Passphrase verwenden (sicherer)", + "amount_to_wrap": "Zu wrappenden Betrag angeben (Minimum ist 10): ", + "no_amount_numeric": "Nein, Anzahl sollte numerisch sein... Abbruch", + "enter_tron_address_or_local": "Gib eine Tron-Adresse an oder leer lassen um lokales Wallet auszuwählen: ", + "error_min_10_duco": "Fehler, Mindestmenge ist 10 DUCO", + "error_unsufficient_balance": "Fehler, unzureichender Kontostand", + "error_wrong_passphrase": "Wrapper deaktiviert, ein falsches Passwort wurde angegeben", + "error_configure_wrapperconf": "Wrapper deaktiviert, konfiguriere es mittels `wrapperconf`", + "error_not_enough_energy_or_trx": "Fehlgeschlagen, du solltest genug Energie oder TRX haben", + "enter_amount_unwrap": "Gib einen Betrag zum Unwrappen an: ", + "initiating_unwrap": "Initialisiere Unwrap...\nTXid :", + "error_initiating_unwrap": "Beim Initalisieren des Unwraps ist ein Fehler aufgetregen, Abbruch", + "amount_over_pending_values": "Der Betrag übersteigt die ausstehenden Werte, verwende ausstehende Werte um Transaktionsgebühren zu sparen", + "transaction_send_txid": "Transaktion gesendet, txid :", + "finished_unwrapping": "Unwrapping fertiggestellt", + "confirm_export_private_key": "Gib YES ein, um den Export des persönlichen Schlüssels zu bestätigen : ", + "private_key": "Persönlicher Schlüssel: ", + "cancelled_invalid_confirmation": "Abgebrochen, ungültige Bestätigung", + "help_list_command": "Gib `help` ein, um verfügbare Befehle anzuzeigen", + "duco_console": "DUCO Konsole ᕲ ", + "enter_recipients_name": "Gib den Nutzernamen des Empfängers an: ", + "enter_amount_transfer": "Gib die zu transferrierende Menge an: ", + "enter_tron_recipients_name": "Gib die Tron-Adresse des Empfängers ein: ", + "enter_tron_amount_transfer": "Gib die zu transferrierende Menge an: ", + "amount_numeric": "Menge sollte numerisch sein... Abbruch", + "tron_transaction_submitted": "Transaktion an TRON Netzwerk übermittelt\nTXID:", + "tron_successful_transaction": "Erfolgreiche Transaktion", + "tron_error_transaction": "Fehler beim Bestätigen der Transaktion", + "see_you_soon": " Auf Wiedersehen!", + "sigint_detected": "\nSIGINT erkannt - Schliesse.", + "about_1": "Duino-Coin CLI Wallet ist von der Duino-Coin Gemeinschaft mit <3 gemacht", + "about_2": "Dies ist die Version ", + "about_3": "Und wird verteilt unter der MIT Lizenz", + "about_4": "Server Version: ", + "about_5": "Server verwendet Version ", + "about_6": ", aber der Klient ist auf Version ", + "about_7": ", du solltest in Betracht ziehen, die neueste Version herunterzuladen", + "about_8": "Klient ist auf dem neuesten Stand", + "donate_1": "Es steht dir frei, für die Unterstützung der Entwicklung von DUCO und wDUCO zu spenden (für das Wrappen/Unwrappen fallen Gebühren für die Wartung an)", + "donate_2": "TRON und Tokens: ", + "donate_3": " (Wrapper Adresse)", + "donate_4": " (revox, DUCO Hauptentwickler)", + "donate_5": " (wDUCO Entwickler)" } } diff --git a/Resources/PC_Miner_langs.json b/Resources/PC_Miner_langs.json index ecd73fcb..da89d32e 100644 --- a/Resources/PC_Miner_langs.json +++ b/Resources/PC_Miner_langs.json @@ -90,7 +90,7 @@ "node_picker_unavailable": "Node picker doesn't seem to be responding properly - retrying in ", "node_picker_error": "Fatal error fetching server from the node picker - retrying in ", "connecting_node": " Retrieved mining node: ", - "new_version": "A new version is available, you want to update miner (Y/n) ? ", + "new_version": "A new version is available, do you want to update the miner (Y/n) ? ", "updating": "The miner is outdated. Updating....", "ask_mining_key": "Enter your mining key (only required if you activated this option in the webwallet - press enter to skip): ", "mining_key_required": "Mining key is required to mine on this account", @@ -390,7 +390,7 @@ "invalid_mining_key": "The mining key you provided is invalid!" }, "slovak": { - "translation_autor": "backo", + "translation_autor": "backo & MatusOllah", "translation": "Slovenský preklad: ", "sigint_detected": " SIGINT detekovaný – ukončuje sa.", "goodbye": " Dovidenia!", @@ -449,7 +449,7 @@ "block_found": " Blok nájdený ", "internal_server_error": " Interná chyba servera.", "retrying": " opätovný pokus o 10s", - "rejected": " Odmietnuty ", + "rejected": " Odmietnutý ", "error_while_mining": " Chyba pri ťažbe - s najväčšou pravdepodobnosťou chyba pripojenia - reštartovanie o 5 s.", "mining_user": " Použivateľ ", "mining_not_exist": " neexistuje.", @@ -474,11 +474,11 @@ "report_body5": "\n\t\t‖ V tomto časovom období ste vyriešili ", "report_body6": " hashes", "total_mining_time": "\n\t\t‖ Celková doba prevádzky: ", - "new_version": "A new version is available, you want to update miner [Y/n] ? ", - "updating": "The miner is outdated. Updating....", - "ask_mining_key": "Enter your mining key (only required if you activated this option in the webwallet - press enter to skip): ", - "mining_key_required": "Mining key is required to mine on this account", - "invalid_mining_key": "The mining key you provided is invalid!" + "new_version": "K dispozícii je nová verzia, chcete aktualizovať miner [A/n] ? ", + "updating": "Miner je zastaraný. Aktualizujem....", + "ask_mining_key": "Zadajte svoj ťažobný kľúč (povinné iba vtedy, ak ste túto možnosť aktivovali vo webovej peňaženke - preskočíte stlačením Enter): ", + "mining_key_required": "Na ťažbu na tomto účte je potrebný ťažobný kľúč", + "invalid_mining_key": "Zadaný ťažobný kľúč je neplatný!" }, "italian": { "translation_autor": "Il mastro Stefanuzzo", @@ -1747,7 +1747,22 @@ "updating": "Těžební program je zastaralý. Aktualizuji....", "ask_mining_key": "Zadej svůj těžební klíč (požadováno v případech, kdy tato možnost byla nastavena ve webové peněžence - stiskni enter pro přeskočení): ", "mining_key_required": "Těžební klíč je nutný pro těžbu na tomto účtu", - "invalid_mining_key": "Zadaný těžební klíč je neplatný!" + "invalid_mining_key": "Zadaný těžební klíč je neplatný!", + "running_on_rpi": "Vypadá to, že tento těžební program jede na Raspberry Pi.", + "running_on_rpi2": "Signalizační LEDky na počítači budou indikovat probíhající těžbu", + "discord_launch_error": "Chyba při otevírání Discord RPC vlákna:", + "discord_update_error": "Chyba při aktualizaci Discord RPC statistik:", + "key_retry": "Chceš to zkusit znovu? (Y/n): ", + "incorrect_username": "Zadané uživatelské jméno neexistuje!", + "system_threads_notice": "Varování: Pokoušíš se využít více jader, než má tvůj počítač. \n\t\tToto může vést k nepředvídatelným vedlejším účinkům a systém se může zaseknout.\n\t\tZačínám za 10s", + "using_config": "Konfigurační soubor: ", + "motd": "Serverová zpráva dne: ", + "hashrate_total": "celkem", + "diff": "obtížnost", + "iot_on_rpi": "Duino IoT je zapnuté. Těžební program bude posílat teplotu procesoru tvého Raspberry Pi do webové peněženky.", + "iot_on_rpi2": "Testuji čtení senzorů:", + "surpassed": "Gratulujeme k dosažení", + "surpassed_shares": "úspěšných operací!" }, "japanese": { "translation_autor": "Ikko Ashimine",