- Signup for an account
- Choose a project and a component
- Start translating
IMPORTANT : After translation, add your name to Your names
(NAME OF TRANSLATORS
) and email to Your emails
. If there already exist a value, add yours after a comma. Example :
- Your names :
ശ്യാം കൃഷ്ണന് സി.ആര്.,സുബിന് സിബി
- Your emails :
There are 3 repos :
- KDE Upstream repo (SVN)
- Intermediary repo (git) : This repo.
- Weblate local repo (git) : Local copy of the intermediary repo
We need to make the intermediary repo and then setup Weblate.
Weblate will work with the intermediary repo, and we'll have to manually merge the intermediary repo with KDE upstream (not that much of difficulty).
If your language team is not using Summit, use it. Instructions here.
Using summit helps you to maintain only one branch for both trunk and stable.
We need to create a new git repo which will act as an intermediary between KDE upstream repo (SVN) and Weblate.
Weblate will use this intermediary git repo for syncing.
The intermediary repo after the setup will have this folder structure :
- pos
- ml
- dolphin
- kde-workspace
- ...
- ml
- upstream
- summit
- ml
- dolphin
- kde-workspace
- ...
- templates
- ml
- summit
- README.md
- ...
Make the upstream directory structure :
mkdir upstream upstream/summit
cd upstream/summit
svn co svn+ssh://[email protected]/home/kde/trunk/l10n-support/ml/summit/messages ml
svn co svn+ssh://[email protected]/home/kde/trunk/l10n-support/templates/summit/messages templates
Then, make the folder pos
in the root, and copy files from upstream/summit
folder with the exact sub-directory structure. For example, if you want to add Dolphin file manager (dolphin
), then :
mkdir pos pos/ml pos/ml/dolphin
cp "upstream/summit/ml/dolphin/*" "pos/ml/dolphin/"
Copy file from upstream to corresponding one in pos
folder.
Then import from git to weblate (the command in the Importing components to Weblate section) :
weblate import_project ...
To search for a particular string, do this in upstream :
grep -rnw '.' --include="*.po" -e '"Open Path"'
- Clone this repo
- Install :
sudo apt install libpq-dev # https://stackoverflow.com/a/12037133/1372424 sudo apt install libacl1-dev export PIPENV_VENV_IN_PROJECT=1 pipenv install
- Make
.env
:Edit the newcp .env.example .env
.env
and set a Django secret key, database credentials and optional other fetures. - Get into the environment and let Weblate know the settings :
pipenv shell ln -s $(realpath settings.py) .venv/lib/python3.6/site-packages/weblate/settings.py
- Setup Redis & Celery :
sudo apt install redis-server .venv/lib/python3.6/site-packages/weblate/examples/celery start
- Create admin user :
weblate createsuperuser
- Set domain in Django Admin -> Sites
- You need to update Weblate's plural form to accomodate with scripty's choice because scripty will change it to
(n != 1)
back everytime and that's a waste of git & svn storage. Relevantpsql UPDATE lang_plural SET formula='(n != 1)' WHERE formula='n != 1'
Each PO file will be a component in Weblate. These components will be under a project in Webalte. dolphin
, discover
, plasma-workspace
will each have their own project.
For example, let's take 'dolphin' :
- Create a project named
dolphin
using Weblate web interface - Setup the intermediary repo
- Configure the project to have a SSH key for pushing to the intermediary git repo. If it's a GitHub repo, you can add the ssh key as a deploy key in GitHub repo with write permission.
- From the server console, tell Weblate to import from the intermediary repo to
dolphin
project :weblate import_project dolphin '[email protected]:FOSSersVAST/kde-pos.git' master "pos/(?P<language>[^/]*)/dolphin/(?P<component>[^%]*)\.po"
- Set license of components & no new languages :
psql UPDATE trans_component SET license='Under the same license as the package', new_lang='none';
- We're gonna enable
- Suggestions voting: Set suggestions for all components & vote count to 3. Users who can suggest can vote on it and get it accepted when vote reaches threshold.
- Disable translation propagation (because it messess with
Your names
andYour emails
strings)
weblate shell -c 'from weblate.trans.models import Component; Component.objects.all().update(suggestion_voting=True, suggestion_autoaccept=3, allow_translation_propagation=False)'
- Restart Weblate
.venv/lib/python3.8/site-packages/weblate/examples/celery restart
- Then do
weblate loadpo dolphin
Optional :
-
Enable Reviews: Special reviewer users can be assigned to accept suggestions and mark strings reviewed. This setting is per project available in Settings -> Workflow.
-
Make project suggestion-review based. Go to Weblate, project page -> Users :
- Project Access Control : Protected
With this, you will have to specifically allow users to submit suggestions. Registered users can't submit suggestions by default.
Or you can just disable public registration and allow specific users only.
- Follow this
- Get API key & Secret, store in
.env
:SOCIAL_AUTH_GOOGLE_OAUTH2_KEY='' SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET=''
This is done in 2 processes (see the diagram at the end) :
- "Weblate Sync Process"
- "Merge Process"
Weblate Sync Process :
-
Go to Weblate web interface -> Repository Maintenance. Click
Commit
&Push
buttons, one after the other.If there's any merge conflict, fix it in the repo on server. The git folder on repo will be at
data/vcs/<name>
. After fixing it, do agit pull
to make sure everything's alright. And repeat this step (do Pull changes on Webalte, commit & push). -
Do a
git pull
in the intermediary repo -
Run
copy-to-upstream.sh
This will copy new localized strings from the recently pushed Weblate changes to KDE upstream summit repo. Note that Weblate PO files have line wrapping enabled, but summit POs does not.
-
In
upstream/summit/ml
folder, commit :svn commit -m 'Updates from Weblate'
See SVN tips
Merge Process :
-
In maintainer's local summit setup, do : (More details here)
export KDEREPO=$(realpath .) export PATH=$KDEREPO/trunk/l10n-support/pology/bin:$PATH cd $KDEREPO svn update cd $KDEREPO/trunk/l10n-support posummit scripts/messages.summit ml merge # Decide whether to scatter now or not. Scatter is usually done before a release posummit scripts/messages.summit ml scatter svn commit $KDEREPO/trunk/l10n-support/ml $KDEREPO/branches/stable/ $KDEREPO/trunk/l10n-kf5/ml -m 'Routine Merge & Scatter'
-
In intermediary repo, do (this only need to be done if
posummit merge
was done in the previous step.)cd upstream/summit/templates && svn update && cd - cd upstream/summit/ml && svn update
-
Merge strings from files in
upstream/summit
folder topos
copy-from-upstream.sh
The script will only merge strings of files that exists in
upstream/summit
andpos
folder. Note that Weblate PO files have line wrapping enabled, but summit POs does not. -
Commit & push
git commit -a -m "Sync with KDE Upstream" git push
-
Go to Weblate web interface -> Repository Maintenance and Pull.
Steps till Weblate pull changes can be done periodically to keep Weblate POs up-to-date with upstream.
Better add a webhook in GitHub to Weblate so that Weblate is known of the changes automatically. Do this with the weblate
branch.
- Don't make any change directly in the intermediary repo's
upstream
folder. If doing so, make sure to update the PO file in thepos
folder too.
If you see a ?
next to files when doing svn status
, then those files are untracked. You can track them all with :
# ? means file is new
# You may wanna add new files too (this is the equivalent of git add --all) :
svn status | grep '?' | sed 's/^.* /svn add /' | bash
To revert local changes (git checkout
) :
svn revert --recursive path