openSUSE:本地化指南

跳转到:导航搜索

在此页面中查找有关openSUSE中软件组件本地化(L10N,LCN)的信息。它适用于YaST、openSUSE更新小程序或桌面菜单系统等程序。有关本地化openSUSE wiki(本网站)的信息,请参见Help:Translation

openSUSE Weblate

所有翻译人员都应加入openSUSE Weblate 翻译门户。所有 openSUSE 翻译都在那里完成。

使用openSUSE Weblate,您不需要任何编程技能。您甚至不需要了解翻译文件格式。您只需要对所选语言和既定计算机术语有很好的了解。

openSUSE/SUSE 特定翻译项目

除了内部项目(如 YaST)和托管项目的通用翻译项目外,还有专门用于处理 openSUSE/SUSE 翻译的特定用途翻译项目。

update-desktop-files 和 desktop-file-translations

始于 2003 年,旨在实现 Novell Linux Desktop 9 中桌面菜单 100% 翻译的目标。该实现采用 SUSE 优先(过去仅限 SUSE)策略,因此与当前的上游优先策略相矛盾。它还支持应用程序类别重新映射和修复桌面文件过时格式。要导入翻译,glib2 和 KDE 中存在一个补丁,YaST 包含一个专用代码。

原始实现使用 spec 文件中 %install 阶段的 %suse_update_desktop_file 宏。

自 2011 年以来,该实现不依赖于宏。它使用一个 brp 脚本,该脚本最初删除了所有上游翻译(现在保留了它们)。由于该包是多个 {meta}-devel-packages 的一部分,因此使用其中一个元包作为 BuildRequires 的所有包都会自动部署该脚本。

在 OpenQA 内网 VPN 上运行的自定义工具链会收集所选项目中的所有桌面文件,并将其放入 GitHub 和连接的 Weblate 项目。

2024 年,该项目获得了一个允许上游更改的代码,项目本身被标记为已弃用。

packages-i18n 和 package-translations

此项目允许在 YaST 安装程序中翻译 rpm 摘要和描述。工具链下载所选项目中的所有软件包并将其发送到翻译项目。随着时间的推移,发行版中的软件包数量显著增加,因此生成了一个极其庞大的翻译项目。这导致翻译覆盖率较低。

gnome-patch-translations

2004 年,Novell 发布了基于大量修补的 GNOME 2 的 Novell Linux Desktop 9。补丁中的许多字符串未被翻译,导致 i18n 体验不佳。这就是创建此项目的原因。它基于 spec 文件 %prep 阶段中使用的专用命令。工具链运行包设置,比较修补前后的源字符串,并生成一个合并来自更多包的此类字符串的翻译项目。后来,openSUSE 转移到原始上游包,项目失去了其重要性。该项目存在于 openSUSE LCN SVN 中,从未迁移到 GitHub 或 Weblate。

  • 引入年份: 2006
  • 活跃维护结束: 2016
  • 删除过程开始: 2021
  • 涉及的包数量: ~ 20
  • 要翻译的字符串数量: ~ 120
  • 包名称: gnome-patch-translation
  • SVN 项目: https://svn.opensuse.org/svn/opensuse-i18n/{branch}/lcn (已停用)
  • Weblate 翻译项目: 不适用

translation-update

一个翻译更新包,允许发布任何软件包的在线更新,覆盖软件包 rpm 文件中分发的翻译。它使用一个专用目录和一个 glibc 补丁,强制该目录覆盖标准语言环境目录。2013 年,它获得了一个更新,允许半自动导入上游翻译。

下游翻译项目存在于 openSUSE LCN SVN 中,从未迁移到 GitHub 和 Weblate。上游导入项目完全由补充脚本处理,没有翻译界面。

如果更新文件存在,打补丁的 glibc 会强制使用它并完全忽略随包分发的翻译。(该实现有点不完善,因为最近的 glibc 版本已经支持翻译搜索路径与多个文件的混合。)如果更新不同步,它会导致回归。这就是它被弃用并在其存在的最后几年中删除了翻译存档的原因。

  • 引入年份: 2006
  • 已弃用: 2019
  • 已废弃: 2024
  • 涉及的包数量: ~ 100 (由下游翻译,可能与上游重复), ~250 (由上游翻译)
  • 受影响的字符串数量: ~ 20000 (由下游提供,可能与上游重复), ~ 50000 (由上游提供)
  • 包名称: translation-update
  • SVN 项目: https://svn.opensuse.org/svn/opensuse-i18n/{branch}/lcn (下游部分; 已停用)
  • Weblate 翻译项目: 不适用

translation-update-upstream

过去,GNOME 在产品开发的早期阶段被冻结。那时,上游翻译通常不完整,更好的支持出现在后续版本中。

此软件包允许半自动导入上游翻译并单独提供,无需修改代码,甚至在发布之后也可以。它支持在发布前使用 rpm spec 文件 %prep 阶段中的专用命令导入 spec 文件,触发每个包含的软件包重建,并将其导入到 translation-update 中,用于不会使用此宏进行重建的软件包(例如,发布后)。工具链在受控环境中解压源代码,应用补丁,生成 pot 文件,并从选定的 VCS 分支或选定的源回溯最新的上游翻译。

由于工具链的性质,完整运行大约需要一天时间,并且容易出错。它还会触发数百个软件包的重建。

在后来的几年里,GNOME 更新模型发生了变化。即使在后期开发中也会进行版本更新。它将新的上游翻译直接带入包中。这降低了包的重要性。这也导致了保持同步的问题。每个单一的包版本更新都会使 translation-update-upstreamtranslation-update 包过时。由于 translation-update 翻译强制覆盖上游翻译,它开始导致翻译回归。

  • 引入年份: 2009
  • 已弃用自: 2019 (现已无效)
  • 涉及的包数量: ~ 250 (由上游翻译)
  • 受影响的字符串数量: ~ 73000 (由上游提供)
  • 包名称: translation-update-upstream
  • GitHub 项目: 不适用
  • Weblate 翻译项目: 不适用

translate-suse-desktop

有一些桌面文件完全由 openSUSE 或 SUSE 软件包维护者创建和维护,需要翻译。由于之前的项目 update-desktop-files 不区分此类项目和来自上游的桌面文件包,因此创建了一个新项目。它是一个极简工具,使用 intltool 集成翻译,并使用 OBS getbinaries 功能从更多软件包中收集翻译。工具链中的迁移工具允许在 spec 文件迁移后自动迁移现有 update-desktop-files 翻译。

语言环境语言包和捆绑包

语言环境语言包本身不是翻译项目。这些项目只是从现有包中获取语言子包,然后重新打包。工具链以原始 -lang 布局获取包 = 单个包的所有翻译,并为单个语言创建一个包,其中包含许多包的翻译文件(例如,所有 GNOME 包)。使用 rpm requires/provides 和语言设置,这些包将代替 -lang 包安装。这种重新打包节省了单语言桌面的安装大小。

为防止文件冲突,它使用了专用目录 /usr/share/locale-bundle 和 /usr/share/locale-langpack。glibc 中的一个补丁对这些目录中的文件具有绝对优先权。在单个软件包版本升级的情况下,它会导致翻译回归(停留在旧版本)。

  • 涉及的包数量: ~ 500
  • 引入年份: 2006
  • 停止活跃使用: 2018
  • 移除支持: 2024

加入现有团队

鼓励所有翻译人员加入 opensuse-translation 邮件列表,并最终加入语言团队列表。

如果您的语言存在语言团队,请联系该团队的协调员。

添加新语言

翻译没有技术限制。大多数项目允许您单击一下即可开始新的翻译。但是,获得良好的母语体验需要大量工作。因此,建议组建一个翻译团队。

如果您的语言已包含在本地化团队列表中,则说明您的语言已存在团队。请在加入现有团队中查找有关加入团队的信息。如果您的语言没有团队,请启动一个团队并按以下步骤进行操作

  1. 发送邮件至 opensuse-translation@opensuse.org。在邮件中提供以下信息:新语言名称、您的全名、您的联系邮箱地址。
  2. 等待新语言项目批准。
  3. 将您的语言添加到本地化团队表中。同时填写语言协调员和项目页面位置的字段,请参阅语言项目页面
  4. 开始本地化。在开始之前,请阅读开始工作

使用 Weblate 进行翻译

您可以使用 openSUSE Weblate 很好地概述所有翻译项目、它们的状态和翻译文件。在那里使用您的通用 openSUSE 帐户。任何人都可以创建它。

语言团队可以根据团队政策限制访问。

您应该只更改您语言团队的文件。

翻译被分成项目和组件。组件可以是项目分支或子域,或它们的组合。

分支 (Branches)

软件包可以有不同的分支,这在 Weblate 中表现为不同的组件。分支是包含特定版本文件的目录。因此,您可能会找到相同软件的不同翻译文件。大多数项目都有一个用于 Tumbleweed 的 mastermain 分支,项目可以有用于 Leap 和 SLE 的特定分支。您无需翻译名称中带有 SLE 的组件。此类文件由 SUSE 为 SUSE Linux Enterprise 翻译。我们与他们共享我们的系统。

许多项目没有这些专用分支,翻译开发对 Tumbleweed 和下一个 Leap 都是通用的。

之后您可以选择您的语言。

然而,仍然提供了 PO 下载按钮,并且仍然支持本地离线翻译,但鼓励翻译人员在 Weblate 中在线翻译。

只需选择“未翻译字符串”,您就可以在网页界面中输入您的翻译。

最重要的项目

如果您刚开始本地化工作,应该从最重要的文件开始。这些文件属于 openSUSE 发行版中最显眼的应用程序,如安装或 YaST 控制中心。最重要的文件包括

用于安装: * download.o.o

  • software-o-o
  • 登陆页面
  • openSUSE-EULAs
  • 发行说明
  • skelcd-openSUSE
  • yast-幻灯片放映
  • packages-i18n/patterns

软件安装与回滚: * libzypp

  • snapper
  • zypper
  • Agama

YaST 基础: * yast-base

  • yast-country
  • yast-firewall
  • yast-installation
  • yast-ncurses
  • yast-ncurses-pkg
  • yast-network
  • yast-pam
  • yast-pkg-bindings
  • yast-qt
  • yast-qt-pkg
  • yast-storage
  • yast-timezone_db
  • packages-i18n/yast2

会议/展位

  • 测验

SUSE 翻译

我们与 SUSE Linux Enterprise 翻译人员共享 Weblate。YaST 有许多 po 文件,您无需翻译。它们被注释为

这是一个 SUSE Linux Enterprise 模块,不适用于社区使用。

或类似内容

SUSE 客户中心的 RPM 仓库镜像工具和注册代理是 SUSE Linux Enterprise 产品。它由签约翻译人员翻译。

深入信息

openSUSE Weblate 只是 openSUSE GitHub 项目和 YaST GitHub 开发门户的接口。它持有这些项目的副本,并将所有翻译工作返回到开发 git 仓库。

关于 PO 和 POT 文件

大多数(但并非所有)项目都使用双语 po 文件。源文件包含英文文本,翻译人员提供翻译。

PO 文件中的原始英文文本不允许更改。您只能更改翻译。如果您在原始英文文本中发现错误,请使用 Bugzilla 进行报告。所有错误的文本必须首先在应用程序的源代码中修复,然后将生成一个新的 POT 文件并自动与您的文件合并。之后,更改的字符串将被标记为模糊(即需要编辑)。

如果您不知道什么是 PO 和 POT 文件,请阅读文章 使用 PO 文件进行工作

并非所有项目都使用 po 甚至双语文件。但是,由于 Weblate,这一事实对于翻译人员来说几乎是不透明的。可编辑的英文翻译的存在是使用单语文件的组件的唯一区别。

您的 GitHub 仓库权限

Weblate 的 GitHub 用户是 opensuse-i18n,但由于某种原因,GitHub 阻止将 opensuse-i18n 添加到项目中。作为变通方法,我们创建了一个团队 robots-i18n。因此,请将 robots-i18n 添加到您的 github.com/openSUSE 项目中,以允许 Weblate 将提交推送到您的仓库。

GitHub 上的拉取请求

大多数 Weblate 项目都配置为自动将翻译推回 GitHub。同步时间设置为最后编辑后 2 小时。

所有 po 文件都在 github 上可用,并将由 Weblate 和开发人员更新。

如果您想在 GitHub 上提交 po 文件,您必须创建一个 fork,克隆它,提交,推送并创建一个 Pull Request。仅当您无法使用 Weblate 上传“最重要的文件”的 po 文件并且我们有发布时间时才这样做。原因是 Pull Request 必须由项目所有者审核。这可能需要时间,并且可能会执行许多提交。因此可能会发生合并冲突。

您可以在 Weblate 上找到指向 GitHub 仓库的特殊链接,如果您选择您的翻译文件,点击上方名称并选择“信息”。项目网站就是 GitHub 仓库。

最小翻译

我们对将本地化纳入发行版没有百分比限制。

统计信息

您可以在 Weblate 的统计数据中找到有关您本地化工作状态的信息。如果您的语言未包含在内,请发送电子邮件至 opensuse-translation 邮件列表。

统计数据每天更新一次。更新时间显示在每个页面的底部。如果您的语言中某个文件缺少任何翻译,则该文件将显示为未翻译并链接到 POT 文件。您可以翻译 POT 文件并以 PO 文件形式提交到 GitHub/Weblate,或者等待 POT 文件的初始化。

语言团队页面

如果您在一个大型团队中工作,您应该使用您的母语创建自己的团队页面。要创建一个,请使用您的语言的 openSUSE wiki,并将链接添加到本地化团队表格中。如果您的语言没有 openSUSE wiki 翻译,请在英文 wiki 页面中创建团队页面,名称为 your_language_code Language_name Localization Team

旧式离线工作工具

Weblate 是在线工作的首选。但您仍然可以使用其中一种离线 po 编辑器进行离线翻译。

  • POEditor - POEditor 是一个基于网络的翻译工具,支持 gettext po 文件和其他流行的本地化格式。
  • KBabel - KBabelkdesdk3-translate 软件包的一部分
  • Lokalize - Lokalize 是 KBabel 的 KDE4 继任者
  • poTranslator - 下载 poTranslator

处理翻译错误

如果您发现翻译错误(未翻译的字符串、翻译不正确的字符串、不可翻译的字符串),请按照处理翻译错误手册操作。

链接