<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

Reply via email to