@lobehub/chat 1.77.17 → 1.78.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +50 -0
- package/README.md +1 -1
- package/README.zh-CN.md +1 -1
- package/changelog/v1.json +18 -0
- package/contributing/Basic/Architecture.md +1 -1
- package/contributing/Basic/Architecture.zh-CN.md +1 -1
- package/contributing/Basic/Chat-API.md +326 -108
- package/contributing/Basic/Chat-API.zh-CN.md +313 -133
- package/contributing/Basic/Contributing-Guidelines.md +7 -4
- package/contributing/Basic/Contributing-Guidelines.zh-CN.md +7 -6
- package/contributing/Home.md +5 -5
- package/contributing/State-Management/State-Management-Intro.md +1 -1
- package/contributing/State-Management/State-Management-Intro.zh-CN.md +1 -1
- package/docs/self-hosting/advanced/auth/next-auth/keycloak.mdx +119 -0
- package/docs/self-hosting/advanced/auth/next-auth/keycloak.zh-CN.mdx +116 -0
- package/docs/self-hosting/advanced/auth.mdx +3 -0
- package/docs/self-hosting/advanced/auth.zh-CN.mdx +3 -0
- package/locales/ar/tool.json +21 -1
- package/locales/bg-BG/tool.json +21 -1
- package/locales/de-DE/tool.json +21 -1
- package/locales/en-US/tool.json +21 -1
- package/locales/es-ES/tool.json +21 -1
- package/locales/fa-IR/tool.json +21 -1
- package/locales/fr-FR/tool.json +21 -1
- package/locales/it-IT/tool.json +21 -1
- package/locales/ja-JP/tool.json +21 -1
- package/locales/ko-KR/tool.json +21 -1
- package/locales/nl-NL/tool.json +21 -1
- package/locales/pl-PL/tool.json +21 -1
- package/locales/pt-BR/tool.json +21 -1
- package/locales/ru-RU/tool.json +21 -1
- package/locales/tr-TR/tool.json +21 -1
- package/locales/vi-VN/tool.json +21 -1
- package/locales/zh-CN/tool.json +30 -1
- package/locales/zh-TW/tool.json +21 -1
- package/package.json +1 -1
- package/src/libs/next-auth/sso-providers/index.ts +2 -0
- package/src/libs/next-auth/sso-providers/keycloak.ts +25 -0
- package/src/locales/default/tool.ts +30 -1
- package/src/server/modules/SearXNG.ts +10 -2
- package/src/server/routers/tools/__test__/search.test.ts +3 -1
- package/src/server/routers/tools/search.ts +10 -2
- package/src/services/search.ts +2 -2
- package/src/store/chat/slices/builtinTool/actions/searXNG.test.ts +28 -8
- package/src/store/chat/slices/builtinTool/actions/searXNG.ts +22 -5
- package/src/tools/web-browsing/Portal/Search/index.tsx +1 -1
- package/src/tools/web-browsing/Render/Search/SearchQuery/SearchView.tsx +1 -1
- package/src/tools/web-browsing/Render/Search/SearchQuery/index.tsx +1 -1
- package/src/tools/web-browsing/Render/Search/SearchResult/index.tsx +1 -1
- package/src/tools/web-browsing/components/CategoryAvatar.tsx +27 -0
- package/src/tools/web-browsing/components/SearchBar.tsx +84 -4
- package/src/tools/web-browsing/const.ts +26 -0
- package/src/tools/web-browsing/index.ts +58 -28
- package/src/tools/web-browsing/systemRole.ts +62 -1
- package/src/types/tool/search.ts +10 -1
- package/src/helpers/url.ts +0 -17
@@ -0,0 +1,119 @@
|
|
1
|
+
---
|
2
|
+
title: Configuring Keycloak Authentication Service in LobeChat
|
3
|
+
description: >-
|
4
|
+
Learn how to configure the Keycloak authentication service in LobeChat,
|
5
|
+
including deployment, creation, permission settings, and environment
|
6
|
+
variables.
|
7
|
+
tags:
|
8
|
+
- Keycloak Authentication
|
9
|
+
- Environment Variable Configuration
|
10
|
+
- Single Sign-On
|
11
|
+
- LobeChat
|
12
|
+
---
|
13
|
+
|
14
|
+
# Configuring Keycloak Authentication Service in LobeChat
|
15
|
+
|
16
|
+
[Keycloak](https://www.keycloak.org/) is an open-source identity and access management solution that provides single sign-on, identity brokering, and social login features, suitable for modern applications and services.
|
17
|
+
|
18
|
+
<Callout type={'tip'}>
|
19
|
+
If you want to privately deploy Keycloak, we recommend using it together with LobeChat via Docker Compose deployment for easier service management.
|
20
|
+
</Callout>
|
21
|
+
|
22
|
+
## Keycloak Configuration Process
|
23
|
+
|
24
|
+
If you deploy using a local network IP, this guide assumes:
|
25
|
+
|
26
|
+
- Your LobeChat database version IP/port is `http://LOBECHAT_IP:3210`.
|
27
|
+
- Your privately deployed Keycloak domain is `http://KEYCLOAK_IP:8080`.
|
28
|
+
|
29
|
+
If you deploy using a public network, this guide assumes:
|
30
|
+
|
31
|
+
- Your LobeChat database version domain is `https://lobe.example.com`.
|
32
|
+
- Your privately deployed Keycloak domain is `https://lobe-auth-api.example.com`.
|
33
|
+
|
34
|
+
<Steps>
|
35
|
+
### Create Keycloak Realm and Client
|
36
|
+
|
37
|
+
Access your privately deployed Keycloak admin console (default is `http://localhost:8080/admin`) and log in with the administrator account.
|
38
|
+
|
39
|
+
1. Create a new Realm
|
40
|
+
- Click the dropdown menu in the upper left corner and select "Create Realm"
|
41
|
+
- Enter a name, such as "LobeChat", then click "Create"
|
42
|
+
|
43
|
+
2. Create a Client
|
44
|
+
- Select "Clients" from the left menu, then click "Create client"
|
45
|
+
- Fill in the following information:
|
46
|
+
- Client ID: `lobechat`
|
47
|
+
- Client type: `OpenID Connect`
|
48
|
+
- Click "Next"
|
49
|
+
- On the "Capability config" page:
|
50
|
+
- Enable "Client authentication"
|
51
|
+
- Enable "Standard flow"
|
52
|
+
- Click "Next"
|
53
|
+
- On the "Login settings" page:
|
54
|
+
- Valid redirect URIs:
|
55
|
+
- Local development environment: `http://localhost:3210/api/auth/callback/keycloak`
|
56
|
+
- Local network IP deployment: `http://LOBECHAT_IP:3210/api/auth/callback/keycloak`
|
57
|
+
- Public environment: `https://lobe.example.com/api/auth/callback/keycloak`
|
58
|
+
- Web origins: Add your LobeChat domain or IP
|
59
|
+
- Click "Save"
|
60
|
+
|
61
|
+
3. Get Client Secret
|
62
|
+
- On the client details page, switch to the "Credentials" tab
|
63
|
+
- Copy the "Client secret" value, which will be needed later
|
64
|
+
|
65
|
+
### Configure Users and Roles (Optional)
|
66
|
+
|
67
|
+
1. Create Users
|
68
|
+
- Select "Users" from the left menu, then click "Add user"
|
69
|
+
- Fill in the user information and click "Create"
|
70
|
+
- On the user details page, switch to the "Credentials" tab
|
71
|
+
- Set a password, and disable the "Temporary" option if needed
|
72
|
+
- Click "Set Password" to save
|
73
|
+
|
74
|
+
2. Create Roles and Permissions
|
75
|
+
- Select "Realm roles" from the left menu
|
76
|
+
- Click "Create role"
|
77
|
+
- Create necessary roles, such as "admin", "user", etc.
|
78
|
+
- Assign roles to users: On the user details page, switch to the "Role mapping" tab and assign appropriate roles
|
79
|
+
|
80
|
+
### Disable Registration (Optional)
|
81
|
+
|
82
|
+
To ensure the security of your application, it's recommended to control Keycloak's registration functionality.
|
83
|
+
|
84
|
+
1. Select "Realm settings" from the left menu
|
85
|
+
2. Switch to the "Login" tab
|
86
|
+
3. In the "User registration" section, disable the "User registration" option
|
87
|
+
4. Click "Save" to save the settings
|
88
|
+
|
89
|
+
<Callout type={'warning'}>
|
90
|
+
If registration is not disabled, anyone might be able to register and log in to your application. Please configure according to your security requirements.
|
91
|
+
</Callout>
|
92
|
+
|
93
|
+
### Configure Environment Variables
|
94
|
+
|
95
|
+
Set the obtained client ID and client secret as `AUTH_KEYCLOAK_ID` and `AUTH_KEYCLOAK_SECRET` in the LobeChat environment variables.
|
96
|
+
|
97
|
+
Configure the LobeChat environment variable `AUTH_KEYCLOAK_ISSUER` as:
|
98
|
+
|
99
|
+
- `http://localhost:8080/realms/LobeChat` for local development environment
|
100
|
+
- `http://KEYCLOAK_IP:8080/realms/LobeChat` for privately deployed Keycloak on a local network
|
101
|
+
- `https://lobe-auth-api.example.com/realms/LobeChat` for Keycloak deployed in a public environment
|
102
|
+
|
103
|
+
When deploying LobeChat, you need to configure the following environment variables:
|
104
|
+
|
105
|
+
| Environment Variable | Type | Description |
|
106
|
+
| ------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
107
|
+
| `NEXT_AUTH_SECRET` | Required | Key used to encrypt Auth.js session tokens. You can generate a key using: `openssl rand -base64 32` |
|
108
|
+
| `NEXT_AUTH_SSO_PROVIDERS` | Required | Select the single sign-on provider for LobeChat. For Keycloak, fill in `keycloak`. |
|
109
|
+
| `AUTH_KEYCLOAK_ID` | Required | Keycloak client ID |
|
110
|
+
| `AUTH_KEYCLOAK_SECRET` | Required | Keycloak client secret |
|
111
|
+
| `AUTH_KEYCLOAK_ISSUER` | Required | OpenID Connect issuer URL for the Keycloak provider, in the format `{keycloak_url}/realms/{realm_name}` |
|
112
|
+
| `NEXTAUTH_URL` | Required | This URL specifies the callback address for Auth.js during OAuth verification. Only needed when the default generated redirect address is incorrect. `https://lobe.example.com/api/auth` |
|
113
|
+
|
114
|
+
<Callout type={'tip'}>
|
115
|
+
Visit [📘 Environment Variables](/zh/docs/self-hosting/environment-variables/auth#keycloak) for details on related variables.
|
116
|
+
</Callout>
|
117
|
+
</Steps>
|
118
|
+
|
119
|
+
<Callout type={'info'}>After successful deployment, users will be able to authenticate through Keycloak and use LobeChat.</Callout>
|
@@ -0,0 +1,116 @@
|
|
1
|
+
---
|
2
|
+
title: 在 LobeChat 中配置 Keycloak 身份验证服务
|
3
|
+
description: 学习如何在 LobeChat 中配置 Keycloak 身份验证服务,包括部署、创建、设置权限和环境变量。
|
4
|
+
tags:
|
5
|
+
- Keycloak 身份验证
|
6
|
+
- 环境变量配置
|
7
|
+
- 单点登录
|
8
|
+
- LobeChat
|
9
|
+
---
|
10
|
+
|
11
|
+
# 配置 Keycloak 身份验证服务
|
12
|
+
|
13
|
+
[Keycloak](https://www.keycloak.org/) 是一个开源的身份和访问管理解决方案,提供单点登录、身份代理和社交登录等功能,适用于现代应用和服务。
|
14
|
+
|
15
|
+
<Callout type={'tip'}>
|
16
|
+
若你想要私有部署 Keycloak,我们建议你将之与 LobeChat 一同使用 Docker Compose 部署,这样可以更方便地管理服务。
|
17
|
+
</Callout>
|
18
|
+
|
19
|
+
## Keycloak 配置流程
|
20
|
+
|
21
|
+
若你使用局域网 IP 部署,下文假设:
|
22
|
+
|
23
|
+
- 你的 LobeChat 数据库版本 IP / 端口为 `http://LOBECHAT_IP:3210`。
|
24
|
+
- 你私有部署 Keycloak,其域名为 `http://KEYCLOAK_IP:8080`。
|
25
|
+
|
26
|
+
若你使用公网部署,下文假设:
|
27
|
+
|
28
|
+
- 你的 LobeChat 数据库版本域名为 `https://lobe.example.com`。
|
29
|
+
- 你私有部署 Keycloak,其域名为 `https://lobe-auth-api.example.com`。
|
30
|
+
|
31
|
+
<Steps>
|
32
|
+
### 创建 Keycloak 领域和客户端
|
33
|
+
|
34
|
+
访问你私有部署的 Keycloak 管理控制台(默认为 `http://localhost:8080/admin`),使用管理员账号登录。
|
35
|
+
|
36
|
+
1. 创建新领域(Realm)
|
37
|
+
- 点击左上角的下拉菜单,选择 "Create Realm"
|
38
|
+
- 输入名称,例如 "LobeChat",然后点击 "Create"
|
39
|
+
|
40
|
+
2. 创建客户端(Client)
|
41
|
+
- 在左侧菜单中选择 "Clients",然后点击 "Create client"
|
42
|
+
- 填写以下信息:
|
43
|
+
- Client ID: `lobechat`
|
44
|
+
- Client type: `OpenID Connect`
|
45
|
+
- 点击 "Next"
|
46
|
+
- 在 "Capability config" 页面:
|
47
|
+
- 启用 "Client authentication"
|
48
|
+
- 启用 "Standard flow"
|
49
|
+
- 点击 "Next"
|
50
|
+
- 在 "Login settings" 页面:
|
51
|
+
- Valid redirect URIs:
|
52
|
+
- 本地开发环境:`http://localhost:3210/api/auth/callback/keycloak`
|
53
|
+
- 局域网 IP 部署:`http://LOBECHAT_IP:3210/api/auth/callback/keycloak`
|
54
|
+
- 公网环境:`https://lobe.example.com/api/auth/callback/keycloak`
|
55
|
+
- Web origins: 添加你的 LobeChat 域名或 IP
|
56
|
+
- 点击 "Save"
|
57
|
+
|
58
|
+
3. 获取客户端密钥
|
59
|
+
- 在客户端详情页,切换到 "Credentials" 选项卡
|
60
|
+
- 复制 "Client secret" 的值,后续需要用到
|
61
|
+
|
62
|
+
### 配置用户和角色(可选)
|
63
|
+
|
64
|
+
1. 创建用户
|
65
|
+
- 在左侧菜单中选择 "Users",然后点击 "Add user"
|
66
|
+
- 填写用户信息,点击 "Create"
|
67
|
+
- 在用户详情页,切换到 "Credentials" 选项卡
|
68
|
+
- 设置密码,并根据需要禁用 "Temporary" 选项
|
69
|
+
- 点击 "Set Password" 保存
|
70
|
+
|
71
|
+
2. 创建角色和权限
|
72
|
+
- 在左侧菜单中选择 "Realm roles"
|
73
|
+
- 点击 "Create role"
|
74
|
+
- 创建所需角色,如 "admin"、"user" 等
|
75
|
+
- 为用户分配角色:在用户详情页,切换到 "Role mapping" 选项卡,分配相应角色
|
76
|
+
|
77
|
+
### 关闭注册(可选)
|
78
|
+
|
79
|
+
为了保证你的应用安全,建议控制 Keycloak 的注册功能。
|
80
|
+
|
81
|
+
1. 在左侧菜单中选择 "Realm settings"
|
82
|
+
2. 切换到 "Login" 选项卡
|
83
|
+
3. 在 "User registration" 部分,禁用 "User registration" 选项
|
84
|
+
4. 点击 "Save" 保存设置
|
85
|
+
|
86
|
+
<Callout type={'warning'}>
|
87
|
+
如果不关闭注册功能,任何人都可能注册并登录你的应用,请根据你的安全需求进行配置。
|
88
|
+
</Callout>
|
89
|
+
|
90
|
+
### 配置环境变量
|
91
|
+
|
92
|
+
将获取到的客户端 ID 和客户端密钥,设为 LobeChat 环境变量中的 `AUTH_KEYCLOAK_ID` 和 `AUTH_KEYCLOAK_SECRET`。
|
93
|
+
|
94
|
+
配置 LobeChat 环境变量中 `AUTH_KEYCLOAK_ISSUER` 为:
|
95
|
+
|
96
|
+
- `http://localhost:8080/realms/LobeChat`,若你是本地开发环境
|
97
|
+
- `http://KEYCLOAK_IP:8080/realms/LobeChat`,若你是局域网私有部署的 Keycloak
|
98
|
+
- `https://lobe-auth-api.example.com/realms/LobeChat`,若你是公网环境部署的 Keycloak
|
99
|
+
|
100
|
+
在部署 LobeChat 时,你需要配置以下环境变量:
|
101
|
+
|
102
|
+
| 环境变量 | 类型 | 描述 |
|
103
|
+
| ------------------------- | -- | ------------------------------------------------------------------------------------------------ |
|
104
|
+
| `NEXT_AUTH_SECRET` | 必选 | 用于加密 Auth.js 会话令牌的密钥。您可以使用以下命令生成秘钥: `openssl rand -base64 32` |
|
105
|
+
| `NEXT_AUTH_SSO_PROVIDERS` | 必选 | 选择 LoboChat 的单点登录提供商。使用 Keycloak 请填写 `keycloak`。 |
|
106
|
+
| `AUTH_KEYCLOAK_ID` | 必选 | Keycloak 客户端 ID |
|
107
|
+
| `AUTH_KEYCLOAK_SECRET` | 必选 | Keycloak 客户端密钥 |
|
108
|
+
| `AUTH_KEYCLOAK_ISSUER` | 必选 | Keycloak 提供程序的 OpenID Connect 颁发者 URL,格式为 `{keycloak_url}/realms/{realm_name}` |
|
109
|
+
| `NEXTAUTH_URL` | 必选 | 该 URL 用于指定 Auth.js 在执行 OAuth 验证时的回调地址,当默认生成的重定向地址发生不正确时才需要设置。`https://lobe.example.com/api/auth` |
|
110
|
+
|
111
|
+
<Callout type={'tip'}>
|
112
|
+
前往 [📘 环境变量](/zh/docs/self-hosting/environment-variables/auth#keycloak) 可查阅相关变量详情。
|
113
|
+
</Callout>
|
114
|
+
</Steps>
|
115
|
+
|
116
|
+
<Callout type={'info'}>部署成功后,用户将可以通过 Keycloak 身份认证并使用 LobeChat。</Callout>
|
@@ -52,6 +52,8 @@ Currently supported identity verification services include:
|
|
52
52
|
<Card href={'/docs/self-hosting/advanced/auth/next-auth/authelia'} title={'Authelia'} />
|
53
53
|
|
54
54
|
<Card href={'/docs/self-hosting/advanced/auth/next-auth/logto'} title={'Logto'} />
|
55
|
+
|
56
|
+
<Card href={'/docs/self-hosting/advanced/auth/next-auth/keycloak'} title={'Keycloak'} />
|
55
57
|
</Cards>
|
56
58
|
|
57
59
|
Click on the links to view the corresponding platform's configuration documentation.
|
@@ -73,6 +75,7 @@ The order corresponds to the display order of the SSO providers.
|
|
73
75
|
| Logto | `logto` |
|
74
76
|
| Microsoft Entra ID | `microsoft-entra-id` |
|
75
77
|
| ZITADEL | `zitadel` |
|
78
|
+
| Keycloak | `keycloak` |
|
76
79
|
|
77
80
|
## Other SSO Providers
|
78
81
|
|
@@ -49,6 +49,8 @@ LobeChat 与 Clerk 做了深度集成,能够为用户提供一个更加安全
|
|
49
49
|
<Card href={'/zh/docs/self-hosting/advanced/auth/next-auth/authelia'} title={'Authelia'} />
|
50
50
|
|
51
51
|
<Card href={'/zh/docs/self-hosting/advanced/auth/next-auth/logto'} title={'Logto'} />
|
52
|
+
|
53
|
+
<Card href={'/zh/docs/self-hosting/advanced/auth/next-auth/keycloak'} title={'Keycloak'} />
|
52
54
|
</Cards>
|
53
55
|
|
54
56
|
点击即可查看对应平台的配置文档。
|
@@ -70,6 +72,7 @@ LobeChat 与 Clerk 做了深度集成,能够为用户提供一个更加安全
|
|
70
72
|
| Logto | `logto` |
|
71
73
|
| Microsoft Entra ID | `microsoft-entra-id` |
|
72
74
|
| ZITADEL | `zitadel` |
|
75
|
+
| Keycloak | `keycloak` |
|
73
76
|
|
74
77
|
## 其他 SSO 提供商
|
75
78
|
|
package/locales/ar/tool.json
CHANGED
@@ -19,8 +19,28 @@
|
|
19
19
|
"placeholder": "الكلمات الرئيسية",
|
20
20
|
"tooltip": "سيتم إعادة الحصول على نتائج البحث، وإنشاء رسالة ملخص جديدة"
|
21
21
|
},
|
22
|
-
"
|
22
|
+
"searchCategory": {
|
23
|
+
"placeholder": "ابحث عن الفئة",
|
24
|
+
"title": "فئة البحث:",
|
25
|
+
"value": {
|
26
|
+
"files": "ملفات",
|
27
|
+
"general": "عام",
|
28
|
+
"images": "صور",
|
29
|
+
"it": "تكنولوجيا المعلومات",
|
30
|
+
"map": "خريطة",
|
31
|
+
"music": "موسيقى",
|
32
|
+
"news": "أخبار",
|
33
|
+
"science": "علوم",
|
34
|
+
"social_media": "وسائل التواصل الاجتماعي",
|
35
|
+
"videos": "فيديوهات"
|
36
|
+
}
|
37
|
+
},
|
38
|
+
"searchEngine": {
|
39
|
+
"placeholder": "محرك البحث",
|
40
|
+
"title": "محرك البحث:"
|
41
|
+
},
|
23
42
|
"searchResult": "عدد النتائج:",
|
43
|
+
"searchTimeRange": "نطاق الوقت:",
|
24
44
|
"summary": "ملخص",
|
25
45
|
"summaryTooltip": "تلخيص المحتوى الحالي",
|
26
46
|
"viewMoreResults": "عرض المزيد من {{results}} نتيجة"
|
package/locales/bg-BG/tool.json
CHANGED
@@ -19,8 +19,28 @@
|
|
19
19
|
"placeholder": "Ключови думи",
|
20
20
|
"tooltip": "Ще се извлекат отново резултатите от търсенето и ще се създаде ново резюме"
|
21
21
|
},
|
22
|
-
"
|
22
|
+
"searchCategory": {
|
23
|
+
"placeholder": "Търсене на категория",
|
24
|
+
"title": "Категория за търсене:",
|
25
|
+
"value": {
|
26
|
+
"files": "Файлове",
|
27
|
+
"general": "Общи",
|
28
|
+
"images": "Снимки",
|
29
|
+
"it": "Информационни технологии",
|
30
|
+
"map": "Карта",
|
31
|
+
"music": "Музика",
|
32
|
+
"news": "Новини",
|
33
|
+
"science": "Наука",
|
34
|
+
"social_media": "Социални медии",
|
35
|
+
"videos": "Видеа"
|
36
|
+
}
|
37
|
+
},
|
38
|
+
"searchEngine": {
|
39
|
+
"placeholder": "Търсачка",
|
40
|
+
"title": "Търсачка:"
|
41
|
+
},
|
23
42
|
"searchResult": "Брой резултати:",
|
43
|
+
"searchTimeRange": "Времеви диапазон:",
|
24
44
|
"summary": "Резюме",
|
25
45
|
"summaryTooltip": "Резюме на текущото съдържание",
|
26
46
|
"viewMoreResults": "Вижте още {{results}} резултата"
|
package/locales/de-DE/tool.json
CHANGED
@@ -19,8 +19,28 @@
|
|
19
19
|
"placeholder": "Schlüsselwörter",
|
20
20
|
"tooltip": "Die Suchergebnisse werden erneut abgerufen und eine neue Zusammenfassungsnachricht wird erstellt"
|
21
21
|
},
|
22
|
-
"
|
22
|
+
"searchCategory": {
|
23
|
+
"placeholder": "Kategorie suchen",
|
24
|
+
"title": "Kategorie suchen:",
|
25
|
+
"value": {
|
26
|
+
"files": "Dateien",
|
27
|
+
"general": "Allgemein",
|
28
|
+
"images": "Bilder",
|
29
|
+
"it": "Informationstechnologie",
|
30
|
+
"map": "Karten",
|
31
|
+
"music": "Musik",
|
32
|
+
"news": "Nachrichten",
|
33
|
+
"science": "Wissenschaft",
|
34
|
+
"social_media": "Soziale Medien",
|
35
|
+
"videos": "Videos"
|
36
|
+
}
|
37
|
+
},
|
38
|
+
"searchEngine": {
|
39
|
+
"placeholder": "Suchmaschine",
|
40
|
+
"title": "Suchmaschine:"
|
41
|
+
},
|
23
42
|
"searchResult": "Anzahl der Suchergebnisse:",
|
43
|
+
"searchTimeRange": "Zeitspanne:",
|
24
44
|
"summary": "Zusammenfassung",
|
25
45
|
"summaryTooltip": "Aktuellen Inhalt zusammenfassen",
|
26
46
|
"viewMoreResults": "Weitere {{results}} Ergebnisse anzeigen"
|
package/locales/en-US/tool.json
CHANGED
@@ -19,8 +19,28 @@
|
|
19
19
|
"placeholder": "Keywords",
|
20
20
|
"tooltip": "This will refresh the search results and create a new summary message"
|
21
21
|
},
|
22
|
-
"
|
22
|
+
"searchCategory": {
|
23
|
+
"placeholder": "Search Category",
|
24
|
+
"title": "Search Category:",
|
25
|
+
"value": {
|
26
|
+
"files": "Files",
|
27
|
+
"general": "General",
|
28
|
+
"images": "Images",
|
29
|
+
"it": "Information Technology",
|
30
|
+
"map": "Maps",
|
31
|
+
"music": "Music",
|
32
|
+
"news": "News",
|
33
|
+
"science": "Science",
|
34
|
+
"social_media": "Social Media",
|
35
|
+
"videos": "Videos"
|
36
|
+
}
|
37
|
+
},
|
38
|
+
"searchEngine": {
|
39
|
+
"placeholder": "Search Engine",
|
40
|
+
"title": "Search Engine:"
|
41
|
+
},
|
23
42
|
"searchResult": "Number of searches:",
|
43
|
+
"searchTimeRange": "Time Range:",
|
24
44
|
"summary": "Summary",
|
25
45
|
"summaryTooltip": "Summarize the current content",
|
26
46
|
"viewMoreResults": "View {{results}} more results"
|
package/locales/es-ES/tool.json
CHANGED
@@ -19,8 +19,28 @@
|
|
19
19
|
"placeholder": "Palabras clave",
|
20
20
|
"tooltip": "Se volverán a obtener los resultados de búsqueda y se creará un nuevo mensaje de resumen"
|
21
21
|
},
|
22
|
-
"
|
22
|
+
"searchCategory": {
|
23
|
+
"placeholder": "Buscar categoría",
|
24
|
+
"title": "Categoría de búsqueda:",
|
25
|
+
"value": {
|
26
|
+
"files": "Archivos",
|
27
|
+
"general": "General",
|
28
|
+
"images": "Imágenes",
|
29
|
+
"it": "Tecnologías de la información",
|
30
|
+
"map": "Mapas",
|
31
|
+
"music": "Música",
|
32
|
+
"news": "Noticias",
|
33
|
+
"science": "Ciencia",
|
34
|
+
"social_media": "Redes sociales",
|
35
|
+
"videos": "Videos"
|
36
|
+
}
|
37
|
+
},
|
38
|
+
"searchEngine": {
|
39
|
+
"placeholder": "Motor de búsqueda",
|
40
|
+
"title": "Motor de búsqueda:"
|
41
|
+
},
|
23
42
|
"searchResult": "Número de búsquedas:",
|
43
|
+
"searchTimeRange": "Rango de tiempo:",
|
24
44
|
"summary": "Resumen",
|
25
45
|
"summaryTooltip": "Resumir el contenido actual",
|
26
46
|
"viewMoreResults": "Ver más {{results}} resultados"
|
package/locales/fa-IR/tool.json
CHANGED
@@ -19,8 +19,28 @@
|
|
19
19
|
"placeholder": "کلمات کلیدی",
|
20
20
|
"tooltip": "نتایج جستجو دوباره دریافت خواهد شد و یک پیام خلاصه جدید ایجاد خواهد شد"
|
21
21
|
},
|
22
|
-
"
|
22
|
+
"searchCategory": {
|
23
|
+
"placeholder": "جستجوی دسته",
|
24
|
+
"title": "دسته جستجو:",
|
25
|
+
"value": {
|
26
|
+
"files": "فایلها",
|
27
|
+
"general": "عمومی",
|
28
|
+
"images": "تصاویر",
|
29
|
+
"it": "فناوری اطلاعات",
|
30
|
+
"map": "نقشه",
|
31
|
+
"music": "موسیقی",
|
32
|
+
"news": "اخبار",
|
33
|
+
"science": "علم",
|
34
|
+
"social_media": "رسانههای اجتماعی",
|
35
|
+
"videos": "ویدیوها"
|
36
|
+
}
|
37
|
+
},
|
38
|
+
"searchEngine": {
|
39
|
+
"placeholder": "موتور جستجو",
|
40
|
+
"title": "موتور جستجو:"
|
41
|
+
},
|
23
42
|
"searchResult": "تعداد جستجو:",
|
43
|
+
"searchTimeRange": "محدوده زمانی:",
|
24
44
|
"summary": "خلاصه",
|
25
45
|
"summaryTooltip": "خلاصه محتوای فعلی",
|
26
46
|
"viewMoreResults": "مشاهده {{results}} نتیجه بیشتر"
|
package/locales/fr-FR/tool.json
CHANGED
@@ -19,8 +19,28 @@
|
|
19
19
|
"placeholder": "Mots-clés",
|
20
20
|
"tooltip": "Cela va récupérer à nouveau les résultats de recherche et créer un nouveau message de résumé"
|
21
21
|
},
|
22
|
-
"
|
22
|
+
"searchCategory": {
|
23
|
+
"placeholder": "Catégorie de recherche",
|
24
|
+
"title": "Catégorie de recherche :",
|
25
|
+
"value": {
|
26
|
+
"files": "Fichiers",
|
27
|
+
"general": "Général",
|
28
|
+
"images": "Images",
|
29
|
+
"it": "Technologies de l'information",
|
30
|
+
"map": "Cartes",
|
31
|
+
"music": "Musique",
|
32
|
+
"news": "Actualités",
|
33
|
+
"science": "Science",
|
34
|
+
"social_media": "Médias sociaux",
|
35
|
+
"videos": "Vidéos"
|
36
|
+
}
|
37
|
+
},
|
38
|
+
"searchEngine": {
|
39
|
+
"placeholder": "Moteur de recherche",
|
40
|
+
"title": "Moteur de recherche :"
|
41
|
+
},
|
23
42
|
"searchResult": "Nombre de recherches :",
|
43
|
+
"searchTimeRange": "Plage horaire :",
|
24
44
|
"summary": "Résumé",
|
25
45
|
"summaryTooltip": "Résumer le contenu actuel",
|
26
46
|
"viewMoreResults": "Voir {{results}} résultats supplémentaires"
|
package/locales/it-IT/tool.json
CHANGED
@@ -19,8 +19,28 @@
|
|
19
19
|
"placeholder": "Parole chiave",
|
20
20
|
"tooltip": "Ricaricherà i risultati di ricerca e creerà un nuovo messaggio di sintesi"
|
21
21
|
},
|
22
|
-
"
|
22
|
+
"searchCategory": {
|
23
|
+
"placeholder": "Cerca categoria",
|
24
|
+
"title": "Categoria di ricerca:",
|
25
|
+
"value": {
|
26
|
+
"files": "File",
|
27
|
+
"general": "Generale",
|
28
|
+
"images": "Immagini",
|
29
|
+
"it": "Tecnologia dell'informazione",
|
30
|
+
"map": "Mappa",
|
31
|
+
"music": "Musica",
|
32
|
+
"news": "Notizie",
|
33
|
+
"science": "Scienza",
|
34
|
+
"social_media": "Social media",
|
35
|
+
"videos": "Video"
|
36
|
+
}
|
37
|
+
},
|
38
|
+
"searchEngine": {
|
39
|
+
"placeholder": "Motore di ricerca",
|
40
|
+
"title": "Motore di ricerca:"
|
41
|
+
},
|
23
42
|
"searchResult": "Numero di ricerche:",
|
43
|
+
"searchTimeRange": "Intervallo di tempo:",
|
24
44
|
"summary": "Riepilogo",
|
25
45
|
"summaryTooltip": "Riepiloga il contenuto attuale",
|
26
46
|
"viewMoreResults": "Visualizza altri {{results}} risultati"
|
package/locales/ja-JP/tool.json
CHANGED
@@ -19,8 +19,28 @@
|
|
19
19
|
"placeholder": "キーワード",
|
20
20
|
"tooltip": "検索結果を再取得し、新しい要約メッセージを作成します"
|
21
21
|
},
|
22
|
-
"
|
22
|
+
"searchCategory": {
|
23
|
+
"placeholder": "カテゴリを検索",
|
24
|
+
"title": "カテゴリを検索:",
|
25
|
+
"value": {
|
26
|
+
"files": "ファイル",
|
27
|
+
"general": "一般",
|
28
|
+
"images": "画像",
|
29
|
+
"it": "情報技術",
|
30
|
+
"map": "地図",
|
31
|
+
"music": "音楽",
|
32
|
+
"news": "ニュース",
|
33
|
+
"science": "科学",
|
34
|
+
"social_media": "ソーシャルメディア",
|
35
|
+
"videos": "動画"
|
36
|
+
}
|
37
|
+
},
|
38
|
+
"searchEngine": {
|
39
|
+
"placeholder": "検索エンジン",
|
40
|
+
"title": "検索エンジン:"
|
41
|
+
},
|
23
42
|
"searchResult": "検索結果の数:",
|
43
|
+
"searchTimeRange": "時間範囲:",
|
24
44
|
"summary": "要約",
|
25
45
|
"summaryTooltip": "現在の内容を要約",
|
26
46
|
"viewMoreResults": "さらに {{results}} 件の結果を見る"
|
package/locales/ko-KR/tool.json
CHANGED
@@ -19,8 +19,28 @@
|
|
19
19
|
"placeholder": "키워드",
|
20
20
|
"tooltip": "검색 결과를 다시 가져오고 새로운 요약 메시지를 생성합니다."
|
21
21
|
},
|
22
|
-
"
|
22
|
+
"searchCategory": {
|
23
|
+
"placeholder": "카테고리 검색",
|
24
|
+
"title": "카테고리 검색:",
|
25
|
+
"value": {
|
26
|
+
"files": "파일",
|
27
|
+
"general": "일반",
|
28
|
+
"images": "이미지",
|
29
|
+
"it": "정보 기술",
|
30
|
+
"map": "지도",
|
31
|
+
"music": "음악",
|
32
|
+
"news": "뉴스",
|
33
|
+
"science": "과학",
|
34
|
+
"social_media": "소셜 미디어",
|
35
|
+
"videos": "비디오"
|
36
|
+
}
|
37
|
+
},
|
38
|
+
"searchEngine": {
|
39
|
+
"placeholder": "검색 엔진",
|
40
|
+
"title": "검색 엔진:"
|
41
|
+
},
|
23
42
|
"searchResult": "검색 수:",
|
43
|
+
"searchTimeRange": "시간 범위:",
|
24
44
|
"summary": "요약",
|
25
45
|
"summaryTooltip": "현재 내용 요약",
|
26
46
|
"viewMoreResults": "{{results}}개의 결과 더 보기"
|
package/locales/nl-NL/tool.json
CHANGED
@@ -19,8 +19,28 @@
|
|
19
19
|
"placeholder": "Zoekwoorden",
|
20
20
|
"tooltip": "De zoekresultaten worden opnieuw opgehaald en er wordt een nieuwe samenvattingsbericht aangemaakt"
|
21
21
|
},
|
22
|
-
"
|
22
|
+
"searchCategory": {
|
23
|
+
"placeholder": "Zoekcategorie",
|
24
|
+
"title": "Zoekcategorie:",
|
25
|
+
"value": {
|
26
|
+
"files": "Bestanden",
|
27
|
+
"general": "Algemeen",
|
28
|
+
"images": "Afbeeldingen",
|
29
|
+
"it": "Informatietechnologie",
|
30
|
+
"map": "Kaart",
|
31
|
+
"music": "Muziek",
|
32
|
+
"news": "Nieuws",
|
33
|
+
"science": "Wetenschap",
|
34
|
+
"social_media": "Sociale media",
|
35
|
+
"videos": "Video's"
|
36
|
+
}
|
37
|
+
},
|
38
|
+
"searchEngine": {
|
39
|
+
"placeholder": "Zoekmachine",
|
40
|
+
"title": "Zoekmachine:"
|
41
|
+
},
|
23
42
|
"searchResult": "Aantal zoekresultaten:",
|
43
|
+
"searchTimeRange": "Tijdspanne:",
|
24
44
|
"summary": "Samenvatting",
|
25
45
|
"summaryTooltip": "Samenvatting van de huidige inhoud",
|
26
46
|
"viewMoreResults": "Bekijk meer {{results}} resultaten"
|
package/locales/pl-PL/tool.json
CHANGED
@@ -19,8 +19,28 @@
|
|
19
19
|
"placeholder": "Słowa kluczowe",
|
20
20
|
"tooltip": "Ponownie pobierze wyniki wyszukiwania i utworzy nową wiadomość podsumowującą"
|
21
21
|
},
|
22
|
-
"
|
22
|
+
"searchCategory": {
|
23
|
+
"placeholder": "Wyszukaj kategorię",
|
24
|
+
"title": "Kategoria wyszukiwania:",
|
25
|
+
"value": {
|
26
|
+
"files": "Pliki",
|
27
|
+
"general": "Ogólne",
|
28
|
+
"images": "Obrazy",
|
29
|
+
"it": "Technologia informacyjna",
|
30
|
+
"map": "Mapa",
|
31
|
+
"music": "Muzyka",
|
32
|
+
"news": "Aktualności",
|
33
|
+
"science": "Nauka",
|
34
|
+
"social_media": "Media społecznościowe",
|
35
|
+
"videos": "Filmy"
|
36
|
+
}
|
37
|
+
},
|
38
|
+
"searchEngine": {
|
39
|
+
"placeholder": "Silnik wyszukiwania",
|
40
|
+
"title": "Silnik wyszukiwania:"
|
41
|
+
},
|
23
42
|
"searchResult": "Liczba wyników:",
|
43
|
+
"searchTimeRange": "Zakres czasu:",
|
24
44
|
"summary": "Podsumowanie",
|
25
45
|
"summaryTooltip": "Podsumuj bieżącą treść",
|
26
46
|
"viewMoreResults": "Zobacz więcej {{results}} wyników"
|