<URL: http://bugs.freeciv.org/Ticket/Display.html?id=19038 >
On 7/30/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > Now, it seems the old mistake is being repeated by a bunch of strings > that have gone fuzzy by the addition of "City:", "Civ:", "Diplomat > Action:" and such in front of the translated string. Please do with > these as was done with Game: - replace them with a single "City: %s" and > then just leave the endings for translation. Attached patch splits event type descriptions to two parts. So you will translate "City" and "Famine", which is then displayed as "City: Famine" ("%s: %s" is *not* translatable). If description has only one part, it will be displayed without any further adjustments. I'm not exactly sure this is an improvement, but if nobody complains - or comes out with better solution - I will commit this to trunk, but to trunk only. - ML
diff -Nurd -X.diff_ignore freeciv/common/events.c freeciv/common/events.c --- freeciv/common/events.c 2007-03-05 21:11:49.000000000 +0200 +++ freeciv/common/events.c 2007-03-11 00:57:18.000000000 +0200 @@ -16,6 +16,7 @@ #endif #include <assert.h> +#include <stdio.h> #include <stdlib.h> #include "fcintl.h" @@ -25,8 +26,8 @@ #include "events.h" -#define GEN_EV(descr, event) { #event, NULL, descr, NULL, event } -#define GEN_EV_TERMINATOR { NULL, NULL, NULL, NULL, 0 } +#define GEN_EV(section, descr, event) { #event, NULL, section, descr, NULL, event } +#define GEN_EV_TERMINATOR { NULL, NULL, NULL, NULL, NULL, 0 } /* * Holds information about all event types. The entries don't have @@ -35,111 +36,112 @@ static struct { const char *enum_name; char *tag_name; + const char *section_orig; const char *descr_orig; - const char *descr; + char *full_descr; enum event_type event; } events[] = { - GEN_EV(N_("City: Building Unavailable Item"), E_CITY_CANTBUILD), - GEN_EV(N_("City: Captured/Destroyed"), E_CITY_LOST), - GEN_EV(N_("City: Celebrating"), E_CITY_LOVE), - GEN_EV(N_("City: Civil Disorder"), E_CITY_DISORDER), - GEN_EV(N_("City: Famine"), E_CITY_FAMINE), - GEN_EV(N_("City: Famine Feared"), E_CITY_FAMINE_FEARED), - GEN_EV(N_("City: Growth"), E_CITY_GROWTH), - GEN_EV(N_("City: May Soon Grow"), E_CITY_MAY_SOON_GROW), - GEN_EV(N_("City: Needs Aqueduct"), E_CITY_AQUEDUCT), - GEN_EV(N_("City: Needs Aqueduct Being Built"), E_CITY_AQ_BUILDING), - GEN_EV(N_("City: Normal"), E_CITY_NORMAL), - GEN_EV(N_("City: Nuked"), E_CITY_NUKED), - GEN_EV(N_("City: Released from citizen governor"), E_CITY_CMA_RELEASE), - GEN_EV(N_("City: Suggest Growth Throttling"), E_CITY_GRAN_THROTTLE), - GEN_EV(N_("City: Transfer"), E_CITY_TRANSFER), - GEN_EV(N_("City: Was Built"), E_CITY_BUILD), - GEN_EV(N_("City: Worklist Events"), E_WORKLIST), - GEN_EV(N_("City: Production changed"), E_CITY_PRODUCTION_CHANGED), - GEN_EV(N_("Civ: Barbarian Uprising"), E_UPRISING ), - GEN_EV(N_("Civ: Civil War"), E_CIVIL_WAR), - GEN_EV(N_("Civ: Collapse to Anarchy"), E_ANARCHY), - GEN_EV(N_("Civ: First Contact"), E_FIRST_CONTACT), - GEN_EV(N_("Civ: Learned New Government"), E_NEW_GOVERNMENT), - GEN_EV(N_("Civ: Low Funds"), E_LOW_ON_FUNDS), - GEN_EV(N_("Civ: Pollution"), E_POLLUTION), - GEN_EV(N_("Civ: Revolt Ended"), E_REVOLT_DONE), - GEN_EV(N_("Civ: Revolt Started"), E_REVOLT_START), - GEN_EV(N_("Civ: Spaceship Events"), E_SPACESHIP), - GEN_EV(N_("Diplomat Action: Bribe"), E_MY_DIPLOMAT_BRIBE), - GEN_EV(N_("Diplomat Action: Caused Incident"), E_DIPLOMATIC_INCIDENT), - GEN_EV(N_("Diplomat Action: Escape"), E_MY_DIPLOMAT_ESCAPE), - GEN_EV(N_("Diplomat Action: Embassy"), E_MY_DIPLOMAT_EMBASSY), - GEN_EV(N_("Diplomat Action: Failed"), E_MY_DIPLOMAT_FAILED), - GEN_EV(N_("Diplomat Action: Incite"), E_MY_DIPLOMAT_INCITE), - GEN_EV(N_("Diplomat Action: Poison"), E_MY_DIPLOMAT_POISON), - GEN_EV(N_("Diplomat Action: Sabotage"), E_MY_DIPLOMAT_SABOTAGE), - GEN_EV(N_("Diplomat Action: Theft"), E_MY_DIPLOMAT_THEFT), - GEN_EV(N_("Enemy Diplomat: Bribe"), E_ENEMY_DIPLOMAT_BRIBE), - GEN_EV(N_("Enemy Diplomat: Embassy"), E_ENEMY_DIPLOMAT_EMBASSY), - GEN_EV(N_("Enemy Diplomat: Failed"), E_ENEMY_DIPLOMAT_FAILED), - GEN_EV(N_("Enemy Diplomat: Incite"), E_ENEMY_DIPLOMAT_INCITE), - GEN_EV(N_("Enemy Diplomat: Poison"), E_ENEMY_DIPLOMAT_POISON), - GEN_EV(N_("Enemy Diplomat: Sabotage"), E_ENEMY_DIPLOMAT_SABOTAGE), - GEN_EV(N_("Enemy Diplomat: Theft"), E_ENEMY_DIPLOMAT_THEFT), - GEN_EV(N_("Caravan actions"), E_CARAVAN_ACTION), - GEN_EV(N_("Tutorial message"), E_TUTORIAL), - GEN_EV(N_("Broadcast Report"), E_BROADCAST_REPORT), - GEN_EV(N_("Game Ended"), E_GAME_END), - GEN_EV(N_("Game Started"), E_GAME_START), - GEN_EV(N_("Message from Server Operator"), E_MESSAGE_WALL), - GEN_EV(N_("Nation Selected"), E_NATION_SELECTED), - GEN_EV(N_("Player Destroyed"), E_DESTROYED), - GEN_EV(N_("Report"), E_REPORT), - GEN_EV(N_("Turn Bell"), E_TURN_BELL), - GEN_EV(N_("Year Advance"), E_NEXT_YEAR), - GEN_EV(N_("Global: Eco-Disaster"), E_GLOBAL_ECO), - GEN_EV(N_("Global: Nuke Detonated"), E_NUKE), - GEN_EV(N_("Hut: Barbarians in a Hut Roused"), E_HUT_BARB), - GEN_EV(N_("Hut: City Founded from Hut"), E_HUT_CITY), - GEN_EV(N_("Hut: Gold Found in Hut"), E_HUT_GOLD), - GEN_EV(N_("Hut: Killed by Barbarians in a Hut"), E_HUT_BARB_KILLED), - GEN_EV(N_("Hut: Mercenaries Found in Hut"), E_HUT_MERC), - GEN_EV(N_("Hut: Settler Found in Hut"), E_HUT_SETTLER), - GEN_EV(N_("Hut: Tech Found in Hut"), E_HUT_TECH), - GEN_EV(N_("Hut: Unit Spared by Barbarians"), E_HUT_BARB_CITY_NEAR), - GEN_EV(N_("Improvement: Bought"), E_IMP_BUY), - GEN_EV(N_("Improvement: Built"), E_IMP_BUILD), - GEN_EV(N_("Improvement: Forced to Sell"), E_IMP_AUCTIONED), - GEN_EV(N_("Improvement: New Improvement Selected"), E_IMP_AUTO), - GEN_EV(N_("Improvement: Sold"), E_IMP_SOLD), - GEN_EV(N_("Tech: Learned From Great Library"), E_TECH_GAIN), - GEN_EV(N_("Tech: Learned New Tech"), E_TECH_LEARNED), - GEN_EV(N_("Treaty: Alliance"), E_TREATY_ALLIANCE), - GEN_EV(N_("Treaty: Broken"), E_TREATY_BROKEN), - GEN_EV(N_("Treaty: Cease-fire"), E_TREATY_CEASEFIRE), - GEN_EV(N_("Treaty: Peace"), E_TREATY_PEACE), - GEN_EV(N_("Treaty: Shared Vision"), E_TREATY_SHARED_VISION), - GEN_EV(N_("Unit: Attack Failed"), E_UNIT_LOST_ATT), - GEN_EV(N_("Unit: Attack Succeeded"), E_UNIT_WIN_ATT), - GEN_EV(N_("Unit: Bought"), E_UNIT_BUY), - GEN_EV(N_("Unit: Built"), E_UNIT_BUILT), - GEN_EV(N_("Unit: Defender Destroyed"), E_UNIT_LOST), - GEN_EV(N_("Unit: Defender Survived"), E_UNIT_WIN), - GEN_EV(N_("Unit: Became More Veteran"), E_UNIT_BECAME_VET), - GEN_EV(N_("Unit: Production Upgraded"), E_UNIT_UPGRADED), - GEN_EV(N_("Unit: Relocated"), E_UNIT_RELOCATED), - GEN_EV(N_("Unit: Orders / goto events"), E_UNIT_ORDERS), - GEN_EV(N_("Wonder: Finished"), E_WONDER_BUILD), - GEN_EV(N_("Wonder: Made Obsolete"), E_WONDER_OBSOLETE), - GEN_EV(N_("Wonder: Started"), E_WONDER_STARTED), - GEN_EV(N_("Wonder: Stopped"), E_WONDER_STOPPED), - GEN_EV(N_("Wonder: Will Finish Next Turn"), E_WONDER_WILL_BE_BUILT), - GEN_EV(N_("Diplomatic Message"), E_DIPLOMACY), - GEN_EV(N_("Treaty: Embassy"), E_TREATY_EMBASSY), - GEN_EV(N_("Error message from bad command"), E_BAD_COMMAND), - GEN_EV(N_("Server settings changed"), E_SETTING), - GEN_EV(N_("Chat messages"), E_CHAT_MSG), - GEN_EV(N_("Chat error messages"), E_CHAT_ERROR), - GEN_EV(N_("Connect/disconnect messages"), E_CONNECTION), - GEN_EV(N_("AI Debug messages"), E_AI_DEBUG), - GEN_EV(N_("Player settings"), E_PLAYER_SETTINGS), + GEN_EV(N_("City"), N_("Building Unavailable Item"), E_CITY_CANTBUILD), + GEN_EV(N_("City"), N_("Captured/Destroyed"), E_CITY_LOST), + GEN_EV(N_("City"), N_("Celebrating"), E_CITY_LOVE), + GEN_EV(N_("City"), N_("Civil Disorder"), E_CITY_DISORDER), + GEN_EV(N_("City"), N_("Famine"), E_CITY_FAMINE), + GEN_EV(N_("City"), N_("Famine Feared"), E_CITY_FAMINE_FEARED), + GEN_EV(N_("City"), N_("Growth"), E_CITY_GROWTH), + GEN_EV(N_("City"), N_("May Soon Grow"), E_CITY_MAY_SOON_GROW), + GEN_EV(N_("City"), N_("Needs Aqueduct"), E_CITY_AQUEDUCT), + GEN_EV(N_("City"), N_("Needs Aqueduct Being Built"), E_CITY_AQ_BUILDING), + GEN_EV(N_("City"), N_("Normal"), E_CITY_NORMAL), + GEN_EV(N_("City"), N_("Nuked"), E_CITY_NUKED), + GEN_EV(N_("City"), N_("Released from citizen governor"), E_CITY_CMA_RELEASE), + GEN_EV(N_("City"), N_("Suggest Growth Throttling"), E_CITY_GRAN_THROTTLE), + GEN_EV(N_("City"), N_("Transfer"), E_CITY_TRANSFER), + GEN_EV(N_("City"), N_("Was Built"), E_CITY_BUILD), + GEN_EV(N_("City"), N_("Worklist Events"), E_WORKLIST), + GEN_EV(N_("City"), N_("Production changed"), E_CITY_PRODUCTION_CHANGED), + GEN_EV(N_("Civ"), N_("Barbarian Uprising"), E_UPRISING ), + GEN_EV(N_("Civ"), N_("Civil War"), E_CIVIL_WAR), + GEN_EV(N_("Civ"), N_("Collapse to Anarchy"), E_ANARCHY), + GEN_EV(N_("Civ"), N_("First Contact"), E_FIRST_CONTACT), + GEN_EV(N_("Civ"), N_("Learned New Government"), E_NEW_GOVERNMENT), + GEN_EV(N_("Civ"), N_("Low Funds"), E_LOW_ON_FUNDS), + GEN_EV(N_("Civ"), N_("Pollution"), E_POLLUTION), + GEN_EV(N_("Civ"), N_("Revolt Ended"), E_REVOLT_DONE), + GEN_EV(N_("Civ"), N_("Revolt Started"), E_REVOLT_START), + GEN_EV(N_("Civ"), N_("Spaceship Events"), E_SPACESHIP), + GEN_EV(N_("Diplomat Action"), N_("Bribe"), E_MY_DIPLOMAT_BRIBE), + GEN_EV(N_("Diplomat Action"), N_("Caused Incident"), E_DIPLOMATIC_INCIDENT), + GEN_EV(N_("Diplomat Action"), N_("Escape"), E_MY_DIPLOMAT_ESCAPE), + GEN_EV(N_("Diplomat Action"), N_("Embassy"), E_MY_DIPLOMAT_EMBASSY), + GEN_EV(N_("Diplomat Action"), N_("Failed"), E_MY_DIPLOMAT_FAILED), + GEN_EV(N_("Diplomat Action"), N_("Incite"), E_MY_DIPLOMAT_INCITE), + GEN_EV(N_("Diplomat Action"), N_("Poison"), E_MY_DIPLOMAT_POISON), + GEN_EV(N_("Diplomat Action"), N_("Sabotage"), E_MY_DIPLOMAT_SABOTAGE), + GEN_EV(N_("Diplomat Action"), N_("Theft"), E_MY_DIPLOMAT_THEFT), + GEN_EV(N_("Enemy Diplomat"), N_("Bribe"), E_ENEMY_DIPLOMAT_BRIBE), + GEN_EV(N_("Enemy Diplomat"), N_("Embassy"), E_ENEMY_DIPLOMAT_EMBASSY), + GEN_EV(N_("Enemy Diplomat"), N_("Failed"), E_ENEMY_DIPLOMAT_FAILED), + GEN_EV(N_("Enemy Diplomat"), N_("Incite"), E_ENEMY_DIPLOMAT_INCITE), + GEN_EV(N_("Enemy Diplomat"), N_("Poison"), E_ENEMY_DIPLOMAT_POISON), + GEN_EV(N_("Enemy Diplomat"), N_("Sabotage"), E_ENEMY_DIPLOMAT_SABOTAGE), + GEN_EV(N_("Enemy Diplomat"), N_("Theft"), E_ENEMY_DIPLOMAT_THEFT), + GEN_EV(NULL, N_("Caravan actions"), E_CARAVAN_ACTION), + GEN_EV(NULL, N_("Tutorial message"), E_TUTORIAL), + GEN_EV(NULL, N_("Broadcast Report"), E_BROADCAST_REPORT), + GEN_EV(NULL, N_("Game Ended"), E_GAME_END), + GEN_EV(NULL, N_("Game Started"), E_GAME_START), + GEN_EV(NULL, N_("Message from Server Operator"), E_MESSAGE_WALL), + GEN_EV(NULL, N_("Nation Selected"), E_NATION_SELECTED), + GEN_EV(NULL, N_("Player Destroyed"), E_DESTROYED), + GEN_EV(NULL, N_("Report"), E_REPORT), + GEN_EV(NULL, N_("Turn Bell"), E_TURN_BELL), + GEN_EV(NULL, N_("Year Advance"), E_NEXT_YEAR), + GEN_EV(N_("Global"), N_("Eco-Disaster"), E_GLOBAL_ECO), + GEN_EV(N_("Global"), N_("Nuke Detonated"), E_NUKE), + GEN_EV(N_("Hut"), N_("Barbarians in a Hut Roused"), E_HUT_BARB), + GEN_EV(N_("Hut"), N_("City Founded from Hut"), E_HUT_CITY), + GEN_EV(N_("Hut"), N_("Gold Found in Hut"), E_HUT_GOLD), + GEN_EV(N_("Hut"), N_("Killed by Barbarians in a Hut"), E_HUT_BARB_KILLED), + GEN_EV(N_("Hut"), N_("Mercenaries Found in Hut"), E_HUT_MERC), + GEN_EV(N_("Hut"), N_("Settler Found in Hut"), E_HUT_SETTLER), + GEN_EV(N_("Hut"), N_("Tech Found in Hut"), E_HUT_TECH), + GEN_EV(N_("Hut"), N_("Unit Spared by Barbarians"), E_HUT_BARB_CITY_NEAR), + GEN_EV(N_("Improvement"), N_("Bought"), E_IMP_BUY), + GEN_EV(N_("Improvement"), N_("Built"), E_IMP_BUILD), + GEN_EV(N_("Improvement"), N_("Forced to Sell"), E_IMP_AUCTIONED), + GEN_EV(N_("Improvement"), N_("New Improvement Selected"), E_IMP_AUTO), + GEN_EV(N_("Improvement"), N_("Sold"), E_IMP_SOLD), + GEN_EV(N_("Tech"), N_("Learned From Great Library"), E_TECH_GAIN), + GEN_EV(N_("Tech"), N_("Learned New Tech"), E_TECH_LEARNED), + GEN_EV(N_("Treaty"), N_("Alliance"), E_TREATY_ALLIANCE), + GEN_EV(N_("Treaty"), N_("Broken"), E_TREATY_BROKEN), + GEN_EV(N_("Treaty"), N_("Cease-fire"), E_TREATY_CEASEFIRE), + GEN_EV(N_("Treaty"), N_("Peace"), E_TREATY_PEACE), + GEN_EV(N_("Treaty"), N_("Shared Vision"), E_TREATY_SHARED_VISION), + GEN_EV(N_("Unit"), N_("Attack Failed"), E_UNIT_LOST_ATT), + GEN_EV(N_("Unit"), N_("Attack Succeeded"), E_UNIT_WIN_ATT), + GEN_EV(N_("Unit"), N_("Bought"), E_UNIT_BUY), + GEN_EV(N_("Unit"), N_("Built"), E_UNIT_BUILT), + GEN_EV(N_("Unit"), N_("Defender Destroyed"), E_UNIT_LOST), + GEN_EV(N_("Unit"), N_("Defender Survived"), E_UNIT_WIN), + GEN_EV(N_("Unit"), N_("Became More Veteran"), E_UNIT_BECAME_VET), + GEN_EV(N_("Unit"), N_("Production Upgraded"), E_UNIT_UPGRADED), + GEN_EV(N_("Unit"), N_("Relocated"), E_UNIT_RELOCATED), + GEN_EV(N_("Unit"), N_("Orders / goto events"), E_UNIT_ORDERS), + GEN_EV(N_("Wonder"), N_("Finished"), E_WONDER_BUILD), + GEN_EV(N_("Wonder"), N_("Made Obsolete"), E_WONDER_OBSOLETE), + GEN_EV(N_("Wonder"), N_("Started"), E_WONDER_STARTED), + GEN_EV(N_("Wonder"), N_("Stopped"), E_WONDER_STOPPED), + GEN_EV(N_("Wonder"), N_("Will Finish Next Turn"), E_WONDER_WILL_BE_BUILT), + GEN_EV(NULL, N_("Diplomatic Message"), E_DIPLOMACY), + GEN_EV(N_("Treaty"), N_("Embassy"), E_TREATY_EMBASSY), + GEN_EV(NULL, N_("Error message from bad command"), E_BAD_COMMAND), + GEN_EV(NULL, N_("Server settings changed"), E_SETTING), + GEN_EV(NULL, N_("Chat messages"), E_CHAT_MSG), + GEN_EV(NULL, N_("Chat error messages"), E_CHAT_ERROR), + GEN_EV(NULL, N_("Connect/disconnect messages"), E_CONNECTION), + GEN_EV(NULL, N_("AI Debug messages"), E_AI_DEBUG), + GEN_EV(NULL, N_("Player settings"), E_PLAYER_SETTINGS), GEN_EV_TERMINATOR }; @@ -161,7 +163,7 @@ assert(event >= 0 && event < E_LAST); if (events[event_to_index[event]].event == event) { - return events[event_to_index[event]].descr; + return events[event_to_index[event]].full_descr; } freelog(LOG_ERROR, "unknown event %d", event); return "UNKNOWN EVENT"; @@ -250,7 +252,18 @@ for (i = 0; events[i].enum_name; i++) { int j; - events[i].descr = _(events[i].descr_orig); + if (events[i].section_orig) { + events[i].full_descr = fc_malloc(strlen(_(events[i].descr_orig)) + + strlen(_(events[i].section_orig)) + + strlen(": ")); + sprintf(events[i].full_descr, "%s: %s", + _(events[i].section_orig), + _(events[i].descr_orig)); + } else { + /* No section part */ + events[i].full_descr = _(events[i].descr_orig); + } + event_to_index[events[i].event] = i; events[i].tag_name = mystrdup(events[i].enum_name); for (j = 0; j < strlen(events[i].tag_name); j++) { @@ -259,7 +272,7 @@ freelog(LOG_DEBUG, "event[%d]=%d: name='%s' / '%s'\n\tdescr_orig='%s'\n\tdescr='%s'", i, events[i].event, events[i].enum_name, events[i].tag_name, - events[i].descr_orig, events[i].descr); + events[i].descr_orig, events[i].full_descr); } for (i = 0; i < E_LAST; i++) { @@ -274,4 +287,13 @@ ****************************************************************************/ void events_free(void) { + int i; + + for (i = 0; events[i].enum_name; i++) { + if (events[i].section_orig) { + /* We have allocated memory for this event */ + free(events[i].full_descr); + events[i].full_descr = NULL; + } + } }
_______________________________________________ Freeciv-dev mailing list Freeciv-dev@gna.org https://mail.gna.org/listinfo/freeciv-dev