diff --git a/helpers/lang.php b/helpers/lang.php
index 829ae7b..9a40f1a 100644
--- a/helpers/lang.php
+++ b/helpers/lang.php
@@ -30,6 +30,7 @@
* @var array
*/
private static $languages = [
+ "ca" => "Català",
"cs" => "Čeština",
"de" => "Deutsch",
"en" => "English",
diff --git a/lang/ca.php b/lang/ca.php
new file mode 100644
index 0000000..135caae
--- /dev/null
+++ b/lang/ca.php
@@ -0,0 +1,174 @@
+.
+ */
+
+// default language for translations
+
+// strings only used in setup
+$langSetup["dbconnectfailed"] = "Error de connexió amb la base de dades.";
+$langSetup["serversaid"] = "Resposta del servidor: %s"; // substitutes server error message
+$langSetup["checkdbsettings"] = "Revisar els paràmetres de connexió amb la base de dades a 'config.php'.";
+$langSetup["dbqueryfailed"] = "Error en consulta a la base de dades.";
+$langSetup["dbtablessuccess"] = "Taules creades correctament!";
+$langSetup["setupuser"] = "Indiqueu l'usuari de µlogger.";
+$langSetup["congratulations"] = "Enhorabona!";
+$langSetup["setupcomplete"] = "Instal·lació completa. Aneu a main page i entreu amb el vostre usuari.";
+$langSetup["disablewarn"] = "IMPORTANT! Desactivi el script 'setup.php' o esborri'l del servidor.";
+$langSetup["disabledesc"] = "Deixar aquest script accessible és un risc de seguretat molt greu. Qualsevol persona podria executar-lo, esborrar la base de dades i crear un nou usuari. Esborri el fitxer o desactivi'l posant el valor %s a %s."; // substitutes variable name and value
+$langSetup["setupfailed"] = "Alguna cosa ha fallat. Provi a trobar més informació als logs del servidor web.";
+$langSetup["welcome"] = "Benvingut a µlogger!";
+$langSetup["disabledwarn"] = "Per raons de seguretat aquest script està desactivat per defecte. Per activar-lo ha d'editar el fitxer 'scripts/setup.php' amb un editor de text i canviar la variable %s per %s."; // substitutes variable name and value
+$langSetup["lineshouldread"] = "Línia: %s hauria de llegir: %s";
+$langSetup["dorestart"] = "Executi de nou aquest script quan estigui preparat.";
+$langSetup["createconfig"] = "Crear el fitxer 'config.php' al directori arrel. Pot crear-lo a partir del fitxer 'config.default.php'. Assegureu-vos de modificar les dades relatives a la connexió amb la base de dades per les seves.";
+$langSetup["nodbsettings"] = "Ha d'indicar les credencials de la base de dades al fitxer 'config.php' (%s)."; // substitutes variable names
+$langSetup["scriptdesc"] = "Aquest script crearà les taules necessàries per a µlogger (%s). Es crearan a la base de dades %s. Atenció, si les taules existeixen s'esborraran i seran creades de nou, destruint les dades existents."; // substitutes table names and db name
+$langSetup["scriptdesc2"] = "Al finalitzar l'execució es demanarà un usuari i contrasenya per accedir al servidor.";
+$langSetup["startbutton"] = "Iniciar instal·lació";
+$langSetup["restartbutton"] = "Reiniciar";
+$langSetup["optionwarn"] = "L'opció de PHP %s ha de ser %s."; // substitutes option name and value
+$langSetup["extensionwarn"] = "Extensió PHP %s no disponible."; // substitutes extension name
+$langSetup["notwritable"] = "PHP ha de poder escriure al directori '%s'."; // substitutes folder path
+
+
+// application strings
+$lang["title"] = "• μlogger •";
+$lang["private"] = "Cal usuari i contrasenya per accedir a aquesta pàgina.";
+$lang["authfail"] = "Usuari o contrasenya erronis";
+$lang["user"] = "Usuari";
+$lang["track"] = "Track";
+$lang["latest"] = "última posició";
+$lang["autoreload"] = "autorecàrrega";
+$lang["reload"] = "Recarregar ara";
+$lang["export"] = "Descarregar dades";
+$lang["chart"] = "Gràfic de altituds";
+$lang["close"] = "tancar";
+$lang["time"] = "Hora";
+$lang["speed"] = "Velocitat";
+$lang["accuracy"] = "Precisió";
+$lang["position"] = "Posició";
+$lang["altitude"] = "Altitud";
+$lang["bearing"] = "Bearing";
+$lang["ttime"] = "Temps total";
+$lang["aspeed"] = "Velocitat mitja";
+$lang["tdistance"] = "Distància total";
+$lang["pointof"] = "Punt %d de %d"; // e.g. Point 3 of 10
+$lang["summary"] = "Resum del viatge";
+$lang["suser"] = "seleccioni usuari";
+$lang["logout"] = "Tancar sessió";
+$lang["login"] = "Identificar-se";
+$lang["username"] = "Usuari";
+$lang["password"] = "Contrasenya";
+$lang["language"] = "Llengua";
+$lang["newinterval"] = "Indiqui nou valor per l'interval (segons)";
+$lang["api"] = "Mapa API";
+$lang["units"] = "Unitats";
+$lang["metric"] = "Mètriques";
+$lang["imperial"] = "Imperials/US";
+$lang["nautical"] = "Nàutiques";
+$lang["admin"] = "Administrador";
+$lang["adminmenu"] = "Administració";
+$lang["passwordrepeat"] = "Repeteixi contrasenya";
+$lang["passwordenter"] = "Indiqui contrasenya";
+$lang["usernameenter"] = "Indiqui usuari";
+$lang["adduser"] = "Afegir usuari";
+$lang["userexists"] = "L'usuari ja existeix";
+$lang["cancel"] ="Cancel·lar";
+$lang["submit"] = "Enviar";
+$lang["oldpassword"] = "Contrasenya anterior";
+$lang["newpassword"] = "Nova contrasenya";
+$lang["newpasswordrepeat"] = "Repetir la nova contrasenya";
+$lang["changepass"] = "Canviar contrasenya";
+$lang["gps"] = "GPS";
+$lang["network"] = "Xarxa";
+$lang["deluser"] = "Esborrar usuari";
+$lang["edituser"] = "Editar usuari";
+$lang["servererror"] = "Error del servidor";
+$lang["allrequired"] = "Tots els camps són necessaris";
+$lang["passnotmatch"] = "Les contrasenyes no coincideixen";
+$lang["actionsuccess"] = "Acció completada correctament";
+$lang["actionfailure"] = "Hi ha hagut un error";
+$lang["notauthorized"] = "Usuari no autoritzat";
+$lang["userdelwarn"] = "Precaució!\n\nEsborraràs permanentement l'usuari %s, totes les seves rutes i posicions.\n\nEstàs segur?"; // substitutes user login
+$lang["editinguser"] = "Estàs editant l'usuari %s"; // substitutes user login
+$lang["selfeditwarn"] = "No pots editar el teu propi usuari";
+$lang["apifailure"] = "Upss, no es pot carregar la API %s"; // substitutes api name (gmaps or openlayers)
+$lang["trackdelwarn"] = "Precaució!\n\nEliminaràs permanentement la ruta %s i totes les seces posicions.\n\nEstàs segur?"; // substitutes track name
+$lang["editingtrack"] = "Estás editant la ruta %s"; // substitutes track name
+$lang["deltrack"] = "Eliminar ruta";
+$lang["trackname"] = "Nom de la ruta";
+$lang["edittrack"] = "Editar ruta";
+$lang["positiondelwarn"] = "Precaució!\n\nEsborraràs de forma permanent la posició %d del track %s.\n\nEstàs segur?"; // substitutes position index and track name
+$lang["editingposition"] = "Estàs editant la posició #%d del track %s"; // substitutes position index and track name
+$lang["delposition"] = "Esborrar posició";
+$lang["delimage"] = "Esborrar imatge";
+$lang["comment"] = "Comentari";
+$lang["image"] = "Imatge";
+$lang["editposition"] = "Editar posició";
+$lang["passlenmin"] = "La contrasenya ha de tenir almenys %d caràcters"; // substitutes password minimum length
+$lang["passrules_1"] = "Ha de tenir almenys una lletra minúscula i una majúscula.";
+$lang["passrules_2"] = "Ha de tenir almenys una lletra minúscula, una majúscula i un número";
+$lang["passrules_3"] = "Ha de tenir almenys una lletra minúscula i una majúscula, un número i un caràcter no alfanumèric";
+$lang["owntrackswarn"] = "Només pots editar les teves rutes";
+$lang["gmauthfailure"] = "Es possible que hi hagi un problema amb la clau de la API de Google Maps";
+$lang["gmapilink"] = "Pots trobar informació sobre les claus API a aquesta pàgina de Google";
+$lang["import"] = "Importar ruta";
+$lang["iuploadfailure"] = "Hi ha hagut un error en la càrrega";
+$lang["iparsefailure"] = "Hi ha hagut un error en l'análisi";
+$lang["idatafailure"] = "No hi ha dades de ruta en l'arxiu importat";
+$lang["isizefailure"] = "El tamany de l'arxiu no pot superar els %d bytes"; // substitutes number of bytes
+$lang["imultiple"] = "Vàries rutes importades (%d)"; // substitutes number of imported tracks
+$lang["allusers"] = "Tots els usuaris";
+$lang["unitday"] = "d"; // abbreviation for days, like 4 d 11:11:11
+$lang["unitkmh"] = "km/h"; // kilometer per hour
+$lang["unitm"] = "m"; // meter
+$lang["unitamsl"] = "a.s.l."; // above mean see level
+$lang["unitkm"] = "km"; // kilometer
+$lang["unitmph"] = "mph"; // mile per hour
+$lang["unitft"] = "ft"; // feet
+$lang["unitmi"] = "mi"; // mile
+$lang["unitkt"] = "kt"; // knot
+$lang["unitnm"] = "nm"; // nautical mile
+$lang["config"] = "Configuració";
+$lang["editingconfig"] = "Paràmetres definits";
+$lang["latitude"] = "Latitud inicial";
+$lang["longitude"] = "Longitud inicial";
+$lang["interval"] = "Interval (s)";
+$lang["googlekey"] = "Clau de la API Google Maps";
+$lang["passlength"] = "Llargària mínima de la contrasenya";
+$lang["passstrength"] = "Complexitat mínima de la contrasenya";
+$lang["requireauth"] = "Necessita autorització";
+$lang["publictracks"] = "Tracks públics";
+$lang["strokeweight"] = "Amplada de la traça";
+$lang["strokeopacity"] = "Opacitat de la traça";
+$lang["strokecolor"] = "Color de la traça";
+$lang["colornormal"] = "Color de la marca";
+$lang["colorstart"] = "Color de la marca d'inici";
+$lang["colorstop"] = "Color de la marca de final";
+$lang["colorextra"] = "Color de la marca extra";
+$lang["colorhilite"] = "Color de la marca Hilite";
+$lang["uploadmaxsize"] = "Tamany màxim de càrrega (MB)";
+$lang["ollayers"] = "Capa OpenLayers";
+$lang["layername"] = "Nom de la capa";
+$lang["layerurl"] = "URL de la capa";
+$lang["add"] = "Afegir";
+$lang["edit"] = "Editar";
+$lang["delete"] = "Esborrar";
+$lang["settings"] = "Paràemetres";
+$lang["trackcolor"] = "Color del track";
+?>
diff --git a/lang/es.php b/lang/es.php
index 372dc8e..04447a6 100644
--- a/lang/es.php
+++ b/lang/es.php
@@ -20,38 +20,38 @@
// default language for translations
// strings only used in setup
-$langSetup["dbconnectfailed"] = "Database connection failed.";
-$langSetup["serversaid"] = "Server said: %s"; // substitutes server error message
-$langSetup["checkdbsettings"] = "Please check database settings in 'config.php' file.";
-$langSetup["dbqueryfailed"] = "Database query failed.";
-$langSetup["dbtablessuccess"] = "Database tables successfully created!";
-$langSetup["setupuser"] = "Now please set up your µlogger user.";
-$langSetup["congratulations"] = "Congratulations!";
-$langSetup["setupcomplete"] = "Setup is now complete. You may go to the main page now and log in with your new user account.";
-$langSetup["disablewarn"] = "IMPORTANT! YOU MUST DISABLE 'setup.php' SCRIPT OR REMOVE IT FROM YOUR SERVER.";
-$langSetup["disabledesc"] = "Leaving the script accessible from browser is a major security risk. Anybody will be able to run it, delete your database and set up new user account. Delete the file or disable it by setting %s value back to %s."; // substitutes variable name and value
-$langSetup["setupfailed"] = "Unfortunately something has gone wrong. You may try to find more info in your webserver logs.";
-$langSetup["welcome"] = "Welcome to µlogger!";
-$langSetup["disabledwarn"] = "For security reasons this script is disabled by default. To enable it you must edit 'scripts/setup.php' file in text editor and set %s variable at the beginning of the file to %s."; // substitutes variable name and value
-$langSetup["lineshouldread"] = "Line: %s should read: %s";
-$langSetup["dorestart"] = "Please restart this script when you are done.";
-$langSetup["createconfig"] = "Please create 'config.php' file in root folder. You may start by copying it from 'config.default.php'. Make sure that you adjust config values to match your needs and your database setup.";
-$langSetup["nodbsettings"] = "You must provide your database credentials in 'config.php' file (%s)."; // substitutes variable names
-$langSetup["scriptdesc"] = "This script will set up tables needed for µlogger (%s). They will be created in your database named %s. Warning, if the tables already exist they will be dropped and recreated, their content will be destroyed."; // substitutes table names and db name
-$langSetup["scriptdesc2"] = "When done the script will ask you to provide user name and password for your µlogger user.";
-$langSetup["startbutton"] = "Press to start";
-$langSetup["restartbutton"] = "Restart";
-$langSetup["optionwarn"] = "PHP configuration option %s must be set to %s."; // substitutes option name and value
-$langSetup["extensionwarn"] = "Required PHP extension %s is not available."; // substitutes extension name
-$langSetup["notwritable"] = "Folder '%s' must be writable by PHP."; // substitutes folder path
+$langSetup["dbconnectfailed"] = "Error de connexión con la base de datos.";
+$langSetup["serversaid"] = "Respuesta del servidor: %s"; // substitutes server error message
+$langSetup["checkdbsettings"] = "Verifique los parámetros de connexión con la base de datos en el archivo 'config.php'.";
+$langSetup["dbqueryfailed"] = "Consulta con la base de datos fallida.";
+$langSetup["dbtablessuccess"] = "Tablas creadas con éxito en la base de datos!";
+$langSetup["setupuser"] = "Indique el usuario del servidor μlogger.";
+$langSetup["congratulations"] = "Enhorabuena!";
+$langSetup["setupcomplete"] = "Instalación completa. Acceda a main page y entre con su nuevo usuario.";
+$langSetup["disablewarn"] = "IMPORTANTE! Deshabilite el SCRIPT 'setup.php' O BÓRRELO de su servidor.";
+$langSetup["disabledesc"] = "Dejar este script accesible es un gran riesgo de seguridad. Cualquiera podria ejecutarlo, borrar su base de datos y crear un nuevo usuario. Borre este archivo o deshabilitelo cambiando el valor %s a %s."; // substitutes variable name and value
+$langSetup["setupfailed"] = "Algo ha ido mal. Puede intentar encontrar más información en los logs del servidor web.";
+$langSetup["welcome"] = "Bienvenido a µlogger!";
+$langSetup["disabledwarn"] = "Por razones de seguridad este script está dehabilitado por defecto. Para activarlo puede editar el archivo 'scripts/setup.php' con un editor de texto i cambiar la variable %s por %s."; // substitutes variable name and value
+$langSetup["lineshouldread"] = "Línia: %s debería leer: %s";
+$langSetup["dorestart"] = "Execute de nuevo este script cuando esté listo.";
+$langSetup["createconfig"] = "Cree el archivo 'config.php' en el directorio raíz. Puede crearlo partiendo del archivo de ejemplo 'config.default.php'. Asegúrese de cambiar los valoresde la base de datos por los suyos.";
+$langSetup["nodbsettings"] = "Indique los parámetros de connexión con la base de datos en el archivo 'config.php' (%s)."; // substitutes variable names
+$langSetup["scriptdesc"] = "Este script crea las tablas necesarias para µlogger (%s). Se creará en su base de datos con nombre %s. Atención, si las tablas existen, serán borradas y creadas de nuevo, y su contenido se perderá."; // substitutes table names and db name
+$langSetup["scriptdesc2"] = "Cuando finalize el script se le pedirá que indique un usuario y una contraseña para crear su nuevo usuario en µlogger server.";
+$langSetup["startbutton"] = "Iniciar";
+$langSetup["restartbutton"] = "Reiniciar";
+$langSetup["optionwarn"] = "En la configuración PHP el valor de la opción %s debe ser %s."; // substitutes option name and value
+$langSetup["extensionwarn"] = "La extensión PHP %s no está disponible."; // substitutes extension name
+$langSetup["notwritable"] = "El directorio '%s' debe tener permisos de escritura para PHP."; // substitutes folder path
// application strings
$lang["title"] = "• μlogger •";
$lang["private"] = "Necesitas un nombre de usuario y contraseña para acceder a esta página.";
-$lang["authfail"] = "Nombre de usuasrio o contraseña erroneos";
+$lang["authfail"] = "Nombre de usuario o contraseña erróneos";
$lang["user"] = "Usuario";
-$lang["track"] = "Rastro";
+$lang["track"] = "track";
$lang["latest"] = "última posición";
$lang["autoreload"] = "autorecarga";
$lang["reload"] = "Recargar ahora";
@@ -61,7 +61,7 @@ $lang["close"] = "cerrar";
$lang["time"] = "Hora";
$lang["speed"] = "Velocidad";
$lang["accuracy"] = "Precisión";
-$lang["position"] = "Position";
+$lang["position"] = "Posicion";
$lang["altitude"] = "Altitud";
$lang["bearing"] = "Bearing";
$lang["ttime"] = "Tiempo total";
@@ -78,16 +78,16 @@ $lang["language"] = "Lenguaje";
$lang["newinterval"] = "Introduzca nuevo valor para el intervalo (segundos)";
$lang["api"] = "Mapa API";
$lang["units"] = "Unidades";
-$lang["metric"] = "Metricas";
+$lang["metric"] = "Métricas";
$lang["imperial"] = "Imperiales/US";
-$lang["nautical"] = "Nautical";
-$lang["admin"] = "Administrator";
+$lang["nautical"] = "Nauticas";
+$lang["admin"] = "Administrador";
$lang["adminmenu"] = "Administración";
$lang["passwordrepeat"] = "Repita contraseña";
$lang["passwordenter"] = "Introduzca contraseña";
$lang["usernameenter"] = "Introduzca nombre de usuario";
$lang["adduser"] = "Añadir usuario";
-$lang["userexists"] = "Ususario ya existe";
+$lang["userexists"] = "Usuario ya existe";
$lang["cancel"] ="Cancelar";
$lang["submit"] = "Enviar";
$lang["oldpassword"] = "Contraseña vieja";
@@ -103,7 +103,7 @@ $lang["allrequired"] = "Todos los campos son necesarios";
$lang["passnotmatch"] = "Las contraseñas no coinciden";
$lang["actionsuccess"] = "Acción completada correctamente";
$lang["actionfailure"] = "Ha ocurrido un error";
-$lang["notauthorized"] = "User not authorized";
+$lang["notauthorized"] = "Usuario no autorizado";
$lang["userdelwarn"] = "Precaución!\n\nVas a eliminar permanentemente al usuario %s, junto con todas sus rutas y posiciones.\n\n¿Estás seguro?"; // substitutes user login
$lang["editinguser"] = "Estás editando el usuario %s"; // substitutes user login
$lang["selfeditwarn"] = "No puedes editar tu propio usuario";
@@ -113,13 +113,13 @@ $lang["editingtrack"] = "Estás editando la ruta %s"; // substitutes track name
$lang["deltrack"] = "Eliminar ruta";
$lang["trackname"] = "Nombre de ruta";
$lang["edittrack"] = "Editar ruta";
-$lang["positiondelwarn"] = "Warning!\n\nYou are going to permanently delete position %d of track %s.\n\nAre you sure?"; // substitutes position index and track name
-$lang["editingposition"] = "You are editing position #%d of track %s"; // substitutes position index and track name
-$lang["delposition"] = "Remove position";
-$lang["delimage"] = "Remove image";
-$lang["comment"] = "Comment";
-$lang["image"] = "Image";
-$lang["editposition"] = "Edit position";
+$lang["positiondelwarn"] = "Atención!\n\nVas a eliminar de forma permanente la posición %d del track %s.\n\n¿Estás seguro?"; // substitutes position index and track name
+$lang["editingposition"] = "Estás editando la posición %d del track %s"; // substitutes position index and track name
+$lang["delposition"] = "Borrar posición";
+$lang["delimage"] = "Borrar imagen";
+$lang["comment"] = "Comentario";
+$lang["image"] = "Imagen";
+$lang["editposition"] = "Editar posición";
$lang["passlenmin"] = "La contraseña debe tener al menos %d caracteres"; // substitutes password minimum length
$lang["passrules_1"] = "Debe contener al menos una letra minúscula y una mayúscula.";
$lang["passrules_2"] = "Debe contener al menos una letra minúscula, una mayúscula y un número";
@@ -144,31 +144,31 @@ $lang["unitft"] = "ft"; // feet
$lang["unitmi"] = "mi"; // mile
$lang["unitkt"] = "kt"; // knot
$lang["unitnm"] = "nm"; // nautical mile
-$lang["config"] = "Settings";
-$lang["editingconfig"] = "Default application settings";
-$lang["latitude"] = "Initial latitude";
-$lang["longitude"] = "Initial longitude";
-$lang["interval"] = "Interval (s)";
-$lang["googlekey"] = "Google Maps API key";
-$lang["passlength"] = "Minimum password length";
-$lang["passstrength"] = "Minimum password strength";
-$lang["requireauth"] = "Require authorization";
-$lang["publictracks"] = "Public tracks";
-$lang["strokeweight"] = "Stroke weight";
-$lang["strokeopacity"] = "Stroke opacity";
-$lang["strokecolor"] = "Stroke color";
-$lang["colornormal"] = "Marker color";
-$lang["colorstart"] = "Start marker color";
-$lang["colorstop"] = "Stop marker color";
-$lang["colorextra"] = "Extra marker color";
-$lang["colorhilite"] = "Hilite marker color";
-$lang["uploadmaxsize"] = "Maximum upload size (MB)";
-$lang["ollayers"] = "OpenLayers layer";
-$lang["layername"] = "Layer name";
-$lang["layerurl"] = "Layer URL";
-$lang["add"] = "Add";
-$lang["edit"] = "Edit";
-$lang["delete"] = "Delete";
-$lang["settings"] = "Settings";
-$lang["trackcolor"] = "Track color";
+$lang["config"] = "Configuración";
+$lang["editingconfig"] = "Parámetros definidos";
+$lang["latitude"] = "Latitud inicial";
+$lang["longitude"] = "longitud inicial";
+$lang["interval"] = "Intervalo (s)";
+$lang["googlekey"] = "Clave de la API Google Maps";
+$lang["passlength"] = "Longitud mínima de la contraseña";
+$lang["passstrength"] = "Complejidad mínima de la contraseña";
+$lang["requireauth"] = "Requiere autorización";
+$lang["publictracks"] = "Tracks públicos";
+$lang["strokeweight"] = "Amplitud del trazo";
+$lang["strokeopacity"] = "Opacidad del trazo";
+$lang["strokecolor"] = "Color del trazo";
+$lang["colornormal"] = "Color del marcador";
+$lang["colorstart"] = "Color del marcador de inicio";
+$lang["colorstop"] = "Color del marcador de final";
+$lang["colorextra"] = "Color del marcador extra";
+$lang["colorhilite"] = "Color del marcador de Hilite";
+$lang["uploadmaxsize"] = "Tamaño máximo de carga (MB)";
+$lang["ollayers"] = "Capa OpenLayers";
+$lang["layername"] = "Nombre de la capa";
+$lang["layerurl"] = "URL de la capa";
+$lang["add"] = "Añadir";
+$lang["edit"] = "Editar";
+$lang["delete"] = "Borrar";
+$lang["settings"] = "Configuración";
+$lang["trackcolor"] = "Color del track";
?>