diff --git a/res/core/de/strings.xml b/res/core/de/strings.xml index c233a507f..e2003f997 100644 --- a/res/core/de/strings.xml +++ b/res/core/de/strings.xml @@ -364,6 +364,43 @@ und im and to the + + Schemen der Regionen + Schemes of + + + sind erkennbar. + can be discerned. + + + Im + To the + + + und im + , and to the + + + , im + , to the + + + Die Region wird von + The region is guarded by + + + unbekannten Einheiten + unknown units + + + bewacht. + . + + + (im Bau) + (under construction) + + Einheit Unit diff --git a/res/core/messages.xml b/res/core/messages.xml index a2797727e..ac9a2e18b 100644 --- a/res/core/messages.xml +++ b/res/core/messages.xml @@ -924,6 +924,38 @@ "Auf dem Markt wird $resource($p1,0) feilgeboten." "The local market offers $resource($p1,0)." + + + + + + "Auf der Einheit $if($eq($left,1),"liegt","liegen") $int($left) Wirkung$if($eq($left,1),"","en") $resource($potion,1)." + "There are $int($left) use($eq($left,1),"s","") of $resource($potion,1) left." + + + + + + "Die Region ist im Besitz von $faction($faction)." + "The region is owned by $faction($faction)." + + + + + + + "$if($transparent," befindet sich"," versperrt") ${object} $if($transparent,""," die Sicht")." + "$if($transparent," there is"," sight is blocked by ") ${object}." + + + + + + + ", belagert von $int($soldiers) Personen$if($lt($diff,0),""," (abgeschnitten)")" + ", besieged by $int($soldiers) soldiers$if($lt($diff,0),""," (cut off)")" + + diff --git a/src/report.c b/src/report.c index f037ced56..7b794e709 100644 --- a/src/report.c +++ b/src/report.c @@ -634,10 +634,10 @@ int indent) for (; a; a = a->next) { char buf[4096]; + message *msg; if (fval(a->type, ATF_CURSE)) { curse *c = (curse *)a->data.v; - message *msg; if (c->type->cansee) { self = c->type->cansee(viewer, obj, typ, c, self); @@ -654,13 +654,11 @@ int indent) else if (a->type == &at_effect && self) { effect_data *data = (effect_data *)a->data.v; if (data->value > 0) { - sprintf(buf, "Auf der Einheit lieg%s %d Wirkung%s %s.", - (data->value == 1 ? "t" : "en"), - data->value, - (data->value == 1 ? "" : "en"), - LOC(default_locale, resourcename(data->type->itype->rtype, 0))); - rnl(F); + msg = msg_message("nr_potion_effect", "potion left", + data->type->itype->rtype, data->value); + nr_render(msg, viewer->locale, buf, sizeof(buf), viewer); rparagraph(F, buf, indent, 2, 0); + msg_release(msg); } } } @@ -826,7 +824,7 @@ static void prices(FILE * F, const region * r, const faction * f) if (wrptr(&bufp, &size, bytes) != 0) WARN_STATIC_BUFFER(); - for (dmd = r->land->demands; dmd; dmd = dmd->next) + for (dmd = r->land->demands; dmd; dmd = dmd->next){ if (dmd->value > 0) { m = msg_message("nr_market_price", "product price", dmd->type->itype->rtype, dmd->value * dmd->type->price); @@ -836,23 +834,24 @@ static void prices(FILE * F, const region * r, const faction * f) msg_release(m); n--; if (n == 0) { - bytes = (int)strlcpy(bufp, LOC(f->locale, "nr_trade_end"), size); + bytes = (int)strlcpy(bufp, LOC(f->locale, "nr_trade_end"), + size); if (wrptr(&bufp, &size, bytes) != 0) WARN_STATIC_BUFFER(); - } - else if (n == 1) { + } else if (n == 1) { bytes = (int)strlcpy(bufp, " ", size); if (wrptr(&bufp, &size, bytes) != 0) WARN_STATIC_BUFFER(); - bytes = (int)strlcpy(bufp, LOC(f->locale, "nr_trade_final"), size); + bytes = (int)strlcpy(bufp, LOC(f->locale, "nr_trade_final"), + size); if (wrptr(&bufp, &size, bytes) != 0) WARN_STATIC_BUFFER(); bytes = (int)strlcpy(bufp, " ", size); if (wrptr(&bufp, &size, bytes) != 0) WARN_STATIC_BUFFER(); - } - else { - bytes = (int)strlcpy(bufp, LOC(f->locale, "nr_trade_next"), size); + } else { + bytes = (int)strlcpy(bufp, LOC(f->locale, "nr_trade_next"), + size); if (wrptr(&bufp, &size, bytes) != 0) WARN_STATIC_BUFFER(); bytes = (int)strlcpy(bufp, " ", size); @@ -860,6 +859,7 @@ static void prices(FILE * F, const region * r, const faction * f) WARN_STATIC_BUFFER(); } } + } } /* Schreibe Paragraphen */ *bufp = 0; @@ -1099,10 +1099,12 @@ static void describe(FILE * F, const seen_region * sr, faction * f) if (rule_region_owners()) { const faction *owner = region_get_owner(r); + message *msg; + if (owner != NULL) { - // TODO: localization - bytes = _snprintf(bufp, size, " Die Region ist im Besitz von %s.", - factionname(owner)); + msg = msg_message("nr_region_owner", "faction", owner); + bytes = (int)nr_render(msg, f->locale, bufp, size, f); + msg_release(msg); if (wrptr(&bufp, &size, bytes) != 0) WARN_STATIC_BUFFER(); } @@ -1207,7 +1209,9 @@ static void describe(FILE * F, const seen_region * sr, faction * f) if (rl) { bufp = buf; size = sizeof(buf) - 1; - bytes = (int)strlcpy(bufp, "Schemen der Regionen ", size); + + // this localization might not work for every language but is fine for de and en + bytes = (int)strlcpy(bufp, LOC(f->locale, "nr_schemes_prefix"), size); if (wrptr(&bufp, &size, bytes) != 0) WARN_STATIC_BUFFER(); rl2 = rl; @@ -1222,7 +1226,7 @@ static void describe(FILE * F, const seen_region * sr, faction * f) WARN_STATIC_BUFFER(); } } - bytes = (int)strlcpy(bufp, " sind erkennbar.", size); + bytes = (int)strlcpy(bufp, LOC(f->locale, "nr_schemes_postfix"), size); if (wrptr(&bufp, &size, bytes) != 0) WARN_STATIC_BUFFER(); free_regionlist(rl); @@ -1249,17 +1253,20 @@ static void describe(FILE * F, const seen_region * sr, faction * f) rnl(F); for (e = edges; e; e = e->next) { bool first = true; + message *msg; + bufp = buf; size = sizeof(buf) - 1; for (d = 0; d != MAXDIRECTIONS; ++d) { if (!e->exist[d]) continue; + // this localization might not work for every language but is fine for de and en if (first) - bytes = (int)strlcpy(bufp, "Im ", size); + bytes = (int)strlcpy(bufp, LOC(f->locale, "nr_borderlist_prefix"), size); else if (e->lastd == d) - bytes = (int)strlcpy(bufp, " und im ", size); + bytes = (int)strlcpy(bufp, LOC(f->locale, "nr_borderlist_lastfix"), size); else - bytes = (int)strlcpy(bufp, ", im ", size); + bytes = (int)strlcpy(bufp, LOC(f->locale, "nr_borderlist_infix"), size); if (wrptr(&bufp, &size, bytes) != 0) WARN_STATIC_BUFFER(); bytes = (int)strlcpy(bufp, LOC(f->locale, directions[d]), size); @@ -1267,21 +1274,14 @@ static void describe(FILE * F, const seen_region * sr, faction * f) WARN_STATIC_BUFFER(); first = false; } - if (!e->transparent) - bytes = (int)strlcpy(bufp, " versperrt ", size); - else - bytes = (int)strlcpy(bufp, " befindet sich ", size); - if (wrptr(&bufp, &size, bytes) != 0) - WARN_STATIC_BUFFER(); - bytes = (int)strlcpy(bufp, e->name, size); - if (wrptr(&bufp, &size, bytes) != 0) - WARN_STATIC_BUFFER(); - if (!e->transparent) - bytes = (int)strlcpy(bufp, " die Sicht.", size); - else - bytes = (int)strlcpy(bufp, ".", size); + // TODO name is localized? Works for roads anyway... + msg = msg_message("nr_borderlist_postfix", "transparent object", + e->transparent, e->name); + bytes = (int)nr_render(msg, f->locale, bufp, size, f); + msg_release(msg); if (wrptr(&bufp, &size, bytes) != 0) WARN_STATIC_BUFFER(); + *bufp = 0; rparagraph(F, buf, 0, 0, 0); } @@ -1420,15 +1420,17 @@ static void durchreisende(FILE * F, const region * r, const faction * f) ++counter; if (u->ship != NULL) { #ifdef GERMAN_FLUFF_ENABLED - if (counter == 1) { - bytes = (int)strlcpy(bufp, "Die ", size); - } - else { - bytes = (int)strlcpy(bufp, "die ", size); - } - if (wrptr(&bufp, &size, bytes) != 0) { - WARN_STATIC_BUFFER(); - break; + if (strcmp("de", f->locale->name)==0) { + if (counter == 1) { + bytes = (int)strlcpy(bufp, "Die ", size); + } + else { + bytes = (int)strlcpy(bufp, "die ", size); + } + if (wrptr(&bufp, &size, bytes) != 0) { + WARN_STATIC_BUFFER(); + break; + } } #endif bytes = (int)strlcpy(bufp, shipname(u->ship), size); @@ -1827,7 +1829,7 @@ static void guards(FILE * F, const region * r, const faction * see) size_t size = sizeof(buf) - 1; int bytes; - bytes = (int)strlcpy(bufp, "Die Region wird von ", size); + bytes = (int)strlcpy(bufp, LOC(see->locale, "nr_guarding_prefix"), size); if (wrptr(&bufp, &size, bytes) != 0) WARN_STATIC_BUFFER(); @@ -1846,12 +1848,12 @@ static void guards(FILE * F, const region * r, const faction * see) bytes = (int)strlcpy(bufp, factionname(guardians[i]), size); } else { - bytes = (int)strlcpy(bufp, "unbekannten Einheiten", size); + bytes = (int)strlcpy(bufp, LOC(see->locale, "nr_guarding_unknown"), size); } if (wrptr(&bufp, &size, bytes) != 0) WARN_STATIC_BUFFER(); } - bytes = (int)strlcpy(bufp, " bewacht.", size); + bytes = (int)strlcpy(bufp, LOC(see->locale, "nr_guarding_postfix"), size); if (wrptr(&bufp, &size, bytes) != 0) WARN_STATIC_BUFFER(); rnl(F); @@ -1984,6 +1986,7 @@ const faction * f) const char *name, *bname, *billusion = NULL; const struct locale *lang = NULL; char buffer[8192], *bufp = buffer; + message *msg; size_t size = sizeof(buffer) - 1; rnl(F); @@ -2014,26 +2017,18 @@ const faction * f) } if (b->size < b->type->maxsize) { - bytes = (int)strlcpy(bufp, " (im Bau)", size); + bytes = (int)strlcpy(bufp, LOC(f->locale, "nr_building_inprogress"), size); if (wrptr(&bufp, &size, bytes) != 0) WARN_STATIC_BUFFER(); } if (b->besieged > 0 && sr->mode >= see_lighthouse) { - bytes = (int)strlcpy(bufp, ", belagert von ", size); + msg = msg_message("nr_building_besieged", "soldiers diff", b->besieged, + b->besieged - b->size * SIEGEFACTOR); + bytes = (int)nr_render(msg, f->locale, bufp, size, f); if (wrptr(&bufp, &size, bytes) != 0) WARN_STATIC_BUFFER(); - bytes = (int)strlcpy(bufp, itoa10(b->besieged), size); - if (wrptr(&bufp, &size, bytes) != 0) - WARN_STATIC_BUFFER(); - bytes = (int)strlcpy(bufp, " Personen ", size); - if (wrptr(&bufp, &size, bytes) != 0) - WARN_STATIC_BUFFER(); - if (b->besieged >= b->size * SIEGEFACTOR) { - bytes = (int)strlcpy(bufp, "(abgeschnitten)", size); - if (wrptr(&bufp, &size, bytes) != 0) - WARN_STATIC_BUFFER(); - } + msg_release(msg); } i = 0; if (b->display && b->display[0]) {