Add VNGETTEXT macro to complement the VGETTEXT macro
This commit is contained in:
parent
cb333dbfdf
commit
b7aea011f9
9 changed files with 29 additions and 17 deletions
|
@ -28,6 +28,7 @@ set(GETTEXT_XGETTEXT_OPTIONS
|
|||
--keyword=_n:1,2
|
||||
--keyword=sngettext:1,2
|
||||
--keyword=vngettext:1,2
|
||||
--keyword=VNGETTEXT:1,2
|
||||
)
|
||||
|
||||
find_program(GETTEXT_MSGCAT_EXECUTABLE msgcat)
|
||||
|
|
|
@ -59,7 +59,7 @@ if "pot-update" in COMMAND_LINE_TARGETS:
|
|||
"""xgettext --force-po --default-domain=%s --directory=. --add-comments=TRANSLATORS: \
|
||||
--from-code=UTF-8 --sort-by-file \
|
||||
--keyword=_ --keyword=N_ --keyword=sgettext --keyword=vgettext --keyword=VGETTEXT \
|
||||
--keyword=_n:1,2 --keyword=sngettext:1,2 --keyword=vngettext:1,2 \
|
||||
--keyword=_n:1,2 --keyword=sngettext:1,2 --keyword=vngettext:1,2 --keyword=VNGETTEXT:1,2 \
|
||||
--files-from=%s --copyright-holder='Wesnoth development team' --msgid-bugs-address=http://bugs.wesnoth.org/ \
|
||||
--output=$TARGET \
|
||||
; sed -i s/charset=CHARSET/charset=UTF-8/ $TARGET \
|
||||
|
|
|
@ -1159,17 +1159,17 @@ namespace { // Private helpers for move_unit()
|
|||
color_t msg_color;
|
||||
if ( friend_count_ != 0 && enemy_count_ != 0 ) {
|
||||
// Both friends and enemies sighted -- neutral message.
|
||||
symbols["friendphrase"] = vngettext("Part of 'Units sighted! (...)' sentence^1 friendly", "$friends friendly", friend_count_, symbols);
|
||||
symbols["enemyphrase"] = vngettext("Part of 'Units sighted! (...)' sentence^1 enemy", "$enemies enemy", enemy_count_, symbols);
|
||||
symbols["friendphrase"] = VNGETTEXT("Part of 'Units sighted! (...)' sentence^1 friendly", "$friends friendly", friend_count_, symbols);
|
||||
symbols["enemyphrase"] = VNGETTEXT("Part of 'Units sighted! (...)' sentence^1 enemy", "$enemies enemy", enemy_count_, symbols);
|
||||
message = vgettext("Units sighted! ($friendphrase, $enemyphrase)", symbols);
|
||||
msg_color = font::NORMAL_COLOR;
|
||||
} else if ( enemy_count_ != 0 ) {
|
||||
// Only enemies sighted -- bad message.
|
||||
message = vngettext("Enemy unit sighted!", "$enemies enemy units sighted!", enemy_count_, symbols);
|
||||
message = VNGETTEXT("Enemy unit sighted!", "$enemies enemy units sighted!", enemy_count_, symbols);
|
||||
msg_color = font::BAD_COLOR;
|
||||
} else if ( friend_count_ != 0 ) {
|
||||
// Only friends sighted -- good message.
|
||||
message = vngettext("Friendly unit sighted", "$friends friendly units sighted", friend_count_, symbols);
|
||||
message = VNGETTEXT("Friendly unit sighted", "$friends friendly units sighted", friend_count_, symbols);
|
||||
msg_color = font::GOOD_COLOR;
|
||||
}
|
||||
|
||||
|
|
|
@ -263,3 +263,10 @@ std::string vngettext(const char* sing, const char* plur, int n, const utils::st
|
|||
const std::string msg = utils::interpolate_variables_into_string(orig, &symbols);
|
||||
return msg;
|
||||
}
|
||||
|
||||
std::string vngettext(const char *domain, const char *sing, const char* plur, int n, const utils::string_map& symbols)
|
||||
{
|
||||
const std::string orig(translation::dsngettext(domain, sing, plur, n));
|
||||
const std::string msg = utils::interpolate_variables_into_string(orig, &symbols);
|
||||
return msg;
|
||||
}
|
||||
|
|
|
@ -62,6 +62,8 @@ std::string vgettext(const char* domain
|
|||
|
||||
std::string vngettext(const char*, const char*, int, const utils::string_map&);
|
||||
|
||||
std::string vngettext(const char*, const char*, const char*, int, const utils::string_map&);
|
||||
|
||||
/**
|
||||
* @todo Convert all functions.
|
||||
*
|
||||
|
@ -72,8 +74,10 @@ std::string vngettext(const char*, const char*, int, const utils::string_map&);
|
|||
|
||||
#ifdef GETTEXT_DOMAIN
|
||||
#define VGETTEXT(msgid, symbols) vgettext(GETTEXT_DOMAIN, msgid, symbols)
|
||||
#define VNGETTEXT(msgid, msgid_plural, count, symbols) vngettext(GETTEXT_DOMAIN, msgid, msgid_plural, count, symbols)
|
||||
#else
|
||||
#define VGETTEXT(msgid, symbols) vgettext(msgid, symbols)
|
||||
#define VNGETTEXT(msgid, msgid_plural, count, symbols) vngettext(msgid, msgid_plural, count, symbols)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -87,7 +87,7 @@ void campaign_controller::report_victory(
|
|||
// want to translate them differently.
|
||||
if(t.carryover_add()) {
|
||||
if(t.carryover_gold() > 0) {
|
||||
goldmsg = vngettext(
|
||||
goldmsg = VNGETTEXT(
|
||||
"You will start the next scenario with $gold "
|
||||
"on top of the defined minimum starting gold.",
|
||||
"You will start the next scenario with $gold "
|
||||
|
@ -95,7 +95,7 @@ void campaign_controller::report_victory(
|
|||
t.carryover_gold(), symbols);
|
||||
|
||||
} else {
|
||||
goldmsg = vngettext(
|
||||
goldmsg = VNGETTEXT(
|
||||
"You will start the next scenario with "
|
||||
"the defined minimum starting gold.",
|
||||
"You will start the next scenario with "
|
||||
|
@ -103,7 +103,7 @@ void campaign_controller::report_victory(
|
|||
t.carryover_gold(), symbols);
|
||||
}
|
||||
} else {
|
||||
goldmsg = vngettext(
|
||||
goldmsg = VNGETTEXT(
|
||||
"You will start the next scenario with $gold "
|
||||
"or its defined minimum starting gold, "
|
||||
"whichever is higher.",
|
||||
|
|
|
@ -373,7 +373,7 @@ void menu_handler::recall(int side_num, const map_location &last_hex)
|
|||
if (current_team.gold() - wb_gold < unit_cost) {
|
||||
utils::string_map i18n_symbols;
|
||||
i18n_symbols["cost"] = std::to_string(unit_cost);
|
||||
std::string msg = vngettext(
|
||||
std::string msg = VNGETTEXT(
|
||||
"You must have at least 1 gold piece to recall a unit",
|
||||
"You must have at least $cost gold pieces to recall this unit",
|
||||
unit_cost, i18n_symbols);
|
||||
|
|
|
@ -348,7 +348,7 @@ bool attack_type::describe_modification(const config& cfg,std::string* descripti
|
|||
|
||||
if(!increase_damage.empty()) {
|
||||
add_and(desc);
|
||||
desc << vngettext(
|
||||
desc << VNGETTEXT(
|
||||
// TRANSLATORS: Current value for WML code increase_damage, documented in https://wiki.wesnoth.org/EffectWML
|
||||
"$number_or_percent damage",
|
||||
"$number_or_percent damage",
|
||||
|
@ -359,7 +359,7 @@ bool attack_type::describe_modification(const config& cfg,std::string* descripti
|
|||
if(!set_damage.empty()) {
|
||||
add_and(desc);
|
||||
// TRANSLATORS: Current value for WML code set_damage, documented in https://wiki.wesnoth.org/EffectWML
|
||||
desc << vngettext(
|
||||
desc << VNGETTEXT(
|
||||
"$number damage",
|
||||
"$number damage",
|
||||
std::stoi(set_damage),
|
||||
|
@ -368,7 +368,7 @@ bool attack_type::describe_modification(const config& cfg,std::string* descripti
|
|||
|
||||
if(!increase_attacks.empty()) {
|
||||
add_and(desc);
|
||||
desc << vngettext(
|
||||
desc << VNGETTEXT(
|
||||
// TRANSLATORS: Current value for WML code increase_attacks, documented in https://wiki.wesnoth.org/EffectWML
|
||||
"$number_or_percent strike",
|
||||
"$number_or_percent strikes",
|
||||
|
@ -378,7 +378,7 @@ bool attack_type::describe_modification(const config& cfg,std::string* descripti
|
|||
|
||||
if(!set_attacks.empty()) {
|
||||
add_and(desc);
|
||||
desc << vngettext(
|
||||
desc << VNGETTEXT(
|
||||
// TRANSLATORS: Current value for WML code set_attacks, documented in https://wiki.wesnoth.org/EffectWML
|
||||
"$number strike",
|
||||
"$number strikes",
|
||||
|
@ -420,7 +420,7 @@ bool attack_type::describe_modification(const config& cfg,std::string* descripti
|
|||
|
||||
if(!set_movement.empty()) {
|
||||
add_and(desc);
|
||||
desc << vngettext(
|
||||
desc << VNGETTEXT(
|
||||
// TRANSLATORS: Current value for WML code set_movement, documented in https://wiki.wesnoth.org/EffectWML
|
||||
"$number movement point",
|
||||
"$number movement points",
|
||||
|
@ -430,7 +430,7 @@ bool attack_type::describe_modification(const config& cfg,std::string* descripti
|
|||
|
||||
if(!increase_movement.empty()) {
|
||||
add_and(desc);
|
||||
desc << vngettext(
|
||||
desc << VNGETTEXT(
|
||||
// TRANSLATORS: Current value for WML code increase_movement, documented in https://wiki.wesnoth.org/EffectWML
|
||||
"$number_or_percent movement point",
|
||||
"$number_or_percent movement points",
|
||||
|
|
|
@ -1781,7 +1781,7 @@ std::string unit::describe_builtin_effect(std::string apply_to, const config& ef
|
|||
return "";
|
||||
}
|
||||
if(apply_to == "movement") {
|
||||
return vngettext(
|
||||
return VNGETTEXT(
|
||||
"$number_or_percent move",
|
||||
"$number_or_percent moves",
|
||||
std::stoi(increase),
|
||||
|
@ -1799,7 +1799,7 @@ std::string unit::describe_builtin_effect(std::string apply_to, const config& ef
|
|||
"$number_or_percent XP to advance",
|
||||
utils::string_map({{"number_or_percent", utils::print_modifier(increase)}}));
|
||||
} else if(apply_to == "max_attacks") {
|
||||
return vngettext(
|
||||
return VNGETTEXT(
|
||||
"$number_or_percent attack per turn",
|
||||
"$number_or_percent attacks per turn",
|
||||
std::stoi(increase),
|
||||
|
|
Loading…
Add table
Reference in a new issue