You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

README_CN.md 2.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. # 前端 i18n 修改
  2. ## 后端多语言支持
  3. `api/libs/helper.py:117` 中添加对应的语言支持。如:
  4. ```python
  5. def supported_language(lang):
  6. if lang in ['en-US', 'zh-Hans', 'de', 'de-AT']:
  7. return lang
  8. ```
  9. ## 添加多语言文件
  10. 在 `web/i18n/lang` 下添加不同模块的多语言文件。文件命令为 模块名.{LANG}.ts。详细参考[LANG](https://www.venea.net/web/culture_code)
  11. ## 引入新添加的多语言文件
  12. 在 `web/i18n/i18next-config.ts` 中 resources 对象中中引入新添加的多语言文件。如:
  13. ```javascript
  14. const resources = {
  15. 'en': {...},
  16. 'zh-Hans': {...},
  17. // 引入新添加的语言
  18. 'new LANG': {
  19. translation: {
  20. common: commonNewLan,
  21. layout: layoutNewLan,
  22. ...
  23. }
  24. }
  25. }
  26. ```
  27. ## 翻译过程中的改动
  28. ### 日期格式化的多语言处理
  29. 目前日期做多语言格式化的文件涉及到如下 2 个:
  30. ```javascript
  31. 1. web/app/components/header/account-setting/members-page/index.tsx
  32. // Line: 78
  33. {dayjs(Number((account.last_login_at || account.created_at)) * 1000).locale(locale === 'zh-Hans' ? 'zh-cn' : 'en').fromNow()}
  34. 2. web/app/components/develop/secret-key/secret-key-modal.tsx
  35. // Line:82
  36. const formatDate = (timestamp: any) => {
  37. if (locale === 'en') {
  38. return new Intl.DateTimeFormat('en-US', { year: 'numeric', month: 'long', day: 'numeric' }).format((+timestamp) * 1000)
  39. } else {
  40. return new Intl.DateTimeFormat('fr-CA', { year: 'numeric', month: '2-digit', day: '2-digit' }).format((+timestamp) * 1000)
  41. }
  42. }
  43. ```
  44. 看需求做对应的改动。
  45. ### 翻译中带变量的内容的处理
  46. 翻译中会存在带变量的情况,变量的值会在运行时被替换。翻译中的变量会用{{ 和 }} 包裹。
  47. 翻译带变量的内容时:
  48. 1. 不能改变量的名称。即:变量的名称不需要做翻译。
  49. 2. 确保变量填充后,语句仍保持通顺。
  50. 查找所有翻译中带变量的方式:在 ./web/i18n/lang 下搜索:{{。
  51. ### 翻译内容太长破坏 UI
  52. 如果某个翻译的内容比其他语言的长很多,检查下是否会破坏 UI。
  53. ## 帮助文档
  54. 目前的帮助文档的调整逻辑是:中文跳转中文,其他语言跳英文。如果帮助文档也做了多语言。需要做这块的改动。
  55. ## 验证
  56. 新增语言包建议通过本地部署最新代码来验证,可参考:https://docs.dify.ai/getting-started/install-self-hosted/local-source-code
  57. 验证点:
  58. 1. 首次初始化安装是否存在新语言下拉选项,以及是否可以用新语言进行初始化
  59. 2. 个人设置中是否存在新语言下拉选项,以及是否可以选择并保存新语言
  60. 3. 界面各处文案是否使用新语言来展示,以及文案是否破坏 UI
  61. 4. 从模板创建应用内容是否均为新语言
  62. 5. (CLOUD 版)通过 OAuth 授权登录后,是否直接设置当前浏览器语言为界面语言