mirror of
https://github.com/langgenius/dify.git
synced 2024-11-16 11:42:29 +08:00
176 lines
4.8 KiB
Markdown
176 lines
4.8 KiB
Markdown
|
# Internationalization (i18n)
|
|||
|
|
|||
|
## Introduction
|
|||
|
|
|||
|
This directory contains the internationalization (i18n) files for this project.
|
|||
|
|
|||
|
## File Structure
|
|||
|
|
|||
|
```
|
|||
|
├── [ 24] README.md
|
|||
|
├── [ 0] README_CN.md
|
|||
|
├── [ 704] en-US
|
|||
|
│ ├── [2.4K] app-annotation.ts
|
|||
|
│ ├── [5.2K] app-api.ts
|
|||
|
│ ├── [ 16K] app-debug.ts
|
|||
|
│ ├── [2.1K] app-log.ts
|
|||
|
│ ├── [5.3K] app-overview.ts
|
|||
|
│ ├── [1.9K] app.ts
|
|||
|
│ ├── [4.1K] billing.ts
|
|||
|
│ ├── [ 17K] common.ts
|
|||
|
│ ├── [ 859] custom.ts
|
|||
|
│ ├── [5.7K] dataset-creation.ts
|
|||
|
│ ├── [ 10K] dataset-documents.ts
|
|||
|
│ ├── [ 761] dataset-hit-testing.ts
|
|||
|
│ ├── [1.7K] dataset-settings.ts
|
|||
|
│ ├── [2.0K] dataset.ts
|
|||
|
│ ├── [ 941] explore.ts
|
|||
|
│ ├── [ 52] layout.ts
|
|||
|
│ ├── [2.3K] login.ts
|
|||
|
│ ├── [ 52] register.ts
|
|||
|
│ ├── [2.5K] share-app.ts
|
|||
|
│ └── [2.8K] tools.ts
|
|||
|
├── [1.6K] i18next-config.ts
|
|||
|
├── [ 634] index.ts
|
|||
|
├── [4.4K] language.ts
|
|||
|
```
|
|||
|
|
|||
|
We use English as the default language. The i18n files are organized by language and then by module. For example, the English translation for the `app` module is in `en-US/app.ts`.
|
|||
|
|
|||
|
If you want to add a new language or modify an existing translation, you can create a new file for the language or modify the existing file. The file name should be the language code (e.g., `zh-CN` for Chinese) and the file extension should be `.ts`.
|
|||
|
|
|||
|
For example, if you want to add french translation, you can create a new folder `fr-FR` and add the translation files in it.
|
|||
|
|
|||
|
By default we will use `LanguagesSupported` to determine which languages are supported. For example, in login page and settings page, we will use `LanguagesSupported` to determine which languages are supported and display them in the language selection dropdown.
|
|||
|
|
|||
|
## Example
|
|||
|
|
|||
|
1. Create a new folder for the new language.
|
|||
|
|
|||
|
```
|
|||
|
cp -r en-US fr-FR
|
|||
|
```
|
|||
|
|
|||
|
2. Modify the translation files in the new folder.
|
|||
|
|
|||
|
3. Add type to new language in the `language.ts` file.
|
|||
|
|
|||
|
```typescript
|
|||
|
export type I18nText = {
|
|||
|
'en-US': string
|
|||
|
'zh-Hans': string
|
|||
|
'pt-BR': string
|
|||
|
'es-ES': string
|
|||
|
'fr-FR': string
|
|||
|
'de-DE': string
|
|||
|
'ja-JP': string
|
|||
|
'ko-KR': string
|
|||
|
'ru-RU': string
|
|||
|
'it-IT': string
|
|||
|
'uk-UA': string
|
|||
|
'YOUR_LANGUAGE_CODE': string
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
4. Add the new language to the `language.ts` file.
|
|||
|
|
|||
|
```typescript
|
|||
|
|
|||
|
export const languages = [
|
|||
|
{
|
|||
|
value: 'en-US',
|
|||
|
name: 'English(United States)',
|
|||
|
example: 'Hello, Dify!',
|
|||
|
supported: true,
|
|||
|
},
|
|||
|
{
|
|||
|
value: 'zh-Hans',
|
|||
|
name: '简体中文',
|
|||
|
example: '你好,Dify!',
|
|||
|
supported: true,
|
|||
|
},
|
|||
|
{
|
|||
|
value: 'pt-BR',
|
|||
|
name: 'Português(Brasil)',
|
|||
|
example: 'Olá, Dify!',
|
|||
|
supported: true,
|
|||
|
},
|
|||
|
{
|
|||
|
value: 'es-ES',
|
|||
|
name: 'Español(España)',
|
|||
|
example: 'Saluton, Dify!',
|
|||
|
supported: false,
|
|||
|
},
|
|||
|
{
|
|||
|
value: 'fr-FR',
|
|||
|
name: 'Français(France)',
|
|||
|
example: 'Bonjour, Dify!',
|
|||
|
supported: false,
|
|||
|
},
|
|||
|
{
|
|||
|
value: 'de-DE',
|
|||
|
name: 'Deutsch(Deutschland)',
|
|||
|
example: 'Hallo, Dify!',
|
|||
|
supported: false,
|
|||
|
},
|
|||
|
{
|
|||
|
value: 'ja-JP',
|
|||
|
name: '日本語(日本)',
|
|||
|
example: 'こんにちは、Dify!',
|
|||
|
supported: false,
|
|||
|
},
|
|||
|
{
|
|||
|
value: 'ko-KR',
|
|||
|
name: '한국어(대한민국)',
|
|||
|
example: '안녕, Dify!',
|
|||
|
supported: false,
|
|||
|
},
|
|||
|
{
|
|||
|
value: 'ru-RU',
|
|||
|
name: 'Русский(Россия)',
|
|||
|
example: ' Привет, Dify!',
|
|||
|
supported: false,
|
|||
|
},
|
|||
|
{
|
|||
|
value: 'it-IT',
|
|||
|
name: 'Italiano(Italia)',
|
|||
|
example: 'Ciao, Dify!',
|
|||
|
supported: false,
|
|||
|
},
|
|||
|
{
|
|||
|
value: 'th-TH',
|
|||
|
name: 'ไทย(ประเทศไทย)',
|
|||
|
example: 'สวัสดี Dify!',
|
|||
|
supported: false,
|
|||
|
},
|
|||
|
{
|
|||
|
value: 'id-ID',
|
|||
|
name: 'Bahasa Indonesia',
|
|||
|
example: 'Saluto, Dify!',
|
|||
|
supported: false,
|
|||
|
},
|
|||
|
{
|
|||
|
value: 'uk-UA',
|
|||
|
name: 'Українська(Україна)',
|
|||
|
example: 'Привет, Dify!',
|
|||
|
supported: true,
|
|||
|
},
|
|||
|
// Add your language here 👇
|
|||
|
...
|
|||
|
// Add your language here 👆
|
|||
|
]
|
|||
|
```
|
|||
|
|
|||
|
5. Don't forget to mark the supported field as `true` if the language is supported.
|
|||
|
|
|||
|
6. Sometime you might need to do some changes in the server side. Please change this file as well. 👇
|
|||
|
https://github.com/langgenius/dify/blob/61e4bbabaf2758354db4073cbea09fdd21a5bec1/api/constants/languages.py#L5
|
|||
|
|
|||
|
|
|||
|
|
|||
|
## Clean Up
|
|||
|
|
|||
|
That's it! You have successfully added a new language to the project. If you want to remove a language, you can simply delete the folder and remove the language from the `language.ts` file.
|
|||
|
|
|||
|
We have a list of languages that we support in the `language.ts` file. But some of them are not supported yet. So, they are marked as `false`. If you want to support a language, you can follow the steps above and mark the supported field as `true`.
|