Merge lp:~gunchleoc/widelands/i18n-20140307 into lp:widelands
- i18n-20140307
- Merge into trunk
Status: | Merged |
---|---|
Merged at revision: | 6866 |
Proposed branch: | lp:~gunchleoc/widelands/i18n-20140307 |
Merge into: | lp:widelands |
Diff against target: |
616 lines (+90/-70) 23 files modified
maps/MP Scenarios/Island Hopping.wmf/scripting/multiplayer_init.lua (+1/-0) maps/MP Scenarios/Smugglers.wmf/scripting/texts.lua (+6/-6) maps/Plateau.wmf/scripting/texts.lua (+1/-1) scripting/win_conditions/02_collectors.lua (+8/-6) scripting/win_conditions/04_wood_gnome.lua (+4/-4) src/editor/ui_menus/editor_main_menu_load_map.cc (+1/-0) src/editor/ui_menus/editor_main_menu_save_map.cc (+1/-0) src/logic/production_program.cc (+29/-21) src/logic/soldier.cc (+2/-4) src/network/nethost.cc (+3/-3) src/ui_fsmenu/editor_mapselect.cc (+1/-0) src/ui_fsmenu/launchMPG.cc (+1/-0) src/wui/encyclopedia_window.cc (+1/-1) src/wui/game_main_menu_save_game.cc (+6/-2) src/wui/playerdescrgroup.cc (+1/-1) tribes/atlanteans/scripting/sc01_castle_village.lua (+4/-4) tribes/barbarians/coalmine/help.lua (+3/-2) tribes/barbarians/conf (+1/-1) tribes/barbarians/deep_coalmine/help.lua (+3/-2) tribes/barbarians/deeper_coalmine/help.lua (+3/-2) tribes/barbarians/scripting/sc01_citadel_village.lua (+4/-4) tribes/empire/scripting/sc01_castle_village.lua (+4/-4) txts/README.lua (+2/-2) |
To merge this branch: | bzr merge lp:~gunchleoc/widelands/i18n-20140307 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
SirVer | Needs Information | ||
Review via email: mp+210046@code.launchpad.net |
Commit message
Description of the change
Some more i18n fixes.
Catalogs and translations will need rebuilding.
SirVer (sirver) wrote : | # |
weird line breaks come from launchpad ....
GunChleoc (gunchleoc) wrote : | # |
> I have a question about the changes made to for example the wood gnome win
> condition.
>
> having quotes for each line makes it really inconvenient to type those texts
> (in the source). I.e.
>
> [snip]
> Why are those changes necessary?
I am adding those because semantically empty line breaks are confusing for translators, thus creating extra work for them + head scratching.
Could you please have a look at game_main_
SirVer (sirver) wrote : | # |
> I am adding those because semantically empty line breaks are confusing for translators, thus creating extra work for them + head scratching.
Can we find another way? How about introducing a 'texts' secion in each file where we do not care about the length of lines? We could do one sentence per translated unit or so. I think that makes it pretty easy to work with - it also means that diffs are more meaningful as each change is a change per sentence.
// TODO: This should be ngettext(" %i player" etc. with
not sure what the problem is here. I'll need to investigate a bit more. I put it onto my list.
I saw in some other places that you had trouble with segfaults. The reason is that only boost::format understands std::string directly. Everything else needs .c_str() like so:
std::string a = "Hello"
snprintf(..."%s", a.c_str())
as those are old apis that can only deal with plain old c strings, not with classes.
GunChleoc (gunchleoc) wrote : | # |
> > I am adding those because semantically empty line breaks are confusing for
> translators, thus creating extra work for them + head scratching.
>
> Can we find another way? How about introducing a 'texts' secion in each file
> where we do not care about the length of lines? We could do one sentence per
> translated unit or so. I think that makes it pretty easy to work with - it
> also means that diffs are more meaningful as each change is a change per
> sentence.
OK, I will do that in the future. Most of the long texts are in scenarios as well.
I have created strings like that all over the place, maybe leave them for now and only change the code when we need to fix a string?
> // TODO: This should be ngettext(" %i player" etc. with
>
> not sure what the problem is here. I'll need to investigate a bit more. I put
> it onto my list.
>
> I saw in some other places that you had trouble with segfaults. The reason is
> that only boost::format understands std::string directly. Everything else
> needs .c_str() like so:
I copy/pasted code that is working from somewhere else, so the problem must be in turning the number into a string somehow. I tried both %u and %i, something like this:
(format(
Maybe it's a stupid error with the brackets or something.
SirVer (sirver) wrote : | # |
I merged this now and fixed the issue you had with boost::format. The problem here was that player_no was defined to be a [u]int_8 which is the same as unsigned char on most systems. boost now does not understand that this is not a single character, but indeed a small integer value. I got around this by defining player_no to be a simple int (i.e. 4 byte integer). You could also cast in the future:
(format(
GunChleoc (gunchleoc) wrote : | # |
Thanks!
Preview Diff
1 | === modified file 'maps/MP Scenarios/Island Hopping.wmf/scripting/multiplayer_init.lua' | |||
2 | --- maps/MP Scenarios/Island Hopping.wmf/scripting/multiplayer_init.lua 2014-03-05 18:47:03 +0000 | |||
3 | +++ maps/MP Scenarios/Island Hopping.wmf/scripting/multiplayer_init.lua 2014-03-08 16:14:22 +0000 | |||
4 | @@ -129,6 +129,7 @@ | |||
5 | 129 | elseif resource == "goldore" then | 129 | elseif resource == "goldore" then |
6 | 130 | return ngettext("%s Gold Ore","%s Gold Ore",count):bformat(count) | 130 | return ngettext("%s Gold Ore","%s Gold Ore",count):bformat(count) |
7 | 131 | else | 131 | else |
8 | 132 | -- TRANSLATORS: number + resource name, e.g. '1 stone' | ||
9 | 132 | return (_"%1$i %2$s"):bformat(count, resource) | 133 | return (_"%1$i %2$s"):bformat(count, resource) |
10 | 133 | end | 134 | end |
11 | 134 | end | 135 | end |
12 | 135 | 136 | ||
13 | === modified file 'maps/MP Scenarios/Smugglers.wmf/scripting/texts.lua' | |||
14 | --- maps/MP Scenarios/Smugglers.wmf/scripting/texts.lua 2014-03-03 20:50:30 +0000 | |||
15 | +++ maps/MP Scenarios/Smugglers.wmf/scripting/texts.lua 2014-03-08 16:14:22 +0000 | |||
16 | @@ -11,7 +11,7 @@ | |||
17 | 11 | [[To establish a smuggling route, you need to build a warehouse on a sending/receiving spot ]] .. | 11 | [[To establish a smuggling route, you need to build a warehouse on a sending/receiving spot ]] .. |
18 | 12 | [[while your team mate has to build one on the corresponding receiving/sending spot. ]] .. | 12 | [[while your team mate has to build one on the corresponding receiving/sending spot. ]] .. |
19 | 13 | [[A ware is then transported every 10 seconds. ]]) .. | 13 | [[A ware is then transported every 10 seconds. ]]) .. |
21 | 14 | -- TRANSLATORS: %s = "<number> points" | 14 | -- TRANSLATORS: %s = '<number> points' |
22 | 15 | _([[For harder to defend smuggling routes, you get 2 or 3 points per ware smuggled. The first team to collect %s wins.]] | 15 | _([[For harder to defend smuggling routes, you get 2 or 3 points per ware smuggled. The first team to collect %s wins.]] |
23 | 16 | )) .. | 16 | )) .. |
24 | 17 | rt("image=map:send_spot.png", p(_"A sending spot")) .. | 17 | rt("image=map:send_spot.png", p(_"A sending spot")) .. |
25 | @@ -25,30 +25,30 @@ | |||
26 | 25 | [[You can see the number of wares traded at any time in the general statistics menu. Good luck!]] | 25 | [[You can see the number of wares traded at any time in the general statistics menu. Good luck!]] |
27 | 26 | ))) | 26 | ))) |
28 | 27 | 27 | ||
30 | 28 | -- TRANSLATORS: the first 2 parameters are player names, the last parameter is "<number> points" | 28 | -- TRANSLATORS: the first 2 parameters are player names, the last parameter is '<number> points' |
31 | 29 | smuggling_route_established_other_team = rt(p(_( | 29 | smuggling_route_established_other_team = rt(p(_( |
32 | 30 | [[A new smuggling route from %1$s to %2$s has been established! ]] .. | 30 | [[A new smuggling route from %1$s to %2$s has been established! ]] .. |
33 | 31 | [[Every ware they smuggle there is worth %3$s.]] | 31 | [[Every ware they smuggle there is worth %3$s.]] |
34 | 32 | ))) | 32 | ))) |
36 | 33 | -- TRANSLATORS: %s = "<number> points" | 33 | -- TRANSLATORS: %s = '<number> points' |
37 | 34 | smuggling_route_established_sender = rt(p(_( | 34 | smuggling_route_established_sender = rt(p(_( |
38 | 35 | [[Your team has established a new smuggling route. You have the sending warehouse. ]] .. | 35 | [[Your team has established a new smuggling route. You have the sending warehouse. ]] .. |
39 | 36 | [[Every ware smuggled here is worth %s.]] | 36 | [[Every ware smuggled here is worth %s.]] |
40 | 37 | ))) | 37 | ))) |
42 | 38 | -- TRANSLATORS: %s = "<number> points" | 38 | -- TRANSLATORS: %s = '<number> points' |
43 | 39 | smuggling_route_established_receiver = rt(p(_( | 39 | smuggling_route_established_receiver = rt(p(_( |
44 | 40 | [[Your team has established a new smuggling route. You have the receiving warehouse. ]] .. | 40 | [[Your team has established a new smuggling route. You have the receiving warehouse. ]] .. |
45 | 41 | [[Every ware smuggled here is worth %s.]] | 41 | [[Every ware smuggled here is worth %s.]] |
46 | 42 | ))) | 42 | ))) |
47 | 43 | 43 | ||
49 | 44 | -- TRANSLATORS: the first parameter is "<number> points", the last 2 parameters are player names | 44 | -- TRANSLATORS: the first parameter is '<number> points', the last 2 parameters are player names |
50 | 45 | smuggling_route_broken = rt(p(_ | 45 | smuggling_route_broken = rt(p(_ |
51 | 46 | [[The smuggling route worth %1$s from %2$s to %3$s has been broken!]] | 46 | [[The smuggling route worth %1$s from %2$s to %3$s has been broken!]] |
52 | 47 | )) | 47 | )) |
53 | 48 | 48 | ||
54 | 49 | game_over = rt( | 49 | game_over = rt( |
55 | 50 | h1("Game over!") .. | 50 | h1("Game over!") .. |
57 | 51 | -- TRANSLATORS: the first 4 parameters are player names, the last parameter is "<number> points" | 51 | -- TRANSLATORS: the first 4 parameters are player names, the last parameter is '<number> points' |
58 | 52 | p(_ | 52 | p(_ |
59 | 53 | [[Game over! %1$s and %2$s have won the game! %3$s and %4$s only managed to collect %5$s.]] | 53 | [[Game over! %1$s and %2$s have won the game! %3$s and %4$s only managed to collect %5$s.]] |
60 | 54 | ) | 54 | ) |
61 | 55 | 55 | ||
62 | === modified file 'maps/Plateau.wmf/scripting/texts.lua' | |||
63 | --- maps/Plateau.wmf/scripting/texts.lua 2014-02-26 16:52:26 +0000 | |||
64 | +++ maps/Plateau.wmf/scripting/texts.lua 2014-03-08 16:14:22 +0000 | |||
65 | @@ -53,7 +53,7 @@ | |||
66 | 53 | "<rt><p line-spacing=3 font-size=12>" .. reflow(text) | 53 | "<rt><p line-spacing=3 font-size=12>" .. reflow(text) |
67 | 54 | objs = {...} | 54 | objs = {...} |
68 | 55 | if #objs > 0 then | 55 | if #objs > 0 then |
70 | 56 | s = s .. "<br><br></p></rt>" .. rt(h2(_"New Objectives")) .. "<rt><p line-spacing=3 font-size=12>" | 56 | s = s .. "<br><br></p></rt>" .. rt(h2(_"New Objective")) .. "<rt><p line-spacing=3 font-size=12>" |
71 | 57 | local i = 1 | 57 | local i = 1 |
72 | 58 | while i < #objs do | 58 | while i < #objs do |
73 | 59 | s = s .. reflow(objs[i].body) .. "<br>" | 59 | s = s .. reflow(objs[i].body) .. "<br>" |
74 | 60 | 60 | ||
75 | === modified file 'scripting/win_conditions/02_collectors.lua' | |||
76 | --- scripting/win_conditions/02_collectors.lua 2014-02-24 17:19:30 +0000 | |||
77 | +++ scripting/win_conditions/02_collectors.lua 2014-03-08 16:14:22 +0000 | |||
78 | @@ -4,6 +4,7 @@ | |||
79 | 4 | 4 | ||
80 | 5 | use("aux", "coroutine") -- for sleep | 5 | use("aux", "coroutine") -- for sleep |
81 | 6 | use("aux", "table") | 6 | use("aux", "table") |
82 | 7 | use("aux", "formatting") | ||
83 | 7 | use("aux", "win_condition_functions") | 8 | use("aux", "win_condition_functions") |
84 | 8 | 9 | ||
85 | 9 | set_textdomain("win_conditions") | 10 | set_textdomain("win_conditions") |
86 | @@ -92,7 +93,7 @@ | |||
87 | 92 | ) | 93 | ) |
88 | 93 | 94 | ||
89 | 94 | local points = 0 | 95 | local points = 0 |
91 | 95 | local descr = { (_"Status for %s"):format(plr.name) .. "<br>"} | 96 | local descr = { "</p>" .. h2((_"Status for %s"):format(plr.name)) .. "<p line-spacing=3 font-size=12>"} |
92 | 96 | for idx, ware in ipairs(point_table[plr.tribe_name .. "_order"]) do | 97 | for idx, ware in ipairs(point_table[plr.tribe_name .. "_order"]) do |
93 | 97 | local value = point_table[plr.tribe_name][ware] | 98 | local value = point_table[plr.tribe_name][ware] |
94 | 98 | local count = 0 | 99 | local count = 0 |
95 | @@ -101,12 +102,13 @@ | |||
96 | 101 | end | 102 | end |
97 | 102 | local lpoints = count * value | 103 | local lpoints = count * value |
98 | 103 | points = points + lpoints | 104 | points = points + lpoints |
101 | 104 | -- TRANSLATORS: For example: "gold (3 P) x 4 = 12 P", P meaning "Points" | 105 | -- TRANSLATORS: For example: 'gold (3 P) x 4 = 12 P", P meaning "Points' |
102 | 105 | descr[#descr+1] = (_" %1$s (%2$i P) x %3$i = %4$i P<br>"):bformat( | 106 | descr[#descr+1] = [[• ]] .. (_" %1$s (%2$i P) x %3$i = %4$i P"):bformat( |
103 | 106 | ware, value, count, lpoints | 107 | ware, value, count, lpoints |
105 | 107 | ) | 108 | ) .. "<br>" |
106 | 108 | end | 109 | end |
108 | 109 | descr[#descr+1] = (ngettext("Total: %i point", "Total: %i points", points)):format(points) | 110 | descr[#descr+1] = "</p>" .. h3(ngettext("Total: %i point", "Total: %i points", points)):format(points) |
109 | 111 | .. "<p line-spacing=3 font-size=12>" | ||
110 | 110 | return points, p(table.concat(descr, "\n")) | 112 | return points, p(table.concat(descr, "\n")) |
111 | 111 | end | 113 | end |
112 | 112 | 114 | ||
113 | @@ -117,7 +119,7 @@ | |||
114 | 117 | local m = remaining_time % 60 | 119 | local m = remaining_time % 60 |
115 | 118 | local time = "" | 120 | local time = "" |
116 | 119 | if h > 0 then | 121 | if h > 0 then |
118 | 120 | -- TRANSLATORS: Context: "The game will end in %s." | 122 | -- TRANSLATORS: Context: 'The game will end in %s.' |
119 | 121 | time = (_"%1$ih%2$02im"):bformat(h,m) | 123 | time = (_"%1$ih%2$02im"):bformat(h,m) |
120 | 122 | else | 124 | else |
121 | 123 | time = (ngettext("%i minute", "%i minutes", m)):format(m) | 125 | time = (ngettext("%i minute", "%i minutes", m)):format(m) |
122 | 124 | 126 | ||
123 | === modified file 'scripting/win_conditions/04_wood_gnome.lua' | |||
124 | --- scripting/win_conditions/04_wood_gnome.lua 2014-03-03 20:50:30 +0000 | |||
125 | +++ scripting/win_conditions/04_wood_gnome.lua 2014-03-08 16:14:22 +0000 | |||
126 | @@ -12,10 +12,10 @@ | |||
127 | 12 | 12 | ||
128 | 13 | local wc_name = _ "Wood Gnome" | 13 | local wc_name = _ "Wood Gnome" |
129 | 14 | local wc_version = 2 | 14 | local wc_version = 2 |
134 | 15 | local wc_desc = _ | 15 | local wc_desc = _( |
135 | 16 | [[As wood gnome you like big forests, so your task is to have more trees on | 16 | [[As wood gnome you like big forests, so your task is to have more trees on ]] .. |
136 | 17 | your territory than any other player. The game will end after 4 hours of | 17 | [[your territory than any other player. The game will end after 4 hours of ]] .. |
137 | 18 | playing. The one with the most trees at that point will win the game.]] | 18 | [[playing. The one with the most trees at that point will win the game.]]) |
138 | 19 | local wc_trees_owned = _"Trees owned" | 19 | local wc_trees_owned = _"Trees owned" |
139 | 20 | return { | 20 | return { |
140 | 21 | name = wc_name, | 21 | name = wc_name, |
141 | 22 | 22 | ||
142 | === modified file 'src/editor/ui_menus/editor_main_menu_load_map.cc' | |||
143 | --- src/editor/ui_menus/editor_main_menu_load_map.cc 2014-03-05 11:59:09 +0000 | |||
144 | +++ src/editor/ui_menus/editor_main_menu_load_map.cc 2014-03-08 16:14:22 +0000 | |||
145 | @@ -221,6 +221,7 @@ | |||
146 | 221 | m_parentdir = m_curdir.substr(0, m_curdir.rfind('\\')); | 221 | m_parentdir = m_curdir.substr(0, m_curdir.rfind('\\')); |
147 | 222 | #endif | 222 | #endif |
148 | 223 | std::string parent_string = | 223 | std::string parent_string = |
149 | 224 | /** TRANSLATORS: Parent directory */ | ||
150 | 224 | (boost::format("\\<%s\\>") % _("parent")).str(); | 225 | (boost::format("\\<%s\\>") % _("parent")).str(); |
151 | 225 | m_ls->add | 226 | m_ls->add |
152 | 226 | (parent_string.c_str(), | 227 | (parent_string.c_str(), |
153 | 227 | 228 | ||
154 | === modified file 'src/editor/ui_menus/editor_main_menu_save_map.cc' | |||
155 | --- src/editor/ui_menus/editor_main_menu_save_map.cc 2014-03-05 11:59:09 +0000 | |||
156 | +++ src/editor/ui_menus/editor_main_menu_save_map.cc 2014-03-08 16:14:22 +0000 | |||
157 | @@ -294,6 +294,7 @@ | |||
158 | 294 | m_parentdir = m_curdir.substr(0, m_curdir.rfind('\\')); | 294 | m_parentdir = m_curdir.substr(0, m_curdir.rfind('\\')); |
159 | 295 | #endif | 295 | #endif |
160 | 296 | std::string parent_string = | 296 | std::string parent_string = |
161 | 297 | /** TRANSLATORS: Parent directory */ | ||
162 | 297 | (boost::format("\\<%s\\>") % _("parent")).str(); | 298 | (boost::format("\\<%s\\>") % _("parent")).str(); |
163 | 298 | m_ls->add | 299 | m_ls->add |
164 | 299 | (parent_string.c_str(), | 300 | (parent_string.c_str(), |
165 | 300 | 301 | ||
166 | === modified file 'src/logic/production_program.cc' | |||
167 | --- src/logic/production_program.cc 2014-03-04 13:24:58 +0000 | |||
168 | +++ src/logic/production_program.cc 2014-03-08 16:14:22 +0000 | |||
169 | @@ -151,7 +151,7 @@ | |||
170 | 151 | std::string ProductionProgram::ActReturn::Negation::description | 151 | std::string ProductionProgram::ActReturn::Negation::description |
171 | 152 | (const Tribe_Descr & tribe) const | 152 | (const Tribe_Descr & tribe) const |
172 | 153 | { | 153 | { |
174 | 154 | /** TRANSLATORS: %s = e.g. "economy needs ..." Context: "and/or not %s" */ | 154 | /** TRANSLATORS: %s = e.g. 'economy needs ...' Context: 'and/or not %s' */ |
175 | 155 | return (boost::format(_("not %s")) % operand->description(tribe)).str(); | 155 | return (boost::format(_("not %s")) % operand->description(tribe)).str(); |
176 | 156 | } | 156 | } |
177 | 157 | 157 | ||
178 | @@ -174,7 +174,7 @@ | |||
179 | 174 | std::string ProductionProgram::ActReturn::Economy_Needs_Ware::description | 174 | std::string ProductionProgram::ActReturn::Economy_Needs_Ware::description |
180 | 175 | (const Tribe_Descr & tribe) const | 175 | (const Tribe_Descr & tribe) const |
181 | 176 | { | 176 | { |
183 | 177 | /** TRANSLATORS: e.g. "economy needs water" Context: "and/or (not) economy needs %s" */ | 177 | /** TRANSLATORS: e.g. 'economy needs water' Context: 'and/or (not) economy needs %s' */ |
184 | 178 | return (boost::format(_("economy needs %s")) % tribe.get_ware_descr(ware_type)->descname()).str(); | 178 | return (boost::format(_("economy needs %s")) % tribe.get_ware_descr(ware_type)->descname()).str(); |
185 | 179 | } | 179 | } |
186 | 180 | 180 | ||
187 | @@ -196,7 +196,7 @@ | |||
188 | 196 | std::string ProductionProgram::ActReturn::Economy_Needs_Worker::description | 196 | std::string ProductionProgram::ActReturn::Economy_Needs_Worker::description |
189 | 197 | (const Tribe_Descr & tribe) const | 197 | (const Tribe_Descr & tribe) const |
190 | 198 | { | 198 | { |
192 | 199 | /** TRANSLATORS: e.g. "economy needs worker" Context: "and/or (not) economy needs %s" */ | 199 | /** TRANSLATORS: e.g. 'economy needs worker' Context: 'and/or (not) economy needs %s' */ |
193 | 200 | return (boost::format(_("economy needs %s")) % tribe.get_ware_descr(worker_type)->descname()).str(); | 200 | return (boost::format(_("economy needs %s")) % tribe.get_ware_descr(worker_type)->descname()).str(); |
194 | 201 | } | 201 | } |
195 | 202 | 202 | ||
196 | @@ -229,10 +229,10 @@ | |||
197 | 229 | std::string condition = ""; | 229 | std::string condition = ""; |
198 | 230 | container_iterate_const(std::set<Ware_Index>, group.first, i) { | 230 | container_iterate_const(std::set<Ware_Index>, group.first, i) { |
199 | 231 | condition = | 231 | condition = |
201 | 232 | /** TRANSLATORS: Adds a ware to list of wares in "Failed/Skipped ..." messages. */ | 232 | /** TRANSLATORS: Adds a ware to list of wares in 'Failed/Skipped ...' messages. */ |
202 | 233 | (boost::format(_("%1$s %2$s")) % condition % tribe.get_ware_descr(*i.current)->descname()) | 233 | (boost::format(_("%1$s %2$s")) % condition % tribe.get_ware_descr(*i.current)->descname()) |
203 | 234 | .str(); | 234 | .str(); |
205 | 235 | /** TRANSLATORS: Separator for list of wares in "Failed/Skipped ..." messages. */ | 235 | /** TRANSLATORS: Separator for list of wares in 'Failed/Skipped ...' messages. */ |
206 | 236 | condition = (boost::format(_("%s,")) % condition).str(); | 236 | condition = (boost::format(_("%s,")) % condition).str(); |
207 | 237 | } | 237 | } |
208 | 238 | if (1 < group.second) { | 238 | if (1 < group.second) { |
209 | @@ -257,6 +257,7 @@ | |||
210 | 257 | std::string ProductionProgram::ActReturn::Workers_Need_Experience::description | 257 | std::string ProductionProgram::ActReturn::Workers_Need_Experience::description |
211 | 258 | (const Tribe_Descr &) const | 258 | (const Tribe_Descr &) const |
212 | 259 | { | 259 | { |
213 | 260 | /** TRANSLATORS: 'Failed/Skipped ... because: workers need experience'. */ | ||
214 | 260 | return _("workers need experience"); | 261 | return _("workers need experience"); |
215 | 261 | } | 262 | } |
216 | 262 | 263 | ||
217 | @@ -423,16 +424,16 @@ | |||
218 | 423 | (Game & game, ProductionSite & ps) const | 424 | (Game & game, ProductionSite & ps) const |
219 | 424 | { | 425 | { |
220 | 425 | std::string statistics_string = | 426 | std::string statistics_string = |
222 | 426 | /** TRANSLATORS: "Failed %s because (not): %s {and/or %s}" */ | 427 | /** TRANSLATORS: 'Failed %s because (not): %s {and/or %s}' */ |
223 | 427 | m_result == Failed ? (boost::format(_("Failed %s")) % ps.top_state().program->descname()).str() : | 428 | m_result == Failed ? (boost::format(_("Failed %s")) % ps.top_state().program->descname()).str() : |
225 | 428 | /** TRANSLATORS: "Completed %s because (not): %s {and/or %s}" */ | 429 | /** TRANSLATORS: 'Completed %s because (not): %s {and/or %s}' */ |
226 | 429 | m_result == Completed ? (boost::format(_("Completed %s")) % ps.top_state().program->descname()).str() : | 430 | m_result == Completed ? (boost::format(_("Completed %s")) % ps.top_state().program->descname()).str() : |
228 | 430 | /** TRANSLATORS: "Skipped %s because (not): %s {and/or %s}" */ | 431 | /** TRANSLATORS: 'Skipped %s because (not): %s {and/or %s}' */ |
229 | 431 | (boost::format(_("Skipped %s")) % ps.top_state().program->descname()).str(); | 432 | (boost::format(_("Skipped %s")) % ps.top_state().program->descname()).str(); |
230 | 432 | 433 | ||
231 | 433 | if (!m_conditions.empty()) { | 434 | if (!m_conditions.empty()) { |
232 | 434 | std::string result_string = statistics_string; | 435 | std::string result_string = statistics_string; |
234 | 435 | if (m_is_when) { // "when a and b and ..." (all conditions must be true) | 436 | if (m_is_when) { // 'when a and b and ...' (all conditions must be true) |
235 | 436 | std::string condition_string = ""; | 437 | std::string condition_string = ""; |
236 | 437 | for (wl_const_range<Conditions> i(m_conditions); i;) | 438 | for (wl_const_range<Conditions> i(m_conditions); i;) |
237 | 438 | { | 439 | { |
238 | @@ -443,11 +444,11 @@ | |||
239 | 443 | if (i.advance().empty()) | 444 | if (i.advance().empty()) |
240 | 444 | break; | 445 | break; |
241 | 445 | // TODO Would prefer "%1$s and %2$s" but getting segfaults, so leaving this for now | 446 | // TODO Would prefer "%1$s and %2$s" but getting segfaults, so leaving this for now |
243 | 446 | /** TRANSLATORS: "Failed/Completed/Skipped %s because: %s {and %s}" */ | 447 | /** TRANSLATORS: 'Failed/Completed/Skipped %s because: %s {and %s}' */ |
244 | 447 | condition_string = (boost::format(_("%s and ")) % condition_string).str(); | 448 | condition_string = (boost::format(_("%s and ")) % condition_string).str(); |
245 | 448 | } | 449 | } |
246 | 449 | result_string = | 450 | result_string = |
248 | 450 | /** TRANSLATORS: "Failed/Completed/Skipped %s because: %s {and %s}" */ | 451 | /** TRANSLATORS: 'Failed/Completed/Skipped %s because: %s {and %s}' */ |
249 | 451 | (boost::format(_("%1$s because: %2$s")) % statistics_string % condition_string).str(); | 452 | (boost::format(_("%1$s because: %2$s")) % statistics_string % condition_string).str(); |
250 | 452 | } else { // "unless a or b or ..." (all conditions must be false) | 453 | } else { // "unless a or b or ..." (all conditions must be false) |
251 | 453 | std::string condition_string = ""; | 454 | std::string condition_string = ""; |
252 | @@ -459,12 +460,12 @@ | |||
253 | 459 | condition_string += i.front()->description(ps.owner().tribe()); | 460 | condition_string += i.front()->description(ps.owner().tribe()); |
254 | 460 | if (i.advance().empty()) | 461 | if (i.advance().empty()) |
255 | 461 | break; | 462 | break; |
258 | 462 | // TODO Would prefer "%1$s or %2$s" but getting segfaults, so leaving this for now | 463 | // TODO Would prefer '%1$s or %2$s' but getting segfaults, so leaving this for now |
259 | 463 | /** TRANSLATORS: "Failed/Completed/Skipped %s because not: %s {or %s}" */ | 464 | /** TRANSLATORS: 'Failed/Completed/Skipped %s because not: %s {or %s}' */ |
260 | 464 | condition_string = (boost::format(_("%s or ")) % condition_string).str(); | 465 | condition_string = (boost::format(_("%s or ")) % condition_string).str(); |
261 | 465 | } | 466 | } |
262 | 466 | result_string = | 467 | result_string = |
264 | 467 | /** TRANSLATORS: "Failed/Completed/Skipped %s because not: %s {or %s}" */ | 468 | /** TRANSLATORS: 'Failed/Completed/Skipped %s because not: %s {or %s}' */ |
265 | 468 | (boost::format(_("%1$s because not: %2$s")) % statistics_string % condition_string).str(); | 469 | (boost::format(_("%1$s because not: %2$s")) % statistics_string % condition_string).str(); |
266 | 469 | } | 470 | } |
267 | 470 | snprintf | 471 | snprintf |
268 | @@ -828,7 +829,7 @@ | |||
269 | 828 | if (uint8_t const nr_missing_groups = l_groups.size()) { | 829 | if (uint8_t const nr_missing_groups = l_groups.size()) { |
270 | 829 | const Tribe_Descr & tribe = ps.owner().tribe(); | 830 | const Tribe_Descr & tribe = ps.owner().tribe(); |
271 | 830 | std::string result_string = | 831 | std::string result_string = |
273 | 831 | /** TRANSLATORS: e.g. "Failed work because: water, wheat (2) are missing" */ | 832 | /** TRANSLATORS: e.g. 'Failed work because: water, wheat (2) are missing' */ |
274 | 832 | (boost::format(_("Failed %s because:")) % ps.top_state().program->descname()).str(); | 833 | (boost::format(_("Failed %s because:")) % ps.top_state().program->descname()).str(); |
275 | 833 | 834 | ||
276 | 834 | for (wl_const_range<Groups> i(l_groups); i;) | 835 | for (wl_const_range<Groups> i(l_groups); i;) |
277 | @@ -837,13 +838,13 @@ | |||
278 | 837 | for (wl_const_range<std::set<Ware_Index> > j(i.current->first); j;) | 838 | for (wl_const_range<std::set<Ware_Index> > j(i.current->first); j;) |
279 | 838 | { | 839 | { |
280 | 839 | result_string = | 840 | result_string = |
282 | 840 | /** TRANSLATORS: Adds a ware to list of wares in "Failed/Skipped ..." messages. */ | 841 | /** TRANSLATORS: Adds a ware to list of wares in 'Failed/Skipped ...' messages. */ |
283 | 841 | (boost::format(_("%1$s %2$s")) % result_string | 842 | (boost::format(_("%1$s %2$s")) % result_string |
284 | 842 | % tribe.get_ware_descr(j.front())->descname()) | 843 | % tribe.get_ware_descr(j.front())->descname()) |
285 | 843 | .str(); | 844 | .str(); |
286 | 844 | if (j.advance().empty()) | 845 | if (j.advance().empty()) |
287 | 845 | break; | 846 | break; |
289 | 846 | /** TRANSLATORS: Separator for list of wares in "Failed/Skipped ..." messages. */ | 847 | /** TRANSLATORS: Separator for list of wares in 'Failed/Skipped ...' messages. */ |
290 | 847 | result_string = (boost::format(_("%s,")) % result_string).str(); | 848 | result_string = (boost::format(_("%s,")) % result_string).str(); |
291 | 848 | } | 849 | } |
292 | 849 | { | 850 | { |
293 | @@ -851,7 +852,7 @@ | |||
294 | 851 | if (1 < count) { | 852 | if (1 < count) { |
295 | 852 | // TODO this should be done with ngettext | 853 | // TODO this should be done with ngettext |
296 | 853 | result_string = | 854 | result_string = |
298 | 854 | /** TRANSLATORS: e.g. "Failed work because: water, wheat (2) are missing" */ | 855 | /** TRANSLATORS: e.g. 'Failed work because: water, wheat (2) are missing' */ |
299 | 855 | (boost::format(_("%1$s (%2$i)")) % result_string | 856 | (boost::format(_("%1$s (%2$i)")) % result_string |
300 | 856 | % static_cast<unsigned int>(count)) | 857 | % static_cast<unsigned int>(count)) |
301 | 857 | .str(); | 858 | .str(); |
302 | @@ -862,8 +863,9 @@ | |||
303 | 862 | result_string = (boost::format(_("%s and")) % result_string).str(); | 863 | result_string = (boost::format(_("%s and")) % result_string).str(); |
304 | 863 | } | 864 | } |
305 | 864 | result_string = | 865 | result_string = |
307 | 865 | /** TRANSLATORS: e.g. "Failed work because: water, wheat (2) are missing" */ | 866 | /** TRANSLATORS: e.g. %1$s = 'Failed work because: water, wheat (2)' %2$s = 'are missing' */ |
308 | 866 | (boost::format(_("%1$s %2$s")) % result_string | 867 | (boost::format(_("%1$s %2$s")) % result_string |
309 | 868 | /** TRANSLATORS: e.g. 'Failed work because: water, wheat (2) are missing' */ | ||
310 | 867 | % ngettext(" is missing", " are missing", nr_missing_groups)) | 869 | % ngettext(" is missing", " are missing", nr_missing_groups)) |
311 | 868 | .str(); | 870 | .str(); |
312 | 869 | 871 | ||
313 | @@ -958,6 +960,7 @@ | |||
314 | 958 | uint8_t const count = i.current->second; | 960 | uint8_t const count = i.current->second; |
315 | 959 | if (1 < count) { | 961 | if (1 < count) { |
316 | 960 | char buffer[5]; | 962 | char buffer[5]; |
317 | 963 | /** TRANSLATORS: Number used in list of wares */ | ||
318 | 961 | sprintf(buffer, _("%u "), count); | 964 | sprintf(buffer, _("%u "), count); |
319 | 962 | result_string += buffer; | 965 | result_string += buffer; |
320 | 963 | } | 966 | } |
321 | @@ -965,9 +968,11 @@ | |||
322 | 965 | result_string += tribe.get_ware_descr(i.current->first)->descname(); | 968 | result_string += tribe.get_ware_descr(i.current->first)->descname(); |
323 | 966 | if (i.advance().empty()) | 969 | if (i.advance().empty()) |
324 | 967 | break; | 970 | break; |
325 | 971 | /** TRANSLATORS: Separator for list of wares */ | ||
326 | 968 | result_string += _(", "); | 972 | result_string += _(", "); |
327 | 969 | } | 973 | } |
328 | 970 | // Keep translateability in mind! | 974 | // Keep translateability in mind! |
329 | 975 | /** TRANSLATORS: %s is a list of wares */ | ||
330 | 971 | result_string = str(format(_("Produced %s")) % result_string); | 976 | result_string = str(format(_("Produced %s")) % result_string); |
331 | 972 | snprintf | 977 | snprintf |
332 | 973 | (ps.m_result_buffer, sizeof(ps.m_result_buffer), | 978 | (ps.m_result_buffer, sizeof(ps.m_result_buffer), |
333 | @@ -1054,6 +1059,7 @@ | |||
334 | 1054 | uint8_t const count = i.current->second; | 1059 | uint8_t const count = i.current->second; |
335 | 1055 | if (1 < count) { | 1060 | if (1 < count) { |
336 | 1056 | char buffer[5]; | 1061 | char buffer[5]; |
337 | 1062 | /** TRANSLATORS: Number used in list of workers */ | ||
338 | 1057 | sprintf(buffer, _("%u "), count); | 1063 | sprintf(buffer, _("%u "), count); |
339 | 1058 | unit_string += buffer; | 1064 | unit_string += buffer; |
340 | 1059 | } | 1065 | } |
341 | @@ -1061,9 +1067,11 @@ | |||
342 | 1061 | unit_string += tribe.get_worker_descr(i.current->first)->descname(); | 1067 | unit_string += tribe.get_worker_descr(i.current->first)->descname(); |
343 | 1062 | if (i.advance().empty()) | 1068 | if (i.advance().empty()) |
344 | 1063 | break; | 1069 | break; |
345 | 1070 | /** TRANSLATORS: Separator for list of workers */ | ||
346 | 1064 | unit_string += _(", "); | 1071 | unit_string += _(", "); |
347 | 1065 | } | 1072 | } |
349 | 1066 | std::string result_string = (boost::format(_("Recruited %s?")) % unit_string).str(); | 1073 | /** TRANSLATORS: %s is a lost of workers */ |
350 | 1074 | std::string result_string = (boost::format(_("Recruited %s")) % unit_string).str(); | ||
351 | 1067 | snprintf | 1075 | snprintf |
352 | 1068 | (ps.m_result_buffer, sizeof(ps.m_result_buffer), | 1076 | (ps.m_result_buffer, sizeof(ps.m_result_buffer), |
353 | 1069 | "%s", result_string.c_str()); | 1077 | "%s", result_string.c_str()); |
354 | @@ -1119,7 +1127,7 @@ | |||
355 | 1119 | "percentage", parameters); | 1127 | "percentage", parameters); |
356 | 1120 | } | 1128 | } |
357 | 1121 | std::string description = | 1129 | std::string description = |
359 | 1122 | /** TRANSLATORS: %1$s = name, %2$s = production program, %3$s = resource*/ | 1130 | /** TRANSLATORS: %1$s = production site name, %2$s = production program name, %3$s = resource */ |
360 | 1123 | (boost::format(_("%1$s %2$s mine %3$s")) % descr.descname() % production_program_name | 1131 | (boost::format(_("%1$s %2$s mine %3$s")) % descr.descname() % production_program_name |
361 | 1124 | % world.get_resource(m_resource)->descname()) | 1132 | % world.get_resource(m_resource)->descname()) |
362 | 1125 | .str(); | 1133 | .str(); |
363 | 1126 | 1134 | ||
364 | === modified file 'src/logic/soldier.cc' | |||
365 | --- src/logic/soldier.cc 2014-03-05 11:59:09 +0000 | |||
366 | +++ src/logic/soldier.cc 2014-03-08 16:14:22 +0000 | |||
367 | @@ -1557,14 +1557,12 @@ | |||
368 | 1557 | descname().c_str(), serial(), owner().player_number(), | 1557 | descname().c_str(), serial(), owner().player_number(), |
369 | 1558 | get_position().x, get_position().y, | 1558 | get_position().x, get_position().y, |
370 | 1559 | immovable_position ? | 1559 | immovable_position ? |
373 | 1560 | /** TRANSLATORS this is followed by "immovable" in the source string */ | 1560 | immovable_position->descr().descname().c_str() : ("no"), |
372 | 1561 | immovable_position->descr().descname().c_str() : _("no"), | ||
374 | 1562 | opponent.descname().c_str(), opponent.serial(), | 1561 | opponent.descname().c_str(), opponent.serial(), |
375 | 1563 | opponent.owner().player_number(), | 1562 | opponent.owner().player_number(), |
376 | 1564 | dest.x, dest.y, | 1563 | dest.x, dest.y, |
377 | 1565 | immovable_dest ? | 1564 | immovable_dest ? |
380 | 1566 | /** TRANSLATORS this is followed by "immovable" in the source string */ | 1565 | immovable_dest->descr().descname().c_str() : ("no"), |
379 | 1567 | immovable_dest->descr().descname().c_str() : _("no"), | ||
381 | 1568 | descname().c_str()); | 1566 | descname().c_str()); |
382 | 1569 | owner().add_message | 1567 | owner().add_message |
383 | 1570 | (game, | 1568 | (game, |
384 | 1571 | 1569 | ||
385 | === modified file 'src/network/nethost.cc' | |||
386 | --- src/network/nethost.cc 2014-03-06 12:52:12 +0000 | |||
387 | +++ src/network/nethost.cc 2014-03-08 16:14:22 +0000 | |||
388 | @@ -212,7 +212,7 @@ | |||
389 | 212 | h->setPlayerState(number, newstate, true); | 212 | h->setPlayerState(number, newstate, true); |
390 | 213 | } | 213 | } |
391 | 214 | 214 | ||
393 | 215 | virtual void setPlayerTribe | 215 | virtual void setPlayerTribe |
394 | 216 | (uint8_t const number, const std::string & tribe, bool const random_tribe) override | 216 | (uint8_t const number, const std::string & tribe, bool const random_tribe) override |
395 | 217 | { | 217 | { |
396 | 218 | if (number >= h->settings().players.size()) | 218 | if (number >= h->settings().players.size()) |
397 | @@ -444,8 +444,8 @@ | |||
398 | 444 | c.msg = (format(_("The client %s could not be found.")) % arg1).str(); | 444 | c.msg = (format(_("The client %s could not be found.")) % arg1).str(); |
399 | 445 | else { | 445 | else { |
400 | 446 | kickClient = num; | 446 | kickClient = num; |
403 | 447 | c.msg = (format(_("Are you sure you want to kick %s?<br>")) % arg1).str(); | 447 | c.msg = (format(_("Are you sure you want to kick %s?")) % arg1).str() + "<br>"; |
404 | 448 | c.msg += (format(_("The stated reason was: %s<br>")) % kickReason).str(); | 448 | c.msg += (format(_("The stated reason was: %s")) % kickReason).str() + "<br>"; |
405 | 449 | c.msg += (format(_("If yes, type: /ack_kick %s")) % arg1).str(); | 449 | c.msg += (format(_("If yes, type: /ack_kick %s")) % arg1).str(); |
406 | 450 | } | 450 | } |
407 | 451 | } | 451 | } |
408 | 452 | 452 | ||
409 | === modified file 'src/ui_fsmenu/editor_mapselect.cc' | |||
410 | --- src/ui_fsmenu/editor_mapselect.cc 2014-02-22 18:04:02 +0000 | |||
411 | +++ src/ui_fsmenu/editor_mapselect.cc 2014-03-08 16:14:22 +0000 | |||
412 | @@ -227,6 +227,7 @@ | |||
413 | 227 | m_parentdir = m_curdir.substr(0, m_curdir.rfind('\\')); | 227 | m_parentdir = m_curdir.substr(0, m_curdir.rfind('\\')); |
414 | 228 | #endif | 228 | #endif |
415 | 229 | std::string parent_string = | 229 | std::string parent_string = |
416 | 230 | /** TRANSLATORS: Parent directory */ | ||
417 | 230 | (boost::format("\\<%s\\>") % _("parent")).str(); | 231 | (boost::format("\\<%s\\>") % _("parent")).str(); |
418 | 231 | m_list.add | 232 | m_list.add |
419 | 232 | (parent_string.c_str(), | 233 | (parent_string.c_str(), |
420 | 233 | 234 | ||
421 | === modified file 'src/ui_fsmenu/launchMPG.cc' | |||
422 | --- src/ui_fsmenu/launchMPG.cc 2014-03-05 11:59:09 +0000 | |||
423 | +++ src/ui_fsmenu/launchMPG.cc 2014-03-08 16:14:22 +0000 | |||
424 | @@ -49,6 +49,7 @@ | |||
425 | 49 | (UI::Panel * parent, GameController * gc, uint32_t w, uint32_t h, | 49 | (UI::Panel * parent, GameController * gc, uint32_t w, uint32_t h, |
426 | 50 | UI::Font * font) | 50 | UI::Font * font) |
427 | 51 | : | 51 | : |
428 | 52 | /** TRANSLATORS: Dialog box title for selecting between map or saved game for new multiplayer game */ | ||
429 | 52 | Window(parent, "selection_window", 0, 0, w, h, _("Please select")), | 53 | Window(parent, "selection_window", 0, 0, w, h, _("Please select")), |
430 | 53 | m_ctrl(gc) | 54 | m_ctrl(gc) |
431 | 54 | { | 55 | { |
432 | 55 | 56 | ||
433 | === modified file 'src/wui/encyclopedia_window.cc' | |||
434 | --- src/wui/encyclopedia_window.cc 2014-03-05 11:59:09 +0000 | |||
435 | +++ src/wui/encyclopedia_window.cc 2014-03-08 16:14:22 +0000 | |||
436 | @@ -191,7 +191,7 @@ | |||
437 | 191 | tribe.get_ware_descr(*k)->descname(); | 191 | tribe.get_ware_descr(*k)->descname(); |
438 | 192 | if (k.advance().empty()) | 192 | if (k.advance().empty()) |
439 | 193 | break; | 193 | break; |
441 | 194 | /** TRANSLATORS: List or wares, e.g. "Fish or Meat" */ | 194 | /** TRANSLATORS: List of wares, e.g. "Fish or Meat" */ |
442 | 195 | ware_type_names += _(" or "); | 195 | ware_type_names += _(" or "); |
443 | 196 | } | 196 | } |
444 | 197 | 197 | ||
445 | 198 | 198 | ||
446 | === modified file 'src/wui/game_main_menu_save_game.cc' | |||
447 | --- src/wui/game_main_menu_save_game.cc 2014-03-05 11:59:09 +0000 | |||
448 | +++ src/wui/game_main_menu_save_game.cc 2014-03-08 16:14:22 +0000 | |||
449 | @@ -137,7 +137,9 @@ | |||
450 | 137 | 137 | ||
451 | 138 | char buf[200]; | 138 | char buf[200]; |
452 | 139 | uint8_t player_nr = parent.game().player_manager()->get_number_of_players(); | 139 | uint8_t player_nr = parent.game().player_manager()->get_number_of_players(); |
454 | 140 | sprintf(buf, "%i %s", player_nr, ngettext(_("player"), _("players"), player_nr)); | 140 | // TODO: This should be ngettext(" %i player" etc. with boost::format, but it refuses to work |
455 | 141 | /** TRANSLATORS: This is preceded by a number */ | ||
456 | 142 | sprintf(buf, "%i %s", player_nr, ngettext("player", "players", player_nr)); | ||
457 | 141 | m_players_label.set_text(buf); | 143 | m_players_label.set_text(buf); |
458 | 142 | m_win_condition.set_text(parent.game().get_win_condition_displayname()); | 144 | m_win_condition.set_text(parent.game().get_win_condition_displayname()); |
459 | 143 | } | 145 | } |
460 | @@ -175,7 +177,9 @@ | |||
461 | 175 | char buf[200]; | 177 | char buf[200]; |
462 | 176 | sprintf | 178 | sprintf |
463 | 177 | (buf, "%i %s", gpdp.get_number_of_players(), | 179 | (buf, "%i %s", gpdp.get_number_of_players(), |
465 | 178 | ngettext(_("player"), _("players"), gpdp.get_number_of_players())); | 180 | // TODO: This should be ngettext(" %i player" etc. with boost::format, but it refuses to work |
466 | 181 | /** TRANSLATORS: This is preceded by a number */ | ||
467 | 182 | ngettext("player", "players", gpdp.get_number_of_players())); | ||
468 | 179 | m_players_label.set_text(buf); | 183 | m_players_label.set_text(buf); |
469 | 180 | } else { | 184 | } else { |
470 | 181 | // Keep label empty | 185 | // Keep label empty |
471 | 182 | 186 | ||
472 | === modified file 'src/wui/playerdescrgroup.cc' | |||
473 | --- src/wui/playerdescrgroup.cc 2014-03-05 11:59:09 +0000 | |||
474 | +++ src/wui/playerdescrgroup.cc 2014-03-08 16:14:22 +0000 | |||
475 | @@ -174,7 +174,7 @@ | |||
476 | 174 | if (player.random_ai) { | 174 | if (player.random_ai) { |
477 | 175 | title += _("AI: Random"); | 175 | title += _("AI: Random"); |
478 | 176 | } else { | 176 | } else { |
480 | 177 | /** TRANSLATORS %s = AI type, e.g. "Agressive" */ | 177 | /** TRANSLATORS %s = AI type, e.g. 'Agressive' */ |
481 | 178 | title += (boost::format(_("AI: %s")) % _(player.ai)).str(); | 178 | title += (boost::format(_("AI: %s")) % _(player.ai)).str(); |
482 | 179 | } | 179 | } |
483 | 180 | } | 180 | } |
484 | 181 | 181 | ||
485 | === modified file 'tribes/atlanteans/scripting/sc01_castle_village.lua' | |||
486 | --- tribes/atlanteans/scripting/sc01_castle_village.lua 2014-02-25 14:45:19 +0000 | |||
487 | +++ tribes/atlanteans/scripting/sc01_castle_village.lua 2014-03-08 16:14:22 +0000 | |||
488 | @@ -98,10 +98,10 @@ | |||
489 | 98 | wares = { trunk = 1 } | 98 | wares = { trunk = 1 } |
490 | 99 | }) | 99 | }) |
491 | 100 | end) then | 100 | end) then |
496 | 101 | plr:send_message(_"Not enough space", _ | 101 | plr:send_message(_"Not enough space", _( |
497 | 102 | [[Some of your starting buildings didn’t have enough room and | 102 | [[Some of your starting buildings didn’t have enough room and ]] .. |
498 | 103 | weren’t built. You are at a disadvantage with this; consider restarting | 103 | [[weren’t built. You are at a disadvantage with this; consider restarting ]] .. |
499 | 104 | this map with a fair starting condition.]], {popup=true} | 104 | [[this map with a fair starting condition.]]), {popup=true} |
500 | 105 | ) | 105 | ) |
501 | 106 | end | 106 | end |
502 | 107 | 107 | ||
503 | 108 | 108 | ||
504 | === modified file 'tribes/barbarians/coalmine/help.lua' | |||
505 | --- tribes/barbarians/coalmine/help.lua 2014-03-05 18:47:03 +0000 | |||
506 | +++ tribes/barbarians/coalmine/help.lua 2014-03-08 16:14:22 +0000 | |||
507 | @@ -9,8 +9,9 @@ | |||
508 | 9 | --Lore Section | 9 | --Lore Section |
509 | 10 | rt(h2(_"Lore")) .. | 10 | rt(h2(_"Lore")) .. |
510 | 11 | rt("image=tribes/barbarians/coalmine/coalmine_i_00.png", p( | 11 | rt("image=tribes/barbarians/coalmine/coalmine_i_00.png", p( |
513 | 12 | _[[Ages ago, the Barbarians learned to delve into mountainsides for that black material that feeds their furnaces. <br> | 12 | _([[Ages ago, the Barbarians learned to delve into mountainsides for that black material that feeds their furnaces.<br> |
514 | 13 | Wood may serve for a household fire and to keep you warm, but when it comes to working with iron or gold, there is no way around coal.]] | 13 | ]] .. |
515 | 14 | [[Wood may serve for a household fire and to keep you warm, but when it comes to working with iron or gold, there is no way around coal.]]) | ||
516 | 14 | )) .. | 15 | )) .. |
517 | 15 | --General Section | 16 | --General Section |
518 | 16 | rt(h2(_"General")) .. | 17 | rt(h2(_"General")) .. |
519 | 17 | 18 | ||
520 | === modified file 'tribes/barbarians/conf' | |||
521 | --- tribes/barbarians/conf 2014-03-05 18:47:03 +0000 | |||
522 | +++ tribes/barbarians/conf 2014-03-08 16:14:22 +0000 | |||
523 | @@ -105,7 +105,7 @@ | |||
524 | 105 | strongbeer=_Strong Beer | 105 | strongbeer=_Strong Beer |
525 | 106 | thatchreed=_Thatch Reed | 106 | thatchreed=_Thatch Reed |
526 | 107 | trunk=_Log | 107 | trunk=_Log |
528 | 108 | warhelmet=_War Helm | 108 | warhelmet=_Warhelm |
529 | 109 | warriorsaxe=_Warrior’s Ax | 109 | warriorsaxe=_Warrior’s Ax |
530 | 110 | water=_Water | 110 | water=_Water |
531 | 111 | wheat=_Wheat | 111 | wheat=_Wheat |
532 | 112 | 112 | ||
533 | === modified file 'tribes/barbarians/deep_coalmine/help.lua' | |||
534 | --- tribes/barbarians/deep_coalmine/help.lua 2014-03-05 18:47:03 +0000 | |||
535 | +++ tribes/barbarians/deep_coalmine/help.lua 2014-03-08 16:14:22 +0000 | |||
536 | @@ -9,8 +9,9 @@ | |||
537 | 9 | --Lore Section | 9 | --Lore Section |
538 | 10 | rt(h2(_"Lore")) .. | 10 | rt(h2(_"Lore")) .. |
539 | 11 | rt("image=tribes/barbarians/deep_coalmine/deep_coalmine_i_00.png", p(--text identical to coalmine | 11 | rt("image=tribes/barbarians/deep_coalmine/deep_coalmine_i_00.png", p(--text identical to coalmine |
542 | 12 | _[[Ages ago, the Barbarians learned to delve into mountainsides for that black material that feeds their furnaces. <br> | 12 | _([[Ages ago, the Barbarians learned to delve into mountainsides for that black material that feeds their furnaces.<br> |
543 | 13 | Wood may serve for a household fire and to keep you warm, but when it comes to working with iron or gold, there is no way around coal.]] | 13 | ]] .. |
544 | 14 | [[Wood may serve for a household fire and to keep you warm, but when it comes to working with iron or gold, there is no way around coal.]]) | ||
545 | 14 | )) .. | 15 | )) .. |
546 | 15 | --General Section | 16 | --General Section |
547 | 16 | rt(h2(_"General")) .. | 17 | rt(h2(_"General")) .. |
548 | 17 | 18 | ||
549 | === modified file 'tribes/barbarians/deeper_coalmine/help.lua' | |||
550 | --- tribes/barbarians/deeper_coalmine/help.lua 2014-03-05 18:47:03 +0000 | |||
551 | +++ tribes/barbarians/deeper_coalmine/help.lua 2014-03-08 16:14:22 +0000 | |||
552 | @@ -9,8 +9,9 @@ | |||
553 | 9 | --Lore Section | 9 | --Lore Section |
554 | 10 | rt(h2(_"Lore")) .. | 10 | rt(h2(_"Lore")) .. |
555 | 11 | rt("image=tribes/barbarians/deeper_coalmine/deeper_coalmine_i_00.png", p(--text identical to coalmine | 11 | rt("image=tribes/barbarians/deeper_coalmine/deeper_coalmine_i_00.png", p(--text identical to coalmine |
558 | 12 | _[[Ages ago, the Barbarians learned to delve into mountainsides for that black material that feeds their furnaces. <br> | 12 | _([[Ages ago, the Barbarians learned to delve into mountainsides for that black material that feeds their furnaces.<br> |
559 | 13 | Wood may serve for a household fire and to keep you warm, but when it comes to working with iron or gold, there is no way around coal.]] | 13 | ]] .. |
560 | 14 | [[Wood may serve for a household fire and to keep you warm, but when it comes to working with iron or gold, there is no way around coal.]]) | ||
561 | 14 | )) .. | 15 | )) .. |
562 | 15 | --General Section | 16 | --General Section |
563 | 16 | rt(h2(_"General")) .. | 17 | rt(h2(_"General")) .. |
564 | 17 | 18 | ||
565 | === modified file 'tribes/barbarians/scripting/sc01_citadel_village.lua' | |||
566 | --- tribes/barbarians/scripting/sc01_citadel_village.lua 2014-02-25 14:45:19 +0000 | |||
567 | +++ tribes/barbarians/scripting/sc01_citadel_village.lua 2014-03-08 16:14:22 +0000 | |||
568 | @@ -91,10 +91,10 @@ | |||
569 | 91 | wares = { raw_stone = 6, coal = 3 }, | 91 | wares = { raw_stone = 6, coal = 3 }, |
570 | 92 | }) | 92 | }) |
571 | 93 | end) then | 93 | end) then |
576 | 94 | plr:send_message(_"Not enough space", _ | 94 | plr:send_message(_"Not enough space", _( |
577 | 95 | [[Some of your starting buildings didn’t have enough room and | 95 | [[Some of your starting buildings didn’t have enough room and ]] .. |
578 | 96 | weren’t built. You are at a disadvantage with this; consider restarting | 96 | [[weren’t built. You are at a disadvantage with this; consider restarting ]] .. |
579 | 97 | this map with a fair starting condition.]], {popup=true} | 97 | [[this map with a fair starting condition.]]), {popup=true} |
580 | 98 | ) | 98 | ) |
581 | 99 | end | 99 | end |
582 | 100 | end, | 100 | end, |
583 | 101 | 101 | ||
584 | === modified file 'tribes/empire/scripting/sc01_castle_village.lua' | |||
585 | --- tribes/empire/scripting/sc01_castle_village.lua 2014-02-25 14:45:19 +0000 | |||
586 | +++ tribes/empire/scripting/sc01_castle_village.lua 2014-03-08 16:14:22 +0000 | |||
587 | @@ -116,10 +116,10 @@ | |||
588 | 116 | 116 | ||
589 | 117 | place_building_in_region(plr, "stonemasons_house", sf:region(11)) | 117 | place_building_in_region(plr, "stonemasons_house", sf:region(11)) |
590 | 118 | end) then | 118 | end) then |
595 | 119 | plr:send_message(_"Not enough space", _ | 119 | plr:send_message(_"Not enough space", _( |
596 | 120 | [[Some of your starting buildings didn’t have enough room and | 120 | [[Some of your starting buildings didn’t have enough room and ]] .. |
597 | 121 | weren’t built. You are at a disadvantage with this; consider restarting | 121 | [[weren’t built. You are at a disadvantage with this; consider restarting ]] .. |
598 | 122 | this map with a fair starting condition.]], {popup=true} | 122 | [[this map with a fair starting condition.]]), {popup=true} |
599 | 123 | ) | 123 | ) |
600 | 124 | end | 124 | end |
601 | 125 | end | 125 | end |
602 | 126 | 126 | ||
603 | === modified file 'txts/README.lua' | |||
604 | --- txts/README.lua 2014-03-03 20:50:30 +0000 | |||
605 | +++ txts/README.lua 2014-03-08 16:14:22 +0000 | |||
606 | @@ -58,8 +58,8 @@ | |||
607 | 58 | ) .. h2(_ | 58 | ) .. h2(_ |
608 | 59 | [[Keyboard shortcuts (in-game)]] | 59 | [[Keyboard shortcuts (in-game)]] |
609 | 60 | ) .. p( | 60 | ) .. p( |
612 | 61 | _"PAGEUP: increases games peed" .. "<br>" | 61 | _"PAGEUP: increases game speed" .. "<br>" |
613 | 62 | .. _"PAGEDOWN: decreases games peed" .. "<br>" | 62 | .. _"PAGEDOWN: decreases game speed" .. "<br>" |
614 | 63 | .. _"PAUSE: pauses the game" .. "<br>" | 63 | .. _"PAUSE: pauses the game" .. "<br>" |
615 | 64 | .. _"SPACE: toggles if building spaces are shown" .. "<br>" | 64 | .. _"SPACE: toggles if building spaces are shown" .. "<br>" |
616 | 65 | .. _"M: toggles minimap" .. "<br>" | 65 | .. _"M: toggles minimap" .. "<br>" |
I have a question about the changes made to for example the wood gnome win condition.
having quotes for each line makes it really inconvenient to type those texts (in the source). I.e.
[[Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.]]
is much better than
[[Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod ]] ..
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, ]] ..
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo ]] ..
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse ]] ..
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non ]] ..
proident, sunt in culpa qui officia deserunt mollit anim id est laborum. ]] ..
Why are those changes necessary?