aboutsummaryrefslogtreecommitdiff
path: root/po/id
Commit message (Collapse)AuthorAge
* Run updatepo.shest312016-08-30
|
* Run updatepo.shest312016-07-12
|
* Translated using Weblate (Indonesian)Muhammad Rifqi Priyo Susanto2016-07-12
| | | | Currently translated at 55.8% (495 of 887 strings)
* Run updatepo.shest312016-05-05
|
* Translated using Weblate (Indonesian)Muhammad Rifqi Priyo Susanto2016-05-01
| | | | | | Currently translated at 57.4% (497 of 865 strings) This is a merger of three commits.
* Translated using Weblate (Indonesian)Muhammad Rifqi Priyo Susanto2016-03-25
| | | | Currently translated at 47.9% (415 of 865 strings)
* Update po files, minetest.conf.example and settings_translation_file.cppest312016-02-27
|
* Translated using Weblate (Indonesian)Muhammad Rifqi Priyo Susanto2016-02-27
| | | | Currently translated at 42.4% (334 of 787 strings)
* Run util/updatepo.shest312015-11-08
|
* Translated using Weblate (Indonesian)PilzAdam2015-11-08
| | | | Currently translated at 40.2% (303 of 753 strings)
* Translated using Weblate (Indonesian)Muhammad Rifqi Priyo Susanto2015-11-08
| | | | Currently translated at 40.2% (303 of 753 strings)
* Run updatepo.shest312015-10-24
|
* Run updatepo.shest312015-09-12
| | | | | | After this, it should hopefully not record line numbers anymore, so the diffs of updatepo.sh runs are smaller. Well, this is theory, lets see how it will turn out to be in practice.
* Translated using Weblate (Indonesian)Muhammad Rifqi Priyo Susanto2015-09-12
| | | | | | Currently translated at 98.1% (265 of 270 strings) Penerjemahan
* Translated using Weblate (Indonesian)Muhammad Rifqi Priyo Susanto2015-09-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently translated at 97.7% (264 of 270 strings) This is a combination of 9 consecutive commits by the same author. Their messages in chronological order are: Translated using Weblate (Indonesian) Currently translated at 79.2% (214 of 270 strings) Translated using Weblate (Indonesian) Currently translated at 80.0% (216 of 270 strings) Ini merupakan istilah dan tidak perlu diterjemahkan Translated using Weblate (Indonesian) Currently translated at 89.6% (242 of 270 strings) Penerjemahan Translated using Weblate (Indonesian) Currently translated at 94.8% (256 of 270 strings) Penerjemahan Translated using Weblate (Indonesian) Currently translated at 95.9% (259 of 270 strings) Mencari persamaan makna Translated using Weblate (Indonesian) Currently translated at 96.2% (260 of 270 strings) Penerjemahan Translated using Weblate (Indonesian) Currently translated at 96.6% (261 of 270 strings) Mencari persamaan makna Translated using Weblate (Indonesian) Currently translated at 97.0% (262 of 270 strings) Penerjemahan Translated using Weblate (Indonesian) Currently translated at 97.7% (264 of 270 strings) Istilah tidak diterjemahkan
* Run updatepo.shest312015-07-17
|
* Update Indonesian LanguageSmallJoker2015-03-12
|
* Revert "Update Russian translation"Kahrl2014-12-13
| | | | | | | | This reverts commit e4e4324a30d6bcac5cc06c74e955e4941b14bd38. Conflicts: po/minetest.pot po/*/minetest.po
* Update po filesShadowNinja2014-12-12
|
* Fix indonesian language errorsSmallJoker2014-11-18
| | | | Errors found by @Sokomine.
* Update Indonesian Languagesrifqi2014-11-18
| | | | Signed-off-by: Craig Robbins <kde.psych@gmail.com>
* Add Indonesian Languagesrifqi2014-10-22
tch()); args.setFloat("yaw", player->getPlayerSAO()->getRotation().Y); args.setU16("breath", player->getPlayerSAO()->getBreath()); std::string extended_attrs; player->serializeExtraAttributes(extended_attrs); args.set("extended_attributes", extended_attrs); args.writeLines(os); os << "PlayerArgsEnd\n"; player->inventory.serialize(os); } void PlayerDatabaseFiles::savePlayer(RemotePlayer *player) { fs::CreateDir(m_savedir); std::string savedir = m_savedir + DIR_DELIM; std::string path = savedir + player->getName(); bool path_found = false; RemotePlayer testplayer("", NULL); for (u32 i = 0; i < PLAYER_FILE_ALTERNATE_TRIES && !path_found; i++) { if (!fs::PathExists(path)) { path_found = true; continue; } // Open and deserialize file to check player name std::ifstream is(path.c_str(), std::ios_base::binary); if (!is.good()) { errorstream << "Failed to open " << path << std::endl; return; } testplayer.deSerialize(is, path, NULL); is.close(); if (strcmp(testplayer.getName(), player->getName()) == 0) { path_found = true; continue; } path = savedir + player->getName() + itos(i); } if (!path_found) { errorstream << "Didn't find free file for player " << player->getName() << std::endl; return; } // Open and serialize file std::ostringstream ss(std::ios_base::binary); serialize(ss, player); if (!fs::safeWriteToFile(path, ss.str())) { infostream << "Failed to write " << path << std::endl; } player->onSuccessfulSave(); } bool PlayerDatabaseFiles::removePlayer(const std::string &name) { std::string players_path = m_savedir + DIR_DELIM; std::string path = players_path + name; RemotePlayer temp_player("", NULL); for (u32 i = 0; i < PLAYER_FILE_ALTERNATE_TRIES; i++) { // Open file and deserialize std::ifstream is(path.c_str(), std::ios_base::binary); if (!is.good()) continue; temp_player.deSerialize(is, path, NULL); is.close(); if (temp_player.getName() == name) { fs::DeleteSingleFileOrEmptyDirectory(path); return true; } path = players_path + name + itos(i); } return false; } bool PlayerDatabaseFiles::loadPlayer(RemotePlayer *player, PlayerSAO *sao) { std::string players_path = m_savedir + DIR_DELIM; std::string path = players_path + player->getName(); const std::string player_to_load = player->getName(); for (u32 i = 0; i < PLAYER_FILE_ALTERNATE_TRIES; i++) { // Open file and deserialize std::ifstream is(path.c_str(), std::ios_base::binary); if (!is.good()) continue; player->deSerialize(is, path, sao); is.close(); if (player->getName() == player_to_load) return true; path = players_path + player_to_load + itos(i); } infostream << "Player file for player " << player_to_load << " not found" << std::endl; return false; } void PlayerDatabaseFiles::listPlayers(std::vector<std::string> &res) { std::vector<fs::DirListNode> files = fs::GetDirListing(m_savedir); // list files into players directory for (std::vector<fs::DirListNode>::const_iterator it = files.begin(); it != files.end(); ++it) { // Ignore directories if (it->dir) continue; const std::string &filename = it->name; std::string full_path = m_savedir + DIR_DELIM + filename; std::ifstream is(full_path.c_str(), std::ios_base::binary); if (!is.good()) continue; RemotePlayer player(filename.c_str(), NULL); // Null env & dummy peer_id PlayerSAO playerSAO(NULL, &player, 15789, false); player.deSerialize(is, "", &playerSAO); is.close(); res.emplace_back(player.getName()); } } AuthDatabaseFiles::AuthDatabaseFiles(const std::string &savedir) : m_savedir(savedir) { readAuthFile(); } bool AuthDatabaseFiles::getAuth(const std::string &name, AuthEntry &res) { const auto res_i = m_auth_list.find(name); if (res_i == m_auth_list.end()) { return false; } res = res_i->second; return true; } bool AuthDatabaseFiles::saveAuth(const AuthEntry &authEntry) { m_auth_list[authEntry.name] = authEntry; // save entire file return writeAuthFile(); } bool AuthDatabaseFiles::createAuth(AuthEntry &authEntry) { m_auth_list[authEntry.name] = authEntry; // save entire file return writeAuthFile(); } bool AuthDatabaseFiles::deleteAuth(const std::string &name) { if (!m_auth_list.erase(name)) { // did not delete anything -> hadn't existed return false; } return writeAuthFile(); } void AuthDatabaseFiles::listNames(std::vector<std::string> &res) { res.clear(); res.reserve(m_auth_list.size()); for (const auto &res_pair : m_auth_list) { res.push_back(res_pair.first); } } void AuthDatabaseFiles::reload() { readAuthFile(); } bool AuthDatabaseFiles::readAuthFile() { std::string path = m_savedir + DIR_DELIM + "auth.txt"; std::ifstream file(path, std::ios::binary); if (!file.good()) { return false; } m_auth_list.clear(); while (file.good()) { std::string line; std::getline(file, line); std::vector<std::string> parts = str_split(line, ':'); if (parts.size() < 3) // also: empty line at end continue; const std::string &name = parts[0]; const std::string &password = parts[1]; std::vector<std::string> privileges = str_split(parts[2], ','); s64 last_login = parts.size() > 3 ? atol(parts[3].c_str()) : 0; m_auth_list[name] = { 1, name, password, privileges, last_login, }; } return true; } bool AuthDatabaseFiles::writeAuthFile() { std::string path = m_savedir + DIR_DELIM + "auth.txt"; std::ostringstream output(std::ios_base::binary); for (const auto &auth_i : m_auth_list) { const AuthEntry &authEntry = auth_i.second; output << authEntry.name << ":" << authEntry.password << ":"; output << str_join(authEntry.privileges, ","); output << ":" << authEntry.last_login; output << std::endl; } if (!fs::safeWriteToFile(path, output.str())) { infostream << "Failed to write " << path << std::endl; return false; } return true; }