aboutsummaryrefslogtreecommitdiff
path: root/po/fr
Commit message (Collapse)AuthorAge
* Translated using Weblate (French)waxtatect2022-01-30
| | | | Currently translated at 100.0% (1416 of 1416 strings)
* Update translationsupdatepo.sh2022-01-25
|
* Translated using Weblate (French)AFCMS2022-01-25
| | | | Currently translated at 100.0% (1415 of 1415 strings)
* Translated using Weblate (French)waxtatect2022-01-25
| | | | Currently translated at 99.9% (1414 of 1415 strings)
* Translated using Weblate (French)AFCMS2022-01-25
| | | | Currently translated at 100.0% (1415 of 1415 strings)
* Translated using Weblate (French)waxtatect2022-01-25
| | | | Currently translated at 100.0% (1415 of 1415 strings)
* Update translation filesupdatepo.sh2021-11-27
|
* Translated using Weblate (French)waxtatect2021-11-27
| | | | Currently translated at 94.9% (1325 of 1396 strings)
* Update translation filesupdatepo.sh2021-06-16
|
* Translated using Weblate (French)waxtatect2021-06-16
| | | | Currently translated at 100.0% (1356 of 1356 strings)
* Translated using Weblate (French)Brian Gaucher2021-06-16
| | | | Currently translated at 100.0% (1356 of 1356 strings)
* Translated using Weblate (French)waxtatect2021-06-16
| | | | Currently translated at 100.0% (1356 of 1356 strings)
* Translated using Weblate (French)François Delpierre2021-06-16
| | | | Currently translated at 100.0% (1356 of 1356 strings)
* Translated using Weblate (French)waxtatect2021-06-16
| | | | Currently translated at 100.0% (1356 of 1356 strings)
* Translated using Weblate (French)ItsWidee2021-06-16
| | | | Currently translated at 98.0% (1330 of 1356 strings)
* Translated using Weblate (French)François Delpierre2021-06-16
| | | | Currently translated at 96.6% (1311 of 1356 strings)
* Translated using Weblate (French)ItsWidee2021-06-16
| | | | Currently translated at 96.5% (1309 of 1356 strings)
* Update translation filesupdatepo.sh2021-02-23
|
* Translated using Weblate (French)cafou2021-02-23
| | | | Currently translated at 96.7% (1309 of 1353 strings)
* Update translation filesupdatepo.sh2021-01-30
|
* Translated using Weblate (French)William Desportes2021-01-30
| | | | Currently translated at 100.0% (1350 of 1350 strings)
* Translated using Weblate (French)pitchum2021-01-30
| | | | Currently translated at 100.0% (1350 of 1350 strings)
* Translated using Weblate (French)Nathan2021-01-30
| | | | Currently translated at 100.0% (1350 of 1350 strings)
* Translated using Weblate (French)Olivier Dragon2021-01-30
| | | | Currently translated at 99.9% (1349 of 1350 strings)
* Translated using Weblate (French)Brian Gaucher2021-01-30
| | | | Currently translated at 99.9% (1349 of 1350 strings)
* Translated using Weblate (French)Olivier Dragon2021-01-30
| | | | Currently translated at 99.9% (1349 of 1350 strings)
* Translated using Weblate (French)Brian Gaucher2021-01-30
| | | | Currently translated at 99.9% (1349 of 1350 strings)
* Translated using Weblate (French)florian deschenaux2021-01-30
| | | | Currently translated at 99.0% (1337 of 1350 strings)
* Translated using Weblate (French)J. Lavoie2021-01-30
| | | | Currently translated at 98.9% (1336 of 1350 strings)
* Translated using Weblate (French)Estébastien Robespi2020-07-08
| | | | Currently translated at 98.9% (1336 of 1350 strings)
* Update translation filesupdatepo.sh2020-06-13
|
* Translated using Weblate (French)NicHan2020-06-13
| | | | Currently translated at 96.7% (1246 of 1288 strings)
* Translated using Weblate (French)Jeannette L2020-06-13
| | | | Currently translated at 96.6% (1245 of 1288 strings)
* Translated using Weblate (French)William Desportes2020-06-13
| | | | Currently translated at 96.6% (1245 of 1288 strings)
* Update translation filesupdatepo.sh2020-04-03
|
* Translated using Weblate (French)Allan Nordhøy2020-04-03
| | | | Currently translated at 96.0% (1237 of 1288 strings)
* Translated using Weblate (French)Lucas Burlingham2020-04-03
| | | | Currently translated at 93.5% (1205 of 1288 strings)
* Translated using Weblate (French)Hugo Locurcio2020-04-03
| | | | Currently translated at 92.3% (1189 of 1288 strings)
* Update translation sourcesrubenwardy2020-01-24
|
* Translated using Weblate (French)Julien Maulny2020-01-24
| | | | Currently translated at 97.0% (1236 of 1274 strings)
* Update translation stringsupdatepo.sh2019-10-12
|
* Update from Weblate (hacky)Translators2019-10-12
|
* Update translation stringsupdatepo.sh2019-09-09
|
* Update from WeblateTranslators2019-09-09
|
* Run updatepo.shTranslations2019-02-24
|
* Update minetest.conf.example, settings strings and locale files (#8230)Wuzzy2019-02-14
|
* Run updatepo.shTranslation2019-02-14
|
* Update translationsTranslations2019-02-14
|
* Update translationsTranslations2019-02-02
|
* Cleanup translation filesLoïc Blot2019-01-28
| | | | These were broken on the previous commits
s="hl opt">, "%s", line.c_str()); } }; AndroidSystemLogOutput g_android_log_output; #endif /////////////////////////////////////////////////////////////////////////////// //// //// Logger //// LogLevel Logger::stringToLevel(const std::string &name) { if (name == "none") return LL_NONE; else if (name == "error") return LL_ERROR; else if (name == "warning") return LL_WARNING; else if (name == "action") return LL_ACTION; else if (name == "info") return LL_INFO; else if (name == "verbose") return LL_VERBOSE; else return LL_MAX; } void Logger::addOutput(ILogOutput *out) { addOutputMaxLevel(out, (LogLevel)(LL_MAX - 1)); } void Logger::addOutput(ILogOutput *out, LogLevel lev) { m_outputs[lev].push_back(out); } void Logger::addOutputMasked(ILogOutput *out, LogLevelMask mask) { for (size_t i = 0; i < LL_MAX; i++) { if (mask & LOGLEVEL_TO_MASKLEVEL(i)) m_outputs[i].push_back(out); } } void Logger::addOutputMaxLevel(ILogOutput *out, LogLevel lev) { assert(lev < LL_MAX); for (size_t i = 0; i <= lev; i++) m_outputs[i].push_back(out); } LogLevelMask Logger::removeOutput(ILogOutput *out) { LogLevelMask ret_mask = 0; for (size_t i = 0; i < LL_MAX; i++) { std::vector<ILogOutput *>::iterator it; it = std::find(m_outputs[i].begin(), m_outputs[i].end(), out); if (it != m_outputs[i].end()) { ret_mask |= LOGLEVEL_TO_MASKLEVEL(i); m_outputs[i].erase(it); } } return ret_mask; } void Logger::setLevelSilenced(LogLevel lev, bool silenced) { m_silenced_levels[lev] = silenced; } void Logger::registerThread(const std::string &name) { std::thread::id id = std::this_thread::get_id(); MutexAutoLock lock(m_mutex); m_thread_names[id] = name; } void Logger::deregisterThread() { std::thread::id id = std::this_thread::get_id(); MutexAutoLock lock(m_mutex); m_thread_names.erase(id); } const std::string Logger::getLevelLabel(LogLevel lev) { static const std::string names[] = { "", "ERROR", "WARNING", "ACTION", "INFO", "VERBOSE", }; assert(lev < LL_MAX && lev >= 0); STATIC_ASSERT(ARRLEN(names) == LL_MAX, mismatch_between_loglevel_names_and_enum); return names[lev]; } LogColor Logger::color_mode = LOG_COLOR_AUTO; const std::string Logger::getThreadName() { std::map<std::thread::id, std::string>::const_iterator it; std::thread::id id = std::this_thread::get_id(); it = m_thread_names.find(id); if (it != m_thread_names.end()) return it->second; std::ostringstream os; os << "#0x" << std::hex << id; return os.str(); } void Logger::log(LogLevel lev, const std::string &text) { if (m_silenced_levels[lev]) return; const std::string thread_name = getThreadName(); const std::string label = getLevelLabel(lev); const std::string timestamp = getTimestamp(); std::ostringstream os(std::ios_base::binary); os << timestamp << ": " << label << "[" << thread_name << "]: " << text; logToOutputs(lev, os.str(), timestamp, thread_name, text); } void Logger::logRaw(LogLevel lev, const std::string &text) { if (m_silenced_levels[lev]) return; logToOutputsRaw(lev, text); } void Logger::logToOutputsRaw(LogLevel lev, const std::string &line) { MutexAutoLock lock(m_mutex); for (size_t i = 0; i != m_outputs[lev].size(); i++) m_outputs[lev][i]->logRaw(lev, line); } void Logger::logToOutputs(LogLevel lev, const std::string &combined, const std::string &time, const std::string &thread_name, const std::string &payload_text) { MutexAutoLock lock(m_mutex); for (size_t i = 0; i != m_outputs[lev].size(); i++) m_outputs[lev][i]->log(lev, combined, time, thread_name, payload_text); } //// //// *LogOutput methods //// void FileLogOutput::setFile(const std::string &filename, s64 file_size_max) { // Only move debug.txt if there is a valid maximum file size bool is_too_large = false; if (file_size_max > 0) { std::ifstream ifile(filename, std::ios::binary | std::ios::ate); is_too_large = ifile.tellg() > file_size_max; ifile.close(); } if (is_too_large) { std::string filename_secondary = filename + ".1"; actionstream << "The log file grew too big; it is moved to " << filename_secondary << std::endl; remove(filename_secondary.c_str()); rename(filename.c_str(), filename_secondary.c_str()); } m_stream.open(filename, std::ios::app | std::ios::ate); if (!m_stream.good()) throw FileNotGoodException("Failed to open log file " + filename + ": " + strerror(errno)); m_stream << "\n\n" "-------------" << std::endl << " Separator" << std::endl << "-------------\n" << std::endl; } void StreamLogOutput::logRaw(LogLevel lev, const std::string &line) { bool colored_message = (Logger::color_mode == LOG_COLOR_ALWAYS) || (Logger::color_mode == LOG_COLOR_AUTO && is_tty); if (colored_message) { switch (lev) { case LL_ERROR: // error is red m_stream << "\033[91m"; break; case LL_WARNING: // warning is yellow m_stream << "\033[93m"; break; case LL_INFO: // info is a bit dark m_stream << "\033[37m"; break; case LL_VERBOSE: // verbose is darker than info m_stream << "\033[2m"; break; default: // action is white colored_message = false; } } m_stream << line << std::endl; if (colored_message) { // reset to white color m_stream << "\033[0m"; } } void LogOutputBuffer::updateLogLevel() { const std::string &conf_loglev = g_settings->get("chat_log_level"); LogLevel log_level = Logger::stringToLevel(conf_loglev); if (log_level == LL_MAX) { warningstream << "Supplied unrecognized chat_log_level; " "showing none." << std::endl; log_level = LL_NONE; } m_logger.removeOutput(this); m_logger.addOutputMaxLevel(this, log_level); } void LogOutputBuffer::logRaw(LogLevel lev, const std::string &line) { std::string color; if (!g_settings->getBool("disable_escape_sequences")) { switch (lev) { case LL_ERROR: // red color = "\x1b(c@#F00)"; break; case LL_WARNING: // yellow color = "\x1b(c@#EE0)"; break; case LL_INFO: // grey color = "\x1b(c@#BBB)"; break; case LL_VERBOSE: // dark grey color = "\x1b(c@#888)"; break; default: break; } } m_buffer.push(color.append(line)); } //// //// *Buffer methods //// int StringBuffer::overflow(int c) { push_back(c); return c; } std::streamsize StringBuffer::xsputn(const char *s, std::streamsize n) { for (int i = 0; i < n; ++i) push_back(s[i]); return n; } void StringBuffer::push_back(char c) { if (c == '\n' || c == '\r') { if (buffer_index) flush(std::string(buffer, buffer_index)); buffer_index = 0; } else { buffer[buffer_index++] = c; if (buffer_index >= BUFFER_LENGTH) { flush(std::string(buffer, buffer_index)); buffer_index = 0; } } } void LogBuffer::flush(const std::string &buffer) { logger.log(level, buffer); } void RawLogBuffer::flush(const std::string &buffer) { g_logger.logRaw(LL_NONE, buffer); }