与特定版本相关的指示
从 2.x 升级
如果从 2.x 发布版本升级,首先总是升级到 3.0.1,然后继续在 3.x 系列中升级。跳过这步的升级不被支持,并且会中断。
Weblate 3.0 文档中关于从 2.20 升级到 3.0
从 3.x 升级
如果从 3.x 发布版本升级,首先总是升级到 4.0.4 或 4.1.1,然后继续在 4.x 系列中升级。跳过这步的升级不被支持,并且会中断。
Weblate 4.0 文档中关于从3.11 升级到 4.0
从 4.0 升级到 4.1
请按照 一般的升级指示 来执行升级。
显著的配置与依赖性更改:
在 settings_example.py
中有几项更改,最显著的是中间件的更改,请由此调整你的设置。
有几个新的文件格式,在修改 WEBLATE_FORMATS
的情况下,你会想要将他们包括进来。
有几个新的质量检查,在修改 CHECK_LIST
的情况下,你会想要将他们包括进来。
在 DEFAULT_THROTTLE_CLASSES
设置中有几项更改,来允许在 API 中报告速率限制。
有几个新的且更新的要求。
在 INSTALLED_APPS
中有一些更改。
DeepL 机器翻译现在默认为 v2 API,在你当前的 DeepL 订购不支持的情况下,会需要调整 MT_DEEPL_API_VERSION
。
一般的升级指示
从 4.1 升级到 4.2
请按照 一般的升级指示 来执行升级。
显著的配置与依赖性更改:
从 3.x 发布版本升级不再支持,请首先升级到 4.0 或 4.1。
有几个新的且更新的要求。
在 settings_example.py
中有几项更改,最显著的是新中间件和更改的应用订购。
基于 JSON 格式的密钥是不再包括前导的点。在数据库迁移过程中调整字符串,但在你依赖于导出或 API 中的密钥时,外部组件会需要调整。
Celery 配置更改,不再使用 memory
队列。请调整你的启动脚本和 CELERY_TASK_ROUTES
设置。
现在在设置中配置 Weblate 域,请参见 SITE_DOMAIN`(或 :envvar:`WEBLATE_SITE_DOMAIN
)。在运行 Weblate 前你将不得不配置它。
用户数据库上的用户名和电子邮件字段现在应该不因为大小写敏感而不同。它之前错误地没有被 PostgreSQL 强制。
一般的升级指示
从 4.2 升级到 4.3
请按照 一般的升级指示 来执行升级。
显著的配置与依赖性更改:
在质量检查中有一些更改,在你调整 CHECK_LIST
的情况下会想将他们包括进来。
源语言属性从项目移动到 API 中暴露的组件。在使用时你会需要更新 Weblate 客户端。
根据翻译的字符串数量,数据库迁移到 4.3 会花费很长时间(期望每 10 万个字符串的迁移时间大约为 1 小时)。
在 INSTALLED_APPS
中有一些更改。
有个新的设置 SESSION_COOKIE_AGE_AUTHENTICATED
,补充了 SESSION_COOKIE_AGE
。
在使用 hub`或 :command:`lab`与 GitHub 或GitLab 集成的情况下,需要重新配置它,请参见 :setting:`GITHUB_CREDENTIALS 和 GITLAB_CREDENTIALS
。
4.3.1 版本变更: Celery 配置更改为添加``memory`` 队列。请调整你的启动脚本和 CELERY_TASK_ROUTES
设置。
在 4.3.2 版本中更改: 插件的``post_update``方法现在采用另外的``skip_push``参数。
一般的升级指示
从 4.3 升级到 4.4
请按照 一般的升级指示 来执行升级。
显著的配置与依赖性更改:
在 INSTALLED_APPS
中有一处更改, 必须将 weblate.configuration
添加在那里。
现在需要 Django 3.1。
在使用 MySQL 或 MariaDB 的情况下,需要的最低版本提高了,请参见 MySQL 和 MariaDB。
** 4.4.1 版的修改:** 单语 gettext 现在当出现时使用 msgid
和 msgctxt
。这将更改这样的文件中翻译字符串的 IDs。请确认在升级前提交将这样文件的更改挂起。
Changed in 4.4.1: Increased minimal required version of translate-toolkit to address several file format issues.
一般的升级指示
从 Python 2 升级到 Python 3
Weblate 不再支持早于 3.5 版本的 Python。在仍然运行在较早版本的情况下,请首先在现有版本上执行到 Python 3 的迁移,并在后面进行升级。请参见 Upgrading from Python 2 to Python 3 in the Weblate 3.11.1 documentation。
从其它数据库迁移到 PostgreSQL
如果在 PostgreSQL 以外的数据库上运行 Weblate,你应该迁移到 PostgreSQL,因为它是 4.0 发布版本唯一支持的数据库后端。后面的步骤将引导你在数据库之间迁移数据。请记住迁移前要停止 web 和 Celery 服务器,否则会导致不一致的数据。
建立 PostgreSQL数据库
在另一个单独的数据库中运行 Weblate ,并将用户账户分开通常是个好方法:
# If PostgreSQL was not installed before, set the main password
sudo -u postgres psql postgres -c "\password postgres"
# Create a database user called "weblate"
sudo -u postgres createuser -D -P weblate
# Create the database "weblate" owned by "weblate"
sudo -u postgres createdb -O weblate weblate
使用 Django JSON 转储来迁移
最简单的迁移方法是使用 Django JSON 转储。这对于较小的安装工作得很好。在更大的网站,你会想要使用 pgloader 代替,请参见 使用 pgloader 迁移到 PostgreSQL。
添加 PostgreSQL 作为到 :file:`settings.py`的另外的数据库连接:
DATABASES = {
"default": {
# Database engine
"ENGINE": "django.db.backends.mysql",
# Database name
"NAME": "weblate",
# Database user
"USER": "weblate",
# Database password
"PASSWORD": "password",
# Set to empty string for localhost
"HOST": "database.example.com",
# Set to empty string for default
"PORT": "",
# Additional database options
"OPTIONS": {
# In case of using an older MySQL server, which has MyISAM as a default storage
# 'init_command': 'SET storage_engine=INNODB',
# Uncomment for MySQL older than 5.7:
# 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
# If your server supports it, see the Unicode issues above
"charset": "utf8mb4",
# Change connection timeout in case you get MySQL gone away error:
"connect_timeout": 28800,
"postgresql": {
# Database engine
"ENGINE": "django.db.backends.postgresql",
# Database name
"NAME": "weblate",
# Database user
"USER": "weblate",
# Database password
"PASSWORD": "password",
# Set to empty string for localhost
"HOST": "database.example.com",
# Set to empty string for default
"PORT": "",
运行迁移,并将任何插入到表格中的数据 drop 掉:
weblate migrate --database=postgresql
weblate sqlflush --database=postgresql | weblate dbshell --database=postgresql
将遗留数据库进行转储,并导入 PostgreSQL
weblate dumpdata --all --output weblate.json
weblate loaddata weblate.json --database=postgresql
调整 DATABASES
而只使用 PostgreSQL 数据库作为默认,将遗留连接删除掉。
现在 Weblate 应该准备好从 PostgreSQL 数据库运行了。
使用 pgloader 迁移到 PostgreSQL
pgloader 是通用迁移工具,将数据迁移到 PostgreSQL。你可以使用它来迁移 Weblate 数据库。
调整 settings.py 文件而将 PostgreSQL 用作数据库。
迁移 PostgreSQL 中的模式:
weblate migrate
weblate sqlflush | weblate dbshell
运行 pgloader 来转移数据。后面的脚本可以用于迁移数据库,但你会想要学习更多关于 pgloader 的知识,来理解它做什么以及调整它来匹配你的设置:
LOAD DATABASE
FROM mysql://weblate:password@localhost/weblate
INTO postgresql://weblate:password@localhost/weblate
WITH include no drop, truncate, create no tables, create no indexes, no foreign keys, disable triggers, reset sequences, data only
ALTER SCHEMA 'weblate' RENAME TO 'public'