Your contribution is very welcome :) The property file is easy to integrate, the code updates are a little tricker. To submit the code updates, load the CVS version of MapTool into Eclipse, make your changes and have eclipse make a patch for you. Send that file in and we'll certainly integrate it. If that process is new to you let me know and we can work it out.
On a similar note, we're looking for people interested in helping with the art, layout, and usability (non technical stuff :) ), so if you or anyone you know are interested, let us know !
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
RCS file: net/rptools/maptool/language/i18n_es.properties
diff -N net/rptools/maptool/language/i18n_es.properties
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ net/rptools/maptool/language/i18n_es.properties 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,64 @@
+menu.file=&Archivo
+menu.view=&Ver
+menu.map=&Mapa
+menu.tools=&Herramientas
+menu.help=A&yuda
+menu.zoom=&Zoom
+
+action.newCampaign=New Campaa
+action.loadCampaign=Abrir Campaa
+action.saveCampaign=Guardar Campaa
+
+action.removeAssetRoot=Eliminar
+action.enforceView=Centrar a los jugadores en la &vista actual
+action.enforceView.accel=ctrl V
+action.runMacro=&Ejecutar Macro
+action.runMacro.accel=typed /
+action.debug.duplicateLastIcon=Duplicar el ltimo icono (debug)
+
+action.adjustGrid=Ajustar Rejilla
+action.showGrid=Mostrar &Rejilla
+action.showGrid.accel=ctrl G
+
+action.enableFogOfWar=Activar "Fog of War"
+action.enableFogOfWar.description=Activar "Fog of War" para el mapa actual
+
+action.showNames=Mostrar &texto en los iconos
+action.showNames.accel=ctrl T
+
+action.showAboutDialog=Acerca de...
+
+action.hideMap=&Ocultar el mapa a los jugadores
+action.hideMap.description=Oculta el mapa actual a los jugadores
+
+action.autohideNewMaps=Auto Ocultar mapas nuevos
+action.autohideNewMaps.description=Hace invisibles los nuevos mapas a los jugadores
+action.autohideNewIcons=Auto Ocultar nuevos iconos
+action.autohideNewIcons.description=Hace invisibles los nuevos iconos a los jugadores
+
+action.zoomIn=Zoom &In
+action.zoomIn.accel=typed +
+action.zoomOut=Zoom &Out
+action.zoomOut.accel=typed -
+action.zoom100=Zoom 1:1
+action.zoom100.accel=typed =
+
+action.showMapSelector=Mostrar &Selector del mapa
+action.showInformationPanel=Mostrar panel de informacin
+
+action.serverStart=Arrancar servidor
+action.clientConnect=Conectarse a servidor remoto
+action.clientDisconnect=Desconectarse de un servidor remoto
+
+action.newUnboundedMap=Nuevo mapa con fondo
+action.newUnboundedMap.accel=ctrl shift N
+action.newMap=Nuevo mapa
+action.newMap.accel=ctrl N
+
+action.showInformationPanel=Mostrar panel de informacin
+action.addIconSelector=Aadir &carpeta de imgenes
+action.addIconSelector.accel=ctrl I
+
+action.refresh=Actualizar
+action.refresh.accel=F5
+action.exit=Salir
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
There is a problem with the encoding of the spanish special characters. I will post the new version (with utf-8 correct chars) soon. Note the tildes and ñ are not shown correctly now.
It's a detail, of course :)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
if (dir == null) {
- MapTool.showError("Select an asset group first");
+ MapTool.showI18NError("msg.error.mustSelectAssetGroupFirst");
return;
}
if (!assetPanel.isAssetRoot(dir)) {
- MapTool.showError("Must select a root group");
+ MapTool.showI18NError("msg.error.mustSelectRootGroup");
return;
}
@@ -108,7 +108,7 @@
if (!MapTool.getPlayer().isGM()) {
// TODO: This option should be disabled when not a GM
- MapTool.showError("Only GMs can do that");
+ MapTool.showI18NError("msg.error.gmRequired");
return;
}
@@ -165,12 +165,12 @@
public void execute(ActionEvent e) {
if (!MapTool.getPlayer().isGM()) {
- MapTool.showError("Must be GM to adjust grid");
+ MapTool.showI18NError("msg.error.gmRequired");
return;
}
if (MapTool.getFrame().getCurrentZoneRenderer().getZone().getType() == Zone.Type.INFINITE) {
- MapTool.showError("Cannot adjust grid on infinite maps.");
+ MapTool.showI18NError("msg.error.cantAdjustGridInfMaps");
return;
}
@@ -306,7 +306,7 @@
if (MapTool.isConnected()) {
MapTool
- .showError("You are connected to a server. Please disconnect first.");
+ .showI18NError("msg.error.mustDisconnectFirst");
return;
}
@@ -380,7 +380,7 @@
public void run() {
if (MapTool.isConnected()) {
- MapTool.showError("Already connected.");
+ MapTool.showI18NError("msg.error.mustDisconnectFirst");
return;
}
@@ -412,11 +412,11 @@
.setStatus(ConnectionStatusPanel.Status.server);
} catch (UnknownHostException uh) {
MapTool
- .showError("Whoah, 'localhost' is not a valid address. Weird.");
+ .showI18NError("msg.error.noLocalhost");
return;
} catch (IOException ioe) {
MapTool
- .showError("Could not connect to server: "
+ .showI18NError("msg.error.unknownHost"
+ ioe);
return;
}
@@ -437,7 +437,7 @@
try {
if (MapTool.isConnected()) {
- MapTool.showError("Already connected.");
+ MapTool.showI18NError("msg.error.mustDisconnectFirst");
return;
}
if (MapTool.isHostingServer()) {
- MapTool.showError("Can't disconnect from yourself");
+ MapTool.showI18NError("msg.error.disconnectYourself");
return;
}
@@ -506,12 +506,12 @@
public void execute(ActionEvent ae) {
if (MapTool.isConnected() && !MapTool.getPlayer().isGM()) {
- MapTool.showError("Must be a GM to load a campaign.");
+ MapTool.showI18NError("msg.error.gmRequired");
return;
}
if (chooser.showOpenDialog(MapTool.getFrame()) == JFileChooser.APPROVE_OPTION) {
@@ -527,7 +527,7 @@
}
} catch (IOException ioe) {
- MapTool.showError("Could not load campaign: " + ioe);
+ MapTool.showI18NError("msg.error.couldntLoadCampaign" + ioe);
}
}
}
@@ -545,7 +545,7 @@
// TODO: this should eventually just remember the last place it was
// saved
JFileChooser chooser = MapTool.getSaveFileChooser();
- chooser.setDialogTitle("Save Campaign");
+ chooser.setDialogTitle(I18N.getText("msg.saveCampaign"));
if (chooser.showSaveDialog(MapTool.getFrame()) == JFileChooser.APPROVE_OPTION) {
action.refresh=Refresh
action.refresh.accel=F5
-action.exit=E&xit
\ No newline at end of file
+action.exit=E&xit
+
+msg.error.mustSelectRootGroup=Must select a root group
+msg.error.mustSelectAssetGroupFirst=Select an asset group first
+msg.error.gmRequired=Only GMs can do that
+msg.error.cantAdjustGridInfMaps=Cannot adjust grid on infinite maps
+msg.error.mustDisconnectFirst=You are connected to a server. Please disconnect first.
+msg.error.noLocalhost=Whoah, 'localhost' is not a valid address. Weird.
+msg.error.unknownHost=Could not connect to server
+msg.error.disconnectYourself=Can't disconnect from yourself
+msg.error.ioError=IO Error
+msg.error.couldntLoadCampaign=Could not load campaign
+msg.error.couldntSaveCampaign=Could not save campaign
+msg.error.couldntLoad=Could not load
+
+
+msg.loadCampaign=Load Campaign
+msg.saveCampaign=Save Campaign
+msg.loadMap=Load Map
+msg.loadAssetTree=Load Asset Tree
\ No newline at end of file
Index: net/rptools/maptool/language/i18n_es.properties
===================================================================
RCS file: net/rptools/maptool/language/i18n_es.properties
diff -N net/rptools/maptool/language/i18n_es.properties
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ net/rptools/maptool/language/i18n_es.properties 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,83 @@
+menu.file=&Archivo
+menu.view=&Ver
+menu.map=&Mapa
+menu.tools=&Herramientas
+menu.help=A&yuda
+menu.zoom=&Zoom
+
+action.newCampaign=New Campaa
+action.loadCampaign=Abrir Campaa
+action.saveCampaign=Guardar Campaa
+
+action.removeAssetRoot=Eliminar
+action.enforceView=Centrar a los jugadores en la &vista actual
+action.enforceView.accel=ctrl V
+action.runMacro=&Ejecutar Macro
+action.runMacro.accel=typed /
+action.debug.duplicateLastIcon=Duplicar el ltimo icono (debug)
+
+action.adjustGrid=Ajustar Rejilla
+action.showGrid=Mostrar &Rejilla
+action.showGrid.accel=ctrl G
+
+action.enableFogOfWar=Activar "Fog of War"
+action.enableFogOfWar.description=Activar "Fog of War" para el mapa actual
+
+action.showNames=Mostrar &texto en los iconos
+action.showNames.accel=ctrl T
+
+action.showAboutDialog=Acerca de...
+
+action.hideMap=&Ocultar el mapa a los jugadores
+action.hideMap.description=Oculta el mapa actual a los jugadores
+
+action.autohideNewMaps=Auto Ocultar mapas nuevos
+action.autohideNewMaps.description=Hace invisibles los nuevos mapas a los jugadores
+action.autohideNewIcons=Auto Ocultar nuevos iconos
+action.autohideNewIcons.description=Hace invisibles los nuevos iconos a los jugadores
+
+action.zoomIn=Zoom &In
+action.zoomIn.accel=typed +
+action.zoomOut=Zoom &Out
+action.zoomOut.accel=typed -
+action.zoom100=Zoom 1:1
+action.zoom100.accel=typed =
+
+action.showMapSelector=Mostrar &Selector del mapa
+action.showInformationPanel=Mostrar panel de informacin
+
+action.serverStart=Arrancar servidor
+action.clientConnect=Conectarse a servidor remoto
+action.clientDisconnect=Desconectarse de un servidor remoto
+
+action.newUnboundedMap=Nuevo mapa con fondo
+action.newUnboundedMap.accel=ctrl shift N
+action.newMap=Nuevo mapa
+action.newMap.accel=ctrl N
+
+action.showInformationPanel=Mostrar panel de informacin
+action.addIconSelector=Aadir &carpeta de imgenes
+action.addIconSelector.accel=ctrl I
+
+action.refresh=Actualizar
+action.refresh.accel=F5
+action.exit=Salir
+
+msg.error.mustSelectRootGroup=Debe seleccionar un grupo raz
+msg.error.mustSelectAssetGroupFirst=Seleccione un grupo de Marcadores primero
+msg.error.gmRequired=Esta operacin slo est permitida para los DJs
+msg.error.cantAdjustGridInfMaps=No se puede ajustar la rejilla en un mapa infinito
+msg.error.mustDisconnectFirst=Ya ests conectado a un servidor, primero desconecta.
+msg.error.noLocalhost=Localhost no es una direccin vlida, esto es realmente extrao...
+msg.error.unknownHost=No se pudo conectar al servidor
+msg.error.disconnectYourself=No puedes desconectar de ti mismo
+msg.error.ioError=Error de E/S
+msg.error.couldntLoadCampaign=No se pudo cargar la Campaa
+msg.error.couldntSaveCampaign=No se pudo guardar la Campaa
+msg.error.couldntLoad=No se pudo leer
+
+
+msg.loadCampaign=Abrir Campaa
+msg.saveCampaign=Guardar Campaa
+msg.loadMap=Abrir Mapa
+msg.loadAssetTree=Abrir Ruta de Marcadores
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Looking over the patch, it reminds me that I put in a swing i18n framework into another project I worked on recently. I think I'll integrate a similar framework into MapTool, it will make your integrations much easier.
Give me a day or two and I'll get that set up so you can do all the i18n you want :)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
if (dir == null) {
- MapTool.showError("Select an asset group first");
+ MapTool.showI18NError("msg.error.mustSelectAssetGroupFirst");
return;
}
if (!assetPanel.isAssetRoot(dir)) {
- MapTool.showError("Must select a root group");
+ MapTool.showI18NError("msg.error.mustSelectRootGroup");
return;
}
@@ -137,7 +137,7 @@
if (!MapTool.getPlayer().isGM()) {
// TODO: This option should be disabled when not a GM
- MapTool.showError("Only GMs can do that");
+ MapTool.showI18NError("msg.error.gmRequired");
return;
}
@@ -221,12 +221,12 @@
public void execute(ActionEvent e) {
if (!MapTool.getPlayer().isGM()) {
- MapTool.showError("Must be GM to adjust grid");
+ MapTool.showI18NError("msg.error.gmRequired");
return;
}
if (MapTool.getFrame().getCurrentZoneRenderer().getZone().getType() == Zone.Type.INFINITE) {
- MapTool.showError("Cannot adjust grid on infinite maps.");
+ MapTool.showI18NError("msg.error.cantAdjustGridInfMaps");
return;
}
@@ -362,7 +362,7 @@
if (MapTool.isConnected()) {
MapTool
- .showError("You are connected to a server. Please disconnect first.");
+ .showI18NError("msg.error.mustDisconnectFirst");
return;
}
@@ -441,7 +441,7 @@
public void run() {
if (MapTool.isConnected()) {
- MapTool.showError("Already connected.");
+ MapTool.showI18NError("msg.error.mustDisconnectFirst");
return;
}
if (MapTool.isHostingServer()) {
- MapTool.showError("Can't disconnect from yourself");
+ MapTool.showI18NError("msg.error.disconnectYourself");
return;
}
@@ -563,12 +565,12 @@
public void execute(ActionEvent ae) {
if (MapTool.isConnected() && !MapTool.getPlayer().isGM()) {
- MapTool.showError("Must be a GM to load a campaign.");
+ MapTool.showI18NError("msg.error.gmRequired");
return;
}
if (chooser.showOpenDialog(MapTool.getFrame()) == JFileChooser.APPROVE_OPTION) {
@@ -584,7 +586,7 @@
}
} catch (IOException ioe) {
- MapTool.showError("Could not load campaign: " + ioe);
+ MapTool.showI18NError("msg.error.couldntLoadCampaign" + ioe);
}
}
}
@@ -602,7 +604,7 @@
// TODO: this should eventually just remember the last place it was
// saved
JFileChooser chooser = MapTool.getSaveFileChooser();
- chooser.setDialogTitle("Save Campaign");
+ chooser.setDialogTitle(I18N.getText("msg.saveCampaign"));
if (chooser.showSaveDialog(MapTool.getFrame()) == JFileChooser.APPROVE_OPTION) {
action.refresh=Refresh
action.refresh.accel=F5
-action.exit=E&xit
\ No newline at end of file
+action.exit=E&xit
+
+msg.error.mustSelectRootGroup=Must select a root group
+msg.error.mustSelectAssetGroupFirst=Select an asset group first
+msg.error.gmRequired=Only GMs can do that
+msg.error.cantAdjustGridInfMaps=Cannot adjust grid on infinite maps
+msg.error.mustDisconnectFirst=You are connected to a server. Please disconnect first.
+msg.error.noLocalhost=Whoah, 'localhost' is not a valid address. Weird.
+msg.error.unknownHost=Could not connect to server
+msg.error.disconnectYourself=Can't disconnect from yourself
+msg.error.ioError=IO Error
+msg.error.couldntLoadCampaign=Could not load campaign
+msg.error.couldntSaveCampaign=Could not save campaign
+msg.error.couldntLoad=Could not load
+
+
+msg.loadCampaign=Load Campaign
+msg.saveCampaign=Save Campaign
+msg.loadMap=Load Map
+msg.loadAssetTree=Load Asset Tree
\ No newline at end of file
Index: net/rptools/maptool/language/i18n_es.properties
===================================================================
RCS file: net/rptools/maptool/language/i18n_es.properties
diff -N net/rptools/maptool/language/i18n_es.properties
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ net/rptools/maptool/language/i18n_es.properties 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,83 @@
+menu.file=&Archivo
+menu.view=&Ver
+menu.map=&Mapa
+menu.tools=&Herramientas
+menu.help=A&yuda
+menu.zoom=&Zoom
+
+action.newCampaign=New Campaña
+action.loadCampaign=Abrir Campaña
+action.saveCampaign=Guardar Campaña
+
+action.removeAssetRoot=Eliminar
+action.enforceView=Centrar a los jugadores en la &vista actual
+action.enforceView.accel=ctrl V
+action.runMacro=&Ejecutar Macro
+action.runMacro.accel=typed /
+action.debug.duplicateLastIcon=Duplicar el último icono (debug)
+
+action.adjustGrid=Ajustar Rejilla
+action.showGrid=Mostrar &Rejilla
+action.showGrid.accel=ctrl G
+
+action.enableFogOfWar=Activar "Fog of War"
+action.enableFogOfWar.description=Activar "Fog of War" para el mapa actual
+
+action.showNames=Mostrar &texto en los iconos
+action.showNames.accel=ctrl T
+
+action.showAboutDialog=Acerca de...
+
+action.hideMap=&Ocultar el mapa a los jugadores
+action.hideMap.description=Oculta el mapa actual a los jugadores
+
+action.autohideNewMaps=Auto Ocultar mapas nuevos
+action.autohideNewMaps.description=Hace invisibles los nuevos mapas a los jugadores
+action.autohideNewIcons=Auto Ocultar nuevos iconos
+action.autohideNewIcons.description=Hace invisibles los nuevos iconos a los jugadores
+
+action.zoomIn=Zoom &In
+action.zoomIn.accel=typed +
+action.zoomOut=Zoom &Out
+action.zoomOut.accel=typed -
+action.zoom100=Zoom 1:1
+action.zoom100.accel=typed =
+
+action.showMapSelector=Mostrar &Selector del mapa
+action.showInformationPanel=Mostrar panel de información
+
+action.serverStart=Arrancar servidor
+action.clientConnect=Conectarse a servidor remoto
+action.clientDisconnect=Desconectarse de un servidor remoto
+
+action.newUnboundedMap=Nuevo mapa con fondo
+action.newUnboundedMap.accel=ctrl shift N
+action.newMap=Nuevo mapa
+action.newMap.accel=ctrl N
+
+action.showInformationPanel=Mostrar panel de información
+action.addIconSelector=Añadir &carpeta de imágenes
+action.addIconSelector.accel=ctrl I
+
+action.refresh=Actualizar
+action.refresh.accel=F5
+action.exit=Salir
+
+msg.error.mustSelectRootGroup=Debe seleccionar un grupo raíz
+msg.error.mustSelectAssetGroupFirst=Seleccione un grupo de Marcadores primero
+msg.error.gmRequired=Esta operación sólo está permitida para los DJs
+msg.error.cantAdjustGridInfMaps=No se puede ajustar la rejilla en un mapa infinito
+msg.error.mustDisconnectFirst=Ya estás conectado a un servidor, primero desconecta.
+msg.error.noLocalhost=Localhost no es una dirección válida, esto es realmente extraño...
+msg.error.unknownHost=No se pudo conectar al servidor
+msg.error.disconnectYourself=No puedes desconectar de ti mismo
+msg.error.ioError=Error de E/S
+msg.error.couldntLoadCampaign=No se pudo cargar la Campaña
+msg.error.couldntSaveCampaign=No se pudo guardar la Campaña
+msg.error.couldntLoad=No se pudo leer
+
+
+msg.loadCampaign=Abrir Campaña
+msg.saveCampaign=Guardar Campaña
+msg.loadMap=Abrir Mapa
+msg.loadAssetTree=Abrir Ruta de Marcadores
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
i want to contribute my i18n_es.properties file.
I also have noticed a lot of messages outside the i18n file, i would like to help in translating all the stuff (adding the strings to the i18n file)
Your contribution is very welcome :) The property file is easy to integrate, the code updates are a little tricker. To submit the code updates, load the CVS version of MapTool into Eclipse, make your changes and have eclipse make a patch for you. Send that file in and we'll certainly integrate it. If that process is new to you let me know and we can work it out.
On a similar note, we're looking for people interested in helping with the art, layout, and usability (non technical stuff :) ), so if you or anyone you know are interested, let us know !
Index: net/rptools/maptool/language/i18n_es.properties
RCS file: net/rptools/maptool/language/i18n_es.properties
diff -N net/rptools/maptool/language/i18n_es.properties
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ net/rptools/maptool/language/i18n_es.properties 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,64 @@
+menu.file=&Archivo
+menu.view=&Ver
+menu.map=&Mapa
+menu.tools=&Herramientas
+menu.help=A&yuda
+menu.zoom=&Zoom
+
+action.newCampaign=New Campaa
+action.loadCampaign=Abrir Campaa
+action.saveCampaign=Guardar Campaa
+
+action.removeAssetRoot=Eliminar
+action.enforceView=Centrar a los jugadores en la &vista actual
+action.enforceView.accel=ctrl V
+action.runMacro=&Ejecutar Macro
+action.runMacro.accel=typed /
+action.debug.duplicateLastIcon=Duplicar el ltimo icono (debug)
+
+action.adjustGrid=Ajustar Rejilla
+action.showGrid=Mostrar &Rejilla
+action.showGrid.accel=ctrl G
+
+action.enableFogOfWar=Activar "Fog of War"
+action.enableFogOfWar.description=Activar "Fog of War" para el mapa actual
+
+action.showNames=Mostrar &texto en los iconos
+action.showNames.accel=ctrl T
+
+action.showAboutDialog=Acerca de...
+
+action.hideMap=&Ocultar el mapa a los jugadores
+action.hideMap.description=Oculta el mapa actual a los jugadores
+
+action.autohideNewMaps=Auto Ocultar mapas nuevos
+action.autohideNewMaps.description=Hace invisibles los nuevos mapas a los jugadores
+action.autohideNewIcons=Auto Ocultar nuevos iconos
+action.autohideNewIcons.description=Hace invisibles los nuevos iconos a los jugadores
+
+action.zoomIn=Zoom &In
+action.zoomIn.accel=typed +
+action.zoomOut=Zoom &Out
+action.zoomOut.accel=typed -
+action.zoom100=Zoom 1:1
+action.zoom100.accel=typed =
+
+action.showMapSelector=Mostrar &Selector del mapa
+action.showInformationPanel=Mostrar panel de informacin
+
+action.serverStart=Arrancar servidor
+action.clientConnect=Conectarse a servidor remoto
+action.clientDisconnect=Desconectarse de un servidor remoto
+
+action.newUnboundedMap=Nuevo mapa con fondo
+action.newUnboundedMap.accel=ctrl shift N
+action.newMap=Nuevo mapa
+action.newMap.accel=ctrl N
+
+action.showInformationPanel=Mostrar panel de informacin
+action.addIconSelector=Aadir &carpeta de imgenes
+action.addIconSelector.accel=ctrl I
+
+action.refresh=Actualizar
+action.refresh.accel=F5
+action.exit=Salir
There is a problem with the encoding of the spanish special characters. I will post the new version (with utf-8 correct chars) soon. Note the tildes and ñ are not shown correctly now.
It's a detail, of course :)
Sounds good, note that we've updated the file with lots of text.
Also, if you were so inclined there's a lot of new unexternalized strings (bad me BAD) that you would be welcome to submit patches for.
On another note, we've moved to new forums (rptools.net/phpbb2
this patch is mine, is from the src folder and adds a new spanish i18n.properties file.
I'm patching now other files and extracting the messages to the bundles...
Index: net/rptools/maptool/client/AppActions.java
RCS file: /cvsroot/rptools/maptool/src/net/rptools/maptool/client/AppActions.java,v
retrieving revision 1.28
diff -u -r1.28 AppActions.java
--- net/rptools/maptool/client/AppActions.java 12 Oct 2005 03:53:42 -0000 1.28
+++ net/rptools/maptool/client/AppActions.java 18 Oct 2005 23:12:57 -0000
@@ -72,12 +72,12 @@
Directory dir = assetPanel.getSelectedAssetRoot();
if (dir == null) {
- MapTool.showError("Select an asset group first");
+ MapTool.showI18NError("msg.error.mustSelectAssetGroupFirst");
return;
}
if (!assetPanel.isAssetRoot(dir)) {
- MapTool.showError("Must select a root group");
+ MapTool.showI18NError("msg.error.mustSelectRootGroup");
return;
}
@@ -108,7 +108,7 @@
if (!MapTool.getPlayer().isGM()) {
// TODO: This option should be disabled when not a GM
- MapTool.showError("Only GMs can do that");
+ MapTool.showI18NError("msg.error.gmRequired");
return;
}
@@ -165,12 +165,12 @@
public void execute(ActionEvent e) {
if (!MapTool.getPlayer().isGM()) {
- MapTool.showError("Must be GM to adjust grid");
+ MapTool.showI18NError("msg.error.gmRequired");
return;
}
if (MapTool.getFrame().getCurrentZoneRenderer().getZone().getType() == Zone.Type.INFINITE) {
- MapTool.showError("Cannot adjust grid on infinite maps.");
+ MapTool.showI18NError("msg.error.cantAdjustGridInfMaps");
return;
}
@@ -306,7 +306,7 @@
if (MapTool.isConnected()) {
MapTool
- .showError("You are connected to a server. Please disconnect first.");
+ .showI18NError("msg.error.mustDisconnectFirst");
return;
}
@@ -380,7 +380,7 @@
public void run() {
if (MapTool.isConnected()) {
- MapTool.showError("Already connected.");
+ MapTool.showI18NError("msg.error.mustDisconnectFirst");
return;
}
@@ -412,11 +412,11 @@
.setStatus(ConnectionStatusPanel.Status.server);
} catch (UnknownHostException uh) {
MapTool
- .showError("Whoah, 'localhost' is not a valid address. Weird.");
+ .showI18NError("msg.error.noLocalhost");
return;
} catch (IOException ioe) {
MapTool
- .showError("Could not connect to server: "
+ .showI18NError("msg.error.unknownHost"
+ ioe);
return;
}
@@ -437,7 +437,7 @@
try {
if (MapTool.isConnected()) {
- MapTool.showError("Already connected.");
+ MapTool.showI18NError("msg.error.mustDisconnectFirst");
return;
}
@@ -464,11 +464,11 @@
ConnectionStatusPanel.Status.connected);
} catch (UnknownHostException e1) {
// TODO Auto-generated catch block
- MapTool.showError("Unknown host");
+ MapTool.showI18NError("msg.error.unknownHost");
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
- MapTool.showError("IO Error: " + e1);
+ MapTool.showI18NError("msg.error.ioError" + e1);
e1.printStackTrace();
}
@@ -489,7 +489,7 @@
}
if (MapTool.isHostingServer()) {
- MapTool.showError("Can't disconnect from yourself");
+ MapTool.showI18NError("msg.error.disconnectYourself");
return;
}
@@ -506,12 +506,12 @@
public void execute(ActionEvent ae) {
if (MapTool.isConnected() && !MapTool.getPlayer().isGM()) {
- MapTool.showError("Must be a GM to load a campaign.");
+ MapTool.showI18NError("msg.error.gmRequired");
return;
}
JFileChooser chooser = MapTool.getLoadFileChooser();
- chooser.setDialogTitle("Load Campaign");
+ chooser.setDialogTitle(I18N.getText("msg.loadCampaign"));
if (chooser.showOpenDialog(MapTool.getFrame()) == JFileChooser.APPROVE_OPTION) {
@@ -527,7 +527,7 @@
}
} catch (IOException ioe) {
- MapTool.showError("Could not load campaign: " + ioe);
+ MapTool.showI18NError("msg.error.couldntLoadCampaign" + ioe);
}
}
}
@@ -545,7 +545,7 @@
// TODO: this should eventually just remember the last place it was
// saved
JFileChooser chooser = MapTool.getSaveFileChooser();
- chooser.setDialogTitle("Save Campaign");
+ chooser.setDialogTitle(I18N.getText("msg.saveCampaign"));
if (chooser.showSaveDialog(MapTool.getFrame()) == JFileChooser.APPROVE_OPTION) {
@@ -553,7 +553,7 @@
PersistenceUtil.saveCampaign(campaign, chooser
.getSelectedFile());
} catch (IOException ioe) {
- MapTool.showError("Could not save campaign: " + ioe);
+ MapTool.showError("msg.error.couldntSaveCampaign" + ioe);
}
}
}
@@ -592,7 +592,7 @@
public void run() {
JFileChooser loadFileChooser = MapTool.getLoadFileChooser();
- loadFileChooser.setDialogTitle("Load Map");
+ loadFileChooser.setDialogTitle(I18N.getText("msg.loadMap"));
loadFileChooser
.setFileSelectionMode(JFileChooser.FILES_ONLY);
@@ -615,7 +615,7 @@
zone.setVisible(AppState.isNewZonesVisible());
MapTool.addZone(zone);
} catch (IOException ioe) {
- MapTool.showError("Could not load image: " + ioe);
+ MapTool.showI18NError("msg.couldntLoad" + ioe);
return;
}
}
@@ -652,7 +652,7 @@
public void run() {
JFileChooser chooser = MapTool.getLoadFileChooser();
- chooser.setDialogTitle("Load Asset Tree");
+ chooser.setDialogTitle(I18N.getText("msg.loadAssetTree"));
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
if (chooser.showOpenDialog(MapTool.getFrame()) != JFileChooser.APPROVE_OPTION) {
Index: net/rptools/maptool/client/MapTool.java
===================================================================
RCS file: /cvsroot/rptools/maptool/src/net/rptools/maptool/client/MapTool.java,v
retrieving revision 1.22
diff -u -r1.22 MapTool.java
--- net/rptools/maptool/client/MapTool.java 23 Sep 2005 20:34:28 -0000 1.22
+++ net/rptools/maptool/client/MapTool.java 18 Oct 2005 23:12:57 -0000
@@ -41,6 +41,7 @@
import net.rptools.maptool.client.ui.MapToolClient;
import net.rptools.maptool.client.ui.zone.ZoneRenderer;
import net.rptools.maptool.client.ui.zone.ZoneRendererFactory;
+import net.rptools.maptool.language.I18N;
import net.rptools.maptool.model.Campaign;
import net.rptools.maptool.model.ObservableList;
import net.rptools.maptool.model.Player;
@@ -73,11 +74,15 @@
// Components
private static JFileChooser loadFileChooser;
private static JFileChooser saveFileChooser;
-
+
public static void showError(String message) {
JOptionPane.showMessageDialog(clientFrame, message, "Error", JOptionPane.ERROR_MESSAGE);
}
-
+
+ public static void showI18NError(String key) {
+ JOptionPane.showMessageDialog(clientFrame, I18N.getText(key), I18N.getText("msg.error"), JOptionPane.ERROR_MESSAGE);
+ }
+
private MapTool() {
// Not instantiatable
}
Index: net/rptools/maptool/language/i18n.properties
===================================================================
RCS file: /cvsroot/rptools/maptool/src/net/rptools/maptool/language/i18n.properties,v
retrieving revision 1.3
diff -u -r1.3 i18n.properties
--- net/rptools/maptool/language/i18n.properties 12 Oct 2005 03:53:42 -0000 1.3
+++ net/rptools/maptool/language/i18n.properties 18 Oct 2005 23:12:57 -0000
@@ -61,4 +61,23 @@
action.refresh=Refresh
action.refresh.accel=F5
-action.exit=E&xit
\ No newline at end of file
+action.exit=E&xit
+
+msg.error.mustSelectRootGroup=Must select a root group
+msg.error.mustSelectAssetGroupFirst=Select an asset group first
+msg.error.gmRequired=Only GMs can do that
+msg.error.cantAdjustGridInfMaps=Cannot adjust grid on infinite maps
+msg.error.mustDisconnectFirst=You are connected to a server. Please disconnect first.
+msg.error.noLocalhost=Whoah, 'localhost' is not a valid address. Weird.
+msg.error.unknownHost=Could not connect to server
+msg.error.disconnectYourself=Can't disconnect from yourself
+msg.error.ioError=IO Error
+msg.error.couldntLoadCampaign=Could not load campaign
+msg.error.couldntSaveCampaign=Could not save campaign
+msg.error.couldntLoad=Could not load
+
+
+msg.loadCampaign=Load Campaign
+msg.saveCampaign=Save Campaign
+msg.loadMap=Load Map
+msg.loadAssetTree=Load Asset Tree
\ No newline at end of file
Index: net/rptools/maptool/language/i18n_es.properties
===================================================================
RCS file: net/rptools/maptool/language/i18n_es.properties
diff -N net/rptools/maptool/language/i18n_es.properties
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ net/rptools/maptool/language/i18n_es.properties 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,83 @@
+menu.file=&Archivo
+menu.view=&Ver
+menu.map=&Mapa
+menu.tools=&Herramientas
+menu.help=A&yuda
+menu.zoom=&Zoom
+
+action.newCampaign=New Campaa
+action.loadCampaign=Abrir Campaa
+action.saveCampaign=Guardar Campaa
+
+action.removeAssetRoot=Eliminar
+action.enforceView=Centrar a los jugadores en la &vista actual
+action.enforceView.accel=ctrl V
+action.runMacro=&Ejecutar Macro
+action.runMacro.accel=typed /
+action.debug.duplicateLastIcon=Duplicar el ltimo icono (debug)
+
+action.adjustGrid=Ajustar Rejilla
+action.showGrid=Mostrar &Rejilla
+action.showGrid.accel=ctrl G
+
+action.enableFogOfWar=Activar "Fog of War"
+action.enableFogOfWar.description=Activar "Fog of War" para el mapa actual
+
+action.showNames=Mostrar &texto en los iconos
+action.showNames.accel=ctrl T
+
+action.showAboutDialog=Acerca de...
+
+action.hideMap=&Ocultar el mapa a los jugadores
+action.hideMap.description=Oculta el mapa actual a los jugadores
+
+action.autohideNewMaps=Auto Ocultar mapas nuevos
+action.autohideNewMaps.description=Hace invisibles los nuevos mapas a los jugadores
+action.autohideNewIcons=Auto Ocultar nuevos iconos
+action.autohideNewIcons.description=Hace invisibles los nuevos iconos a los jugadores
+
+action.zoomIn=Zoom &In
+action.zoomIn.accel=typed +
+action.zoomOut=Zoom &Out
+action.zoomOut.accel=typed -
+action.zoom100=Zoom 1:1
+action.zoom100.accel=typed =
+
+action.showMapSelector=Mostrar &Selector del mapa
+action.showInformationPanel=Mostrar panel de informacin
+
+action.serverStart=Arrancar servidor
+action.clientConnect=Conectarse a servidor remoto
+action.clientDisconnect=Desconectarse de un servidor remoto
+
+action.newUnboundedMap=Nuevo mapa con fondo
+action.newUnboundedMap.accel=ctrl shift N
+action.newMap=Nuevo mapa
+action.newMap.accel=ctrl N
+
+action.showInformationPanel=Mostrar panel de informacin
+action.addIconSelector=Aadir &carpeta de imgenes
+action.addIconSelector.accel=ctrl I
+
+action.refresh=Actualizar
+action.refresh.accel=F5
+action.exit=Salir
+
+msg.error.mustSelectRootGroup=Debe seleccionar un grupo raz
+msg.error.mustSelectAssetGroupFirst=Seleccione un grupo de Marcadores primero
+msg.error.gmRequired=Esta operacin slo est permitida para los DJs
+msg.error.cantAdjustGridInfMaps=No se puede ajustar la rejilla en un mapa infinito
+msg.error.mustDisconnectFirst=Ya ests conectado a un servidor, primero desconecta.
+msg.error.noLocalhost=Localhost no es una direccin vlida, esto es realmente extrao...
+msg.error.unknownHost=No se pudo conectar al servidor
+msg.error.disconnectYourself=No puedes desconectar de ti mismo
+msg.error.ioError=Error de E/S
+msg.error.couldntLoadCampaign=No se pudo cargar la Campaa
+msg.error.couldntSaveCampaign=No se pudo guardar la Campaa
+msg.error.couldntLoad=No se pudo leer
+
+
+msg.loadCampaign=Abrir Campaa
+msg.saveCampaign=Guardar Campaa
+msg.loadMap=Abrir Mapa
+msg.loadAssetTree=Abrir Ruta de Marcadores
Note: use the last one. It includes changes in the AppActions.java file, to translate window titles and some error messages.
I will continue the I18N process, if you think it's ok. Please tell me.
Thanks for the contribution.
Looking over the patch, it reminds me that I put in a swing i18n framework into another project I worked on recently. I think I'll integrate a similar framework into MapTool, it will make your integrations much easier.
Give me a day or two and I'll get that set up so you can do all the i18n you want :)
Look at the Struts ActionMessage classes, they have i18n parametrized messages and are well known for the avg. java developer.
Here is:
Index: net/rptools/maptool/client/AppActions.java
RCS file: /cvsroot/rptools/maptool/src/net/rptools/maptool/client/AppActions.java,v
retrieving revision 1.33
diff -u -r1.33 AppActions.java
--- net/rptools/maptool/client/AppActions.java 28 Oct 2005 02:21:57 -0000 1.33
+++ net/rptools/maptool/client/AppActions.java 20 Nov 2005 13:45:48 -0000
@@ -101,12 +101,12 @@
Directory dir = assetPanel.getSelectedAssetRoot();
if (dir == null) {
- MapTool.showError("Select an asset group first");
+ MapTool.showI18NError("msg.error.mustSelectAssetGroupFirst");
return;
}
if (!assetPanel.isAssetRoot(dir)) {
- MapTool.showError("Must select a root group");
+ MapTool.showI18NError("msg.error.mustSelectRootGroup");
return;
}
@@ -137,7 +137,7 @@
if (!MapTool.getPlayer().isGM()) {
// TODO: This option should be disabled when not a GM
- MapTool.showError("Only GMs can do that");
+ MapTool.showI18NError("msg.error.gmRequired");
return;
}
@@ -221,12 +221,12 @@
public void execute(ActionEvent e) {
if (!MapTool.getPlayer().isGM()) {
- MapTool.showError("Must be GM to adjust grid");
+ MapTool.showI18NError("msg.error.gmRequired");
return;
}
if (MapTool.getFrame().getCurrentZoneRenderer().getZone().getType() == Zone.Type.INFINITE) {
- MapTool.showError("Cannot adjust grid on infinite maps.");
+ MapTool.showI18NError("msg.error.cantAdjustGridInfMaps");
return;
}
@@ -362,7 +362,7 @@
if (MapTool.isConnected()) {
MapTool
- .showError("You are connected to a server. Please disconnect first.");
+ .showI18NError("msg.error.mustDisconnectFirst");
return;
}
@@ -441,7 +441,7 @@
public void run() {
if (MapTool.isConnected()) {
- MapTool.showError("Already connected.");
+ MapTool.showI18NError("msg.error.mustDisconnectFirst");
return;
}
@@ -466,10 +466,12 @@
MapTool.getFrame().getConnectionStatusPanel()
.setStatus(ConnectionStatusPanel.Status.server);
} catch (UnknownHostException uh) {
- MapTool.showError("Whoah, 'localhost' is not a valid address. Weird.");
+ MapTool
+ .showI18NError("msg.error.noLocalhost");
return;
} catch (IOException ioe) {
- MapTool.showError("Could not connect to server: "
+ MapTool
+ .showI18NError("msg.error.unknownHost"
+ ioe);
return;
}
@@ -495,7 +497,7 @@
try {
if (MapTool.isConnected()) {
- MapTool.showError("Already connected.");
+ MapTool.showI18NError("msg.error.mustDisconnectFirst");
return;
}
@@ -516,11 +518,11 @@
ConnectionStatusPanel.Status.connected);
} catch (UnknownHostException e1) {
// TODO Auto-generated catch block
- MapTool.showError("Unknown host");
+ MapTool.showI18NError("msg.error.unknownHost");
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
- MapTool.showError("IO Error: " + e1);
+ MapTool.showI18NError("msg.error.ioError" + e1);
e1.printStackTrace();
}
@@ -546,7 +548,7 @@
}
if (MapTool.isHostingServer()) {
- MapTool.showError("Can't disconnect from yourself");
+ MapTool.showI18NError("msg.error.disconnectYourself");
return;
}
@@ -563,12 +565,12 @@
public void execute(ActionEvent ae) {
if (MapTool.isConnected() && !MapTool.getPlayer().isGM()) {
- MapTool.showError("Must be a GM to load a campaign.");
+ MapTool.showI18NError("msg.error.gmRequired");
return;
}
JFileChooser chooser = MapTool.getLoadFileChooser();
- chooser.setDialogTitle("Load Campaign");
+ chooser.setDialogTitle(I18N.getText("msg.loadCampaign"));
if (chooser.showOpenDialog(MapTool.getFrame()) == JFileChooser.APPROVE_OPTION) {
@@ -584,7 +586,7 @@
}
} catch (IOException ioe) {
- MapTool.showError("Could not load campaign: " + ioe);
+ MapTool.showI18NError("msg.error.couldntLoadCampaign" + ioe);
}
}
}
@@ -602,7 +604,7 @@
// TODO: this should eventually just remember the last place it was
// saved
JFileChooser chooser = MapTool.getSaveFileChooser();
- chooser.setDialogTitle("Save Campaign");
+ chooser.setDialogTitle(I18N.getText("msg.saveCampaign"));
if (chooser.showSaveDialog(MapTool.getFrame()) == JFileChooser.APPROVE_OPTION) {
@@ -610,7 +612,7 @@
PersistenceUtil.saveCampaign(campaign, chooser
.getSelectedFile());
} catch (IOException ioe) {
- MapTool.showError("Could not save campaign: " + ioe);
+ MapTool.showError("msg.error.couldntSaveCampaign" + ioe);
}
}
}
@@ -649,7 +651,7 @@
public void run() {
JFileChooser loadFileChooser = MapTool.getLoadFileChooser();
- loadFileChooser.setDialogTitle("Load Map");
+ loadFileChooser.setDialogTitle(I18N.getText("msg.loadMap"));
loadFileChooser
.setFileSelectionMode(JFileChooser.FILES_ONLY);
@@ -672,7 +674,7 @@
zone.setVisible(AppState.isNewZonesVisible());
MapTool.addZone(zone);
} catch (IOException ioe) {
- MapTool.showError("Could not load image: " + ioe);
+ MapTool.showI18NError("msg.couldntLoad" + ioe);
return;
}
}
@@ -709,7 +711,7 @@
public void run() {
JFileChooser chooser = MapTool.getLoadFileChooser();
- chooser.setDialogTitle("Load Asset Tree");
+ chooser.setDialogTitle(I18N.getText("msg.loadAssetTree"));
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
if (chooser.showOpenDialog(MapTool.getFrame()) != JFileChooser.APPROVE_OPTION) {
Index: net/rptools/maptool/client/MapTool.java
===================================================================
RCS file: /cvsroot/rptools/maptool/src/net/rptools/maptool/client/MapTool.java,v
retrieving revision 1.24
diff -u -r1.24 MapTool.java
--- net/rptools/maptool/client/MapTool.java 15 Nov 2005 22:49:39 -0000 1.24
+++ net/rptools/maptool/client/MapTool.java 20 Nov 2005 13:45:48 -0000
@@ -41,6 +41,7 @@
import net.rptools.maptool.client.ui.MapToolClient;
import net.rptools.maptool.client.ui.zone.ZoneRenderer;
import net.rptools.maptool.client.ui.zone.ZoneRendererFactory;
+import net.rptools.maptool.language.I18N;
import net.rptools.maptool.model.Campaign;
import net.rptools.maptool.model.MessageChannel;
import net.rptools.maptool.model.ObservableList;
@@ -74,11 +75,15 @@
// Components
private static JFileChooser loadFileChooser;
private static JFileChooser saveFileChooser;
-
+
public static void showError(String message) {
JOptionPane.showMessageDialog(clientFrame, message, "Error", JOptionPane.ERROR_MESSAGE);
}
-
+
+ public static void showI18NError(String key) {
+ JOptionPane.showMessageDialog(clientFrame, I18N.getText(key), I18N.getText("msg.error"), JOptionPane.ERROR_MESSAGE);
+ }
+
private MapTool() {
// Not instantiatable
}
Index: net/rptools/maptool/language/i18n.properties
===================================================================
RCS file: /cvsroot/rptools/maptool/src/net/rptools/maptool/language/i18n.properties,v
retrieving revision 1.3
diff -u -r1.3 i18n.properties
--- net/rptools/maptool/language/i18n.properties 12 Oct 2005 03:53:42 -0000 1.3
+++ net/rptools/maptool/language/i18n.properties 20 Nov 2005 13:45:50 -0000
@@ -61,4 +61,23 @@
action.refresh=Refresh
action.refresh.accel=F5
-action.exit=E&xit
\ No newline at end of file
+action.exit=E&xit
+
+msg.error.mustSelectRootGroup=Must select a root group
+msg.error.mustSelectAssetGroupFirst=Select an asset group first
+msg.error.gmRequired=Only GMs can do that
+msg.error.cantAdjustGridInfMaps=Cannot adjust grid on infinite maps
+msg.error.mustDisconnectFirst=You are connected to a server. Please disconnect first.
+msg.error.noLocalhost=Whoah, 'localhost' is not a valid address. Weird.
+msg.error.unknownHost=Could not connect to server
+msg.error.disconnectYourself=Can't disconnect from yourself
+msg.error.ioError=IO Error
+msg.error.couldntLoadCampaign=Could not load campaign
+msg.error.couldntSaveCampaign=Could not save campaign
+msg.error.couldntLoad=Could not load
+
+
+msg.loadCampaign=Load Campaign
+msg.saveCampaign=Save Campaign
+msg.loadMap=Load Map
+msg.loadAssetTree=Load Asset Tree
\ No newline at end of file
Index: net/rptools/maptool/language/i18n_es.properties
===================================================================
RCS file: net/rptools/maptool/language/i18n_es.properties
diff -N net/rptools/maptool/language/i18n_es.properties
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ net/rptools/maptool/language/i18n_es.properties 1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,83 @@
+menu.file=&Archivo
+menu.view=&Ver
+menu.map=&Mapa
+menu.tools=&Herramientas
+menu.help=A&yuda
+menu.zoom=&Zoom
+
+action.newCampaign=New Campaña
+action.loadCampaign=Abrir Campaña
+action.saveCampaign=Guardar Campaña
+
+action.removeAssetRoot=Eliminar
+action.enforceView=Centrar a los jugadores en la &vista actual
+action.enforceView.accel=ctrl V
+action.runMacro=&Ejecutar Macro
+action.runMacro.accel=typed /
+action.debug.duplicateLastIcon=Duplicar el último icono (debug)
+
+action.adjustGrid=Ajustar Rejilla
+action.showGrid=Mostrar &Rejilla
+action.showGrid.accel=ctrl G
+
+action.enableFogOfWar=Activar "Fog of War"
+action.enableFogOfWar.description=Activar "Fog of War" para el mapa actual
+
+action.showNames=Mostrar &texto en los iconos
+action.showNames.accel=ctrl T
+
+action.showAboutDialog=Acerca de...
+
+action.hideMap=&Ocultar el mapa a los jugadores
+action.hideMap.description=Oculta el mapa actual a los jugadores
+
+action.autohideNewMaps=Auto Ocultar mapas nuevos
+action.autohideNewMaps.description=Hace invisibles los nuevos mapas a los jugadores
+action.autohideNewIcons=Auto Ocultar nuevos iconos
+action.autohideNewIcons.description=Hace invisibles los nuevos iconos a los jugadores
+
+action.zoomIn=Zoom &In
+action.zoomIn.accel=typed +
+action.zoomOut=Zoom &Out
+action.zoomOut.accel=typed -
+action.zoom100=Zoom 1:1
+action.zoom100.accel=typed =
+
+action.showMapSelector=Mostrar &Selector del mapa
+action.showInformationPanel=Mostrar panel de información
+
+action.serverStart=Arrancar servidor
+action.clientConnect=Conectarse a servidor remoto
+action.clientDisconnect=Desconectarse de un servidor remoto
+
+action.newUnboundedMap=Nuevo mapa con fondo
+action.newUnboundedMap.accel=ctrl shift N
+action.newMap=Nuevo mapa
+action.newMap.accel=ctrl N
+
+action.showInformationPanel=Mostrar panel de información
+action.addIconSelector=Añadir &carpeta de imágenes
+action.addIconSelector.accel=ctrl I
+
+action.refresh=Actualizar
+action.refresh.accel=F5
+action.exit=Salir
+
+msg.error.mustSelectRootGroup=Debe seleccionar un grupo raíz
+msg.error.mustSelectAssetGroupFirst=Seleccione un grupo de Marcadores primero
+msg.error.gmRequired=Esta operación sólo está permitida para los DJs
+msg.error.cantAdjustGridInfMaps=No se puede ajustar la rejilla en un mapa infinito
+msg.error.mustDisconnectFirst=Ya estás conectado a un servidor, primero desconecta.
+msg.error.noLocalhost=Localhost no es una dirección válida, esto es realmente extraño...
+msg.error.unknownHost=No se pudo conectar al servidor
+msg.error.disconnectYourself=No puedes desconectar de ti mismo
+msg.error.ioError=Error de E/S
+msg.error.couldntLoadCampaign=No se pudo cargar la Campaña
+msg.error.couldntSaveCampaign=No se pudo guardar la Campaña
+msg.error.couldntLoad=No se pudo leer
+
+
+msg.loadCampaign=Abrir Campaña
+msg.saveCampaign=Guardar Campaña
+msg.loadMap=Abrir Mapa
+msg.loadAssetTree=Abrir Ruta de Marcadores
This has been applied to the code base, please check the latest CVS to verify.
Note that I made one change, showI18NError() simply calls showError() and the message it automatically looked up in i18n