weblate/docs/admin/projects.rst
Michal Čihař fc701548ad Use absolute path to images
Signed-off-by: Michal Čihař <michal@cihar.com>
2018-11-16 10:50:13 +01:00

418 lines
15 KiB
ReStructuredText
Vendored

Translation projects
====================
Translation organization
------------------------
Weblate organizes translatable content into tree like structure. The top level
object is :ref:`project`, which should hold all translations which belong
together (for example translation of an application in several versions
and/or documentation). On the next level, there is :ref:`component`, which is
actually the component to translate. Here you define the VCS repository to use and
mask of files to translate. Below :ref:`component` there are individual
translations, which are handled automatically by Weblate as the translation
files (matching mask defined in :ref:`component`) appear in VCS repository.
All translation components need to be available as VCS repositories and are
organized as project/component structure.
Weblate supports wide range of translation formats (both bilingual and
monolingual) supported by translate toolkit, see :ref:`formats` for more
information.
.. note::
You can share cloned VCS repositories using :ref:`internal-urls`. Using
shared repositories feature is highly recommended when you have many
components that use the same VCS. It will improve performance and use less
disk space.
.. _adding-projects:
Adding translation projects and components
------------------------------------------
.. versionchanged:: 3.2
Since the 3.2 release the interface for adding projects and components is
included in Weblate and no longer requires you to use
:ref:`admin-interface`.
Based on your permissions, you can be able to create new translation projects
and components in Weblate. It is always allowed for superusers and if your
instance uses billing (eg. like https://hosted.weblate.org/, see
:ref:`billing`), you can also create those based on your plans allowance.
You can view your current billing plan on separate page:
.. image:: /images/user-billing.png
The project creation can be initiated from there or using menu in navigation
bar. All you need to do then is to fill in basic information about the
translation project:
.. image:: /images/user-add-project.png
After creating the project, you are directly taken to the project page:
.. image:: /images/user-add-project-done.png
Creating new translation component can be initiated by single click there and
you will have to fill in translation component information now:
.. image:: /images/user-add-component.png
.. seealso::
:ref:`admin-interface`,
:ref:`project`,
:ref:`component`
.. _project:
Project configuration
---------------------
To add a new component to translate, you need to create a translation project first.
The project is a sort of shelf, in which real translations are folded. All
components in the same project share suggestions and the dictionary; also the
translations are automatically propagated through all components in a single
project (unless disabled in component configuration).
The project has only a few attributes giving translators information about
the project:
Project website
URL where translators can find more information about the project.
Mailing list
Mailing list where translators can discuss or comment on translations.
Translation instructions
URL where you have more detailed instructions for translators.
Set Translation-Team header
Whether Weblate should manage Translation-Team header (this is
:ref:`gettext` only feature right now).
Use shared translation memory
Whether to use shared translation memory, see :ref:`shared-tm` for more details.
Access control
Configure per project access control, see :ref:`acl` for more details.
Enable reviews
Enable review workflow, see :ref:`reviews`.
Enable hooks
Whether unauthenticated :ref:`hooks` will be enabled for this repository.
Source language
Language used for source strings in all components. Change this if you are
translating from something else than English.
.. note::
Most of the fields can be edited by project owners or managers in the
Weblate interface.
Adjusting interaction
+++++++++++++++++++++
There are also additional features which you can control, like automatic
pushing of changes (see also :ref:`push-changes`) or
maintaining of Translation-Team header.
.. _component:
Component configuration
-----------------------
Component is real component for translating. You enter VCS repository location
and file mask for which files to translate and Weblate automatically fetches from the VCS
and finds all matching translatable files.
You can find some examples of typical configurations in the :ref:`formats`.
.. note::
It is recommended to have translation components of reasonable size - split
the translation by anything what makes sense in your case (individual
applications or addons, book chapters or websites).
Weblate easily handles translations with 10000 of units, but it is harder
to split work and coordinate among translators with such a large translation.
Also when one translator is working on a component, this translation is locked
for others, see :ref:`locking`.
Should the language definition for translation be missing, an empty definition is
created and named as "cs_CZ (generated)". You should adjust the definition and
report this back to Weblate authors so that the missing language can be included in
next release.
The component contains all important parameters for working with VCS and
getting translations out of it:
Version control system
VCS to use, see :ref:`vcs` for details.
Source code repository
VCS repository used to pull changes, see :ref:`vcs-repos` for more details.
This can be either a real VCS URL or ``weblate://project/component``
indicating that the repository should be shared with another component.
See :ref:`internal-urls` for more details.
Repository push URL
Repository URL used for pushing, this is completely optional and push
support will be disabled when this is empty. See :ref:`vcs-repos` for more
details on how to specify repository URL.
Repository browser
URL of repository browser to display source files (location where messages
are used). When empty no such links will be generated.
You can use following format strings:
* ``%(branchs)s`` - current branch
* ``%(line)s`` - line in file
* ``%(file)s`` - filename
* ``%(../file)s`` - filename in parent directory
* ``%(../../file)s`` - filename in grandparent directory
For example on GitHub, you would use something like
``https://github.com/WeblateOrg/hello/blob/%(branch)s/%(file)s#L%(line)s``.
Exported repository URL
URL where changes made by Weblate are exported. This is important when
:ref:`continuous-translation` is not used or when there is need to manually
merge changes. You can use :ref:`git-exporter` to automate this for Git
repositories.
Repository branch
Which branch to checkout from the VCS and where to look for translations.
File mask
Mask of files to translate including path. It should include one *
replacing language code (see :ref:`languages` for information how this is
processed). In case your repository contains more than one translation
files (eg. more Gettext domains), you need to create separate component for
each.
For example ``po/*.po`` or ``locale/*/LC_MESSAGES/django.po``.
In case your filename contains special chars such as ``[``, ``]``, these need
to be escaped as ``[[]`` or ``[]]``.
Monolingual base language file
Base file containing strings definition for :ref:`monolingual`.
Edit base file
Whether to allow editing of base file for :ref:`monolingual`.
Base file for new translations
Base file used to generate new translations, eg. ``.pot`` file with Gettext,
see :ref:`new-translations` for more information.
File format
Translation file format, see also :ref:`formats`.
Source string bug report address
Email address used for reporting upstream bugs. This address will also receive
notification about any source string comments made in Weblate.
Locked
You can lock the translation to prevent updates by users.
Allow translation propagation
You can disable propagation of translations to this component from other
components within same project. This really depends on what you are
translating, sometimes it's desirable to have same string used.
It's usually a good idea to disable this for monolingual translations unless
you are using the same IDs across the whole project.
Save translation history
Whether to store a history of translation changes in database.
Enable suggestions
Whether translation suggestions are accepted for this component.
Suggestion voting
Enable voting for suggestions, see :ref:`voting`.
Autoaccept suggestions
Automatically accept voted suggestions, see :ref:`voting`.
Translation flags
Customization of quality checks and other Weblate behavior, see :ref:`custom-checks`.
Translation license
License of this translation.
License URL
URL where users can find full text of a license.
New language
How to handle requests for creating new languages. Please note that the
availability of choices depends on the file format, see :ref:`formats`.
Merge style
You can configure how the updates from the upstream repository are handled.
This might not be supported for some VCS. See :ref:`merge-rebase` for
more details.
Commit message
Message used when committing translation, see :ref:`markup`.
Committer name
Name of the committer used on Weblate commits, the author will be always the
real translator. On some VCS this might be not supported. Default value
can be changed by :setting:`DEFAULT_COMMITER_NAME`.
Committer email
Email of committer used on Weblate commits, the author will be always the
real translator. On some VCS this might be not supported. Default value
can be changed by :setting:`DEFAULT_COMMITER_EMAIL`.
Push on commit
Whether any committed changes should be automatically pushed to upstream
repository.
Age of changes to commit
Configures how old changes (in hours) will be committed by
:djadmin:`commit_pending` management command (usually executed by cron).
Default value can be changed by :setting:`COMMIT_PENDING_HOURS`.
Language filter
Regular expression which is used to filter translation when scanning for
file mask. This can be used to limit list of languages managed by Weblate
(eg. ``^(cs|de|es)$`` will include only those there languages. Please note
that you need to list language codes as they appear in the filename.
.. note::
Most of the fields can be edited by project owners or managers in the
Weblate interface.
.. seealso::
:ref:`faq-vcs`, :ref:`alerts`
.. _markup:
Template markup
---------------
Weblate uses simple markup language on several places where text rendering is
needed. It is based on :doc:`django:ref/templates/language` so it can be quite
powerful.
Currently it is used in:
* Commit message formatting, see :ref:`component`
* Several addons
* :ref:`addon-weblate.discovery.discovery`
* :ref:`addon-weblate.generate.generate`
* :ref:`addon-script`
There are following variables available in the templates:
``{{ language_code }}``
Language code
``{{ language_name }}``
Language name
``{{ component_name }}``
Component name
``{{ component_slug }}``
Component slug
``{{ project_name }}``
Project name
``{{ project_slug }}``
Project slug
``{{ url }}``
Translation URL
``{{ stats }}``
Translation stats, this has further attributes, see below for examples.
``{{ stats.all }}``
Total strings count
``{{ stats.fuzzy }}``
Count of strings needing review
``{{ stats.fuzzy_percent }}``
Percent of strings needing review
``{{ stats.translated }}``
Translated strings count
``{{ stats.translated_percent }}``
Translated strings percent
``{{ stats.allchecks }}``
Number of strings with failing check
``{{ stats.allchecks_percent }}``
Percent of strings with failing check
``{{ author }}``
Author of current commit, available only in the commit scope.
You can combine them with filters:
.. code-block:: django
{{ component|title }}
You can use conditions:
.. code-block:: django
{% if stats.translated_percent > 80 %}Well translated!{% endif %}
There is additional tag available to replace chars:
.. code-block:: django
{% replace component "-" " " %}
You can combine it with filters:
.. code-block:: django
{% replace component|capfirst "-" " " %}
...and other Django template features.
.. _import-speed:
Importing speed
---------------
Fetching VCS repository and importing translations to Weblate can be a lengthy
process depending on size of your translations. Here are some tips to improve
this situation:
Optimize configuration
++++++++++++++++++++++
The default configuration is useful for testing and debugging Weblate, while
for production setup, you should do some adjustments. Many of them have quite
a big impact on performance. Please check :ref:`production` for more details,
especially:
* :ref:`production-indexing`
* :ref:`production-cache`
* :ref:`production-database`
* :ref:`production-debug`
Check resource limits
+++++++++++++++++++++
If you are importing huge translations or repositories, you might be hit by
resource limits of your server.
* check amount of free memory, having translation files by system will greatly improve performance
* disk operations might be bottleneck if there is lot of strings to process - the disk is pushed by both Weblate and database
* additional CPU cores might help to improve performance of background tasks (see :ref:`celery`)
Disable not needed checks
+++++++++++++++++++++++++
Some quality checks can be quite expensive and if you don't need them, they
can save you some time during import. See :setting:`CHECK_LIST` for more
information how to configure this.
.. _autocreate:
Automatic creation of components
--------------------------------
In case you have project with dozen of translation files (eg. for different
Gettext domains or parts of Android apps), you might want to import them
automatically. This can be either achieved from command line using
:djadmin:`import_project` or :djadmin:`import_json` or by installing
:ref:`addon-weblate.discovery.discovery` addon.
For using the addon, you need to first create component for one translation
file (choose the one that is least likely to be renamed or removed in future)
and install the addon on this component.
For the management commands, you need to create a project which will contain all
components and then it's just a matter of running :djadmin:`import_project` or
:djadmin:`import_json`.
.. seealso::
:ref:`manage`,
:ref:`addon-weblate.discovery.discovery`
.. _fulltext:
Fulltext search
---------------
Fulltext search is based on Whoosh. It is processed in background if Celery is
configured. This leads to a faster response of the site and less fragmented
index with the cost that it might be slightly outdated.
.. seealso::
:ref:`faq-ft-slow`, :ref:`faq-ft-lock`, :ref:`faq-ft-space`