# Translation projects

## Translation organization

Weblate organizes translatable VCS content of project/components into a
tree-like structure. You can additionally organize components within a project
using categories.

* The bottom level object is [Project configuration](#project), which should hold all translations belonging
  together (for example translation of an application in several versions
  and/or accompanying documentation).
* The middle level is optionally created by [Category](#category). The categories can
  be nested to achieve more complex structure.
* On the level above, [Component configuration](#component), which is
  actually the component to translate, you define the VCS repository to use, and
  the mask of files to translate.
* Above [Component configuration](#component) there are individual translations, handled automatically by Weblate as translation
  files (which match [File mask](#component-filemask) defined in [Component configuration](#component)) appear in the VCS repository.

Weblate supports a wide range of translation formats (both bilingual and
monolingual ones) supported by Translate Toolkit, see [Localization file formats](https://docs.weblate.org/en/weblate-2026.10/formats.md#formats).

#### NOTE
You can share cloned VCS repositories using [Weblate internal URLs](https://docs.weblate.org/en/weblate-2026.10/vcs.md#internal-urls).
Using this feature is highly recommended when you have many
components sharing the same VCS. It improves performance and decreases
required disk space.

<a id="adding-projects"></a>

## Adding translation projects and components

Based on your permissions, new translation projects and components can be
created. It is always permitted for users with the Add new projects
permission, and if your instance uses billing (e.g. like
[https://hosted.weblate.org/](https://hosted.weblate.org/) see [Billing](https://docs.weblate.org/en/weblate-2026.10/admin/optionals.md#billing)), you can also create those
based on your plans allowance from the user account that manages billing.
Projects can also be created in a workspace by users who have the
Add projects to workspace permission in that workspace. Creating a
project without selecting a workspace requires the site-wide
Add new projects permission. See
[Project creation and moves](https://docs.weblate.org/en/weblate-2026.10/admin/workspaces.md#workspace-project-creation) for details.

#### HINT
To grant every user permission to create new projects create new
[Automatic team assignments](https://docs.weblate.org/en/weblate-2026.10/admin/access.md#autoteam) for the Project creators team.

You can view your current billing plan on a separate page:

![image](screenshots/user-billing.webp)

The project creation can be initiated from there, or using the menu in the navigation
bar, filling in basic info about the translation project to complete addition of it:

![image](screenshots/user-add-project.webp)

After creating the project, you are taken directly to the project page:

![image](screenshots/user-add-project-done.webp)

Creating a new translation component can be initiated via a single click there.
The process of creating a component is multi-staged and automatically detects most
translation parameters. There are several approaches to creating component:

From version control
: Creates component from remote version control repository.

From existing component
: Creates additional component to existing one by choosing different files.

Additional branch
: Creates additional component to existing one, just for different branch.

Upload translations files
: Upload translation files to Weblate in case you do not have version control
  or do not want to integrate it with Weblate. You can later update the
  content using the web interface or [Weblate’s REST API](https://docs.weblate.org/en/weblate-2026.10/api.md#api).

Translate document
: Upload single document or translation file and translate that.

Start from scratch
: Create blank translation project and add strings manually.

Once you have existing translation components, you can also easily add new ones
for additional files or branches using same repository.

First you need to fill in name and repository location:

![image](screenshots/user-add-component-init.webp)

On the next page, you are presented with a list of discovered translatable resources:

![image](screenshots/user-add-component-discovery.webp)

As a last step, you review the translation component info and fill in optional details:

![image](screenshots/user-add-component.webp)

#### SEE ALSO
* [The Django admin interface](https://docs.weblate.org/en/weblate-2026.10/admin/admin.md#admin-interface)
* [Project configuration](#project)
* [Component configuration](#component)

<a id="project"></a>

## Project configuration

Create a translation project and then add a new component for translation in it.
The project is like a shelf, in which real translations are stacked. All
components in the same project share suggestions and their dictionary; the
translations are also automatically propagated through all components in a single
project (unless turned off in the component configuration), see [Translation Memory](https://docs.weblate.org/en/weblate-2026.10/admin/memory.md#memory).

#### SEE ALSO
[Integrating with Weblate](https://docs.weblate.org/en/weblate-2026.10/devel/integration.md)

These basic attributes set up and inform translators of a project:

<a id="project-name"></a>

### Project name

Verbose project name, used to display the project name.

#### SEE ALSO
[`PROJECT_NAME_RESTRICT_RE`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-PROJECT_NAME_RESTRICT_RE)

<a id="project-slug"></a>

### URL slug

Project name suitable for URLs.

<a id="project-web"></a>

### Project website

URL where translators can find more info about the project.

This is a required parameter unless turned off by [`WEBSITE_REQUIRED`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-WEBSITE_REQUIRED).

#### SEE ALSO
* [`PROJECT_WEB_RESTRICT_HOST`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-PROJECT_WEB_RESTRICT_HOST)
* [`PROJECT_WEB_RESTRICT_ALLOWLIST`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-PROJECT_WEB_RESTRICT_ALLOWLIST)
* [`PROJECT_WEB_RESTRICT_NUMERIC`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-PROJECT_WEB_RESTRICT_NUMERIC)
* [`PROJECT_WEB_RESTRICT_PRIVATE`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-PROJECT_WEB_RESTRICT_PRIVATE)
* [`PROJECT_WEB_RESTRICT_RE`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-PROJECT_WEB_RESTRICT_RE)

<a id="project-instructions"></a>

### Translation instructions

Text describing localization process in the project, and any other information
useful for translators. Markdown can be used for text formatting or inserting links.

Good translation instructions explain how contributors should submit
translations, what review they should expect, how they can report problems with
source strings, and where translations can be tested or when they are released.

<a id="project-license"></a>

### Translation license

Default translation license for components in this project.

#### SEE ALSO
* [Settings inheritance](https://docs.weblate.org/en/weblate-2026.10/admin/workspaces.md#workspace-inherited-settings)
* [Translation license](#component-license)

<a id="project-agreement"></a>

### Contributor license agreement

Default contributor license agreement for components in this project. Markdown
can be used for text formatting or inserting links.

#### SEE ALSO
* [Settings inheritance](https://docs.weblate.org/en/weblate-2026.10/admin/workspaces.md#workspace-inherited-settings)
* [Contributor license agreement](#component-agreement)

<a id="project-use-shared-tm"></a>

### Use shared translation memory

Whether to use shared translation memory, see [Shared translation memory](https://docs.weblate.org/en/weblate-2026.10/admin/memory.md#shared-tm) for more details.

The default value can be changed by [`DEFAULT_SHARED_TM`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-DEFAULT_SHARED_TM).

<a id="project-contribute-shared-tm"></a>

### Contribute to shared translation memory

Whether to contribute to shared translation memory, see [Shared translation memory](https://docs.weblate.org/en/weblate-2026.10/admin/memory.md#shared-tm) for more details.

This also affects whether the project can be used as source for [Automatic translation](https://docs.weblate.org/en/weblate-2026.10/admin/continuous.md#automatic-translation).

The default value can be changed by [`DEFAULT_SHARED_TM`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-DEFAULT_SHARED_TM).

#### NOTE
This option is unavailable on Hosted Weblate, it is toggled together with [Use shared translation memory](#project-use-shared-tm).

<a id="project-use-workspace-tm"></a>

### Use workspace translation memory

Whether to use translation memory shared by projects in the same workspace,
see [Translation-memory scopes](https://docs.weblate.org/en/weblate-2026.10/admin/memory.md#memory-scopes) for more details. The workspace has to allow workspace
translation memory as well.

<a id="project-contribute-workspace-tm"></a>

### Contribute to workspace translation memory

Whether to contribute translations to the translation memory shared by
projects in the same workspace. The workspace has to allow contribution as
well.

#### NOTE
This option is unavailable on Hosted Weblate, it is toggled together with [Use workspace translation memory](#project-use-workspace-tm).

<a id="project-autoclean-tm"></a>

### Autoclean translation memory

#### Versionadded
Added in version 5.13.

Whether to replace older automatically created translation memory entries when a
translation becomes active.

Matching is based on the same source string, component, context, and
source/target language pair. Uploaded translation memory files are not
affected.

#### SEE ALSO
* [Translation memory status](https://docs.weblate.org/en/weblate-2026.10/admin/memory.md#memory-status)
* [Autoclean translation memory](https://docs.weblate.org/en/weblate-2026.10/admin/memory.md#autoclean-tm)

<a id="project-access-control"></a>

### Access control

Configure per project access control, see [Project access control](https://docs.weblate.org/en/weblate-2026.10/admin/access.md#acl) for more details.

The default value can be changed by [`DEFAULT_ACCESS_CONTROL`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-DEFAULT_ACCESS_CONTROL).

<a id="project-public-sharing"></a>

### Public sharing

Allow anonymous access to the project’s engage pages and rendered status
widgets. This setting applies to Private and Custom
projects; Public and Protected projects are always
publicly shareable.

Public sharing exposes project and component names, including restricted
components, together with translation statistics, languages, and progress. It
does not grant access to project pages, translations, repositories, or the API.

Changing this setting requires the Manage project access
permission. The status widget configuration page continues to use normal
project access control.

When [`REQUIRE_LOGIN`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-REQUIRE_LOGIN) is enabled, [`PUBLIC_ENGAGE`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-PUBLIC_ENGAGE) must also be
enabled for anonymous access to engage pages.

<a id="project-enforced-2fa"></a>

### Enforced two-factor authentication

#### Versionadded
Added in version 5.7.

Enforce [Two-factor authentication](https://docs.weblate.org/en/weblate-2026.10/admin/auth.md#fa) for all contributors. Users won’t be allowed
to perform any operations within the project without having it configured.

<a id="project-translation-review"></a>

### Enable reviews

Enable review workflow for translations, see [Dedicated reviewers](https://docs.weblate.org/en/weblate-2026.10/workflows.md#reviews).

#### SEE ALSO
* [`DEFAULT_TRANSLATION_REVIEW`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-DEFAULT_TRANSLATION_REVIEW)
* [Workflow customization](https://docs.weblate.org/en/weblate-2026.10/workflows.md#workflow-customization)

<a id="project-source-review"></a>

### Enable source reviews

Enable review workflow for source strings, see [Source strings reviews](https://docs.weblate.org/en/weblate-2026.10/workflows.md#source-reviews).

#### SEE ALSO
* [`DEFAULT_SOURCE_REVIEW`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-DEFAULT_SOURCE_REVIEW)
* [Receiving source string feedback](https://docs.weblate.org/en/weblate-2026.10/devel/review.md#report-source)
* [Comments](https://docs.weblate.org/en/weblate-2026.10/user/translating.md#user-comments)

<a id="project-commit-policy"></a>

### Translation quality filter

#### Versionadded
Added in version 5.13.

The commit policy determines which translations are included when committing changes
to the version control system. This setting is available at the project level and
supports the following options:

* **Commit all translations regardless of quality**: All translations will be committed,
  including those marked as needing editing or not reviewed.
* **Skip translations marked as needing editing**: Only translations that don’t have the
  “needs editing”, “needs rewriting” or “needs checking” state will be committed.
* **Only include approved translations**: Only translations that have been approved by a
  reviewer will be committed. This option requires [Enable reviews](#project-translation-review)
  to be enabled.

The approved-only policy applies only to translations with reviews enabled.
Languages with reviews disabled through [Workflow customization](https://docs.weblate.org/en/weblate-2026.10/workflows.md#workflow-customization) commit all
translations, including those marked as needing editing. Source strings follow
the same rule using [Enable source reviews](#project-source-review).

Components linked to a repository in another project follow their own project’s
commit policy.

If the editor shows “Only approved translations are written to the translation
file.” or “Approval is required before this translation can be written to the
translation file.”, the quality filter prevents writing the translation to the
file until it is approved. This notice does not confirm that your current edit
was saved; resolve any validation errors before leaving the editor. The project
policy description qualifies this as “For languages with reviews enabled, only
approved translations are written to the translation file.” Having permission
to approve translations does not automatically approve your edits.

For a language that does not use reviews, open its page in the project and
choose Settings. Enable Customize translation workflow for
this language in this project, then turn Enable reviews off. This
requires permission to edit project settings. See [Workflow customization](https://docs.weblate.org/en/weblate-2026.10/workflows.md#workflow-customization).
With the approved-only policy, this makes all translation states eligible for
writing to files for that language, including those needing editing.

If reviews are needed, users with both review and bulk-edit permissions can use
[Bulk edit](https://docs.weblate.org/en/weblate-2026.10/user/translating.md#bulk-edit) to approve existing translations they have reviewed. Eligibility
for writing to a translation file does not mean the change is immediately
committed or pushed; see [Lazy commits](https://docs.weblate.org/en/weblate-2026.10/admin/continuous.md#lazy-commit) and [Push on commit](#component-push-on-commit).

<a id="project-enable-hooks"></a>

### Enable hooks

Whether unauthenticated [Notification hooks](https://docs.weblate.org/en/weblate-2026.10/api.md#hooks) are to be used for this repository.

#### SEE ALSO
* [Intermediate language file](#component-intermediate)
* [Quality gateway for the source strings](https://docs.weblate.org/en/weblate-2026.10/workflows.md#source-quality-gateway)
* [Bilingual and monolingual formats](https://docs.weblate.org/en/weblate-2026.10/formats.md#bimono)
* [Language definitions](https://docs.weblate.org/en/weblate-2026.10/admin/languages.md#languages)

<a id="project-language-aliases"></a>

### Language aliases

Define language codes mapping when importing translations into Weblate. Use
this when language codes are inconsistent in your repositories and you want to
get a consistent view in Weblate or in case you want to use non-standard naming
of your translation files.

The typical use case might be mapping American English to English: `en_US:en`

Multiple mappings to be separated by comma: `en_GB:en,en_US:en`

Using non standard code: `ia_FOO:ia`

#### HINT
The language codes are mapped when matching the translation files and the
matches are case sensitive, so ensure you use the source language codes
in same form as used in the filenames.

#### SEE ALSO
* [Adding new translations](https://docs.weblate.org/en/weblate-2026.10/devel/translations.md#adding-translation)
* [Language code](https://docs.weblate.org/en/weblate-2026.10/admin/languages.md#language-code)
* [Parsing language codes](https://docs.weblate.org/en/weblate-2026.10/admin/languages.md#language-parsing-codes)

<a id="project-new-lang"></a>

### Adding new translation

Default behavior for requests to create new translations in components in this
project.

#### SEE ALSO
* [Settings inheritance](https://docs.weblate.org/en/weblate-2026.10/admin/workspaces.md#workspace-inherited-settings)
* [Adding new translation](#component-new-lang)
* [Limiting translation languages](https://docs.weblate.org/en/weblate-2026.10/workflows.md#workflow-language-restrictions)

<a id="project-language-code-style"></a>

### Language code style

Default language code style for translations created by Weblate in components
in this project.

#### SEE ALSO
* [Settings inheritance](https://docs.weblate.org/en/weblate-2026.10/admin/workspaces.md#workspace-inherited-settings)
* [Language code style](#component-language-code-style)

<a id="project-secondary-language"></a>

### Secondary language

#### Versionadded
Added in version 5.11.

Additional language to show together with the source language while translating.

Optionally, it can be also used as a source for the machine translation.

#### SEE ALSO
* [Settings inheritance](https://docs.weblate.org/en/weblate-2026.10/admin/workspaces.md#workspace-inherited-settings)
* [Secondary languages](https://docs.weblate.org/en/weblate-2026.10/user/profile.md#secondary-languages)
* [Source strings for the machine translation](https://docs.weblate.org/en/weblate-2026.10/admin/machine.md#mt-sources)

<a id="project-check-flags"></a>

### Translation flags

#### Versionadded
Added in version 5.11.

Customization of quality checks and other Weblate behavior, see [Customizing behavior using flags](https://docs.weblate.org/en/weblate-2026.10/admin/checks.md#custom-checks).

Workspace, project, component, and translation flags are merged.

#### SEE ALSO
* [Settings inheritance](https://docs.weblate.org/en/weblate-2026.10/admin/workspaces.md#workspace-inherited-settings)

<a id="project-commit-message"></a>

<a id="project-add-message"></a>

<a id="project-delete-message"></a>

<a id="project-merge-message"></a>

<a id="project-addon-message"></a>

<a id="project-pull-message"></a>

### Commit, add, delete, merge, add-on, and merge request messages

Default commit and merge request message templates for components in this
project.

The default values can be changed by [`DEFAULT_ADD_MESSAGE`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-DEFAULT_ADD_MESSAGE),
[`DEFAULT_ADDON_MESSAGE`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-DEFAULT_ADDON_MESSAGE), [`DEFAULT_COMMIT_MESSAGE`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-DEFAULT_COMMIT_MESSAGE),
[`DEFAULT_DELETE_MESSAGE`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-DEFAULT_DELETE_MESSAGE), [`DEFAULT_MERGE_MESSAGE`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-DEFAULT_MERGE_MESSAGE),
[`DEFAULT_PULL_MESSAGE`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-DEFAULT_PULL_MESSAGE).

The built-in defaults follow Conventional Commits and include
Weblate links where available. Use Restore site default next to a
message editor to restore the current installation default for that message;
for inherited values, this also disables inheritance for that message.

#### SEE ALSO
* [Settings inheritance](https://docs.weblate.org/en/weblate-2026.10/admin/workspaces.md#workspace-inherited-settings)
* [Template markup](#markup)

<a id="component"></a>

## Component configuration

A component is a grouping of something for translation. You enter a VCS repository location
and file mask for which files you want translated, and Weblate automatically fetches from this VCS,
and finds all matching translatable files.

#### SEE ALSO
[Integrating with Weblate](https://docs.weblate.org/en/weblate-2026.10/devel/integration.md)

You can find some examples of typical configurations in the [Localization file formats](https://docs.weblate.org/en/weblate-2026.10/formats.md#formats).

#### NOTE
It is recommended to keep translation components to a reasonable size - split
the translation by anything that makes sense in your case (individual
apps or add-ons, book chapters or websites).

Weblate easily handles translations with 10000s of strings, but it is harder
to split work and coordinate among translators with such large translation components.

Should the language definition for a translation be missing, an empty definition is
created and named as “cs_CZ (generated)”. You should adjust the definition and
report this back to the Weblate authors, so that the missing languages can be included in
next release.

The component contains all important parameters for working with the VCS, and
for getting translations out of it:

<a id="component-name"></a>

### Component name

Verbose component name, used to display the component name.

<a id="component-slug"></a>

### Component slug

Component name suitable for URLs.

<a id="component-project"></a>

### Component project

[Project configuration](#project) where the component belongs.

<a id="component-vcs"></a>

### Version control system

VCS to use, see [Version control integration](https://docs.weblate.org/en/weblate-2026.10/vcs.md#vcs) for details.

#### SEE ALSO
[Pushing changes from Weblate](https://docs.weblate.org/en/weblate-2026.10/admin/code-hosting.md#code-hosting-push-options)

<a id="component-vcs-params"></a>

### Version control parameters

Parameters tuning how Weblate interacts with the repository, for example
whether to force push or to open pull requests. Only parameters applicable to
the selected [Version control system](#component-vcs) are shown, see also [Version control parameters](https://docs.weblate.org/en/weblate-2026.10/vcs.md#vcs-params).

#### NOTE
The settings form silently drops parameters which do not apply to the
selected version control system, but the REST API rejects them. When
changing [Version control system](#component-vcs) over the API, clear or replace `vcs_params`
in the same request. The same applies to
[File format parameters](#component-file-format-params) and [File format](#component-file-format).

<a id="component-repo"></a>

### Source code repository

VCS repository used to pull changes.

#### SEE ALSO
See [Accessing repositories](https://docs.weblate.org/en/weblate-2026.10/vcs.md#vcs-repos) for more details on specifying URLs.

#### HINT
This can either be a real VCS URL or `weblate://project/component`
indicating that the repository should be shared with another component.
See [Weblate internal URLs](https://docs.weblate.org/en/weblate-2026.10/vcs.md#internal-urls) for more details.

<a id="component-push"></a>

### Repository push URL

Repository URL used for pushing. The behavior of this depends on
[Version control system](#component-vcs), and this is in more detail covered in
[Pushing changes from Weblate](https://docs.weblate.org/en/weblate-2026.10/admin/code-hosting.md#code-hosting-push-options).

For linked repositories, this is not used and setting from linked component applies.

#### SEE ALSO
See [Accessing repositories](https://docs.weblate.org/en/weblate-2026.10/vcs.md#vcs-repos) for more details on how to specify a repository URL and
[Pushing changes from Weblate](https://docs.weblate.org/en/weblate-2026.10/admin/code-hosting.md#code-hosting-push-options) for more details on pushing changes from
Weblate.

<a id="component-repoweb"></a>

### Repository browser

URL of repository browser used to display source files (location of used messages).
When empty, no such links will be generated. You can use [Template markup](#markup).

For example on GitHub, use something like:
`https://github.com/WeblateOrg/hello/blob/{{branch}}/{{filename}}#L{{line}}`

In case your paths are relative to different folder (path contains `..`), you
might want to strip leading directory by `parentdir` filter (see
[Template markup](#markup)):
`https://github.com/WeblateOrg/hello/blob/{{branch}}/{{filename|parentdir}}#L{{line}}`

#### SEE ALSO
* [`PROJECT_WEB_RESTRICT_PRIVATE`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-PROJECT_WEB_RESTRICT_PRIVATE)

<a id="component-repoweb-translations"></a>

### Repository browser for translations

URL of repository browser used to display translation files. When empty, the
[Repository browser](#component-repoweb) URL will be used as a fallback. This is useful when
source-code files and translation files are hosted in different repositories.
It applies to all translation files, including source-language, intermediate,
template, and target files. You can use [Template markup](#markup).

For example on GitHub, use something like:
`https://github.com/WeblateOrg/translations/blob/{{branch}}/{{filename}}#L{{line}}`

#### SEE ALSO
* [`PROJECT_WEB_RESTRICT_PRIVATE`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-PROJECT_WEB_RESTRICT_PRIVATE)

<a id="component-git-export"></a>

### Exported repository URL

URL where changes made by Weblate are exported. This is important when
[Continuous localization](https://docs.weblate.org/en/weblate-2026.10/admin/continuous.md#continuous-translation) is not used, or when there is a need to manually
merge changes. You can use [Git exporter](https://docs.weblate.org/en/weblate-2026.10/admin/optionals.md#git-exporter) to automate this for Git
repositories.

<a id="component-branch"></a>

### Repository branch

Which branch to checkout from the VCS, and where to look for translations.

For linked repositories using [Weblate internal URLs](https://docs.weblate.org/en/weblate-2026.10/vcs.md#internal-urls), this setting is controlled
by the linked component that owns the repository. Linked child components use
the value from that component.

<a id="component-push-branch"></a>

### Push branch

Branch for pushing changes, leave empty to use [Repository branch](#component-branch).

For linked repositories using [Weblate internal URLs](https://docs.weblate.org/en/weblate-2026.10/vcs.md#internal-urls), this setting is controlled
by the linked component that owns the repository. Linked child components use
the value from that component.

#### NOTE
This setting is ignored for Mercurial and Subversion.

For Gerrit, this selects the target branch for the review request. Leave it
empty to review against [Repository branch](#component-branch). Use the short branch name,
not `refs/heads/<branch>` or `refs/for/<branch>`. Gerrit push options
can be appended after `%` in either setting, for example
`main%topic=l10n`; Gerrit interprets them as the configured Weblate Gerrit
account.

#### SEE ALSO
[Pushing changes from Weblate](https://docs.weblate.org/en/weblate-2026.10/admin/code-hosting.md#code-hosting-push-options)

<a id="component-filemask"></a>

### File mask

Mask of files to translate, including path. It should include one “\*”
replacing language code (see [Language definitions](https://docs.weblate.org/en/weblate-2026.10/admin/languages.md#languages) for info on how this is
processed). In case your repository contains more than one translation
file (e.g. more gettext domains), you need to create a component for
each of them.

For example `po/*.po` or `locale/*/LC_MESSAGES/django.po`.

In case your filename contains special characters such as `[`, `]`, these need
to be escaped as `[[]` or `[]]`.

#### SEE ALSO
* [Bilingual and monolingual formats](https://docs.weblate.org/en/weblate-2026.10/formats.md#bimono)
* [What does mean “There are more files for the single language (en)”?](https://docs.weblate.org/en/weblate-2026.10/faq.md#faq-duplicate-files)

<a id="component-screenshot-filemask"></a>

### Screenshot file mask

This feature allows the discovery and updating of screenshots through screenshot file masks, using paths from the VCS repository.
This operates at the component level and necessitates the use of an asterisk “\*” to replace the screenshot file name.

Allowed formats are WebP, JPEG, PNG, APNG and GIF.

Note:

1. The file mask and screenshot file mask are not related. Configure them separately.
2. It is a manual job to link a discovered screenshot in a component to a specific translation key.

For example:

Let’s assume your VCS repository has a structure like this:

```text
component_A
└── docs
    ├── image1.png
    └── image2.jpg
```

For component_A, you want to allow discovery and updates of PNG screenshots.
You’d set the screenshot file mask for component_A as `component_A/docs/*.png`.
This means any PNG images under docs in component_A can be discovered and updated.
So, if you want to update `image1.png`, the new screenshot you provide should be named `image1.png`,
matching the existing `filename`, and stored under `component_A/docs/`.

For Android projects using Fastlane metadata, a source-language screenshot mask
can point to the metadata screenshot folder, for example
`fastlane/metadata/android/en-US/images/phoneScreenshots/*.png`. Weblate will
discover matching screenshots on repository update. The discovered screenshots
still need to be associated with source strings in the screenshot management
interface; use OCR or source string search there to assign them in bulk.

<a id="component-template"></a>

### Monolingual base language file

Base file containing string definitions for [Project and component creation](https://docs.weblate.org/en/weblate-2026.10/admin/admin.md#monolingual).

#### SEE ALSO
* [Bilingual and monolingual formats](https://docs.weblate.org/en/weblate-2026.10/formats.md#bimono)
* [What does mean “There are more files for the single language (en)”?](https://docs.weblate.org/en/weblate-2026.10/faq.md#faq-duplicate-files)

<a id="component-edit-template"></a>

### Edit base file

Whether to allow editing strings in the [Monolingual base language file](#component-template).

#### SEE ALSO
* [Bilingual and monolingual formats](https://docs.weblate.org/en/weblate-2026.10/formats.md#bimono)
* [Project and component creation](https://docs.weblate.org/en/weblate-2026.10/admin/admin.md#monolingual)
* [What does mean “There are more files for the single language (en)”?](https://docs.weblate.org/en/weblate-2026.10/faq.md#faq-duplicate-files)
* [Manage strings](#component-manage-units)

<a id="component-intermediate"></a>

### Intermediate language file

Intermediate language file for [Project and component creation](https://docs.weblate.org/en/weblate-2026.10/admin/admin.md#monolingual). In most cases this is a
translation file provided by developers and is used when creating actual source
strings.

When set, the source strings are based on this file, but all other languages
are based on [Monolingual base language file](#component-template). In case the string is not translated
into the source language, translating to other languages is prohibited. This
provides [Quality gateway for the source strings](https://docs.weblate.org/en/weblate-2026.10/workflows.md#source-quality-gateway).

The intermediate file can match an existing language file. While it is configured
as intermediate, Weblate does not list it as a regular language in the component
language list. Clearing this setting makes the file appear as a regular language
again on the next component scan.

Target strings can become read-only while the intermediate file is configured.
This happens for strings where the matching source string in the
[Monolingual base language file](#component-template) is not translated yet.

#### SEE ALSO
* [Quality gateway for the source strings](https://docs.weblate.org/en/weblate-2026.10/workflows.md#source-quality-gateway)
* [Bilingual and monolingual formats](https://docs.weblate.org/en/weblate-2026.10/formats.md#bimono)
* [What does mean “There are more files for the single language (en)”?](https://docs.weblate.org/en/weblate-2026.10/faq.md#faq-duplicate-files)

<a id="component-new-base"></a>

### Template for new translations

Base file used to generate new translations.

* Keep this field empty for most of the monoligual formats. Those are typically able to start from an empty file.
* Choose `.pot` file with GNU gettext PO files.
* Choose blank file without translations, if you have one.
* Choose [Monolingual base language file](#component-template) for monolingual formats that need a full set of keys present.
* Choose [Monolingual base language file](#component-template) for document translations.
* Choose any translation file for others.
* Template file can be the same as the base file in most cases.

#### HINT
In many monolingual formats Weblate starts with empty file by default. Use
this in case you want to have all strings present with empty value when
creating new translation.

#### SEE ALSO
* [Adding new translations](https://docs.weblate.org/en/weblate-2026.10/devel/translations.md#adding-translation)
* [Adding new translation](#component-new-lang)
* [Bilingual and monolingual formats](https://docs.weblate.org/en/weblate-2026.10/formats.md#bimono)
* [What does mean “There are more files for the single language (en)”?](https://docs.weblate.org/en/weblate-2026.10/faq.md#faq-duplicate-files)

<a id="component-file-format"></a>

### File format

Translation file format, see also [Localization file formats](https://docs.weblate.org/en/weblate-2026.10/formats.md#formats).

<a id="component-file-format-params"></a>

### File format parameters

Parameters used to configure how translation files are processed, see also [File format parameters](https://docs.weblate.org/en/weblate-2026.10/formats.md#file-format-params).

<a id="component-report-source-bugs"></a>

### Source string bug reporting address

Email address used for reporting upstream bugs. This address will also receive
notification about any source string comments made in Weblate.

With the [GNU gettext PO (Portable Object)](https://docs.weblate.org/en/weblate-2026.10/formats/gettext.md#gettext) format, this address is also saved by Weblate in the
*Report-Msgid-Bugs-To* header of the file.

<a id="component-hide-glossary-matches"></a>

### Do not show glossary matches

Hides the glossary panel and its matches in the translation editor for this component.
When enabled, glossary suggestions for this component are not computed, and the Glossary
panel (including its “Add term to glossary” action) is hidden in the editor.

#### NOTE
Glossary self-references are always excluded from matches even when this option is disabled.

#### SEE ALSO
* [Glossary](https://docs.weblate.org/en/weblate-2026.10/user/glossary.md#glossary)
* [Use as a glossary](#component-is-glossary)

<a id="component-contribute-project-tm"></a>

### Contribute to project translation memory

Controls whether translations from this component are added to the project
translation memory.

#### SEE ALSO
[Translation Memory](https://docs.weblate.org/en/weblate-2026.10/admin/memory.md)

<a id="component-allow-translation-propagation"></a>

### Allow translation propagation

You can turn off 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 make use of a translation more than once.

It’s usually a good idea to turn this off for monolingual translations, unless
you are using the same IDs across the whole project.

The default value can be changed by [`DEFAULT_TRANSLATION_PROPAGATION`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-DEFAULT_TRANSLATION_PROPAGATION).

#### SEE ALSO
[Keeping translations same across components](https://docs.weblate.org/en/weblate-2026.10/admin/continuous.md#translation-consistency)

<a id="component-enable-suggestions"></a>

### Enable suggestions

Whether translation suggestions are accepted for this component.

#### SEE ALSO
[Workflow customization](https://docs.weblate.org/en/weblate-2026.10/workflows.md#workflow-customization)

<a id="component-suggestion-voting"></a>

### Suggestion voting

Turns on vote casting for suggestions, see [Suggestion voting](https://docs.weblate.org/en/weblate-2026.10/admin/translating.md#voting).

#### SEE ALSO
[Workflow customization](https://docs.weblate.org/en/weblate-2026.10/workflows.md#workflow-customization)

<a id="component-suggestion-autoaccept"></a>

### Automatically accept suggestions

Automatically accept voted suggestions, see [Suggestion voting](https://docs.weblate.org/en/weblate-2026.10/admin/translating.md#voting).

#### SEE ALSO
[Workflow customization](https://docs.weblate.org/en/weblate-2026.10/workflows.md#workflow-customization)

<a id="component-check-flags"></a>

### Translation flags

Customization of quality checks and other Weblate behavior, see [Customizing behavior using flags](https://docs.weblate.org/en/weblate-2026.10/admin/checks.md#custom-checks).

Workspace, project, component, and translation flags are merged.

#### SEE ALSO
* [Settings inheritance](https://docs.weblate.org/en/weblate-2026.10/admin/workspaces.md#workspace-inherited-settings)

<a id="component-enforced-checks"></a>

### Enforced checks

List of checks which can not be dismissed.

This setting can be inherited from the workspace, project, or category (see
[Settings inheritance](https://docs.weblate.org/en/weblate-2026.10/admin/workspaces.md#workspace-inherited-settings)). When a new enforced check is inherited,
existing failing translations are reverted to the Needs editing
state in the background.

#### SEE ALSO
[Enforcing checks](https://docs.weblate.org/en/weblate-2026.10/admin/checks.md#enforcing-checks)

<a id="component-license"></a>

### Translation license

License of the translation (does not need to be the same as the source code license).

#### SEE ALSO
* [Settings inheritance](https://docs.weblate.org/en/weblate-2026.10/admin/workspaces.md#workspace-inherited-settings)

<a id="component-agreement"></a>

### Contributor license agreement

Contributor license agreement which needs to be approved before a user can
translate this component.

Markdown can be used for text formatting or inserting links.

#### SEE ALSO
* [Settings inheritance](https://docs.weblate.org/en/weblate-2026.10/admin/workspaces.md#workspace-inherited-settings)

<a id="component-new-lang"></a>

### Adding new translation

How to handle requests for creation of new languages. Available options:

Contact maintainers
: User can select desired language and the project maintainers will receive a
  notification about this. It is up to them to add (or not) the language to the
  repository.

Point to translation instructions URL
: User is presented a link to page which describes process of starting new
  translations. Use this in case more formal process is desired (for example
  forming a team of people before starting actual translation).

Create new language file
: User can select language and Weblate automatically creates the file for it
  and translation can begin.

Create existing project languages; contact maintainers for new languages
: Users can create translations for languages already used as target languages
  in another non-glossary component in the project. Other languages are requested
  from maintainers, who approve them by creating the first target translation.
  See [Limiting translation languages](https://docs.weblate.org/en/weblate-2026.10/workflows.md#workflow-language-restrictions) for eligibility and API behavior.

Disable adding new translations
: There will be no option for user to start new translation.

#### HINT
The project admins can add new translations even if it is disabled here when
it is possible (either [Template for new translations](#component-new-base) or the file format supports
starting from an empty file).

#### SEE ALSO
* [Settings inheritance](https://docs.weblate.org/en/weblate-2026.10/admin/workspaces.md#workspace-inherited-settings)
* [Adding new translations](https://docs.weblate.org/en/weblate-2026.10/devel/translations.md#adding-translation)
* [Template for new translations](#component-new-base)
* [Limiting translation languages](https://docs.weblate.org/en/weblate-2026.10/workflows.md#workflow-language-restrictions)

<a id="component-manage-units"></a>

### Manage strings

#### Versionadded
Added in version 4.5.

Configures whether users in Weblate will be allowed to add new strings and
remove existing ones. It also enables [editing source strings and keys](https://docs.weblate.org/en/weblate-2026.10/user/translating.md#edit-source) in supported formats. Adjust this to match your localization
workflow — how strings are introduced and maintained.

For bilingual formats, the strings are typically extracted from the source code
(for example by using **xgettext**) and adding new strings in Weblate
should be disabled (they would be discarded next time you update the
translation files). In Weblate you can manage strings for every translation and
it does not enforce the strings in all translations to be consistent.

For monolingual formats, the strings are managed only on source language and
are automatically added or removed in the translations. The strings appear in
the translation files once they are translated.

#### HINT
You might want to turn on [Edit base file](#component-edit-template) together with
Manage strings for monolingual formats.

#### SEE ALSO
* [Bilingual and monolingual formats](https://docs.weblate.org/en/weblate-2026.10/formats.md#bimono)
* [Adding new strings](https://docs.weblate.org/en/weblate-2026.10/devel/integration.md#adding-new-strings)
* [`POST /api/translations/(string:project)/(string:component)/(string:language)/units/`](https://docs.weblate.org/en/weblate-2026.10/api.md#post--api-translations-(string-project)-(string-component)-(string-language)-units-)

<a id="component-language-code-style"></a>

### Language code style

Customize language code used to generate the filename for translations
created by Weblate.

#### NOTE
Weblate recognizes any of the language codes when parsing translation files,
following settings only influences how new files are created.

Default based on the file format
: Dependent on file format, for most of them POSIX is used.

POSIX style using underscore as a separator
: Typically used by gettext and related tools, produces language codes like
  `pt_BR`.

POSIX style using underscore as a separator, lower cased
: Typically used by gettext and related tools, produces language codes like
  `pt_BR`.

POSIX style using underscore as a separator, including country code
: POSIX style language code including the country code even when not necessary
  (for example `cs_CZ`).

POSIX style using underscore as a separator, including country code, lower cased
: POSIX style language code including the country code even when not necessary (lowercase)
  (for example `cs_cz`).

BCP style using hyphen as a separator
: Typically used on web platforms, produces language codes like
  `pt-BR`.

BCP style using hyphen as a separator, including country code
: BCP style language code including the country code even when not necessary
  (for example `cs-CZ`).

BCP style using hyphen as a separator, legacy language codes
: Uses legacy codes for Chinese and BCP style notation.

BCP style using hyphen as a separator, lower cased
: BCP style notation, all in lower case (for example `cs-cz`).

Apple App Store metadata style
: Style suitable for uploading metadata to Apple App Store.

Google Play metadata style
: Style suitable for uploading metadata to Google Play Store.

Android style
: Only used in Android apps, produces language codes like
  `pt-rBR`.

Linux style
: Locales as used by Linux, uses legacy codes for Chinese and POSIX style notation.

Linux style, lower cased
: Locales as used by Linux, uses legacy codes for Chinese and POSIX style notation. Lower cased.

#### SEE ALSO
* [Settings inheritance](https://docs.weblate.org/en/weblate-2026.10/admin/workspaces.md#workspace-inherited-settings)
* [Adding new translations](https://docs.weblate.org/en/weblate-2026.10/devel/translations.md#adding-translation)
* [Language code](https://docs.weblate.org/en/weblate-2026.10/admin/languages.md#language-code)
* [Parsing language codes](https://docs.weblate.org/en/weblate-2026.10/admin/languages.md#language-parsing-codes)
* [Language aliases](#project-language-aliases)

<a id="component-merge-style"></a>

### Merge style

You can configure how updates from the upstream repository are handled.
The actual implementation depends on VCS, see [Version control integration](https://docs.weblate.org/en/weblate-2026.10/vcs.md).

Rebase
: Rebases Weblate commits on top of upstream repository on update. This
  provides clean history without extra merge commits.
  <br/>
  Rebasing can cause you trouble in case of complicated merges, so carefully
  consider whether or not you want to enable them.
  <br/>
  You might need to turn on [force pushing](https://docs.weblate.org/en/weblate-2026.10/vcs.md#vcs-git-force-push) in
  [Version control parameters](#component-vcs-params), especially when pushing to a different branch.

Merge
: Upstream repository changes are merged into Weblate one. This setting utilizes
  fast-forward when possible. This is the safest way, but might produce a lot
  of merge commits.

Merge without fast-forward
: Upstream repository changes are merged into Weblate one with doing a merge
  commit every time (even when fast-forward would be possible). Every Weblate
  change will appear as a merge commit in Weblate repository.

The default value can be changed by [`DEFAULT_MERGE_STYLE`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-DEFAULT_MERGE_STYLE).

<a id="component-commit-message"></a>

<a id="component-add-message"></a>

<a id="component-delete-message"></a>

<a id="component-merge-message"></a>

<a id="component-addon-message"></a>

<a id="component-pull-message"></a>

### Commit, add, delete, merge, add-on, and merge request messages

Message used when committing a translation, see [Template markup](#markup).

The default value can be changed by [`DEFAULT_ADD_MESSAGE`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-DEFAULT_ADD_MESSAGE),
[`DEFAULT_ADDON_MESSAGE`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-DEFAULT_ADDON_MESSAGE), [`DEFAULT_COMMIT_MESSAGE`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-DEFAULT_COMMIT_MESSAGE),
[`DEFAULT_DELETE_MESSAGE`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-DEFAULT_DELETE_MESSAGE), [`DEFAULT_MERGE_MESSAGE`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-DEFAULT_MERGE_MESSAGE),
[`DEFAULT_PULL_MESSAGE`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-DEFAULT_PULL_MESSAGE).

The built-in defaults follow Conventional Commits and include
Weblate links where available. Use Restore site default next to a
message editor to restore the current installation default for that message;
for inherited values, this also disables inheritance for that message.

#### SEE ALSO
* [Settings inheritance](https://docs.weblate.org/en/weblate-2026.10/admin/workspaces.md#workspace-inherited-settings)

<a id="component-push-on-commit"></a>

### Push on commit

Whether committed changes should be automatically pushed to the upstream
repository. When enabled, the push is initiated once Weblate commits
changes to its underlying repository (see [Lazy commits](https://docs.weblate.org/en/weblate-2026.10/admin/continuous.md#lazy-commit)). To actually
enable pushing Repository push URL has to be configured as
well.

For linked repositories using [Weblate internal URLs](https://docs.weblate.org/en/weblate-2026.10/vcs.md#internal-urls), this setting is controlled
by the linked component that owns the repository. Linked child components use
the value from that component.

<a id="component-commit-pending-age"></a>

### Age of changes to commit

Sets how old (in hours) changes have to be before they are committed by
background task or the [`commit_pending`](https://docs.weblate.org/en/weblate-2026.10/admin/management.md#weblate-admin-commit_pending) management command. All
changes in a component are committed once there is at least one change
older than this period.

For linked repositories using [Weblate internal URLs](https://docs.weblate.org/en/weblate-2026.10/vcs.md#internal-urls), this setting is controlled
by the linked component that owns the repository. Linked child components use
the value from that component.

The default value can be changed by [`COMMIT_PENDING_HOURS`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-COMMIT_PENDING_HOURS).

#### HINT
There are other situations where pending changes might be committed, see
[Lazy commits](https://docs.weblate.org/en/weblate-2026.10/admin/continuous.md#lazy-commit).

<a id="component-auto-lock-error"></a>

### Lock on error

Locks the component (and linked components, see [Weblate internal URLs](https://docs.weblate.org/en/weblate-2026.10/vcs.md#internal-urls))
upon the first failed push or merge into its upstream repository, or pull from it.
This avoids adding another conflicts, which would have to be resolved manually.

The component will be automatically unlocked once there are no repository
errors left.

For linked repositories using [Weblate internal URLs](https://docs.weblate.org/en/weblate-2026.10/vcs.md#internal-urls), this setting is controlled
by the linked component that owns the repository. Linked child components use
the value from that component.

<a id="component-source-language"></a>

### Source language

Language used for source strings. Change this if you are translating from
something else than English.

#### HINT
In case you are translating bilingual files from English, but want to be
able to do fixes in the English translation as well, choose
English (Developer) as a source language to avoid conflict
between the name of the source language and the existing translation.

For monolingual translations, you can use intermediate translation in this
case, see [Intermediate language file](#component-intermediate).

<a id="component-language-regex"></a>

### Language filter

Regular expression used to filter the translation when scanning for file mask.
It can be used to limit the list of languages managed by Weblate.

The filter also applies when creating a new translation file. In this case,
it checks the language code generated according to
[Language code style](#component-language-code-style).

#### NOTE
You need to list language codes as they appear in the filename.

Some examples of filtering:

| Filter description           | Regular expression   |
|------------------------------|----------------------|
| Selected languages only      | `^(cs|de|es)$`       |
| Exclude languages            | `^(?!(it|fr)$).+$`   |
| Filter two letter codes only | `^..$`               |
| Exclude non language files   | `^(?!(blank)$).+$`   |
| Include all files (default)  | `^[^.]+$`            |

#### SEE ALSO
[Limiting translation languages](https://docs.weblate.org/en/weblate-2026.10/workflows.md#workflow-language-restrictions)

<a id="component-key-filter"></a>

### Key filter

#### Versionadded
Added in version 5.8.

A regular expression that is used to filter units by their keys. It displays only
those units whose keys match the regular expression that was set
as the value of this field.

Some examples of filtering:

| Filter description           | Regular expression       |
|------------------------------|--------------------------|
| Selected keys only           | `^(one|two|other)$`      |
| Exclude app store changelogs | `^(?!changelogs/.*$).+$` |
| Filter prefixed strings      | `^translatable`          |

#### NOTE
This filter is only available for components with monolingual file formats.

<a id="component-variant-regex"></a>

### Variants regular expression

Regular expression used to determine the variants of a string, see
[String variants](https://docs.weblate.org/en/weblate-2026.10/devel/translations.md#variants).

#### NOTE
Most of the fields can be edited by project owners or administrators, in the
Weblate interface.

#### SEE ALSO
* [Does Weblate support other VCSes than Git and Mercurial?](https://docs.weblate.org/en/weblate-2026.10/faq.md#faq-vcs)
* [Translation component diagnostics](https://docs.weblate.org/en/weblate-2026.10/devel/alerts.md#alerts)

<a id="component-secondary-language"></a>

### Secondary language

#### Versionadded
Added in version 5.11.

Additional language to show together with the source language while translating.

Optionally, it can be also used as a source for the machine translation.

#### NOTE
This setting can be inherited from the project.

#### SEE ALSO
* [Settings inheritance](https://docs.weblate.org/en/weblate-2026.10/admin/workspaces.md#workspace-inherited-settings)
* [Secondary languages](https://docs.weblate.org/en/weblate-2026.10/user/profile.md#secondary-languages)
* [Source strings for the machine translation](https://docs.weblate.org/en/weblate-2026.10/admin/machine.md#mt-sources)

<a id="component-priority"></a>

### Priority

Components with higher priority are offered first to translators.

#### Versionchanged
Changed in version 4.15: This now also affects ordering of matched glossary terms.

<a id="component-restricted"></a>

### Restricted access

#### NOTE
On Hosted Weblate, this requires a billing plan which permits private
projects.

By default the component is visible to anybody who has access to the project,
even if the person can not perform any changes in the component. This makes it
easier to keep translation consistency within the project.

Restricting access at a component, or component-list level takes over
access permission to a component, regardless of project-level permissions.
You will have to grant access to it explicitly. This can be done through
granting access to a new user group and putting users in it,
or using the default custom or private access control groups.

The default value can be changed in [`DEFAULT_RESTRICTED_COMPONENT`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-DEFAULT_RESTRICTED_COMPONENT).

Restricted access controls direct access to component pages, translations,
files, APIs, and translation memory. It is not an isolation boundary for
administrative capabilities whose documented scope includes the component. For
example, project backups contain all project components, and project- or
category-level add-ons process restricted components in their configured scope.
Component add-ons can also use cross-component inputs documented by the add-on.
Grant the corresponding management permissions only to users trusted with
these effects. See [Scope of teams](https://docs.weblate.org/en/weblate-2026.10/admin/access.md#perm-check) and [Add-ons](https://docs.weblate.org/en/weblate-2026.10/admin/addons.md#addons).

#### HINT
This applies to project admins as well — please ensure you will not
lose access to the component after toggling the status.

Restricted components do not contribute new entries to [Shared translation memory](https://docs.weblate.org/en/weblate-2026.10/admin/memory.md#shared-tm).
Project and workspace translation memory entries attributed to an existing
restricted component follow the component restriction. Unattributed legacy
entries follow the access rules of their translation memory scope. On Hosted
Weblate, shared translation memory and restricted components can not be enabled
in the same project.

<a id="component-links"></a>

### Share in projects

You can choose additional projects where the component will be visible.
Useful for shared libraries which you use in several projects.

#### NOTE
Sharing a component doesn’t change its access control. It only makes it
visible when browsing other projects. Users still need access to the
actual component to browse or translate it.

<a id="component-is-glossary"></a>

### Use as a glossary

#### Versionadded
Added in version 4.5.

Allows using this component as a glossary. Use when you want to manage
terminology separately from normal translations.

Glossaries are best for:

- Ensuring consistent use of terms (e.g., UI labels, product names).
- Sharing preferred translations across multiple components or projects.
- Supporting translators with definitions and context.

#### NOTE
Glossaries are not for regular translations—they are for managing terms only.

Weblate automatically adds missing glossary languages for languages used in the
project. See [Language files and synchronization](https://docs.weblate.org/en/weblate-2026.10/user/glossary.md#glossary-language-sync) for details.

You can configure how it will be listed using [Glossary color](#component-glossary-color).

The glossary will be accessible in all projects defined by [Share in projects](#component-links).

It is recommended to enable [Manage strings](#component-manage-units) on glossaries in
order to allow adding new words to them.

#### SEE ALSO
[Glossary](https://docs.weblate.org/en/weblate-2026.10/user/glossary.md#glossary)

<a id="component-glossary-color"></a>

### Glossary color

Color used when displaying terms from this glossary. Useful to distinguish glossaries when using more of them.

#### SEE ALSO
[Glossary](https://docs.weblate.org/en/weblate-2026.10/user/glossary.md#glossary)

<a id="category"></a>

## Category

Categories are there to give structure to components within a project. You can
nest them to achieve a more complex structure.

<a id="category-settings"></a>

### Category settings

Categories can override the same inherited settings as projects and components,
including translation license, contributor agreement, adding new translations,
secondary language, translation flags, and commit messages.

Nested categories inherit from their parent category by default. Top-level
categories inherit from the project. Components in a category inherit from that
category by default.

#### SEE ALSO
* [Settings inheritance](https://docs.weblate.org/en/weblate-2026.10/admin/workspaces.md#workspace-inherited-settings)
* [Translation license](#project-license)
* [Translation license](#component-license)

<a id="markup"></a>

## Template markup

Weblate uses simple markup language in several places where text rendering is
needed. It is based on [The Django template language](https://docs.djangoproject.com/en/stable/ref/templates/language/), so it can be quite
powerful.

Currently it is used in:

* Commit message formatting, see [Component configuration](#component)
* Several add-ons
  : * [Component discovery](https://docs.weblate.org/en/weblate-2026.10/admin/addons.md#addon-weblate-discovery-discovery)
    * [Statistics generator](https://docs.weblate.org/en/weblate-2026.10/admin/addons.md#addon-weblate-generate-generate)
    * [Executing scripts from add-on](https://docs.weblate.org/en/weblate-2026.10/admin/addons.md#addon-script)

The following variables are available in the component 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

`{{ filename }}`
: Translation filename

`{{ stats }}`
: Translation stats, this has further attributes, examples below.

`{{ 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 checks

`{{ stats.allchecks_percent }}`
: Percent of strings with failing checks

`{{ author }}`
: Author of current commit, available only in the commit scope.

`{{ addon_name }}`
: Name of currently executed add-on, available only in the add-on commit message.

The [Statistics generator](https://docs.weblate.org/en/weblate-2026.10/admin/addons.md#addon-weblate-generate-generate) additionally
supports a collection of languages and their statistics in component mode.
Use the `json` or `python` filter to serialize template values into JSON or
Python literals, including the necessary quoting and escaping.

The following variables are available in the repository browser or editor templates:

`{{branch}}`
: current branch

`{{line}}`
: line in file

`{{filename}}`
: filename, you can also strip leading parts using the `parentdir` filter, for example `{{filename|parentdir}}`

#### HINT
In some places additional variables can be available, see [Component discovery](https://docs.weblate.org/en/weblate-2026.10/admin/addons.md#addon-weblate-discovery-discovery).

You can combine them with filters:

```django
{{ component|title }}
```

You can use conditions:

```django
{% if stats.translated_percent > 80 %}Well translated!{% endif %}
```

There is additional tag available for replacing characters:

```django
{% replace component "-" " " %}
```

You can combine it with filters:

```django
{% replace component|capfirst "-" " " %}
```

There are also additional filter to manipulate with filenames:

```django
Directory of a file: {{ filename|dirname }}
File without extension: {{ filename|stripext }}
File in parent dir: {{ filename|parentdir }}
It can be used multiple times: {{ filename|parentdir|parentdir }}
```

…and other Django template features.

<a id="import-speed"></a>

## 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:

### Optimize configuration

The default configuration is useful for testing and debugging Weblate, while
for a production setup, you should do some adjustments. Many of them have quite
a big impact on performance. Please check [Production setup](https://docs.weblate.org/en/weblate-2026.10/admin/install.md#production) for more details,
especially:

* Configure Celery for executing background tasks (see [Background tasks using Celery](https://docs.weblate.org/en/weblate-2026.10/admin/install.md#celery))
* [Configure cache](https://docs.weblate.org/en/weblate-2026.10/admin/install.md#production-cache)
* [Use a powerful database engine](https://docs.weblate.org/en/weblate-2026.10/admin/install.md#production-database)
* [Disable debug mode](https://docs.weblate.org/en/weblate-2026.10/admin/install.md#production-debug)

### Check resource limits

If you are importing huge translations or repositories, you might be hit by
resource limitations of your server.

* Check the amount of free memory, having translation files cached by the operating system will greatly improve performance.
* Disk operations might be bottleneck if there is a lot of strings to process—the disk is pushed by both Weblate and the database.
* Additional CPU cores might help improve performance of background tasks (see [Background tasks using Celery](https://docs.weblate.org/en/weblate-2026.10/admin/install.md#celery)).

### Disable unneeded checks

Some quality checks can be quite expensive, and if not needed,
can save you some time during import if omitted. See [`CHECK_LIST`](https://docs.weblate.org/en/weblate-2026.10/admin/config.md#std-setting-CHECK_LIST) for
info on configuration.

<a id="autocreate"></a>

## Automatic creation of components

In case your project has dozen of translation files (e.g. for different
gettext domains, or parts of Android apps), you might want to import them
automatically. This can either be achieved from the command-line by using
[`import_project`](https://docs.weblate.org/en/weblate-2026.10/admin/management.md#weblate-admin-import_project) or [`import_json`](https://docs.weblate.org/en/weblate-2026.10/admin/management.md#weblate-admin-import_json), or by installing the
[Component discovery](https://docs.weblate.org/en/weblate-2026.10/admin/addons.md#addon-weblate-discovery-discovery) add-on.

To use the add-on, you first need to create a component for one translation
file (choose the one that is the least likely to be renamed or removed in future),
and install the add-on on this component.

For the management commands, you need to create a project which will contain all
components and then run [`import_project`](https://docs.weblate.org/en/weblate-2026.10/admin/management.md#weblate-admin-import_project) or
[`import_json`](https://docs.weblate.org/en/weblate-2026.10/admin/management.md#weblate-admin-import_json).

#### SEE ALSO
* [Management commands](https://docs.weblate.org/en/weblate-2026.10/admin/management.md#manage)
* [Component discovery](https://docs.weblate.org/en/weblate-2026.10/admin/addons.md#addon-weblate-discovery-discovery)
