[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

First ES translation patch and something else



Well, here goes my first two patches for crimson field. The first one
implements the translations to Spanish of the engine and units, later
I'll send the patches for the levels. The second patch is optional and
it implements the functionality that if you start the game for the
first time, so the configuration file doesn't exists yet, it display
the "Language Selection" windows so you can choose with language you
want to use. I did this because at least in my country is usual that
players doesn't understand a bit of english and it could be difficult
for them to change the game to spanish easily.

What do you think about this implementation?

Regards,
Ernesto.
diff -Nur cvs/locale/es.tmpl new/locale/es.tmpl
--- cvs/locale/es.tmpl	1969-12-31 21:00:00.000000000 -0300
+++ new/locale/es.tmpl	2009-10-28 23:02:54.000000000 -0300
@@ -0,0 +1,232 @@
+# english language file for Crimson Fields ($Revision: 1.19 $)
+language=español
+id=es
+
+[messages]
+_OK
+# MSG_B_CANCEL
+_Cancelar
+# MSG_B_YES
+_Si
+# MSG_B_NO
+_No
+# MSG_B_START
+_Comenzar
+# MSG_B_MAP
+_Mapa
+# MSG_B_OBJECTIVES
+Ob_jetivos
+# MSG_B_LEVEL_INFO
+_Información del Nivel
+# MSG_B_LOAD
+_Cargar
+# MSG_B_SAVE
+_Guardar
+# MSG_B_SKIP
+_Parar
+# MSG_B_END_TURN
+_Terminar Turno
+# MSG_B_OPTIONS
+_Opciones
+# MSG_B_OPT_GENERAL
+_General
+# MSG_B_OPT_VIDEO
+_Video
+# MSG_B_OPT_AUDIO
+_Sonido
+# MSG_B_OPT_FULLSCREEN
+_Pantalla Completa
+# MSG_B_OPT_DAMAGE
+Mostrar _Indicadores de Daño
+# MSG_B_OPT_REPLAYS
+Mostrar _Repetición de Turnos
+# MSG_B_OPT_REPLAYS_QUICK
+Mostrar Resultados de _Batallas Solamente
+# MSG_B_OPT_SFX
+_SFX
+# MSG_B_OPT_MUSIC
+_Musica
+# MSG_B_OPT_LANGUAGE
+_Idiomas
+# MSG_B_OPT_KEYBOARD
+_Cambiar teclas
+# MSG_B_GAME_TYPE
+_Tipo de Juego
+# MSG_B_MAP_TYPE
+_Mapas
+# MSG_B_SAVE_GAME
+_Guardar...
+# MSG_B_MAIN_MENU
+_Rendirse...
+# MSG_B_QUIT
+_Salir...
+# MSG_B_EXIT
+_Salir
+# MSG_B_HANDICAP
+_Handicap
+# MSG_B_REPAIR
+_Reparar
+# MSG_B_UNIT_INFO
+_Información
+# MSG_B_UNIT_CONTENT
+_Contenido
+# MSG_B_UNIT_SWEEP
+_Barrer Mina
+# MSG_B_UNIT_UNDO
+_Deshacer
+# MSG_B_SERVER
+_Nombre del Servidor/Dirección
+# MSG_B_PORT
+_Puerto
+# MSG_GAME_HOT_SEAT
+Mismo Asiento
+# MSG_GAME_PBEM
+Jugar por e-Mail (PBEM)
+# MSG_GAME_AI
+vs. Computadora
+# MSG_GAME_NETWORK_SERVER
+Red (Servidor)
+# MSG_GAME_NETWORK_CLIENT
+Red (Cliente)
+# MSG_MAPS_SINGLES
+Escaramuzas
+# MSG_MAPS_CAMPAIGNS
+Campañas
+# MSG_MAPS_SAVES
+Juegos Guardados
+# MAG_HANDICAP_NONE
+Ninguno
+# MSG_HANDICAP_P1
+Jugador 1
+# MSG_HANDICAP_P2
+Jugador 2
+# MSG_TAG_PBEM
+PBEM
+# MSG_TAG_NET
+TCP/IP
+# MSG_TURN
+Turno
+# MSG_UNITS
+Unidades
+# MSG_SHOPS
+Tiendas
+# MSG_PLAYER_SELECTION
+Selección de Jugador
+# MSG_DEBRIEFING
+Detalle de Misión
+# MSG_LVL_INFO
+Información del Nivel
+# MSG_OPTIONS_GENERAL
+Opciones Generales
+# MSG_OPTIONS_VIDEO
+Opciones de Video
+# MSG_OPTIONS_AUDIO
+Opciones de Audio
+# MSG_OPTIONS_LANGUAGE
+Selección de Idioma
+# MSG_OPTIONS_KEYBOARD
+Cambiar Teclas
+# MSG_OPT_KEY_MINIMIZE
+Minimizar Juego
+# MSG_OPT_KEY_END_TURN
+Finalizar Turno
+# MSG_OPT_KEY_MAP
+Ver Mapa
+# MSG_OPT_KEY_GAME_MENU
+Menú del Juego
+# MSG_OPT_KEY_UNIT_MENU
+Menú de Unidad
+# MSG_OPT_KEY_UNIT_CONTENT
+Mostrar contenido
+# MSG_OPT_KEY_UNIT_INFO
+Información de Unidad
+# MSG_OPT_KEY_UNIT_NEXT
+Unidad Siguiente
+# MSG_OPT_KEY_UNIT_SELECT
+Seleccionar Unidad
+# MSG_OPT_KEY_UNIT_UNDO
+Deshacer Último Movimiento
+# MSG_OPT_KEY_UNIT_SWEEP
+Barrer Mina
+# MSG_PRESS_KEY
+Por favor presione una tecla para asignar o Retroceso/Supr para borrar
+# MSG_LOAD_GAME
+Cargar Juego
+# MSG_SAVE_GAME
+Guardar Juego
+# MSG_GAME_SAVED
+Juegos Guardados
+# MSG_GAME_SAVED_PBEM
+El juego actual de PBeM fue guardado en
+'%s'.
+# MSG_ENTER_PASSWORD
+Ingrese _Clave
+# MSG_CHOOSE_PASSWORD
+Elija una _Clave
+# MSG_CONFIRM_PASSWORD
+Confirme la _Clave
+# MSG_NET_WAITING
+Esperando al jugador remoto...
+# MSG_NET_WAITING_CLIENT
+Esperando por cliente...
+# MSG_NET_CONNECTING
+Conectando...
+# MSG_NET_CONFIG_SERVER
+Configuración del Servidor
+# MSG_NET_CONFIG_CLIENT
+Conectarse al Servidor
+# MSG_TRANSFER_UNITS
+Select your cargo.
+# MSG_ASK_SIDE
+¿De qué lado quiere jugar?
+# MSG_ASK_REPAIR
+Reparar el %s requiere %d cristales.
+# MSG_ASK_OVERWRITE
+El archivo '%s'
+existe. ¿Sobreescribirlo?
+# MSG_ASK_ABORT
+¿Volver al menú principal?
+# MSG_ASK_ABORT_PBEM
+Really abort? The current game will be lost!
+# MSG_ASK_ABORT_NETWORK
+¿Quiere dejar realmente el juego actual y desconectarse?
+# MSG_ASK_QUIT
+¿Realmente quiere salir?
+# MSG_RESULT_DRAW
+¡Este juego fue un empate!
+# MSG_RESULT_VICTORY
+!Felicitaciones! !Ha salido victorioso!
+# MSG_RESULT_DEFEAT
+!Ha sido derrotado!
+# MSG_MESSAGE
+Mensaje
+# MSG_WARNING
+Advertencia
+# MSG_ERROR
+Error
+# MSG_ERR_WRITE
+No se pudo abrir el archivo de salida.
+# MSG_ERR_SAVE
+¡No se pudo guardar el juego!
+# MSG_ERR_NETWORK
+¡Se perdió la conexión con el otro jugador!
+# MSG_ERR_LOAD_MAP
+¡Fallo al cargar misión!
+# MSG_ERR_NO_ACCESS
+¡Acceso denegado!
+# MSG_ERR_NO_BRIEFING
+¡No hay detalle de misión disponible!
+# MSG_ERR_NO_LVL_INFO
+¡No hay información disponible sobre el nivel!
+# MSG_ERR_MAP_NOT_FOUND
+¡El mapa requerido no esta disponible!
+# MSG_ERR_NO_MAP
+¡No seleccionó un nivel!
+# MSG_ERR_SWEEPER_FULL
+No hay espacio para la mina.
+# MSG_ERR_NO_CRYSTALS
+Suministros Insuficientes
+# MSG_ERR_NO_PRODUCTION
+No puede construir esta unidad.
+[/messages]
+
diff -Nur cvs/locale/Makefile.am new/locale/Makefile.am
--- cvs/locale/Makefile.am	2009-10-24 18:38:02.000000000 -0300
+++ new/locale/Makefile.am	2009-10-24 22:58:27.000000000 -0300
@@ -1,5 +1,5 @@
 localedir = $(pkgdatadir)/locale
-locale_DATA = de.dat en.dat fr.dat hu.dat it.dat pl.dat sk.dat sr.dat tr.dat
+locale_DATA = de.dat en.dat es.dat fr.dat hu.dat it.dat pl.dat sk.dat sr.dat tr.dat
 
 EXTRA_DIST = $(locale_DATA:.dat=.tmpl)
 CLEANFILES = $(locale_DATA)
diff -Nur cvs/tools/default.usrc new/tools/default.usrc
--- cvs/tools/default.usrc	2007-01-14 08:25:14.000000000 -0300
+++ new/tools/default.usrc	2009-10-26 16:05:39.000000000 -0300
@@ -5,6 +5,7 @@
 [unit]
 name(de) = Infanterie
 name(en) = Infantry
+name(es) = Infantería
 name(fr) = Infanterie
 name(it) = Fanteria
 name(pl) = Piechota
@@ -34,6 +35,7 @@
 [unit]
 name(de) = Schützenpanzer
 name(en) = Medium Tanks
+name(es) = Tanque Mediano
 name(fr) = Tank Moyen
 name(it) = Carro Armato
 name(pl) = Lekkie czołgi
@@ -56,6 +58,7 @@
 [unit]
 name(de) = Schwere Panzer
 name(en) = Heavy Tanks
+name(es) = Tanque Pesado
 name(fr) = Tank Lourd
 name(it) = Carro Armato Pesante
 name(pl) = Ciężkie czołgi
@@ -79,6 +82,7 @@
 [unit]
 name(de) = Flakpanzer
 name(en) = Anti-Aircraft Tanks
+name(es) = Tanque Antiaéreo
 name(fr) = Tank Anti-Aérien
 name(it) = Carro Armato Antiaereo
 name(pl) = Czołgi przeciwlotnicze
@@ -104,6 +108,7 @@
 [unit]
 name(de) = Flakgeschütze
 name(en) = Anti-Aircraft Guns
+name(es) = Cañón Antiaéreo
 name(fr) = Canon Anti-Aérien
 name(it) = Cannone Antiaereo
 name(pl) = Działa przeciwlotnicze
@@ -123,6 +128,7 @@
 [unit]
 name(de) = Artillerie
 name(en) = Artillery
+name(es) = Artillería
 name(fr) = Artillerie
 name(it) = Artiglieria
 name(pl) = Artyleria
@@ -144,6 +150,7 @@
 [unit]
 name(de) = Minen
 name(en) = Mines
+name(es) = Minas
 name(fr) = Mine
 name(it) = Mina
 name(pl) = Miny
@@ -164,6 +171,7 @@
 [unit]
 name(de) = Patrouillenboote
 name(en) = Patrol Boats
+name(es) = Barco Patrulla
 name(fr) = Navire de Patrouille
 name(it) = Pattugliatori
 name(pl) = Łodzie patrolowe
@@ -189,6 +197,7 @@
 [unit]
 name(de) = Jagdgeschwader
 name(en) = Fighter Squadron
+name(es) = Escuadrón de Cazas
 name(fr) = Escadron de Chasseurs
 name(it) = Squadrone di Caccia
 name(pl) = Eskadra myśliwców
@@ -220,6 +229,7 @@
 [unit]
 name(de) = Truppentransporter
 name(en) = Personnel Carriers
+name(es) = Transporte de Tropas
 name(fr) = Transport de Troupes
 name(it) = Autotrasportatore
 name(pl) = Transportery opancerzone
@@ -244,6 +254,7 @@
 [unit]
 name(de) = Transportschiffe
 name(en) = Troopships
+name(es) = Navío de Transporte
 name(fr) = Navire de transport
 name(it) = Nave da Trasporto
 name(pl) = Łodzie transportowe
@@ -264,6 +275,7 @@
 [unit]
 name(de) = Transportflieger
 name(en) = Transport Planes
+name(es) = Aviones de Transporte
 name(fr) = Avion de transport
 name(it) = Aerei da Trasporto
 name(pl) = Samoloty transportowe
@@ -294,6 +306,7 @@
 [unit]
 name(de) = Aufklärer
 name(en) = Scouts
+name(es) = Exploradores
 name(fr) = Eclaireur
 name(it) = Esploratori
 name(pl) = Zwiadowcy
@@ -315,6 +328,7 @@
 [unit]
 name(de) = Abfangjäger
 name(en) = Interceptors
+name(es) = Interceptores
 name(fr) = Intercepteurs
 name(it) = Intercettatori
 name(pl) = Myśliwce przechwytujące
@@ -343,6 +357,7 @@
 [unit]
 name(de) = Bunker
 name(en) = Bunkers
+name(es) = Búnker
 name(fr) = Bunker
 name(it) = Bunkers
 name(pl) = Bunkry
@@ -365,6 +380,7 @@
 [unit]
 name(de) = Torpedoboote
 name(en) = Torpedo Boats
+name(es) = Navío Torpedero
 name(fr) = Torpilleur
 name(it) = Torpediniere
 name(pl) = Torpedowce
@@ -385,6 +401,7 @@
 [unit]
 name(de) = Bomberstaffel
 name(en) = Bomber Wing
+name(es) = Bombardero
 name(fr) = Bombardiers
 name(it) = Bombardiere
 name(pl) = Myśliwce wspierające
@@ -415,6 +432,7 @@
 [unit]
 name(de) = Luftkissenfahrzeuge
 name(en) = Hovercraft
+name(es) = Aerodeslizante
 name(fr) = Aéroglisseur
 name(it) = Hovercraft
 name(pl) = Poduszkowce
@@ -443,6 +461,7 @@
 [unit]
 name(de) = Kampfhubschrauber
 name(en) = Gunships
+name(es) = Helicóptero de Combate
 name(fr) = Hélicoptère de Combat
 name(it) = Elicottero da Battaglia
 name(pl) = Śmigłowce szturmowe
@@ -473,6 +492,7 @@
 [unit]
 name(de) = Truppenzug
 name(en) = Troop Train
+name(es) = Tren de Tropas
 name(fr) = Train pour Troupes
 name(it) = Treno per Truppe
 name(pl) = Pociąg transportowy
@@ -492,6 +512,7 @@
 [unit]
 name(de) = Schienengeschütze
 name(en) = Rail Guns
+name(es) = Cañón de riel
 name(fr) = Canon à Rail
 name(it) = Cannone su Rotaia
 name(pl) = Działa kolejowe
@@ -512,6 +533,7 @@
 [unit]
 name(de) = Panzerzug
 name(en) = Armoured Train
+name(es) = Tren Blindado
 name(fr) = Train Blindé
 name(it) = Treno Corazzato
 name(pl) = Opancerzony pociąg
@@ -531,6 +553,7 @@
 [unit]
 name(de) = U-Boote
 name(en) = Submarines
+name(es) = Submarinos
 name(fr) = Sous-marin
 name(it) = Sottomarino
 name(pl) = Łodzie podwodne
@@ -549,6 +572,7 @@
 [unit]
 name(de) = Flugzeugträger
 name(en) = Aircraft Carriers
+name(es) = Portaaviones
 name(fr) = Porte-avions
 name(it) = Porta Aerei
 name(pl) = Lotniskowce
diff -Nur cvs/src/cf/main.cpp new/src/cf/main.cpp
--- cvs/src/cf/main.cpp	2007-01-20 07:19:26.000000000 -0300
+++ new/src/cf/main.cpp	2009-10-28 22:39:39.000000000 -0300
@@ -125,6 +125,9 @@
           display->SelectWindow( iwin );
         }
 
+        // Load locale window if no locale is defined on the configuration file
+        if (!CFOptions.GetHasLocale()) new LocaleOptionsWindow( 0, display);
+
         iwin->Show();
       } else intro = 1;
 
diff -Nur cvs/src/cf/options.cpp new/src/cf/options.cpp
--- cvs/src/cf/options.cpp	2007-01-20 07:19:26.000000000 -0300
+++ new/src/cf/options.cpp	2009-10-28 22:39:42.000000000 -0300
@@ -35,7 +35,7 @@
 
 Options::Options( void ) : gametype(GTYPE_AI), show_damage(true), replay(true),
          quick_replay(false), campaign(false), language(CF_LANG_DEFAULT),
-         server(CF_DEFAULT_SERVER), server_port(CF_DEFAULT_PORT),
+         server(CF_DEFAULT_SERVER), server_port(CF_DEFAULT_PORT), has_locale(false),
          local_port(CF_DEFAULT_PORT) {
   for (int i = 0; i < KEYBIND_COUNT; ++i)
     keymap[i] = SDLK_UNKNOWN;
diff -Nur cvs/src/cf/options.h new/src/cf/options.h
--- cvs/src/cf/options.h	2007-01-20 07:19:26.000000000 -0300
+++ new/src/cf/options.h	2009-10-28 22:39:40.000000000 -0300
@@ -73,13 +73,14 @@
   void SetTurnReplay( bool rep ) { replay = rep; }
   void SetQuickReplay( bool rep ) { quick_replay = rep; }
   void SetCampaign( bool flag ) { campaign = flag; }
-  void SetLanguage( const char *lang ) { language.assign(lang); }
+  void SetLanguage( const char *lang ) { language.assign(lang); has_locale = true; }
   void SetGameType( GameType type ) { gametype = type; }
 
   bool GetDamageIndicator( void ) const { return show_damage; }
   bool GetTurnReplay( void ) const { return replay; }
   bool GetQuickReplay( void ) const { return quick_replay; }
   bool GetCampaign( void ) const { return campaign; }
+  bool GetHasLocale( void ) const { return has_locale; }
   const char *GetLanguage( void ) const { return language.c_str(); }
   GameType GetGameType( void ) const { return gametype; }
 
@@ -115,6 +116,7 @@
   bool replay;        // show turn replays
   bool quick_replay;  // show only combat results
   bool campaign;      // playing a campaign
+  bool has_locale;
   string language;
 
   // network related settings