openSUSE:本地化指南

跳转到:导航搜索

在此页面中,您可以找到关于 openSUSE 中软件组件本地化 (L10N, LCN) 的信息。它适用于诸如 YaST、openSUSE 更新小程序或桌面菜单系统之类的程序。有关本地化 openSUSE wiki(此站点)的信息,请参阅 帮助:翻译

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-first(过去是 SUSE-only)策略,因此与当前的 upstream first 策略相矛盾。它还支持应用程序类别重映射和修复过时的桌面文件格式。为了将翻译导入回去,glib2 和 KDE 中存在补丁,YaST 包含专用代码。

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

自 2011 年以来,该实现不再依赖于该宏。它使用一个 brp 脚本,该脚本最初删除了所有 upstream 翻译(现在保留它们)。由于该软件包是几个 {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 迁移到原始 upstream 软件包,该项目失去了重要性。该项目存在于 openSUSE LCN SVN 中,从未迁移到 GitHub 或 Weblate。

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

translation-update

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

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

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

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

translation-update-upstream

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

该软件包允许半自动导入 upstream 翻译并在发布后提供它们,而无需修改代码。它支持在 rpm spec 文件的 %prep 阶段使用专用命令导入,触发包含的所有软件包重新构建,并使用此宏导入到 translation-update 中,用于不会获得重新构建的软件包(例如,发布后)。该工具链在受控环境中解包源代码,应用补丁,生成 pot 文件,并从选定的 VCS 分支或选定的源代码回溯最新的 upstream 翻译。

由于工具链的性质,完整运行需要大约一天时间,并且对故障敏感。它还会触发数百个软件包进行重新构建。

在后期,GNOME 更新模型发生了变化。即使在后期开发中,版本更新也会完成。它将新的 upstream 翻译直接带到软件包中。这降低了该软件包的重要性。它也导致了保持同步的问题。每次单个软件包版本更新都会使 translation-update-upstreamtranslation-update 软件包过时。由于 translation-update 翻译强制覆盖 upstream 翻译,因此它开始导致翻译回归。

  • 引入年份: 2009
  • 自弃用以来:2019 年(现在什么也不做)
  • 涉及的软件包数量:~ 250(由 upstream 翻译)
  • 受影响的字符串数量:~ 73000(由 upstream 提供)
  • 软件包名称translation-update-upstream
  • GitHub 项目:N/A
  • Weblate 翻译项目:N/A

translate-suse-desktop

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

locale langpacks 和 bundles

Locale langpacks 本身并不是翻译项目。这些项目只是从现有软件包中获取 lang 子软件包,并重新打包它们。该工具链获取原始 -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 中在线翻译。

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

最重要的项目

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

对于安装: * download.o.o

  • software-o-o
  • landing-page
  • openSUSE-EULAs
  • release-notes
  • skelcd-openSUSE
  • yast-slide-show
  • 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

Conferences/Booth

  • quiz

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 文件,您必须创建一个分支,克隆它,提交,推送并创建一个拉取请求。只有当您无法使用 Weblate 上传“最重要的文件”的 po 文件并且我们即将发布时才这样做。原因是拉取请求必须由项目所有者审查。这可能会花费时间,并且可以执行许多提交。因此可能会发生合并冲突。

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

最小翻译

我们没有将本地化包含到发行版中的百分比限制。

统计信息

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

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

语言团队页面

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

旧式离线工作工具

Weblate 优选用于在线工作。但是,您仍然可以使用以下离线 po 编辑器进行离线翻译。

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

处理翻译错误

如果您发现翻译错误(未翻译的字符串、翻译不正确的字符串、无法翻译的字符串),请遵循 处理翻译错误 手册。

链接