dev-version:

- STRINGS
  Angefangen mit Strings für die NR-Generierung. Haben alle einene nr_ prefix.
  Verschiedene Pluralformen gefixt.

- LOKALISIERUNG
  #define LOC(s, l) locale_tring(s, l) -- kürzer und schöner.
  argument-typ der donation-message gefixt
This commit is contained in:
Enno Rehling 2001-04-22 05:36:50 +00:00
parent 4c07cd9be0
commit 1830bedd47
19 changed files with 307 additions and 274 deletions

View File

@ -127,7 +127,7 @@ write_translations(FILE * F)
for (i=0;i!=TRANSMAXHASH;++i) { for (i=0;i!=TRANSMAXHASH;++i) {
translation * t = translation_table[i]; translation * t = translation_table[i];
while (t) { while (t) {
fprintf(F, "\"%s\";%s\n", t->value, t->key); fprintf(F, "\"%s\";%s\n", t->value, crtag(t->key));
t = t->next; t = t->next;
} }
} }
@ -333,6 +333,7 @@ static void
report_crtypes(FILE * F, const struct locale* lang) report_crtypes(FILE * F, const struct locale* lang)
{ {
int i; int i;
#ifdef OLD_MESSAGETYPES
fputs("MESSAGETYPES\n", F); fputs("MESSAGETYPES\n", F);
for (i=0;i!=MTMAXHASH;++i) { for (i=0;i!=MTMAXHASH;++i) {
struct known_mtype * kmt; struct known_mtype * kmt;
@ -351,6 +352,26 @@ report_crtypes(FILE * F, const struct locale* lang)
free(kmt); free(kmt);
} }
} }
#else
for (i=0;i!=MTMAXHASH;++i) {
struct known_mtype * kmt;
for (kmt=mtypehash[i];kmt;kmt=kmt->nexthash) {
const struct nrmessage_type * nrt = nrt_find(lang, kmt->mtype);
if (nrt) {
unsigned int hash = hashstring(mt_name(kmt->mtype));
fprintf(F, "MESSAGETYPE %d\n", hash);
fputc('\"', F);
fputs(escape_string(nrt_string(nrt), NULL, 0), F);
fputs("\";text\n", F);
}
}
while (mtypehash[i]) {
kmt = mtypehash[i];
mtypehash[i] = mtypehash[i]->nexthash;
free(kmt);
}
}
#endif
} }
static void static void
@ -690,7 +711,7 @@ cr_output_unit(FILE * F, region * r,
pr = 1; pr = 1;
fputs("GEGENSTAENDE\n", F); fputs("GEGENSTAENDE\n", F);
} }
fprintf(F, "%d;%s\n", in, locale_string(NULL, ic)); fprintf(F, "%d;%s\n", in, add_translation(ic, locale_string(f->locale, ic)));
} }
if ((u->faction == f || omniscient(f)) && u->botschaften) if ((u->faction == f || omniscient(f)) && u->botschaften)

View File

@ -43,7 +43,7 @@ RSC=rc.exe
# PROP Intermediate_Dir "Release" # PROP Intermediate_Dir "Release"
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
# ADD CPP /nologo /Za /W4 /GX /Z7 /O2 /I "../kernel" /I "../util" /I "../.." /I ".." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c # ADD CPP /nologo /Za /W4 /GX /Z7 /O2 /I "../util" /I "../kernel" /I "../.." /I ".." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
# ADD BASE RSC /l 0x407 # ADD BASE RSC /l 0x407
# ADD RSC /l 0x407 # ADD RSC /l 0x407
BSC32=bscmake.exe BSC32=bscmake.exe

View File

@ -165,33 +165,24 @@ read_datenames(const char *filename)
} }
char * char *
gamedate(void) gamedate(const struct locale * lang)
{ {
int year,month,week,r; int year,month,week,r;
static char buf[256]; static char buf[256];
int t = turn - FIRST_TURN; int t = turn - FIRST_TURN;
if (t<0) t = turn; if (t<0) t = turn;
assert(lang);
year = t/(months_per_year * weeks_per_month) + 1; year = t/(months_per_year * weeks_per_month) + 1;
r = t - (year-1) * months_per_year * weeks_per_month; r = t - (year-1) * months_per_year * weeks_per_month;
month = r/weeks_per_month; month = r/weeks_per_month;
week = r%weeks_per_month; week = r%weeks_per_month;
if (turn>=FIRST_TURN) { sprintf(buf, LOC(lang, "nr_calendar"),
weeknames[week],
sprintf(buf, "Wir schreiben %s des Monats %s im Jahre %d %s.", monthnames[month],
weeknames[week], year,
monthnames[month], agename);
year,
agename);
} else {
sprintf(buf, "Wir schreiben %s des Monats %s im Jahre %d %s.",
weeknames[week],
monthnames[month],
year,
"der alten Zeitrechnung");
}
return buf; return buf;
} }
@ -209,20 +200,11 @@ gamedate2(void)
r = t - (year-1) * months_per_year * weeks_per_month; r = t - (year-1) * months_per_year * weeks_per_month;
month = r/weeks_per_month; /* 0 - months_per_year-1 */ month = r/weeks_per_month; /* 0 - months_per_year-1 */
week = r%weeks_per_month; /* 0 - weeks_per_month-1 */ week = r%weeks_per_month; /* 0 - weeks_per_month-1 */
if (turn>=FIRST_TURN) { sprintf(buf, "in %s des Monats %s im Jahre %d %s.",
weeknames2[week],
sprintf(buf, "in %s des Monats %s im Jahre %d %s.", monthnames[month],
weeknames2[week], year,
monthnames[month], agename);
year,
agename);
} else {
sprintf(buf, "in %s des Monats %s im Jahre %d %s.",
weeknames2[week],
monthnames[month],
year,
"der alten Zeitrechnung");
}
return buf; return buf;
} }
@ -653,7 +635,7 @@ print_curses(FILE *F, const void * obj, typ_t typ, const attrib *a, int self, in
(data->value==1 ? "t" : "en"), (data->value==1 ? "t" : "en"),
data->value, data->value,
(data->value==1 ? "" : "en"), (data->value==1 ? "" : "en"),
locale_string(NULL, resourcename(data->type->itype->rtype, 0))); LOC(NULL, resourcename(data->type->itype->rtype, 0)));
rnl(F); rnl(F);
rparagraph(F, buf, indent, 0); rparagraph(F, buf, indent, 0);
} }
@ -743,7 +725,7 @@ rp_messages(FILE * F, message_list * msgs, faction * viewer, int indent, boolean
char cat_identifier[24]; char cat_identifier[24];
sprintf(cat_identifier, "section_%s", category->name); sprintf(cat_identifier, "section_%s", category->name);
name = locale_string(viewer->locale, cat_identifier); name = LOC(viewer->locale, cat_identifier);
if (debug) { if (debug) {
if (name!=buf) strcpy(buf, name); if (name!=buf) strcpy(buf, name);
sprintf(buf+strlen(name), " [%s]", cat_identifier); sprintf(buf+strlen(name), " [%s]", cat_identifier);
@ -819,14 +801,14 @@ prices(FILE * F, region * r, faction * f)
assert(sale!=NULL); assert(sale!=NULL);
sprintf(buf, "Auf dem Markt wird für %s %d Silber verlangt.", sprintf(buf, "Auf dem Markt wird für %s %d Silber verlangt.",
locale_string(f->locale, resourcename(sale->itype->rtype, GR_PLURAL)), LOC(f->locale, resourcename(sale->itype->rtype, GR_PLURAL)),
sale->price); sale->price);
if(n > 0) scat(" Geboten wird für "); if(n > 0) scat(" Geboten wird für ");
for (dmd=r->land->demands;dmd;dmd=dmd->next) if(dmd->value > 0) { for (dmd=r->land->demands;dmd;dmd=dmd->next) if(dmd->value > 0) {
char sbuf[80]; char sbuf[80];
sprintf(sbuf, "%s %d Silber", locale_string(f->locale, sprintf(sbuf, "%s %d Silber", LOC(f->locale,
resourcename(dmd->type->itype->rtype, GR_PLURAL)), resourcename(dmd->type->itype->rtype, GR_PLURAL)),
dmd->value * dmd->type->price); dmd->value * dmd->type->price);
scat(sbuf); scat(sbuf);
@ -937,7 +919,7 @@ describe(FILE * F, region * r, int partial, faction * f)
if (r_isforest(r)) tname = "forest"; if (r_isforest(r)) tname = "forest";
else tname = terrain[rterrain(r)].name; else tname = terrain[rterrain(r)].name;
} }
scat(locale_string(f->locale, tname)); scat(LOC(f->locale, tname));
/* Bäume */ /* Bäume */
@ -1009,7 +991,7 @@ describe(FILE * F, region * r, int partial, faction * f)
icat(rhorses(r)); icat(rhorses(r));
scat(" "); scat(" ");
#ifdef NEW_ITEMS #ifdef NEW_ITEMS
scat(locale_string(f->locale, resourcename(oldresourcetype[R_HORSE], (rhorses(r)>1)?GR_PLURAL:0))); scat(LOC(f->locale, resourcename(oldresourcetype[R_HORSE], (rhorses(r)>1)?GR_PLURAL:0)));
#else #else
scat(itemdata[I_HORSE].name[rhorses(r) > 1]); scat(itemdata[I_HORSE].name[rhorses(r) > 1]);
#endif #endif
@ -1049,7 +1031,7 @@ describe(FILE * F, region * r, int partial, faction * f)
else scat(", im "); else scat(", im ");
} }
else scat(" Im "); else scat(" Im ");
scat(locale_string(f->locale, directions[d])); scat(LOC(f->locale, directions[d]));
scat(" "); scat(" ");
if (!dh) scat("der Region liegt "); if (!dh) scat("der Region liegt ");
sprintf(dbuf, trailinto(r2, f->locale), sprintf(dbuf, trailinto(r2, f->locale),
@ -1122,7 +1104,7 @@ describe(FILE * F, region * r, int partial, faction * f)
if (e->lastd==d) strcat(buf, " und im "); if (e->lastd==d) strcat(buf, " und im ");
else strcat(buf, ", im "); else strcat(buf, ", im ");
} }
strcat(buf, locale_string(f->locale, directions[d])); strcat(buf, LOC(f->locale, directions[d]));
first = false; first = false;
} }
if (!e->transparent) strcat(buf, " versperrt "); if (!e->transparent) strcat(buf, " versperrt ");
@ -1196,7 +1178,7 @@ statistics(FILE * F, region * r, faction * f)
sprintf(buf, "Personen: %d", number); sprintf(buf, "Personen: %d", number);
rps(F, buf); rps(F, buf);
for (itm = items; itm; itm=itm->next) { for (itm = items; itm; itm=itm->next) {
sprintf(buf, "%s: %d", locale_string(f->locale, resourcename(itm->type->rtype, GR_PLURAL)), itm->number); sprintf(buf, "%s: %d", LOC(f->locale, resourcename(itm->type->rtype, GR_PLURAL)), itm->number);
rps(F, buf); rps(F, buf);
} }
while (items) i_free(i_remove(&items, items)); while (items) i_free(i_remove(&items, items));
@ -1293,7 +1275,7 @@ order_template(FILE * F, faction * f)
rps_nowrap(F, ""); rps_nowrap(F, "");
rnl(F); rnl(F);
sprintf(buf, "%s %s \"hier_passwort_eintragen\"", locale_string(f->locale, parameters[P_FACTION]), factionid(f)); sprintf(buf, "%s %s \"hier_passwort_eintragen\"", LOC(f->locale, parameters[P_FACTION]), factionid(f));
rps_nowrap(F, buf); rps_nowrap(F, buf);
rnl(F); rnl(F);
@ -1316,12 +1298,12 @@ order_template(FILE * F, faction * f)
rnl(F); rnl(F);
pl = getplane(r); pl = getplane(r);
if (pl && fval(pl, PFL_NOCOORDS)) { if (pl && fval(pl, PFL_NOCOORDS)) {
sprintf(buf, "%s; %s", locale_string(f->locale, parameters[P_REGION]), rname(r, f->locale)); sprintf(buf, "%s; %s", LOC(f->locale, parameters[P_REGION]), rname(r, f->locale));
} else if (pl && pl->id != 0) { } else if (pl && pl->id != 0) {
sprintf(buf, "%s %d,%d,%d ; %s", locale_string(f->locale, parameters[P_REGION]), region_x(r,f), sprintf(buf, "%s %d,%d,%d ; %s", LOC(f->locale, parameters[P_REGION]), region_x(r,f),
region_y(r,f), pl->id, rname(r, f->locale)); region_y(r,f), pl->id, rname(r, f->locale));
} else { } else {
sprintf(buf, "%s %d,%d ; %s", locale_string(f->locale, parameters[P_REGION]), region_x(r,f), sprintf(buf, "%s %d,%d ; %s", LOC(f->locale, parameters[P_REGION]), region_x(r,f),
region_y(r,f), rname(r, f->locale)); region_y(r,f), rname(r, f->locale));
} }
rps_nowrap(F, buf); rps_nowrap(F, buf);
@ -1334,7 +1316,7 @@ order_template(FILE * F, faction * f)
} }
dh = 1; dh = 1;
sprintf(buf, "%s %s; %s [%d,%d$", locale_string(u->faction->locale, parameters[P_UNIT]), sprintf(buf, "%s %s; %s [%d,%d$", LOC(u->faction->locale, parameters[P_UNIT]),
unitid(u), u->name, u->number, get_money(u)); unitid(u), u->name, u->number, get_money(u));
if (u->building != NULL && fval(u, FL_OWNER)) { if (u->building != NULL && fval(u, FL_OWNER)) {
building * b = u->building; building * b = u->building;
@ -1382,7 +1364,7 @@ order_template(FILE * F, faction * f)
} }
rps_nowrap(F, ""); rps_nowrap(F, "");
rnl(F); rnl(F);
sprintf(buf, locale_string(f->locale, parameters[P_NEXT])); sprintf(buf, LOC(f->locale, parameters[P_NEXT]));
rps_nowrap(F, buf); rps_nowrap(F, buf);
rnl(F); rnl(F);
} }
@ -1571,7 +1553,7 @@ list_address(FILE * F, faction * uf)
} }
v_sort(fcts->begin, fcts->end, fcompare); v_sort(fcts->begin, fcts->end, fcompare);
centre(F, "Liste aller Adressen", false); centre(F, LOC(uf->locale, "nr_addresses"), false);
rnl(F); rnl(F);
for (fp = fcts->begin; fp != fcts->end; ++fp) { for (fp = fcts->begin; fp != fcts->end; ++fp) {
f = *fp; f = *fp;
@ -1600,7 +1582,8 @@ report_building(FILE *F, const region * r, const building * b, const faction * f
type = b->type; type = b->type;
} }
sprintf(buf, "%s, Größe %d, %s", buildingname(b), b->size, buildingtype(b, b->size, lang)); sprintf(buf, "%s, %s %d, %s", buildingname(b), LOC(f->locale, "nr_size"),
b->size, buildingtype(b, b->size, lang));
if (b->size < type->maxsize) { if (b->size < type->maxsize) {
scat(" (im Bau)"); scat(" (im Bau)");
} }
@ -1682,9 +1665,9 @@ report(FILE *F, faction * f)
else else
printf(" - Schreibe Report\n"); printf(" - Schreibe Report\n");
centre(F, gamedate(), true); centre(F, gamedate(f->locale), true);
rnl(F); rnl(F);
sprintf(buf, "%s, %s/%s (%s)", factionname(f), locale_string(f->locale, race[f->race].name[1]), sprintf(buf, "%s, %s/%s (%s)", factionname(f), LOC(f->locale, race[f->race].name[1]),
neue_gebiete[f->magiegebiet], f->email); neue_gebiete[f->magiegebiet], f->email);
centre(F, buf, true); centre(F, buf, true);
@ -1777,11 +1760,11 @@ report(FILE *F, faction * f)
} }
} }
sprintf(buf, "Optionen:"); sprintf(buf, "%s:", LOC(f->locale, "nr_options"));
for (op = 0; op != MAXOPTIONS; op++) { for (op = 0; op != MAXOPTIONS; op++) {
if (f->options & (int) pow(2, op)) { if (f->options & (int) pow(2, op)) {
scat(" "); scat(" ");
scat(options[op]); scat(LOC(f->locale, options[op]));
#ifdef AT_OPTION #ifdef AT_OPTION
if(op == O_NEWS) { if(op == O_NEWS) {
attrib *a = a_find(f->attribs, &at_option_news); attrib *a = a_find(f->attribs, &at_option_news);
@ -1817,7 +1800,7 @@ report(FILE *F, faction * f)
if(f->battles) { if(f->battles) {
struct bmsg * bm; struct bmsg * bm;
rnl(F); rnl(F);
centre(F, "Kämpfe", false); centre(F, LOC(f->locale, "section_battle"), false);
rnl(F); rnl(F);
for (bm=f->battles;bm;bm=bm->next) { for (bm=f->battles;bm;bm=bm->next) {
#ifdef HAVE_SNPRINTF #ifdef HAVE_SNPRINTF
@ -1837,14 +1820,13 @@ report(FILE *F, faction * f)
a = a_find(f->attribs, &at_reportspell); a = a_find(f->attribs, &at_reportspell);
if (a) { if (a) {
rnl(F); rnl(F);
centre(F, "Neue Zauber", true); centre(F, LOC(f->locale, "section_newspells"), true);
while (a) { while (a) {
report_spell(F, (spellid_t)a->data.i); report_spell(F, (spellid_t)a->data.i);
a = a->nexttype; a = a->nexttype;
} }
} }
#ifdef NEW_ITEMS
ch = 0; ch = 0;
for (a=a_find(f->attribs, &at_showitem);a;a=a->nexttype) { for (a=a_find(f->attribs, &at_showitem);a;a=a->nexttype) {
const potion_type * ptype = resource2potion(((const item_type*)a->data.v)->rtype); const potion_type * ptype = resource2potion(((const item_type*)a->data.v)->rtype);
@ -1853,18 +1835,18 @@ report(FILE *F, faction * f)
m = ptype->itype->construction->materials; m = ptype->itype->construction->materials;
if (ch==0) { if (ch==0) {
rnl(F); rnl(F);
centre(F, "Erforschte Tränke", true); centre(F, LOC(f->locale, "section_newpotions"), true);
ch = 1; ch = 1;
} }
rnl(F); rnl(F);
centre(F, locale_string(f->locale, resourcename(ptype->itype->rtype, 0)), true); centre(F, LOC(f->locale, resourcename(ptype->itype->rtype, 0)), true);
sprintf(buf, "Stufe %d", ptype->level); sprintf(buf, "%s %d", LOC(f->locale, "nr_level"), ptype->level);
centre(F, buf, true); centre(F, buf, true);
rnl(F); rnl(F);
sprintf(buf, "Benötigte Kräuter: "); sprintf(buf, "%s: ", LOC(f->locale, "nr_herbsrequired"));
while (m->number) { while (m->number) {
scat(locale_string(f->locale, resourcename(oldresourcetype[m->type], 0))); scat(LOC(f->locale, resourcename(oldresourcetype[m->type], 0)));
++m; ++m;
if (m->number) scat(", "); if (m->number) scat(", ");
} }
@ -1872,47 +1854,8 @@ report(FILE *F, faction * f)
rnl(F); rnl(F);
centre(F, ptype->text, true); centre(F, ptype->text, true);
} }
#else
for (potion = 0; potion != MAXPOTIONS; potion++)
if (f->showpotion[potion] == 1)
break;
if (potion != MAXPOTIONS) {
rnl(F);
centre(F, "Erforschte Tränke", true);
for (potion = 0; potion != MAXPOTIONS; ++potion) {
if (f->showpotion[potion] == 1) {
int h;
rnl(F);
centre(F, potionnames[0][potion], true);
sprintf(buf, "Stufe %d", potionlevel[potion]);
centre(F, buf, true);
rnl(F);
sprintf(buf, "Benötigte Kräuter: ");
for (h = 0; h < MAXHERBSPERPOTION; h++) {
if (potionherbs[potion][h] == NOHERB)
break;
if (h > 0) {
scat(", ");
}
scat(herbdata[0][potionherbs[potion][h]]);
}
centre(F, buf, true);
rnl(F);
centre(F, (char *) potiontext[potion], true);
/* Nicht nochmal anzeigen! */
f->showpotion[potion] = 2;
}
}
}
#endif
rnl(F); rnl(F);
centre(F, "Aktueller Status", false); centre(F, LOC(f->locale, "nr_alliances"), false);
rnl(F); rnl(F);
allies(F, f); allies(F, f);
@ -2034,31 +1977,29 @@ report(FILE *F, faction * f)
} }
sprintf(buf, "%s, %s, (%d/%d)", sprintf(buf, "%s, %s, (%d/%d)",
shipname(sh), shipname(sh),
locale_string(f->locale, sh->type->name[0]), LOC(f->locale, sh->type->name[0]),
(w + 99) / 100, /* +99 weil sonst die Nachkommastellen ignoriert würden */ (w + 99) / 100, /* +99 weil sonst die Nachkommastellen ignoriert würden */
shipcapacity(sh) / 100); shipcapacity(sh) / 100);
} else { } else {
sprintf(buf, "%s, %s", shipname(sh), sprintf(buf, "%s, %s", shipname(sh),
locale_string(f->locale, sh->type->name[0])); LOC(f->locale, sh->type->name[0]));
} }
assert(sh->type->construction->improvement==NULL); /* sonst ist construction::size nicht ship_type::maxsize */ assert(sh->type->construction->improvement==NULL); /* sonst ist construction::size nicht ship_type::maxsize */
if (sh->size!=sh->type->construction->maxsize) { if (sh->size!=sh->type->construction->maxsize) {
scat(", im Bau ("); sprintf(buf+strlen(buf), ", %s (%d/%d)",
icat(sh->size); LOC(f->locale, "nr_undercons"), sh->size,
scat("/"); sh->type->construction->maxsize);
icat(sh->type->construction->maxsize);
scat(")");
} }
if (sh->damage) { if (sh->damage) {
scat(", "); sprintf(buf+strlen(buf), ", %d%% %s",
icat(sh->damage*100/(sh->size*DAMAGE_SCALE)); sh->damage*100/(sh->size*DAMAGE_SCALE),
scat("% beschädigt"); LOC(f->locale, "nr_damaged"));
} }
if (rterrain(r) != T_OCEAN) { if (rterrain(r) != T_OCEAN) {
if (sh->coast != NODIRECTION) { if (sh->coast != NODIRECTION) {
scat(", "); scat(", ");
scat(coasts[sh->coast]); scat(LOC(f->locale, coasts[sh->coast]));
} }
} }
ch = 0; ch = 0;
@ -2097,9 +2038,7 @@ report(FILE *F, faction * f)
if (f->no != MONSTER_FACTION) { if (f->no != MONSTER_FACTION) {
if (!anyunits) { if (!anyunits) {
rnl(F); rnl(F);
rparagraph(F, "Unglücklicherweise wurde deine Partei ausgelöscht. " rparagraph(F, LOC(f->locale, "nr_youaredead"), 0, 0);
"Du kannst gerne an einer anderen Stelle wieder "
"einsteigen. Melde Dich einfach wieder an.", 0, 0);
} else { } else {
if (wants_addresses) { if (wants_addresses) {
list_address(F, f); list_address(F, f);
@ -3382,7 +3321,7 @@ eval_resource(struct opstack ** stack, const void * userdata)
int j = opop(stack, int); int j = opop(stack, int);
struct resource_type * res = opop(stack, struct resource_type *); struct resource_type * res = opop(stack, struct resource_type *);
const char * c = locale_string(report->locale, resourcename(res, j!=1)); const char * c = LOC(report->locale, resourcename(res, j!=1));
opush(stack, strcpy(balloc(strlen(c)+1), c)); opush(stack, strcpy(balloc(strlen(c)+1), c));
} }
@ -3393,7 +3332,7 @@ eval_race(struct opstack ** stack, const void * userdata)
int j = opop(stack, int); int j = opop(stack, int);
int r = opop(stack, int); int r = opop(stack, int);
const char * c = locale_string(report->locale, race[r].name[j!=1]); const char * c = LOC(report->locale, race[r].name[j!=1]);
opush(stack, strcpy(balloc(strlen(c)+1), c)); opush(stack, strcpy(balloc(strlen(c)+1), c));
} }
@ -3403,7 +3342,7 @@ eval_direction(struct opstack ** stack, const void * userdata)
const faction * report = (const faction*)userdata; const faction * report = (const faction*)userdata;
int i = opop(stack, int); int i = opop(stack, int);
const char * c = locale_string(report->locale, directions[i]); const char * c = LOC(report->locale, directions[i]);
opush(stack, strcpy(balloc(strlen(c)+1), c)); opush(stack, strcpy(balloc(strlen(c)+1), c));
} }

View File

@ -33,8 +33,8 @@ summon_igjarjuk(struct unit * u, const struct item_type * itype, const char * cm
} }
static resource_type rt_demonseye = { static resource_type rt_demonseye = {
{ "ao_daemon", "ao_daemons" }, { "ao_daemon", "ao_daemon_p" },
{ "ao_daemon", "ao_daemons" }, { "ao_daemon", "ao_daemon_p" },
RTF_ITEM, RTF_ITEM,
&res_changeitem &res_changeitem
}; };

View File

@ -78,8 +78,8 @@ use_lmsreward(struct unit * u, const struct item_type * itype, const char * cmd)
#endif #endif
static resource_type rt_lmsreward = { static resource_type rt_lmsreward = {
{ "lmsreward", "lmsrewards" }, { "lmsreward", "lmsreward_p" },
{ "lmsreward", "lmsrewards" }, { "lmsreward", "lmsreward_p" },
RTF_ITEM, RTF_ITEM,
&res_changeitem &res_changeitem
}; };

View File

@ -278,8 +278,8 @@ init_oldweapons(void)
/** begin mallornspear **/ /** begin mallornspear **/
resource_type rt_mallornspear = { resource_type rt_mallornspear = {
{ "mallornspear", "mallornspears" }, { "mallornspear", "mallornspear_p" },
{ "mallornspear", "mallornspears" }, { "mallornspear", "mallornspear_p" },
RTF_ITEM, RTF_ITEM,
&res_changeitem &res_changeitem
}; };
@ -309,8 +309,8 @@ weapon_type wt_mallornspear = {
/** begin mallornlance **/ /** begin mallornlance **/
resource_type rt_mallornlance = { resource_type rt_mallornlance = {
{ "mallornlance", "mallornlances" }, { "mallornlance", "mallornlance_p" },
{ "mallornlance", "mallornlances" }, { "mallornlance", "mallornlance_p" },
RTF_ITEM, RTF_ITEM,
&res_changeitem &res_changeitem
}; };
@ -340,8 +340,8 @@ weapon_type wt_mallornlance = {
/** begin mallornbow **/ /** begin mallornbow **/
resource_type rt_mallornbow = { resource_type rt_mallornbow = {
{ "mallornbow", "mallornbows" }, { "mallornbow", "mallornbow_p" },
{ "mallornbow", "mallornbows" }, { "mallornbow", "mallornbow_p" },
RTF_ITEM, RTF_ITEM,
&res_changeitem &res_changeitem
}; };
@ -371,8 +371,8 @@ weapon_type wt_mallornbow = {
/** begin mallorncrossbow **/ /** begin mallorncrossbow **/
resource_type rt_mallorncrossbow = { resource_type rt_mallorncrossbow = {
{ "mallorncrossbow", "mallorncrossbows" }, { "mallorncrossbow", "mallorncrossbow_p" },
{ "mallorncrossbow", "mallorncrossbows" }, { "mallorncrossbow", "mallorncrossbow_p" },
RTF_ITEM, RTF_ITEM,
&res_changeitem &res_changeitem
}; };

View File

@ -1263,33 +1263,33 @@ use_olditem(struct unit * user, const struct item_type * itype, const char * cmd
typedef const char* translate_t[5]; typedef const char* translate_t[5];
static translate_t translation[] = { static translate_t translation[] = {
{ "Holz", "log", "logs", "log", "logs" }, { "Holz", "log", "log_p", "log", "log_p" },
{ "Eisen", "iron", "irons", "iron", "irons" }, { "Eisen", "iron", "iron_p", "iron", "iron_p" },
{ "Wagen", "cart", "carts", "cart", "carts" }, { "Wagen", "cart", "cart_p", "cart", "cart_p" },
{ "Plattenpanzer", "plate", "plates", "plate", "plates" }, { "Plattenpanzer", "plate", "plate_p", "plate", "plate_p" },
{ "Balsam", "balm", "balms", "balm", "balms" }, { "Balsam", "balm", "balm_p", "balm", "balm_p" },
{ "Gewürz", "spice", "spices", "spice", "spices" }, { "Gewürz", "spice", "spice_p", "spice", "spice_p" },
{ "Myrrhe", "myrrh", "myrrhs", "myrrh", "myrrhs" }, { "Myrrhe", "myrrh", "myrrh_p", "myrrh", "myrrh_p" },
{ "Öl", "oil", "oils", "oil", "oils" }, { "Öl", "oil", "oil_p", "oil", "oil_p" },
{ "Seide", "silk", "silks", "silk", "silks" }, { "Seide", "silk", "silk_p", "silk", "silk_p" },
{ "Weihrauch", "incense", "incenses", "incense", "incenses" }, { "Weihrauch", "incense", "incense_p", "incense", "incense_p" },
{ "Bihänder", "greatsword", "greatswords", "greatsword", "greatswords" }, { "Bihänder", "greatsword", "greatsword_p", "greatsword", "greatsword_p" },
{ "Laen", "laen", "laens", "laen", "laens" }, { "Laen", "laen", "laen_p", "laen", "laen_p" },
{ "Goliathwasser", "p1", "p1s", NULL, NULL }, { "Goliathwasser", "p1", "p1_p", NULL, NULL },
{ "Wasser des Lebens", "p2", "p2s", NULL, NULL }, { "Wasser des Lebens", "p2", "p2_p", NULL, NULL },
{ "Bauernblut", "p5", "p5s", NULL, NULL }, { "Bauernblut", "p5", "p5_p", NULL, NULL },
{ "Gehirnschmalz", "p6", "p6s", NULL, NULL }, { "Gehirnschmalz", "p6", "p6_p", NULL, NULL },
{ "Nestwärme", "p8", "p8s", NULL, NULL }, { "Nestwärme", "p8", "p8_p", NULL, NULL },
{ "Pferdeglück", "p9", "p9s", NULL, NULL }, { "Pferdeglück", "p9", "p9_p", NULL, NULL },
{ "Berserkerblut", "p10", "p10s", NULL, NULL }, { "Berserkerblut", "p10", "p10_p", NULL, NULL },
{ "Bauernlieb", "p11", "p11s", NULL, NULL }, { "Bauernlieb", "p11", "p11_p", NULL, NULL },
{ "Heiltrank", "p14", "p14s", NULL, NULL }, { "Heiltrank", "p14", "p14_p", NULL, NULL },
{ "Flachwurz", "h0", "h0s", NULL, NULL }, { "Flachwurz", "h0", "h0_p", NULL, NULL },
{ "Elfenlieb", "h5", "h5s", NULL, NULL }, { "Elfenlieb", "h5", "h5_p", NULL, NULL },
{ "Wasserfinder", "h9", "h9s", NULL, NULL }, { "Wasserfinder", "h9", "h9_p", NULL, NULL },
{ "Windbeutel", "h12", "h12s", NULL, NULL }, { "Windbeutel", "h12", "h12_p", NULL, NULL },
{ "Steinbeißer", "h15", "h15s", NULL, NULL }, { "Steinbeißer", "h15", "h15_p", NULL, NULL },
{ NULL, NULL, NULL, NULL, NULL } { NULL, NULL, NULL, NULL, NULL }
}; };
@ -1858,7 +1858,7 @@ init_oldpotions(void)
{ {
potion_t p; potion_t p;
const char * names[2]; const char * names[2];
const char * appearance[2] = { "vial", "vials" }; const char * appearance[2] = { "vial", "vial_p" };
const struct locale * lang = find_locale("de"); const struct locale * lang = find_locale("de");
assert(lang); assert(lang);
@ -1946,7 +1946,15 @@ resource_type * r_person;
resource_type * r_silver; resource_type * r_silver;
item_type * i_silver; item_type * i_silver;
static const char * names[] = { "money", "moneys", "person", "persons", "permaura", "permauras", "hp", "hps", "peasant", "peasants", "aura", "auras", "unit", "units" }; static const char * names[] = {
"money", "money_p",
"person", "person_p",
"permaura", "permaura_p",
"hp", "hp_p",
"peasant", "peasant_p",
"aura", "aura_p",
"unit", "unit_p"
};
void void
init_resources(void) init_resources(void)

View File

@ -328,7 +328,7 @@ bufunit(const faction * f, const unit * u, int indent,
scat(", "); scat(", ");
if (!dh) { if (!dh) {
scat("hat: "); sprintf(buf+strlen(buf), "%s: ", LOC(f->locale, "nr_inventory"));
dh = 1; dh = 1;
} }
if (in == 1) { if (in == 1) {
@ -359,7 +359,7 @@ bufunit(const faction * f, const unit * u, int indent,
continue; continue;
} }
if (!dh){ if (!dh){
scat(", Zauber: "); sprintf(buf+strlen(buf),", %s: ", LOC(f->locale, "nr_spells"));
dh = 1; dh = 1;
}else{ }else{
scat(", "); scat(", ");
@ -376,7 +376,7 @@ bufunit(const faction * f, const unit * u, int indent,
} }
if(dh){ if(dh){
dh = 0; dh = 0;
scat(". Kampfzauber: "); sprintf(buf+strlen(buf),", %s: ", LOC(f->locale, "nr_combatspells"));
for (i = 0; i < MAXCOMBATSPELLS; i++){ for (i = 0; i < MAXCOMBATSPELLS; i++){
if (!dh){ if (!dh){
dh = 1; dh = 1;
@ -393,7 +393,7 @@ bufunit(const faction * f, const unit * u, int indent,
scat(")"); scat(")");
} }
}else{ }else{
scat("keiner"); scat(LOC(f->locale, "nr_nospells"));
} }
} }
} }
@ -437,6 +437,7 @@ bufunit(const faction * f, const unit * u, int indent,
void void
spskill(const struct locale * lang, const struct unit * u, skill_t sk, int *dh, int days) spskill(const struct locale * lang, const struct unit * u, skill_t sk, int *dh, int days)
{ {
char * sbuf = buf+strlen(buf);
int i, d; int i, d;
if (!u->number) if (!u->number)
return; return;
@ -445,37 +446,32 @@ spskill(const struct locale * lang, const struct unit * u, skill_t sk, int *dh,
if (!d) if (!d)
return; return;
scat(", "); strcat(sbuf, ", "); sbuf+=2;
if (!*dh) { if (!*dh) {
scat("Talente: "); sbuf += sprintf(sbuf, "%s: ", LOC(lang, "nr_skills"));
*dh = 1; *dh = 1;
} }
scat(skillname(sk, lang)); sbuf += sprintf(sbuf, "%s ", skillname(sk, lang));
scat(" ");
if (sk == SK_MAGIC){ if (sk == SK_MAGIC){
if (find_magetype(u) != M_GRAU){ if (find_magetype(u) != M_GRAU){
scat(magietypen[find_magetype(u)]); sbuf += sprintf(sbuf, "%s ", magietypen[find_magetype(u)]);
scat(" ");
} }
} }
if (sk == SK_STEALTH) { if (sk == SK_STEALTH) {
i = u_geteffstealth(u); i = u_geteffstealth(u);
if(i>=0) { if(i>=0) {
icat(i); sbuf += sprintf(sbuf, "%d/", i);
scat("/");
} }
} }
icat(effskill(u, sk)); sbuf += sprintf(sbuf, "%d", effskill(u, sk));
#ifndef NOVISIBLESKILLPOINTS #ifndef NOVISIBLESKILLPOINTS
if (days) { if (days) {
assert(u->number); assert(u->number);
scat(" ["); sbuf += sprintf(sbuf, " [%d]", d / u->number);
icat(d / u->number);
scat("]");
} }
#endif #endif
} }

View File

@ -43,7 +43,7 @@ extern void spskill(const struct locale * lang, const struct unit * u, skill_t s
extern void spunit(struct strlist ** SP, const struct faction * f, const struct unit * u, int indent, int mode); extern void spunit(struct strlist ** SP, const struct faction * f, const struct unit * u, int indent, int mode);
void reports(void); void reports(void);
char *gamedate(void); char *gamedate(const struct locale *);
char *gamedate2(void); char *gamedate2(void);
struct summary; struct summary;

View File

@ -1503,6 +1503,8 @@ wsn(FILE * F, const char *s)
wc(F, *s++); wc(F, *s++);
} }
#define whs(F, s) fputs(s, F)
void void
ws(FILE * F, const char *s) ws(FILE * F, const char *s)
{ {
@ -1529,7 +1531,7 @@ write_items(FILE *F, item *ilist)
{ {
item * itm; item * itm;
for (itm=ilist;itm;itm=itm->next) if (itm->number) { for (itm=ilist;itm;itm=itm->next) if (itm->number) {
ws(F, resourcename(itm->type->rtype, 0)); whs(F, resourcename(itm->type->rtype, 0));
wspace(F); wspace(F);
wi(F, itm->number); wi(F, itm->number);
wspace(F); wspace(F);

View File

@ -103,8 +103,8 @@ leave_arena(struct unit * u, const struct item_type * itype, const char * cmd)
} }
static resource_type rt_gryphonwing = { static resource_type rt_gryphonwing = {
{ "griphonwing", "griphonwings" }, { "griphonwing", "griphonwing_p" },
{ "griphonwing", "griphonwings" }, { "griphonwing", "griphonwing_p" },
RTF_ITEM, RTF_ITEM,
&res_changeitem &res_changeitem
}; };
@ -171,8 +171,8 @@ enter_arena(unit * u, const item_type * itype, const char * cmd)
} }
static resource_type rt_arenagate = { static resource_type rt_arenagate = {
{ "eyeofdragon", "eyeofdragons" }, { "eyeofdragon", "eyeofdragon_p" },
{ "eyeofdragon", "eyeofdragons" }, { "eyeofdragon", "eyeofdragon_p" },
RTF_ITEM, RTF_ITEM,
&res_changeitem &res_changeitem
}; };

View File

@ -42,8 +42,8 @@
#include <stdlib.h> #include <stdlib.h>
resource_type rt_museumticket = { resource_type rt_museumticket = {
{ "museumticket", "museumtickets"}, { "museumticket", "museumticket_p"},
{ "museumticket", "museumtickets"}, { "museumticket", "museumticket_p"},
RTF_ITEM, RTF_ITEM,
&res_changeitem &res_changeitem
}; };
@ -57,8 +57,8 @@ item_type it_museumticket = {
}; };
resource_type rt_museumexitticket = { resource_type rt_museumexitticket = {
{ "museumexitticket", "museumexittickets"}, { "museumexitticket", "museumexitticket_p"},
{ "museumexitticket", "museumexittickets"}, { "museumexitticket", "museumexitticket_p"},
RTF_ITEM, RTF_ITEM,
&res_changeitem &res_changeitem
}; };

View File

@ -121,6 +121,7 @@ locale_string(const locale * lang, const char * key)
s = locale_string(default_locale, key); s = locale_string(default_locale, key);
if (s_debug) { if (s_debug) {
fprintf(s_debug, "%s;%s;%s\n", key, lang->name, s); fprintf(s_debug, "%s;%s;%s\n", key, lang->name, s);
fflush(s_debug);
locale_setstring((struct locale*)lang, key, s); locale_setstring((struct locale*)lang, key, s);
} }
} }

View File

@ -30,4 +30,7 @@ extern const char * locale_name(const struct locale * lang);
extern const char * reverse_lookup(const struct locale * lang, const char * str); extern const char * reverse_lookup(const struct locale * lang, const char * str);
extern void debug_language(const char * log); extern void debug_language(const char * log);
#define LOC(s,l) locale_string(s, l)
#endif #endif

View File

@ -44,7 +44,7 @@ RSC=rc.exe
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /Za /W4 /GX /Z7 /O2 /I "../common/kernel" /I "../common/gamecode" /I "../common/util" /I "../common" /I ".." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /Za /W4 /GX /Z7 /O2 /I ".." /I "../common" /I "../common/util" /I "../common/kernel" /I "../common/gamecode" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x407 /d "NDEBUG" # ADD BASE RSC /l 0x407 /d "NDEBUG"
# ADD RSC /l 0x407 /d "NDEBUG" # ADD RSC /l 0x407 /d "NDEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe

View File

@ -3910,10 +3910,16 @@
<arg name="unit" type="unit"></arg> <arg name="unit" type="unit"></arg>
<arg name="region" type="region"></arg> <arg name="region" type="region"></arg>
<arg name="dead" type="int"></arg> <arg name="dead" type="int"></arg>
<arg name="live" type="int"></arg>
</type> </type>
<locale name="de"> <locale name="de">
<nr section="events"> <nr section="events">
<text>"$unit($unit) verliert in $region($region) $int($dead) Personen durch Unterernährung."</text> <text>"$unit($unit) verliert in $region($region) $int($dead) von $int($add($live,$dead)) Personen durch Unterernährung."</text>
</nr>
</locale>
<locale name="en">
<nr section="none">
<text>"$unit($unit) loses $int($dead) of $int($add($live,$dead)) people due to starvation in $region($region)."</text>
</nr> </nr>
</locale> </locale>
</message> </message>
@ -3952,7 +3958,7 @@
<type> <type>
<arg name="from" type="unit"></arg> <arg name="from" type="unit"></arg>
<arg name="amount" type="int"></arg> <arg name="amount" type="int"></arg>
<arg name="to" type="region"></arg> <arg name="to" type="unit"></arg>
</type> </type>
<locale name="de"> <locale name="de">
<nr section="events"> <nr section="events">

View File

@ -1,10 +1,11 @@
## Schiffstypen
Karavelle;de;Karavelle Karavelle;de;Karavelle
Boot;de;Boot Boot;de;Boot
Langboot;de;Langboot Langboot;de;Langboot
Drachenschiff;de;Drachenschiff Drachenschiff;de;Drachenschiff
Trireme;de;Trireme Trireme;de;Trireme
# Terraintypen ## Terraintypen
maelstrom;de;Mahlstrom maelstrom;de;Mahlstrom
ocean;de;Ozean ocean;de;Ozean
plain;de;Ebene plain;de;Ebene
@ -50,7 +51,7 @@ xmas_exit;de;Pforte
coal;de;Kohlenstück coal;de;Kohlenstück
coal_p;de;Kohlenstücke coal_p;de;Kohlenstücke
# Himmelsrichtungen ## Himmelsrichtungen
west;de;Westen west;de;Westen
northwest;de;Nordwesten northwest;de;Nordwesten
northeast;de;Nordosten northeast;de;Nordosten
@ -65,10 +66,10 @@ dir_SO;de;SO
dir_SW;de;SW dir_SW;de;SW
dir_West;de;West dir_West;de;West
# Verschiedenes ## Verschiedenes
unknownunit;de;eine unbekannte Einheit unknownunit;de;eine unbekannte Einheit
# Meldungssektionen ## Meldungssektionen
section_event_p;de;Meldungen und Ereignisse section_event_p;de;Meldungen und Ereignisse
section_error_p;de;Warnungen und Fehler section_error_p;de;Warnungen und Fehler
section_economy;de;Wirtschaft und Handel section_economy;de;Wirtschaft und Handel
@ -78,8 +79,9 @@ section_movement;de;Reisen und Bewegung
section_study;de;Lehren und Lernen section_study;de;Lehren und Lernen
section_battle;de;Kämpfe section_battle;de;Kämpfe
section_none;de;Verschiedenes section_none;de;Verschiedenes
section_newspells;de;Neue Zauber
# Gebäudetypen ## Gebäudetypen
fortress_generic;de;Burg fortress_generic;de;Burg
lighthouse;de;Leuchtturm lighthouse;de;Leuchtturm
mine;de;Bergwerk mine;de;Bergwerk
@ -100,16 +102,16 @@ blessedstonecircle;de;Gesegneter Steinkreis
illusioncastle;de;Traumschlößchen illusioncastle;de;Traumschlößchen
genericbuilding;de;Struktur genericbuilding;de;Struktur
#Testgebäude ## Testgebäude
temple;de;Tempel temple;de;Tempel
#Testitem ## Testitem
wand;de;Zauberstab wand;de;Zauberstab
wand_p;de;Zauberstäbe wand_p;de;Zauberstäbe
wand_of_tear_p;de;Szepter der Tränen wand_of_tear_p;de;Szepter der Tränen
wands_of_tear_p;de;Szepter der Tränen wands_of_tear_p;de;Szepter der Tränen
# Burgausbaustufen ## Burgausbaustufen
site;de;Grundmauern site;de;Grundmauern
fortification;de;Befestigung fortification;de;Befestigung
tower;de;Turm tower;de;Turm
@ -117,13 +119,13 @@ castle;de;Burg
fortres_p;de;Festung fortres_p;de;Festung
citadel;de;Zitadelle citadel;de;Zitadelle
# Items ## Items
herb;de;Kraut herb;de;Kraut
herbbag;de;Kräuterbeutel herbbag;de;Kräuterbeutel
vial;de;Phiole vial;de;Phiole
vial_p;de;Phiolen vial_p;de;Phiolen
# Resourcen ## Resourcen
money;de;Silber money;de;Silber
money_p;de;Silber money_p;de;Silber
hp;de;Trefferpunkt hp;de;Trefferpunkt
@ -139,7 +141,7 @@ unit_p;de;Einheiten
person;de;Person person;de;Person
person_p;de;Personen person_p;de;Personen
#items ## items
runesword;de;Runenschwert runesword;de;Runenschwert
runesword_p;de;Runenschwerter runesword_p;de;Runenschwerter
iron;de;Eisen iron;de;Eisen
@ -166,7 +168,7 @@ bow;de;Bogen
bow_p;de;Bögen bow_p;de;Bögen
mallornbow;de;Mallornbogen mallornbow;de;Mallornbogen
mallornbow_p;de;Mallornbögen mallornbow_p;de;Mallornbögen
# more items ## more items
chainmail;de;Kettenhemd chainmail;de;Kettenhemd
chainmail_p;de;Kettenhemden chainmail_p;de;Kettenhemden
plate;de;Plattenpanzer plate;de;Plattenpanzer
@ -293,7 +295,7 @@ museumticket_p;de;Eintrittskarten des Gro
museumexitticket;de;Rückkehrticket des Großen Museum museumexitticket;de;Rückkehrticket des Großen Museum
museumexitticket_p;de;Rückkehrtickets des Großen Museum museumexitticket_p;de;Rückkehrtickets des Großen Museum
# herb singular ## herb singular
h0;de;Flachwurz h0;de;Flachwurz
h1;de;Würziger Wagemut h1;de;Würziger Wagemut
h2;de;Eulenauge h2;de;Eulenauge
@ -316,7 +318,7 @@ h18;de;Eisblume
h19;de;Weißer Wüterich h19;de;Weißer Wüterich
h20;de;Schneekristall h20;de;Schneekristall
#herb plural ## herb plural
h0_p;de;Flachwurz h0_p;de;Flachwurz
h1_p;de;Würzige Wagemut h1_p;de;Würzige Wagemut
h2_p;de;Eulenaugen h2_p;de;Eulenaugen
@ -371,11 +373,11 @@ p12_p;de;Tr
p13_p;de;Elixiere der Macht p13_p;de;Elixiere der Macht
p14_p;de;Heiltränke p14_p;de;Heiltränke
# Spezialitems ## Spezialitems
lmsreward;de;Gürtel der Heldentaten lmsreward;de;Gürtel der Heldentaten
lmsreward_p;de;Gürtel der Heldentaten lmsreward_p;de;Gürtel der Heldentaten
# Parameter ## Parameter
ALLE_p;de;ALLES ALLE_p;de;ALLES
BAUERN;de;BAUERN BAUERN;de;BAUERN
BURG;de;BURG BURG;de;BURG
@ -416,7 +418,7 @@ ANZAHL;de;ANZAHL
GEGENSTÄNDE;de;GEGENSTÄNDE GEGENSTÄNDE;de;GEGENSTÄNDE
TRÄNKE;de;TRÄNKE TRÄNKE;de;TRÄNKE
#;Talente: ## ;Talente:
sk_alchemy;de;Alchemie sk_alchemy;de;Alchemie
sk_crossbow;de;Armbrustschießen sk_crossbow;de;Armbrustschießen
sk_stamina;de;Ausdauer sk_stamina;de;Ausdauer
@ -447,7 +449,7 @@ sk_unarmed;de;Waffenloser Kampf
sk_cartmaking;de;Wagenbau sk_cartmaking;de;Wagenbau
sk_perception;de;Wahrnehmung sk_perception;de;Wahrnehmung
# Befehle ## Befehle
//;de;// //;de;//
BANNER;de;BANNER BANNER;de;BANNER
ARBEITEN;de;ARBEITEN ARBEITEN;de;ARBEITEN
@ -561,7 +563,7 @@ Zombie_p;de;Zombies
Zwerg;de;Zwerg Zwerg;de;Zwerg
Zwerge;de;Zwerge Zwerge;de;Zwerge
# races, future use: ## races, future use:
rc_lynx;de;Luchse rc_lynx;de;Luchse
rc_unicorn_p;de;Einhörner rc_unicorn_p;de;Einhörner
rc_wolve_p;de;Warge rc_wolve_p;de;Warge
@ -599,3 +601,31 @@ rc_orc;de;Ork
rc_zombie;de;Zombie rc_zombie;de;Zombie
rc_zombie_p;de;Zombies rc_zombie_p;de;Zombies
rc_shadowknight;de;Schattenritter rc_shadowknight;de;Schattenritter
## NR generieren
nr_options;de;Optionen
nr_level;de;Stufe
nr_alliances;de;Aktueller Status
nr_herbsrequired;de;Benötigte Kräuter
nr_undercons;de;im Bau
nr_damaged;de;beschädigt
nr_youaredead;de;Unglücklicherweise wurde deine Partei ausgelöscht. Du kannst gerne an einer anderen Stelle wieder einsteigen. Melde Dich einfach wieder an.
nr_calendar;de;Wir schreiben %s des Monats %s im Jahre %d %s.
nr_skills;de;Talente
nr_inventory;de;hat
nr_size;de;Größe
nr_spells;de;Zauber
nr_combatspells;de;Kampfzauber
nr_nospells;de;keiner
nr_addresses;de;Liste aller Adressen
## Küsten
Nordwestküste;de;Nordwestküste
Nordostküste;de;Nordostküste
Ostküste;de;Ostküste
Südostküste;de;Südostküste
Südwestküste;de;Südwestküste
Westküste;de;Westküste

View File

@ -3272,19 +3272,6 @@
</locale> </locale>
</message> </message>
<message name="starvation">
<type>
<arg name="unit" type="unit"></arg>
<arg name="dead" type="int"></arg>
<arg name="region" type="region"></arg>
</type>
<locale name="en">
<nr section="none">
<text>"$unit($unit) loses $int($dead) people due to starvation in $region($region)."</text>
</nr>
</locale>
</message>
<message name="pest"> <message name="pest">
<type> <type>
<arg name="dead" type="int"></arg> <arg name="dead" type="int"></arg>

View File

@ -20,8 +20,8 @@ dir_West;en;West
unknownunit;en;an unknown unit unknownunit;en;an unknown unit
section_event_p;en;Messages and Events section_events;en;Messages and Events
section_error_p;en;Warnings and Errors section_errors;en;Warnings and Errors
section_economy;en;Economy and Trade section_economy;en;Economy and Trade
section_production;en;Resources and Production section_production;en;Resources and Production
section_magic;en;Magic and Artefacts section_magic;en;Magic and Artefacts
@ -29,8 +29,9 @@ section_movement;en;Movement and Travel
section_study;en;Learning and Teaching section_study;en;Learning and Teaching
section_battle;en;Battles section_battle;en;Battles
section_none;en;Miscellaneous section_none;en;Miscellaneous
section_newspells;en;New Spells
# Building Types ## Building Types
academy;en;academy academy;en;academy
blessedstonecircle;en;blessed stonecircle blessedstonecircle;en;blessed stonecircle
caravan;en;caravanserei caravan;en;caravanserei
@ -46,24 +47,24 @@ monument;en;monument
quarry;en;quarry quarry;en;quarry
sawmill;en;sawmill sawmill;en;sawmill
smithy;en;smithy smithy;en;smithy
stables;en;stables stables;en;stable
stonecircle;en;stonecircle stonecircle;en;stonecircle
tunnel;en;tunnel tunnel;en;tunnel
# Burgausbaustufen ## Burgausbaustufen
site;en;site site;en;foundation
fortification;en;fortification fortification;en;fortification
tower;en;tower tower;en;tower
castle;en;castle castle;en;castle
fortres_p;en;fortress fortress;en;fortress
citadel;en;citadel citadel;en;citadel
# Items ## Items
herb;en;herb herb;en;herb
vial;en;vial vial;en;vial
vial_p;en;vials vial_p;en;vials
# Resourcen ## Resourcen
money;en;silver money;en;silver
money_p;en;silver money_p;en;silver
hp;en;hp hp;en;hp
@ -75,7 +76,7 @@ permaura_p;en;permauras
peasant;en;peasant peasant;en;peasant
peasant_p;en;peasants peasant_p;en;peasants
#items ## items
almond;en;almond almond;en;almond
almond_p;en;almonds almond_p;en;almonds
amulet;en;amulet amulet;en;amulet
@ -219,7 +220,7 @@ trollbelt;en;trollbelt
unit;en;unit unit;en;unit
unit_p;en;units unit_p;en;units
# luxury goods ## luxury goods
balm;en;balm balm;en;balm
spice;en;spice spice;en;spice
jewel;en;gem jewel;en;gem
@ -235,11 +236,11 @@ oil_p;en;oil
silk_p;en;silk silk_p;en;silk
incense_p;en;incense incense_p;en;incense
# Spezialitems ## Spezialitems
lmsreward;en;Belt of Heroic Legends lmsreward;en;Belt of Heroic Legends
lmsreward_p;en;Belts of Heroic Legends lmsreward_p;en;Belts of Heroic Legends
# Terraintypen ## Terraintypen
activevolcano;en;active volcano activevolcano;en;active volcano
corridor1;en;corridor corridor1;en;corridor
desert;en;desert desert;en;desert
@ -286,7 +287,7 @@ xmas_exit;en;portal
viele;en;many viele;en;many
sehr viele;en;a great many sehr viele;en;a great many
# intranslatables: ## intranslatables:
h0;en;Flachwurz h0;en;Flachwurz
h0_p;en;Flachwurz h0_p;en;Flachwurz
h1;en;Würziger Wagemut h1;en;Würziger Wagemut
@ -329,38 +330,38 @@ h19;en;Wei
h19_p;en;Weiße Wüteriche h19_p;en;Weiße Wüteriche
h20;en;Schneekristall h20;en;Schneekristall
h20_p;en;Schneekristalle h20_p;en;Schneekristalle
p0;en;Siebenmeilentee p0;en;seven mile tea
p0_p;en;Siebenmeilentees p0_p;en;seven mile teas
p1;en;Goliathwasser p1;en;goliath water
p1_p;en;Goliathwasser p1_p;en;goliath waters
p2;en;Wasser des Lebens p2;en;water of life
p2_p;en;Wasser des Lebens p2_p;en;waters of life
p3;en;Schaffenstrunk p3;en;Schaffenstrunk
p3_p;en;Schaffenstrünke p3_p;en;Schaffenstrünke
p4;en;Wundsalbe p4;en;ointment
p4_p;en;Wundsalben p4_p;en;ointments
p5;en;Bauernblut p5;en;peasant bood
p5_p;en;Bauernblut p5_p;en;peasant bloods
p6;en;Gehirnschmalz p6;en;brain wax
p6_p;en;Gehirnschmalz p6_p;en;brain waxes
p7;en;Dumpfbackenbrot p7;en;Dumpfbackenbrot
p7_p;en;Dumpfbackenbrote p7_p;en;Dumpfbackenbrote
p8;en;Nestwärme p8;en;Nestwärme
p8_p;en;Nestwärme p8_p;en;Nestwärme
p9;en;Pferdeglück p9;en;horsepower potion
p9_p;en;Pferdeglück p9_p;en;horsepower potions
p10;en;Berserkerblut p10;en;berserkers blood potion
p10_p;en;Berserkerblut p10_p;en;berserkers blood potions
p11;en;Bauernlieb p11;en;peasant love potion
p11_p;en;Bauernlieb p11_p;en;peasant love potion
p12;en;Trank der Wahrheit p12;en;potion of truth
p12_p;en;Tränke der Wahrheit p12_p;en;potions of truth
p13;en;Elixier der Macht p13;en;elixir of power
p13_p;en;Elixiere der Macht p13_p;en;elixirs of power
p14;en;Heiltrank p14;en;healing potion
p14_p;en;Heiltränke p14_p;en;healing potions
# Parameters ## Parameters
AGGRESSIV;en;AGGRESSIVE AGGRESSIV;en;AGGRESSIVE
ALLES;en;ALL ALLES;en;ALL
ANZAHL;en;NUMBER ANZAHL;en;NUMBER
@ -368,7 +369,7 @@ AURA;en;AURA
BAUERN;en;PEASANTS BAUERN;en;PEASANTS
BEISTAND;en;AID BEISTAND;en;AID
BEWACHE;en;GUARD BEWACHE;en;GUARD
BURG;en;FORTIFICATION BURG;en;CASTLE
DEFENSIV;en;DEFENSIVE DEFENSIV;en;DEFENSIVE
EINHEIT;en;UNIT EINHEIT;en;UNIT
FLIEHE;en;FLEE FLIEHE;en;FLEE
@ -378,11 +379,11 @@ GEGENST
GIB;en;GIVE GIB;en;GIVE
GNADE;en;MERCY GNADE;en;MERCY
HELFE;en;HELP HELFE;en;HELP
HINTEN;en;BACK HINTEN;en;REAR
HINTER;en;AFTER HINTER;en;AFTER
KOMMANDO;en;CONTROL KOMMANDO;en;CONTROL
KRÄUTER;en;HERBS KRÄUTER;en;HERBS
KÄMPFE;en;COMBAT KÄMPFE;en;FIGHT
NICHT;en;NOT NICHT;en;NOT
NÄCHSTER;en;NEXT NÄCHSTER;en;NEXT
PARTEI;en;PARTEI PARTEI;en;PARTEI
@ -401,7 +402,7 @@ VOR;en;BEFORE
VORNE;en;FRONT VORNE;en;FRONT
ZAUBERBUCH;en;SPELLBOOK ZAUBERBUCH;en;SPELLBOOK
# Skills ## Skills
sk_alchemy;en;alchemy sk_alchemy;en;alchemy
sk_armorer;en;armorer sk_armorer;en;armorer
sk_bow;en;bow sk_bow;en;bow
@ -432,7 +433,7 @@ sk_training;en;taming
sk_unarmed;en;unarmed combat sk_unarmed;en;unarmed combat
sk_weaponsmithing;en;weaponsmithing sk_weaponsmithing;en;weaponsmithing
# Keywords ## Keywords
//;en;// //;en;//
ARBEITEN;en;WORK ARBEITEN;en;WORK
ATTACKIEREN;en;ATTACK ATTACKIEREN;en;ATTACK
@ -510,7 +511,7 @@ Eulen;en;owls
Geist;en;ghost Geist;en;ghost
Geister;en;ghosts Geister;en;ghosts
Goblin;en;goblin Goblin;en;goblin
Goblin_p;en;goblins Goblins;en;goblins
Halbling;en;halfling Halbling;en;halfling
Halblinge;en;halflings Halblinge;en;halflings
Hirntöter;en;braineater Hirntöter;en;braineater
@ -522,14 +523,14 @@ Katze;en;cat
Katzen;en;cats Katzen;en;cats
Katzendrache;en;catdragon Katzendrache;en;catdragon
Katzendrachen;en;catdragons Katzendrachen;en;catdragons
Luch_p;en;lynx Luchs;en;lynx
Luchse;en;lynx Luchse;en;lynx
Meermensch;en;aquarian Meermensch;en;aquarian
Meermenschen;en;aquarians Meermenschen;en;aquarians
Mensch;en;human Mensch;en;human
Menschen;en;humans Menschen;en;humans
Ork;en;orc Ork;en;orc
Ork_p;en;orc Orks;en;orc
Riesenschildkröte;en;giant turtle Riesenschildkröte;en;giant turtle
Riesenschildkröten;en;giant turtles Riesenschildkröten;en;giant turtles
Schablone;en;template Schablone;en;template
@ -546,3 +547,42 @@ Zombie;en;zombie
Zombie_p;en;zombies Zombie_p;en;zombies
Zwerg;en;dwarf Zwerg;en;dwarf
Zwerge;en;dwarves Zwerge;en;dwarves
## NR generieren
nr_options;en;Options
nr_level;en;Level
nr_alliances;en;Political Status
nr_herbsrequired;en;Herbs required
nr_undercons;en;under construction
nr_damaged;en;damage
nr_youaredead;en;Your faction has been eliminated. We hope you had a good time anyways, and encourage you to sign up you for another game.
# TODO: calendar ist noch komplexer
nr_calendar;en;It is %s of the month of %s in the %d. year of %s.
nr_skills;en;skills
nr_inventory;en;has
nr_size;en;size
nr_spells;en;spells
nr_combatspells;en;combat spells
nr_nospells;en;none
nr_Addresslist;en;Addresses
## Küsten
Nordwestküste;en;northwest coast
Nordostküste;en;northeast coast
Ostküste;en;east coast
Südostküste;en;southeast coast
Südwestküste;en;southwest coast
Westküste;en;west coast
## Reportoptionen
AUSWERTUNG;en;REPORT
COMPUTER;en;COMPUTER
ZUGVORLAGE;en;TEMPLATE
SILBERPOOL;en;SILVERPOOL
STATISTIK;en;STATISTICS
MATERIALPOOL;en;ITEMPOOL
ADRESSEN;en;ADDRESSES
ZIPPED;en;ZIPPED
BZIP2;en;BZIP2
PUNKTE;en;SCORE