Stirling-PDF 提供全面的国际化(i18n)支持,目前提供 39 种不同的语言,翻译完整度各不相同。本页将介绍可用的语言、它们的实现状态以及应用程序中国际化系统的整体架构。
有关如何为 Stirling-PDF 添加新语言的信息,请参阅 添加新语言。
Stirling-PDF 支持以下语言及其相应的翻译完成率
| 语言 | 代码 | 完成 |
|---|---|---|
| 阿拉伯语 (العربية) | ar_AR | 84% |
| 阿塞拜疆语 (Azərbaycan Dili) | az_AZ | 83% |
| 巴斯克语 (Euskara) | eu_ES | 48% |
| 保加利亚语 (Български) | bg_BG | 93% |
| 加泰罗尼亚语 (Català) | ca_CA | 90% |
| 克罗地亚语 (Hrvatski) | hr_HR | 81% |
| 捷克语 (Česky) | cs_CZ | 92% |
| 丹麦语 (Dansk) | da_DK | 80% |
| 荷兰语 (Nederlands) | nl_NL | 79% |
| 英语 (GB) | en_GB | 100% |
| 英语 (美国) | en_US | 100% |
| 法语 (Français) | fr_FR | 92% |
| 德语 (Deutsch) | de_DE | 94% |
| 希腊语 (Ελληνικά) | el_GR | 91% |
| 印地语 (हिंदी) | hi_IN | 92% |
| 匈牙利语 (Magyar) | hu_HU | 89% |
| 印度尼西亚语 (Bahasa Indonesia) | id_ID | 81% |
| 爱尔兰语 (Gaeilge) | ga_IE | 92% |
| 意大利语 (Italiano) | it_IT | 99% |
| 日语 (日本語) | ja_JP | 89% |
| 韩语 (한국어) | ko_KR | 92% |
| 挪威语 (Norsk) | no_NB | 86% |
| 波斯语 (فارسی) | fa_IR | 88% |
| 波兰语 (Polski) | pl_PL | 96% |
| 葡萄牙语 (Português) | pt_PT | 91% |
| 巴西葡萄牙语 (Português) | pt_BR | 98% |
| 罗马尼亚语 (Română) | ro_RO | 75% |
| 俄语 (Русский) | ru_RU | 94% |
| 塞尔维亚语拉丁字母 (Srpski) | sr_LATN_RS | 60% |
| 简体中文 (简体中文) | zh_CN | 93% |
| 斯洛伐克语 (Slovensky) | sk_SK | 69% |
| 斯洛文尼亚语 (Slovenščina) | sl_SI | 95% |
| 西班牙语 (Español) | es_ES | 93% |
| 瑞典语 (Svenska) | sv_SE | 87% |
| 泰语 (ไทย) | th_TH | 80% |
| 藏语 (བོད་ཡིག་) | zh_BO | 89% |
| 繁体中文 (繁體中文) | zh_TW | 99% |
| 土耳其语 (Türkçe) | tr_TR | 98% |
| 乌克兰语 (Українська) | uk_UA | 97% |
| 越南语 (Tiếng Việt) | vi_VN | 74% |
来源: README.md114-158
Stirling-PDF 中的国际化系统遵循 Spring Boot 的标准消息解析方法,并辅以额外的语言选择 UI 组件。系统工作原理如下:
来源: src/main/resources/templates/fragments/languages.html1-37 README.md114-158
所有消息翻译都存储在属性文件中,遵循 messages_<locale>.properties 的命名模式,其中 <locale> 是语言和国家代码。例如,法语为 messages_fr_FR.properties,简体中文为 messages_zh_CN.properties。
消息文件被组织成逻辑部分,注释标明了每个部分的目的
来源: src/main/resources/messages_it_IT.properties1-150 src/main/resources/messages_fr_FR.properties1-150 src/main/resources/messages_de_DE.properties1-150
Stirling-PDF 支持从右到左(RTL)的语言,例如阿拉伯语(ar_AR)。这些语言需要特殊的文本方向处理。
language.direction 键,指定该语言是左到右(ltr)还是右到左(rtl)language.direction=rtl通过 ignore_translation.toml 配置文件,某些语言中的某些翻译键会被有意排除。这对于以下情况很有用:
忽略列表中的示例
来源: scripts/ignore_translation.toml1-64 src/main/resources/messages_ar_AR.properties5
语言选择功能已在应用程序导航栏中实现,允许用户轻松切换不同的可用语言。
语言下拉列表使用 languages.html Thymeleaf 片段填充,其中包含每个支持语言的条目。
来源: src/main/resources/templates/fragments/languages.html1-37
每种语言的完成百分比是根据已翻译的键数与英文(en_GB)参考文件中的总键数进行比较得出的。特定语言的忽略列表中的键不计入此计算。
例如,如果参考文件有 1000 个键,一种语言有 820 个已翻译的键,并且有 20 个键在其忽略列表中,那么完成百分比将是:
Completion = (820 / (1000 - 20)) × 100 = 83.7%
完成百分比会定期在项目文档中更新。
来源: README.md114-158 scripts/ignore_translation.toml1-30
每个语言文件都遵循一致的结构,属性键按功能区域分组。以下是该结构的一个简化示例:
这种组织方式使得维护和更新应用程序特定功能区域的翻译更加容易。
来源: src/main/resources/messages_it_IT.properties1-150 src/main/resources/messages_fr_FR.properties1-150