Feat/upgrade check i18n scripts (#4671)

This commit is contained in:
crazywoola 2024-05-27 10:36:34 +08:00 committed by GitHub
parent af026c5953
commit 8152bc6fbf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
13 changed files with 270 additions and 122 deletions

View File

@ -46,6 +46,20 @@ const translation = {
content: 'Die Variable wird in anderen Knoten verwendet. Möchten Sie sie trotzdem entfernen?',
},
insertVarTip: 'Drücken Sie die \'/\' Taste, um schnell einzufügen',
processData: 'Daten verarbeiten',
input: 'Eingabe',
output: 'Ausgabe',
jinjaEditorPlaceholder: 'Tippen Sie \'/\' oder \'{\' um eine Variable einzufügen',
viewOnly: 'Nur Ansicht',
showRunHistory: 'Ausführungsverlauf anzeigen',
enableJinja: 'Jinja-Template-Unterstützung aktivieren',
learnMore: 'Mehr erfahren',
copy: 'Kopieren',
duplicate: 'Duplizieren',
addBlock: 'Block hinzufügen',
pasteHere: 'Hier einfügen',
pointerMode: 'Zeigermodus',
handMode: 'Handmodus',
},
errorMsg: {
fieldRequired: '{{field}} wird benötigt',
@ -201,6 +215,7 @@ const translation = {
singleRun: {
variable: 'Variable',
},
sysQueryInUser: 'sys.query in der Benutzeranfrage ist erforderlich',
},
knowledgeRetrieval: {
queryVariable: 'Abfragevariable',
@ -258,6 +273,9 @@ const translation = {
code: {
inputVars: 'Eingabevariablen',
outputVars: 'Ausgabevariablen',
advancedDependencies: 'Erweiterte Abhängigkeiten',
advancedDependenciesTip: 'Fügen Sie einige vorab geladene Abhängigkeiten hinzu, die mehr Zeit benötigen oder hier nicht standardmäßig integriert sind',
searchDependencies: 'Abhängigkeiten suchen',
},
templateTransform: {
inputVars: 'Eingabevariablen',

View File

@ -49,6 +49,17 @@ const translation = {
processData: 'Traiter les données',
input: 'Entrée',
output: 'Sortie',
jinjaEditorPlaceholder: 'Tapez \'/\' ou \'{\' pour insérer une variable',
viewOnly: 'Vue Seulement',
showRunHistory: 'Afficher l\'Historique des Exécutions',
enableJinja: 'Activer le support des modèles Jinja',
learnMore: 'En Savoir Plus',
copy: 'Copier',
duplicate: 'Dupliquer',
addBlock: 'Ajouter un Bloc',
pasteHere: 'Coller Ici',
pointerMode: 'Mode Pointeur',
handMode: 'Mode Main',
},
errorMsg: {
fieldRequired: '{{field}} est requis',
@ -204,6 +215,7 @@ const translation = {
singleRun: {
variable: 'Variable',
},
sysQueryInUser: 'sys.query dans l\'entrée utilisateur',
},
knowledgeRetrieval: {
queryVariable: 'Variable de requête',
@ -261,6 +273,9 @@ const translation = {
code: {
inputVars: 'Variables d\'entrée',
outputVars: 'Variables de sortie',
advancedDependencies: 'Dépendances Avancées',
advancedDependenciesTip: 'Ajoutez ici des dépendances préchargées qui prennent plus de temps à consommer ou qui ne sont pas intégrées par défaut',
searchDependencies: 'Rechercher des Dépendances',
},
templateTransform: {
inputVars: 'Variables d\'entrée',

View File

@ -49,6 +49,17 @@ const translation = {
processData: 'データ処理',
input: '入力',
output: '出力',
jinjaEditorPlaceholder: '変数を挿入するには「/」または「{」を入力してください',
viewOnly: '表示のみ',
showRunHistory: '実行履歴を表示',
enableJinja: 'Jinjaテンプレートのサポートを有効にする',
learnMore: '詳細を学ぶ',
copy: 'コピー',
duplicate: '複製',
addBlock: 'ブロックを追加',
pasteHere: 'ここに貼り付け',
pointerMode: 'ポインターモード',
handMode: 'ハンドモード',
},
errorMsg: {
fieldRequired: '{{field}}は必須です',
@ -204,6 +215,7 @@ const translation = {
singleRun: {
variable: '変数',
},
sysQueryInUser: 'ユーザーメッセージにsys.queryが必要です',
},
knowledgeRetrieval: {
queryVariable: 'クエリ変数',
@ -261,6 +273,9 @@ const translation = {
code: {
inputVars: '入力変数',
outputVars: '出力変数',
advancedDependencies: '高度な依存関係',
advancedDependenciesTip: '消費に時間がかかる、またはデフォルトで組み込まれていない事前ロードされた依存関係を追加します',
searchDependencies: '依存関係を検索',
},
templateTransform: {
inputVars: '入力変数',

View File

@ -49,6 +49,8 @@ const translation = {
processData: '데이터 처리',
input: '입력',
output: '출력',
enableJinja: 'Jinja 템플릿 지원 활성화',
learnMore: '더 알아보기',
jinjaEditorPlaceholder: '\'/\' 또는 \'{\'를 입력하여 변수를 삽입하세요.',
viewOnly: '보기 모드',
showRunHistory: '실행 기록 보기',
@ -271,6 +273,9 @@ const translation = {
code: {
inputVars: '입력 변수',
outputVars: '출력 변수',
advancedDependencies: '고급 종속성',
advancedDependenciesTip: '소비하는 데 시간이 더 걸리거나 기본 내장되지 않은 일부 사전 로드된 종속성을 추가하십시오',
searchDependencies: '종속성 검색',
},
templateTransform: {
inputVars: '입력 변수',

View File

@ -1,3 +1,4 @@
import data from './languages.json'
export type Item = {
value: number | string
name: string
@ -23,127 +24,7 @@ export type I18nText = {
'pl-PL': string
}
export const languages = [
{
value: 'en-US',
name: 'English (United States)',
prompt_name: 'English',
example: 'Hello, Dify!',
supported: true,
},
{
value: 'zh-Hans',
name: '简体中文',
prompt_name: 'Chinese Simplified',
example: '你好Dify',
supported: true,
},
{
value: 'zh-Hant',
name: '繁體中文',
prompt_name: 'Chinese Traditional',
example: '你好Dify',
supported: true,
},
{
value: 'pt-BR',
name: 'Português (Brasil)',
prompt_name: 'Portuguese',
example: 'Olá, Dify!',
supported: true,
},
{
value: 'es-ES',
name: 'Español (España)',
prompt_name: 'Spanish',
example: 'Saluton, Dify!',
supported: false,
},
{
value: 'fr-FR',
name: 'Français (France)',
prompt_name: 'French',
example: 'Bonjour, Dify!',
supported: true,
},
{
value: 'de-DE',
name: 'Deutsch (Deutschland)',
prompt_name: 'German',
example: 'Hallo, Dify!',
supported: true,
},
{
value: 'ja-JP',
name: '日本語 (日本)',
prompt_name: 'Japanese',
example: 'こんにちは、Dify!',
supported: true,
},
{
value: 'ko-KR',
name: '한국어 (대한민국)',
prompt_name: 'Korean',
example: '안녕하세요, Dify!',
supported: true,
},
{
value: 'ru-RU',
name: 'Русский (Россия)',
prompt_name: 'Russian',
example: ' Привет, Dify!',
supported: false,
},
{
value: 'it-IT',
name: 'Italiano (Italia)',
prompt_name: 'Italian',
example: 'Ciao, Dify!',
supported: false,
},
{
value: 'th-TH',
name: 'ไทย (ประเทศไทย)',
prompt_name: 'Thai',
example: 'สวัสดี Dify!',
supported: false,
},
{
value: 'id-ID',
name: 'Bahasa Indonesia',
prompt_name: 'Indonesian',
example: 'Saluto, Dify!',
supported: false,
},
{
value: 'uk-UA',
name: 'Українська (Україна)',
prompt_name: 'Ukrainian',
example: 'Привет, Dify!',
supported: true,
},
{
value: 'vi-VN',
name: 'Tiếng Việt (Việt Nam)',
prompt_name: 'Vietnamese',
example: 'Xin chào, Dify!',
supported: true,
},
{
value: 'ro-RO',
name: 'Română (România)',
prompt_name: 'Romanian',
example: 'Salut, Dify!',
supported: true,
},
{
value: 'pl-PL',
name: 'Polski (Polish)',
prompt_name: 'Polish',
example: 'Cześć, Dify!',
supported: true,
},
]
export const languages = data.languages
export const LanguagesSupported = languages.filter(item => item.supported).map(item => item.value)

123
web/i18n/languages.json Normal file
View File

@ -0,0 +1,123 @@
{
"languages": [
{
"value": "en-US",
"name": "English (United States)",
"prompt_name": "English",
"example": "Hello, Dify!",
"supported": true
},
{
"value": "zh-Hans",
"name": "简体中文",
"prompt_name": "Chinese Simplified",
"example": "你好Dify",
"supported": true
},
{
"value": "zh-Hant",
"name": "繁體中文",
"prompt_name": "Chinese Traditional",
"example": "你好Dify",
"supported": true
},
{
"value": "pt-BR",
"name": "Português (Brasil)",
"prompt_name": "Portuguese",
"example": "Olá, Dify!",
"supported": true
},
{
"value": "es-ES",
"name": "Español (España)",
"prompt_name": "Spanish",
"example": "Saluton, Dify!",
"supported": false
},
{
"value": "fr-FR",
"name": "Français (France)",
"prompt_name": "French",
"example": "Bonjour, Dify!",
"supported": true
},
{
"value": "de-DE",
"name": "Deutsch (Deutschland)",
"prompt_name": "German",
"example": "Hallo, Dify!",
"supported": true
},
{
"value": "ja-JP",
"name": "日本語 (日本)",
"prompt_name": "Japanese",
"example": "こんにちは、Dify!",
"supported": true
},
{
"value": "ko-KR",
"name": "한국어 (대한민국)",
"prompt_name": "Korean",
"example": "안녕하세요, Dify!",
"supported": true
},
{
"value": "ru-RU",
"name": "Русский (Россия)",
"prompt_name": "Russian",
"example": " Привет, Dify!",
"supported": false
},
{
"value": "it-IT",
"name": "Italiano (Italia)",
"prompt_name": "Italian",
"example": "Ciao, Dify!",
"supported": false
},
{
"value": "th-TH",
"name": "ไทย (ประเทศไทย)",
"prompt_name": "Thai",
"example": "สวัสดี Dify!",
"supported": false
},
{
"value": "id-ID",
"name": "Bahasa Indonesia",
"prompt_name": "Indonesian",
"example": "Saluto, Dify!",
"supported": false
},
{
"value": "uk-UA",
"name": "Українська (Україна)",
"prompt_name": "Ukrainian",
"example": "Привет, Dify!",
"supported": true
},
{
"value": "vi-VN",
"name": "Tiếng Việt (Việt Nam)",
"prompt_name": "Vietnamese",
"example": "Xin chào, Dify!",
"supported": true
},
{
"value": "ro-RO",
"name": "Română (România)",
"prompt_name": "Romanian",
"example": "Salut, Dify!",
"supported": true
},
{
"value": "pl-PL",
"name": "Polski (Polish)",
"prompt_name": "Polish",
"example": "Cześć, Dify!",
"supported": true
}
]
}

View File

@ -54,6 +54,12 @@ const translation = {
showRunHistory: 'Pokaż Historię Uruchomień',
enableJinja: 'Włącz wsparcie dla szablonów Jinja',
learnMore: 'Czytaj więcej',
copy: 'Kopiuj',
duplicate: 'Duplikuj',
addBlock: 'Dodaj Blok',
pasteHere: 'Wklej Tutaj',
pointerMode: 'Tryb Wskaźnika',
handMode: 'Tryb Ręczny',
},
errorMsg: {
fieldRequired: '{{field}} jest wymagane',
@ -267,6 +273,10 @@ const translation = {
code: {
inputVars: 'Zmienne Wejściowe',
outputVars: 'Zmienne Wyjściowe',
advancedDependencies: 'Zaawansowane Zależności',
advancedDependenciesTip: 'Dodaj tutaj niektóre wstępnie załadowane zależności, które wymagają więcej czasu na załadowanie lub nie są domyślnie wbudowane',
searchDependencies: 'Wyszukaj Zależności',
},
templateTransform: {
inputVars: 'Zmienne Wejściowe',

View File

@ -49,6 +49,17 @@ const translation = {
processData: 'Processar dados',
input: 'Entrada',
output: 'Saída',
jinjaEditorPlaceholder: 'Digite \'/\' ou \'{\' para inserir variável',
viewOnly: 'Apenas Visualização',
showRunHistory: 'Mostrar Histórico de Execuções',
enableJinja: 'Ativar suporte a templates Jinja',
learnMore: 'Saiba Mais',
copy: 'Copiar',
duplicate: 'Duplicar',
addBlock: 'Adicionar Bloco',
pasteHere: 'Colar Aqui',
pointerMode: 'Modo Ponteiro',
handMode: 'Modo Manual',
},
errorMsg: {
fieldRequired: '{{field}} é obrigatório',
@ -204,6 +215,7 @@ const translation = {
singleRun: {
variable: 'Variável',
},
sysQueryInUser: 'sys.query em user é inválido',
},
knowledgeRetrieval: {
queryVariable: 'Variável de consulta',
@ -261,6 +273,9 @@ const translation = {
code: {
inputVars: 'Variáveis de entrada',
outputVars: 'Variáveis de saída',
advancedDependencies: 'Dependências Avançadas',
advancedDependenciesTip: 'Adicione algumas dependências pré-carregadas que demoram mais para serem consumidas ou que não são padrão aqui',
searchDependencies: 'Pesquisar Dependências',
},
templateTransform: {
inputVars: 'Variáveis de entrada',

View File

@ -52,6 +52,14 @@ const translation = {
jinjaEditorPlaceholder: 'Tastați \'/\' sau \'{\' pentru a insera variabila',
viewOnly: 'Doar vizualizare',
showRunHistory: 'Afișează istoricul de rulare',
enableJinja: 'Activează suportul pentru șabloane Jinja',
learnMore: 'Află mai multe',
copy: 'Copiază',
duplicate: 'Duplică',
addBlock: 'Adaugă Bloc',
pasteHere: 'Lipește Aici',
pointerMode: 'Mod Indicator',
handMode: 'Mod Manual',
},
errorMsg: {
fieldRequired: '{{field}} este obligatoriu',
@ -265,6 +273,9 @@ const translation = {
code: {
inputVars: 'Variabile de intrare',
outputVars: 'Variabile de ieșire',
advancedDependencies: 'Dependențe Avansate',
advancedDependenciesTip: 'Adăugați aici unele dependențe preîncărcate care necesită mai mult timp pentru a fi utilizate sau care nu sunt în mod implicit integrate',
searchDependencies: 'Căutați Dependențe',
},
templateTransform: {
inputVars: 'Variabile de intrare',

View File

@ -4,7 +4,8 @@ const path = require('node:path')
const transpile = require('typescript').transpile
const targetLanguage = 'en-US'
const languages = ['zh-Hans', 'fr-FR', 'ja-JP', 'pt-BR', 'uk-UA', 'vi-VN', 'zh-Hant']
const data = require('./languages.json')
const languages = data.languages.filter(language => language.supported).map(language => language.value)
async function getKeysFromLanuage(language) {
return new Promise((resolve, reject) => {

View File

@ -49,6 +49,17 @@ const translation = {
processData: 'Обробка даних',
input: 'Вхід',
output: 'Вихід',
jinjaEditorPlaceholder: 'Введіть \'/\' або \'{\' щоб вставити змінну',
viewOnly: 'Тільки перегляд',
showRunHistory: 'Показати історію запусків',
enableJinja: 'Увімкнути підтримку шаблонів Jinja',
learnMore: 'Дізнатися більше',
copy: 'Копіювати',
duplicate: 'Дублювати',
addBlock: 'Додати блок',
pasteHere: 'Вставити тут',
pointerMode: 'Режим вказівника',
handMode: 'Режим руки',
},
errorMsg: {
fieldRequired: '{{field}} є обов\'язковим',
@ -204,6 +215,7 @@ const translation = {
singleRun: {
variable: 'Змінна',
},
sysQueryInUser: 'sys.query потрібно в повідомленні користувача.',
},
knowledgeRetrieval: {
queryVariable: 'Запит змінної',
@ -261,6 +273,9 @@ const translation = {
code: {
inputVars: 'Вхідні змінні',
outputVars: 'Вихідні змінні',
advancedDependencies: 'Розширені залежності',
advancedDependenciesTip: 'Додайте деякі попередньо завантажені залежності, які потребують більше часу для використання або не є вбудованими за замовчуванням',
searchDependencies: 'Шукати залежності',
},
templateTransform: {
inputVars: 'Вхідні змінні',

View File

@ -49,6 +49,17 @@ const translation = {
processData: 'Xử lý dữ liệu',
input: 'Nhập',
output: 'Đầu ra',
jinjaEditorPlaceholder: 'Nhập \'/\' hoặc \'{\' để chèn biến',
viewOnly: 'Chỉ Xem',
showRunHistory: 'Hiển Thị Lịch Sử Chạy',
enableJinja: 'Kích Hoạt Hỗ Trợ Mẫu Jinja',
learnMore: 'Tìm Hiểu Thêm',
copy: 'Sao Chép',
duplicate: 'Nhân Bản',
addBlock: 'Thêm Khối',
pasteHere: 'Dán Vào Đây',
pointerMode: 'Chế Độ Con Trỏ',
handMode: 'Chế Độ Tay',
},
errorMsg: {
fieldRequired: '{{field}} là bắt buộc',
@ -204,6 +215,7 @@ const translation = {
singleRun: {
variable: 'Biến',
},
sysQueryInUser: 'sys.query được yêu cầu trong tin nhắn người dùng.',
},
knowledgeRetrieval: {
queryVariable: 'Biến Truy vấn',
@ -261,6 +273,10 @@ const translation = {
code: {
inputVars: 'Biến đầu vào',
outputVars: 'Biến đầu ra',
advancedDependencies: 'Phụ thuộc Nâng cao',
advancedDependenciesTip: 'Thêm một số phụ thuộc đã được tải sẵn cần nhiều thời gian hơn để sử dụng hoặc không được tích hợp sẵn tại đây',
searchDependencies: 'Tìm Kiếm Phụ Thuộc',
},
templateTransform: {
inputVars: 'Biến đầu vào',

View File

@ -49,6 +49,17 @@ const translation = {
processData: '資料處理',
input: '輸入',
output: '輸出',
jinjaEditorPlaceholder: '输入 “/” 或 “{” 插入变量',
viewOnly: '只读',
showRunHistory: '显示运行历史',
enableJinja: '开启支持 Jinja 模板',
learnMore: '了解更多',
copy: '拷贝',
duplicate: '复制',
addBlock: '添加节点',
pasteHere: '粘贴到这里',
pointerMode: '指针模式',
handMode: '手模式',
},
errorMsg: {
fieldRequired: '{{field}} 不能為空',
@ -249,10 +260,22 @@ const translation = {
'header': 'Header',
},
insertVarPlaceholder: '鍵入 \'/\' 鍵快速插入變數',
timeout: {
title: '超时设置',
connectLabel: '连接超时',
connectPlaceholder: '输入连接超时(以秒为单位)',
readLabel: '读取超时',
readPlaceholder: '输入读取超时(以秒为单位)',
writeLabel: '写入超时',
writePlaceholder: '输入写入超时(以秒为单位)',
},
},
code: {
inputVars: '輸入變數',
outputVars: '輸出變數',
advancedDependencies: '高级依赖',
advancedDependenciesTip: '在这里添加一些预加载需要消耗较多时间或非默认内置的依赖包',
searchDependencies: '搜索依赖',
},
templateTransform: {
inputVars: '輸入變數',