# Spanish paired words rules
# Copyrigth 2010-2014, Javier Viñal (fjvinal@gmail.com)
# by the KDE Spanish Team (kde-l10n-es@kde.org)
# License: GPLv3

addFilterRegex match="E\/S" repl="ES" on="pmsgid,pmsgstr"
addFilterRegex match="mayúsculas?\/minúsculas?" repl="mayúsculas minúsculas" on="pmsgid,pmsgstr"

*hook name="es:compare_with_original/test_if_non_printable_characters" on="msg"
id="pw-2-error-traduccion-con-caracteres-no-imprimibles"
hint="Hay textos no imprimibles en la traducción o signos de puntación que no aparecen en el original"

*hook name="es:compare_with_original/test_paired_accelerators" on="msg"
id="pw-2-error-aceleradores"
hint="Error en aceleradores «&» (no coincide su número)"

*hook name="es:compare_with_original/test_paired_strings" on="msg"
id="pw-2-error-tabuladores-o-nueva-linea"
hint="Error en tabuladores o saltos de línea"

*hook name="es:compare_with_original/test_paired_brackets" on="msg"
id="pw-1-error-parentesis-llaves-corchetes-comillas"
hint="Error en paréntesis, llaves, corchetes o comillas"

*hook name="es:compare_with_original/test_paired_expressions" on="msg"
id="pw-1-error-funciones-o-parametros"
hint="Error en funciones o parámetros"

*hook name="es:compare_with_original/test_paired_numbers" on="msg"
id="pw-1-error-valores-numericos"
hint="Valores de números o fechas en la traducción distintos al original"

*hook name="es:compare_with_original/test_paired_context_tags" on="msg"
id="pw-1-error-etiquetas-contexto"
hint="Traducidos valores contenidos entre etiquetas de contexto no traducibles"

# addFilterRegex match="\<\/?quote\>" repl="~" on="pmsgid,pmsgstr"
*hook name="es:compare_with_original/test_paired_xml_entities" on="msg"
id="pw-1-error-etiquetas-xml"
hint="Sobran o faltan etiquetas semánticas XML (texto entre < y >)"

addFilterHook name="es:remove_subs/remove_paired_parameters" on="msg"

[\%\d]
id="pw-1-error-sobra-parametro"
hint="Existe un parámetro en la traducción que no figura en el texto original"

{\%\d}
id="pw-1-error-falta-parametro"
hint="Existe un parámetro en el texto original que no figura en la traducción"

addFilterHook name="remove/remove-paired-ents-tick~'~'" on="msg"

[\&[\w\d\-_]+;]
id="pw-1-error-sobra-entidad"
hint="Existe una entidad en la traducción que no figura en el texto original"

{\&[\w\d\-_]+;}
id="pw-1-error-falta-entidad"
hint="Existe una entidad en el texto original que no figura en la traducción"

include file="filter.include"

addFilterHook name="es:remove_subs/remove_tags_without_translation" on="msg"

*hook name="es:compare_with_original/test_if_empty_translation" on="msg"
id="pw-1-error-traduccion-vacia"
hint="El texto de la traducción está vacío"

*hook name="es:compare_with_original/test_if_purepunc" on="msg"
id="pw-2-error-traducido-texto-sin-letras"
valid msgid="~"
hint="Se ha traducido un texto sin caracteres alfanuméricos significativos"

*hook name="es:compare_with_original/test_if_very_long_translation" on="msg"
id="pw-2-error-traduccion-muy-larga"
#valid msgid="Your names"
#valid msgid="Your emails"
hint="El texto de la traducción parece demasiado grande"

*hook name="es:compare_with_original/test_if_very_short_translation" on="msg"
id="pw-2-error-traduccion-muy-corta"
hint="El texto de la traducción parece demasiado pequeño"

# Omit particles between propernames.
addFilterRegex match="(?<=\w)\s(aka|da|de|de\sla|del|der|do|du|la|van|vom|von)\s(?=[A-Z])" repl=" " casesens="yes" on="pmsgid,pmsgstr"

# Omit single quotes and dashes into names.
addFilterRegex match="(?<=\w)[\'-](?=\w)" repl="" on="pmsgid,pmsgstr"

# Omit dots after names and treatements.
addFilterRegex match="(?<=\w)\.(?=\s[A-Z])" casesens="yes" repl="" on="pmsgid,pmsgstr"

*hook name="es:compare_with_original/test_if_not_translated" on="msg"
id="pw-1-error-mensaje-sin-traducir"
valid msgid="^\W+$" # Mensaje sin caracteres alfabéticos
valid msgid="^[^a-záéíóúüñç]+$" # Mensaje que no contiene minúsculas
valid msgid="^[A-Z].*?(\s[A-Z].*?)*$" # Mensaje con todas las palabras comenzando por mayúscula
hint="No se ha traducido el mensaje original"

# End of rule file
