Skip to content

Commit 87f612b

Browse files
authored
docs: add migration guide (#17361)
It is a step by step guide for migrating translations from other platforms with links to the documentation to make the onboarding easier.
1 parent 0f4c557 commit 87f612b

File tree

6 files changed

+292
-7
lines changed

6 files changed

+292
-7
lines changed

docs/admin/config.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -565,7 +565,7 @@ should be turned on for new users. Defaults to ``True``.
565565

566566
.. seealso::
567567

568-
:ref:`subscriptions`
568+
:ref:`notifications`
569569

570570
.. setting:: DEFAULT_RESTRICTED_COMPONENT
571571

docs/changes.rst

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ Weblate 5.15.1
88
.. rubric:: Improvements
99

1010
* Updated list of OpenAI models.
11+
* Added :doc:`/devel/migration` guide to help users migrate from other localization platforms.
1112
* Gracefully handle unreachable authentication providers.
1213

1314
.. rubric:: Bug fixes
@@ -1135,7 +1136,7 @@ Weblate 5.7
11351136
* :ref:`2fa` can be enforced at the team or project level.
11361137
* :ref:`adding-new-strings` can now create plural strings in the user interface.
11371138
* :ref:`labels` now include description to explain them.
1138-
* New :ref:`subscriptions` for completed translation and component.
1139+
* New :ref:`notifications` for completed translation and component.
11391140
* :ref:`mt-openai` now supports custom models and URLs and offers rephrasing of existing strings.
11401141
* :ref:`mt-cyrtranslit` automatic suggestion service.
11411142

@@ -1232,7 +1233,7 @@ Weblate 5.6
12321233

12331234
.. rubric:: Improvements
12341235

1235-
* :ref:`subscriptions` now include strings which need updating.
1236+
* :ref:`notifications` now include strings which need updating.
12361237
* Improved compatibility with password managers.
12371238
* Improved tracking of uploaded changes.
12381239
* Gracefully handle temporary machine translation errors in automatic suggestions.
@@ -1497,7 +1498,7 @@ Weblate 5.4
14971498

14981499
* Better logging in :wladmin:`createadmin`.
14991500
* :ref:`addon-weblate.discovery.discovery` now reports skipped entries.
1500-
* Adding string in a repository triggers :ref:`subscriptions`.
1501+
* Adding string in a repository triggers :ref:`notifications`.
15011502
* :ref:`mt-openai` better handles batch translations and glossaries.
15021503
* :ref:`mt-libretranslate` better handles batch translations.
15031504
* Text variant of notification e-mails now properly indicate changed strings.
@@ -1623,7 +1624,7 @@ Weblate 5.2
16231624
* :ref:`addon-weblate.gettext.mo` can optionally include strings needing editing.
16241625
* Use :http:header:`Accept-Language` to order translations for unauthenticated users.
16251626
* Add option to directly approve suggestions with :ref:`reviews` workflow.
1626-
* One-click removal of project or component :ref:`subscriptions`.
1627+
* One-click removal of project or component :ref:`notifications`.
16271628
* :ref:`api-statistics` now includes character and word counts for more string states.
16281629

16291630
.. rubric:: Bug fixes

docs/devel/migration.rst

Lines changed: 283 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,283 @@
1+
Migrating to Weblate
2+
====================
3+
4+
Are you using a different localization platform and considering switching to Weblate?
5+
This guide provides a quick, step-by-step process to help you migrate your translation
6+
project from platforms like Transifex, Crowdin, Lokalise, or similar services.
7+
8+
Weblate is designed around continuous localization with Git integration at its core,
9+
making it ideal for teams that want to keep translations close to their development workflow.
10+
11+
.. seealso::
12+
13+
* :doc:`starting` for choosing the right internationalization framework
14+
* :doc:`integration` for detailed integration options
15+
* :doc:`/admin/continuous` for setting up automated workflows
16+
17+
Prerequisites
18+
-------------
19+
20+
Before starting your migration, ensure you have:
21+
22+
**On your localization platform:**
23+
24+
* Access to export your translation files
25+
* List of translators and their roles/permissions
26+
* Understanding of your current workflow (review process, automation, etc.)
27+
28+
**For Weblate:**
29+
30+
* A Weblate instance (either `Hosted Weblate <https://hosted.weblate.org/>`_ or :doc:`self-hosted </admin/install>`)
31+
* Admin or project creation permissions on your Weblate instance
32+
33+
Prepare your translation files
34+
------------------------------
35+
36+
Export translations from your current platform
37+
++++++++++++++++++++++++++++++++++++++++++++++
38+
39+
Most localization platforms allow you to export all translations at once:
40+
41+
* **Transifex**: Use their CLI tool or download translations from the web interface
42+
* **Crowdin**: Export all translations as a ZIP file from project settings
43+
* **Lokalise**: Use the bulk export feature
44+
* **Phrase**: Download all locales from the project dashboard
45+
46+
.. hint::
47+
48+
Keep your translation files in the format native to your
49+
internationalization framework (PO, XLIFF, JSON, etc.) rather than
50+
converting them. Weblate supports :ref:`many formats <formats>`.
51+
52+
Commit translations to your Git repository
53+
++++++++++++++++++++++++++++++++++++++++++
54+
55+
.. hint::
56+
57+
If you would rather not store translations in an external Git repository,
58+
you can skip this step and use the :guilabel:`Upload translation files`
59+
option when creating a component.
60+
61+
If your translations aren't already in Git:
62+
63+
1. Create a Git repository or use your existing project repository
64+
2. Organize translation files following your project structure
65+
3. Commit and push the files to your Git hosting service (GitHub, GitLab, Bitbucket, etc.)
66+
67+
.. code-block:: shell
68+
69+
git add locales/
70+
git commit -m "Add translation files for Weblate migration"
71+
git push origin main
72+
73+
.. seealso::
74+
75+
* :ref:`continuous-translation` for optimal repository structure
76+
* :doc:`/vcs` for supported version control systems
77+
78+
Import your project into Weblate
79+
--------------------------------
80+
81+
Create a new project
82+
++++++++++++++++++++
83+
84+
1. Navigate to your Weblate instance.
85+
2. Click :guilabel:`Add new translation project` in the **+** menu.
86+
3. Fill in your project details:
87+
88+
* **Project name**: Your application or project name
89+
* **URL slug**: Short identifier (e.g., ``myapp``)
90+
* **Project website**: Your project homepage (optional)
91+
92+
.. image:: /screenshots/user-add-project.webp
93+
94+
.. seealso::
95+
96+
:ref:`adding-projects` for detailed project creation instructions
97+
98+
Add a component from your Git repository
99+
++++++++++++++++++++++++++++++++++++++++
100+
101+
1. After creating the project, click :guilabel:`Add new translation component`
102+
2. Select :guilabel:`From version control`
103+
3. Configure your component:
104+
105+
* **Component name**: e.g., "Application strings", "Website", "Documentation"
106+
* **Repository URL**: Your Git repository URL (HTTPS or SSH)
107+
* **Repository branch**: Optional: Specify repository branch (Weblate automatically detects the default branch if not specified)
108+
109+
4. Weblate will automatically detect:
110+
111+
* Translation file format
112+
* Available languages
113+
* Source language
114+
115+
5. Review and confirm the detected settings
116+
117+
.. image:: /screenshots/user-add-component-discovery.webp
118+
119+
.. hint::
120+
121+
For repositories with multiple translation components (e.g., separate files
122+
for backend, frontend, documentation), create a separate Weblate component
123+
for each.
124+
125+
You can speed this up using :guilabel:`From existing component` for shared
126+
repositories or :ref:`addon-weblate.discovery.discovery` to automatically
127+
create them.
128+
129+
.. seealso::
130+
131+
* :ref:`component` for all configuration options
132+
* :ref:`bimono` for understanding monolingual vs. bilingual formats
133+
* :ref:`addon-weblate.discovery.discovery`
134+
135+
Configure your workflow
136+
-----------------------
137+
138+
Set up access control
139+
+++++++++++++++++++++
140+
141+
Choose your project's visibility and access level:
142+
143+
1. Go to your project settings: :guilabel:`Operations` → :guilabel:`Settings` → :guilabel:`Access` tab
144+
2. Select the appropriate :ref:`access control <acl>`:
145+
146+
* **Public**: Open-source projects, anyone can contribute
147+
* **Protected**: Visible to all, but only invited users can translate
148+
* **Private**: Only invited users can view and translate
149+
150+
.. image:: /screenshots/project-access.webp
151+
152+
.. seealso::
153+
154+
:ref:`manage-acl` for detailed access control configuration
155+
156+
Set up continuous localization
157+
++++++++++++++++++++++++++++++
158+
159+
Enable automatic updates and commits:
160+
161+
1. Configure repository integration:
162+
163+
* **Pull changes**: Set up a :ref:`webhook <update-vcs>` so Weblate updates when your source code changes
164+
* **Push changes**: Configure :ref:`push-changes` so translations are committed back to your repository
165+
166+
2. Enable automatic actions in component settings:
167+
168+
* **Push on commit**: Automatically push translations to your repository
169+
* **Commit interval**: Set how often pending translations are committed (e.g., every 24 hours)
170+
171+
.. seealso::
172+
173+
:ref:`continuous-translation` for complete workflow automation
174+
175+
Configure quality checks and workflows
176+
++++++++++++++++++++++++++++++++++++++
177+
178+
Customize translation quality controls:
179+
180+
1. **Enable checks**: Review :ref:`checks` and enable any opt-in quality checks you need.
181+
2. **Set up review workflow**: Enable :ref:`project-translation_review` if you want an approval process.
182+
3. **Add enforced checks**: Configure which quality checks should block translations.
183+
184+
Optional: Enable add-ons
185+
++++++++++++++++++++++++
186+
187+
Weblate offers :ref:`addons` to automate common tasks:
188+
189+
* :ref:`addon-weblate.gettext.msgmerge`: Automatically update PO files from POT templates
190+
* :ref:`addon-weblate.cleanup.generic`: Remove unused translation strings
191+
* :ref:`addon-weblate.git.squash`: Squash commits before pushing to your repository
192+
* :ref:`addon-weblate.discovery.discovery`: Automatically discover new translation files
193+
194+
.. seealso::
195+
196+
:doc:`/admin/addons` for all available add-ons
197+
198+
Test and verify
199+
---------------
200+
201+
Before announcing the migration to your translators:
202+
203+
1. **Test the workflow**:
204+
205+
* Make a test translation
206+
* Verify it appears in your Git repository
207+
* Test pulling changes from your repository into Weblate
208+
209+
2. **Import any existing translation memory** (optional):
210+
211+
* Use :ref:`translation-memory` to import previous translations
212+
* This helps with consistency and speeds up translation
213+
214+
3. **Configure notifications**:
215+
216+
* Set up :ref:`notifications` for translation events
217+
* Configure repository :ref:`hooks` for your Git hosting service
218+
219+
.. seealso::
220+
221+
:doc:`/admin/memory` for translation memory management
222+
223+
Invite and manage users
224+
-----------------------
225+
226+
Invite translators
227+
++++++++++++++++++
228+
229+
For **Protected** and **Private** projects:
230+
231+
1. Navigate to :guilabel:`Operations` → :guilabel:`Users` in your project
232+
2. Use :guilabel:`Add user` to invite translators
233+
3. Assign them to appropriate teams:
234+
235+
* **Translators**: Can translate strings
236+
* **Reviewers**: Can review and approve translations
237+
* **Managers**: Can manage project settings
238+
239+
For **Public** projects, users can start contributing immediately after signing up.
240+
241+
.. tip::
242+
243+
Send your translators a welcome message with:
244+
245+
* Link to your project on Weblate
246+
* Overview of any project-specific terminology or style guides
247+
* Information about your review process
248+
249+
.. seealso::
250+
251+
* :ref:`manage-acl` for team management
252+
* :doc:`/admin/access` for advanced permission configuration
253+
254+
255+
Next steps
256+
----------
257+
258+
After completing the migration:
259+
260+
* **Announce to translators**: Let your translation team know about the migration with clear instructions
261+
* **Monitor initial usage**: Watch for any issues during the first few days
262+
* **Gather feedback**: Ask translators about their experience compared to the previous platform
263+
* **Optimize workflow**: Adjust settings based on your team's needs
264+
* **Remove previous platform**: Once the migration is completed, remember to revoke access granted to the previous platform.
265+
266+
.. tip::
267+
268+
During migration, you can run both platforms in parallel for a transition period
269+
to ensure everything works as expected before fully switching over.
270+
271+
Additional resources
272+
--------------------
273+
274+
* :doc:`integration` - Detailed integration patterns
275+
* :doc:`/workflows` - Different workflow configurations
276+
* :doc:`/admin/continuous` - Automated continuous localization
277+
* :doc:`/api` - API for automation and integrations
278+
* :doc:`/devel/reporting` - Setting up translation progress reports
279+
* :doc:`/faq` - Frequently asked questions
280+
281+
.. hint::
282+
283+
Join the `Weblate community <https://weblate.org/support/>`_ if you need help during your migration. The community is active and helpful!

docs/faq.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ How do I review the translations of others?
317317
---------------------------------------------
318318

319319
- There are several review based workflows available in Weblate, see :ref:`workflows`.
320-
- You can subscribe to any changes made in :ref:`subscriptions` and then check
320+
- You can subscribe to any changes made in :ref:`notifications` and then check
321321
others contributions as they come in by e-mail.
322322
- There is a review tool available at the bottom of the translation view, where you can
323323
choose to browse translations made by others since a given date.

docs/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ Learn more about :ref:`contributing`.
7474
:hidden:
7575

7676
devel/starting
77+
devel/migration
7778
devel/integration
7879
devel/gettext
7980
devel/mobile

docs/user/profile.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ Special characters
156156

157157
Additional special characters to include in the :ref:`visual-keyboard`.
158158

159-
.. _subscriptions:
159+
.. _notifications:
160160

161161
Notifications
162162
-------------

0 commit comments

Comments
 (0)