Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New script based on verb conjugations #13

Merged
merged 33 commits into from Oct 7, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
e6c86d4
New script based on verb conjugations
bellaperez Jul 9, 2022
f9b0552
Fixes
bellaperez Jul 10, 2022
38c8efc
More fixes
bellaperez Jul 10, 2022
8365270
Add a menu item
bellaperez Jul 10, 2022
27afbf8
A fix
bellaperez Jul 10, 2022
f01e940
Updates
bellaperez Jul 11, 2022
43ac282
Updates
bellaperez Jul 14, 2022
24acefd
Updates
bellaperez Jul 16, 2022
ca3f242
Updates
bellaperez Jul 23, 2022
bce1a10
Updates
bellaperez Jul 30, 2022
be14361
Updates
bellaperez Jul 31, 2022
ffe636e
Updates and fixes
bellaperez Aug 13, 2022
177112f
Last clean up and updates
bellaperez Aug 15, 2022
f9b8cc8
Updates
bellaperez Oct 8, 2022
01f645f
Updates and fixes
bellaperez Oct 20, 2022
82e1b1e
Updates
bellaperez Nov 1, 2022
b8fa3ec
Updates
bellaperez Nov 12, 2022
ff7b1d4
Updates
bellaperez Jan 10, 2023
de51bdb
Add processing script (in Bash)
bellaperez Jan 10, 2023
3fcec7b
Updates and improves
bellaperez Jan 10, 2023
39629eb
A fix
bellaperez Jan 10, 2023
6661b04
Important fixes
bellaperez Jan 11, 2023
eb19e50
Fixes and updates
bellaperez Feb 2, 2023
95df52b
Multiple improves
bellaperez Mar 16, 2023
c4925b0
Fixes
bellaperez Mar 22, 2023
cdad4ac
Updates
bellaperez May 2, 2023
ec5d744
Updates
bellaperez Sep 16, 2023
a1ab32d
Updates
bellaperez Oct 4, 2023
74ba00d
Updates
bellaperez Oct 6, 2023
0cda979
A folder is created for the KDE Project
bellaperez Oct 6, 2023
9d5a640
Move to KDE Project
bellaperez Oct 6, 2023
7e6377c
README.md added for the KDE Project
bellaperez Oct 6, 2023
23a475b
README.md: Add more information and formatting
bellaperez Oct 7, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
56 changes: 56 additions & 0 deletions tools/kde_project/README.md
@@ -0,0 +1,56 @@

# KDE Project in Catalan (Valencian)

This project was started thanks to the comments and translations into Valencian. One tip
is to install GCompris on your mobile (*android*) and enjoy the Valencian language in games
for children from 2 to 10 years old (we need a native voice for recordings). We also need
to see if the two-letter code for Valencian can be enabled, maybe '**va**', which is now
free and so it might be easier for [Qt](https://www.qt.io/) to support our language (see this
[bug report](https://bugreports.qt.io/browse/QTBUG-7100?gerritIssueType=IssueOnly)).

***va:*** Este projecte es va iniciar gràcies als comentaris i traduccions al valencià. Un
consell és que intal·leu GCompris en el mòbil (android) i que gaudiu del valencià en jocs
per a xiquets i xiquetes des dels 2 fins als 10 asnys (ens cal una veu nativa per a les
gravacions). També cal veure si es pot habiliar el codi de dues lletres per al valencià,
potser '**va**', el qual ara està lliure i així potser serà més fàcil que les
[Qt](https://www.qt.io/) admetin el nostre idioma (veure aquest
[informe d'error](https://bugreports.qt.io/browse/QTBUG-7100?gerritIssueType=IssueOnly)).

An explanation of the scripts:

| Script | Description |
|----------------------------------------------------------------------------------------|
| `c_crea_val-po.sh` | Helper script in Bash to manage Valencian translations |
| `adapta-kde_recursivament.sh` | Bash script to process translations with sed |


## sed scripts:

| Script | Description |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `kde-src2valencia.sed` *(unreleased)* | Make corrections and improves (Catalan text) **IMPORTANT:** also includes some adaptations to Valencian |
| `all-src2valencia.sed` | Core rules with Valencian language (e.g. verb conjugation, app names...) |

**Note:** sed files are very large, it is recommended to close one before opening the other


## Linguistic resources:

* [Institut d'Estudis Catalans](https://geiec.iec.cat/)
* [Diccionari de la llengua catalana](https://dlc.iec.cat/) - (DIEC2)
* [Acadèmia Valenciana de la Llengua](https://www.avl.gva.es/)
* [Diccionari Normatiu Valencià](https://www.avl.gva.es/lexicval/)


## Contributing

Contact through the [KDE Catalan Translation Team](kde-i18n-ca@kde.org) mailing list (visit the [kde-i18n-ca Archives](https://mail.kde.org/pipermail/kde-i18n-ca/) too) and we will treat any level of collaboration.

***va:*** Poseu-vos en contacte amb la llista de correu de l'[Equip de traducció al català de KDE](kde-i18n-ca@kde.org) (visiteu també els [arxius de kde-i18n-ca](https://mail.kde.org/pipermail/kde-i18n-ca/)) i tractarem qualsevol nivell de col·laboració.


## Work License

SPDX: [LGPL-2.1-or-later](https://spdx.org/licenses/LGPL-2.1-or-later.html) or later versions approved by the membership of [KDE e.V.](https://ev.kde.org/)

See [Guidelines and HOWTOs/Licensing](https://community.kde.org/Guidelines_and_HOWTOs/Licensing) and [Policies/Licensing Policy](https://community.kde.org/Policies/Licensing_Policy) pages from the [KDE Community Wiki](https://community.kde.org/)
256 changes: 256 additions & 0 deletions tools/kde_project/adapta-kde_recursivament.sh
@@ -0,0 +1,256 @@
#!/bin/bash
#
# TODO:
# Més proves i polir el codi.
# Si teniu cap idea...

# En aquest fitxer es desa la revisió del darrer commit (format: 1641759)
RVF='svn-revision_ca-valencia.log'
# Mira si es treballa sobre la branca «stable» o «trunk» (stable/l10n-kf5)
BRANCA=$(dirname $PWD | xargs basename)
# Mira si es treballa sobre la versió «kde4» o «kf5» (stable/l10n-kf5-plasma-lts)
ESCRIPTORI=$(basename $PWD)
REPETIT=
# Establir els usuaris seguits (els caràcters «\|» són per a l'ordre «grep»)
USUARIS_SVN="aacid\|apol\|bellaperez\|jferrer\|omas"
# Establir els traductors seguits
USUARIS_VAL0="montoro_mde@\|alviboi@"
USUARIS_VAL1="$(echo $USUARIS_VAL0 | sed -e 's,\\|, ,g')"

[ $(command -v awk) ] || $(echo "Error: Penseu a instal·lar el paquet «gawk» de GNU: apt install gawk"; exit 0)
[ $(command -v egrep) ] || $(echo "Error: Penseu a instal·lar el paquet «grep» de GNU: apt install grep"; exit 0)
[ $(command -v posieve) ] || $(echo "Error: Penseu a instal·lar les eines del Pology. http://pology.nedohodnik.net/doc/user/en_US/ch-about.html#sec-install"; exit 0)
[ $(command -v sed) ] || $(echo "Error: Penseu a instal·lar el paquet «sed» de GNU: apt install sed"; exit 0)
[ $(command -v svn) ] || $(echo "Error: Penseu a instal·lar el paquet «subversion»: apt install subversion"; exit 0)

# Establim la capçalera
capçalera() {
if [ "$BRANCA" = 'Carpeta_nova' ]; then
BRANCA="trunk"
ESCRIPTORI="l10n-kf5 (SVN local)"
fi
echo -e "\n** \e[1m$BRANCA/$ESCRIPTORI\e[0m ** \e[1m->\e[0m $RVINICI:$RVFINAL\n ****************$([[ "$ESCRIPTORI" = "l10n-kf5"@(-plasma-lts| \(SVN local\)) ]] && echo "************")\n$1"
}

genera_copia() {
# No cal processar (segons antiguitat)
[ $CANVIA -eq 0 ] && echo -e " \e[38;5;82m-\e[0m $PO" && return 0
[ -f ca/$PO ] || return 0
[ -f templates/${PO}t ] || return 0

# Si no existeix el directori, el creem
mkdir -p ca@valencia/$DIR

# El caràcter «*» indica que aquest fitxer ha estat modificat
echo -e " \e[44m*\e[0m ca@valencia/$PO"

# Les primeres escriptures van a l'espai d'usuari en la memòria del sistema (molt més ràpid, alleuja i allarga la vida)
MEM_DIR="$(echo /run/user/$(id -u))"
DIRTR="$PWD"
cd $MEM_DIR

# Fem que les frases/paràgrafs siguin d'una sola línia:
msgmerge --silent --previous --no-wrap $DIRTR/ca/$PO $DIRTR/templates/${PO}t --output-file=missatges-$FITX

# Executem la conversió del fitxer PO
$DIRTR/kde-src2valencia.sed < missatges-$FITX > missatges_1-$FITX
$DIRTR/all-src2valencia.sed < missatges_1-$FITX > missatges_2-$FITX
[ -f "missatges-$FITX" ] && rm -f missatges-$FITX
[ -f "missatges_1-$FITX" ] && rm -f missatges_1-$FITX

# S'afegeixen els crèdits per al valencià
TOCAT=$(head -20 $DIRTR/ca/$PO | grep "$USUARIS_VAL0")
if [ "$TOCAT" ]; then
if [ "$(posieve find_messages -smsgctxt:"NAME OF TRANSLATORS" missatges_2-$FITX | grep msgstr)" ]; then
for usuari_val in $USUARIS_VAL1
do
if [ "$(echo $TOCAT | grep $usuari_val)" ]; then
USUARI_VAL="$(head -20 $DIRTR/ca/$PO | grep $usuari_val | cut -f 1 -d'<' | sed -e 's/\# //g' -e 's/ $//g'),"
USUARI_VAL_EMAIL="$(head -20 $DIRTR/ca/$PO | grep $usuari_val | cut -f 2 -d'<' | sed -e 's/,.*//g' -e 's/>$//g'),"
USUARIS_VAL="$USUARIS_VAL$USUARI_VAL"
USUARIS_VAL_EMAIL="$USUARIS_VAL_EMAIL$USUARI_VAL_EMAIL"
fi
done
echo "$USUARIS_VAL_EMAIL"
LINE1="$(posieve find_messages -smsgctxt:"NAME OF TRANSLATORS" missatges_2-$FITX | grep msgstr)"
LINE2="$(echo $LINE1 | sed -s "s/^msgstr \"/msgstr \"${USUARIS_VAL}/")"
sed --in-place -e "s/$LINE1/$LINE2/" missatges_2-$FITX
LINE1="$(posieve find_messages -smsgctxt:"EMAIL OF TRANSLATORS" missatges_2-$FITX | grep msgstr)"
LINE2="$(echo $LINE1 | sed -s "s/^msgstr \"/msgstr \"${USUARIS_VAL_EMAIL}/")"
sed --in-place -e "s/$LINE1/$LINE2/" missatges_2-$FITX
USUARIS_VAL=""
USUARIS_VAL_EMAIL=""
fi
fi

# Es torna a donar el format amb 78 files
msgmerge --silent --previous --width=79 --lang=ca@valencia missatges_2-$FITX $DIRTR/templates/${PO}t --output-file=missatges_3-$FITX
[ -f "missatges_2-$FITX" ] && rm -f missatges_2-$FITX

# Es realitza un avís per si la nova traducció conté missatges sense fer
msgfmt --statistics missatges_3-$FITX

# Esborrem els missatges obsolets (en silenci)
posieve --quiet remove-obsolete missatges_3-$FITX

# Es convida a algun col·laborador/a de valència
if [ $FITX = "gcompris_qt.po" ]; then
echo -e "\n Nota: El fitxer «$FITX» conté una millora addicional\n\tper a convidar a traductors valencians.\n"
sed --in-place -e "s/DOT com&gt; .2015-20...\.\"/DOT com\&gt; \(2015-$(date +%Y)\)\.<br \/\"\n\"><b>Atenció<\/b>: Cal ajuda per a la seva traducció al valencià. Volem que \"\n\"esta siga correcta i potser voldreu que les veus també estiguen en \"\n\"valencià. Escriviu-nos a la llista de correu \&lt;kde-i18n-ca@kde.org\&gt; i \"\n\"en parlarem.\"/g" missatges_3-$FITX
fi

# Ja s'escriu al disc
mv -f missatges_3-$FITX $DIRTR/ca@valencia/$PO
cd $DIRTR
}

cerca_po() {
# Cerca les plantilles de traducció i les ordena
cd ca
FITXERSPO=$(find messages/* -type f -name "*.po" | sort)
cd ..
}

ACTION="$1"
case $ACTION in
usuari)
CANVIA='1'
if [ -f $RVF ]; then
RV=$(cat $RVF)
# S'afegeix 1 a la revisió per a ometre els últims canvis
RVINICI="$(printf %06d $[10#$RV + 1])"

# S'obté la darrera modificació SVN des de la carpeta
RVFINAL=$(LANG=C; svn info ca/ | grep "^Revision:" | awk '{print $2}')
if [ $ESCRIPTORI = "l10n-kf5-plasma-lts" ]; then
capçalera "\e[1mLlegenda:\e[0m \e[44m*\e[0m s'ha modificat, \e[38;5;82m-\e[0m no cal actualitzar\n\t \e[44mo\e[0m no es tradueix, \e[38;5;46mo\e[0m mantingut per l'equip valencià\n"
echo -e " \e[38;5;82m-\e[0m Aquestes traduccions són mantingudes per l'equip de valencià.\n"
exit 0
fi
else
echo -e "\nError «$1»: No existeix el fitxer $RVF."
echo " Creeu-lo manualment o empreu primer l'opció «recursiu»."
echo " Es tracta de no permetre executar aquesta opció"
echo " sobre tots els elements en el repositori."
echo -e " Format: 1641759\n"
exit 0
fi

[ "$USUARIS_SVN" ] || $(echo -e "\nError: no heu establert cap usuari seguit!\n"; exit 0)
COMMITS=$(LANG=C; svn log --verbose -r $RVINICI:$RVFINAL ca/ | grep $USUARIS_SVN | cut -f 1 -d' ' | sed 's/^r//g')
commits_num() {
FITXERS=$(LANG=C; svn log --verbose -r $1 ca/ | grep 'ca/messages/' | grep '\.po' | sed 's/^\(.*\)\/ca\///g')
}

N='0'
for arg in ${COMMITS[@]}
do
if [ "$N" ]; then
commits_num "$arg"
FITXERST="$FITXERST\n$FITXERS"
fi
N='1'
done

FITXERSPO="`echo -e "$FITXERST" | sort | uniq | tr "\n" " "`"
capçalera "\e[1mLlegenda:\e[0m \e[44m*\e[0m s'ha modificat, \e[38;5;82m-\e[0m no cal actualitzar\n\t \e[44mo\e[0m no es tradueix, \e[38;5;46mo\e[0m mantingut per l'equip valencià\n"
;;
recursiu)
CANVIA='1'
RVFINAL=$(LANG=C; svn info ca/ | grep "^Revision:" | awk '{print $2}')
capçalera
cerca_po
;;
fitxer)
CANVIA='1'
PO="$2"
DIR=$(dirname $PO)

capçalera
if [ -f ca/$PO ]; then
FITX=$(basename $PO)
if [ -f ca/$PO ]; then
genera_copia
else
echo -e "\nError: «$FITX» no és un fitxer.\n"
fi
else
echo -e "\nError: «$PO» no existeix. Heu d'indicar un fitxer PO existent."
echo -e "messages/carpeta/fitxer.po\n"
fi

# Suprimeixo el fitxer creat per les eines gettext de GNU
[ -e messages.mo ] && rm -f messages.mo
exit 0
;;
arranja_po)
cerca_po
echo -en "\nS'arranjen les traduccions: "
for PO in $FITXERSPO
do
msgmerge --silent --update --previous --width=79 ca@valencia/$PO templates/${PO}t
done
echo -e "- Fet! -\n"
[ $BRANCA = "stable" ] && posieve --quiet remove-obsolete ca@valencia/messages/*
exit 0
;;
*)
echo "$0 [ usuari | recursiu | fitxer (po) | arranja_po ]"
echo
echo " usuari : Mode SVN: mira l'última data i hora de canvi per als usuaris seguits."
echo " Empra la revisió en el fitxer $RVF i processa els\n\t\tmodificats."
echo -e " Usuaris seguits = $(echo $USUARIS_SVN | sed -e s,.\|,\ ,g)\n"
echo " recursiu : Mode local: actualitza tots els fitxers en base a la revisió\n\t\testablerta en el fitxer $RVF."
echo -e " Si aquest no existeix, ho actualitza tot.\n"
echo " fitxer [po] : Mode local: actualitza el fitxer sense emprar cap data."
echo " Útil si observem alguna desactualització puntual."
echo " Nota: No actualitza la revisió en el fitxer $RVF."
echo -e " po = messages/carpeta/fitxer.po\n"
echo " arranja_po : Mode local: s'arranjen les cadenes amb l'estil de la plantilla."
echo -e " No actualitza la data en el fitxer $RVF.\n"
exit 0
;;
esac

for PO in $FITXERSPO
do
# Extraiem el nom de directori i el nom de fitxer
DIR=$(dirname $PO)
FITX=$(basename $PO)

message_removed() {
[ "$REPETIT" = "$DIR" ] && return
echo -e " \e[44mo\e[0m $DIR"
REPETIT="$DIR"
}

# Es desactiven les traduccions següents:
[ "$DIR" = "messages/documentation-develop-kde-org" ] && message_removed && continue # https://develop.kde.org/ca/docs/
[ "$DIR" = "messages/documentation-docs-kdenlive-org" ] && message_removed && continue # https://docs.kdenlive.org/ca/
# messages/websites-kde-org:
[ "$FITX" = "release_announcements.po" ] && message_removed && continue # https://kde.org/ca/announcements/
[ "$FITX" = "www_www.po" ] && message_removed && continue
[ "$DIR" = "messages/websites-planet-kde-org" ] && message_removed && continue # https://planet.kde.org/ca/
[ "$DIR" = "messages/websites-kdevelop-org" ] && message_removed && continue # https://kdevelop.org/ca/
# desactivades temporalment (a l'espera de temps per a revisar):
[ "$DIR" = "messages/websites-skrooge-org" ] && message_removed && continue # https://skrooge.org/ca/
# desactivades temporalment (la traducció en valencià no funciona a l'aplicació font):
# ERROR: 459247 <https://bugs.kde.org/show_bug.cgi?id=459247>
# Fet! - https://krita.org/ca/
[ "$DIR" = "messages/websites-docs-krita-org" ] && message_removed && continue # https://docs.krita.org/ca/
# Es desactiven les traduccions revisades per l'equip valencià (ja no s'empra):
# kdeutils
# [[ "$DIR" = "messages/"@(ark|filelight) ]] && VAL='1' && message_removed && continue
genera_copia
done

# Actualització normal
[[ "$ACTION" = @(usuari|recursiu) ]] && echo "$RVFINAL" > $RVF

[ -z $MISSATGEPOS ] || echo -e "\nError: $MISSATGEPOS\n"

# Suprimeixo el fitxer creat per les eines gettext de GNU
[ -e messages.mo ] && rm -f messages.mo

exit 0