fix
This commit is contained in:
41
LangPacks.md
Normal file
41
LangPacks.md
Normal file
@@ -0,0 +1,41 @@
|
||||
# 语言包
|
||||
|
||||
这个文档讲述了 openRuyi 的语言包策略。
|
||||
|
||||
“语言包 (langpacks)” 背后的理念是,将翻译文件或特定语言内容的文件分离到子软件包中。
|
||||
|
||||
openRuyi 包含了一个 RPM 宏变量叫做 `%find_lang`。`%find_lang` 会定位所有相关的本地化文件,并将这些文件的列表输出到一个单独的文件中。该列表随后可用于在打包过程中包含所有的本地化文件。
|
||||
|
||||
`%find_lang` 宏应当在 spec 文件的 `%install` 章节中、所有文件都已安装到构建根目录 (buildroot) 之后执行。
|
||||
|
||||
## 推荐用法
|
||||
|
||||
在 spec 文件中,通常应使用如下用法:
|
||||
|
||||
```spec
|
||||
%install
|
||||
# ...
|
||||
%find_lang %{name} --generate-subpackages
|
||||
|
||||
%files
|
||||
```
|
||||
|
||||
该命令会查找所有`%{name}` 相关的语言文件,并为找到的每一种语言自动定义并生成一个标准的子软件包 (例如 `%{name}-lang-de`, `%{name}-lang-fr`, `%{name}-lang-zh_CN` 等),之后自动将对应的语言文件归入其所属的子包中。
|
||||
|
||||
注意,目前有些语言会以 `en@quot` 这样的形式出现,如果使用这种方法生成子包时会不符合 rpm 包名的规范导致构建失败,目前需要删除这些语言。
|
||||
|
||||
如果使用这种用法,则不再需要在 `%files` 章节中使用 `-f %{name}.lang`。
|
||||
|
||||
## 一般用法
|
||||
|
||||
如果出于某种原因无法使用推荐的用法,可以使用一般的用法:
|
||||
|
||||
```spec
|
||||
%install
|
||||
# ...
|
||||
%find_lang xxx
|
||||
|
||||
%files -f xxx.lang
|
||||
```
|
||||
|
||||
如果使用这种用法,则需要在 `%files` 章节中使用 `-f %{name}.lang`。并且添加注释说明不使用推荐用法的理由。
|
||||
@@ -60,7 +60,8 @@ strings using various encodings.
|
||||
# Avoid illegal package names
|
||||
rm -rf $RPM_BUILD_ROOT%{_datadir}/locale/*@*
|
||||
rm -rf $RPM_BUILD_ROOT%{_datadir}/locale/en_GB/
|
||||
%find_lang %{name} --generate-subpackages
|
||||
# Use langpacks macro to auto-split translations
|
||||
%find_lang kcodecs6 --with-qt --all-name --generate-subpackages
|
||||
|
||||
%files
|
||||
%license LICENSES/*
|
||||
|
||||
Reference in New Issue
Block a user