bibisco本地化指南如何为你的语言添加支持【免费下载链接】bibiscoNovel writing software项目地址: https://gitcode.com/gh_mirrors/bi/bibisco想要让bibisco这款优秀的小说写作软件支持你的母语吗 这篇完整的本地化指南将带你一步步了解如何为bibisco添加新的语言支持让更多写作者能够使用自己熟悉的语言创作小说✨bibisco是一款功能强大的开源小说写作软件它支持多种语言界面但如果你发现你的母语不在支持列表中完全可以自己动手添加通过本地化你可以让bibisco的界面、菜单、对话框等所有文本都显示为你熟悉的语言。 bibisco本地化系统概述bibisco使用基于JSON的本地化文件系统每个语言对应一个独立的翻译文件。这些文件位于bibisco/app/resources/目录下文件名格式为locale-{语言代码}.json。目前bibisco已经支持以下语言英语 (en, en-us, en-gb, en-ca)德语 (de)法语 (fr)意大利语 (it)西班牙语 (es)葡萄牙语 (pt-pt, pt-br)俄语 (ru)乌克兰语 (uk)土耳其语 (tr)波兰语 (pl)捷克语 (cs)荷兰语 (nl)斯洛文尼亚语 (sl)塞尔维亚语 (sr)挪威语 (no)瑞典语 (sv)丹麦语 (da-dk)加泰罗尼亚语 (ca-es)在bibisco设置界面中可以选择不同的语言️ 添加新语言的完整步骤步骤1创建语言文件首先你需要创建一个新的JSON翻译文件。以中文为例创建locale-zh-cn.json文件复制现有的英文翻译文件作为模板cp bibisco/app/resources/locale-en.json bibisco/app/resources/locale-zh-cn.json打开新创建的翻译文件你会看到类似这样的结构{ Application.anotherBibiscoInstanceIsRunning.title: bibisco, Application.anotherBibiscoInstanceIsRunning.text: bibisco is already running!, ApplicationWorkbenchAdvisor.ErrorDialog.Title: OH NO!, validation.required: This field is required., // ... 更多翻译条目 }步骤2翻译所有字符串你需要将每个键对应的英文值翻译成目标语言。例如{ Application.anotherBibiscoInstanceIsRunning.title: bibisco, Application.anotherBibiscoInstanceIsRunning.text: bibisco已经在运行, ApplicationWorkbenchAdvisor.ErrorDialog.Title: 糟糕, validation.required: 此字段为必填项。, // ... 继续翻译其他条目 }重要提示保持键名不变只修改冒号后面的值。键名是bibisco内部使用的标识符不能更改。步骤3更新LocaleService.js打开bibisco/app/services/LocaleService.js文件找到getLocales()函数大约在第79-98行getLocales: function() { return { cs: Český, de: Deutsch, en-ca: English (Canada), en-gb: English (UK), en-us: English (USA), es: Español, fr: Français, it: Italiano, nl: Nederlands, pl: Polski, pt-br: Português (Brasil), pt-pt: Português (Portugal), ru: Русский, sl: Slovenski jezik, sr: Srpski, tr: Türkçe, uk: Українська }; },在这里添加你的新语言例如添加中文getLocales: function() { return { cs: Český, de: Deutsch, en-ca: English (Canada), en-gb: English (UK), en-us: English (USA), es: Español, fr: Français, it: Italiano, nl: Nederlands, pl: Polski, pt-br: Português (Brasil), pt-pt: Português (Portugal), ru: Русский, sl: Slovenski jezik, sr: Srpski, tr: Türkçe, uk: Українська, zh-cn: 中文简体 // 添加这一行 }; },步骤4更新getResourceFilePath函数在同一个文件中找到getResourceFilePath()函数大约在第100-143行添加对新语言的支持getResourceFilePath: function(language) { let resourceSuffix en; if (language ca-es) { resourceSuffix ca-es; } else if (language cs) { resourceSuffix cs; } else if (language da-dk) { resourceSuffix da-dk; } else if (language de) { resourceSuffix de; } else if (language.startsWith(es)) { resourceSuffix es; } else if (language fr) { resourceSuffix fr; } else if (language it) { resourceSuffix it; } else if (language nb-no) { resourceSuffix no; } else if (language nl) { resourceSuffix nl; } else if (language pl) { resourceSuffix pl; } else if (language ru) { resourceSuffix ru; } else if (language sr) { resourceSuffix sr; } else if (language sv) { resourceSuffix sv; } else if (language tr) { resourceSuffix tr; } else if (language uk) { resourceSuffix uk; } else if (language pt-pt) { resourceSuffix pt-pt; } else if (language pt-br) { resourceSuffix pt-br; } else if (language zh-cn) { // 添加这一行 resourceSuffix zh-cn; // 添加这一行 } // 添加这一行 let resourcesDirPath FileSystemService.concatPath(ContextService.getAppPath(), resources); let resourcesFilePath FileSystemService.concatPath(resourcesDirPath, locale-resourceSuffix.json); return resourcesFilePath; },步骤5更新calculatePreferredLocale函数在同一个文件的calculatePreferredLocale()函数中大约在第147-191行添加对新语言的支持function calculatePreferredLocale(preferredLanguage, LoggerService) { let preferredLocale; preferredLanguage preferredLanguage.toLowerCase().replace(/_/g, -); if (preferredLanguage.startsWith(cs)) { preferredLocale cs; } else if (preferredLanguage.startsWith(de)) { preferredLocale de; } else if (preferredLanguage.startsWith(es)) { preferredLocale es; } else if (preferredLanguage.startsWith(fr)) { preferredLocale fr; } else if (preferredLanguage.startsWith(it)) { preferredLocale it; } else if (preferredLanguage.startsWith(nl)) { preferredLocale nl; } else if (preferredLanguage.startsWith(pl)) { preferredLocale pl; } else if (preferredLanguage.startsWith(ru)) { preferredLocale ru; } else if (preferredLanguage.startsWith(sl)) { preferredLocale sl; } else if (preferredLanguage.startsWith(sr)) { preferredLocale sr; } else if (preferredLanguage.startsWith(tr)) { preferredLocale tr; } else if (preferredLanguage pt-pt) { preferredLocale pt-pt; } else if (preferredLanguage pt-br) { preferredLocale pt-br; } else if (preferredLanguage en-ca) { preferredLocale en-ca; } else if (preferredLanguage en-gb) { preferredLocale en-gb; } else if (preferredLanguage.startsWith(zh)) { // 添加这一行 preferredLocale zh-cn; // 添加这一行 } else { // 添加这一行 preferredLocale en-us; } LoggerService.debug(calculatePreferredLocale - input: preferredLanguage - output: preferredLocale); return preferredLocale; }bibisco项目文件夹结构资源文件位于app/resources目录下 翻译注意事项和最佳实践1. 保持格式占位符不变在翻译过程中你会遇到一些包含占位符的字符串如validation.maxlength: Please enter no more than {{maxlength}} characters.翻译时需要保留{{maxlength}}这样的占位符validation.maxlength: 请输入不超过{{maxlength}}个字符。2. 处理复数形式某些字符串可能需要考虑复数形式虽然bibisco的翻译系统相对简单但你需要确保翻译在单复数情况下都通顺。3. 保持一致性确保相同术语在整个翻译文件中保持一致。例如如果Save翻译为保存那么所有出现Save的地方都应该使用保存。4. 注意快捷键提示有些字符串包含快捷键提示如save_tooltip: save (CTRLS), save_tooltip_mac: save (CMDS)翻译时需要保留快捷键信息save_tooltip: 保存 (CTRLS), save_tooltip_mac: 保存 (CMDS)5. 测试你的翻译完成翻译后启动bibisco测试你的语言进入设置页面在语言下拉菜单中选择你添加的新语言检查所有界面元素是否正确显示bibisco的欢迎界面语言设置会影响整个应用程序的显示 项目文件结构参考了解bibisco的文件结构有助于更好地进行本地化工作翻译文件位置:bibisco/app/resources/locale-*.json本地化服务:bibisco/app/services/LocaleService.js语言选择组件:bibisco/app/components/common/forms/language-select/设置页面:bibisco/app/components/settings/settings.html 快速开始本地化工作如果你想要为bibisco添加新语言支持可以按照以下步骤快速开始克隆仓库:git clone https://gitcode.com/gh_mirrors/bi/bibisco创建翻译文件: 基于英文模板创建你的语言文件开始翻译: 使用文本编辑器或专门的翻译工具进行翻译修改代码: 更新LocaleService.js文件测试: 运行bibisco测试你的翻译提交贡献: 将你的翻译提交给bibisco项目 本地化技巧和常见问题技巧1使用翻译记忆工具对于大型翻译项目bibisco有超过1100个字符串建议使用翻译记忆工具如OmegaT、Poedit或在线翻译平台这可以提高翻译效率和一致性。技巧2分阶段翻译不要试图一次性翻译所有内容。可以先翻译核心界面设置、菜单、对话框然后逐步翻译其他部分。技巧3寻求帮助如果你对某些专业术语不确定可以在开源社区或翻译论坛寻求帮助。bibisco的翻译社区很活跃其他译者可能已经解决了类似问题。常见问题1翻译后界面显示异常如果翻译后某些界面显示异常检查是否有遗漏的引号、逗号或JSON格式错误。可以使用JSON验证工具检查文件格式。常见问题2快捷键不工作确保翻译快捷键提示时没有修改快捷键组合本身只翻译描述部分。 为特定语言优化不同语言有不同的特点在翻译时需要考虑语言方向: 对于从右到左的语言如阿拉伯语、希伯来语可能需要额外的CSS调整字符长度: 某些语言的翻译可能比原文长或短确保界面布局不受影响文化适配: 某些比喻或文化特定的表达可能需要本地化调整设置按钮是访问语言选项的入口 贡献你的翻译完成翻译后你可以通过以下方式贡献给bibisco项目创建Pull Request: 在GitCode上创建分支并提交更改联系维护者: 通过邮件联系bibisco团队加入翻译社区: 参与其他语言的翻译讨论记住你的贡献将帮助全球更多写作者使用他们熟悉的语言创作小说 验证你的翻译完成翻译后建议进行以下验证功能测试: 测试所有主要功能是否正常工作界面检查: 检查所有界面元素是否正常显示错误信息: 测试各种错误情况下的信息显示快捷键: 验证所有快捷键提示是否正确通过这篇指南你现在应该能够为bibisco添加新的语言支持了。无论你是想为你的母语社区做贡献还是想个性化你的写作环境本地化都是一个非常有价值的贡献开始你的bibisco本地化之旅让更多写作者能够用自己熟悉的语言创作精彩的小说吧✨【免费下载链接】bibiscoNovel writing software项目地址: https://gitcode.com/gh_mirrors/bi/bibisco创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考