Skip to content

Commit

Permalink
Add i18n support (#7)
Browse files Browse the repository at this point in the history
  • Loading branch information
Germey authored Mar 24, 2024
1 parent 04619ae commit 49a0d0c
Show file tree
Hide file tree
Showing 368 changed files with 19,352 additions and 1,421 deletions.
11 changes: 6 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
# acedatacloud Hub
# AceDataCloud

集成 GPT 问答、Midjourney 绘画等一站式服务的系统,主要特点包括:
集成 GPT 问答、Midjourney 绘画、文档问答等一站式服务的系统,主要特点包括:

- 无需自行搭建 GPT 问答、Midjourney 服务 API,即开即用。
- 支持 GPT 3.5/4.0、联网版、图像版问答,可免费体验。
- 支持 Midjourney 快速、慢速、极速版多通道绘图,免费体验。
- 支持任意文档上传与问答,数量无限制,可免费体验。
- 开箱支持支付和分销系统,无需任何额外配置即可利用 AI 赚钱。
- 开箱支持用户系统,支持微信、邮箱登录和注册,无需额外配置。
- 完全开源免费,配置简单,可直接部署为您自己的系统。
- 基于 Vue3 开发,采用 MIT 协议,可进行任意二次开发。

以上功能由[知数云](https://platform.acedata.cloud/)提供技术支持。
以上功能由[AceDataCloud](https://platform.acedata.cloud/)提供技术支持。

## 预览

Expand All @@ -26,7 +27,7 @@ AI 问答:

![](https://cdn.acedata.cloud/20240101-214316.png)

体验网址:[https://hub.acedata.cloud/](https://hub.acedata.cloud/)微信或邮箱登录即可立即使用
体验网址:[https://hub.acedata.cloud/](https://hub.acedata.cloud/)邮箱登录即可立即使用

## 部署

Expand All @@ -49,7 +50,7 @@ AI 问答:
### 2. 下载源码

```
git clone https://github.com/acedatacloud/HubFrontend.git
git clone https://github.com/AceDataCloud/HubFrontend.git
```

### 3. 配置
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "minor",
"comment": "add i18n support",
"packageName": "@acedatacloud/hub",
"email": "[email protected]",
"dependentChangeType": "patch"
}
3 changes: 0 additions & 3 deletions crowdin.yml

This file was deleted.

4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"author": "Germey Technology <[email protected]>",
"repository": {
"type": "git",
"url": "git+https://github.com/acedatacloud/HubFrontend.git"
"url": "git+https://github.com/AceDataCloud/HubFrontend.git"
},
"files": [
"dist/"
Expand All @@ -13,6 +13,7 @@
"start": "vite --host",
"build": "vite build --mode=development",
"serve": "vite preview",
"translate": "transmart",
"lint": "eslint src --fix --ext .ts,.tsx,.vue,.js,.jsx",
"prettier": "prettier --write .",
"change": "beachball change --no-commit",
Expand Down Expand Up @@ -59,6 +60,7 @@
},
"devDependencies": {
"@rollup/plugin-replace": "^3.0.0",
"@transmart/cli": "^0.3.1",
"@types/lodash": "^4.14.172",
"@types/markdown-it": "^12.2.3",
"@types/node": "^16.7.4",
Expand Down
57 changes: 57 additions & 0 deletions src/components/common/LocaleSelector.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
<template>
<div>
<el-dropdown max-height="700" trigger="click" @command="onSelectLocale">
<i class="icon">
<svg preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24" width="1.2em" height="1.2em">
<path
fill="currentColor"
d="m18.5 10l4.4 11h-2.155l-1.201-3h-4.09l-1.199 3h-2.154L16.5 10h2zM10 2v2h6v2h-1.968a18.222 18.222 0 0 1-3.62 6.301a14.864 14.864 0 0 0 2.336 1.707l-.751 1.878A17.015 17.015 0 0 1 9 13.725a16.676 16.676 0 0 1-6.201 3.548l-.536-1.929a14.7 14.7 0 0 0 5.327-3.042A18.078 18.078 0 0 1 4.767 8h2.24A16.032 16.032 0 0 0 9 10.877a16.165 16.165 0 0 0 2.91-4.876L2 6V4h6V2h2zm7.5 10.885L16.253 16h2.492L17.5 12.885z"
></path>
</svg>
</i>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item v-for="(locale, localeIndex) in locales" :key="localeIndex" :command="locale.value">
{{ locale.label }}
</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
</div>
</template>

<script lang="ts">
import { defineComponent } from 'vue';
import { ElDropdown, ElDropdownItem, ElDropdownMenu, ElButton } from 'element-plus';
import { SUPPORTED_LOCALES, setI18nLanguage } from '@/i18n';
export default defineComponent({
name: 'LocaleSelector',
components: {
ElDropdown,
ElDropdownItem,
ElDropdownMenu
},
data() {
return {
locales: SUPPORTED_LOCALES
};
},
methods: {
async onSelectLocale(locale: string) {
await setI18nLanguage(locale);
this.$store.dispatch('setLocale', locale);
window.location.reload();
}
}
});
</script>

<style scoped>
.icon {
cursor: pointer;
font-size: 16px;
margin-top: 4px;
display: inline-block;
}
</style>
9 changes: 9 additions & 0 deletions src/components/common/Navigator.vue
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,13 @@
</el-menu>
</div>
<div v-else class="bottom">
<div v-if="$config.navigation?.locale" class="link">
<el-tooltip effect="dark" :content="$t('common.nav.locale')" placement="right">
<el-button class="button">
<locale-selector />
</el-button>
</el-tooltip>
</div>
<div v-if="$config.navigation?.console" class="link">
<el-tooltip effect="dark" :content="$t('common.nav.console')" placement="right">
<el-button class="button" @click="onConsole">
Expand Down Expand Up @@ -75,6 +82,7 @@
import { defineComponent } from 'vue';
import { ElButton, ElTooltip, ElMenu, ElMenuItem } from 'element-plus';
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';
import LocaleSelector from './LocaleSelector.vue';
import {
ROUTE_CHATDOC_INDEX,
ROUTE_CHATDOC_CONVERSATION,
Expand All @@ -95,6 +103,7 @@ export default defineComponent({
components: {
ElButton,
ElTooltip,
LocaleSelector,
FontAwesomeIcon,
ElMenu,
ElMenuItem,
Expand Down
5 changes: 5 additions & 0 deletions src/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,11 @@ export default {
*/
chatdoc: true,

/**
* Show locale entry in left navigation.
*/
locale: true,

/**
* Show console entry in left navigation.
*/
Expand Down
78 changes: 78 additions & 0 deletions src/i18n/ar/api.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
{
"entity": {
"requestQueries": "طلب الاستعلامات",
"_requestQueries.comment": "معلمات الاستعلام لطلب HTTP.",
"requestBody": "جسم الطلب",
"_requestBody.comment": "جسم الطلب HTTP.",
"responseBody": "جسم الاستجابة",
"_responseBody.comment": "جسم الاستجابة HTTP.",
"requestHeaders": "رؤوس الطلب",
"_requestHeaders.comment": "رؤوس الطلب HTTP.",
"requestHeader": "رأس الطلب",
"_requestHeader.comment": "رأس الطلب HTTP، مجرد نموذج واحد لرؤوس الطلب.",
"responseHeaders": "رؤوس الاستجابة",
"_responseHeaders.comment": "رؤوس الاستجابة HTTP.",
"response": "الاستجابة",
"_response.comment": "الاستجابة HTTP.",
"success": "نجاح",
"_success.comment": "الاستجابة الناجحة.",
"failure": "فشل",
"_failure.comment": "الاستجابة الفاشلة.",
"responseExample": "مثال",
"_responseExample.comment": "مثال على الاستجابة.",
"authentication": "المصادقة",
"_authentication.comment": "معلومات المصادقة.",
"arrayOf": "مصفوفة من",
"_arrayOf.comment": "مصفوفة الكيان.",
"apiKey": "مفتاح API",
"_apiKey.comment": "مفتاح الواجهة البرمجية"
},
"message": {
"free": "مجاني",
"_free.comment": "يعني أن السعر مجاني، لا حاجة لدفع أي رصيد أو مال عند استخدام خدمة الواجهة البرمجية",
"appliedCount": "عدد التطبيقات",
"_appliedCount.comment": "مرات خدمة الواجهة البرمجية التي تم تطبيقها",
"firstFree": "مجاني لأول مرة",
"_firstFree.comment": "يعني أن الاستخدام الأول لخدمة الواجهة البرمجية مجاني، لا حاجة لدفع أي رصيد أو مال",
"custom": "مبلغ محدد",
"_custom.comment": "يعني أن السعر محدد، يجب دفع الرصيد أو المال المحدد عند استخدام خدمة الواجهة البرمجية",
"present": "هدية",
"_present.comment": "سنقدم الرصيد لك عند استخدام خدمة الواجهة البرمجية للمرة الأولى",
"around": "تقريباً",
"_around.comment": "السعر تقريبي، قد يكون السعر الفعلي مختلفًا",
"successRate15min": "معدل النجاح في الوقت الحقيقي",
"_successRate15min.comment": "معدل النجاح في الوقت الحقيقي لخدمة الواجهة البرمجية في الـ 15 دقيقة الأخيرة",
"ySuccessRate": "معدل النجاح (100%)",
"_ySuccessRate.comment": "معدل نجاح خدمة الواجهة البرمجية",
"xMinutes": "الوقت (دقائق)",
"_xMinutes.comment": "الوقت بالدقائق",
"streamUsage": "تنبيه هام: بالنسبة لطلبات البث، قد لا يكون الرمز أعلاه مطبقًا بشكل كامل. يرجى الرجوع إلى وثيقة الربط للتعديلات.",
"_streamUsage.comment": "بالنسبة لطلبات البث، قد لا يكون الرمز أعلاه مطبقًا بشكل كامل. يرجى الرجوع إلى وثيقة الربط للتعديلات.",
"alphaStage": "هذه الواجهة البرمجية في مرحلة الألفا، إنها نسخة معاينة مبكرة، قد تكون هناك عدم استقرارية محتملة، قد يتغير تنسيق الواجهة البرمجية بشكل كبير، لا يُوصى باستخدامها في بيئة الإنتاج. السعر الحالي منخفض نسبيًا، وقد تكون هناك تعديلات كبيرة على السعر في المستقبل.",
"_alphaStage.comment": "هذه الواجهة البرمجية في مرحلة الألفا، إنها نسخة معاينة مبكرة، قد تكون هناك عدم استقرارية محتملة، قد يتغير تنسيق الواجهة البرمجية بشكل كبير، لا يُوصى باستخدامها في بيئة الإنتاج. السعر الحالي منخفض نسبيًا، وقد تكون هناك تعديلات كبيرة على السعر في المستقبل.",
"betaStage": "هذه الواجهة البرمجية في مرحلة البيتا، تنسيق الواجهة البرمجية لن يتغير كثيرًا، ولكن قد تكون هناك عدم استقرارية محتملة، يُرجى استخدامها بحذر في بيئة الإنتاج. السعر الحالي منخفض نسبيًا، وقد تكون هناك تعديلات معتدلة على السعر في المستقبل.",
"_betaStage.comment": "هذه الواجهة البرمجية في مرحلة البيتا، تنسيق الواجهة البرمجية لن يتغير كثيرًا، ولكن قد تكون هناك عدم استقرارية محتملة، يُرجى استخدامها بحذر في بيئة الإنتاج. السعر الحالي منخفض نسبيًا، وقد تكون هناك تعديلات معتدلة على السعر في المستقبل."
},
"unit": {
"credit": "رصيد",
"_credit.comment": "الرصيد يعني العملة الافتراضية المستخدمة في خدمة الواجهة البرمجية",
"Credit": "رصيد",
"_Credit.comment": "الرصيد يعني العملة الافتراضية المستخدمة في خدمة الواجهة البرمجية، هذا هو الشكل المعتمد",
"credits": "رصيد",
"_credits.comment": "الرصيد يعني العملة الافتراضية المستخدمة في خدمة الواجهة البرمجية، هذا هو الشكل الجمعي",
"Credits": "رصيد",
"_Credits.comment": "الرصيد يعني العملة الافتراضية المستخدمة في خدمة الواجهة البرمجية، هذا هو الشكل المعتمد والجمعي",
"call": "استدعاء",
"_call.comment": "الاستدعاء يعني مرات استخدام خدمة الواجهة البرمجية",
"Call": "استدعاء",
"_Call.comment": "الاستدعاء يعني مرات استخدام خدمة الواجهة البرمجية، هذا هو الشكل المعتمد",
"calls": "استدعاء",
"_calls.comment": "الاستدعاء يعني مرات استخدام خدمة الواجهة البرمجية، هذا هو الشكل الجمعي",
"Calls": "استدعاء",
"_Calls.comment": "الاستدعاء يعني مرات استخدام خدمة الواجهة البرمجية، هذا هو الشكل المعتمد والجمعي",
"MB": "ميجابايت",
"_MB.comment": "ميجابايت يعني وحدة تخزين المعلومات الرقمية",
"GB": "جيجابايت",
"_GB.comment": "جيجابايت يعني وحدة تخزين المعلومات الرقمية"
}
}
Loading

0 comments on commit 49a0d0c

Please sign in to comment.