diff --git a/data/campaigns/Eastern_Invasion/lua/bandits.lua b/data/campaigns/Eastern_Invasion/lua/bandits.lua index d745d8fd90a..e6a831e4249 100644 --- a/data/campaigns/Eastern_Invasion/lua/bandits.lua +++ b/data/campaigns/Eastern_Invasion/lua/bandits.lua @@ -81,7 +81,7 @@ function wml_actions.bandit_village_capture(cfg) vars.villages_visited = visited + 1 wesnoth.game_events.fire("addogin_advice", x, y, unit); - wml.fire("message" , { x = x , y = y , message = _"They're here!"}) + wml.fire("message" , { x = x , y = y , message = _"They’re here!"}) bandits_found(x,y) return diff --git a/data/campaigns/World_Conquest/lua/campaign/enemy_themed.lua b/data/campaigns/World_Conquest/lua/campaign/enemy_themed.lua index 5a66d511c2c..663a85cf5c3 100644 --- a/data/campaigns/World_Conquest/lua/campaign/enemy_themed.lua +++ b/data/campaigns/World_Conquest/lua/campaign/enemy_themed.lua @@ -2,7 +2,7 @@ local _ = wesnoth.textdomain 'wesnoth-wc' local on_event = wesnoth.require("on_event") local strings = { - enemy_pet = _ "$name|'s pet" + enemy_pet = _ "$name|’s pet" } -- in the later scenarios there is a small chance that a scenario will be themed for an enemy -- which means in paticular changing the castle of the enemy accorign to the unit type of that diff --git a/src/addon/validation.cpp b/src/addon/validation.cpp index 091a9a77243..d4a774e9f66 100644 --- a/src/addon/validation.cpp +++ b/src/addon/validation.cpp @@ -500,7 +500,7 @@ std::string addon_check_status_desc(unsigned int code) }, { ADDON_CHECK_STATUS::AUTH_TYPE_MISMATCH, - N_("The add-on's forum_auth attribute does not match what was previously uploaded.") + N_("The add-on’s forum_auth attribute does not match what was previously uploaded.") }, // diff --git a/src/editor/map/map_context.cpp b/src/editor/map/map_context.cpp index 0d86bd349da..49c43a1f3e3 100644 --- a/src/editor/map/map_context.cpp +++ b/src/editor/map/map_context.cpp @@ -261,7 +261,7 @@ map_context::map_context(const game_config_view& game_config, const std::string& try { // 5.1 The file can be loaded by the editor as a scenario if(file_string.find("<<") != std::string::npos) { - throw editor_map_load_exception(filename, _("Found the characters '<<' indicating inline lua is present - aborting")); + throw editor_map_load_exception(filename, _("Found the characters ‘<<’ indicating inline lua is present — aborting")); } load_scenario(); } catch(const std::exception&) { diff --git a/src/game_config_manager.cpp b/src/game_config_manager.cpp index c071d7b03b8..36cbebb704c 100644 --- a/src/game_config_manager.cpp +++ b/src/game_config_manager.cpp @@ -298,7 +298,7 @@ void game_config_manager::load_game_config(bool reload_everything, const game_cl events::call_in_main_thread([&]() { gui2::dialogs::wml_error::display( _("Error loading core data."), - _("Can't locate the default core.") + _("Can’t locate the default core.") + '\n' + _("The game will now exit.")); }); throw; diff --git a/src/game_initialization/depcheck.cpp b/src/game_initialization/depcheck.cpp index 7649255587d..f0baf677b10 100644 --- a/src/game_initialization/depcheck.cpp +++ b/src/game_initialization/depcheck.cpp @@ -513,7 +513,7 @@ bool manager::change_scenario(const std::string& id) { // Checking for missing dependencies if(!get_required_not_installed(elem(id, "scenario")).empty()) { - std::string msg = _("Scenario can't be activated. Some dependencies are missing: "); + std::string msg = _("Scenario can’t be activated. Some dependencies are missing: "); msg += utils::join(get_required_not_installed(elem(id, "scenario")), ", "); @@ -582,7 +582,7 @@ bool manager::change_era(const std::string& id) { // Checking for missing dependencies if(!get_required_not_installed(elem(id, "era")).empty()) { - std::string msg = _("Era can't be activated. Some dependencies are missing: "); + std::string msg = _("Era can’t be activated. Some dependencies are missing: "); msg += utils::join(get_required_not_installed(elem(id, "era")), ", "); failure_dialog(msg); diff --git a/src/game_initialization/lobby_data.cpp b/src/game_initialization/lobby_data.cpp index 3be580e2721..1dbf5286d13 100644 --- a/src/game_initialization/lobby_data.cpp +++ b/src/game_initialization/lobby_data.cpp @@ -441,7 +441,7 @@ game_info::addon_req game_info::check_addon_version_compatibility(const config& << "'"; r.outcome = addon_req::CANNOT_SATISFY; - r.message = VGETTEXT("The host's version of $addon is incompatible. They have version $host_ver while you have version $local_ver.", { + r.message = VGETTEXT("The host’s version of $addon is incompatible. They have version $host_ver while you have version $local_ver.", { {"addon", local_item["addon_title"].str()}, {"host_ver", remote_ver.str()}, {"local_ver", local_ver.str()} diff --git a/src/game_initialization/mp_game_utils.cpp b/src/game_initialization/mp_game_utils.cpp index 79144157dd8..6d8ecbc8be3 100644 --- a/src/game_initialization/mp_game_utils.cpp +++ b/src/game_initialization/mp_game_utils.cpp @@ -100,7 +100,7 @@ config initial_level_config(saved_game& state) if(!era_cfg) { if(params.saved_game == saved_game_mode::type::no) { - throw config::error(VGETTEXT("Cannot find era '$era'", {{"era", era}})); + throw config::error(VGETTEXT("Cannot find era ‘$era’", {{"era", era}})); } // FIXME: @todo We should tell user about missing era but still load game... diff --git a/src/game_initialization/multiplayer.cpp b/src/game_initialization/multiplayer.cpp index 334ca7fbe88..e1c99326fbf 100644 --- a/src/game_initialization/multiplayer.cpp +++ b/src/game_initialization/multiplayer.cpp @@ -265,7 +265,7 @@ std::unique_ptr mp_manager::open_connection(std::string hos i18n_symbols["required_version"] = version; i18n_symbols["your_version"] = game_config::wesnoth_version.str(); - const std::string errorstring = VGETTEXT("The server accepts versions '$required_version', but you are using version '$your_version'", i18n_symbols); + const std::string errorstring = VGETTEXT("The server accepts versions ‘$required_version’, but you are using version ‘$your_version’", i18n_symbols); throw wesnothd_error(errorstring); } diff --git a/src/game_initialization/playcampaign.cpp b/src/game_initialization/playcampaign.cpp index 36b4ca755e4..a7b49c68ab2 100644 --- a/src/game_initialization/playcampaign.cpp +++ b/src/game_initialization/playcampaign.cpp @@ -276,7 +276,7 @@ level_result::type campaign_controller::play_game() utils::string_map symbols; symbols["scenario"] = state_.get_scenario_id(); - std::string message = _("Unknown scenario: '$scenario|'"); + std::string message = _("Unknown scenario: ‘$scenario|’"); message = utils::interpolate_variables_into_string(message, &symbols); gui2::show_error_message(message); diff --git a/src/generators/default_map_generator_job.cpp b/src/generators/default_map_generator_job.cpp index fcab7f53ad9..867f6510e74 100644 --- a/src/generators/default_map_generator_job.cpp +++ b/src/generators/default_map_generator_job.cpp @@ -703,7 +703,7 @@ std::string default_map_generator_job::default_generate_map(generator_data data, << " show_labels=" << data.show_labels; // Odd widths are nasty - VALIDATE(is_even(data.width), _("Random maps with an odd width aren't supported.")); + VALIDATE(is_even(data.width), _("Random maps with an odd width aren’t supported.")); // Try to find configuration for castles auto castle_config = cfg.optional_child("castle"); @@ -966,7 +966,7 @@ std::string default_map_generator_job::default_generate_map(generator_data data, if(best_ranking == 0) { ERR_NG << "No castle location found, for " << data.nplayers << " players aborting. "; - const std::string error = _("No valid castle location found. Too many or too few mountain hexes? (please check the 'max hill size' parameter)"); + const std::string error = _("No valid castle location found. Too many or too few mountain hexes? (please check the ‘max hill size’ parameter)"); throw mapgen_exception(error); } diff --git a/src/gui/core/canvas.cpp b/src/gui/core/canvas.cpp index f60e3c353ef..2dfc93b13fa 100644 --- a/src/gui/core/canvas.cpp +++ b/src/gui/core/canvas.cpp @@ -274,7 +274,7 @@ void image_shape::dimension_validation(unsigned value, const std::string& name, { const int as_int = static_cast(value); - VALIDATE_WITH_DEV_MESSAGE(as_int >= 0, _("Image doesn't fit on canvas."), + VALIDATE_WITH_DEV_MESSAGE(as_int >= 0, _("Image doesn’t fit on canvas."), formatter() << "Image '" << name << "', " << key << " = " << as_int << "." ); } diff --git a/src/gui/core/window_builder.cpp b/src/gui/core/window_builder.cpp index ef2765764b9..16abf5b16d0 100644 --- a/src/gui/core/window_builder.cpp +++ b/src/gui/core/window_builder.cpp @@ -217,7 +217,7 @@ builder_grid::builder_grid(const config& cfg) } if(col == 0) { - const t_string msg = VGETTEXT("Grid '$grid' row $row must have at least one column.", { + const t_string msg = VGETTEXT("Grid ‘$grid’ row $row must have at least one column.", { {"grid", id}, {"row", std::to_string(rows)} }); @@ -229,7 +229,7 @@ builder_grid::builder_grid(const config& cfg) if(rows == 1) { cols = col; } else if(col != cols) { - const t_string msg = VGETTEXT("Grid '$grid' row $row has a differing number of columns ($found found, $expected expected)", { + const t_string msg = VGETTEXT("Grid ‘$grid’ row $row has a differing number of columns ($found found, $expected expected)", { {"grid", id}, {"row", std::to_string(rows)}, {"found", std::to_string(col)}, {"expected", std::to_string(cols)} }); diff --git a/src/gui/dialogs/editor/custom_tod.cpp b/src/gui/dialogs/editor/custom_tod.cpp index 75c79ebe2c8..e69b02a9300 100644 --- a/src/gui/dialogs/editor/custom_tod.cpp +++ b/src/gui/dialogs/editor/custom_tod.cpp @@ -175,7 +175,7 @@ void custom_tod::select_file(const std::string& default_dir) if(dlg.show()) { dn = dlg.path(); const std::string& message - = _("This file is outside Wesnoth's data dirs. Do you wish to copy it into your add-on?"); + = _("This file is outside Wesnoth’s data dirs. Do you wish to copy it into your add-on?"); if(data.first == "image") { if (!filesystem::to_asset_path(dn, addon_id_, "images")) { diff --git a/src/gui/dialogs/editor/edit_unit.cpp b/src/gui/dialogs/editor/edit_unit.cpp index 3f86bb89473..f066f7a5604 100644 --- a/src/gui/dialogs/editor/edit_unit.cpp +++ b/src/gui/dialogs/editor/edit_unit.cpp @@ -317,7 +317,7 @@ void editor_edit_unit::select_file(const std::string& default_dir, const std::st std::string dn = dlg.path(); const std::string& message - = _("This file is outside Wesnoth's data dirs. Do you wish to copy it into your add-on?"); + = _("This file is outside Wesnoth’s data dirs. Do you wish to copy it into your add-on?"); if(id_stem == "unit_image") { diff --git a/src/gui/dialogs/lua_interpreter.cpp b/src/gui/dialogs/lua_interpreter.cpp index 52ac5f8b667..e8a2d33f543 100644 --- a/src/gui/dialogs/lua_interpreter.cpp +++ b/src/gui/dialogs/lua_interpreter.cpp @@ -624,7 +624,7 @@ void lua_interpreter::display(lua_kernel_base * lk) { #ifndef ALWAYS_HAVE_LUA_CONSOLE if(!game_config::debug && resources::controller) { display_chat_manager& chat_man = resources::controller->get_display().get_chat_manager(); - const std::string& message = _("The lua console can only be used in debug mode! (Run ':debug' first)"); + const std::string& message = _("The lua console can only be used in debug mode! (Run ‘:debug’ first)"); chat_man.add_chat_message(time(nullptr), _("lua console"), 0, message, events::chat_handler::MESSAGE_PRIVATE, false); return; } diff --git a/src/gui/dialogs/multiplayer/lobby.cpp b/src/gui/dialogs/multiplayer/lobby.cpp index e7185f3381c..3e811409f2e 100644 --- a/src/gui/dialogs/multiplayer/lobby.cpp +++ b/src/gui/dialogs/multiplayer/lobby.cpp @@ -170,7 +170,7 @@ bool handle_addon_requirements_gui(const std::vector parse_list_data(const config& data, const unsign auto cols = row.child_range("column"); VALIDATE(static_cast(cols.size()) == req_cols, - _("'list_data' must have the same number of columns as the 'list_definition'.") + _("‘list_data’ must have the same number of columns as the ‘list_definition’.") ); for(const auto& c : cols) { @@ -771,7 +771,7 @@ builder_listbox::builder_listbox(const config& cfg) list_builder = std::make_shared(*l); assert(list_builder); - VALIDATE(list_builder->rows == 1, _("A 'list_definition' should contain one row.")); + VALIDATE(list_builder->rows == 1, _("A ‘list_definition’ should contain one row.")); if(cfg.has_child("list_data")) { list_data = parse_list_data(cfg.mandatory_child("list_data"), list_builder->cols); @@ -814,7 +814,7 @@ builder_horizontal_listbox::builder_horizontal_listbox(const config& cfg) list_builder = std::make_shared(*l); assert(list_builder); - VALIDATE(list_builder->rows == 1, _("A 'list_definition' should contain one row.")); + VALIDATE(list_builder->rows == 1, _("A ‘list_definition’ should contain one row.")); if(cfg.has_child("list_data")) { list_data = parse_list_data(cfg.mandatory_child("list_data"), list_builder->cols); @@ -857,7 +857,7 @@ builder_grid_listbox::builder_grid_listbox(const config& cfg) list_builder = std::make_shared(*l); assert(list_builder); - VALIDATE(list_builder->rows == 1, _("A 'list_definition' should contain one row.")); + VALIDATE(list_builder->rows == 1, _("A ‘list_definition’ should contain one row.")); if(cfg.has_child("list_data")) { list_data = parse_list_data(cfg.mandatory_child("list_data"), list_builder->cols); diff --git a/src/gui/widgets/multi_page.cpp b/src/gui/widgets/multi_page.cpp index ba5b5ed88cb..83d009dcb09 100644 --- a/src/gui/widgets/multi_page.cpp +++ b/src/gui/widgets/multi_page.cpp @@ -216,8 +216,8 @@ builder_multi_page::builder_multi_page(const config& cfg) } VALIDATE(col == builder->cols, - _("'list_data' must have " - "the same number of columns as the 'list_definition'.")); + _("‘list_data’ must have " + "the same number of columns as the ‘list_definition’.")); } } diff --git a/src/gui/widgets/slider.cpp b/src/gui/widgets/slider.cpp index 96407902098..1b92bbcbf5b 100644 --- a/src/gui/widgets/slider.cpp +++ b/src/gui/widgets/slider.cpp @@ -353,7 +353,7 @@ std::unique_ptr builder_slider::build() const if(!value_labels_.empty()) { VALIDATE(value_labels_.size() == static_cast(widget->get_item_count()), - _("The number of value_labels and values don't match.")); + _("The number of value_labels and values don’t match.")); widget->set_value_labels(value_labels_); diff --git a/src/gui/widgets/tree_view.cpp b/src/gui/widgets/tree_view.cpp index 82ee72b42a8..a497f4055b1 100644 --- a/src/gui/widgets/tree_view.cpp +++ b/src/gui/widgets/tree_view.cpp @@ -322,7 +322,7 @@ tree_node::tree_node(const config& cfg) VALIDATE(!id.empty(), missing_mandatory_wml_key("node", "id")); // TODO: interpolate this value into the error message - VALIDATE(id != tree_view::root_node_id, _("[node]id 'root' is reserved for the implementation.")); + VALIDATE(id != tree_view::root_node_id, _("[node]id ‘root’ is reserved for the implementation.")); auto node_definition = VALIDATE_WML_CHILD(cfg, "node_definition", missing_mandatory_wml_tag("node", "node_definition")); builder = std::make_shared(node_definition); diff --git a/src/gui/widgets/window.cpp b/src/gui/widgets/window.cpp index 00c349565e8..614934952a4 100644 --- a/src/gui/widgets/window.cpp +++ b/src/gui/widgets/window.cpp @@ -418,7 +418,7 @@ void window::finish_build(const builder_window::window_resolution& definition) { for(const auto& lg : definition.linked_groups) { if(has_linked_size_group(lg.id)) { - t_string msg = VGETTEXT("Linked '$id' group has multiple definitions.", {{"id", lg.id}}); + t_string msg = VGETTEXT("Linked ‘$id’ group has multiple definitions.", {{"id", lg.id}}); FAIL(msg); } @@ -902,7 +902,7 @@ void window::layout() click_dismiss_button = btn; } VALIDATE(click_dismiss_button, - _("Click dismiss needs a 'click_dismiss' or 'ok' button.")); + _("Click dismiss needs a ‘click_dismiss’ or ‘ok’ button.")); } /***** Layout. *****/ @@ -928,7 +928,7 @@ void window::layout() << settings::screen_width << ',' << settings::screen_height << '.'; throw wml_exception(_("Failed to show a dialog, " - "which doesn't fit on the screen."), + "which doesn’t fit on the screen."), sstr.str()); } @@ -965,7 +965,7 @@ void window::layout() << '.'; throw wml_exception(_("Failed to show a dialog, " - "which doesn't fit on the screen."), + "which doesn’t fit on the screen."), sstr.str()); } } diff --git a/src/map_command_handler.hpp b/src/map_command_handler.hpp index 58fa009d67c..d648fd667e7 100644 --- a/src/map_command_handler.hpp +++ b/src/map_command_handler.hpp @@ -222,11 +222,11 @@ public: } // If a proposal for a command is found, print it if(has_command_proposal) { - print("help", VGETTEXT("Unknown command '$command', did you mean '$command_proposal'? try $help_command " + print("help", VGETTEXT("Unknown command ‘$command’, did you mean ‘$command_proposal’? try $help_command " "for a list of available commands.", symbols)); } else { - print("help", VGETTEXT("Unknown command '$command', try $help_command " + print("help", VGETTEXT("Unknown command ‘$command’, try $help_command " "for a list of available commands.", symbols)); } } diff --git a/src/menu_events.cpp b/src/menu_events.cpp index c9a692afaac..41deb6c206b 100644 --- a/src/menu_events.cpp +++ b/src/menu_events.cpp @@ -391,7 +391,7 @@ void menu_handler::recall(int side_num, const map_location& last_hex) return; } if(recall_list_team.empty()) { - gui2::show_transient_message("", _("You currently can't recall at the highlighted location.")); + gui2::show_transient_message("", _("You currently can’t recall at the highlighted location.")); return; } @@ -1239,7 +1239,7 @@ protected: register_command( "layers", &console_handler::do_layers, _("Debug layers from terrain under the mouse."), "", "D"); register_command("fps", &console_handler::do_fps, _("Display and log fps (Frames Per Second).")); - register_command("benchmark", &console_handler::do_benchmark, _("Similar to the 'fps' command, but also forces everything to redraw instead of only things that have changed.")); + register_command("benchmark", &console_handler::do_benchmark, _("Similar to the ‘fps’ command, but also forces everything to redraw instead of only things that have changed.")); register_command("save", &console_handler::do_save, _("Save game.")); register_alias("save", "w"); register_command("quit", &console_handler::do_quit, _("Quit game.")); @@ -1250,7 +1250,7 @@ protected: register_command("ignore_replay_errors", &console_handler::do_ignore_replay_errors, _("Ignore replay errors.")); register_command("nosaves", &console_handler::do_nosaves, _("Disable autosaves.")); register_command("next_level", &console_handler::do_next_level, - _("Advance to the next scenario, or scenario identified by 'id'"), _(""), "DS"); + _("Advance to the next scenario, or scenario identified by ‘id’"), _(""), "DS"); register_alias("next_level", "n"); register_command("choose_level", &console_handler::do_choose_level, _("Choose next scenario"), "", "DS"); register_alias("choose_level", "cl"); @@ -1286,7 +1286,7 @@ protected: // register_command("unbuff", &console_handler::do_unbuff, // _("Remove a trait from a unit. (Does not work yet.)"), "", "D"); register_command("discover", &console_handler::do_discover, _("Discover all units in help."), ""); - register_command("undiscover", &console_handler::do_undiscover, _("'Undiscover' all units in help."), ""); + register_command("undiscover", &console_handler::do_undiscover, _("‘Undiscover’ all units in help."), ""); register_command("create", &console_handler::do_create, _("Create a unit."), _(""), "DS"); register_command("fog", &console_handler::do_fog, _("Toggle fog for the current player."), "", "DS"); register_command("shroud", &console_handler::do_shroud, _("Toggle shroud for the current player."), "", "DS"); @@ -1467,10 +1467,10 @@ void console_handler::do_droid() symbols["side"] = std::to_string(side); if(side < 1 || side > menu_handler_.pc_.get_teams().size()) { - command_failed(VGETTEXT("Can't droid invalid side: '$side'.", symbols)); + command_failed(VGETTEXT("Can’t droid invalid side: ‘$side’.", symbols)); return; } else if(menu_handler_.board().get_team(side).is_network()) { - command_failed(VGETTEXT("Can't droid networked side: '$side'.", symbols)); + command_failed(VGETTEXT("Can’t droid networked side: ‘$side’.", symbols)); return; } else if(menu_handler_.board().get_team(side).is_local()) { bool changed = false; @@ -1482,7 +1482,7 @@ void console_handler::do_droid() if(action == "on") { if(is_ai && !is_your_turn) { - command_failed(_("It is not allowed to change a side from AI to human control when it's not your turn.")); + command_failed(_("It is not allowed to change a side from AI to human control when it’s not your turn.")); return; } if(!is_human || !is_droid) { @@ -1492,13 +1492,13 @@ void console_handler::do_droid() if(is_ai) { menu_handler_.pc_.send_to_wesnothd(config {"change_controller", config {"side", side, "player", prefs::get().login(), "to", side_controller::human}}); } - print(get_cmd(), VGETTEXT("Side '$side' controller is now controlled by: AI.", symbols)); + print(get_cmd(), VGETTEXT("Side ‘$side’ controller is now controlled by: AI.", symbols)); } else { - print(get_cmd(), VGETTEXT("Side '$side' is already droided.", symbols)); + print(get_cmd(), VGETTEXT("Side ‘$side’ is already droided.", symbols)); } } else if(action == "off") { if(is_ai && !is_your_turn) { - command_failed(_("It is not allowed to change a side from AI to human control when it's not your turn.")); + command_failed(_("It is not allowed to change a side from AI to human control when it’s not your turn.")); return; } if(!is_human || !is_proxy_human) { @@ -1508,13 +1508,13 @@ void console_handler::do_droid() if(is_ai) { menu_handler_.pc_.send_to_wesnothd(config {"change_controller", config {"side", side, "player", prefs::get().login(), "to", side_controller::human}}); } - print(get_cmd(), VGETTEXT("Side '$side' controller is now controlled by: human.", symbols)); + print(get_cmd(), VGETTEXT("Side ‘$side’ controller is now controlled by: human.", symbols)); } else { - print(get_cmd(), VGETTEXT("Side '$side' is already not droided.", symbols)); + print(get_cmd(), VGETTEXT("Side ‘$side’ is already not droided.", symbols)); } } else if(action == "full") { if(!is_your_turn) { - command_failed(_("It is not allowed to change a side from human to AI control when it's not your turn.")); + command_failed(_("It is not allowed to change a side from human to AI control when it’s not your turn.")); return; } if(!is_ai || !is_droid) { @@ -1524,13 +1524,13 @@ void console_handler::do_droid() if(is_human || is_proxy_human) { menu_handler_.pc_.send_to_wesnothd(config {"change_controller", config {"side", side, "player", prefs::get().login(), "to", side_controller::ai}}); } - print(get_cmd(), VGETTEXT("Side '$side' controller is now fully controlled by: AI.", symbols)); + print(get_cmd(), VGETTEXT("Side ‘$side’ controller is now fully controlled by: AI.", symbols)); } else { - print(get_cmd(), VGETTEXT("Side '$side' is already fully AI controlled.", symbols)); + print(get_cmd(), VGETTEXT("Side ‘$side’ is already fully AI controlled.", symbols)); } } else if(action == "") { if(is_ai && !is_your_turn) { - command_failed(_("It is not allowed to change a side from AI to human control when it's not your turn.")); + command_failed(_("It is not allowed to change a side from AI to human control when it’s not your turn.")); return; } if(is_ai || is_droid) { @@ -1540,7 +1540,7 @@ void console_handler::do_droid() if(is_ai) { menu_handler_.pc_.send_to_wesnothd(config {"change_controller", config {"side", side, "player", prefs::get().login(), "to", side_controller::human}}); } - print(get_cmd(), VGETTEXT("Side '$side' controller is now controlled by: human.", symbols)); + print(get_cmd(), VGETTEXT("Side ‘$side’ controller is now controlled by: human.", symbols)); } else { menu_handler_.board().get_team(side).make_human(); menu_handler_.board().get_team(side).make_droid(); @@ -1548,10 +1548,10 @@ void console_handler::do_droid() if(is_ai) { menu_handler_.pc_.send_to_wesnothd(config {"change_controller", config {"side", side, "player", prefs::get().login(), "to", side_controller::human}}); } - print(get_cmd(), VGETTEXT("Side '$side' controller is now controlled by: AI.", symbols)); + print(get_cmd(), VGETTEXT("Side ‘$side’ controller is now controlled by: AI.", symbols)); } } else { - print(get_cmd(), VGETTEXT("Invalid action provided for side '$side'. Valid actions are: on, off, full.", symbols)); + print(get_cmd(), VGETTEXT("Invalid action provided for side ‘$side’. Valid actions are: on, off, full.", symbols)); } if(team_num_ == side && changed) { @@ -1560,7 +1560,7 @@ void console_handler::do_droid() } } } else { - command_failed(VGETTEXT("Side '$side' is not a human or AI player.", symbols)); + command_failed(VGETTEXT("Side ‘$side’ is not a human or AI player.", symbols)); return; } menu_handler_.textbox_info_.close(); @@ -1596,17 +1596,17 @@ void console_handler::do_idle() if(side < 1 || side > menu_handler_.pc_.get_teams().size()) { utils::string_map symbols; symbols["side"] = side_s; - command_failed(VGETTEXT("Can't idle invalid side: '$side'.", symbols)); + command_failed(VGETTEXT("Can’t idle invalid side: ‘$side’.", symbols)); return; } else if(menu_handler_.board().get_team(side).is_network()) { utils::string_map symbols; symbols["side"] = std::to_string(side); - command_failed(VGETTEXT("Can't idle networked side: '$side'.", symbols)); + command_failed(VGETTEXT("Can’t idle networked side: ‘$side’.", symbols)); return; } else if(menu_handler_.board().get_team(side).is_local_ai()) { utils::string_map symbols; symbols["side"] = std::to_string(side); - command_failed(VGETTEXT("Can't idle local ai side: '$side'.", symbols)); + command_failed(VGETTEXT("Can’t idle local ai side: ‘$side’.", symbols)); return; } else if(menu_handler_.board().get_team(side).is_local_human()) { if(menu_handler_.board().get_team(side).is_idle() ? action == " on" : action == " off") { @@ -1667,7 +1667,7 @@ void console_handler::do_control() if(it_t == teams.end()) { utils::string_map symbols; symbols["side"] = side; - command_failed(VGETTEXT("Can't change control of invalid side: '$side'.", symbols)); + command_failed(VGETTEXT("Can’t change control of invalid side: ‘$side’.", symbols)); return; } else { side_num = it_t->side(); @@ -1677,7 +1677,7 @@ void console_handler::do_control() if(side_num < 1 || side_num > menu_handler_.pc_.get_teams().size()) { utils::string_map symbols; symbols["side"] = side; - command_failed(VGETTEXT("Can't change control of out-of-bounds side: '$side'.", symbols)); + command_failed(VGETTEXT("Can’t change control of out-of-bounds side: ‘$side’.", symbols)); return; } @@ -1694,14 +1694,14 @@ void console_handler::do_controller() } catch(const bad_lexical_cast&) { utils::string_map symbols; symbols["side"] = side; - command_failed(VGETTEXT("Can't query control of invalid side: '$side'.", symbols)); + command_failed(VGETTEXT("Can’t query control of invalid side: ‘$side’.", symbols)); return; } if(side_num < 1 || side_num > menu_handler_.pc_.get_teams().size()) { utils::string_map symbols; symbols["side"] = side; - command_failed(VGETTEXT("Can't query control of out-of-bounds side: '$side'.", symbols)); + command_failed(VGETTEXT("Can’t query control of out-of-bounds side: ‘$side’.", symbols)); return; } @@ -1977,7 +1977,7 @@ void console_handler::do_unit() utils::string_map symbols; symbols["unit"] = get_arg(1); command_failed(VGETTEXT( - "Debug command 'unit: $unit' failed: no unit selected or hovered over.", + "Debug command ‘unit: $unit’ failed: no unit selected or hovered over.", symbols)); return; } @@ -1995,7 +1995,7 @@ void console_handler::do_unit() utils::string_map symbols; symbols["alignment"] = get_arg(1); command_failed(VGETTEXT( - "Invalid alignment: '$alignment', needs to be one of lawful, neutral, chaotic, or liminal.", + "Invalid alignment: ‘$alignment’, needs to be one of lawful, neutral, chaotic, or liminal.", symbols)); return; } diff --git a/src/playsingle_controller.cpp b/src/playsingle_controller.cpp index b2606a4bfef..d04e7e500c1 100644 --- a/src/playsingle_controller.cpp +++ b/src/playsingle_controller.cpp @@ -180,7 +180,7 @@ void playsingle_controller::play_scenario_init(const config& level) gui2::show_transient_message( // TODO: find a better title _("Game Error"), - _("This multiplayer game uses an alternative random mode, if you don't know what this message means, then " + _("This multiplayer game uses an alternative random mode, if you don’t know what this message means, then " "most likely someone is cheating or someone reloaded a corrupt game.")); } } diff --git a/src/savegame.cpp b/src/savegame.cpp index d91634425be..b7280b6642c 100644 --- a/src/savegame.cpp +++ b/src/savegame.cpp @@ -428,7 +428,7 @@ bool savegame::check_overwrite() bool savegame::check_filename(const std::string& filename) { if(filesystem::is_compressed_file(filename)) { - gui2::show_error_message(_("Save names should not end on '.gz' or '.bz2'. Please remove the extension.")); + gui2::show_error_message(_("Save names should not end on ‘.gz’ or ‘.bz2’. Please remove the extension.")); return false; } else if(!filesystem::is_legal_user_file_name(filename)) { // This message is not all-inclusive. This is on purpose. Few people diff --git a/src/serialization/parser.cpp b/src/serialization/parser.cpp index 950657202ee..e8440ab9452 100644 --- a/src/serialization/parser.cpp +++ b/src/serialization/parser.cpp @@ -476,7 +476,7 @@ void parser::error(const std::string& error_type, const std::string& pos_format) i18n_symbols["value"] = tok_.current_token().value; i18n_symbols["previous_value"] = tok_.previous_token().value; - const std::string& tok_state = _("Value: '$value' Previous: '$previous_value'"); + const std::string& tok_state = _("Value: ‘$value’ Previous: ‘$previous_value’"); #else const std::string& tok_state = ""; #endif diff --git a/src/tests/gui/test_gui2.cpp b/src/tests/gui/test_gui2.cpp index da501d34568..403ec072a14 100644 --- a/src/tests/gui/test_gui2.cpp +++ b/src/tests/gui/test_gui2.cpp @@ -739,7 +739,7 @@ BOOST_AUTO_TEST_CASE(test_make_test_fake) message dlg("title", "message", true, false, false); dlg.show(1); } catch(const wml_exception& e) { - BOOST_CHECK(e.user_message == _("Failed to show a dialog, which doesn't fit on the screen.")); + BOOST_CHECK(e.user_message == _("Failed to show a dialog, which doesn’t fit on the screen.")); return; } catch(...) { BOOST_ERROR("Didn't catch the wanted exception, instead caught " << utils::get_unknown_exception_type() << ".");