From 1e57f31fc0855ca3589c2f31a527fee2af5d7d43 Mon Sep 17 00:00:00 2001 From: Meng Sen Date: Thu, 9 Jan 2025 12:40:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E5=B8=83=E5=BA=94=E7=94=A8=20WebLate?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Meng Sen --- apps/weblate/5.9.2.1/data.yml | 230 ++++++++++++++++++++++ apps/weblate/5.9.2.1/docker-compose.yml | 34 ++++ apps/weblate/5.9.2.1/envs/default.env | 2 + apps/weblate/5.9.2.1/envs/global.env | 2 + apps/weblate/5.9.2.1/scripts/init.sh | 17 ++ apps/weblate/5.9.2.1/scripts/uninstall.sh | 10 + apps/weblate/5.9.2.1/scripts/upgrade.sh | 17 ++ apps/weblate/README.md | 60 ++++++ apps/weblate/data.yml | 14 ++ apps/weblate/logo.png | Bin 0 -> 25678 bytes 10 files changed, 386 insertions(+) create mode 100644 apps/weblate/5.9.2.1/data.yml create mode 100644 apps/weblate/5.9.2.1/docker-compose.yml create mode 100644 apps/weblate/5.9.2.1/envs/default.env create mode 100644 apps/weblate/5.9.2.1/envs/global.env create mode 100644 apps/weblate/5.9.2.1/scripts/init.sh create mode 100644 apps/weblate/5.9.2.1/scripts/uninstall.sh create mode 100644 apps/weblate/5.9.2.1/scripts/upgrade.sh create mode 100644 apps/weblate/README.md create mode 100644 apps/weblate/data.yml create mode 100644 apps/weblate/logo.png diff --git a/apps/weblate/5.9.2.1/data.yml b/apps/weblate/5.9.2.1/data.yml new file mode 100644 index 000000000..b4ecbde25 --- /dev/null +++ b/apps/weblate/5.9.2.1/data.yml @@ -0,0 +1,230 @@ +additionalProperties: + formFields: + - child: + default: "" + envKey: PANEL_POSTGRES_SERVICE + required: true + type: service + default: postgresql + envKey: PANEL_POSTGRES_TYPE + labelZh: Postgres 服务 (前置检查) + labelEn: Postgres Service (Pre-check) + required: true + type: apps + values: + - label: PostgreSQL + value: postgresql + - child: + default: "" + envKey: PANEL_REDIS_SERVICE + required: true + type: service + default: redis + envKey: PANEL_REDIS_TYPE + labelZh: Redis 服务 (前置检查) + labelEn: Redis Service (Pre-check) + required: true + type: apps + values: + - label: Redis + value: redis + - default: "/home/weblate" + edit: true + envKey: WEBLATE_ROOT_PATH + labelZh: 数据持久化路径 + labelEn: Data persistence path + required: true + type: text + - default: 8080 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelZh: WebUI 端口 + labelEn: WebUI port + required: true + rule: paramPort + type: number + - default: "Weblate admin" + edit: true + envKey: WEBLATE_ADMIN_NAME + labelZh: 管理员名称 + labelEn: Admin name + required: true + type: text + - default: "weblate@example.com" + edit: true + envKey: WEBLATE_ADMIN_EMAIL + labelZh: 管理员邮箱 + labelEn: Admin email + required: true + type: text + - default: "" + edit: true + envKey: WEBLATE_ADMIN_PASSWORD + labelZh: 管理员密码 + labelEn: Admin password + required: true + type: password + - default: "" + edit: true + envKey: WEBLATE_SITE_DOMAIN + labelZh: 站点域名 + labelEn: Site domain + required: true + type: text + - default: "Weblate 翻译平台" + edit: true + envKey: WEBLATE_SITE_TITLE + labelZh: 站点标题 + labelEn: Site title + required: true + type: text + - default: "1" + edit: true + envKey: WEBLATE_REGISTRATION_OPEN + labelZh: 是否开放注册 + labelEn: Registration open + required: true + type: select + values: + - label: 允许注册 + value: "1" + - label: 禁止注册 + value: "0" + - default: "127.0.0.1" + edit: true + envKey: POSTGRES_HOST + labelZh: 数据库 主机地址 + labelEn: Database Host + required: true + type: text + - default: 5432 + edit: true + envKey: POSTGRES_PORT + labelZh: 数据库 端口 + labelEn: Database Port + required: true + rule: paramPort + type: number + - default: "weblate" + edit: true + envKey: POSTGRES_DB + labelZh: 数据库 名称 + labelEn: Database Name + required: true + rule: paramCommon + type: text + - default: "weblate" + edit: true + envKey: POSTGRES_USER + labelZh: 数据库 用户名 + labelEn: Database Username + required: true + type: text + - default: "" + edit: true + envKey: POSTGRES_PASSWORD + labelZh: 数据库 密码 + labelEn: Database Password + random: true + required: true + rule: paramComplexity + type: password + - default: "127.0.0.1" + edit: true + envKey: REDIS_HOST + labelZh: Redis 主机 + labelEn: Redis Host + required: true + type: text + - default: 6379 + edit: true + envKey: REDIS_PORT + labelZh: Redis 端口 + labelEn: Redis Port + required: true + rule: paramPort + type: number + - default: 0 + edit: true + envKey: REDIS_DB + labelZh: Redis 索引 (0-20) + labelEn: Redis Index (0-20) + required: true + type: number + - default: "" + edit: true + envKey: REDIS_PASSWORD + labelZh: Redis 密码 + labelEn: Redis Password + required: false + type: password + - default: "" + edit: true + envKey: WEBLATE_SERVER_EMAIL + labelZh: 错误信息通知邮箱 + labelEn: Error notification email + required: true + type: text + - default: "" + edit: true + envKey: WEBLATE_DEFAULT_FROM_EMAIL + labelZh: 默认发件邮箱 + labelEn: Default sender email + required: true + type: text + - default: "smtp.gmail.com" + edit: true + envKey: WEBLATE_EMAIL_HOST + labelZh: 电子邮件服务器主机名 + labelEn: Email server hostname + required: true + type: text + - default: 465 + edit: true + envKey: WEBLATE_EMAIL_PORT + labelZh: 电子邮件服务器端口 (465/SSL 587/TLS) + labelEn: Email server port (465/SSL 587/TLS) + required: true + type: number + - default: "" + edit: true + envKey: WEBLATE_EMAIL_HOST_USER + labelZh: 电子邮件服务器用户名 + labelEn: Email server username + required: true + type: text + - default: "" + edit: true + envKey: WEBLATE_EMAIL_HOST_PASSWORD + labelZh: 电子邮件服务器密码 + labelEn: Email server password + required: true + type: password + - default: "" + edit: true + envKey: GET_HELP_URL + labelZh: 帮助文档链接 + labelEn: Help document link + required: false + type: text + - default: "" + edit: true + envKey: STATUS_URL + labelZh: 服务状态链接 + labelEn: Service status link + required: false + type: text + - default: "" + edit: true + envKey: LEGAL_URL + labelZh: 法律声明链接 + labelEn: Legal statement link + required: false + type: text + - default: "" + edit: true + envKey: PRIVACY_URL + labelZh: 隐私政策链接 + labelEn: Privacy policy link + required: false + type: text diff --git a/apps/weblate/5.9.2.1/docker-compose.yml b/apps/weblate/5.9.2.1/docker-compose.yml new file mode 100644 index 000000000..9e9c82ed0 --- /dev/null +++ b/apps/weblate/5.9.2.1/docker-compose.yml @@ -0,0 +1,34 @@ +networks: + 1panel-network: + external: true + +services: + weblate: + image: weblate/weblate:5.9.2.1 + container_name: ${CONTAINER_NAME} + labels: + createdBy: "Apps" + restart: always + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:8080 + tmpfs: + - /run + - /tmp + read_only: true + env_file: + - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} + - ${ENV_FILE:-/etc/1panel/envs/default.env} + volumes: + - ${WEBLATE_ROOT_PATH}/data:/app/data + - ${WEBLATE_ROOT_PATH}/cache:/app/cache + environment: + - TZ=Asia/Shanghai + - WEBLATE_TIME_ZONE=Asia/Shanghai + - WEBLATE_WORKERS=2 + - WEBLATE_DEBUG=0 + - WEBLATE_LOGLEVEL=INFO + - WEBLATE_ALLOWED_HOSTS=* + - POSTGRES_DATABASE=weblate + - CLIENT_MAX_BODY_SIZE=200M diff --git a/apps/weblate/5.9.2.1/envs/default.env b/apps/weblate/5.9.2.1/envs/default.env new file mode 100644 index 000000000..cd05f46e6 --- /dev/null +++ b/apps/weblate/5.9.2.1/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/apps/weblate/5.9.2.1/envs/global.env b/apps/weblate/5.9.2.1/envs/global.env new file mode 100644 index 000000000..e10989fe4 --- /dev/null +++ b/apps/weblate/5.9.2.1/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai diff --git a/apps/weblate/5.9.2.1/scripts/init.sh b/apps/weblate/5.9.2.1/scripts/init.sh new file mode 100644 index 000000000..07fb8c3fe --- /dev/null +++ b/apps/weblate/5.9.2.1/scripts/init.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + sed -i '/^GLOBAL_ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/weblate/5.9.2.1/scripts/uninstall.sh b/apps/weblate/5.9.2.1/scripts/uninstall.sh new file mode 100644 index 000000000..c86c4fbca --- /dev/null +++ b/apps/weblate/5.9.2.1/scripts/uninstall.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/weblate/5.9.2.1/scripts/upgrade.sh b/apps/weblate/5.9.2.1/scripts/upgrade.sh new file mode 100644 index 000000000..07fb8c3fe --- /dev/null +++ b/apps/weblate/5.9.2.1/scripts/upgrade.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + sed -i '/^GLOBAL_ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/weblate/README.md b/apps/weblate/README.md new file mode 100644 index 000000000..354e55659 --- /dev/null +++ b/apps/weblate/README.md @@ -0,0 +1,60 @@ +# Weblate + +高度集成了版本控制功能的web-based翻译工具 + +![Weblate](https://file.lifebus.top/imgs/weblate_cover.png) + +作为一款功能强大的计算机辅助翻译工具,Weblate 节省了开发者和译者的时间。让您的用户更快乐! + +![](https://img.shields.io/badge/%E6%96%B0%E7%96%86%E8%90%8C%E6%A3%AE%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E5%B7%A5%E4%BD%9C%E5%AE%A4-%E6%8F%90%E4%BE%9B%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81-blue) + +## 硬件说明 + +> 推荐的最小内存为 4 GB + ++ 3 GB 的内存 ++ 2 个 CPU 核心 ++ 1 GB 的存储空间 + +## 特性 + ++ 持续本地化 + +自动本地化工作流能紧密贴合您的项目开发。 + ++ 质量检查 + +可定制的质量检查有助于提高翻译质量。 + ++ 署名 + +所有译者的贡献信息都会妥善记录在版本控制系统中。 + ++ 访问控制 + +调整访问权限以适应您的环境。 + ++ 通知 + +译者能收到有新条目需要翻译或其他事件发生的通知。 + ++ 集成 API + +将 Weblate 与第三方服务集成。 + ++ 多种文件格式 + +使用任何常见的文件本地化格式,如 gettext、JSON、XLIFF 或资源字符串等。 + ++ 分支支持 + +通过自动将它们推到不同的分支来处理不同的翻译版本。 + ++ 翻译上下文 + +描述、附近字符串、图片、相关源代码和术语表条目 — 每条字符串均可拥有。 + + +--- + +![Ms Studio](https://file.lifebus.top/imgs/ms_blank_001.png) diff --git a/apps/weblate/data.yml b/apps/weblate/data.yml new file mode 100644 index 000000000..aa6caa89c --- /dev/null +++ b/apps/weblate/data.yml @@ -0,0 +1,14 @@ +additionalProperties: + key: weblate + name: Weblate + tags: + - WebSite + - Local + shortDescZh: 高度集成了版本控制功能的web-based翻译工具 + shortDescEn: A highly integrated web-based translation tool with version control functions + type: website + crossVersionUpdate: true + limit: 0 + website: https://weblate.org/ + github: https://weblate.org/ + document: https://docs.weblate.org/ diff --git a/apps/weblate/logo.png b/apps/weblate/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b11b4b507ea92250611ba8d566a314c864daca09 GIT binary patch literal 25678 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 C=O