diff --git a/.github/workflows/update-frontend.yml b/.github/workflows/update-frontend.yml
new file mode 100644
index 0000000..1a9c037
--- /dev/null
+++ b/.github/workflows/update-frontend.yml
@@ -0,0 +1,84 @@
+# ======================================================
+# Workflow: Update Frontend Build
+# ======================================================
+# This workflow is triggered manually (or via repository_dispatch)
+# from your PRIVATE frontend repo after a new build.
+#
+# Setup:
+# 1. In your PRIVATE frontend repo, create a GitHub Action that:
+# - Builds the Vue.js project
+# - Uses repository_dispatch to trigger this workflow
+# - Or: upload the dist as an artifact and trigger this workflow
+#
+# 2. Create a GitHub Personal Access Token (PAT) with repo access
+# and store it as a secret: FRONTEND_DEPLOY_TOKEN
+#
+# Alternative: Run manually from the Actions tab.
+# ======================================================
+
+name: Update Frontend Build
+
+on:
+ # Manual trigger from GitHub UI
+ workflow_dispatch:
+ inputs:
+ version:
+ description: 'Frontend version (e.g. 1.2.0)'
+ required: false
+ default: 'latest'
+
+ # Triggered by private repo via repository_dispatch
+ repository_dispatch:
+ types: [frontend-updated]
+
+jobs:
+ update-frontend:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout open-source repo
+ uses: actions/checkout@v4
+ with:
+ token: ${{ secrets.FRONTEND_DEPLOY_TOKEN || secrets.GITHUB_TOKEN }}
+
+ - name: Download frontend build artifact
+ # Option A: Download from private repo's latest release
+ # Replace OWNER/PRIVATE_REPO with your private frontend repo
+ env:
+ GH_TOKEN: ${{ secrets.FRONTEND_DEPLOY_TOKEN }}
+ run: |
+ echo "Downloading frontend build..."
+ # Option A: From GitHub Release
+ # gh release download latest -R OWNER/quantdinger-frontend -p 'dist.tar.gz' -D /tmp
+ # tar -xzf /tmp/dist.tar.gz -C frontend/dist/
+
+ # Option B: From repository_dispatch payload
+ if [ "${{ github.event.client_payload.artifact_url }}" != "" ]; then
+ curl -L -H "Authorization: token $GH_TOKEN" \
+ "${{ github.event.client_payload.artifact_url }}" \
+ -o /tmp/dist.tar.gz
+ rm -rf frontend/dist/*
+ tar -xzf /tmp/dist.tar.gz -C frontend/dist/
+ else
+ echo "No artifact URL provided. Please use manual upload or release download."
+ echo "Skipping download step - assuming dist/ is already updated."
+ fi
+
+ - name: Update VERSION
+ run: |
+ VERSION="${{ github.event.inputs.version || github.event.client_payload.version || 'latest' }}"
+ echo "$VERSION" > frontend/VERSION
+ echo "Frontend version: $VERSION"
+
+ - name: Commit and push
+ run: |
+ git config user.name "github-actions[bot]"
+ git config user.email "github-actions[bot]@users.noreply.github.com"
+ git add frontend/dist/ frontend/VERSION
+ if git diff --staged --quiet; then
+ echo "No changes to commit"
+ else
+ VERSION=$(cat frontend/VERSION)
+ git commit -m "chore: update frontend build v${VERSION}"
+ git push
+ fi
diff --git a/.gitignore b/.gitignore
index 0220d98..2fd4513 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,432 +1,74 @@
+# ============================================
+# QuantDinger - Open Source Repository
+# Frontend is closed-source, only dist/ is tracked.
+# ============================================
-/quantdinger_vue/.browserslistrc
-/quantdinger_vue/.dockerignore
-/quantdinger_vue/.editorconfig
-/quantdinger_vue/.env
-/quantdinger_vue/.env.development
-/quantdinger_vue/.env.preview
-/quantdinger_vue/tests/unit/.eslintrc.js
-/quantdinger_vue/.eslintrc.js
-/quantdinger_vue/.eslintrc.json
-/quantdinger_vue/.gitattributes
-/quantdinger_vue/.husky/.gitignore
-/quantdinger_vue/.gitignore
-/quantdinger_vue/.lintstagedrc.json
-/quantdinger_vue/.prettierrc
-/quantdinger_vue/.stylelintrc.js
-/quantdinger_vue/.travis.yml
-/quantdinger_vue/src/views/exception/403.vue
-/quantdinger_vue/src/views/exception/404.vue
-/quantdinger_vue/src/views/404.vue
-/quantdinger_vue/src/views/exception/500.vue
-/quantdinger_vue/src/core/directives/action.js
-/quantdinger_vue/src/api/ai-trading.js
-/quantdinger_vue/src/views/trading-assistant/components/AIDecisionRecords.vue
-/quantdinger_vue/src/config/aiModels.js
-/quantdinger_vue/src/store/modules/app.js
-/quantdinger_vue/src/App.vue
-/quantdinger_vue/src/store/app-mixin.js
-/quantdinger_vue/src/locales/lang/ar-SA.js
-/quantdinger_vue/src/mock/services/article.js
-/quantdinger_vue/src/components/ArticleListContent/ArticleListContent.vue
-/quantdinger_vue/src/store/modules/async-router.js
-/quantdinger_vue/src/api/auth.js
-/quantdinger_vue/src/mock/services/auth.js
-/quantdinger_vue/public/avatar2.jpg
-/quantdinger_vue/src/components/GlobalHeader/AvatarDropdown.vue
-/quantdinger_vue/src/utils/axios.js
-/quantdinger_vue/babel.config.js
-/quantdinger_vue/src/assets/background.svg
-/quantdinger_vue/src/views/indicator-analysis/components/BacktestHistoryDrawer.vue
-/quantdinger_vue/src/views/indicator-analysis/components/BacktestModal.vue
-/quantdinger_vue/src/views/indicator-analysis/components/BacktestRunViewer.vue
-/quantdinger_vue/src/components/Charts/Bar.vue
-/quantdinger_vue/src/layouts/BasicLayout.less
-/quantdinger_vue/src/layouts/BasicLayout.vue
-/quantdinger_vue/src/layouts/BlankLayout.vue
-/quantdinger_vue/src/core/bootstrap.js
-/quantdinger_vue/src/assets/icons/bx-analyse.svg
-/quantdinger_vue/deploy/caddy.conf
-/quantdinger_vue/src/components/Other/CarbonAds.vue
-/quantdinger_vue/src/components/Charts/chart.less
-/quantdinger_vue/src/components/Charts/ChartCard.vue
-/quantdinger_vue/src/utils/codeDecrypt.js
-/quantdinger_vue/commitlint.config.js
-/quantdinger_vue/src/api/credentials.js
-/quantdinger_vue/src/api/dashboard.js
-/quantdinger_vue/src/locales/lang/de-DE.js
-/quantdinger_vue/src/config/defaultSettings.js
-/quantdinger_vue/src/store/device-mixin.js
-/quantdinger_vue/src/components/Dialog.js
-/quantdinger_vue/Dockerfile
-/quantdinger_vue/src/utils/domUtil.js
-/quantdinger_vue/src/components/Ellipsis/Ellipsis.vue
-/quantdinger_vue/src/locales/lang/en-US.js
-/quantdinger_vue/src/components/MultiTab/events.js
-/quantdinger_vue/src/utils/filter.js
-/quantdinger_vue/src/components/FooterToolbar/FooterToolBar.vue
-/quantdinger_vue/src/locales/lang/fr-FR.js
-/quantdinger_vue/src/router/generator-routers.js
-/quantdinger_vue/src/store/getters.js
-/quantdinger_vue/src/global.less
-/quantdinger_vue/src/components/Search/GlobalSearch.jsx
-/quantdinger_vue/src/store/i18n-mixin.js
-/quantdinger_vue/src/components/IconSelector/icons.js
-/quantdinger_vue/src/core/icons.js
-/quantdinger_vue/src/components/IconSelector/IconSelector.vue
-/quantdinger_vue/public/index.html
-/quantdinger_vue/src/components/ArticleListContent/index.js
-/quantdinger_vue/src/components/AvatarList/index.js
-/quantdinger_vue/src/components/Ellipsis/index.js
-/quantdinger_vue/src/components/FooterToolbar/index.js
-/quantdinger_vue/src/components/IconSelector/index.js
-/quantdinger_vue/src/components/MultiTab/index.js
-/quantdinger_vue/src/components/NoticeIcon/index.js
-/quantdinger_vue/src/components/NumberInfo/index.js
-/quantdinger_vue/src/components/SettingDrawer/index.js
-/quantdinger_vue/src/components/StandardFormRow/index.js
-/quantdinger_vue/src/components/Table/index.js
-/quantdinger_vue/src/components/Trend/index.js
-/quantdinger_vue/src/components/index.js
-/quantdinger_vue/src/layouts/index.js
-/quantdinger_vue/src/locales/index.js
-/quantdinger_vue/src/mock/index.js
-/quantdinger_vue/src/router/index.js
-/quantdinger_vue/src/store/index.js
-/quantdinger_vue/src/components/PageLoading/index.jsx
-/quantdinger_vue/src/components/SelectLang/index.jsx
-/quantdinger_vue/src/components/TagSelect/index.jsx
-/quantdinger_vue/src/components/TextArea/index.jsx
-/quantdinger_vue/src/components/AvatarList/index.less
-/quantdinger_vue/src/components/FooterToolbar/index.less
-/quantdinger_vue/src/components/MultiTab/index.less
-/quantdinger_vue/src/components/NumberInfo/index.less
-/quantdinger_vue/src/components/Search/index.less
-/quantdinger_vue/src/components/SelectLang/index.less
-/quantdinger_vue/src/components/Trend/index.less
-/quantdinger_vue/src/components/index.less
-/quantdinger_vue/src/components/AvatarList/index.md
-/quantdinger_vue/src/components/Ellipsis/index.md
-/quantdinger_vue/src/components/FooterToolbar/index.md
-/quantdinger_vue/src/components/NumberInfo/index.md
-/quantdinger_vue/src/components/Trend/index.md
-/quantdinger_vue/src/components/GlobalFooter/index.vue
-/quantdinger_vue/src/components/Turnstile/index.vue
-/quantdinger_vue/src/views/ai-analysis/components/index.vue
-/quantdinger_vue/src/views/ai-analysis/index.vue
-/quantdinger_vue/src/views/dashboard/index.vue
-/quantdinger_vue/src/views/indicator-analysis/index.vue
-/quantdinger_vue/src/views/indicator-community/index.vue
-/quantdinger_vue/src/views/portfolio/index.vue
-/quantdinger_vue/src/views/profile/index.vue
-/quantdinger_vue/src/views/settings/index.vue
-/quantdinger_vue/src/views/trading-assistant/index.vue
-/quantdinger_vue/src/views/user-manage/index.vue
-/quantdinger_vue/src/views/indicator-analysis/components/IndicatorEditor.vue
-/quantdinger_vue/src/components/AvatarList/Item.jsx
-/quantdinger_vue/src/locales/lang/ja-JP.js
-/quantdinger_vue/jest.config.js
-/quantdinger_vue/jsconfig.json
-/quantdinger_vue/src/views/indicator-analysis/components/KlineChart.vue
-/quantdinger_vue/src/locales/lang/ko-KR.js
-/quantdinger_vue/src/core/lazy_use.js
-/quantdinger_vue/src/components/Charts/Liquid.vue
-/quantdinger_vue/src/components/AvatarList/List.jsx
-/quantdinger_vue/src/api/login.js
-/quantdinger_vue/src/views/user/Login.vue
-/quantdinger_vue/public/logo.png
-/quantdinger_vue/src/assets/logo.png
-/quantdinger_vue/src/assets/logo.svg
-/quantdinger_vue/src/main.js
-/quantdinger_vue/src/api/manage.js
-/quantdinger_vue/src/mock/services/manage.js
-/quantdinger_vue/src/api/market.js
-/quantdinger_vue/src/components/Charts/MiniArea.vue
-/quantdinger_vue/src/components/Charts/MiniBar.vue
-/quantdinger_vue/src/components/Charts/MiniProgress.vue
-/quantdinger_vue/src/components/Charts/MiniSmoothArea.vue
-/quantdinger_vue/src/components/MultiTab/MultiTab.vue
-/quantdinger_vue/src/store/mutation-types.js
-/quantdinger_vue/deploy/nginx.conf
-/quantdinger_vue/deploy/nginx-docker.conf
-/quantdinger_vue/src/components/NoticeIcon/NoticeIcon.vue
-/quantdinger_vue/src/components/NProgress/nprogress.less
-/quantdinger_vue/src/components/NumberInfo/NumberInfo.vue
-/quantdinger_vue/src/mock/services/other.js
-/quantdinger_vue/package.json
-/quantdinger_vue/src/layouts/PageView.vue
-/quantdinger_vue/src/core/permission/permission.js
-/quantdinger_vue/src/permission.js
-/quantdinger_vue/config/plugin.config.js
-/quantdinger_vue/pnpm-lock.yaml
-/quantdinger_vue/src/api/portfolio.js
-/quantdinger_vue/src/views/trading-assistant/components/PositionRecords.vue
-/quantdinger_vue/postcss.config.js
-/quantdinger_vue/src/components/Editor/QuillEditor.vue
-/quantdinger_vue/src/components/Charts/Radar.vue
-/quantdinger_vue/src/components/Charts/RankList.vue
-/quantdinger_vue/src/components/IconSelector/README.md
-/quantdinger_vue/src/components/Table/README.md
-/quantdinger_vue/src/router/README.md
-/quantdinger_vue/README.md
-/quantdinger_vue/src/views/user/RegisterResult.vue
-/quantdinger_vue/src/utils/request.js
-/quantdinger_vue/src/components/GlobalHeader/RightContent.vue
-/quantdinger_vue/src/utils/routeConvert.js
-/quantdinger_vue/src/config/router.config.js
-/quantdinger_vue/src/layouts/RouteView.vue
-/quantdinger_vue/src/utils/screenLog.js
-/quantdinger_vue/src/components/SettingDrawer/settingConfig.js
-/quantdinger_vue/src/components/SettingDrawer/SettingDrawer.vue
-/quantdinger_vue/src/components/SettingDrawer/SettingItem.vue
-/quantdinger_vue/src/api/settings.js
-/quantdinger_vue/public/slogo.png
-/quantdinger_vue/src/assets/slogo.png
-/quantdinger_vue/src/components/Charts/smooth.area.less
-/quantdinger_vue/src/components/StandardFormRow/StandardFormRow.vue
-/quantdinger_vue/src/store/modules/static-router.js
-/quantdinger_vue/src/api/strategy.js
-/quantdinger_vue/src/components/TextArea/style.less
-/quantdinger_vue/src/mock/services/tagCloud.js
-/quantdinger_vue/src/components/Charts/TagCloud.vue
-/quantdinger_vue/src/components/TagSelect/TagSelectOption.jsx
-/quantdinger_vue/src/locales/lang/th-TH.js
-/quantdinger_vue/src/components/SettingDrawer/themeColor.js
-/quantdinger_vue/config/themePluginConfig.js
-/quantdinger_vue/src/views/trading-assistant/components/TradingRecords.vue
-/quantdinger_vue/src/components/Charts/TransferBar.vue
-/quantdinger_vue/src/components/Tree/Tree.jsx
-/quantdinger_vue/src/components/Charts/Trend.vue
-/quantdinger_vue/src/components/Trend/Trend.vue
-/quantdinger_vue/src/components/tools/TwoStepCaptcha.vue
-/quantdinger_vue/src/core/use.js
-/quantdinger_vue/src/api/user.js
-/quantdinger_vue/src/mock/services/user.js
-/quantdinger_vue/src/store/modules/user.js
-/quantdinger_vue/src/layouts/UserLayout.vue
-/quantdinger_vue/src/components/_util/util.js
-/quantdinger_vue/src/mock/util.js
-/quantdinger_vue/src/utils/util.js
-/quantdinger_vue/src/utils/utils.less
-/quantdinger_vue/src/locales/lang/vi-VN.js
-/quantdinger_vue/vue.config.js
-/quantdinger_vue/src/components/Editor/WangEditor.vue
-/quantdinger_vue/yarn.lock
-/quantdinger_vue/src/locales/lang/zh-CN.js
-/quantdinger_vue/src/locales/lang/zh-TW.js
-/quantdinger_vue/.browserslistrc
-/quantdinger_vue/.dockerignore
-/quantdinger_vue/.editorconfig
-/quantdinger_vue/.env
-/quantdinger_vue/.env.development
-/quantdinger_vue/.env.preview
-/quantdinger_vue/tests/unit/.eslintrc.js
-/quantdinger_vue/.eslintrc.js
-/quantdinger_vue/.eslintrc.json
-/quantdinger_vue/.gitattributes
-/quantdinger_vue/.husky/.gitignore
-/quantdinger_vue/.gitignore
-/quantdinger_vue/.lintstagedrc.json
-/quantdinger_vue/.prettierrc
-/quantdinger_vue/.stylelintrc.js
-/quantdinger_vue/.travis.yml
-/quantdinger_vue/src/views/exception/403.vue
-/quantdinger_vue/src/views/exception/404.vue
-/quantdinger_vue/src/views/404.vue
-/quantdinger_vue/src/views/exception/500.vue
-/quantdinger_vue/src/core/directives/action.js
-/quantdinger_vue/src/api/ai-trading.js
-/quantdinger_vue/src/views/trading-assistant/components/AIDecisionRecords.vue
-/quantdinger_vue/src/config/aiModels.js
-/quantdinger_vue/src/store/modules/app.js
-/quantdinger_vue/src/App.vue
-/quantdinger_vue/src/store/app-mixin.js
-/quantdinger_vue/src/locales/lang/ar-SA.js
-/quantdinger_vue/src/mock/services/article.js
-/quantdinger_vue/src/components/ArticleListContent/ArticleListContent.vue
-/quantdinger_vue/src/store/modules/async-router.js
-/quantdinger_vue/src/api/auth.js
-/quantdinger_vue/src/mock/services/auth.js
-/quantdinger_vue/public/avatar2.jpg
-/quantdinger_vue/src/components/GlobalHeader/AvatarDropdown.vue
-/quantdinger_vue/src/utils/axios.js
-/quantdinger_vue/babel.config.js
-/quantdinger_vue/src/assets/background.svg
-/quantdinger_vue/src/views/indicator-analysis/components/BacktestHistoryDrawer.vue
-/quantdinger_vue/src/views/indicator-analysis/components/BacktestModal.vue
-/quantdinger_vue/src/views/indicator-analysis/components/BacktestRunViewer.vue
-/quantdinger_vue/src/components/Charts/Bar.vue
-/quantdinger_vue/src/layouts/BasicLayout.less
-/quantdinger_vue/src/layouts/BasicLayout.vue
-/quantdinger_vue/src/layouts/BlankLayout.vue
-/quantdinger_vue/src/core/bootstrap.js
-/quantdinger_vue/src/assets/icons/bx-analyse.svg
-/quantdinger_vue/deploy/caddy.conf
-/quantdinger_vue/src/components/Other/CarbonAds.vue
-/quantdinger_vue/src/components/Charts/chart.less
-/quantdinger_vue/src/components/Charts/ChartCard.vue
-/quantdinger_vue/src/utils/codeDecrypt.js
-/quantdinger_vue/commitlint.config.js
-/quantdinger_vue/src/api/credentials.js
-/quantdinger_vue/src/api/dashboard.js
-/quantdinger_vue/src/locales/lang/de-DE.js
-/quantdinger_vue/src/config/defaultSettings.js
-/quantdinger_vue/src/store/device-mixin.js
-/quantdinger_vue/src/components/Dialog.js
-/quantdinger_vue/Dockerfile
-/quantdinger_vue/src/utils/domUtil.js
-/quantdinger_vue/src/components/Ellipsis/Ellipsis.vue
-/quantdinger_vue/src/locales/lang/en-US.js
-/quantdinger_vue/src/components/MultiTab/events.js
-/quantdinger_vue/src/utils/filter.js
-/quantdinger_vue/src/components/FooterToolbar/FooterToolBar.vue
-/quantdinger_vue/src/locales/lang/fr-FR.js
-/quantdinger_vue/src/router/generator-routers.js
-/quantdinger_vue/src/store/getters.js
-/quantdinger_vue/src/global.less
-/quantdinger_vue/src/components/Search/GlobalSearch.jsx
-/quantdinger_vue/src/store/i18n-mixin.js
-/quantdinger_vue/src/components/IconSelector/icons.js
-/quantdinger_vue/src/core/icons.js
-/quantdinger_vue/src/components/IconSelector/IconSelector.vue
-/quantdinger_vue/public/index.html
-/quantdinger_vue/src/components/ArticleListContent/index.js
-/quantdinger_vue/src/components/AvatarList/index.js
-/quantdinger_vue/src/components/Ellipsis/index.js
-/quantdinger_vue/src/components/FooterToolbar/index.js
-/quantdinger_vue/src/components/IconSelector/index.js
-/quantdinger_vue/src/components/MultiTab/index.js
-/quantdinger_vue/src/components/NoticeIcon/index.js
-/quantdinger_vue/src/components/NumberInfo/index.js
-/quantdinger_vue/src/components/SettingDrawer/index.js
-/quantdinger_vue/src/components/StandardFormRow/index.js
-/quantdinger_vue/src/components/Table/index.js
-/quantdinger_vue/src/components/Trend/index.js
-/quantdinger_vue/src/components/index.js
-/quantdinger_vue/src/layouts/index.js
-/quantdinger_vue/src/locales/index.js
-/quantdinger_vue/src/mock/index.js
-/quantdinger_vue/src/router/index.js
-/quantdinger_vue/src/store/index.js
-/quantdinger_vue/src/components/PageLoading/index.jsx
-/quantdinger_vue/src/components/SelectLang/index.jsx
-/quantdinger_vue/src/components/TagSelect/index.jsx
-/quantdinger_vue/src/components/TextArea/index.jsx
-/quantdinger_vue/src/components/AvatarList/index.less
-/quantdinger_vue/src/components/FooterToolbar/index.less
-/quantdinger_vue/src/components/MultiTab/index.less
-/quantdinger_vue/src/components/NumberInfo/index.less
-/quantdinger_vue/src/components/Search/index.less
-/quantdinger_vue/src/components/SelectLang/index.less
-/quantdinger_vue/src/components/Trend/index.less
-/quantdinger_vue/src/components/index.less
-/quantdinger_vue/src/components/AvatarList/index.md
-/quantdinger_vue/src/components/Ellipsis/index.md
-/quantdinger_vue/src/components/FooterToolbar/index.md
-/quantdinger_vue/src/components/NumberInfo/index.md
-/quantdinger_vue/src/components/Trend/index.md
-/quantdinger_vue/src/components/GlobalFooter/index.vue
-/quantdinger_vue/src/components/Turnstile/index.vue
-/quantdinger_vue/src/views/ai-analysis/components/index.vue
-/quantdinger_vue/src/views/ai-analysis/index.vue
-/quantdinger_vue/src/views/dashboard/index.vue
-/quantdinger_vue/src/views/indicator-analysis/index.vue
-/quantdinger_vue/src/views/indicator-community/index.vue
-/quantdinger_vue/src/views/portfolio/index.vue
-/quantdinger_vue/src/views/profile/index.vue
-/quantdinger_vue/src/views/settings/index.vue
-/quantdinger_vue/src/views/trading-assistant/index.vue
-/quantdinger_vue/src/views/user-manage/index.vue
-/quantdinger_vue/src/views/indicator-analysis/components/IndicatorEditor.vue
-/quantdinger_vue/src/components/AvatarList/Item.jsx
-/quantdinger_vue/src/locales/lang/ja-JP.js
-/quantdinger_vue/jest.config.js
-/quantdinger_vue/jsconfig.json
-/quantdinger_vue/src/views/indicator-analysis/components/KlineChart.vue
-/quantdinger_vue/src/locales/lang/ko-KR.js
-/quantdinger_vue/src/core/lazy_use.js
-/quantdinger_vue/src/components/Charts/Liquid.vue
-/quantdinger_vue/src/components/AvatarList/List.jsx
-/quantdinger_vue/src/api/login.js
-/quantdinger_vue/src/views/user/Login.vue
-/quantdinger_vue/public/logo.png
-/quantdinger_vue/src/assets/logo.png
-/quantdinger_vue/src/assets/logo.svg
-/quantdinger_vue/src/main.js
-/quantdinger_vue/src/api/manage.js
-/quantdinger_vue/src/mock/services/manage.js
-/quantdinger_vue/src/api/market.js
-/quantdinger_vue/src/components/Charts/MiniArea.vue
-/quantdinger_vue/src/components/Charts/MiniBar.vue
-/quantdinger_vue/src/components/Charts/MiniProgress.vue
-/quantdinger_vue/src/components/Charts/MiniSmoothArea.vue
-/quantdinger_vue/src/components/MultiTab/MultiTab.vue
-/quantdinger_vue/src/store/mutation-types.js
-/quantdinger_vue/deploy/nginx.conf
-/quantdinger_vue/deploy/nginx-docker.conf
-/quantdinger_vue/src/components/NoticeIcon/NoticeIcon.vue
-/quantdinger_vue/src/components/NProgress/nprogress.less
-/quantdinger_vue/src/components/NumberInfo/NumberInfo.vue
-/quantdinger_vue/src/mock/services/other.js
-/quantdinger_vue/package.json
-/quantdinger_vue/src/layouts/PageView.vue
-/quantdinger_vue/src/core/permission/permission.js
-/quantdinger_vue/src/permission.js
-/quantdinger_vue/config/plugin.config.js
-/quantdinger_vue/pnpm-lock.yaml
-/quantdinger_vue/src/api/portfolio.js
-/quantdinger_vue/src/views/trading-assistant/components/PositionRecords.vue
-/quantdinger_vue/postcss.config.js
-/quantdinger_vue/src/components/Editor/QuillEditor.vue
-/quantdinger_vue/src/components/Charts/Radar.vue
-/quantdinger_vue/src/components/Charts/RankList.vue
-/quantdinger_vue/src/components/IconSelector/README.md
-/quantdinger_vue/src/components/Table/README.md
-/quantdinger_vue/src/router/README.md
-/quantdinger_vue/README.md
-/quantdinger_vue/src/views/user/RegisterResult.vue
-/quantdinger_vue/src/utils/request.js
-/quantdinger_vue/src/components/GlobalHeader/RightContent.vue
-/quantdinger_vue/src/utils/routeConvert.js
-/quantdinger_vue/src/config/router.config.js
-/quantdinger_vue/src/layouts/RouteView.vue
-/quantdinger_vue/src/utils/screenLog.js
-/quantdinger_vue/src/components/SettingDrawer/settingConfig.js
-/quantdinger_vue/src/components/SettingDrawer/SettingDrawer.vue
-/quantdinger_vue/src/components/SettingDrawer/SettingItem.vue
-/quantdinger_vue/src/api/settings.js
-/quantdinger_vue/public/slogo.png
-/quantdinger_vue/src/assets/slogo.png
-/quantdinger_vue/src/components/Charts/smooth.area.less
-/quantdinger_vue/src/components/StandardFormRow/StandardFormRow.vue
-/quantdinger_vue/src/store/modules/static-router.js
-/quantdinger_vue/src/api/strategy.js
-/quantdinger_vue/src/components/TextArea/style.less
-/quantdinger_vue/src/mock/services/tagCloud.js
-/quantdinger_vue/src/components/Charts/TagCloud.vue
-/quantdinger_vue/src/components/TagSelect/TagSelectOption.jsx
-/quantdinger_vue/src/locales/lang/th-TH.js
-/quantdinger_vue/src/components/SettingDrawer/themeColor.js
-/quantdinger_vue/config/themePluginConfig.js
-/quantdinger_vue/src/views/trading-assistant/components/TradingRecords.vue
-/quantdinger_vue/src/components/Charts/TransferBar.vue
-/quantdinger_vue/src/components/Tree/Tree.jsx
-/quantdinger_vue/src/components/Charts/Trend.vue
-/quantdinger_vue/src/components/Trend/Trend.vue
-/quantdinger_vue/src/components/tools/TwoStepCaptcha.vue
-/quantdinger_vue/src/core/use.js
-/quantdinger_vue/src/api/user.js
-/quantdinger_vue/src/mock/services/user.js
-/quantdinger_vue/src/store/modules/user.js
-/quantdinger_vue/src/layouts/UserLayout.vue
-/quantdinger_vue/src/components/_util/util.js
-/quantdinger_vue/src/mock/util.js
-/quantdinger_vue/src/utils/util.js
-/quantdinger_vue/src/utils/utils.less
-/quantdinger_vue/src/locales/lang/vi-VN.js
-/quantdinger_vue/vue.config.js
-/quantdinger_vue/src/components/Editor/WangEditor.vue
-/quantdinger_vue/yarn.lock
-/quantdinger_vue/src/locales/lang/zh-CN.js
-/quantdinger_vue/src/locales/lang/zh-TW.js
-/quantdinger_vue/.browserslistrc
+# ========================
+# Frontend Source (CLOSED SOURCE - NOT tracked)
+# ========================
+/quantdinger_vue/
+
+# ========================
+# Frontend dist - DO track (pre-built)
+# ========================
+!/frontend/
+!/frontend/dist/
+!/frontend/dist/**
+
+# ========================
+# Environment & Secrets
+# ========================
+.env
+.env.local
+.env.*.local
+backend_api_python/.env
+
+# ========================
+# IDE & OS
+# ========================
+.idea/
+.vscode/
+*.swp
+*.swo
+*~
+.DS_Store
+Thumbs.db
+*.iml
+
+# ========================
+# Python
+# ========================
+__pycache__/
+*.py[cod]
+*$py.class
+*.egg-info/
+dist/
+build/
+*.egg
+.eggs/
+venv/
+.venv/
+env/
+
+# ========================
+# Node (if any remain)
+# ========================
+node_modules/
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+package-lock.json
+yarn.lock
+
+# ========================
+# Logs & Runtime Data
+# ========================
+*.log
+backend_api_python/logs/
+backend_api_python/data/quantdinger.db
+backend_api_python/data/memory/
+
+# ========================
+# Docker
+# ========================
+docker-compose.override.yml
diff --git a/QuantDinger.iml b/QuantDinger.iml
deleted file mode 100644
index cbaeb14..0000000
--- a/QuantDinger.iml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
่ฏทๅจๆๆบไธญๆๅผ Google Authenticator ๆไธคๆญฅ้ช่ฏ APP
่พๅ
ฅ 6 ไฝๅจๆ็
ๆญฃๅจ้ช่ฏ..
่ฏท็จๅ
- ้ๅคฑๆๆบ? -
-
-
-
-
- pandas (pd), numpy (np), math, json',
- 'dashboard.indicator.guide.section1.data': 'Input Data: df',
- 'dashboard.indicator.guide.section1.dataDesc': 'The system automatically converts current K-line data into a Pandas DataFrame object, variable name is df.',
- 'dashboard.indicator.guide.section1.dataColumns': 'df contains the following columns (all float type):',
- 'dashboard.indicator.guide.section1.dataColumnsList': 'time (timestamp, seconds), open, high, low, close, volume',
- 'dashboard.indicator.guide.section1.dataNote': 'Data index is arranged from old to new (0 is the earliest data, last row is the latest data).',
- 'dashboard.indicator.guide.section1.dataIndex': 'Important: df index is timestamp (DatetimeIndex), please preserve the index, avoid using .values which loses the index.',
- 'dashboard.indicator.guide.section2.title': '2. Parameter Definition',
- 'dashboard.indicator.guide.section2.desc': 'You can define variables as parameters at the beginning of your code. The system will try to parse statements like variable = value as adjustable parameters.',
- 'dashboard.indicator.guide.section2.example': 'Parameter Example',
- 'dashboard.indicator.guide.section2.exampleCode': 'span = 20 or multiplier = 2.0',
- 'dashboard.indicator.guide.section3.title': '3. Backtest Signal Setup (Important!)',
- 'dashboard.indicator.guide.section3.desc': 'If you want your indicator to support backtesting, you must set the following two columns in your code:',
- 'dashboard.indicator.guide.section3.backtestRequired': 'Required for Backtesting:',
- 'dashboard.indicator.guide.section3.backtestBuySignal': "df['buy_signal'] - Boolean Series, True indicates buy signal",
- 'dashboard.indicator.guide.section3.backtestSellSignal': "df['sell_signal'] - Boolean Series, True indicates sell signal",
- 'dashboard.indicator.guide.section3.backtestExample': 'Example:',
- 'dashboard.indicator.guide.section3.backtestExampleCode': "df['buy_signal'] = condition_buydf['sell_signal'] = condition_sell",
- 'dashboard.indicator.guide.section3.backtestNote': 'Note: Even if you only set output.signals for chart display, you must set these two columns to enable backtesting.',
- 'dashboard.indicator.guide.section4.title': '4. Output Requirements: output',
- 'dashboard.indicator.guide.section4.desc': 'At the end of code execution, you must define a dictionary named output to tell the chart how to display results.',
- 'dashboard.indicator.guide.section4.fields': 'The output dictionary contains the following fields:',
- 'dashboard.indicator.guide.section4.plots': 'plots - For drawing lines (e.g., moving averages, RSI)',
- 'dashboard.indicator.guide.section4.signals': 'signals - For marking buy/sell signals (e.g., arrows, labels)',
- 'dashboard.indicator.guide.section4.name': 'name - Indicator name (optional)',
- 'dashboard.indicator.guide.section4.calculatedVars': 'calculatedVars - Calculated variables (optional, for displaying additional information)',
- 'dashboard.indicator.guide.section5.title': '5. Plot Configuration (Plots)',
- 'dashboard.indicator.guide.section5.desc': 'Each object in the plots list represents a line.',
- 'dashboard.indicator.guide.section5.table.field': 'Field',
- 'dashboard.indicator.guide.section5.table.type': 'Type',
- 'dashboard.indicator.guide.section5.table.required': 'Required',
- 'dashboard.indicator.guide.section5.table.requiredYes': 'Yes',
- 'dashboard.indicator.guide.section5.table.requiredNo': 'No',
- 'dashboard.indicator.guide.section5.table.desc': 'Description',
- 'dashboard.indicator.guide.section5.table.name': 'The name of the indicator line, displayed in the legend',
- 'dashboard.indicator.guide.section5.table.data': 'Data list, length must match the number of rows in df. Recommended to use series.tolist()',
- 'dashboard.indicator.guide.section5.table.color': "Line color (Hex format, e.g. '#ff0000'). If not filled, the system will automatically assign",
- 'dashboard.indicator.guide.section5.table.typeDesc': "Chart type, default is 'line'",
- 'dashboard.indicator.guide.section5.table.overlay': 'Important. True means display on main chart (with K-line), False means display on sub-chart (independent area)',
- 'dashboard.indicator.guide.section5.example': 'Example: Draw Simple Moving Average (SMA)',
- 'dashboard.indicator.guide.section5.exampleCalc': 'Calculate SMA',
- 'dashboard.indicator.guide.section5.exampleOutput': 'Construct Output',
- 'dashboard.indicator.guide.section5.exampleOverlay': 'Display on main chart',
- 'dashboard.indicator.guide.section6.title': '6. Signal Markers (Signals)',
- 'dashboard.indicator.guide.section6.desc': "signals are used to mark buy/sell points on specific K-lines through icons or text. Note: This is only for chart display. The backtest system uses df['buy_signal'] and df['sell_signal'].",
- 'dashboard.indicator.guide.section6.table.type': "Signal type: 'buy' (buy, marked below K-line) or 'sell' (sell, marked above K-line)",
- 'dashboard.indicator.guide.section6.table.data': 'Signal data list. Fill price value at signal positions, fill None (or np.nan) at non-signal positions',
- 'dashboard.indicator.guide.section6.table.text': 'Text displayed on the label (e.g. "B", "S", "Buy", "Sell")',
- 'dashboard.indicator.guide.section6.table.color': 'Marker color',
- 'dashboard.indicator.guide.section6.hint': 'The system automatically handles positioning.',
- 'dashboard.indicator.guide.section6.buy': 'Markers will be automatically positioned below the Low of the current K-line',
- 'dashboard.indicator.guide.section6.sell': 'Markers will be automatically positioned above the High of the current K-line',
- 'dashboard.indicator.guide.section6.example': 'Example: Draw Buy/Sell Signals',
- 'dashboard.indicator.guide.section6.exampleInit': 'Initialize signal list, fill all with None',
- 'dashboard.indicator.guide.section6.exampleLogic': 'Simple logic: mark buy when close price is greater than open price',
- 'dashboard.indicator.guide.section6.exampleNote': 'In actual logic, please use loops or vectorized operations',
- 'dashboard.indicator.guide.section6.examplePrice': 'Record price',
- 'dashboard.indicator.guide.section6.exampleText': 'Buy',
- 'dashboard.indicator.guide.section7.title': '7. Complete Code Examples',
- 'dashboard.indicator.guide.section7.exampleA': 'Example A: Dual EMA Strategy (Supports Backtesting)',
- 'dashboard.indicator.guide.section7.exampleACode': "# 1. Calculate indicatorsdf['open_long'], df['close_long'], df['open_short'], df['close_short'] (boolean). Even if you set output.signals for chart display, you must set these columns to enable backtesting.",
- 'dashboard.indicator.guide.section8.q2': 'Q: Data length mismatch?',
- 'dashboard.indicator.guide.section8.a2': "A: The data list in plots and signals must have exactly the same length as the K-line data. If you use df['xxx'].tolist(), there is usually no problem.",
- 'dashboard.indicator.guide.section8.q3': 'Q: How to handle NaN (empty values)?',
- 'dashboard.indicator.guide.section8.a3': "A: Pandas calculations (such as rolling mean) will produce NaN at the beginning. The system will automatically convert NaN to null for chart rendering. You don't need to manually clean it, but if you need specific logic, you can use df.fillna(0) or other methods.",
- 'dashboard.indicator.guide.section8.q4': 'Q: Index mismatch causing all signals to be NaN?',
- 'dashboard.indicator.guide.section8.a4': "A: Please ensure you preserve the original df index (timestamp). Avoid using .values to create new Series. Use columns directly like df['close'] for operations.",
- 'dashboard.indicator.guide.section8.q5': 'Q: Can I use third-party network libraries?',
- 'dashboard.indicator.guide.section8.a5': 'A: No. The runtime environment is a browser sandbox and cannot use libraries like requests to request external APIs, nor can it install additional pip packages. Limited to built-in libraries such as pandas, numpy, math, json.',
- 'dashboard.indicator.guide.section8.q6': 'Q: How to debug code?',
- 'dashboard.indicator.guide.section8.a6': 'A: If the chart does not display indicators, it is usually because the Python code has an error. Please check for syntax errors or array index out of bounds. It is recommended to debug the algorithm logic in a local Python environment first, then copy it in.',
- 'dashboard.indicator.guide.section8.q7': 'Q: Backtest shows 0 signals?',
- 'dashboard.indicator.guide.section8.a7': "A: Please check the data type of df['open_long']/df['close_long']/df['open_short']/df['close_short']. They should be boolean (True/False), not numeric. Use condition.fillna(False).astype(bool) to ensure correct type.",
- 'dashboard.indicator.backtest.commissionHint': 'Charged on notional value (incl. leverage) per trade; both entry & exit are deducted from balance.',
- 'dashboard.indicator.backtest.historyTitle': 'Backtest History',
- 'dashboard.indicator.backtest.historyRefresh': 'Refresh',
- 'dashboard.indicator.backtest.historyView': 'View',
- 'dashboard.indicator.backtest.historyNoData': 'No backtest history',
- 'dashboard.indicator.backtest.historyUseCurrent': 'Only current symbol/timeframe',
- 'dashboard.indicator.backtest.historyFilterSymbol': 'Symbol',
- 'dashboard.indicator.backtest.historyFilterTimeframe': 'Timeframe',
- 'dashboard.indicator.backtest.historyApply': 'Apply filters',
- 'dashboard.indicator.backtest.historyAIAnalyze': 'AI Analyze',
- 'dashboard.indicator.backtest.historyAIAnalyzeTitle': 'AI Suggestions',
- 'dashboard.indicator.backtest.historyNoAIResult': 'No AI analysis result',
- 'dashboard.indicator.backtest.historyRunId': 'Run ID',
- 'dashboard.indicator.backtest.historyCreatedAt': 'Time',
- 'dashboard.indicator.backtest.historyRange': 'Range',
- 'dashboard.indicator.backtest.historyStatus': 'Status',
- 'dashboard.indicator.backtest.historyStatusSuccess': 'Success',
- 'dashboard.indicator.backtest.historyStatusFailed': 'Failed',
- 'dashboard.indicator.backtest.historyActions': 'Actions',
- 'dashboard.indicator.backtest.hint.entryPctMax': 'Max entry: {maxPct}% (reserve budget for future scale-ins)',
- 'trading-assistant.exchange.ipWhitelistTip': 'Please add the following IPs to the whitelist in your exchange API settings:',
- 'signal-robot.title': 'Signal Robot Console',
- 'signal-robot.createBot': 'Create New Bot',
- 'signal-robot.search.nameOrSymbol': 'Name/Symbol',
- 'signal-robot.search.placeholder': 'Search bot name or symbol',
- 'signal-robot.search.status': 'Status',
- 'signal-robot.search.statusAll': 'All',
- 'signal-robot.search.statusRunning': 'Running',
- 'signal-robot.search.statusPaused': 'Paused',
- 'signal-robot.search.query': 'Query',
- 'signal-robot.search.reset': 'Reset',
- 'signal-robot.table.botName': 'Bot Name',
- 'signal-robot.table.symbolTimeframe': 'Symbol/Timeframe',
- 'signal-robot.table.triggerStrategy': 'Trigger Strategy',
- 'signal-robot.table.notificationChannels': 'Notification Channels',
- 'signal-robot.table.status': 'Status',
- 'signal-robot.table.action': 'Action',
- 'signal-robot.table.triggerConditions': '{count} trigger conditions',
- 'signal-robot.table.monitoring': 'Monitoring',
- 'signal-robot.table.paused': 'Paused',
- 'signal-robot.table.edit': 'Edit',
- 'signal-robot.table.pause': 'Pause',
- 'signal-robot.table.start': 'Start',
- 'signal-robot.table.delete': 'Delete',
- 'signal-robot.table.deleteConfirm': 'Are you sure you want to delete this bot?',
- 'signal-robot.table.deleteSuccess': 'Deleted successfully',
- 'signal-robot.table.startSuccess': 'Bot started',
- 'signal-robot.table.pauseSuccess': 'Bot paused',
- 'signal-robot.channel.telegram': 'Telegram',
- 'signal-robot.channel.discord': 'Discord',
- 'signal-robot.channel.email': 'Email',
- 'signal-robot.channel.webhook': 'Webhook',
- 'signal-robot.channel.browser': 'Browser Push',
- 'signal-robot.modal.createTitle': 'Create New Signal Robot',
- 'signal-robot.modal.editTitle': 'Edit Signal Robot',
- 'signal-robot.modal.step.basic': 'Basic Settings',
- 'signal-robot.modal.step.entry': 'Entry Strategy',
- 'signal-robot.modal.step.position': 'Position Management',
- 'signal-robot.modal.step.risk': 'Risk Control',
- 'signal-robot.modal.step.notify': 'Notification Config',
- 'signal-robot.modal.prev': 'Previous',
- 'signal-robot.modal.next': 'Next',
- 'signal-robot.modal.preview': 'Preview Backtest',
- 'signal-robot.modal.complete': 'Complete & Run',
- 'signal-robot.modal.saveSuccess': 'Saved successfully',
- 'signal-robot.modal.previewDeveloping': 'Preview feature is under development...',
- 'signal-robot.modal.basicInfoRequired': 'Please complete basic information',
- 'signal-robot.basic.alert': 'Set basic information for the bot',
- 'signal-robot.basic.title': 'Basic Information',
- 'signal-robot.basic.botName': 'Bot Name',
- 'signal-robot.basic.botNamePlaceholder': 'e.g.: BTC SuperTrend Strategy',
- 'signal-robot.basic.symbol': 'Trading Pair',
- 'signal-robot.basic.symbolPlaceholder': 'Select from watchlist',
- 'signal-robot.basic.noWatchlist': 'No watchlist items, please add in market page first',
- 'signal-robot.basic.timeframe': 'K-Line Period',
- 'signal-robot.basic.timeframe15m': '15 Minutes',
- 'signal-robot.basic.timeframe30m': '30 Minutes',
- 'signal-robot.basic.timeframe1h': '1 Hour',
- 'signal-robot.basic.timeframe4h': '4 Hours',
- 'signal-robot.basic.timeframe1d': '1 Day',
- 'signal-robot.basic.autoNameSuggestion': '{symbol} Signal Robot',
- 'signal-robot.entry.alert': 'Trigger entry signal when all conditions below are met',
- 'signal-robot.entry.condition': 'Condition {index}',
- 'signal-robot.entry.indicator': 'Indicator',
- 'signal-robot.entry.indicatorSupertrend': 'SuperTrend',
- 'signal-robot.entry.indicatorEma': 'EMA (Exponential Moving Average)',
- 'signal-robot.entry.indicatorRsi': 'RSI (Relative Strength Index)',
- 'signal-robot.entry.indicatorMacd': 'MACD',
- 'signal-robot.entry.indicatorBollinger': 'Bollinger Bands',
- 'signal-robot.entry.atrPeriod': 'ATR Period',
- 'signal-robot.entry.multiplier': 'Multiplier',
- 'signal-robot.entry.triggerSignal': 'Trigger Signal',
- 'signal-robot.entry.signalTrendBullish': 'Trend Bullish',
- 'signal-robot.entry.signalTrendBearish': 'Trend Bearish',
- 'signal-robot.entry.signalIsUptrend': 'Is Uptrend',
- 'signal-robot.entry.signalIsDowntrend': 'Is Downtrend',
- 'signal-robot.entry.period': 'Period',
- 'signal-robot.entry.compareCondition': 'Compare Condition',
- 'signal-robot.entry.priceAbove': 'Price > EMA (Price Above)',
- 'signal-robot.entry.priceBelow': 'Price < EMA (Price Below)',
- 'signal-robot.entry.crossUp': 'Price Crosses Above EMA (Golden Cross)',
- 'signal-robot.entry.crossDown': 'Price Crosses Below EMA (Death Cross)',
- 'signal-robot.entry.compare': 'Compare',
- 'signal-robot.entry.greaterThan': 'Greater Than',
- 'signal-robot.entry.lessThan': 'Less Than',
- 'signal-robot.entry.crossUpShort': 'Cross Up',
- 'signal-robot.entry.crossDownShort': 'Cross Down',
- 'signal-robot.entry.threshold': 'Threshold',
- 'signal-robot.entry.selectIndicator': 'Please select an indicator to configure parameters',
- 'signal-robot.entry.addCondition': 'Add Condition',
- 'signal-robot.position.alert': 'Configure initial position size, leverage and pyramiding rules',
- 'signal-robot.position.basicTitle': 'Basic Position Management',
- 'signal-robot.position.initialSize': 'Initial Size (Capital %)',
- 'signal-robot.position.initialSizeHint': 'Recommended 5% - 20%',
- 'signal-robot.position.leverage': 'Leverage',
- 'signal-robot.position.leverageHint': 'Please ensure your exchange account supports this leverage',
- 'signal-robot.position.maxPyramiding': 'Max Pyramiding Times',
- 'signal-robot.position.maxPyramidingHint': '0 means no pyramiding',
- 'signal-robot.position.pyramidingTitle': 'Pyramiding Rules',
- 'signal-robot.position.pyramidingEnabled': 'Enabled',
- 'signal-robot.position.pyramidingDisabled': 'Disabled',
- 'signal-robot.position.pyramidingCondition': 'Pyramiding Trigger Condition',
- 'signal-robot.position.priceRisePct': 'Price Rises (Long) / Falls (Short)',
- 'signal-robot.position.profitPct': 'Profit Reaches',
- 'signal-robot.position.triggerThreshold': 'Trigger Threshold (%)',
- 'signal-robot.position.triggerThresholdHint': 'e.g. 3%: add position once every 3% rise',
- 'signal-robot.position.addSize': 'Single Add Size (Capital %)',
- 'signal-robot.position.pyramidingDisabledHint': 'Pyramiding disabled, only initial position will be executed',
- 'signal-robot.risk.alert': 'Configure take profit, stop loss and exit rules',
- 'signal-robot.risk.stopLossTitle': 'Stop Loss',
- 'signal-robot.risk.stopLossEnabled': 'Enabled',
- 'signal-robot.risk.stopLossDisabled': 'Disabled',
- 'signal-robot.risk.stopLossType': 'Stop Loss Type',
- 'signal-robot.risk.stopLossFixedPct': 'Fixed Percentage',
- 'signal-robot.risk.stopLossAtrMultiplier': 'ATR Multiplier',
- 'signal-robot.risk.stopLossValue': 'Value',
- 'signal-robot.risk.stopLossFixedHint': 'e.g. 2%: stop loss when loss reaches 2%',
- 'signal-robot.risk.stopLossAtrHint': 'e.g. 2.0: stop loss when price touches ATR*2.0',
- 'signal-robot.risk.stopLossDisabledHint': 'Stop loss disabled (high risk)',
- 'signal-robot.risk.trailingStopTitle': 'Trailing Stop',
- 'signal-robot.risk.activationProfit': 'Activation Profit (%)',
- 'signal-robot.risk.activationProfitHint': 'Start trailing when profit reaches this level',
- 'signal-robot.risk.callbackPct': 'Callback (%)',
- 'signal-robot.risk.callbackPctHint': 'Trigger take profit when price falls from peak by this percentage',
- 'signal-robot.risk.trailingStopDisabledHint': 'Trailing stop disabled',
- 'signal-robot.risk.otherExitTitle': 'Other Exit Rules',
- 'signal-robot.risk.signalExit': 'Allow Signal Exit',
- 'signal-robot.risk.signalExitHint': 'Close position immediately when reverse signal appears (e.g. close long when short signal appears)',
- 'signal-robot.notify.alert': 'Configure notification methods when signal is triggered',
- 'signal-robot.notify.channelTitle': 'Notification Channels',
- 'signal-robot.notify.discordWebhook': 'Discord Webhook',
- 'signal-robot.notify.genericWebhook': 'Generic Webhook',
- 'signal-robot.notify.webhookUrl': 'Webhook URL',
- 'signal-robot.notify.webhookUrlPlaceholder': 'https://example.com/webhook',
- 'signal-robot.notify.discordUrl': 'Discord URL',
- 'signal-robot.notify.discordUrlPlaceholder': 'https://discord.com/api/webhooks/...',
- 'signal-robot.operator.greaterThan': 'Greater Than',
- 'signal-robot.operator.lessThan': 'Less Than',
- 'signal-robot.operator.equal': 'Equal',
- 'signal-robot.operator.goldenCross': 'Golden Cross',
- 'signal-robot.operator.deathCross': 'Death Cross',
- 'signal-robot.operator.increaseBy': 'Increase By',
- 'signal-robot.operator.decreaseBy': 'Decrease By',
- 'signal-robot.indicator.price': 'Price',
- 'signal-robot.indicator.rsi': 'RSI',
- 'signal-robot.indicator.kdjK': 'KDJ(K)',
- 'signal-robot.indicator.kdjJ': 'KDJ(J)',
- 'signal-robot.indicator.macd': 'MACD',
- 'signal-robot.indicator.macdHist': 'MACD Histogram',
- 'signal-robot.indicator.bollingerUp': 'Bollinger Upper',
- 'signal-robot.indicator.bollingerLow': 'Bollinger Lower',
- 'signal-robot.indicator.volume': 'Volume',
- 'signal-robot.indicator.changePct1h': '1H Change %',
- 'signal-robot.indicator.changePct24h': '24H Change %',
- 'signal-robot.indicator.signalLine': 'Signal Line',
-
- // Settings (Memory/Reflection)
- 'settings.group.agent_memory': 'ุงูุฐุงูุฑุฉ/ุงูุงูุนูุงุณ',
- 'settings.group.reflection_worker': 'ุนุงู
ู ุงูุชุญูู ุงูุชููุงุฆู ููุงูุนูุงุณ',
- 'settings.field.ENABLE_AGENT_MEMORY': 'ุชู
ููู ุฐุงูุฑุฉ ุงููููู',
- 'settings.field.AGENT_MEMORY_ENABLE_VECTOR': 'ุชู
ููู ุงูุงุณุชุฑุฌุงุน ุงูู
ุชุฌูู (ู
ุญูู)',
- 'settings.field.AGENT_MEMORY_EMBEDDING_DIM': 'ุจูุนุฏ ุงูุชุถู
ูู',
- 'settings.field.AGENT_MEMORY_TOP_K': 'ุนุฏุฏ ุงูุงุณุชุฑุฌุงุน Top-K',
- 'settings.field.AGENT_MEMORY_CANDIDATE_LIMIT': 'ุญุฌู
ูุงูุฐุฉ ุงูู
ุฑุดุญูู',
- 'settings.field.AGENT_MEMORY_HALF_LIFE_DAYS': 'ูุตู ุนู
ุฑ ุชูุงุดู ุงูุฒู
ู (ุฃูุงู
)',
- 'settings.field.AGENT_MEMORY_W_SIM': 'ูุฒู ุงูุชุดุงุจู',
- 'settings.field.AGENT_MEMORY_W_RECENCY': 'ูุฒู ุงูุญุฏุงุซุฉ',
- 'settings.field.AGENT_MEMORY_W_RETURNS': 'ูุฒู ุงูุนุงุฆุฏ',
- 'settings.field.ENABLE_REFLECTION_WORKER': 'ุชู
ููู ุงูุชุญูู ุงูุชููุงุฆู',
- 'settings.field.REFLECTION_WORKER_INTERVAL_SEC': 'ูุงุตู ุงูุชุญูู (ุซุงููุฉ)',
-
- // Profile - Notification Settings (ุฅุนุฏุงุฏุงุช ุงูุฅุดุนุงุฑุงุช)
- 'profile.notifications.title': 'ุฅุนุฏุงุฏุงุช ุงูุฅุดุนุงุฑุงุช',
- 'profile.notifications.hint': 'ูู
ุจุชูููู ุทุฑู ุงูุฅุดุนุงุฑุงุช ุงูุงูุชุฑุงุถูุฉุ ุณูุชู
ุงุณุชุฎุฏุงู
ูุง ุชููุงุฆูุงู ุนูุฏ ุฅูุดุงุก ู
ุฑุงูุจุฉ ุงูุฃุตูู ูุงูุชูุจููุงุช',
- 'profile.notifications.defaultChannels': 'ูููุงุช ุงูุฅุดุนุงุฑุงุช ุงูุงูุชุฑุงุถูุฉ',
- 'profile.notifications.browser': 'ุฅุดุนุงุฑ ุฏุงุฎู ุงูุชุทุจูู',
- 'profile.notifications.email': 'ุงูุจุฑูุฏ ุงูุฅููุชุฑููู',
- 'profile.notifications.phone': 'ุฑุณุงูุฉ ูุตูุฉ',
- 'profile.notifications.telegramBotToken': 'Telegram Bot Token',
- 'profile.notifications.telegramBotTokenPlaceholder': 'ุฃุฏุฎู Telegram Bot Token ุงูุฎุงุต ุจู',
- 'profile.notifications.telegramBotTokenHint': 'ุฃูุดุฆ ุจูุช ุนุจุฑ @BotFather ููุญุตูู ุนูู Token',
- 'profile.notifications.telegramChatId': 'Telegram Chat ID',
- 'profile.notifications.telegramPlaceholder': 'ุฃุฏุฎู Telegram Chat ID ุงูุฎุงุต ุจู (ู
ุซุงู: 123456789)',
- 'profile.notifications.telegramHint': 'ุฃุฑุณู /start ุฅูู @userinfobot ููุญุตูู ุนูู Chat ID',
- 'profile.notifications.notifyEmail': 'ุจุฑูุฏ ุงูุฅุดุนุงุฑุงุช',
- 'profile.notifications.emailPlaceholder': 'ุนููุงู ุงูุจุฑูุฏ ุงูุฅููุชุฑููู ูุงุณุชูุงู
ุงูุฅุดุนุงุฑุงุช',
- 'profile.notifications.emailHint': 'ูุณุชุฎุฏู
ุจุฑูุฏ ุงูุญุณุงุจ ุจุดูู ุงูุชุฑุงุถูุ ูู
ููู ุชุนููู ุจุฑูุฏ ุขุฎุฑ',
- 'profile.notifications.phonePlaceholder': 'ุฃุฏุฎู ุฑูู
ุงููุงุชู (ู
ุซุงู: +966501234567)',
- 'profile.notifications.phoneHint': 'ูุญุชุงุฌ ุงูู
ุณุคูู ุฅูู ุชูููู ุฎุฏู
ุฉ Twilio',
- 'profile.notifications.discordWebhook': 'Discord Webhook',
- 'profile.notifications.discordPlaceholder': 'https://discord.com/api/webhooks/...',
- 'profile.notifications.discordHint': 'ุฃูุดุฆ Webhook ูู ุฅุนุฏุงุฏุงุช ุฎุงุฏู
Discord',
- 'profile.notifications.webhookUrl': 'Webhook URL',
- 'profile.notifications.webhookPlaceholder': 'https://your-server.com/webhook',
- 'profile.notifications.webhookHint': 'ุนููุงู Webhook ู
ุฎุตุตุ ูุฑุณู ุงูุฅุดุนุงุฑุงุช ุนุจุฑ POST JSON',
- 'profile.notifications.webhookToken': 'Webhook Token (ุงุฎุชูุงุฑู)',
- 'profile.notifications.webhookTokenPlaceholder': 'Bearer Token ููุชุญูู ู
ู ุงูุทูุจ',
- 'profile.notifications.webhookTokenHint': 'ููุฑุณู ูู Authorization: Bearer Token ุฅูู Webhook',
- 'profile.notifications.testBtn': 'ุฅุฑุณุงู ุฅุดุนุงุฑ ุชุฌุฑูุจู',
- 'profile.notifications.saveSuccess': 'ุชู
ุญูุธ ุฅุนุฏุงุฏุงุช ุงูุฅุดุนุงุฑุงุช ุจูุฌุงุญ',
- 'profile.notifications.selectChannel': 'ุงูุฑุฌุงุก ุงุฎุชูุงุฑ ููุงุฉ ุฅุดุนุงุฑ ูุงุญุฏุฉ ุนูู ุงูุฃูู',
- 'profile.notifications.fillTelegramToken': 'ุงูุฑุฌุงุก ุฅุฏุฎุงู Telegram Bot Token',
- 'profile.notifications.fillTelegram': 'ุงูุฑุฌุงุก ุฅุฏุฎุงู Telegram Chat ID',
- 'profile.notifications.fillEmail': 'ุงูุฑุฌุงุก ุฅุฏุฎุงู ุจุฑูุฏ ุงูุฅุดุนุงุฑุงุช',
- 'profile.notifications.testSent': 'ุชู
ุฅุฑุณุงู ุงูุฅุดุนุงุฑ ุงูุชุฌุฑูุจูุ ูุฑุฌู ุงูุชุญูู ู
ู ูููุงุช ุงูุฅุดุนุงุฑุงุช'
-}
-
-export default {
- ...components,
- ...locale
-}
diff --git a/quantdinger_vue/src/locales/lang/de-DE.js b/quantdinger_vue/src/locales/lang/de-DE.js
deleted file mode 100644
index 485a032..0000000
--- a/quantdinger_vue/src/locales/lang/de-DE.js
+++ /dev/null
@@ -1,1871 +0,0 @@
-import antdDeDE from 'ant-design-vue/es/locale-provider/de_DE'
-import momentDE from 'moment/locale/de'
-
-const components = {
- antLocale: antdDeDE,
- momentName: 'de',
- momentLocale: momentDE
-}
-
-const locale = {
- 'submit': 'Senden',
- 'save': 'speichern',
- 'submit.ok': 'รbermittlung erfolgreich',
- 'save.ok': 'Erfolgreich gespeichert',
- 'menu.welcome': 'Willkommen',
- 'menu.home': 'Startseite',
- 'menu.dashboard': 'Armaturenbrett',
- 'menu.dashboard.indicator': 'Indikatorenanalyse',
- 'menu.dashboard.community': 'Indikatorgemeinschaft',
- 'menu.dashboard.analysis': 'KI-Analyse',
- 'menu.dashboard.tradingAssistant': 'Handelsassistent',
- 'menu.dashboard.aiTradingAssistant': 'KI-Handelsassistent',
- 'menu.dashboard.signalRobot': 'Signal-Roboter',
- 'menu.dashboard.monitor': 'รberwachungsseite',
- 'menu.dashboard.workplace': 'Werkbank',
- 'menu.form': 'Formularseite',
- 'menu.form.basic-form': 'Grundform',
- 'menu.form.step-form': 'Schritt-fรผr-Schritt-Formular',
- 'menu.form.step-form.info': 'Schritt-fรผr-Schritt-Formular (รbertragungsinformationen ausfรผllen)',
- 'menu.form.step-form.confirm': 'Schritt-fรผr-Schritt-Formular (รbertragungsinformationen bestรคtigen)',
- 'menu.form.step-form.result': 'Schritt-fรผr-Schritt-Formular (vollstรคndig)',
- 'menu.form.advanced-form': 'Erweiterte Formulare',
- 'menu.list': 'Listenseite',
- 'menu.list.table-list': 'Anfrageformular',
- 'menu.list.basic-list': 'Standardliste',
- 'menu.list.card-list': 'Kartenliste',
- 'menu.list.search-list': 'Suchliste',
- 'menu.list.search-list.articles': 'Suchliste (Artikel)',
- 'menu.list.search-list.projects': 'Suchliste (Projekt)',
- 'menu.list.search-list.applications': 'Suchliste (App)',
- 'menu.profile': 'Detailseite',
- 'menu.profile.basic': 'Grundlegende Detailseite',
- 'menu.profile.advanced': 'Erweiterte Detailseite',
- 'menu.result': 'Ergebnisseite',
- 'menu.result.success': 'Erfolgsseite',
- 'menu.result.fail': 'Fehlerseite',
- 'menu.exception': 'Ausnahmeseite',
- 'menu.exception.not-permission': '403',
- 'menu.exception.not-find': '404',
- 'menu.exception.server-error': '500',
- 'menu.exception.trigger': 'Fehler auslรถsen',
- 'menu.account': 'Persรถnliche Seite',
- 'menu.account.center': 'Persรถnliches Zentrum',
- 'menu.account.settings': 'persรถnliche Einstellungen',
- 'menu.account.trigger': 'Triggerfehler',
- 'menu.account.logout': 'Abmelden',
- 'menu.wallet': 'meine Brieftasche',
- 'menu.docs': 'Dokumentenzentrum',
- 'menu.docs.detail': 'Dokumentdetails',
- 'menu.header.refreshPage': 'Seite aktualisieren',
- 'menu.invite.friends': 'Freunde einladen',
- 'app.setting.pagestyle': 'allgemeine Stileinstellungen',
- 'app.setting.pagestyle.light': 'Heller Menรผstil',
- 'app.setting.pagestyle.dark': 'Dunkler Menรผstil',
- 'app.setting.pagestyle.realdark': 'Dunkelmodus',
- 'app.setting.themecolor': 'Themenfarbe',
- 'app.setting.navigationmode': 'Navigationsmodus',
- 'app.setting.sidemenu.nav': 'Seitenleistennavigation',
- 'app.setting.topmenu.nav': 'Navigation in der oberen Leiste',
- 'app.setting.content-width': 'Breite des Inhaltsbereichs',
- 'app.setting.content-width.tooltip': 'Diese Einstellung ist nur wirksam, wenn [Navigation in der oberen Leiste]',
- 'app.setting.content-width.fixed': 'Behoben',
- 'app.setting.content-width.fluid': 'Streaming',
- 'app.setting.fixedheader': 'Fester Header',
- 'app.setting.fixedheader.tooltip': 'Bei festem Header konfigurierbar',
- 'app.setting.autoHideHeader': 'Kopfzeile beim Scrollen ausblenden',
- 'app.setting.fixedsidebar': 'Seitenmenรผ korrigiert',
- 'app.setting.sidemenu': 'Seitenmenรผ-Layout',
- 'app.setting.topmenu': 'Oberes Menรผlayout',
- 'app.setting.othersettings': 'Andere Einstellungen',
- 'app.setting.weakmode': 'Farbschwรคchemodus',
- 'app.setting.multitab': 'Multi-Tab-Modus',
- 'app.setting.copy': 'Einstellungen kopieren',
- 'app.setting.loading': 'Thema wird geladen',
- 'app.setting.copyinfo': 'Einstellungen erfolgreich kopieren src/config/defaultSettings.js',
- 'app.setting.copy.success': 'Kopieren abgeschlossen',
- 'app.setting.copy.fail': 'Der Kopiervorgang ist fehlgeschlagen',
- 'app.setting.theme.switching': 'Wechselndes Thema!',
- 'app.setting.production.hint': 'Die Konfigurationsleiste dient nur der Vorschau in der Entwicklungsumgebung und wird in der Produktionsumgebung nicht angezeigt. Bitte kopieren und รคndern Sie die Konfigurationsdatei manuell.',
- 'app.setting.themecolor.daybreak': 'Morgenblau (Standard)',
- 'app.setting.themecolor.dust': 'Dรคmmerung',
- 'app.setting.themecolor.volcano': 'Vulkan',
- 'app.setting.themecolor.sunset': 'Sonnenuntergang',
- 'app.setting.themecolor.cyan': 'Mingqing',
- 'app.setting.themecolor.green': 'Auroragrรผn',
- 'app.setting.themecolor.geekblue': 'Geek blau',
- 'app.setting.themecolor.purple': 'Jiang Zi',
- 'app.setting.tooltip': 'Seiteneinstellungen',
- 'user.login.userName': 'Benutzername',
- 'user.login.password': 'Passwort',
- 'user.login.username.placeholder': 'Konto: Admin',
- 'user.login.password.placeholder': 'Passwort: admin oder ant.design',
- 'user.login.message-invalid-credentials': 'Die Anmeldung ist fehlgeschlagen. Bitte รผberprรผfen Sie Ihre E-Mail-Adresse und Ihren Bestรคtigungscode',
- 'user.login.message-invalid-verification-code': 'Fehler beim Bestรคtigungscode',
- 'user.login.tab-login-credentials': 'Anmeldung mit Kontopasswort',
- 'user.login.tab-login-email': 'E-Mail-Login',
- 'user.login.tab-login-mobile': 'Anmeldung รผber die Mobiltelefonnummer',
- 'user.login.captcha.placeholder': 'Bitte geben Sie den grafischen Bestรคtigungscode ein',
- 'user.login.mobile.placeholder': 'Mobiltelefonnummer',
- 'user.login.mobile.verification-code.placeholder': 'Bestรคtigungscode',
- 'user.login.email.placeholder': 'Bitte geben Sie Ihre E-Mail-Adresse ein',
- 'user.login.email.verification-code.placeholder': 'Bitte geben Sie den Bestรคtigungscode ein',
- 'user.login.email.sending': 'Bestรคtigungscode wird gesendet...',
- 'user.login.email.send-success-title': 'Tipps',
- 'user.login.email.send-success': 'Der Bestรคtigungscode wurde erfolgreich gesendet. Bitte รผberprรผfen Sie Ihre E-Mails',
- 'user.login.sms.send-success': 'Der Bestรคtigungscode wurde erfolgreich gesendet. Bitte รผberprรผfen Sie die Textnachricht',
- 'user.login.remember-me': 'Automatische Anmeldung',
- 'user.login.forgot-password': 'Passwort vergessen',
- 'user.login.sign-in-with': 'Andere Anmeldemethoden',
- 'user.login.signup': 'Registrieren Sie ein Konto',
- 'user.login.login': 'Anmelden',
- 'user.register.register': 'Registrieren',
- 'user.register.email.placeholder': 'E-Mail',
- 'user.register.password.placeholder': 'Bitte geben Sie mindestens 6 Zeichen ein. Bitte verwenden Sie keine Passwรถrter, die leicht zu erraten sind.',
- 'user.register.password.popover-message': 'Bitte geben Sie mindestens 6 Zeichen ein. Bitte verwenden Sie keine Passwรถrter, die leicht zu erraten sind.',
- 'user.register.confirm-password.placeholder': 'Passwort bestรคtigen',
- 'user.register.get-verification-code': 'Holen Sie sich den Bestรคtigungscode',
- 'user.register.sign-in': 'Melden Sie sich mit einem bestehenden Konto an',
- 'user.register-result.msg': 'Ihr Konto: {email} Registrierung erfolgreich',
- 'user.register-result.activation-email': 'Die Aktivierungs-E-Mail wurde an Ihr Postfach gesendet und ist 24 Stunden lang gรผltig. Bitte melden Sie sich umgehend bei Ihrem E-Mail-Konto an und klicken Sie auf den Link in der E-Mail, um Ihr Konto zu aktivieren.',
- 'user.register-result.back-home': 'Zurรผck zur Startseite',
- 'user.register-result.view-mailbox': 'รberprรผfen Sie Ihr Postfach',
- 'user.email.required': 'Bitte geben Sie Ihre E-Mail-Adresse ein!',
- 'user.email.wrong-format': 'Das E-Mail-Adressformat ist falsch!',
- 'user.userName.required': 'Bitte geben Sie Ihren Kontonamen oder Ihre E-Mail-Adresse ein',
- 'user.password.required': 'Bitte geben Sie Ihr Passwort ein!',
- 'user.password.twice.msg': 'Die doppelt eingegebenen Passwรถrter stimmen nicht รผberein!',
- 'user.password.strength.msg': 'Das Passwort ist nicht sicher genug',
- 'user.password.strength.strong': 'Stรคrke: Stark',
- 'user.password.strength.medium': 'Stรคrke: Mittel',
- 'user.password.strength.low': 'Stรคrke: gering',
- 'user.password.strength.short': 'Stรคrke: zu kurz',
- 'user.confirm-password.required': 'Bitte bestรคtigen Sie Ihr Passwort!',
- 'user.phone-number.required': 'Bitte geben Sie die korrekte Mobiltelefonnummer ein',
- 'user.phone-number.wrong-format': 'Das Format der Mobiltelefonnummer ist falsch!',
- 'user.verification-code.required': 'Bitte geben Sie den Verifizierungscode ein!',
- 'user.captcha.required': 'Bitte geben Sie den grafischen Verifizierungscode ein!',
- 'user.login.infos': 'QuantDinger ist ein AI-Multi-Agent-Hilfstool fรผr die Aktienanalyse und verfรผgt nicht รผber Qualifikationen als Wertpapieranlageberater. Alle Analyseergebnisse, Scores und Referenzmeinungen in der Plattform werden von KI automatisch auf Basis historischer Daten generiert und dienen ausschlieรlich der Ausbildung, Forschung und dem technischen Austausch und stellen keine Anlageberatung oder Entscheidungsgrundlage dar. Aktienanlagen bergen verschiedene Risiken wie Marktrisiko, Liquiditรคtsrisiko, politisches Risiko usw., die zu einem Kapitalverlust fรผhren kรถnnen. Benutzer sollten unabhรคngige Entscheidungen auf der Grundlage ihrer eigenen Risikotoleranz treffen, und jegliches Investitionsverhalten und alle Konsequenzen, die sich aus der Verwendung dieses Tools ergeben, sind vom Benutzer zu tragen. Der Markt ist riskant und Investitionen mรผssen vorsichtig sein.',
- 'user.login.tab-login-web3': 'Web3-Anmeldung',
- 'user.login.web3.tip': 'Signatur-Login mit Wallet',
- 'user.login.web3.connect': 'Wallet verbinden und anmelden',
- 'user.login.web3.no-wallet': 'Wallet nicht erkannt',
- 'user.login.web3.no-address': 'Wallet-Adresse nicht erhalten',
- 'user.login.web3.nonce-failed': 'Zufallszahl konnte nicht abgerufen werden',
- 'user.login.web3.verify-failed': 'Die Signaturรผberprรผfung ist fehlgeschlagen',
- 'user.login.web3.success': 'Anmeldung erfolgreich',
- 'user.login.web3.failed': 'Die Wallet-Anmeldung ist fehlgeschlagen',
- 'nav.no_wallet': 'Wallet nicht erkannt',
- 'nav.copy': 'Kopieren',
- 'nav.copy_success': 'Erfolgreich kopiert',
- 'user.login.oauth.google': 'Melden Sie sich mit Google an',
- 'user.login.oauth.github': 'Melden Sie sich mit GitHub an',
- 'user.login.oauth.loading': 'Weiterleitung zur Autorisierungsseite...',
- 'user.login.oauth.failed': 'Die OAuth-Anmeldung ist fehlgeschlagen',
- 'user.login.oauth.get-url-failed': 'Der Autorisierungslink konnte nicht abgerufen werden',
- 'user.login.subtitle': 'Gezielte quantitative Einblicke in globale Mรคrkte',
- 'user.login.legal.title': 'Haftungsausschluss',
- 'user.login.legal.view': 'Rechtlichen Haftungsausschluss anzeigen',
- 'user.login.legal.collapse': 'Haftungsausschluss einklappen',
- 'user.login.legal.agree': 'Ich habe den Haftungsausschluss gelesen und stimme ihm zu',
- 'user.login.legal.required': 'Bitte lesen und รผberprรผfen Sie zunรคchst den rechtlichen Haftungsausschluss',
- 'user.login.legal.content': 'QuantDinger ist ein AI-Multi-Agent-Hilfstool fรผr die Aktienanalyse und verfรผgt nicht รผber Qualifikationen als Wertpapieranlageberater. Alle Analyseergebnisse, Bewertungen und Referenzmeinungen in der Plattform werden von KI automatisch auf Basis historischer Daten generiert und dienen ausschlieรlich der Ausbildung, Forschung und dem technischen Austausch und stellen keine Anlageberatung oder Entscheidungsgrundlage dar. Aktienanlagen bergen verschiedene Risiken wie Marktrisiko, Liquiditรคtsrisiko, politisches Risiko usw., die zu einem Kapitalverlust fรผhren kรถnnen. Benutzer sollten unabhรคngige Entscheidungen auf der Grundlage ihrer eigenen Risikotoleranz treffen, und jegliches Investitionsverhalten und alle Konsequenzen, die sich aus der Verwendung dieses Tools ergeben, sind vom Benutzer zu tragen. Der Markt ist riskant und Investitionen mรผssen vorsichtig sein.',
- 'user.login.privacy.title': 'Datenschutzrichtlinie fรผr Benutzer',
- 'user.login.privacy.view': 'Datenschutzrichtlinie fรผr Benutzer anzeigen',
- 'user.login.privacy.collapse': 'Schlieรen Sie die Datenschutzbestimmungen fรผr Benutzer',
- 'user.login.privacy.content': 'Wir legen Wert auf Ihre Privatsphรคre und Ihren Datenschutz. 1) Erfassungsumfang: Es werden nur die zur Umsetzung der Funktion erforderlichen Informationen (z. B. E-Mail, Mobiltelefonnummer, Vorwahl, Web3-Wallet-Adresse) sowie notwendige Protokolle und Gerรคteinformationen erfasst. 2) Verwendungszweck: Zur Kontoanmeldung und Sicherheitsรผberprรผfung, Bereitstellung von Servicefunktionen, Fehlerbehebung und Compliance-Anforderungen. 3) Speicherung und Sicherheit: Daten werden verschlรผsselt und gespeichert, und es werden die erforderlichen Berechtigungen und Zugriffskontrollmaรnahmen ergriffen, um unbefugten Zugriff, Offenlegung oder Verlust zu verhindern. 4) Weitergabe an Dritte: Sofern dies nicht durch Gesetze und Vorschriften vorgeschrieben oder fรผr die Erbringung von Dienstleistungen erforderlich ist, werden Ihre personenbezogenen Daten nicht an Dritte weitergegeben. Bei Einbindung von Diensten Dritter (z. B. Wallets, SMS-Dienstleister) erfolgt die Verarbeitung nur im fรผr die Umsetzung der Funktion erforderlichen Mindestumfang. 5) Cookies/lokale Speicherung: werden fรผr den Anmeldestatus und die notwendige Sitzungswartung verwendet (z. B. Token, PHPSESSID). Sie kรถnnen sie im Browser lรถschen oder einschrรคnken. 6) Persรถnlichkeitsrechte: Sie kรถnnen Ihre Rechte auf Auskunft, Berichtigung, Lรถschung, Widerruf der Einwilligung usw. gemรคร den Gesetzen und Vorschriften ausรผben. 7) รnderungen und Hinweise: Wenn diese Bedingungen aktualisiert werden, werden sie gut sichtbar auf der Seite angezeigt. Durch die weitere Nutzung dieses Dienstes wird davon ausgegangen, dass Sie den aktualisierten Inhalt gelesen und ihm zugestimmt haben. Wenn Sie diesen Bedingungen oder deren Aktualisierungen nicht zustimmen, stellen Sie bitte die Nutzung des Dienstes ein und kontaktieren Sie uns.',
- 'account.basicInfo': 'Grundlegende Informationen',
- 'account.id': 'Benutzer-ID',
- 'account.username': 'Benutzername',
- 'account.nickname': 'Spitzname',
- 'account.email': 'E-Mail',
- 'account.mobile': 'Mobiltelefonnummer',
- 'account.web3address': 'Wallet-Adresse',
- 'account.pid': 'Referrer-ID',
- 'account.level': 'Benutzerebene',
- 'account.money': 'Gleichgewicht',
- 'account.qdtBalance': 'QDT-Balance',
- 'account.score': 'Punkte',
- 'account.createtime': 'Anmeldezeit',
- 'account.inviteLink': 'Einladungslink',
- 'account.recharge': 'Aufladen',
- 'account.rechargeTip': 'Bitte verwenden Sie WeChat oder Alipay, um den untenstehenden QR-Code zum Aufladen zu scannen.',
- 'account.qrCodePlaceholder': 'QR-Code-Platzhalter (Emulation)',
- 'account.rechargeAmount': 'Aufladebetrag',
- 'account.enterAmount': 'Bitte geben Sie den Aufladebetrag ein',
- 'account.rechargeHint': 'Mindesteinzahlungsbetrag: 1 QDT',
- 'account.confirmRecharge': 'Bestรคtigen Sie das Aufladen',
- 'account.enterValidAmount': 'Bitte geben Sie einen gรผltigen Aufladebetrag ein',
- 'account.rechargeSuccess': 'Aufladen erfolgreich! {amount} QDT eingezahlt',
- 'account.settings.menuMap.basic': 'Grundeinstellungen',
- 'account.settings.menuMap.security': 'Sicherheitseinstellungen',
- 'account.settings.menuMap.notification': 'Benachrichtigung รผber neue Nachrichten',
- 'account.settings.menuMap.moneyLog': 'Details zum Fonds',
- 'account.moneyLog.empty': 'Noch keine Fondsdetails',
- 'account.moneyLog.total': 'Insgesamt {total} Datensรคtze',
- 'account.moneyLog.type.purchase': 'Kaufindikator',
- 'account.moneyLog.type.recharge': 'Aufladen',
- 'account.moneyLog.type.refund': 'Rรผckerstattung',
- 'account.moneyLog.type.reward': 'Belohnung',
- 'account.moneyLog.type.income': 'Indikatoreinkommen',
- 'account.moneyLog.type.commission': 'Bearbeitungsgebรผhr fรผr die Plattform',
- 'wallet.balance': 'QDT-Balance',
- 'wallet.recharge': 'Aufladen',
- 'wallet.withdraw': 'Bargeld abheben',
- 'wallet.filter': 'Filtern',
- 'wallet.reset': 'zurรผckgesetzt',
- 'wallet.totalRecharge': 'Akkumulierte Aufladung',
- 'wallet.totalWithdraw': 'Kumulierte Abhebungen',
- 'wallet.totalIncome': 'Kumuliertes Einkommen',
- 'wallet.records': 'Transaktionsaufzeichnungen und Fondsdetails',
- 'wallet.tradingRecords': 'Transaktionsverlauf',
- 'wallet.moneyLog': 'Details zum Fonds',
- 'wallet.rechargeTip': 'Bitte verwenden Sie WeChat oder Alipay, um den untenstehenden QR-Code zum Aufladen zu scannen.',
- 'wallet.qrCodePlaceholder': 'QR-Code-Platzhalter (Emulation)',
- 'wallet.rechargeAmount': 'Aufladebetrag',
- 'wallet.enterAmount': 'Bitte geben Sie den Aufladebetrag ein',
- 'wallet.rechargeHint': 'Mindesteinzahlungsbetrag: 1 QDT',
- 'wallet.confirmRecharge': 'Bestรคtigen Sie das Aufladen',
- 'wallet.enterValidAmount': 'Bitte geben Sie einen gรผltigen Aufladebetrag ein',
- 'wallet.rechargeSuccess': 'Aufladen erfolgreich! {amount} QDT eingezahlt',
- 'wallet.rechargeFailed': 'Das Aufladen ist fehlgeschlagen',
- 'wallet.withdrawTip': 'Bitte geben Sie den Auszahlungsbetrag und die Auszahlungsadresse ein',
- 'wallet.withdrawAmount': 'Betrag abheben',
- 'wallet.enterWithdrawAmount': 'Bitte geben Sie den Auszahlungsbetrag ein',
- 'wallet.withdrawHint': 'Mindestauszahlungsbetrag: 1 QDT',
- 'wallet.withdrawAddress': 'Auszahlungsadresse (optional)',
- 'wallet.enterWithdrawAddress': 'Bitte geben Sie die Auszahlungsadresse ein',
- 'wallet.confirmWithdraw': 'Auszahlung bestรคtigen',
- 'wallet.enterValidWithdrawAmount': 'Bitte geben Sie einen gรผltigen Auszahlungsbetrag ein',
- 'wallet.insufficientBalance': 'Unzureichendes Gleichgewicht',
- 'wallet.withdrawSuccess': 'Auszahlung erfolgreich! {Betrag} QDT abgehoben',
- 'wallet.withdrawFailed': 'Die Auszahlung ist fehlgeschlagen',
- 'wallet.noTradingRecords': 'Noch kein Transaktionsdatensatz',
- 'wallet.noMoneyLog': 'Noch keine Fondsdetails',
- 'wallet.loadTradingRecordsFailed': 'Transaktionsdatensรคtze konnten nicht geladen werden',
- 'wallet.loadMoneyLogFailed': 'Die Fondsdetails konnten nicht geladen werden',
- 'wallet.moneyLogTotal': 'Insgesamt {total} Datensรคtze',
- 'wallet.moneyLogTypeTitle': 'Typ',
- 'wallet.moneyLogType.all': 'Alle Arten',
- 'wallet.table.time': 'Zeit',
- 'wallet.table.type': 'Typ',
- 'wallet.table.price': 'Preis',
- 'wallet.table.amount': 'Menge',
- 'wallet.table.money': 'Betrag',
- 'wallet.table.balance': 'Gleichgewicht',
- 'wallet.table.memo': 'Bemerkungen',
- 'wallet.table.value': 'Wert',
- 'wallet.table.profit': 'Gewinn und Verlust',
- 'wallet.table.commission': 'Bearbeitungsgebรผhr',
- 'wallet.table.total': 'Insgesamt {total} Datensรคtze',
- 'wallet.tradeType.buy': 'kaufen',
- 'wallet.tradeType.sell': 'verkaufen',
- 'wallet.tradeType.liquidation': 'Zwangsliquidation',
- 'wallet.tradeType.openLong': 'Lange geรถffnet',
- 'wallet.tradeType.addLong': 'Gadot',
- 'wallet.tradeType.closeLong': 'Pinduo',
- 'wallet.tradeType.closeLongStop': 'Stop-Loss und Long',
- 'wallet.tradeType.closeLongProfit': 'Nehmen Sie Gewinn mit und steigern Sie Ihr Level',
- 'wallet.tradeType.openShort': 'Kurz รถffnen',
- 'wallet.tradeType.addShort': 'kurz hinzufรผgen',
- 'wallet.tradeType.closeShort': 'leer',
- 'wallet.tradeType.closeShortStop': 'Stop-Loss',
- 'wallet.tradeType.closeShortProfit': 'Nehmen Sie den Gewinn mit und schlieรen Sie mit Leerverkรคufen',
- 'wallet.moneyLogType.purchase': 'Kaufindikator',
- 'wallet.moneyLogType.recharge': 'Aufladen',
- 'wallet.moneyLogType.withdraw': 'Bargeld abheben',
- 'wallet.moneyLogType.refund': 'Rรผckerstattung',
- 'wallet.moneyLogType.reward': 'Belohnung',
- 'wallet.moneyLogType.income': 'Einkommen',
- 'wallet.moneyLogType.commission': 'Bearbeitungsgebรผhr',
- 'wallet.web3Address.required': 'Bitte geben Sie zuerst die Web3-Wallet-Adresse ein',
- 'wallet.web3Address.requiredDescription': 'Vor dem Aufladen mรผssen Sie Ihre Web3-Wallet-Adresse verknรผpfen, um eine Aufladung zu erhalten.',
- 'wallet.web3Address.placeholder': 'Bitte geben Sie Ihre Web3-Wallet-Adresse ein (beginnend mit 0x)',
- 'wallet.web3Address.save': 'Wallet-Adresse speichern',
- 'wallet.web3Address.saveSuccess': 'Wallet-Adresse erfolgreich gespeichert',
- 'wallet.web3Address.saveFailed': 'Wallet-Adresse konnte nicht gespeichert werden',
- 'wallet.web3Address.invalidFormat': 'Bitte geben Sie eine gรผltige Web3-Wallet-Adresse ein (Ethereum-Format: 42 Zeichen, beginnend mit 0x, oder TRC20-Format: 34 Zeichen, beginnend mit T)',
- 'wallet.selectCoin': 'Wรคhrung auswรคhlen',
- 'wallet.selectChain': 'Auswahlkette',
- 'wallet.chain.eth': 'ETH(ERC20)',
- 'wallet.chain.trc20': 'TRC20',
- 'wallet.chain.bsc': 'BSC',
- 'wallet.targetQdtAmount': 'Der QDT-Betrag, den Sie einlรถsen mรถchten (optional)',
- 'wallet.targetQdtAmount.placeholder': 'Bitte geben Sie die Menge an QDT ein, die Sie einlรถsen mรถchten, den aktuellen QDT-Preis: {price} USDT',
- 'wallet.targetQdtAmount.requiredUsdt': 'Aufladung erforderlich: {amount} USDT',
- 'wallet.rechargeAddress': 'Aufladeadresse',
- 'wallet.copyAddress': 'Kopieren',
- 'wallet.copySuccess': 'Erfolgreich kopieren!',
- 'wallet.copyFailed': 'Der Kopiervorgang ist fehlgeschlagen. Bitte manuell kopieren',
- 'wallet.rechargeAddressHint': 'Bitte stellen Sie sicher, dass Sie {chain} verwenden, um {coin} an diese Adresse einzuzahlen',
- 'wallet.qdtPrice.loading': 'Laden...',
- 'wallet.rechargeTip.new': 'Bitte wรคhlen Sie die Wรคhrung und die Kette aus und scannen Sie dann den untenstehenden QR-Code zum Aufladen',
- 'wallet.exchangeRate': '1 QDT โ {rate} USDT',
- 'wallet.withdrawableAmount': 'Verfรผgbarer Bargeldbetrag',
- 'wallet.totalBalance': 'Gesamtsaldo',
- 'wallet.insufficientWithdrawable': 'Der Bargeldbetrag, der abgehoben werden kann, reicht nicht aus. Der aktuelle Betrag, der abgehoben werden kann, ist: {amount} QDT',
- 'wallet.withdrawAddressRequired': 'Bitte geben Sie die Auszahlungsadresse ein',
- 'wallet.withdrawAddressHint': 'Bitte stellen Sie sicher, dass die Adresse korrekt ist. Nach dem Widerruf ist ein Widerruf nicht mehr mรถglich.',
- 'wallet.withdrawSubmitSuccess': 'Auszahlungsantrag erfolgreich eingereicht, bitte warten Sie auf die Prรผfung',
- 'menu.footer.contactUs': 'Kontaktieren Sie uns',
- 'menu.footer.getSupport': 'Holen Sie sich Unterstรผtzung',
- 'menu.footer.socialAccounts': 'soziales Konto',
- 'menu.footer.userAgreement': 'Benutzervereinbarung',
- 'menu.footer.privacyPolicy': 'Datenschutzrichtlinie',
- 'menu.footer.support': 'Unterstรผtzung',
- 'menu.footer.featureRequest': 'Funktionsanfrage',
- 'menu.footer.email': 'E-Mail',
- 'menu.footer.liveChat': 'Live-Chat rund um die Uhr',
- 'dashboard.analysis.title': 'Mehrdimensionale Analyse',
- 'dashboard.analysis.subtitle': 'KI-gesteuerte umfassende Finanzanalyseplattform',
- 'dashboard.analysis.selectSymbol': 'Wรคhlen Sie den zugrunde liegenden Code aus oder geben Sie ihn ein',
- 'dashboard.analysis.selectModel': 'Modell auswรคhlen',
- 'dashboard.analysis.startAnalysis': 'Analyse starten',
- 'dashboard.analysis.history': 'Geschichte',
- 'dashboard.analysis.tab.overview': 'umfassende Analyse',
- 'dashboard.analysis.tab.fundamental': 'Grundlagen',
- 'dashboard.analysis.tab.technical': 'Technologie',
- 'dashboard.analysis.tab.news': 'Nachrichten',
- 'dashboard.analysis.tab.sentiment': 'Emotionen',
- 'dashboard.analysis.tab.risk': 'Risiko',
- 'dashboard.analysis.tab.debate': 'Die Lang-Kurz-Debatte',
- 'dashboard.analysis.tab.decision': 'endgรผltige Entscheidung',
- 'dashboard.analysis.empty.selectSymbol': 'Wรคhlen Sie ein Ziel aus, um die Analyse zu starten',
- 'dashboard.analysis.empty.selectSymbolDesc': 'Wรคhlen Sie aus der selbstgewรคhlten Aktienliste aus oder geben Sie den zugrunde liegenden Code ein, um einen mehrdimensionalen KI-Analysebericht zu erhalten',
- 'dashboard.analysis.empty.startAnalysis': 'Klicken Sie auf die Schaltflรคche โAnalyse startenโ, um eine mehrdimensionale Analyse durchzufรผhren',
- 'dashboard.analysis.empty.startAnalysisDesc': 'Wir bieten Ihnen umfassende Analysen aus mehreren Dimensionen wie Fundamentaldaten, Technologie, Nachrichten, Stimmung und Risiko',
- 'dashboard.analysis.empty.noData': 'Derzeit liegen keine {type}-Analysedaten vor. Bitte fรผhren Sie zunรคchst eine umfassende Analyse durch',
- 'dashboard.analysis.empty.noWatchlist': 'Derzeit gibt es keine selbstgewรคhlten Aktien',
- 'dashboard.analysis.empty.noHistory': 'Noch keine Geschichte',
- 'dashboard.analysis.empty.watchlistHint': 'Derzeit sind keine selbstgewรคhlten Aktien vorhanden, bitte zuerst',
- 'dashboard.analysis.empty.noDebateData': 'Noch keine Debattendaten',
- 'dashboard.analysis.empty.noDecisionData': 'Noch keine Entscheidungsdaten',
- 'dashboard.analysis.empty.selectAgent': 'Bitte wรคhlen Sie einen Agenten aus, um die Analyseergebnisse anzuzeigen',
- 'dashboard.analysis.loading.analyzing': 'Analyse lรคuft, bitte warten...',
- 'dashboard.analysis.loading.fundamental': 'Fundamentaldaten analysieren...',
- 'dashboard.analysis.loading.technical': 'Analyse technischer Indikatoren...',
- 'dashboard.analysis.loading.news': 'Nachrichtendaten werden analysiert...',
- 'dashboard.analysis.loading.sentiment': 'Marktstimmung analysieren...',
- 'dashboard.analysis.loading.risk': 'Risiko einschรคtzen...',
- 'dashboard.analysis.loading.debate': 'Die Lang-Kurz-Debatte geht weiter...',
- 'dashboard.analysis.loading.decision': 'Endgรผltige Entscheidung generieren...',
- 'dashboard.analysis.score.overall': 'Gesamtbewertung',
- 'dashboard.analysis.score.recommendation': 'Anlageberatung',
- 'dashboard.analysis.score.confidence': 'Vertrauen',
- 'dashboard.analysis.dimension.fundamental': 'Grundlagen',
- 'dashboard.analysis.dimension.technical': 'Technologie',
- 'dashboard.analysis.dimension.news': 'Nachrichten',
- 'dashboard.analysis.dimension.sentiment': 'Emotionen',
- 'dashboard.analysis.dimension.risk': 'Risiko',
- 'dashboard.analysis.card.dimensionScores': 'Bewertungen fรผr jede Dimension',
- 'dashboard.analysis.card.overviewReport': 'Umfassender Analysebericht',
- 'dashboard.analysis.card.financialMetrics': 'Finanzindikatoren',
- 'dashboard.analysis.card.fundamentalReport': 'Fundamentalanalysebericht',
- 'dashboard.analysis.card.technicalIndicators': 'Technische Indikatoren',
- 'dashboard.analysis.card.technicalReport': 'Technischer Analysebericht',
- 'dashboard.analysis.card.newsList': 'Verwandte Neuigkeiten',
- 'dashboard.analysis.card.newsReport': 'Bericht zur Nachrichtenanalyse',
- 'dashboard.analysis.card.sentimentIndicators': 'Stimmungsindikator',
- 'dashboard.analysis.card.sentimentReport': 'Stimmungsanalysebericht',
- 'dashboard.analysis.card.riskMetrics': 'Risikoindikatoren',
- 'dashboard.analysis.card.riskReport': 'Risikobewertungsbericht',
- 'dashboard.analysis.card.bullView': 'Bullische Sichtweise (Bull)',
- 'dashboard.analysis.card.bearView': 'Bรคrische Sichtweise (Bรคr)',
- 'dashboard.analysis.card.researchConclusion': 'Fazit des Forschers',
- 'dashboard.analysis.card.traderPlan': 'Hรคndlerplan',
- 'dashboard.analysis.card.riskDebate': 'Debatte im Risikoausschuss',
- 'dashboard.analysis.card.finalDecision': 'Endgรผltige Entscheidung',
- 'dashboard.analysis.card.tradePlanDetail': 'Einzelheiten zum Handelsplan',
- 'dashboard.analysis.tradingPlan.entry_price': 'Eintrittspreis',
- 'dashboard.analysis.tradingPlan.position_size': 'Positionsgrรถรe',
- 'dashboard.analysis.tradingPlan.stop_loss': 'Stop-Loss',
- 'dashboard.analysis.tradingPlan.take_profit': 'Nehmen Sie Gewinn mit',
- 'dashboard.analysis.label.confidence': 'Vertrauen',
- 'dashboard.analysis.label.keyPoints': 'Kernpunkte',
- 'dashboard.analysis.label.riskWarning': 'Risikowarnung',
- 'dashboard.analysis.risk.risky': 'Riskant',
- 'dashboard.analysis.risk.neutral': 'Neutraler Standpunkt (Neutral)',
- 'dashboard.analysis.risk.safe': 'Konservative Sichtweise (sicher)',
- 'dashboard.analysis.risk.conclusion': 'Fazit',
- 'dashboard.analysis.feature.fundamental': 'Fundamentalanalyse',
- 'dashboard.analysis.feature.technical': 'technische Analyse',
- 'dashboard.analysis.feature.news': 'Nachrichtenanalyse',
- 'dashboard.analysis.feature.sentiment': 'Stimmungsanalyse',
- 'dashboard.analysis.feature.risk': 'Risikobewertung',
- 'dashboard.analysis.watchlist.title': 'Meine Aktienauswahl',
- 'dashboard.analysis.watchlist.add': 'hinzufรผgen',
- 'dashboard.analysis.watchlist.addStock': 'Brรผhe hinzufรผgen',
- 'dashboard.analysis.modal.addStock.title': 'Fรผgen Sie optionale Aktien hinzu',
- 'dashboard.analysis.modal.addStock.confirm': 'Okay',
- 'dashboard.analysis.modal.addStock.cancel': 'Abbrechen',
- 'dashboard.analysis.modal.addStock.market': 'Markttyp',
- 'dashboard.analysis.modal.addStock.marketPlaceholder': 'Bitte wรคhlen Sie einen Markt aus',
- 'dashboard.analysis.modal.addStock.marketRequired': 'Bitte wรคhlen Sie den Markttyp aus',
- 'dashboard.analysis.modal.addStock.symbol': 'Lagercode',
- 'dashboard.analysis.modal.addStock.symbolPlaceholder': 'Zum Beispiel: AAPL, TSLA, GOOGL, 000001, BTC',
- 'dashboard.analysis.modal.addStock.symbolRequired': 'Bitte Lagercode eingeben',
- 'dashboard.analysis.modal.addStock.searchPlaceholder': 'Suchen Sie nach Zielcode oder Name',
- 'dashboard.analysis.modal.addStock.searchOrInputPlaceholder': 'Suchen Sie den zugrunde liegenden Code oder geben Sie ihn ein (z. B. AAPL, BTC/USDT, EUR/USD).',
- 'dashboard.analysis.modal.addStock.searchOrInputHint': 'Unterstรผtzt die Suche nach Objekten in der Datenbank oder die direkte Eingabe des Codes (das System erhรคlt den Namen automatisch).',
- 'dashboard.analysis.modal.addStock.search': 'Suchen',
- 'dashboard.analysis.modal.addStock.searchResults': 'Suchergebnisse',
- 'dashboard.analysis.modal.addStock.hotSymbols': 'Beliebte Ziele',
- 'dashboard.analysis.modal.addStock.noHotSymbols': 'Noch keine beliebten Ziele',
- 'dashboard.analysis.modal.addStock.selectedSymbol': 'Ausgewรคhlt',
- 'dashboard.analysis.modal.addStock.pleaseSelectSymbol': 'Bitte wรคhlen Sie zunรคchst ein Ziel aus',
- 'dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol': 'Bitte wรคhlen Sie ein Ziel aus oder geben Sie zuerst den Zielcode ein',
- 'dashboard.analysis.modal.addStock.pleaseEnterSymbol': 'Bitte geben Sie den Zielcode ein',
- 'dashboard.analysis.modal.addStock.pleaseSelectMarket': 'Bitte wรคhlen Sie zunรคchst den Markttyp aus',
- 'dashboard.analysis.modal.addStock.searchFailed': 'Die Suche ist fehlgeschlagen. Bitte versuchen Sie es spรคter erneut',
- 'dashboard.analysis.modal.addStock.noSearchResults': 'Kein passendes Ziel gefunden',
- 'dashboard.analysis.modal.addStock.willAutoFetchName': 'Das System erhรคlt den Namen automatisch',
- 'dashboard.analysis.modal.addStock.addDirectly': 'Direkt hinzufรผgen',
- 'dashboard.analysis.modal.addStock.nameWillBeFetched': 'Der Name wird beim Hinzufรผgen automatisch รผbernommen',
- 'dashboard.analysis.market.USStock': 'US-Aktien',
- 'dashboard.analysis.market.Crypto': 'Kryptowรคhrung',
- 'dashboard.analysis.market.Forex': 'Forex',
- 'dashboard.analysis.market.Futures': 'Futures',
- 'dashboard.analysis.modal.history.title': 'Historische Analyseaufzeichnungen',
- 'dashboard.analysis.modal.history.viewResult': 'Ergebnisse anzeigen',
- 'dashboard.analysis.modal.history.completeTime': 'Fertigstellungszeit',
- 'dashboard.analysis.modal.history.error': 'Fehler',
- 'dashboard.analysis.status.pending': 'Ausstehend',
- 'dashboard.analysis.status.processing': 'Verarbeitung',
- 'dashboard.analysis.status.completed': 'Abgeschlossen',
- 'dashboard.analysis.status.failed': 'gescheitert',
- 'dashboard.analysis.message.selectSymbol': 'Bitte wรคhlen Sie zuerst das Ziel aus',
- 'dashboard.analysis.message.taskCreated': 'Die Analyseaufgabe wurde erstellt und wird im Hintergrund ausgefรผhrt...',
- 'dashboard.analysis.message.analysisComplete': 'Analyse abgeschlossen',
- 'dashboard.analysis.message.analysisCompleteCache': 'Analyse abgeschlossen (unter Verwendung zwischengespeicherter Daten)',
- 'dashboard.analysis.message.analysisFailed': 'Die Analyse ist fehlgeschlagen. Bitte versuchen Sie es spรคter noch einmal',
- 'dashboard.analysis.message.addStockSuccess': 'Erfolgreich hinzugefรผgt',
- 'dashboard.analysis.message.addStockFailed': 'Das Hinzufรผgen ist fehlgeschlagen',
- 'dashboard.analysis.message.removeStockSuccess': 'Erfolgreich entfernt',
- 'dashboard.analysis.message.removeStockFailed': 'Das Entfernen ist fehlgeschlagen',
- 'dashboard.analysis.message.resumingAnalysis': 'Analyseaufgabe wird fortgesetzt...',
- 'dashboard.analysis.message.deleteSuccess': 'Erfolgreich gelรถscht',
- 'dashboard.analysis.message.deleteFailed': 'Lรถschen fehlgeschlagen',
- 'dashboard.analysis.modal.history.delete': 'Lรถschen',
- 'dashboard.analysis.modal.history.deleteConfirm': 'Mรถchten Sie diesen Analysedatensatz wirklich lรถschen?',
- 'dashboard.analysis.test': 'Geschรคft Nr. {no}, Gongzhuan Road',
- 'dashboard.analysis.introduce': 'Beschreibung des Indikators',
- 'dashboard.analysis.total-sales': 'Gesamtumsatz',
- 'dashboard.analysis.day-sales': 'Durchschnittlicher Tagesumsatz๏ฟฅ',
- 'dashboard.analysis.visits': 'Besuche',
- 'dashboard.analysis.visits-trend': 'Verkehrstrends',
- 'dashboard.analysis.visits-ranking': 'Ranking der Ladenbesuche',
- 'dashboard.analysis.day-visits': 'Tรคgliche Besuche',
- 'dashboard.analysis.week': 'Wรถchentlich im Jahresvergleich',
- 'dashboard.analysis.day': 'Jahr fรผr Jahr',
- 'dashboard.analysis.payments': 'Anzahl der Zahlungen',
- 'dashboard.analysis.conversion-rate': 'Umrechnungskurs',
- 'dashboard.analysis.operational-effect': 'Auswirkungen der betrieblichen Tรคtigkeit',
- 'dashboard.analysis.sales-trend': 'Verkaufstrends',
- 'dashboard.analysis.sales-ranking': 'Ranking der Filialverkรคufe',
- 'dashboard.analysis.all-year': 'Das ganze Jahr รผber',
- 'dashboard.analysis.all-month': 'diesen Monat',
- 'dashboard.analysis.all-week': 'diese Woche',
- 'dashboard.analysis.all-day': 'heute',
- 'dashboard.analysis.search-users': 'Anzahl der Suchbenutzer',
- 'dashboard.analysis.per-capita-search': 'Suchanfragen pro Kopf',
- 'dashboard.analysis.online-top-search': 'Beliebte Suchanfragen im Internet',
- 'dashboard.analysis.the-proportion-of-sales': 'Anteil der Verkaufskategorie',
- 'dashboard.analysis.dropdown-option-one': 'Operation eins',
- 'dashboard.analysis.dropdown-option-two': 'Betrieb 2',
- 'dashboard.analysis.channel.all': 'Alle Kanรคle',
- 'dashboard.analysis.channel.online': 'online',
- 'dashboard.analysis.channel.stores': 'speichern',
- 'dashboard.analysis.sales': 'Verkรคufe',
- 'dashboard.analysis.traffic': 'Passagierfluss',
- 'dashboard.analysis.table.rank': 'Rangliste',
- 'dashboard.analysis.table.search-keyword': 'Suchbegriffe suchen',
- 'dashboard.analysis.table.users': 'Anzahl der Benutzer',
- 'dashboard.analysis.table.weekly-range': 'Wรถchentliche Erhรถhung',
- 'dashboard.indicator.selectSymbol': 'Wรคhlen Sie den zugrunde liegenden Code aus oder geben Sie ihn ein',
- 'dashboard.indicator.emptyWatchlistHint': 'Derzeit sind keine selbst ausgewรคhlten Aktien vorhanden. Bitte fรผgen Sie diese zuerst hinzu',
- 'dashboard.indicator.hint.selectSymbol': 'Bitte wรคhlen Sie ein Ziel aus, um mit der Analyse zu beginnen',
- 'dashboard.indicator.hint.selectSymbolDesc': 'Wรคhlen Sie einen Aktiencode aus oder geben Sie ihn in das Suchfeld oben ein, um K-Line-Diagramme und technische Indikatoren anzuzeigen',
- 'dashboard.indicator.retry': 'Versuchen Sie es erneut',
- 'dashboard.indicator.panel.title': 'Technische Indikatoren',
- 'dashboard.indicator.panel.realtimeOn': 'Deaktivieren Sie Echtzeit-Updates',
- 'dashboard.indicator.panel.realtimeOff': 'Aktivieren Sie Echtzeit-Updates',
- 'dashboard.indicator.panel.themeLight': 'Wechseln Sie zum dunklen Thema',
- 'dashboard.indicator.panel.themeDark': 'Wechseln Sie zum Lichtthema',
- 'dashboard.indicator.section.enabled': 'Aktiviert',
- 'dashboard.indicator.section.added': 'Indikatoren, die ich hinzugefรผgt habe',
- 'dashboard.indicator.section.custom': 'Von Ihnen selbst erstellte Indikatoren',
- 'dashboard.indicator.section.bought': 'Indikatoren, die ich gekauft habe',
- 'dashboard.indicator.section.myCreated': 'Von mir erstellte Indikatoren',
- 'dashboard.indicator.empty': 'Es gibt noch keinen Indikator. Bitte fรผgen Sie zuerst einen Indikator hinzu oder erstellen Sie ihn',
- 'dashboard.indicator.buy': 'Kaufindikator',
- 'dashboard.indicator.action.start': 'beginnen',
- 'dashboard.indicator.action.stop': 'Schlieรen',
- 'dashboard.indicator.action.edit': 'Bearbeiten',
- 'dashboard.indicator.action.delete': 'Lรถschen',
- 'dashboard.indicator.action.backtest': 'Backtest',
- 'dashboard.indicator.status.normal': 'normal',
- 'dashboard.indicator.status.normalPermanent': 'Normal (dauerhaft gรผltig)',
- 'dashboard.indicator.status.expired': 'Abgelaufen',
- 'dashboard.indicator.expiry.permanent': 'Dauerhaft gรผltig',
- 'dashboard.indicator.expiry.noExpiry': 'Keine Ablaufzeit',
- 'dashboard.indicator.expiry.expired': 'Abgelaufen: {Datum}',
- 'dashboard.indicator.expiry.expiresOn': 'Ablaufzeit: {Datum}',
- 'dashboard.indicator.delete.confirmTitle': 'Bestรคtigen Sie den Lรถschvorgang',
- 'dashboard.indicator.delete.confirmContent': 'Sind Sie sicher, dass Sie den Indikator โ{name}โ lรถschen mรถchten? Dieser Vorgang ist irreversibel.',
- 'dashboard.indicator.delete.confirmOk': 'Lรถschen',
- 'dashboard.indicator.delete.confirmCancel': 'Abbrechen',
- 'dashboard.indicator.delete.success': 'Erfolgreich lรถschen',
- 'dashboard.indicator.delete.failed': 'Das Lรถschen ist fehlgeschlagen',
- 'dashboard.indicator.save.success': 'Erfolgreich gespeichert',
- 'dashboard.indicator.save.failed': 'Speichern fehlgeschlagen',
- 'dashboard.indicator.error.loadWatchlistFailed': 'Optionale Bestรคnde konnten nicht geladen werden',
- 'dashboard.indicator.error.chartNotReady': 'Die Diagrammkomponente ist nicht initialisiert. Bitte wรคhlen Sie zuerst das Ziel aus und warten Sie, bis das Diagramm geladen ist.',
- 'dashboard.indicator.error.chartMethodNotReady': 'Die Diagrammkomponentenmethode ist nicht bereit. Bitte versuchen Sie es spรคter erneut',
- 'dashboard.indicator.error.chartExecuteNotReady': 'Die Ausfรผhrungsmethode der Diagrammkomponente ist nicht bereit. Bitte versuchen Sie es spรคter erneut',
- 'dashboard.indicator.error.parseFailed': 'Python-Code kann nicht analysiert werden',
- 'dashboard.indicator.error.parseFailedCheck': 'Der Python-Code kann nicht analysiert werden. Bitte รผberprรผfen Sie das Codeformat',
- 'dashboard.indicator.error.addIndicatorFailed': 'Der Indikator konnte nicht hinzugefรผgt werden',
- 'dashboard.indicator.error.runIndicatorFailed': 'Die Laufanzeige ist fehlgeschlagen',
- 'dashboard.indicator.error.pleaseLogin': 'Bitte melden Sie sich zuerst an',
- 'dashboard.indicator.error.loadDataFailed': 'Das Laden der Daten ist fehlgeschlagen',
- 'dashboard.indicator.error.loadDataFailedDesc': 'Bitte รผberprรผfen Sie die Netzwerkverbindung',
- 'dashboard.indicator.error.pythonEngineFailed': 'Die Python-Engine konnte nicht geladen werden und die Indikatorfunktion ist mรถglicherweise nicht verfรผgbar.',
- 'dashboard.indicator.error.chartInitFailed': 'Die Initialisierung des Diagramms ist fehlgeschlagen',
- 'dashboard.indicator.warning.enterCode': 'Bitte geben Sie zuerst den Indikatorcode ein',
- 'dashboard.indicator.warning.pyodideLoadFailed': 'Die Python-Engine konnte nicht geladen werden',
- 'dashboard.indicator.warning.pyodideLoadFailedDesc': 'Diese Funktion ist in Ihrer aktuellen Region oder Netzwerkumgebung nicht verfรผgbar',
- 'dashboard.indicator.warning.chartNotInitialized': 'Das Diagramm ist nicht initialisiert und das Linienzeichnungstool kann nicht verwendet werden.',
- 'dashboard.indicator.success.runIndicator': 'Indikator lรคuft erfolgreich',
- 'dashboard.indicator.success.clearDrawings': 'Alle Strichzeichnungen gelรถscht',
- 'dashboard.indicator.sma': 'SMA (gleitende Durchschnittskombination)',
- 'dashboard.indicator.ema': 'EMA (exponentielle gleitende Durchschnittskombination)',
- 'dashboard.indicator.rsi': 'RSI (relative Stรคrke)',
- 'dashboard.indicator.macd': 'MACD',
- 'dashboard.indicator.bb': 'Bollinger-Bรคnder',
- 'dashboard.indicator.atr': 'ATR (Average True Range)',
- 'dashboard.indicator.cci': 'CCI (Commodity Channel Index)',
- 'dashboard.indicator.williams': 'Williams %R (Williams-Indikator)',
- 'dashboard.indicator.mfi': 'MFI (Geldflussindex)',
- 'dashboard.indicator.adx': 'ADX (durchschnittlicher Trendindex)',
- 'dashboard.indicator.obv': 'OBV (Energiewelle)',
- 'dashboard.indicator.adosc': 'ADOSC (Akkumulieren/Dispatch-Oszillator)',
- 'dashboard.indicator.ad': 'AD (Sammel-/Verteilungsleitung)',
- 'dashboard.indicator.kdj': 'KDJ (stochastischer Indikator)',
- 'dashboard.indicator.signal.buy': 'KAUFEN',
- 'dashboard.indicator.signal.sell': 'VERKAUFEN',
- 'dashboard.indicator.signal.supertrendBuy': 'SuperTrend kaufen',
- 'dashboard.indicator.signal.supertrendSell': 'SuperTrend verkaufen',
- 'dashboard.indicator.chart.kline': 'K-Linie',
- 'dashboard.indicator.chart.volume': 'Lautstรคrke',
- 'dashboard.indicator.chart.uptrend': 'Aufwรคrtstrend',
- 'dashboard.indicator.chart.downtrend': 'Abwรคrtstrend',
- 'dashboard.indicator.tooltip.time': 'Zeit',
- 'dashboard.indicator.tooltip.open': 'offen',
- 'dashboard.indicator.tooltip.close': 'erhalten',
- 'dashboard.indicator.tooltip.high': 'hoch',
- 'dashboard.indicator.tooltip.low': 'niedrig',
- 'dashboard.indicator.tooltip.volume': 'Lautstรคrke',
- 'dashboard.indicator.drawing.line': 'Liniensegment',
- 'dashboard.indicator.drawing.horizontalLine': 'horizontale Linie',
- 'dashboard.indicator.drawing.verticalLine': 'vertikale Linie',
- 'dashboard.indicator.drawing.ray': 'Strahl',
- 'dashboard.indicator.drawing.straightLine': 'gerade Linie',
- 'dashboard.indicator.drawing.parallelLine': 'parallele Linien',
- 'dashboard.indicator.drawing.priceLine': 'Preislinie',
- 'dashboard.indicator.drawing.priceChannel': 'Preiskanal',
- 'dashboard.indicator.drawing.fibonacciLine': 'Fibonacci-Linien',
- 'dashboard.indicator.drawing.clearAll': 'Lรถschen Sie alle Strichzeichnungen',
- 'dashboard.indicator.market.USStock': 'US-Aktien',
- 'dashboard.indicator.market.Crypto': 'Kryptowรคhrung',
- 'dashboard.indicator.market.Forex': 'Forex',
- 'dashboard.indicator.market.Futures': 'Futures',
- 'dashboard.indicator.create': 'Indikator erstellen',
- 'dashboard.indicator.editor.title': 'Indikatoren erstellen/bearbeiten',
- 'dashboard.indicator.editor.name': 'Indikatorname',
- 'dashboard.indicator.editor.nameRequired': 'Bitte geben Sie den Indikatornamen ein',
- 'dashboard.indicator.editor.namePlaceholder': 'Bitte geben Sie den Indikatornamen ein',
- 'dashboard.indicator.editor.description': 'Beschreibung des Indikators',
- 'dashboard.indicator.editor.descriptionPlaceholder': 'Bitte geben Sie eine Beschreibung des Indikators ein (optional)',
- 'dashboard.indicator.editor.code': 'Python-Code',
- 'dashboard.indicator.editor.codeRequired': 'Bitte geben Sie den Indikatorcode ein',
- 'dashboard.indicator.editor.codePlaceholder': 'Bitte geben Sie Python-Code ein',
- 'dashboard.indicator.editor.run': 'laufen',
- 'dashboard.indicator.editor.runHint': 'Klicken Sie auf die Schaltflรคche โAusfรผhrenโ, um eine Vorschau des Indikatoreffekts im K-Liniendiagramm anzuzeigen',
- 'dashboard.indicator.editor.guide': 'Entwicklungshandbuch',
- 'dashboard.indicator.editor.guideTitle': 'Leitfaden zur Entwicklung von Python-Indikatoren',
- 'dashboard.indicator.editor.save': 'speichern',
- 'dashboard.indicator.editor.cancel': 'Abbrechen',
- 'dashboard.indicator.editor.unnamed': 'Unbenannter Indikator',
- 'dashboard.indicator.editor.publishToCommunity': 'In der Community posten',
- 'dashboard.indicator.editor.publishToCommunityHint': 'Nach der Verรถffentlichung kรถnnen andere Benutzer Ihren Indikator in der Community anzeigen und verwenden',
- 'dashboard.indicator.editor.indicatorType': 'Indikatortyp',
- 'dashboard.indicator.editor.indicatorTypeRequired': 'Bitte wรคhlen Sie den Indikatortyp aus',
- 'dashboard.indicator.editor.indicatorTypePlaceholder': 'Bitte wรคhlen Sie den Indikatortyp aus',
- 'dashboard.indicator.editor.previewImage': 'Vorschau',
- 'dashboard.indicator.editor.uploadImage': 'Bilder hochladen',
- 'dashboard.indicator.editor.previewImageHint': 'Empfohlene Grรถรe: 800 x 400, nicht mehr als 2 MB',
- 'dashboard.indicator.editor.pricing': 'Verkaufspreis (QDT)',
- 'dashboard.indicator.editor.pricingType.free': 'kostenlos',
- 'dashboard.indicator.editor.pricingType.permanent': 'dauerhaft',
- 'dashboard.indicator.editor.pricingType.monthly': 'monatliche Zahlung',
- 'dashboard.indicator.editor.price': 'Preis',
- 'dashboard.indicator.editor.priceRequired': 'Bitte geben Sie den Preis ein',
- 'dashboard.indicator.editor.pricePlaceholder': 'Bitte geben Sie den Preis ein',
- 'dashboard.indicator.editor.pricingHint': 'Obwohl der Preis fรผr kostenlose Indikatoren 0 betrรคgt, belohnt Sie die Plattform (QDT) basierend auf Ihrer Indikatornutzung und Lobrate.',
- 'dashboard.indicator.editor.aiGenerate': 'Intelligente Generation',
- 'dashboard.indicator.editor.aiPromptPlaceholder': 'Teilen Sie mir Ihre Ideen mit und ich werde den Python-Indikatorcode fรผr Sie generieren',
- 'dashboard.indicator.editor.aiGenerateBtn': 'KI-generierter Code',
- 'dashboard.indicator.editor.aiPromptRequired': 'Bitte geben Sie Ihre Gedanken ein',
- 'dashboard.indicator.editor.aiGenerateSuccess': 'Codegenerierung erfolgreich',
- 'dashboard.indicator.editor.aiGenerateError': 'Die Codegenerierung ist fehlgeschlagen. Bitte versuchen Sie es spรคter noch einmal',
- 'dashboard.indicator.backtest.title': 'Indikator-Backtest',
- 'dashboard.indicator.backtest.config': 'Backtest-Parameter',
- 'dashboard.indicator.backtest.startDate': 'Startdatum',
- 'dashboard.indicator.backtest.endDate': 'Enddatum',
- 'dashboard.indicator.backtest.selectStartDate': 'Wรคhlen Sie das Startdatum',
- 'dashboard.indicator.backtest.selectEndDate': 'Wรคhlen Sie das Enddatum aus',
- 'dashboard.indicator.backtest.startDateRequired': 'Bitte wรคhlen Sie ein Startdatum aus',
- 'dashboard.indicator.backtest.endDateRequired': 'Bitte wรคhlen Sie ein Enddatum aus',
- 'dashboard.indicator.backtest.initialCapital': 'Anfangskapital',
- 'dashboard.indicator.backtest.initialCapitalRequired': 'Bitte geben Sie den Anfangsbetrag ein',
- 'dashboard.indicator.backtest.commission': 'Bearbeitungsgebรผhr',
- 'dashboard.indicator.backtest.leverage': 'Verschuldungsquote',
- 'dashboard.indicator.backtest.tradeDirection': 'Handelsrichtung',
- 'dashboard.indicator.backtest.longOnly': 'Geh lange',
- 'dashboard.indicator.backtest.shortOnly': 'kurz',
- 'dashboard.indicator.backtest.both': 'Zweiseitig',
- 'dashboard.indicator.backtest.run': 'Beginnen Sie mit dem Backtesting',
- 'dashboard.indicator.backtest.rerun': 'Nochmals Backtest',
- 'dashboard.indicator.backtest.close': 'Schlieรen',
- 'dashboard.indicator.backtest.running': 'Indikator-Backtest lรคuft...',
- 'dashboard.indicator.backtest.results': 'Backtest-Ergebnisse',
- 'dashboard.indicator.backtest.totalReturn': 'Gesamtrendite',
- 'dashboard.indicator.backtest.annualReturn': 'annualisiertes Einkommen',
- 'dashboard.indicator.backtest.maxDrawdown': 'maximaler Drawdown',
- 'dashboard.indicator.backtest.sharpeRatio': 'Sharpe-Ratio',
- 'dashboard.indicator.backtest.winRate': 'Gewinnquote',
- 'dashboard.indicator.backtest.profitFactor': 'Gewinn-Verlust-Verhรคltnis',
- 'dashboard.indicator.backtest.totalTrades': 'Anzahl der Transaktionen',
- 'dashboard.indicator.totalReturn': 'Gesamtrendite',
- 'dashboard.indicator.annualReturn': 'annualisierte Rendite',
- 'dashboard.indicator.maxDrawdown': 'maximaler Drawdown',
- 'dashboard.indicator.sharpeRatio': 'Sharpe-Ratio',
- 'dashboard.indicator.winRate': 'Gewinnquote',
- 'dashboard.indicator.profitFactor': 'Gewinn-Verlust-Verhรคltnis',
- 'dashboard.indicator.totalTrades': 'Gesamtzahl der Transaktionen',
- 'dashboard.indicator.backtest.totalCommission': 'Gesamtbearbeitungsgebรผhr',
- 'dashboard.indicator.backtest.equityCurve': 'Zinskurve',
- 'dashboard.indicator.backtest.strategy': 'Indikatoreinkommen',
- 'dashboard.indicator.backtest.benchmark': 'Benchmark-Rendite',
- 'dashboard.indicator.backtest.tradeHistory': 'Transaktionsverlauf',
- 'dashboard.indicator.backtest.tradeTime': 'Zeit',
- 'dashboard.indicator.backtest.tradeType': 'Typ',
- 'dashboard.indicator.backtest.buy': 'kaufen',
- 'dashboard.indicator.backtest.sell': 'verkaufen',
- 'dashboard.indicator.backtest.liquidation': 'Liquidation',
- 'dashboard.indicator.backtest.openLong': 'Lange geรถffnet',
- 'dashboard.indicator.backtest.closeLong': 'Pinduo',
- 'dashboard.indicator.backtest.closeLongStop': 'Nahezu long (Stop-Loss)',
- 'dashboard.indicator.backtest.closeLongProfit': 'Mehr schlieรen (Gewinn mitnehmen)',
- 'dashboard.indicator.backtest.addLong': 'Long-Position hinzufรผgen',
- 'dashboard.indicator.backtest.openShort': 'Kurz รถffnen',
- 'dashboard.indicator.backtest.closeShort': 'leer',
- 'dashboard.indicator.backtest.closeShortStop': 'Schlieรen (Stop-Loss)',
- 'dashboard.indicator.backtest.closeShortProfit': 'Schlieรen (Gewinn mitnehmen)',
- 'dashboard.indicator.backtest.addShort': 'Short-Position hinzufรผgen',
- 'dashboard.indicator.backtest.price': 'Preis',
- 'dashboard.indicator.backtest.amount': 'Menge',
- 'dashboard.indicator.backtest.balance': 'Kontostand',
- 'dashboard.indicator.backtest.profit': 'Gewinn und Verlust',
- 'dashboard.indicator.backtest.success': 'Backtest abgeschlossen',
- 'dashboard.indicator.backtest.failed': 'Der Backtest ist fehlgeschlagen. Bitte versuchen Sie es spรคter noch einmal',
- 'dashboard.indicator.backtest.noIndicatorCode': 'Fรผr diesen Indikator gibt es keinen rรผckprรผfbaren Code',
- 'dashboard.indicator.backtest.noSymbol': 'Bitte wรคhlen Sie zunรคchst das Transaktionsziel aus',
- 'dashboard.indicator.backtest.dateRangeExceeded': 'Der Backtest-Zeitbereich รผberschreitet das Limit: {timeframe} Zeitraum kann hรถchstens {maxRange} backtestet werden',
- 'dashboard.indicator.backtest.dateRangeExceededDays': 'Backtest range exceeds limit: {timeframe} max {maxRange} ({maxDays} days)',
- 'dashboard.indicator.backtest.metaLine': 'Symbol: {symbol} | Market: {market} | Timeframe: {timeframe}',
- 'dashboard.indicator.backtest.savedRunId': 'Backtest saved. Run ID: {id}',
- 'dashboard.indicator.backtest.prev': 'Previous',
- 'dashboard.indicator.backtest.next': 'Next',
- 'dashboard.indicator.backtest.steps.strategy.title': 'Strategy',
- 'dashboard.indicator.backtest.steps.strategy.desc': 'Position sizing & risk controls',
- 'dashboard.indicator.backtest.steps.trading.title': 'Trading settings',
- 'dashboard.indicator.backtest.steps.trading.desc': 'Time range, capital, fees, leverage',
- 'dashboard.indicator.backtest.steps.results.title': 'Results',
- 'dashboard.indicator.backtest.steps.results.desc': 'Backtest output',
- 'dashboard.indicator.backtest.panel.risk': 'Risk management (SL/TP/Trailing)',
- 'dashboard.indicator.backtest.panel.scale': 'Scale in / DCA (trend & mean-reversion)',
- 'dashboard.indicator.backtest.panel.reduce': 'Reduce position (trend & adverse)',
- 'dashboard.indicator.backtest.panel.position': 'Position sizing',
- 'dashboard.indicator.backtest.field.stopLossPct': 'Stop Loss (%)',
- 'dashboard.indicator.backtest.field.takeProfitPct': 'Take Profit (%)',
- 'dashboard.indicator.backtest.field.trailingEnabled': 'Trailing stop / take profit',
- 'dashboard.indicator.backtest.field.trailingStopPct': 'Trailing drawdown (%)',
- 'dashboard.indicator.backtest.field.trailingActivationPct': 'Trailing activation (%)',
- 'dashboard.indicator.backtest.field.slippage': 'Slippage (%)',
- 'dashboard.indicator.backtest.field.trendAddEnabled': 'Trend-following scale-in',
- 'dashboard.indicator.backtest.field.dcaAddEnabled': 'Mean-reversion DCA',
- 'dashboard.indicator.backtest.field.trendAddStepPct': 'Scale-in trigger (%)',
- 'dashboard.indicator.backtest.field.dcaAddStepPct': 'DCA trigger (%)',
- 'dashboard.indicator.backtest.field.trendAddSizePct': 'Scale-in size (% of capital)',
- 'dashboard.indicator.backtest.field.dcaAddSizePct': 'DCA size (% of capital)',
- 'dashboard.indicator.backtest.field.trendAddMaxTimes': 'Max scale-in times',
- 'dashboard.indicator.backtest.field.dcaAddMaxTimes': 'Max DCA times',
- 'dashboard.indicator.backtest.field.trendReduceEnabled': 'Trend reduce',
- 'dashboard.indicator.backtest.field.adverseReduceEnabled': 'Adverse reduce',
- 'dashboard.indicator.backtest.field.trendReduceStepPct': 'Trend trigger (%)',
- 'dashboard.indicator.backtest.field.adverseReduceStepPct': 'Adverse trigger (%)',
- 'dashboard.indicator.backtest.field.trendReduceSizePct': 'Reduce size (% of position)',
- 'dashboard.indicator.backtest.field.adverseReduceSizePct': 'Adverse reduce size (% of position)',
- 'dashboard.indicator.backtest.field.trendReduceMaxTimes': 'Max trend reduce times',
- 'dashboard.indicator.backtest.field.adverseReduceMaxTimes': 'Max adverse reduce times',
- 'dashboard.indicator.backtest.field.entryPct': 'Entry size (% of capital)',
- 'dashboard.indicator.backtest.field.minOrderPct': 'Min order size (% of capital) (optional)',
- 'dashboard.indicator.backtest.closeLongTrailing': 'Close Long (Trailing)',
- 'dashboard.indicator.backtest.reduceLong': 'Reduce Long',
- 'dashboard.indicator.backtest.closeShortTrailing': 'Close Short (Trailing)',
- 'dashboard.indicator.backtest.reduceShort': 'Reduce Short',
- 'dashboard.docs.title': 'Dokumentenzentrum',
- 'dashboard.docs.search.placeholder': 'Dokumente durchsuchen...',
- 'dashboard.docs.category.all': 'Alle',
- 'dashboard.docs.category.guide': 'Entwicklungshandbuch',
- 'dashboard.docs.category.api': 'API-Dokumentation',
- 'dashboard.docs.category.tutorial': 'Anleitung',
- 'dashboard.docs.category.faq': 'FAQ',
- 'dashboard.docs.featured.title': 'Empfohlene Dokumentation',
- 'dashboard.docs.featured.tag': 'Empfohlen',
- 'dashboard.docs.list.views': 'Durchsuchen',
- 'dashboard.docs.list.author': 'Autor',
- 'dashboard.docs.list.empty': 'Noch kein Dokument',
- 'dashboard.docs.list.backToAll': 'Zurรผck zu allen Dokumenten',
- 'dashboard.docs.list.total': 'Insgesamt {count} Dokumente',
- 'dashboard.docs.detail.back': 'Zurรผck zur Dokumentenliste',
- 'dashboard.docs.detail.updatedAt': 'aktualisiert am',
- 'dashboard.docs.detail.related': 'Verwandte Dokumente',
- 'dashboard.docs.detail.notFound': 'Dokument existiert nicht',
- 'dashboard.docs.detail.error': 'Das Dokument existiert nicht oder wurde gelรถscht',
- 'dashboard.docs.search.result': 'Suchergebnisse',
- 'dashboard.docs.search.keyword': 'Schlรผsselwรถrter',
- 'community.filter.indicatorType': 'Indikatortyp',
- 'community.filter.all': 'Alle',
- 'community.filter.other': 'Andere Optionen',
- 'community.filter.pricing': 'Preisart',
- 'community.filter.allPricing': 'Alle Preise',
- 'community.filter.sortBy': 'Sortieren nach',
- 'community.filter.search': 'Suchen',
- 'community.filter.searchPlaceholder': 'Metrikname suchen',
- 'community.indicatorType.trend': 'Trendtyp',
- 'community.indicatorType.momentum': 'Impulstyp',
- 'community.indicatorType.volatility': 'Volatilitรคt',
- 'community.indicatorType.volume': 'Lautstรคrke',
- 'community.indicatorType.custom': 'Anpassen',
- 'community.pricing.free': 'kostenlos',
- 'community.pricing.paid': 'Bezahlen',
- 'community.sort.downloads': 'Downloads',
- 'community.sort.rating': 'Bewertung',
- 'community.sort.newest': 'Neueste Verรถffentlichungen',
- 'community.pagination.total': '{total} Indikatoren insgesamt',
- 'community.noDescription': 'Noch keine Beschreibung',
- 'community.detail.type': 'Typ',
- 'community.detail.pricing': 'Preise',
- 'community.detail.rating': 'Bewertung',
- 'community.detail.downloads': 'Downloads',
- 'community.detail.author': 'Autor',
- 'community.detail.description': 'Einfรผhrung',
- 'community.detail.detailContent': 'Detaillierte Beschreibung',
- 'community.detail.backtestStats': 'Backtest-Statistiken',
- 'community.action.purchase': 'Kaufindikator',
- 'community.action.addToMyIndicators': 'Zu meinen Indikatoren hinzufรผgen',
- 'community.action.favorite': 'Sammlung',
- 'community.action.unfavorite': 'Favoriten abbrechen',
- 'community.action.buyNow': 'Jetzt kaufen',
- 'community.action.renew': 'Erneuerung',
- 'community.purchase.price': 'Preis',
- 'community.purchase.permanent': 'dauerhaft',
- 'community.purchase.monthly': 'Monat',
- 'community.purchase.confirmBuy': 'Bestรคtigen Sie den Kauf dieses Indikators ({price} QDT)?',
- 'community.purchase.confirmRenew': 'Bestรคtigen Sie die Erneuerung dieses Indikators ({price} QDT/Monat)?',
- 'community.purchase.confirmFree': 'Bestรคtigen Sie, dass Sie diesen kostenlosen Indikator hinzufรผgen mรถchten?',
- 'community.purchase.confirmTitle': 'Aktion bestรคtigen',
- 'community.purchase.owned': 'Sie haben diesen Indikator erworben (dauerhaft gรผltig)',
- 'community.purchase.ownIndicator': 'Dies ist die von Ihnen verรถffentlichte Metrik',
- 'community.purchase.expired': 'Ihr Abonnement ist abgelaufen',
- 'community.purchase.expiresOn': 'Ablaufzeit: {Datum}',
- 'community.tabs.detail': 'Indikatordetails',
- 'community.tabs.backtest': 'Backtest-Daten',
- 'community.tabs.ratings': 'Benutzerbewertungen',
- 'community.rating.myRating': 'Meine Bewertung',
- 'community.rating.stars': '{count} Sterne',
- 'community.rating.commentPlaceholder': 'Teilen Sie Ihre Erfahrungen...',
- 'community.rating.submit': 'Bewertung abgeben',
- 'community.rating.modify': 'รndern',
- 'community.rating.saveModify': 'รnderungen speichern',
- 'community.rating.cancel': 'Abbrechen',
- 'community.rating.selectRating': 'Bitte wรคhlen Sie eine Bewertung aus',
- 'community.rating.success': 'Bewertung erfolgreich',
- 'community.rating.modifySuccess': 'Bewertung erfolgreich geรคndert',
- 'community.rating.failed': 'Bewertung fehlgeschlagen',
- 'community.rating.noRatings': 'Noch keine Kommentare',
- 'community.backtest.note': 'Die oben genannten Daten sind historische Backtest-Ergebnisse und dienen nur als Referenz und stellen keine zukรผnftigen Ertrรคge dar.',
- 'community.backtest.noData': 'Noch keine Backtest-Daten',
- 'community.backtest.uploadHint': 'Der Autor hat noch keine Backtest-Daten hochgeladen',
- 'community.message.loadFailed': 'Die Indikatorliste konnte nicht geladen werden',
- 'community.message.purchaseProcessing': 'Kaufanfrage wird bearbeitet...',
- 'community.message.downloadSuccess': 'Die Metrik wurde zu meiner Metrikliste hinzugefรผgt',
- 'community.message.favoriteSuccess': 'Sammlung erfolgreich',
- 'community.message.unfavoriteSuccess': 'Abholung erfolgreich abbrechen',
- 'community.message.operationSuccess': 'Operation erfolgreich',
- 'community.message.operationFailed': 'Der Vorgang ist fehlgeschlagen',
- 'community.banner.readOnly': 'Nur lesen',
- 'community.banner.loginHint': 'Fรผr Login oder Registrierung bitte auf die Schaltflรคche klicken, um zu einer unabhรคngigen Seite zu wechseln und CSRF-Probleme zu vermeiden',
- 'community.banner.jumpButton': 'Zur Anmeldung/Registrierung',
- 'dashboard.totalEquity': 'Gesamteigenkapital',
- 'dashboard.totalPnL': 'Gesamtgewinn und -verlust',
- 'dashboard.aiStrategies': 'KI-Strategie',
- 'dashboard.indicatorStrategies': 'Indikatorstrategie',
- 'dashboard.running': 'Laufen',
- 'dashboard.pnlHistory': 'historischer Gewinn und Verlust',
- 'dashboard.strategyPerformance': 'Gewinn- und Verlustquote der Strategie',
- 'dashboard.recentTrades': 'aktuelle Transaktionen',
- 'dashboard.currentPositions': 'Aktuelle Position',
- 'dashboard.table.time': 'Zeit',
- 'dashboard.table.strategy': 'Richtlinienname',
- 'dashboard.table.symbol': 'Ziel',
- 'dashboard.table.type': 'Typ',
- 'dashboard.table.side': 'Richtung',
- 'dashboard.table.size': 'Offenes Interesse',
- 'dashboard.table.entryPrice': 'durchschnittlicher Erรถffnungspreis',
- 'dashboard.table.price': 'Preis',
- 'dashboard.table.amount': 'Menge',
- 'dashboard.table.profit': 'Gewinn und Verlust',
- 'dashboard.pendingOrders': 'Auftragsausfรผhrungsprotokoll',
- 'dashboard.totalOrders': 'Gesamt {total} Auftrรคge',
- 'dashboard.viewError': 'Fehler anzeigen',
- 'dashboard.filled': 'Ausgefรผhrt',
- 'dashboard.orderTable.time': 'Erstellungszeit',
- 'dashboard.orderTable.strategy': 'Strategie',
- 'dashboard.orderTable.symbol': 'Handelspaar',
- 'dashboard.orderTable.signalType': 'Signaltyp',
- 'dashboard.orderTable.amount': 'Menge',
- 'dashboard.orderTable.price': 'Ausfรผhrungspreis',
- 'dashboard.orderTable.status': 'Status',
- 'dashboard.orderTable.executedAt': 'Ausfรผhrungszeit',
- 'dashboard.signalType.openLong': 'Long รถffnen',
- 'dashboard.signalType.openShort': 'Short รถffnen',
- 'dashboard.signalType.closeLong': 'Long schlieรen',
- 'dashboard.signalType.closeShort': 'Short schlieรen',
- 'dashboard.signalType.addLong': 'Long hinzufรผgen',
- 'dashboard.signalType.addShort': 'Short hinzufรผgen',
- 'dashboard.status.pending': 'Ausstehend',
- 'dashboard.status.processing': 'In Bearbeitung',
- 'dashboard.status.completed': 'Abgeschlossen',
- 'dashboard.status.failed': 'Fehlgeschlagen',
- 'dashboard.status.cancelled': 'Storniert',
- 'dashboard.table.pnl': 'nicht realisierter Gewinn oder Verlust',
- 'form.basic-form.basic.title': 'Grundform',
- 'form.basic-form.basic.description': 'Formularseiten werden verwendet, um Informationen von Benutzern zu sammeln oder zu รผberprรผfen. Grundformulare werden hรคufig in Formularszenarien mit wenigen Datenelementen verwendet.',
- 'form.basic-form.title.label': 'Titel',
- 'form.basic-form.title.placeholder': 'Geben Sie dem Ziel einen Namen',
- 'form.basic-form.title.required': 'Bitte geben Sie einen Titel ein',
- 'form.basic-form.date.label': 'Start- und Enddatum',
- 'form.basic-form.placeholder.start': 'Startdatum',
- 'form.basic-form.placeholder.end': 'Enddatum',
- 'form.basic-form.date.required': 'Bitte wรคhlen Sie Start- und Enddatum aus',
- 'form.basic-form.goal.label': 'Zielbeschreibung',
- 'form.basic-form.goal.placeholder': 'Bitte geben Sie Ihre schrittweisen Arbeitsziele ein',
- 'form.basic-form.goal.required': 'Bitte geben Sie eine Zielbeschreibung ein',
- 'form.basic-form.standard.label': 'messen',
- 'form.basic-form.standard.placeholder': 'Bitte geben Sie Messwerte ein',
- 'form.basic-form.standard.required': 'Bitte geben Sie Messwerte ein',
- 'form.basic-form.client.label': 'Kunde',
- 'form.basic-form.client.required': 'Bitte beschreiben Sie die Kunden, die Sie betreuen',
- 'form.basic-form.label.tooltip': 'Zielgruppe der Leistungsempfรคnger',
- 'form.basic-form.client.placeholder': 'Bitte beschreiben Sie die von Ihnen betreuten Kunden, interne Kunden direkt @Name/Auftragsnummer',
- 'form.basic-form.invites.label': 'Laden Sie Gutachter ein',
- 'form.basic-form.invites.placeholder': 'Bitte direkt @Name/Mitarbeiternummer angeben, es kรถnnen bis zu 5 Personen einladen',
- 'form.basic-form.weight.label': 'Gewicht',
- 'form.basic-form.weight.placeholder': 'Bitte treten Sie ein',
- 'form.basic-form.public.label': 'Zielpublikum',
- 'form.basic-form.label.help': 'Kunden und Rezensenten werden standardmรครig geteilt',
- 'form.basic-form.radio.public': 'รถffentlich',
- 'form.basic-form.radio.partially-public': 'Teilweise รถffentlich',
- 'form.basic-form.radio.private': 'privat',
- 'form.basic-form.publicUsers.placeholder': 'offen fรผr',
- 'form.basic-form.option.A': 'Kollege 1',
- 'form.basic-form.option.B': 'Kollege 2',
- 'form.basic-form.option.C': 'Kollege drei',
- 'form.basic-form.email.required': 'Bitte geben Sie Ihre E-Mail-Adresse ein!',
- 'form.basic-form.email.wrong-format': 'Das E-Mail-Adressformat ist falsch!',
- 'form.basic-form.userName.required': 'Bitte Benutzernamen eingeben!',
- 'form.basic-form.password.required': 'Bitte geben Sie Ihr Passwort ein!',
- 'form.basic-form.password.twice': 'Die doppelt eingegebenen Passwรถrter stimmen nicht รผberein!',
- 'form.basic-form.strength.msg': 'Bitte geben Sie mindestens 6 Zeichen ein. Bitte verwenden Sie keine Passwรถrter, die leicht zu erraten sind.',
- 'form.basic-form.strength.strong': 'Stรคrke: Stark',
- 'form.basic-form.strength.medium': 'Stรคrke: Mittel',
- 'form.basic-form.strength.short': 'Stรคrke: zu kurz',
- 'form.basic-form.confirm-password.required': 'Bitte bestรคtigen Sie Ihr Passwort!',
- 'form.basic-form.phone-number.required': 'Bitte geben Sie Ihre Mobiltelefonnummer ein!',
- 'form.basic-form.phone-number.wrong-format': 'Das Format der Mobiltelefonnummer ist falsch!',
- 'form.basic-form.verification-code.required': 'Bitte geben Sie den Verifizierungscode ein!',
- 'form.basic-form.form.get-captcha': 'Holen Sie sich den Bestรคtigungscode',
- 'form.basic-form.captcha.second': 'Sekunden',
- 'form.basic-form.form.optional': '(optional)',
- 'form.basic-form.form.submit': 'Senden',
- 'form.basic-form.form.save': 'speichern',
- 'form.basic-form.email.placeholder': 'E-Mail',
- 'form.basic-form.password.placeholder': 'Passwort mit mindestens 6 Zeichen, Groร- und Kleinschreibung beachten',
- 'form.basic-form.confirm-password.placeholder': 'Passwort bestรคtigen',
- 'form.basic-form.phone-number.placeholder': 'Mobiltelefonnummer',
- 'form.basic-form.verification-code.placeholder': 'Bestรคtigungscode',
- 'result.success.title': 'รbermittlung erfolgreich',
- 'result.success.description': 'Die Seite mit den รbermittlungsergebnissen wird verwendet, um Rรผckmeldungen zu den Verarbeitungsergebnissen einer Reihe von Vorgangsaufgaben zu geben. Wenn es sich nur um einen einfachen Vorgang handelt, verwenden Sie das globale Eingabeaufforderungs-Feedback โNachrichtโ. In diesem Textbereich kรถnnen einfache Zusatzanweisungen angezeigt werden. Bei Bedarf zur Darstellung von โDokumentenโ kรถnnen im grauen Bereich darunter komplexere Inhalte angezeigt werden.',
- 'result.success.operate-title': 'Projektname',
- 'result.success.operate-id': 'Projekt-ID',
- 'result.success.principal': 'Verantwortliche Person',
- 'result.success.operate-time': 'Effektive Zeit',
- 'result.success.step1-title': 'Projekt erstellen',
- 'result.success.step1-operator': 'Qu Lili',
- 'result.success.step2-title': 'Vorlรคufige Prรผfung der Abteilung',
- 'result.success.step2-operator': 'Zhou Maomao',
- 'result.success.step2-extra': 'Dringend',
- 'result.success.step3-title': 'Finanzielle รberprรผfung',
- 'result.success.step4-title': 'Komplett',
- 'result.success.btn-return': 'Zurรผck zur Liste',
- 'result.success.btn-project': 'Artikel ansehen',
- 'result.success.btn-print': 'Drucken',
- 'result.fail.error.title': 'Die รbermittlung ist fehlgeschlagen',
- 'result.fail.error.description': 'Bitte รผberprรผfen und รคndern Sie die folgenden Informationen, bevor Sie sie erneut einreichen.',
- 'result.fail.error.hint-title': 'Der von Ihnen รผbermittelte Inhalt enthรคlt die folgenden Fehler:',
- 'result.fail.error.hint-text1': 'Ihr Konto wurde gesperrt',
- 'result.fail.error.hint-btn1': 'Sofort auftauen',
- 'result.fail.error.hint-text2': 'Ihr Konto ist noch nicht antragsberechtigt',
- 'result.fail.error.hint-btn2': 'Jetzt upgraden',
- 'result.fail.error.btn-text': 'Zurรผck zur รnderung',
- 'account.settings.menuMap.custom': 'Personalisierung',
- 'account.settings.menuMap.binding': 'Kontobindung',
- 'account.settings.basic.avatar': 'Avatar',
- 'account.settings.basic.change-avatar': 'Avatar รคndern',
- 'account.settings.basic.email': 'E-Mail',
- 'account.settings.basic.email-message': 'Bitte geben Sie Ihre E-Mail ein!',
- 'account.settings.basic.nickname': 'Spitzname',
- 'account.settings.basic.nickname-message': 'Bitte geben Sie Ihren Spitznamen ein!',
- 'account.settings.basic.profile': 'Profil',
- 'account.settings.basic.profile-message': 'Bitte geben Sie Ihr persรถnliches Profil ein!',
- 'account.settings.basic.profile-placeholder': 'Profil',
- 'account.settings.basic.country': 'Land/Region',
- 'account.settings.basic.country-message': 'Bitte geben Sie Ihr Land oder Ihre Region ein!',
- 'account.settings.basic.geographic': 'Provinz und Stadt',
- 'account.settings.basic.geographic-message': 'Bitte geben Sie Ihr Bundesland und Ihre Stadt ein!',
- 'account.settings.basic.address': 'Straรenadresse',
- 'account.settings.basic.address-message': 'Bitte geben Sie Ihre Straรe ein!',
- 'account.settings.basic.phone': 'Kontaktnummer',
- 'account.settings.basic.phone-message': 'Bitte geben Sie Ihre Kontaktnummer ein!',
- 'account.settings.basic.update': 'Grundlegende Informationen aktualisieren',
- 'account.settings.basic.update.success': 'Grundlegende Informationen erfolgreich aktualisieren',
- 'account.settings.security.strong': 'Stark',
- 'account.settings.security.medium': 'in',
- 'account.settings.security.weak': 'schwach',
- 'account.settings.security.password': 'Kontopasswort',
- 'account.settings.security.password-description': 'Aktuelle Passwortstรคrke:',
- 'account.settings.security.phone': 'Sicherheitshandy',
- 'account.settings.security.phone-description': 'Bereits gebundenes Mobiltelefon:',
- 'account.settings.security.question': 'Sicherheitsprobleme',
- 'account.settings.security.question-description': 'Es werden keine Sicherheitsfragen gestellt, wodurch die Kontosicherheit wirksam geschรผtzt werden kann.',
- 'account.settings.security.email': 'E-Mail binden',
- 'account.settings.security.email-description': 'Bereits gebundene E-Mail-Adresse:',
- 'account.settings.security.mfa': 'MFA-Gerรคt',
- 'account.settings.security.mfa-description': 'Das MFA-Gerรคt ist nicht gebunden. Nach der Bindung kรถnnen Sie noch einmal bestรคtigen.',
- 'account.settings.security.modify': 'รndern',
- 'account.settings.security.set': 'Einstellungen',
- 'account.settings.security.bind': 'verbindlich',
- 'account.settings.binding.taobao': 'Binde Taobao',
- 'account.settings.binding.taobao-description': 'Das Taobao-Konto ist derzeit nicht gebunden',
- 'account.settings.binding.alipay': 'Alipay binden',
- 'account.settings.binding.alipay-description': 'Das Alipay-Konto ist derzeit nicht gebunden',
- 'account.settings.binding.dingding': 'Bindung von DingTalk',
- 'account.settings.binding.dingding-description': 'Derzeit ist kein DingTalk-Konto gebunden',
- 'account.settings.binding.bind': 'verbindlich',
- 'account.settings.notification.password': 'Kontopasswort',
- 'account.settings.notification.password-description': 'Nachrichten von anderen Benutzern werden in Form von Site-Nachrichten benachrichtigt.',
- 'account.settings.notification.messages': 'Systemmeldungen',
- 'account.settings.notification.messages-description': 'Systemmeldungen werden in Form von Site-Nachrichten benachrichtigt.',
- 'account.settings.notification.todo': 'Zu erledigende Aufgaben',
- 'account.settings.notification.todo-description': 'Zu erledigende Aufgaben werden in Form von In-Site-Nachrichten benachrichtigt',
- 'account.settings.settings.open': 'offen',
- 'account.settings.settings.close': 'schlieรen',
- 'trading-assistant.title': 'Handelsassistent',
- 'trading-assistant.strategyList': 'Strategieliste',
- 'trading-assistant.createStrategy': 'Richtlinie erstellen',
- 'trading-assistant.noStrategy': 'Noch keine Strategie',
- 'trading-assistant.selectStrategy': 'Bitte wรคhlen Sie links eine Strategie aus, um Details anzuzeigen',
- 'trading-assistant.startStrategy': 'Startstrategie',
- 'trading-assistant.stopStrategy': 'Stoppstrategie',
- 'trading-assistant.editStrategy': 'Redaktionelle Strategie',
- 'trading-assistant.deleteStrategy': 'Richtlinie lรถschen',
- 'trading-assistant.status.running': 'Laufen',
- 'trading-assistant.status.stopped': 'Angehalten',
- 'trading-assistant.status.error': 'Fehler',
- 'trading-assistant.strategyType.IndicatorStrategy': 'Technische Indikatorstrategie',
- 'trading-assistant.strategyType.PromptBasedStrategy': 'Stichwortstrategie',
- 'trading-assistant.strategyType.GridStrategy': 'Grid-Strategie',
- 'trading-assistant.tabs.tradingRecords': 'Transaktionsverlauf',
- 'trading-assistant.tabs.positions': 'Positionsaufzeichnung',
- 'trading-assistant.tabs.equityCurve': 'Eigenkapitalkurve',
- 'trading-assistant.form.step1': 'Wรคhlen Sie Indikatoren aus',
- 'trading-assistant.form.step2': 'Exchange-Konfiguration',
- 'trading-assistant.form.step3': 'Strategieparameter',
- 'trading-assistant.form.step2Params': 'Parameter',
- 'trading-assistant.form.step3Signal': 'Signalzustellung',
- 'trading-assistant.form.marketCategory': 'Marktkategorie',
- 'trading-assistant.form.marketCategoryHint': 'Wรคhlen Sie zuerst den Markt. Nur Krypto kann Live-Trading aktivieren; andere Mรคrkte sind nur Signal.',
- 'trading-assistant.market.USStock': 'US-Aktien',
- 'trading-assistant.market.Crypto': 'Krypto',
- 'trading-assistant.market.Forex': 'Forex',
- 'trading-assistant.form.indicator': 'Wรคhlen Sie Indikatoren aus',
- 'trading-assistant.form.indicatorHint': 'Sie kรถnnen nur technische Indikatoren auswรคhlen, die Sie gekauft oder erstellt haben',
- 'trading-assistant.form.qdtCostHints': 'Bei Verwendung dieser Strategie wird QDT verbraucht. Bitte stellen Sie sicher, dass das Konto รผber ausreichend QDT-Guthaben verfรผgt',
- 'trading-assistant.form.indicatorDescription': 'Beschreibung des Indikators',
- 'trading-assistant.form.noDescription': 'Noch keine Beschreibung',
- 'trading-assistant.form.exchange': 'Austausch auswรคhlen',
- 'trading-assistant.form.apiKey': 'API-Schlรผssel',
- 'trading-assistant.form.secretKey': 'Geheimer Schlรผssel',
- 'trading-assistant.form.passphrase': 'Passphrase',
- 'trading-assistant.form.testConnection': 'Testverbindung',
- 'trading-assistant.form.strategyName': 'Richtlinienname',
- 'trading-assistant.form.symbol': 'Handelspaar',
- 'trading-assistant.form.symbolHint': 'Das Symbolformat hรคngt vom ausgewรคhlten Markt ab',
- 'trading-assistant.form.symbolHintCrypto': 'Krypto: z.B. BTC/USDT',
- 'trading-assistant.form.symbolHintGeneral': 'Geben Sie das Symbol des gewรคhlten Marktes ein (z.B. 600519, AAPL, EURUSD).',
- 'trading-assistant.form.initialCapital': 'Hรถhe der Investition',
- 'trading-assistant.form.marketType': 'Markttyp',
- 'trading-assistant.form.marketTypeFutures': 'Vertrag',
- 'trading-assistant.form.marketTypeSpot': 'Spot',
- 'trading-assistant.form.marketTypeHint': 'Der Kontrakt unterstรผtzt bidirektionalen Handel und Leverage, wรคhrend der Spot nur Long-Positionen unterstรผtzt und der Leverage auf 1x festgelegt ist',
- 'trading-assistant.form.leverage': 'Nutzen Sie mehrere',
- 'trading-assistant.form.leverageHint': 'Vertrag: 1-125 Mal, Spot: 1 Mal fest',
- 'trading-assistant.form.spotLeverageFixed': 'Der Hebel fรผr den Spothandel ist auf 1x festgelegt',
- 'trading-assistant.form.spotOnlyLongHint': 'Der Spothandel unterstรผtzt nur Long-Positionen',
- 'trading-assistant.form.tradeDirection': 'Handelsrichtung',
- 'trading-assistant.form.tradeDirectionLong': 'Nur lang',
- 'trading-assistant.form.tradeDirectionShort': 'Nur kurz',
- 'trading-assistant.form.tradeDirectionBoth': 'zweiseitige Transaktion',
- 'trading-assistant.form.timeframe': 'Zeitraum',
- 'trading-assistant.form.klinePeriod': 'K-Linien-Zeitraum',
- 'trading-assistant.form.timeframe1m': '1 Minute',
- 'trading-assistant.form.timeframe5m': '5 Minuten',
- 'trading-assistant.form.timeframe15m': '15 Minuten',
- 'trading-assistant.form.timeframe30m': '30 Minuten',
- 'trading-assistant.form.timeframe1H': '1 Stunde',
- 'trading-assistant.form.timeframe4H': '4 Stunden',
- 'trading-assistant.form.timeframe1D': '1 Tag',
- 'trading-assistant.form.selectStrategyType': 'Strategietyp auswรคhlen',
- 'trading-assistant.form.indicatorStrategy': 'Indikator-Strategie',
- 'trading-assistant.form.indicatorStrategyDesc': 'Automatisierte Handelsstrategie basierend auf technischen Indikatoren',
- 'trading-assistant.form.aiStrategy': 'KI-Strategie',
- 'trading-assistant.form.aiStrategyDesc': 'Automatisierte Handelsstrategie basierend auf KI-Intelligenzentscheidungen',
- 'trading-assistant.form.enableAiFilter': 'KI-Intelligenzentscheidungsfilter aktivieren',
- 'trading-assistant.form.enableAiFilterHint': 'Wenn aktiviert, werden Indikatorsignale von KI gefiltert, um die Handelsqualitรคt zu verbessern',
- 'trading-assistant.form.aiFilterPrompt': 'Benutzerdefinierte Eingabeaufforderung',
- 'trading-assistant.form.aiFilterPromptHint': 'Benutzerdefinierte Anweisungen fรผr KI-Filterung bereitstellen, leer lassen, um die Systemstandardwerte zu verwenden',
- 'trading-assistant.validation.strategyTypeRequired': 'Bitte wรคhlen Sie einen Strategietyp',
- 'trading-assistant.validation.marketCategoryRequired': 'Bitte wรคhlen Sie eine Marktkategorie',
- 'trading-assistant.form.advancedSettings': 'Erweiterte Einstellungen',
- 'trading-assistant.form.orderMode': 'Bestellmodus',
- 'trading-assistant.form.orderModeMaker': 'Hersteller',
- 'trading-assistant.form.orderModeTaker': 'Marktpreis (Taker)',
- 'trading-assistant.form.orderModeHint': 'Im Pending-Order-Modus werden Limit-Orders verwendet und die Bearbeitungsgebรผhr ist niedriger; Der Marktpreismodus wird sofort ausgefรผhrt und die Bearbeitungsgebรผhr ist hรถher.',
- 'trading-assistant.form.makerWaitSec': 'Wartezeit fรผr ausstehende Bestellungen (Sekunden)',
- 'trading-assistant.form.makerWaitSecHint': 'Die Zeit, die nach der Bestellung auf die Transaktion gewartet wird. Brechen Sie ab und versuchen Sie es nach einer Zeitรผberschreitung erneut.',
- 'trading-assistant.form.makerRetries': 'Anzahl der Wiederholungsversuche fรผr ausstehende Bestellungen',
- 'trading-assistant.form.makerRetriesHint': 'Die maximale Anzahl von Wiederholungsversuchen, wenn eine ausstehende Order nicht ausgefรผhrt wird',
- 'trading-assistant.form.fallbackToMarket': 'Die ausstehende Bestellung schlรคgt fehl und der Marktpreis wird herabgestuft.',
- 'trading-assistant.form.fallbackToMarketHint': 'Wenn die ausstehende Erรถffnungs-/Schlieรorder nicht abgeschlossen wurde, wird angegeben, ob sie auf eine Marktorder herabgestuft werden soll, um sicherzustellen, dass die Transaktion abgeschlossen wird.',
- 'trading-assistant.form.marginMode': 'Margin-Modus',
- 'trading-assistant.form.marginModeCross': 'Volles Lager',
- 'trading-assistant.form.marginModeIsolated': 'Isolierte Lage',
- 'trading-assistant.form.stopLossPct': 'Stop-Loss-Verhรคltnis (%)',
- 'trading-assistant.form.stopLossPctHint': 'Legen Sie den Stop-Loss-Prozentsatz fest. 0 bedeutet, dass Stop-Loss nicht aktiviert ist',
- 'trading-assistant.form.takeProfitPct': 'Take-Profit-Quote (%)',
- 'trading-assistant.form.takeProfitPctHint': 'Legen Sie den Take-Profit-Prozentsatz fest. 0 bedeutet, dass Take-Profit deaktiviert ist',
- 'trading-assistant.form.commission': 'Gebรผhr (%)',
- 'trading-assistant.form.commissionHint': 'Handelsgebรผhr in Prozent (optional)',
- 'trading-assistant.form.slippage': 'Slippage (%)',
- 'trading-assistant.form.slippageHint': 'Geschรคtzter Slippage-Prozentsatz (optional)',
- 'trading-assistant.form.executionMode': 'Ausfรผhrung',
- 'trading-assistant.form.executionModeSignal': 'Nur Signal (Benachrichtigungen)',
- 'trading-assistant.form.executionModeLive': 'Live-Trading (nur Krypto)',
- 'trading-assistant.form.liveTradingCryptoOnlyHint': 'Live-Trading ist nur fรผr Krypto verfรผgbar. Andere Mรคrkte kรถnnen nur Signale senden.',
- 'trading-assistant.form.notifyChannels': 'Benachrichtigungskanรคle',
- 'trading-assistant.form.notifyChannelsHint': 'Wรคhlen Sie aus, wie Sie Kauf/Verkauf- und Risikosignale erhalten mรถchten.',
- 'trading-assistant.notify.browser': 'Browser',
- 'trading-assistant.notify.email': 'E-Mail',
- 'trading-assistant.notify.phone': 'Telefon',
- 'trading-assistant.notify.telegram': 'Telegram',
- 'trading-assistant.notify.discord': 'Discord',
- 'trading-assistant.notify.webhook': 'Webhook',
- 'trading-assistant.form.notifyEmail': 'E-Mail',
- 'trading-assistant.form.notifyPhone': 'Telefonnummer',
- 'trading-assistant.form.notifyTelegram': 'Telegram (Chat-ID / Benutzername)',
- 'trading-assistant.form.notifyDiscord': 'Discord (Webhook-URL)',
- 'trading-assistant.form.notifyWebhook': 'Webhook-URL',
- 'trading-assistant.form.liveTradingConfigTitle': 'Exchange-Zugangsdaten',
- 'trading-assistant.form.liveTradingConfigHint': 'Geben Sie Ihre Exchange-API-Zugangsdaten ein. Sie kรถnnen die Verbindung vor dem Speichern testen.',
- 'trading-assistant.form.savedCredential': 'Gespeicherte Zugangsdaten',
- 'trading-assistant.form.savedCredentialHint': 'Optional: Wรคhlen Sie gespeicherte Zugangsdaten zum automatischen Ausfรผllen.',
- 'trading-assistant.form.saveCredential': 'Diese Zugangsdaten fรผr spรคter speichern',
- 'trading-assistant.form.credentialName': 'Name (optional)',
- 'trading-assistant.form.signalMode': 'Signalmodus',
- 'trading-assistant.form.signalModeConfirmed': 'Bestรคtigen Sie den Modus',
- 'trading-assistant.form.signalModeAggressive': 'Aggressiver Modus',
- 'trading-assistant.form.signalModeHint': 'Bestรคtigungsmodus: prรผft nur abgeschlossene K-Zeilen; Aggressiver Modus: รberprรผft auch die Bildung von K-Linien',
- 'trading-assistant.form.cancel': 'Abbrechen',
- 'trading-assistant.form.prev': 'Vorheriger Schritt',
- 'trading-assistant.form.next': 'Nรคchster Schritt',
- 'trading-assistant.form.confirmCreate': 'Bestรคtigen Sie die Erstellung',
- 'trading-assistant.form.confirmEdit': 'Bestรคtigen Sie die รnderungen',
- 'trading-assistant.messages.createSuccess': 'Strategie erfolgreich erstellt',
- 'trading-assistant.messages.createFailed': 'Richtlinie konnte nicht erstellt werden',
- 'trading-assistant.messages.updateSuccess': 'Richtlinienaktualisierung erfolgreich',
- 'trading-assistant.messages.updateFailed': 'Die Aktualisierungsrichtlinie ist fehlgeschlagen',
- 'trading-assistant.messages.deleteSuccess': 'Richtlinienlรถschung erfolgreich',
- 'trading-assistant.messages.deleteFailed': 'Das Lรถschen der Richtlinie ist fehlgeschlagen',
- 'trading-assistant.messages.startSuccess': 'Strategie erfolgreich gestartet',
- 'trading-assistant.messages.startFailed': 'Die Richtlinie konnte nicht gestartet werden',
- 'trading-assistant.messages.stopSuccess': 'Die Strategie wurde erfolgreich beendet',
- 'trading-assistant.messages.stopFailed': 'Die Stoppstrategie ist fehlgeschlagen',
- 'trading-assistant.messages.loadFailed': 'Richtlinienliste konnte nicht abgerufen werden',
- 'trading-assistant.messages.runningWarning': 'Die Strategie lรคuft. Bitte stoppen Sie die Strategie, bevor Sie sie รคndern.',
- 'trading-assistant.messages.deleteConfirmWithName': 'Sind Sie sicher, dass Sie die Richtlinie โ{name}โ lรถschen mรถchten? Dieser Vorgang ist irreversibel.',
- 'trading-assistant.messages.deleteConfirm': 'Sind Sie sicher, dass Sie diese Richtlinie lรถschen mรถchten? Dieser Vorgang ist irreversibel.',
- 'trading-assistant.messages.loadTradesFailed': 'Transaktionsdatensรคtze konnten nicht abgerufen werden',
- 'trading-assistant.messages.loadPositionsFailed': 'Positionsdatensatz konnte nicht abgerufen werden',
- 'trading-assistant.messages.loadEquityFailed': 'Die Eigenkapitalkurve konnte nicht ermittelt werden',
- 'trading-assistant.messages.loadIndicatorsFailed': 'Die Indikatorliste konnte nicht geladen werden. Bitte versuchen Sie es spรคter noch einmal',
- 'trading-assistant.messages.spotLimitations': 'Der Spot-Handel wurde automatisch auf โNur Longโ mit 1-facher Hebelwirkung eingestellt',
- 'trading-assistant.messages.autoFillApiConfig': 'Die historische API-Konfiguration der Bรถrse wurde automatisch ausgefรผllt',
- 'trading-assistant.placeholders.selectIndicator': 'Bitte wรคhlen Sie einen Indikator aus',
- 'trading-assistant.placeholders.selectExchange': 'Bitte wรคhlen Sie einen Austausch aus',
- 'trading-assistant.placeholders.selectMarketCategory': 'Bitte Marktkategorie auswรคhlen',
- 'trading-assistant.placeholders.inputApiKey': 'Bitte geben Sie den API-Schlรผssel ein',
- 'trading-assistant.placeholders.inputSecretKey': 'Bitte geben Sie den Geheimschlรผssel ein',
- 'trading-assistant.placeholders.inputPassphrase': 'Bitte geben Sie die Passphrase ein',
- 'trading-assistant.placeholders.inputStrategyName': 'Bitte geben Sie einen Richtliniennamen ein',
- 'trading-assistant.placeholders.selectSymbol': 'Bitte wรคhlen Sie ein Handelspaar aus',
- 'trading-assistant.placeholders.inputSymbol': 'Bitte Symbol eingeben',
- 'trading-assistant.placeholders.selectTimeframe': 'Bitte wรคhlen Sie einen Zeitraum aus',
- 'trading-assistant.placeholders.selectKlinePeriod': 'Bitte wรคhlen Sie einen K-Linien-Zeitraum aus',
- 'trading-assistant.placeholders.inputAiFilterPrompt': 'Bitte geben Sie eine benutzerdefinierte Eingabeaufforderung ein (optional)',
- 'trading-assistant.placeholders.inputEmail': 'Bitte E-Mail eingeben',
- 'trading-assistant.placeholders.inputPhone': 'Bitte Telefonnummer eingeben',
- 'trading-assistant.placeholders.inputTelegram': 'Bitte Telegram Chat-ID / Benutzername eingeben',
- 'trading-assistant.placeholders.inputDiscord': 'Bitte Discord Webhook-URL eingeben',
- 'trading-assistant.placeholders.inputWebhook': 'Bitte Webhook-URL eingeben',
- 'trading-assistant.placeholders.selectSavedCredential': 'Gespeicherte Zugangsdaten auswรคhlen',
- 'trading-assistant.placeholders.inputCredentialName': 'Zum Beispiel: Binance Hauptschlรผssel',
- 'trading-assistant.validation.indicatorRequired': 'Bitte wรคhlen Sie einen Indikator aus',
- 'trading-assistant.validation.exchangeRequired': 'Bitte wรคhlen Sie einen Austausch aus',
- 'trading-assistant.validation.apiKeyRequired': 'Bitte geben Sie den API-Schlรผssel ein',
- 'trading-assistant.validation.secretKeyRequired': 'Bitte geben Sie den Geheimschlรผssel ein',
- 'trading-assistant.validation.passphraseRequired': 'Bitte geben Sie die Passphrase ein',
- 'trading-assistant.validation.exchangeConfigIncomplete': 'Bitte geben Sie die vollstรคndigen Exchange-Konfigurationsinformationen ein',
- 'trading-assistant.validation.testConnectionRequired': 'Bitte klicken Sie zuerst auf die Schaltflรคche "Verbindung testen" und stellen Sie sicher, dass die Verbindung erfolgreich ist',
- 'trading-assistant.validation.testConnectionFailed': 'Verbindungstest fehlgeschlagen, bitte รผberprรผfen Sie die Konfiguration und testen Sie erneut',
- 'trading-assistant.validation.strategyNameRequired': 'Bitte geben Sie einen Richtliniennamen ein',
- 'trading-assistant.validation.symbolRequired': 'Bitte wรคhlen Sie ein Handelspaar aus',
- 'trading-assistant.validation.initialCapitalRequired': 'Bitte geben Sie den Anlagebetrag ein',
- 'trading-assistant.validation.leverageRequired': 'Bitte geben Sie die Leverage Ratio ein',
- 'trading-assistant.validation.emailInvalid': 'Ungรผltige E-Mail-Adresse',
- 'trading-assistant.validation.notifyChannelRequired': 'Bitte wรคhlen Sie mindestens einen Benachrichtigungskanal aus',
- 'trading-assistant.table.time': 'Zeit',
- 'trading-assistant.table.type': 'Typ',
- 'trading-assistant.table.price': 'Preis',
- 'trading-assistant.table.amount': 'Menge',
- 'trading-assistant.table.value': 'Betrag',
- 'trading-assistant.table.commission': 'Bearbeitungsgebรผhr',
- 'trading-assistant.table.symbol': 'Handelspaar',
- 'trading-assistant.table.side': 'Richtung',
- 'trading-assistant.table.size': 'Positionsmenge',
- 'trading-assistant.table.entryPrice': 'Erรถffnungspreis',
- 'trading-assistant.table.currentPrice': 'aktueller Preis',
- 'trading-assistant.table.unrealizedPnl': 'nicht realisierter Gewinn oder Verlust',
- 'trading-assistant.table.pnlPercent': 'Gewinn- und Verlustquote',
- 'trading-assistant.table.buy': 'kaufen',
- 'trading-assistant.table.sell': 'verkaufen',
- 'trading-assistant.table.long': 'Geh lange',
- 'trading-assistant.table.short': 'kurz',
- 'trading-assistant.table.noPositions': 'Noch keine Stellen',
- 'trading-assistant.detail.title': 'Strategiedetails',
- 'trading-assistant.detail.strategyName': 'Richtlinienname',
- 'trading-assistant.detail.strategyType': 'Strategietyp',
- 'trading-assistant.detail.status': 'Status',
- 'trading-assistant.detail.tradingMode': 'Handelsmodell',
- 'trading-assistant.detail.exchange': 'Austausch',
- 'trading-assistant.detail.initialCapital': 'Anfangskapital',
- 'trading-assistant.detail.totalInvestment': 'Gesamtinvestitionsbetrag',
- 'trading-assistant.detail.currentEquity': 'Aktuelles Nettovermรถgen',
- 'trading-assistant.detail.totalPnl': 'Gesamtgewinn und -verlust',
- 'trading-assistant.detail.indicatorName': 'Indikatorname',
- 'trading-assistant.detail.maxLeverage': 'Maximale Hebelwirkung',
- 'trading-assistant.detail.decideInterval': 'Entscheidungsintervall',
- 'trading-assistant.detail.symbols': 'Transaktionsobjekt',
- 'trading-assistant.detail.createdAt': 'Schรถpfungszeit',
- 'trading-assistant.detail.updatedAt': 'Aktualisierungszeit',
- 'trading-assistant.detail.llmConfig': 'Konfiguration des KI-Modells',
- 'trading-assistant.detail.exchangeConfig': 'Exchange-Konfiguration',
- 'trading-assistant.detail.provider': 'Anbieter',
- 'trading-assistant.detail.modelId': 'Modell-ID',
- 'trading-assistant.detail.close': 'Schlieรen',
- 'trading-assistant.detail.loadFailed': 'Richtliniendetails konnten nicht abgerufen werden',
- 'trading-assistant.equity.noData': 'Noch keine Daten zum Vermรถgen',
- 'trading-assistant.equity.equity': 'Nettovermรถgen',
- 'trading-assistant.exchange.tradingMode': 'Handelsmodell',
- 'trading-assistant.exchange.virtual': 'simulierter Handel',
- 'trading-assistant.exchange.live': 'Echte Transaktion',
- 'trading-assistant.exchange.selectExchange': 'Austausch auswรคhlen',
- 'trading-assistant.exchange.walletAddress': 'Wallet-Adresse',
- 'trading-assistant.exchange.walletAddressPlaceholder': 'Bitte geben Sie Ihre Wallet-Adresse ein (beginnend mit 0x)',
- 'trading-assistant.exchange.privateKey': 'privater Schlรผssel',
- 'trading-assistant.exchange.privateKeyPlaceholder': 'Bitte geben Sie den privaten Schlรผssel ein (64 Zeichen)',
- 'trading-assistant.exchange.testConnection': 'Testverbindung',
- 'trading-assistant.exchange.connectionSuccess': 'Verbindung erfolgreich',
- 'trading-assistant.exchange.connectionFailed': 'Verbindung fehlgeschlagen',
- 'trading-assistant.exchange.testFailed': 'Verbindungstest fehlgeschlagen',
- 'trading-assistant.exchange.fillComplete': 'Bitte geben Sie die vollstรคndigen Exchange-Konfigurationsinformationen ein',
- 'trading-assistant.strategyTypeOptions.ai': 'KI-gesteuerte Strategie',
- 'trading-assistant.strategyTypeOptions.indicator': 'Technische Indikatorstrategie',
- 'trading-assistant.strategyTypeOptions.aiDeveloping': 'Die KI-gesteuerte Strategiefunktion befindet sich in der Entwicklung, also bleiben Sie dran',
- 'trading-assistant.strategyTypeOptions.aiDevelopingWarning': 'KI-gesteuerte Strategiefunktionen sind in der Entwicklung',
- 'trading-assistant.indicatorType.trend': 'Trend',
- 'trading-assistant.indicatorType.momentum': 'Schwung',
- 'trading-assistant.indicatorType.volatility': 'Fluktuation',
- 'trading-assistant.indicatorType.volume': 'Lautstรคrke',
- 'trading-assistant.indicatorType.custom': 'Anpassen',
- 'trading-assistant.exchangeNames': {
- 'okx': 'OKX',
- 'binance': 'Binance',
- 'hyperliquid': 'Hyperliquid',
- 'blockchaincom': 'Blockchain.com',
- 'coinbaseexchange': 'Coinbase',
- 'gate': 'Gate.io',
- 'mexc': 'MEXC',
- 'kraken': 'Kraken',
- 'bitfinex': 'Bitfinex',
- 'bybit': 'Bybit',
- 'kucoin': 'KuCoin',
- 'huobi': 'Huobi',
- 'bitget': 'Bitget',
- 'bitmex': 'BitMEX',
- 'deribit': 'Deribit',
- 'phemex': 'Phemex',
- 'bitmart': 'BitMart',
- 'bitstamp': 'Bitstamp',
- 'bittrex': 'Bittrex',
- 'poloniex': 'Poloniex',
- 'gemini': 'Zwillinge',
- 'cryptocom': 'Crypto.com',
- 'bitflyer': 'bitFlyer',
- 'upbit': 'Upbit',
- 'bithumb': 'Bithumb',
- 'coinone': 'Coinone',
- 'zb': 'ZB',
- 'lbank': 'LBank',
- 'bibox': 'Bibox',
- 'bigone': 'BigONE',
- 'bitrue': 'Bitrue',
- 'coinex': 'CoinEx',
- 'digifinex': 'DigiFinex',
- 'ftx': 'FTX',
- 'ftxus': 'FTX USA',
- 'binanceus': 'Binance USA',
- 'binancecoinm': 'Binance COIN-M',
- 'binanceusdm': 'Binance USDโ-M',
- 'deepcoin': 'Deepcoin'
- },
- 'ai-trading-assistant.title': 'KI-Handelsassistent',
- 'ai-trading-assistant.strategyList': 'Strategieliste',
- 'ai-trading-assistant.createStrategy': 'Richtlinie erstellen',
- 'ai-trading-assistant.noStrategy': 'Noch keine Strategie',
- 'ai-trading-assistant.selectStrategy': 'Bitte wรคhlen Sie links eine Strategie aus, um Details anzuzeigen',
- 'ai-trading-assistant.startStrategy': 'Startstrategie',
- 'ai-trading-assistant.stopStrategy': 'Stoppstrategie',
- 'ai-trading-assistant.editStrategy': 'Redaktionelle Strategie',
- 'ai-trading-assistant.deleteStrategy': 'Richtlinie lรถschen',
- 'ai-trading-assistant.status.running': 'Laufen',
- 'ai-trading-assistant.status.stopped': 'Angehalten',
- 'ai-trading-assistant.status.error': 'Fehler',
- 'ai-trading-assistant.tabs.tradingRecords': 'Transaktionsverlauf',
- 'ai-trading-assistant.tabs.positions': 'Positionsaufzeichnung',
- 'ai-trading-assistant.tabs.aiDecisions': 'KI-Entscheidungsaufzeichnung',
- 'ai-trading-assistant.tabs.equityCurve': 'Eigenkapitalkurve',
- 'ai-trading-assistant.form.createTitle': 'Erstellen Sie KI-Handelsstrategien',
- 'ai-trading-assistant.form.editTitle': 'Bearbeiten Sie die KI-Handelsstrategie',
- 'ai-trading-assistant.form.strategyName': 'Richtlinienname',
- 'ai-trading-assistant.form.modelId': 'KI-Modell',
- 'ai-trading-assistant.form.modelIdHint': 'Verwenden Sie den OpenRouter-Systemdienst, ohne den API-Schlรผssel zu konfigurieren',
- 'ai-trading-assistant.form.decideInterval': 'Entscheidungsintervall',
- 'ai-trading-assistant.form.decideInterval5m': '5 Minuten',
- 'ai-trading-assistant.form.decideInterval10m': '10 Minuten',
- 'ai-trading-assistant.form.decideInterval30m': '30 Minuten',
- 'ai-trading-assistant.form.decideInterval1h': '1 Stunde',
- 'ai-trading-assistant.form.decideInterval4h': '4 Stunden',
- 'ai-trading-assistant.form.decideInterval1d': '1 Tag',
- 'ai-trading-assistant.form.decideInterval1w': '1 Woche',
- 'ai-trading-assistant.form.decideIntervalHint': 'Das Zeitintervall, in dem die KI Entscheidungen trifft',
- 'ai-trading-assistant.form.runPeriod': 'Laufzyklus',
- 'ai-trading-assistant.form.runPeriodHint': 'Die Startzeit und Endzeit des Strategielaufs',
- 'ai-trading-assistant.form.startDate': 'Startdatum',
- 'ai-trading-assistant.form.endDate': 'Enddatum',
- 'ai-trading-assistant.form.qdtCostTitle': 'Anweisungen zum QDT-Abzug',
- 'ai-trading-assistant.form.qdtCostHint': '{cost} QDT wird fรผr jede KI-Entscheidung abgezogen. Bitte stellen Sie sicher, dass Ihr Konto รผber ausreichend QDT-Guthaben verfรผgt. Wรคhrend der Umsetzung der Strategie werden fรผr jede Entscheidung Gebรผhren in Echtzeit abgezogen.',
- 'ai-trading-assistant.form.apiKey': 'API-Schlรผssel',
- 'ai-trading-assistant.form.exchange': 'Austausch auswรคhlen',
- 'ai-trading-assistant.form.secretKey': 'Geheimer Schlรผssel',
- 'ai-trading-assistant.form.passphrase': 'Passphrase',
- 'ai-trading-assistant.form.testConnection': 'Testverbindung',
- 'ai-trading-assistant.form.symbol': 'Handelspaar',
- 'ai-trading-assistant.form.symbolHint': 'Wรคhlen Sie das Handelspaar aus, mit dem Sie handeln mรถchten',
- 'ai-trading-assistant.form.initialCapital': 'Investierter Betrag (Marge)',
- 'ai-trading-assistant.form.leverage': 'Nutzen Sie mehrere',
- 'ai-trading-assistant.form.timeframe': 'Zeitraum',
- 'ai-trading-assistant.form.timeframe1m': '1 Minute',
- 'ai-trading-assistant.form.timeframe5m': '5 Minuten',
- 'ai-trading-assistant.form.timeframe15m': '15 Minuten',
- 'ai-trading-assistant.form.timeframe30m': '30 Minuten',
- 'ai-trading-assistant.form.timeframe1H': '1 Stunde',
- 'ai-trading-assistant.form.timeframe4H': '4 Stunden',
- 'ai-trading-assistant.form.timeframe1D': '1 Tag',
- 'ai-trading-assistant.form.marketType': 'Markttyp',
- 'ai-trading-assistant.form.marketTypeFutures': 'Vertrag',
- 'ai-trading-assistant.form.marketTypeSpot': 'Spot',
- 'ai-trading-assistant.form.totalPnl': 'Gesamtgewinn und -verlust',
- 'ai-trading-assistant.form.customPrompt': 'Benutzerdefinierte Aufforderungswรถrter',
- 'ai-trading-assistant.form.customPromptHint': 'Optional, wird zur Anpassung von KI-Handelsstrategien und Entscheidungslogik verwendet',
- 'ai-trading-assistant.form.cancel': 'Abbrechen',
- 'ai-trading-assistant.form.prev': 'Vorheriger Schritt',
- 'ai-trading-assistant.form.next': 'Nรคchster Schritt',
- 'ai-trading-assistant.form.confirmCreate': 'Bestรคtigen Sie die Erstellung',
- 'ai-trading-assistant.form.confirmEdit': 'Bestรคtigen Sie die รnderungen',
- 'ai-trading-assistant.messages.createSuccess': 'Strategie erfolgreich erstellt',
- 'ai-trading-assistant.messages.createFailed': 'Richtlinie konnte nicht erstellt werden',
- 'ai-trading-assistant.messages.updateSuccess': 'Richtlinienaktualisierung erfolgreich',
- 'ai-trading-assistant.messages.updateFailed': 'Die Aktualisierungsrichtlinie ist fehlgeschlagen',
- 'ai-trading-assistant.messages.deleteSuccess': 'Richtlinienlรถschung erfolgreich',
- 'ai-trading-assistant.messages.deleteFailed': 'Das Lรถschen der Richtlinie ist fehlgeschlagen',
- 'ai-trading-assistant.messages.startSuccess': 'Strategie erfolgreich gestartet',
- 'ai-trading-assistant.messages.startFailed': 'Die Richtlinie konnte nicht gestartet werden',
- 'ai-trading-assistant.messages.stopSuccess': 'Die Strategie wurde erfolgreich beendet',
- 'ai-trading-assistant.messages.stopFailed': 'Die Stoppstrategie ist fehlgeschlagen',
- 'ai-trading-assistant.messages.loadFailed': 'Richtlinienliste konnte nicht abgerufen werden',
- 'ai-trading-assistant.messages.loadDecisionsFailed': 'Der KI-Entscheidungsdatensatz konnte nicht abgerufen werden',
- 'ai-trading-assistant.messages.deleteConfirm': 'Sind Sie sicher, dass Sie diese Richtlinie lรถschen mรถchten? Dieser Vorgang ist irreversibel.',
- 'ai-trading-assistant.placeholders.inputStrategyName': 'Bitte geben Sie einen Richtliniennamen ein',
- 'ai-trading-assistant.placeholders.selectModelId': 'Bitte wรคhlen Sie ein KI-Modell aus',
- 'ai-trading-assistant.placeholders.selectDecideInterval': 'Bitte wรคhlen Sie ein Entscheidungsintervall aus',
- 'ai-trading-assistant.placeholders.startTime': 'Startzeit',
- 'ai-trading-assistant.placeholders.endTime': 'Endzeit',
- 'ai-trading-assistant.placeholders.inputApiKey': 'Bitte geben Sie den API-Schlรผssel ein',
- 'ai-trading-assistant.placeholders.selectExchange': 'Bitte wรคhlen Sie einen Austausch aus',
- 'ai-trading-assistant.placeholders.inputSecretKey': 'Bitte geben Sie den Geheimschlรผssel ein',
- 'ai-trading-assistant.placeholders.inputPassphrase': 'Bitte geben Sie die Passphrase ein',
- 'ai-trading-assistant.placeholders.selectSymbol': 'Bitte wรคhlen Sie ein Handelspaar aus, zum Beispiel: BTC/USDT',
- 'ai-trading-assistant.placeholders.selectTimeframe': 'Bitte wรคhlen Sie einen Zeitraum aus',
- 'ai-trading-assistant.placeholders.inputCustomPrompt': 'Bitte geben Sie ein benutzerdefiniertes Aufforderungswort ein (optional)',
- 'ai-trading-assistant.validation.strategyNameRequired': 'Bitte geben Sie einen Richtliniennamen ein',
- 'ai-trading-assistant.validation.modelIdRequired': 'Bitte wรคhlen Sie ein KI-Modell aus',
- 'ai-trading-assistant.validation.runPeriodRequired': 'Bitte wรคhlen Sie einen Laufzyklus aus',
- 'ai-trading-assistant.validation.apiKeyRequired': 'Bitte geben Sie den API-Schlรผssel ein',
- 'ai-trading-assistant.validation.exchangeRequired': 'Bitte wรคhlen Sie einen Austausch aus',
- 'ai-trading-assistant.validation.secretKeyRequired': 'Bitte geben Sie den Geheimschlรผssel ein',
- 'ai-trading-assistant.validation.symbolRequired': 'Bitte wรคhlen Sie ein Handelspaar aus',
- 'ai-trading-assistant.validation.initialCapitalRequired': 'Bitte geben Sie den Anlagebetrag ein',
- 'ai-trading-assistant.table.time': 'Zeit',
- 'ai-trading-assistant.table.type': 'Typ',
- 'ai-trading-assistant.table.price': 'Preis',
- 'ai-trading-assistant.table.amount': 'Menge',
- 'ai-trading-assistant.table.value': 'Betrag',
- 'ai-trading-assistant.table.symbol': 'Handelspaar',
- 'ai-trading-assistant.table.side': 'Richtung',
- 'ai-trading-assistant.table.size': 'Positionsmenge',
- 'ai-trading-assistant.table.entryPrice': 'Erรถffnungspreis',
- 'ai-trading-assistant.table.currentPrice': 'aktueller Preis',
- 'ai-trading-assistant.table.unrealizedPnl': 'nicht realisierter Gewinn oder Verlust',
- 'ai-trading-assistant.table.profit': 'Gewinn und Verlust',
- 'ai-trading-assistant.table.openLong': 'Lange geรถffnet',
- 'ai-trading-assistant.table.closeLong': 'Pinduo',
- 'ai-trading-assistant.table.openShort': 'Kurz รถffnen',
- 'ai-trading-assistant.table.closeShort': 'leer',
- 'ai-trading-assistant.table.addLong': 'Gadot',
- 'ai-trading-assistant.table.addShort': 'kurz hinzufรผgen',
- 'ai-trading-assistant.table.closeShortProfit': 'Nehmen Sie Gewinne aus Short-Positionen mit',
- 'ai-trading-assistant.table.closeShortStop': 'Stop-Loss',
- 'ai-trading-assistant.table.closeLongProfit': 'Halten Sie lange inne und nehmen Sie Gewinn mit',
- 'ai-trading-assistant.table.closeLongStop': 'Stop-Loss',
- 'ai-trading-assistant.table.buy': 'kaufen',
- 'ai-trading-assistant.table.sell': 'verkaufen',
- 'ai-trading-assistant.table.long': 'Geh lange',
- 'ai-trading-assistant.table.short': 'kurz',
- 'ai-trading-assistant.table.hold': 'halten',
- 'ai-trading-assistant.table.reasoning': 'Analysegrund',
- 'ai-trading-assistant.table.decisions': 'Entscheidungsfindung',
- 'ai-trading-assistant.table.riskAssessment': 'Risikobewertung',
- 'ai-trading-assistant.table.confidence': 'Vertrauen',
- 'ai-trading-assistant.table.totalRecords': 'Insgesamt {total} Datensรคtze',
- 'ai-trading-assistant.table.noPositions': 'Noch keine Stellen',
- 'ai-trading-assistant.detail.title': 'Strategiedetails',
- 'ai-trading-assistant.equity.noData': 'Noch keine Daten zum Vermรถgen',
- 'ai-trading-assistant.equity.equity': 'Nettovermรถgen',
- 'ai-trading-assistant.exchange.testFailed': 'Verbindungstest fehlgeschlagen',
- 'ai-trading-assistant.exchange.connectionSuccess': 'Verbindung erfolgreich',
- 'ai-trading-assistant.exchange.connectionFailed': 'Verbindung fehlgeschlagen',
- 'ai-trading-assistant.form.advancedSettings': 'Erweiterte Einstellungen',
- 'ai-trading-assistant.form.orderMode': 'Bestellmodus',
- 'ai-trading-assistant.form.orderModeMaker': 'Hersteller',
- 'ai-trading-assistant.form.orderModeTaker': 'Marktpreis (Taker)',
- 'ai-trading-assistant.form.orderModeHint': 'Im Pending-Order-Modus werden Limit-Orders verwendet und die Bearbeitungsgebรผhr ist niedriger; Der Marktpreismodus wird sofort ausgefรผhrt und die Bearbeitungsgebรผhr ist hรถher.',
- 'ai-trading-assistant.form.makerWaitSec': 'Wartezeit fรผr ausstehende Bestellungen (Sekunden)',
- 'ai-trading-assistant.form.makerWaitSecHint': 'Die Zeit, die nach der Bestellung auf die Transaktion gewartet wird. Brechen Sie ab und versuchen Sie es nach einer Zeitรผberschreitung erneut.',
- 'ai-trading-assistant.form.makerRetries': 'Anzahl der Wiederholungsversuche fรผr ausstehende Bestellungen',
- 'ai-trading-assistant.form.makerRetriesHint': 'Die maximale Anzahl von Wiederholungsversuchen, wenn eine ausstehende Order nicht ausgefรผhrt wird',
- 'ai-trading-assistant.form.fallbackToMarket': 'Die ausstehende Bestellung schlรคgt fehl und der Marktpreis wird herabgestuft.',
- 'ai-trading-assistant.form.fallbackToMarketHint': 'Wenn die ausstehende Erรถffnungs-/Schlieรorder nicht abgeschlossen wurde, wird angegeben, ob sie auf eine Marktorder herabgestuft werden soll, um sicherzustellen, dass die Transaktion abgeschlossen wird.',
- 'ai-trading-assistant.form.marginMode': 'Margin-Modus',
- 'ai-trading-assistant.form.marginModeCross': 'Volles Lager',
- 'ai-trading-assistant.form.marginModeIsolated': 'Isolierte Lage',
- 'ai-analysis.title': 'Quantenhandelsmaschine',
- 'ai-analysis.system.online': 'online',
- 'ai-analysis.system.agents': 'Agent',
- 'ai-analysis.system.active': 'aktiv',
- 'ai-analysis.system.stage': 'Bรผhne',
- 'ai-analysis.panel.roster': 'Agentenaufstellung',
- 'ai-analysis.panel.thinking': 'Denken...',
- 'ai-analysis.panel.done': 'Komplett',
- 'ai-analysis.panel.standby': 'Standby',
- 'ai-analysis.input.title': 'Quantenhandelsmaschine',
- 'ai-analysis.input.placeholder': 'Zielwert auswรคhlen (z. B. BTC/USDT)',
- 'ai-analysis.input.watchlist': 'Optionale Bestรคnde',
- 'ai-analysis.input.start': 'Analyse starten',
- 'ai-analysis.input.recent': 'Letzte Aufgaben:',
- 'ai-analysis.vis.stage': 'Bรผhne',
- 'ai-analysis.vis.processing': 'Verarbeitung',
- 'ai-analysis.result.complete': 'Analyse abgeschlossen',
- 'ai-analysis.result.signal': 'Schlusssignal',
- 'ai-analysis.result.confidence': 'Vertrauen:',
- 'ai-analysis.result.new': 'neue Analyse',
- 'ai-analysis.result.full': 'Vollstรคndigen Bericht ansehen',
- 'ai-analysis.logs.title': 'Systemprotokoll',
- 'ai-analysis.modal.title': 'vertraulicher Bericht',
- 'ai-analysis.modal.fundamental': 'Fundamentalanalyse',
- 'ai-analysis.modal.technical': 'Technische Analyse',
- 'ai-analysis.modal.sentiment': 'Emotionale Analyse',
- 'ai-analysis.modal.risk': 'Risikobewertung',
- 'ai-analysis.stage.idle': 'Standby',
- 'ai-analysis.stage.1': 'Phase Eins: Mehrdimensionale Analyse',
- 'ai-analysis.stage.2': 'Phase Zwei: Lang-Kurz-Debatte',
- 'ai-analysis.stage.3': 'Phase drei: Strategische Planung',
- 'ai-analysis.stage.4': 'Die vierte Stufe: รberprรผfung der Risikokontrolle',
- 'ai-analysis.stage.complete': 'Komplett',
- 'ai-analysis.agent.investment_director': 'Investmentdirektor',
- 'ai-analysis.agent.role.investment_director': 'Umfassende Analyse und abschlieรendes Fazit',
- 'ai-analysis.agent.market': 'Marktanalyst',
- 'ai-analysis.agent.role.market': 'Technologie- und Marktdaten',
- 'ai-analysis.agent.fundamental': 'Fundamentalanalytiker',
- 'ai-analysis.agent.role.fundamental': 'Finanzen und Bewertung',
- 'ai-analysis.agent.technical': 'Technischer Analyst',
- 'ai-analysis.agent.role.technical': 'Technische Indikatoren und Diagramme',
- 'ai-analysis.agent.news': 'Nachrichtenanalyst',
- 'ai-analysis.agent.role.news': 'Globaler Nachrichtenfilter',
- 'ai-analysis.agent.sentiment': 'Stimmungsanalytiker',
- 'ai-analysis.agent.role.sentiment': 'Sozial und emotional',
- 'ai-analysis.agent.risk': 'Risikoanalytiker',
- 'ai-analysis.agent.role.risk': 'Grundlegender Risikocheck',
- 'ai-analysis.agent.bull': 'bullischer Forscher',
- 'ai-analysis.agent.role.bull': 'Wachstumskatalysator-Bergbau',
- 'ai-analysis.agent.bear': 'bรคrischer Forscher',
- 'ai-analysis.agent.role.bear': 'Risiko- und Fehlersuche',
- 'ai-analysis.agent.manager': 'Forschungsmanager',
- 'ai-analysis.agent.role.manager': 'Debattenmoderator',
- 'ai-analysis.agent.trader': 'Hรคndler',
- 'ai-analysis.agent.role.trader': 'Fรผhrungsstratege',
- 'ai-analysis.agent.risky': 'aktivistischer Analytiker',
- 'ai-analysis.agent.role.risky': 'aggressive Strategie',
- 'ai-analysis.agent.neutral': 'Bilanzanalytiker',
- 'ai-analysis.agent.role.neutral': 'Ausgleichsstrategie',
- 'ai-analysis.agent.safe': 'konservativer Analytiker',
- 'ai-analysis.agent.role.safe': 'konservative Strategie',
- 'ai-analysis.agent.cro': 'Risikokontrollmanager (CRO)',
- 'ai-analysis.agent.role.cro': 'letzte Entscheidungsbefugnis',
- 'ai-analysis.script.market': 'OHLCV-Daten werden von wichtigen Bรถrsen abgerufen...',
- 'ai-analysis.script.fundamental': 'Quartalsfinanzberichte abrufen...',
- 'ai-analysis.script.technical': 'Analyse technischer Indikatoren und Chartmuster...',
- 'ai-analysis.script.news': 'Globale Finanznachrichten scannen...',
- 'ai-analysis.script.sentiment': 'Analyse von Social-Media-Trends...',
- 'ai-analysis.script.risk': 'Berechnung der historischen Volatilitรคt...',
- 'invite.inviteLink': 'Einladungslink',
- 'invite.copy': 'Link kopieren',
- 'invite.copySuccess': 'Erfolgreich kopieren!',
- 'invite.copyFailed': 'Der Kopiervorgang ist fehlgeschlagen. Bitte manuell kopieren',
- 'invite.noInviteLink': 'Der Einladungslink wurde nicht generiert',
- 'invite.totalInvites': 'Kumulierte Einladungen',
- 'invite.totalReward': 'Kumulative Belohnungen',
- 'invite.rules': 'Einladungsregeln',
- 'invite.rule1': 'Jedes Mal, wenn Sie einen Freund erfolgreich zur Registrierung einladen, erhalten Sie eine Belohnung',
- 'invite.rule2': 'Wenn der eingeladene Freund die erste Transaktion abschlieรt, erhalten Sie zusรคtzliche Belohnungen',
- 'invite.rule3': 'Einladungsprรคmien werden direkt an Ihr Konto gesendet',
- 'invite.inviteList': 'Einladungsliste',
- 'invite.tasks': 'Missionszentrum',
- 'invite.inviteeName': 'Eingeladen',
- 'invite.inviteTime': 'Einladungszeit',
- 'invite.status': 'Status',
- 'invite.reward': 'Belohnung',
- 'invite.active': 'aktiv',
- 'invite.inactive': 'Nicht aktiviert',
- 'invite.completed': 'Abgeschlossen',
- 'invite.claimed': 'Erhalten',
- 'invite.pending': 'Zu vervollstรคndigen',
- 'invite.goToTask': 'zu vervollstรคndigen',
- 'invite.claimReward': 'Belohnungen einfordern',
- 'invite.verify': 'Verifizierung abgeschlossen',
- 'invite.verifySuccess': 'Verifizierung erfolgreich! Aufgabe abgeschlossen',
- 'invite.verifyNotCompleted': 'Die Aufgabe wurde noch nicht abgeschlossen. Bitte schlieรen Sie die Aufgabe zuerst ab',
- 'invite.verifyFailed': 'Die Verifizierung ist fehlgeschlagen. Bitte versuchen Sie es spรคter noch einmal',
- 'invite.claimSuccess': '{reward} QDT erfolgreich erhalten!',
- 'invite.claimFailed': 'Fehler beim Sammeln. Bitte versuchen Sie es spรคter noch einmal',
- 'invite.totalRecords': 'Insgesamt {total} Datensรคtze',
- 'invite.task.twitter.title': 'Retweeten an X (Twitter)',
- 'invite.task.twitter.desc': 'Teilen Sie unsere offiziellen Tweets mit Ihrem X-Konto (Twitter).',
- 'invite.task.youtube.title': 'Folgen Sie unserem YouTube-Kanal',
- 'invite.task.youtube.desc': 'Abonnieren und folgen Sie unserem offiziellen YouTube-Kanal',
- 'invite.task.telegram.title': 'Treten Sie der Telegram-Gruppe bei',
- 'invite.task.telegram.desc': 'Treten Sie unserer offiziellen Telegram-Community-Gruppe bei',
- 'invite.task.discord.title': 'Treten Sie einem Discord-Server bei',
- 'invite.task.discord.desc': 'Treten Sie unserem Discord-Community-Server bei',
- 'message': '-',
- 'layouts.usermenu.dialog.title': 'Informationen',
- 'layouts.usermenu.dialog.content': 'Mรถchten Sie sich wirklich abmelden?',
- 'layouts.userLayout.title': 'Finden Sie die Wahrheit in der Unsicherheit',
- // Auto-filled missing keys from en-US (fallback to English)
- 'dashboard.indicator.boundary.message': 'Note: The indicator script only computes plots + buy/sell signals. Position sizing, risk, scaling, fees/slippage belong to execution config.',
- 'dashboard.indicator.boundary.indicatorRule': "Keep the script to buy/sell only (and set df['buy']/df['sell']). Do NOT implement position management, TP/SL, scaling in the script.",
- 'dashboard.indicator.boundary.backtestRule': 'Rule: If a bar has a main signal (buy/sell โ open/close/reverse), scaling in/out is skipped on the same bar.',
- 'dashboard.indicator.guide.title': 'Python Indicator & Strategy Development Guide',
- 'dashboard.indicator.guide.intro': 'This platform supports writing custom technical indicators and trading signals using Python. The system includes built-in pandas and numpy data analysis libraries. You can use standard DataFrame operations to process K-line data and draw charts or mark buy/sell signals.',
- 'dashboard.indicator.guide.section1.title': '1. Runtime Environment & Predefined Variables',
- 'dashboard.indicator.guide.section1.env': 'Your code runs in a browser-based Python environment (Pyodide).',
- 'dashboard.indicator.guide.section1.libs': 'Pre-installed Libraries',
- 'dashboard.indicator.guide.section1.libsDesc': 'The following libraries are imported by default, no need to import again:',
- 'dashboard.indicator.guide.section1.libsList': 'pandas (pd), numpy (np), math, json',
- 'dashboard.indicator.guide.section1.data': 'Input Data: df',
- 'dashboard.indicator.guide.section1.dataDesc': 'The system automatically converts current K-line data into a Pandas DataFrame object, variable name is df.',
- 'dashboard.indicator.guide.section1.dataColumns': 'df contains the following columns (all float type):',
- 'dashboard.indicator.guide.section1.dataColumnsList': 'time (timestamp, seconds), open, high, low, close, volume',
- 'dashboard.indicator.guide.section1.dataNote': 'Data index is arranged from old to new (0 is the earliest data, last row is the latest data).',
- 'dashboard.indicator.guide.section1.dataIndex': 'Important: df index is timestamp (DatetimeIndex), please preserve the index, avoid using .values which loses the index.',
- 'dashboard.indicator.guide.section2.title': '2. Parameter Definition',
- 'dashboard.indicator.guide.section2.desc': 'You can define variables as parameters at the beginning of your code. The system will try to parse statements like variable = value as adjustable parameters.',
- 'dashboard.indicator.guide.section2.example': 'Parameter Example',
- 'dashboard.indicator.guide.section2.exampleCode': 'span = 20 or multiplier = 2.0',
- 'dashboard.indicator.guide.section3.title': '3. Backtest Signal Setup (Important!)',
- 'dashboard.indicator.guide.section3.desc': 'If you want your indicator to support backtesting, you must set the following two columns in your code:',
- 'dashboard.indicator.guide.section3.backtestRequired': 'Required for Backtesting:',
- 'dashboard.indicator.guide.section3.backtestBuySignal': "df['buy_signal'] - Boolean Series, True indicates buy signal",
- 'dashboard.indicator.guide.section3.backtestSellSignal': "df['sell_signal'] - Boolean Series, True indicates sell signal",
- 'dashboard.indicator.guide.section3.backtestExample': 'Example:',
- 'dashboard.indicator.guide.section3.backtestExampleCode': "df['buy_signal'] = condition_buydf['sell_signal'] = condition_sell",
- 'dashboard.indicator.guide.section3.backtestNote': 'Note: Even if you only set output.signals for chart display, you must set these two columns to enable backtesting.',
- 'dashboard.indicator.guide.section4.title': '4. Output Requirements: output',
- 'dashboard.indicator.guide.section4.desc': 'At the end of code execution, you must define a dictionary named output to tell the chart how to display results.',
- 'dashboard.indicator.guide.section4.fields': 'The output dictionary contains the following fields:',
- 'dashboard.indicator.guide.section4.plots': 'plots - For drawing lines (e.g., moving averages, RSI)',
- 'dashboard.indicator.guide.section4.signals': 'signals - For marking buy/sell signals (e.g., arrows, labels)',
- 'dashboard.indicator.guide.section4.name': 'name - Indicator name (optional)',
- 'dashboard.indicator.guide.section4.calculatedVars': 'calculatedVars - Calculated variables (optional, for displaying additional information)',
- 'dashboard.indicator.guide.section5.title': '5. Plot Configuration (Plots)',
- 'dashboard.indicator.guide.section5.desc': 'Each object in the plots list represents a line.',
- 'dashboard.indicator.guide.section5.table.field': 'Field',
- 'dashboard.indicator.guide.section5.table.type': 'Type',
- 'dashboard.indicator.guide.section5.table.required': 'Required',
- 'dashboard.indicator.guide.section5.table.requiredYes': 'Yes',
- 'dashboard.indicator.guide.section5.table.requiredNo': 'No',
- 'dashboard.indicator.guide.section5.table.desc': 'Description',
- 'dashboard.indicator.guide.section5.table.name': 'The name of the indicator line, displayed in the legend',
- 'dashboard.indicator.guide.section5.table.data': 'Data list, length must match the number of rows in df. Recommended to use series.tolist()',
- 'dashboard.indicator.guide.section5.table.color': "Line color (Hex format, e.g. '#ff0000'). If not filled, the system will automatically assign",
- 'dashboard.indicator.guide.section5.table.typeDesc': "Chart type, default is 'line'",
- 'dashboard.indicator.guide.section5.table.overlay': 'Important. True means display on main chart (with K-line), False means display on sub-chart (independent area)',
- 'dashboard.indicator.guide.section5.example': 'Example: Draw Simple Moving Average (SMA)',
- 'dashboard.indicator.guide.section5.exampleCalc': 'Calculate SMA',
- 'dashboard.indicator.guide.section5.exampleOutput': 'Construct Output',
- 'dashboard.indicator.guide.section5.exampleOverlay': 'Display on main chart',
- 'dashboard.indicator.guide.section6.title': '6. Signal Markers (Signals)',
- 'dashboard.indicator.guide.section6.desc': "signals are used to mark buy/sell points on specific K-lines through icons or text. Note: This is only for chart display. The backtest system uses df['buy_signal'] and df['sell_signal'].",
- 'dashboard.indicator.guide.section6.table.type': "Signal type: 'buy' (buy, marked below K-line) or 'sell' (sell, marked above K-line)",
- 'dashboard.indicator.guide.section6.table.data': 'Signal data list. Fill price value at signal positions, fill None (or np.nan) at non-signal positions',
- 'dashboard.indicator.guide.section6.table.text': 'Text displayed on the label (e.g. "B", "S", "Buy", "Sell")',
- 'dashboard.indicator.guide.section6.table.color': 'Marker color',
- 'dashboard.indicator.guide.section6.hint': 'The system automatically handles positioning.',
- 'dashboard.indicator.guide.section6.buy': 'Markers will be automatically positioned below the Low of the current K-line',
- 'dashboard.indicator.guide.section6.sell': 'Markers will be automatically positioned above the High of the current K-line',
- 'dashboard.indicator.guide.section6.example': 'Example: Draw Buy/Sell Signals',
- 'dashboard.indicator.guide.section6.exampleInit': 'Initialize signal list, fill all with None',
- 'dashboard.indicator.guide.section6.exampleLogic': 'Simple logic: mark buy when close price is greater than open price',
- 'dashboard.indicator.guide.section6.exampleNote': 'In actual logic, please use loops or vectorized operations',
- 'dashboard.indicator.guide.section6.examplePrice': 'Record price',
- 'dashboard.indicator.guide.section6.exampleText': 'Buy',
- 'dashboard.indicator.guide.section7.title': '7. Complete Code Examples',
- 'dashboard.indicator.guide.section7.exampleA': 'Example A: Dual EMA Strategy (Supports Backtesting)',
- 'dashboard.indicator.guide.section7.exampleACode': "# 1. Calculate indicatorsdf['open_long'], df['close_long'], df['open_short'], df['close_short'] (boolean). Even if you set output.signals for chart display, you must set these columns to enable backtesting.",
- 'dashboard.indicator.guide.section8.q2': 'Q: Data length mismatch?',
- 'dashboard.indicator.guide.section8.a2': "A: The data list in plots and signals must have exactly the same length as the K-line data. If you use df['xxx'].tolist(), there is usually no problem.",
- 'dashboard.indicator.guide.section8.q3': 'Q: How to handle NaN (empty values)?',
- 'dashboard.indicator.guide.section8.a3': "A: Pandas calculations (such as rolling mean) will produce NaN at the beginning. The system will automatically convert NaN to null for chart rendering. You don't need to manually clean it, but if you need specific logic, you can use df.fillna(0) or other methods.",
- 'dashboard.indicator.guide.section8.q4': 'Q: Index mismatch causing all signals to be NaN?',
- 'dashboard.indicator.guide.section8.a4': "A: Please ensure you preserve the original df index (timestamp). Avoid using .values to create new Series. Use columns directly like df['close'] for operations.",
- 'dashboard.indicator.guide.section8.q5': 'Q: Can I use third-party network libraries?',
- 'dashboard.indicator.guide.section8.a5': 'A: No. The runtime environment is a browser sandbox and cannot use libraries like requests to request external APIs, nor can it install additional pip packages. Limited to built-in libraries such as pandas, numpy, math, json.',
- 'dashboard.indicator.guide.section8.q6': 'Q: How to debug code?',
- 'dashboard.indicator.guide.section8.a6': 'A: If the chart does not display indicators, it is usually because the Python code has an error. Please check for syntax errors or array index out of bounds. It is recommended to debug the algorithm logic in a local Python environment first, then copy it in.',
- 'dashboard.indicator.guide.section8.q7': 'Q: Backtest shows 0 signals?',
- 'dashboard.indicator.guide.section8.a7': "A: Please check the data type of df['open_long']/df['close_long']/df['open_short']/df['close_short']. They should be boolean (True/False), not numeric. Use condition.fillna(False).astype(bool) to ensure correct type.",
- 'dashboard.indicator.backtest.commissionHint': 'Charged on notional value (incl. leverage) per trade; both entry & exit are deducted from balance.',
- 'dashboard.indicator.backtest.historyTitle': 'Backtest History',
- 'dashboard.indicator.backtest.historyRefresh': 'Refresh',
- 'dashboard.indicator.backtest.historyView': 'View',
- 'dashboard.indicator.backtest.historyNoData': 'No backtest history',
- 'dashboard.indicator.backtest.historyUseCurrent': 'Only current symbol/timeframe',
- 'dashboard.indicator.backtest.historyFilterSymbol': 'Symbol',
- 'dashboard.indicator.backtest.historyFilterTimeframe': 'Timeframe',
- 'dashboard.indicator.backtest.historyApply': 'Apply filters',
- 'dashboard.indicator.backtest.historyAIAnalyze': 'AI Analyze',
- 'dashboard.indicator.backtest.historyAIAnalyzeTitle': 'AI Suggestions',
- 'dashboard.indicator.backtest.historyNoAIResult': 'No AI analysis result',
- 'dashboard.indicator.backtest.historyRunId': 'Run ID',
- 'dashboard.indicator.backtest.historyCreatedAt': 'Time',
- 'dashboard.indicator.backtest.historyRange': 'Range',
- 'dashboard.indicator.backtest.historyStatus': 'Status',
- 'dashboard.indicator.backtest.historyStatusSuccess': 'Success',
- 'dashboard.indicator.backtest.historyStatusFailed': 'Failed',
- 'dashboard.indicator.backtest.historyActions': 'Actions',
- 'dashboard.indicator.backtest.hint.entryPctMax': 'Max entry: {maxPct}% (reserve budget for future scale-ins)',
- 'trading-assistant.exchange.ipWhitelistTip': 'Please add the following IPs to the whitelist in your exchange API settings:',
- 'signal-robot.title': 'Signal Robot Console',
- 'signal-robot.createBot': 'Create New Bot',
- 'signal-robot.search.nameOrSymbol': 'Name/Symbol',
- 'signal-robot.search.placeholder': 'Search bot name or symbol',
- 'signal-robot.search.status': 'Status',
- 'signal-robot.search.statusAll': 'All',
- 'signal-robot.search.statusRunning': 'Running',
- 'signal-robot.search.statusPaused': 'Paused',
- 'signal-robot.search.query': 'Query',
- 'signal-robot.search.reset': 'Reset',
- 'signal-robot.table.botName': 'Bot Name',
- 'signal-robot.table.symbolTimeframe': 'Symbol/Timeframe',
- 'signal-robot.table.triggerStrategy': 'Trigger Strategy',
- 'signal-robot.table.notificationChannels': 'Notification Channels',
- 'signal-robot.table.status': 'Status',
- 'signal-robot.table.action': 'Action',
- 'signal-robot.table.triggerConditions': '{count} trigger conditions',
- 'signal-robot.table.monitoring': 'Monitoring',
- 'signal-robot.table.paused': 'Paused',
- 'signal-robot.table.edit': 'Edit',
- 'signal-robot.table.pause': 'Pause',
- 'signal-robot.table.start': 'Start',
- 'signal-robot.table.delete': 'Delete',
- 'signal-robot.table.deleteConfirm': 'Are you sure you want to delete this bot?',
- 'signal-robot.table.deleteSuccess': 'Deleted successfully',
- 'signal-robot.table.startSuccess': 'Bot started',
- 'signal-robot.table.pauseSuccess': 'Bot paused',
- 'signal-robot.channel.telegram': 'Telegram',
- 'signal-robot.channel.discord': 'Discord',
- 'signal-robot.channel.email': 'Email',
- 'signal-robot.channel.webhook': 'Webhook',
- 'signal-robot.channel.browser': 'Browser Push',
- 'signal-robot.modal.createTitle': 'Create New Signal Robot',
- 'signal-robot.modal.editTitle': 'Edit Signal Robot',
- 'signal-robot.modal.step.basic': 'Basic Settings',
- 'signal-robot.modal.step.entry': 'Entry Strategy',
- 'signal-robot.modal.step.position': 'Position Management',
- 'signal-robot.modal.step.risk': 'Risk Control',
- 'signal-robot.modal.step.notify': 'Notification Config',
- 'signal-robot.modal.prev': 'Previous',
- 'signal-robot.modal.next': 'Next',
- 'signal-robot.modal.preview': 'Preview Backtest',
- 'signal-robot.modal.complete': 'Complete & Run',
- 'signal-robot.modal.saveSuccess': 'Saved successfully',
- 'signal-robot.modal.previewDeveloping': 'Preview feature is under development...',
- 'signal-robot.modal.basicInfoRequired': 'Please complete basic information',
- 'signal-robot.basic.alert': 'Set basic information for the bot',
- 'signal-robot.basic.title': 'Basic Information',
- 'signal-robot.basic.botName': 'Bot Name',
- 'signal-robot.basic.botNamePlaceholder': 'e.g.: BTC SuperTrend Strategy',
- 'signal-robot.basic.symbol': 'Trading Pair',
- 'signal-robot.basic.symbolPlaceholder': 'Select from watchlist',
- 'signal-robot.basic.noWatchlist': 'No watchlist items, please add in market page first',
- 'signal-robot.basic.timeframe': 'K-Line Period',
- 'signal-robot.basic.timeframe15m': '15 Minutes',
- 'signal-robot.basic.timeframe30m': '30 Minutes',
- 'signal-robot.basic.timeframe1h': '1 Hour',
- 'signal-robot.basic.timeframe4h': '4 Hours',
- 'signal-robot.basic.timeframe1d': '1 Day',
- 'signal-robot.basic.autoNameSuggestion': '{symbol} Signal Robot',
- 'signal-robot.entry.alert': 'Trigger entry signal when all conditions below are met',
- 'signal-robot.entry.condition': 'Condition {index}',
- 'signal-robot.entry.indicator': 'Indicator',
- 'signal-robot.entry.indicatorSupertrend': 'SuperTrend',
- 'signal-robot.entry.indicatorEma': 'EMA (Exponential Moving Average)',
- 'signal-robot.entry.indicatorRsi': 'RSI (Relative Strength Index)',
- 'signal-robot.entry.indicatorMacd': 'MACD',
- 'signal-robot.entry.indicatorBollinger': 'Bollinger Bands',
- 'signal-robot.entry.atrPeriod': 'ATR Period',
- 'signal-robot.entry.multiplier': 'Multiplier',
- 'signal-robot.entry.triggerSignal': 'Trigger Signal',
- 'signal-robot.entry.signalTrendBullish': 'Trend Bullish',
- 'signal-robot.entry.signalTrendBearish': 'Trend Bearish',
- 'signal-robot.entry.signalIsUptrend': 'Is Uptrend',
- 'signal-robot.entry.signalIsDowntrend': 'Is Downtrend',
- 'signal-robot.entry.period': 'Period',
- 'signal-robot.entry.compareCondition': 'Compare Condition',
- 'signal-robot.entry.priceAbove': 'Price > EMA (Price Above)',
- 'signal-robot.entry.priceBelow': 'Price < EMA (Price Below)',
- 'signal-robot.entry.crossUp': 'Price Crosses Above EMA (Golden Cross)',
- 'signal-robot.entry.crossDown': 'Price Crosses Below EMA (Death Cross)',
- 'signal-robot.entry.compare': 'Compare',
- 'signal-robot.entry.greaterThan': 'Greater Than',
- 'signal-robot.entry.lessThan': 'Less Than',
- 'signal-robot.entry.crossUpShort': 'Cross Up',
- 'signal-robot.entry.crossDownShort': 'Cross Down',
- 'signal-robot.entry.threshold': 'Threshold',
- 'signal-robot.entry.selectIndicator': 'Please select an indicator to configure parameters',
- 'signal-robot.entry.addCondition': 'Add Condition',
- 'signal-robot.position.alert': 'Configure initial position size, leverage and pyramiding rules',
- 'signal-robot.position.basicTitle': 'Basic Position Management',
- 'signal-robot.position.initialSize': 'Initial Size (Capital %)',
- 'signal-robot.position.initialSizeHint': 'Recommended 5% - 20%',
- 'signal-robot.position.leverage': 'Leverage',
- 'signal-robot.position.leverageHint': 'Please ensure your exchange account supports this leverage',
- 'signal-robot.position.maxPyramiding': 'Max Pyramiding Times',
- 'signal-robot.position.maxPyramidingHint': '0 means no pyramiding',
- 'signal-robot.position.pyramidingTitle': 'Pyramiding Rules',
- 'signal-robot.position.pyramidingEnabled': 'Enabled',
- 'signal-robot.position.pyramidingDisabled': 'Disabled',
- 'signal-robot.position.pyramidingCondition': 'Pyramiding Trigger Condition',
- 'signal-robot.position.priceRisePct': 'Price Rises (Long) / Falls (Short)',
- 'signal-robot.position.profitPct': 'Profit Reaches',
- 'signal-robot.position.triggerThreshold': 'Trigger Threshold (%)',
- 'signal-robot.position.triggerThresholdHint': 'e.g. 3%: add position once every 3% rise',
- 'signal-robot.position.addSize': 'Single Add Size (Capital %)',
- 'signal-robot.position.pyramidingDisabledHint': 'Pyramiding disabled, only initial position will be executed',
- 'signal-robot.risk.alert': 'Configure take profit, stop loss and exit rules',
- 'signal-robot.risk.stopLossTitle': 'Stop Loss',
- 'signal-robot.risk.stopLossEnabled': 'Enabled',
- 'signal-robot.risk.stopLossDisabled': 'Disabled',
- 'signal-robot.risk.stopLossType': 'Stop Loss Type',
- 'signal-robot.risk.stopLossFixedPct': 'Fixed Percentage',
- 'signal-robot.risk.stopLossAtrMultiplier': 'ATR Multiplier',
- 'signal-robot.risk.stopLossValue': 'Value',
- 'signal-robot.risk.stopLossFixedHint': 'e.g. 2%: stop loss when loss reaches 2%',
- 'signal-robot.risk.stopLossAtrHint': 'e.g. 2.0: stop loss when price touches ATR*2.0',
- 'signal-robot.risk.stopLossDisabledHint': 'Stop loss disabled (high risk)',
- 'signal-robot.risk.trailingStopTitle': 'Trailing Stop',
- 'signal-robot.risk.activationProfit': 'Activation Profit (%)',
- 'signal-robot.risk.activationProfitHint': 'Start trailing when profit reaches this level',
- 'signal-robot.risk.callbackPct': 'Callback (%)',
- 'signal-robot.risk.callbackPctHint': 'Trigger take profit when price falls from peak by this percentage',
- 'signal-robot.risk.trailingStopDisabledHint': 'Trailing stop disabled',
- 'signal-robot.risk.otherExitTitle': 'Other Exit Rules',
- 'signal-robot.risk.signalExit': 'Allow Signal Exit',
- 'signal-robot.risk.signalExitHint': 'Close position immediately when reverse signal appears (e.g. close long when short signal appears)',
- 'signal-robot.notify.alert': 'Configure notification methods when signal is triggered',
- 'signal-robot.notify.channelTitle': 'Notification Channels',
- 'signal-robot.notify.discordWebhook': 'Discord Webhook',
- 'signal-robot.notify.genericWebhook': 'Generic Webhook',
- 'signal-robot.notify.webhookUrl': 'Webhook URL',
- 'signal-robot.notify.webhookUrlPlaceholder': 'https://example.com/webhook',
- 'signal-robot.notify.discordUrl': 'Discord URL',
- 'signal-robot.notify.discordUrlPlaceholder': 'https://discord.com/api/webhooks/...',
- 'signal-robot.operator.greaterThan': 'Greater Than',
- 'signal-robot.operator.lessThan': 'Less Than',
- 'signal-robot.operator.equal': 'Equal',
- 'signal-robot.operator.goldenCross': 'Golden Cross',
- 'signal-robot.operator.deathCross': 'Death Cross',
- 'signal-robot.operator.increaseBy': 'Increase By',
- 'signal-robot.operator.decreaseBy': 'Decrease By',
- 'signal-robot.indicator.price': 'Price',
- 'signal-robot.indicator.rsi': 'RSI',
- 'signal-robot.indicator.kdjK': 'KDJ(K)',
- 'signal-robot.indicator.kdjJ': 'KDJ(J)',
- 'signal-robot.indicator.macd': 'MACD',
- 'signal-robot.indicator.macdHist': 'MACD Histogram',
- 'signal-robot.indicator.bollingerUp': 'Bollinger Upper',
- 'signal-robot.indicator.bollingerLow': 'Bollinger Lower',
- 'signal-robot.indicator.volume': 'Volume',
- 'signal-robot.indicator.changePct1h': '1H Change %',
- 'signal-robot.indicator.changePct24h': '24H Change %',
- 'signal-robot.indicator.signalLine': 'Signal Line',
-
- // Settings (Memory/Reflection)
- 'settings.group.agent_memory': 'Gedรคchtnis/Reflexion',
- 'settings.group.reflection_worker': 'Automatischer Reflexions-Prรผf-Worker',
- 'settings.field.ENABLE_AGENT_MEMORY': 'Agenten-Gedรคchtnis aktivieren',
- 'settings.field.AGENT_MEMORY_ENABLE_VECTOR': 'Vektorsuche aktivieren (lokal)',
- 'settings.field.AGENT_MEMORY_EMBEDDING_DIM': 'Embedding-Dimension',
- 'settings.field.AGENT_MEMORY_TOP_K': 'Top-K Abrufanzahl',
- 'settings.field.AGENT_MEMORY_CANDIDATE_LIMIT': 'Kandidatenfenstergrรถรe',
- 'settings.field.AGENT_MEMORY_HALF_LIFE_DAYS': 'Halbwertszeit der Zeitabnahme (Tage)',
- 'settings.field.AGENT_MEMORY_W_SIM': 'รhnlichkeitsgewicht',
- 'settings.field.AGENT_MEMORY_W_RECENCY': 'Aktualitรคtsgewicht',
- 'settings.field.AGENT_MEMORY_W_RETURNS': 'Renditegewicht',
- 'settings.field.ENABLE_REFLECTION_WORKER': 'Automatische Verifikation aktivieren',
- 'settings.field.REFLECTION_WORKER_INTERVAL_SEC': 'Verifikationsintervall (Sek.)',
-
- // Profile - Notification Settings (Benachrichtigungseinstellungen)
- 'profile.notifications.title': 'Benachrichtigungseinstellungen',
- 'profile.notifications.hint': 'Konfigurieren Sie Ihre Standard-Benachrichtigungsmethoden, die automatisch beim Erstellen von Asset-Monitoren und Alarmen verwendet werden',
- 'profile.notifications.defaultChannels': 'Standard-Benachrichtigungskanรคle',
- 'profile.notifications.browser': 'In-App-Benachrichtigung',
- 'profile.notifications.email': 'E-Mail',
- 'profile.notifications.phone': 'SMS',
- 'profile.notifications.telegramBotToken': 'Telegram Bot Token',
- 'profile.notifications.telegramBotTokenPlaceholder': 'Geben Sie Ihren Telegram Bot Token ein',
- 'profile.notifications.telegramBotTokenHint': 'Erstellen Sie einen Bot รผber @BotFather um den Token zu erhalten',
- 'profile.notifications.telegramChatId': 'Telegram Chat ID',
- 'profile.notifications.telegramPlaceholder': 'Geben Sie Ihre Telegram Chat ID ein (z.B. 123456789)',
- 'profile.notifications.telegramHint': 'Senden Sie /start an @userinfobot um Ihre Chat ID zu erhalten',
- 'profile.notifications.notifyEmail': 'Benachrichtigungs-E-Mail',
- 'profile.notifications.emailPlaceholder': 'E-Mail-Adresse fรผr Benachrichtigungen',
- 'profile.notifications.emailHint': 'Verwendet standardmรครig die Konto-E-Mail, Sie kรถnnen eine andere festlegen',
- 'profile.notifications.phonePlaceholder': 'Telefonnummer eingeben (z.B. +49151234567)',
- 'profile.notifications.phoneHint': 'Administrator muss Twilio-Dienst konfigurieren',
- 'profile.notifications.discordWebhook': 'Discord Webhook',
- 'profile.notifications.discordPlaceholder': 'https://discord.com/api/webhooks/...',
- 'profile.notifications.discordHint': 'Erstellen Sie einen Webhook in den Discord-Servereinstellungen',
- 'profile.notifications.webhookUrl': 'Webhook URL',
- 'profile.notifications.webhookPlaceholder': 'https://your-server.com/webhook',
- 'profile.notifications.webhookHint': 'Benutzerdefinierte Webhook-URL, Benachrichtigungen per POST JSON',
- 'profile.notifications.webhookToken': 'Webhook Token (Optional)',
- 'profile.notifications.webhookTokenPlaceholder': 'Bearer Token zur Anfrage-Authentifizierung',
- 'profile.notifications.webhookTokenHint': 'Wird als Authorization: Bearer Token an Webhook gesendet',
- 'profile.notifications.testBtn': 'Testbenachrichtigung senden',
- 'profile.notifications.saveSuccess': 'Benachrichtigungseinstellungen gespeichert',
- 'profile.notifications.selectChannel': 'Bitte wรคhlen Sie mindestens einen Benachrichtigungskanal',
- 'profile.notifications.fillTelegramToken': 'Bitte Telegram Bot Token eingeben',
- 'profile.notifications.fillTelegram': 'Bitte Telegram Chat ID eingeben',
- 'profile.notifications.fillEmail': 'Bitte Benachrichtigungs-E-Mail eingeben',
- 'profile.notifications.testSent': 'Testbenachrichtigung gesendet, bitte Benachrichtigungskanรคle รผberprรผfen'
-}
-
-export default {
- ...components,
- ...locale
-}
diff --git a/quantdinger_vue/src/locales/lang/en-US.js b/quantdinger_vue/src/locales/lang/en-US.js
deleted file mode 100644
index 98fae48..0000000
--- a/quantdinger_vue/src/locales/lang/en-US.js
+++ /dev/null
@@ -1,3159 +0,0 @@
-import antdEnUS from 'ant-design-vue/es/locale-provider/en_US'
-import momentEU from 'moment/locale/eu'
-
-const components = {
- antLocale: antdEnUS,
- momentName: 'eu',
- momentLocale: momentEU
-}
-
-const locale = {
- // Common
- 'common.confirm': 'Confirm',
- 'common.cancel': 'Cancel',
- 'common.save': 'Save',
- 'common.delete': 'Delete',
- 'common.edit': 'Edit',
- 'common.add': 'Add',
- 'common.close': 'Close',
- 'common.ok': 'OK',
- 'common.loading': 'Loading...',
- 'common.noData': 'No data',
- 'submit': 'Submit',
- 'save': 'Save',
- 'submit.ok': 'Submit successfully',
- 'save.ok': 'Saved successfully',
- 'menu.welcome': 'Welcome',
- 'menu.home': 'Home',
- 'menu.dashboard': 'Dashboard',
- 'menu.dashboard.analysis': 'AI Analysis',
- 'menu.dashboard.aiAssetAnalysis': 'AI Asset Analysis',
- 'menu.dashboard.aiQuant': 'AI Quant',
- 'menu.dashboard.indicator': 'Indicator Analysis',
- 'menu.dashboard.community': 'Indicator Market',
- 'menu.dashboard.tradingAssistant': 'Trading Assistant',
- 'menu.dashboard.portfolio': 'Portfolio',
- 'menu.dashboard.globalMarket': 'Global Market',
- 'menu.settings': 'Settings',
- 'menu.dashboard.aiTradingAssistant': 'AI Trading Assistant',
- 'menu.dashboard.signalRobot': 'Signal Robot',
- 'menu.dashboard.monitor': 'Monitor',
- 'menu.dashboard.workplace': 'Workplace',
- 'aiAssetAnalysis.title': 'AI Asset Analysis',
- 'aiAssetAnalysis.subtitle': 'Unify portfolio monitoring, instant analysis, and scheduled tasks into one smooth workflow.',
- 'aiAssetAnalysis.actions.quickAnalysis': 'Start Analysis Now',
- 'aiAssetAnalysis.actions.monitorTasks': 'Manage Monitor Tasks',
- 'aiAssetAnalysis.actions.openStandalone': 'Open Standalone Page',
- 'aiAssetAnalysis.quickBar.title': 'Quick Analyze',
- 'aiAssetAnalysis.quickBar.placeholder': 'Select a symbol from asset pool',
- 'aiAssetAnalysis.quickBar.useInQuick': 'Use in Instant Analysis',
- 'aiAssetAnalysis.quickBar.runNow': 'Analyze Now',
- 'aiAssetAnalysis.history.title': 'Recent Analysis',
- 'aiAssetAnalysis.history.empty': 'No analysis history yet',
- 'aiAssetAnalysis.actions.enterQuick': 'Go to Instant Analysis',
- 'aiAssetAnalysis.actions.enterMonitor': 'Go to Asset Pool & Tasks',
- 'aiAssetAnalysis.flow.poolTitle': 'Build Asset Pool',
- 'aiAssetAnalysis.flow.poolDesc': 'Add positions and watch targets first to build one unified analysis pool.',
- 'aiAssetAnalysis.flow.poolAction': 'Manage Asset Pool',
- 'aiAssetAnalysis.flow.quickTitle': 'Instant Analysis',
- 'aiAssetAnalysis.flow.quickDesc': 'Run AI analysis for any symbol in one click and get suggestions quickly.',
- 'aiAssetAnalysis.flow.quickAction': 'Run Analysis',
- 'aiAssetAnalysis.flow.autoTitle': 'Scheduled Monitoring',
- 'aiAssetAnalysis.flow.autoDesc': 'Set recurring AI analysis tasks and deliver reports through notification channels.',
- 'aiAssetAnalysis.flow.autoAction': 'Configure Tasks',
- 'aiAssetAnalysis.tabs.quick': 'Instant Analysis',
- 'aiAssetAnalysis.tabs.monitor': 'Asset Pool & Scheduled Tasks',
- 'aiAssetAnalysis.tabLead.quick': 'Best for ad-hoc decisions: select a symbol and analyze immediately.',
- 'aiAssetAnalysis.tabLead.monitor': 'Best for continuous tracking: maintain positions and set monitor ranges/frequency.',
- // AI Asset Analysis - Performance Stats
- 'aiAssetAnalysis.stats.totalAnalyses': 'Total Analyses',
- 'aiAssetAnalysis.stats.accuracy': 'Accuracy',
- 'aiAssetAnalysis.stats.avgReturn': 'Avg Return',
- 'aiAssetAnalysis.stats.satisfaction': 'Satisfaction',
- 'aiAssetAnalysis.stats.decisions': 'Decision Dist.',
- // AI Asset Analysis - Trading Opportunities
- 'aiAssetAnalysis.opportunities.title': 'AI Opportunity Radar',
- 'aiAssetAnalysis.opportunities.empty': 'No opportunities found',
- 'aiAssetAnalysis.opportunities.analyze': 'Analyze',
- 'aiAssetAnalysis.opportunities.updateHint': 'Updates hourly',
- 'aiAssetAnalysis.opportunities.signal.overbought': 'Overbought',
- 'aiAssetAnalysis.opportunities.signal.oversold': 'Oversold',
- 'aiAssetAnalysis.opportunities.signal.bullish_momentum': 'Bullish',
- 'aiAssetAnalysis.opportunities.signal.bearish_momentum': 'Bearish',
- 'aiAssetAnalysis.opportunities.market.Crypto': '๐ช Crypto',
- 'aiAssetAnalysis.opportunities.market.USStock': '๐ US Stock',
- 'aiAssetAnalysis.opportunities.market.Forex': '๐ฑ Forex',
- 'aiAssetAnalysis.opportunities.reason.crypto.overbought': '24h +{change}%, 7d +{change7d}%, overbought risk',
- 'aiAssetAnalysis.opportunities.reason.crypto.bullish_momentum': '24h +{change}%, strong bullish momentum',
- 'aiAssetAnalysis.opportunities.reason.crypto.oversold': '24h -{change}%, possible oversold bounce',
- 'aiAssetAnalysis.opportunities.reason.crypto.bearish_momentum': '24h -{change}%, clear bearish trend',
- 'aiAssetAnalysis.opportunities.reason.usstock.overbought': 'Day +{change}%, large gain, watch for pullback',
- 'aiAssetAnalysis.opportunities.reason.usstock.bullish_momentum': 'Day +{change}%, strong bullish momentum',
- 'aiAssetAnalysis.opportunities.reason.usstock.oversold': 'Day -{change}%, possible oversold bounce',
- 'aiAssetAnalysis.opportunities.reason.usstock.bearish_momentum': 'Day -{change}%, clear bearish trend',
- 'aiAssetAnalysis.opportunities.reason.forex.overbought': 'Day +{change}%, volatile, watch for reversal',
- 'aiAssetAnalysis.opportunities.reason.forex.bullish_momentum': 'Day +{change}%, bullish momentum',
- 'aiAssetAnalysis.opportunities.reason.forex.oversold': 'Day -{change}%, volatile, possible bounce',
- 'aiAssetAnalysis.opportunities.reason.forex.bearish_momentum': 'Day -{change}%, clear bearish trend',
- // AI Asset Analysis - Portfolio Checkup
- 'aiAssetAnalysis.checkup.title': 'Portfolio Checkup',
- 'aiAssetAnalysis.checkup.btn': 'Checkup',
- 'aiAssetAnalysis.checkup.desc': 'Run AI analysis on all positions in your portfolio to quickly understand the current status and get recommendations for each asset.',
- 'aiAssetAnalysis.checkup.start': 'Start Checkup',
- 'aiAssetAnalysis.checkup.progress': 'Analyzing {current}/{total}...',
- 'aiAssetAnalysis.checkup.noPositions': 'No positions in your portfolio. Please add assets first.',
- 'aiAssetAnalysis.checkup.complete': 'Checkup Complete',
- 'aiAssetAnalysis.checkup.failed': 'Failed',
- 'aiAssetAnalysis.checkup.rerun': 'Run Again',
- // AI Asset Analysis - Global Search
- 'aiAssetAnalysis.search.hint': 'Search',
- 'aiAssetAnalysis.search.placeholder': 'Search any symbol... (Ctrl+K)',
- 'aiAssetAnalysis.search.noResults': 'No results found. Try a different keyword.',
- 'menu.form': 'Form',
- 'menu.form.basic-form': 'Basic Form',
- 'menu.form.step-form': 'Step Form',
- 'menu.form.step-form.info': 'Step Form(write transfer information)',
- 'menu.form.step-form.confirm': 'Step Form(confirm transfer information)',
- 'menu.form.step-form.result': 'Step Form(finished)',
- 'menu.form.advanced-form': 'Advanced Form',
- 'menu.list': 'List',
- 'menu.list.table-list': 'Search Table',
- 'menu.list.basic-list': 'Basic List',
- 'menu.list.card-list': 'Card List',
- 'menu.list.search-list': 'Search List',
- 'menu.list.search-list.articles': 'Search List(articles)',
- 'menu.list.search-list.projects': 'Search List(projects)',
- 'menu.list.search-list.applications': 'Search List(applications)',
- 'menu.profile': 'Profile',
- 'menu.profile.basic': 'Basic Profile',
- 'menu.profile.advanced': 'Advanced Profile',
- 'menu.result': 'Result',
- 'menu.result.success': 'Success',
- 'menu.result.fail': 'Fail',
- 'menu.exception': 'Exception',
- 'menu.exception.not-permission': '403',
- 'menu.exception.not-find': '404',
- 'menu.exception.server-error': '500',
- 'menu.exception.trigger': 'Trigger',
- 'menu.account': 'Account',
- 'menu.account.center': 'Account Center',
- 'menu.account.settings': 'Account Settings',
- 'menu.account.trigger': 'Trigger Error',
- 'menu.account.logout': 'Logout',
- 'menu.wallet': 'My Wallet',
- 'menu.docs': 'Documentation',
- 'menu.docs.detail': 'Doc Detail',
- 'menu.header.refreshPage': 'Refresh Page',
- 'menu.invite.friends': 'Invite Friends',
- 'app.setting.pagestyle': 'Page Style Setting',
- 'app.setting.pagestyle.light': 'Light Menu Style',
- 'app.setting.pagestyle.dark': 'Dark Menu Style',
- 'app.setting.pagestyle.realdark': 'RealDark style',
- 'app.setting.themecolor': 'Theme Color',
- 'app.setting.navigationmode': 'Navigation Mode',
- 'app.setting.sidemenu.nav': 'Sidebar Navigation',
- 'app.setting.topmenu.nav': 'Top Navigation',
- 'app.setting.content-width': 'Content Width',
- 'app.setting.content-width.tooltip': 'This setting is only effective for [Top Navigation]',
- 'app.setting.content-width.fixed': 'Fixed',
- 'app.setting.content-width.fluid': 'Fluid',
- 'app.setting.fixedheader': 'Fixed Header',
- 'app.setting.fixedheader.tooltip': 'Configurable when Header is fixed',
- 'app.setting.autoHideHeader': 'Hide Header on Scroll',
- 'app.setting.fixedsidebar': 'Fixed Sidebar Menu',
- 'app.setting.sidemenu': 'Side Menu Layout',
- 'app.setting.topmenu': 'Top Menu Layout',
- 'app.setting.othersettings': 'Other Settings',
- 'app.setting.weakmode': 'Weak Mode',
- 'app.setting.multitab': 'Multi-Tab Mode',
- 'app.setting.copy': 'Copy Setting',
- 'app.setting.loading': 'Loading theme',
- 'app.setting.copyinfo': 'copy success๏ผplease replace defaultSettings in src/config/defaultSettings.js',
- 'app.setting.copy.success': 'Copy Success',
- 'app.setting.copy.fail': 'Copy Failed',
- 'app.setting.theme.switching': 'Switching theme...',
- 'app.setting.production.hint': 'Setting panel shows in development environment only, please manually modify',
- 'app.setting.themecolor.daybreak': 'Daybreak Blue (Default)',
- 'app.setting.themecolor.dust': 'Dust Red',
- 'app.setting.themecolor.volcano': 'Volcano',
- 'app.setting.themecolor.sunset': 'Sunset Orange',
- 'app.setting.themecolor.cyan': 'Cyan',
- 'app.setting.themecolor.green': 'Polar Green',
- 'app.setting.themecolor.geekblue': 'Geek Blue',
- 'app.setting.themecolor.purple': 'Golden Purple',
- 'app.setting.tooltip': 'Page Settings',
-
- // Notification Center
- 'notice.title': 'Notifications',
- 'notice.empty': 'No notifications',
- 'notice.markAllRead': 'Mark all as read',
- 'notice.clear': 'Clear all',
- 'notice.close': 'Close',
- 'notice.justNow': 'Just now',
- 'notice.minutesAgo': 'minutes ago',
- 'notice.hoursAgo': 'hours ago',
- 'notice.daysAgo': 'days ago',
- 'notice.detailInfo': 'Details',
- 'notice.aiDecision': 'AI Decision',
- 'notice.confidence': 'Confidence',
- 'notice.reasoning': 'Reasoning',
- 'notice.symbol': 'Symbol',
- 'notice.currentPrice': 'Current Price',
- 'notice.triggerPrice': 'Trigger Price',
- 'notice.action': 'Action',
- 'notice.quantity': 'Quantity',
- 'notice.viewPortfolio': 'View Portfolio',
- 'notice.type.aiMonitor': 'AI Monitor',
- 'notice.type.priceAlert': 'Price Alert',
- 'notice.type.signal': 'Trade Signal',
- 'notice.type.buy': 'Buy Signal',
- 'notice.type.sell': 'Sell Signal',
- 'notice.type.hold': 'Hold Suggestion',
- 'notice.type.trade': 'Trade Execution',
- 'notice.type.notification': 'Notification',
-
- 'user.login.userName': 'userName',
- 'user.login.password': 'password',
- 'user.login.username.placeholder': 'Account: admin',
- 'user.login.password.placeholder': 'password: admin or ant.design',
- 'user.login.message-invalid-credentials': 'Login failed, please check your email and verification code',
- 'user.login.message-invalid-verification-code': 'Invalid verification code',
- 'user.login.tab-login-credentials': 'Credentials',
- 'user.login.tab-login-email': 'Email',
- 'user.login.tab-login-mobile': 'Mobile number',
- 'user.login.captcha.placeholder': 'Please enter captcha',
- 'user.login.mobile.placeholder': 'Mobile number',
- 'user.login.mobile.verification-code.placeholder': 'Verification code',
- 'user.login.email.placeholder': 'Please enter your email address',
- 'user.login.email.verification-code.placeholder': 'Please enter verification code',
- 'user.login.email.sending': 'Sending verification code...',
- 'user.login.email.send-success-title': 'Notice',
- 'user.login.email.send-success': 'Verification code sent successfully, please check your email',
- 'user.login.sms.send-success': 'Verification code sent successfully, please check your SMS',
- 'user.login.remember-me': 'Remember me',
- 'user.login.forgot-password': 'Forgot your password?',
- 'user.login.sign-in-with': 'Sign in with',
- 'user.login.signup': 'Sign up',
- 'user.login.login': 'Login',
- 'user.register.register': 'Register',
- 'user.register.email.placeholder': 'Email',
- 'user.register.password.placeholder': 'Password ',
- 'user.register.password.popover-message': 'Please enter at least 6 characters. Please do not use passwords that are easy to guess. ',
- 'user.register.confirm-password.placeholder': 'Confirm password',
- 'user.register.get-verification-code': 'Get code',
- 'user.register.sign-in': 'Already have an account?',
- 'user.register-result.msg': 'Account๏ผregistered at {email}',
- 'user.register-result.activation-email': 'The activation email has been sent to your email address and is valid for 24 hours. Please log in to the email in time and click on the link in the email to activate the account.',
- 'user.register-result.back-home': 'Back to home',
- 'user.register-result.view-mailbox': 'View mailbox',
- 'user.email.required': 'Please enter your email!',
- 'user.email.wrong-format': 'The email address is in the wrong format!',
- 'user.userName.required': 'Please enter account name or email address',
- 'user.password.required': 'Please enter your password!',
- 'user.password.twice.msg': 'The passwords entered twice do not match!',
- 'user.password.strength.msg': 'The password is not strong enough',
- 'user.password.strength.strong': 'Strength: strong',
- 'user.password.strength.medium': 'Strength: medium',
- 'user.password.strength.low': 'Strength: low',
- 'user.password.strength.short': 'Strength: too short',
- 'user.confirm-password.required': 'Please confirm your password!',
- 'user.phone-number.required': 'Please enter your phone number!',
- 'user.phone-number.wrong-format': 'Please enter a valid phone number',
- 'user.verification-code.required': 'Please enter the verification code!',
- 'user.captcha.required': 'Please enter captcha!',
- 'user.login.infos': 'QuantDinger is an AI multi-agent stock analysis tool that does not have securities investment consulting qualifications. All analysis results, scores, and reference opinions on the platform are automatically generated by AI based on historical data, and are only for learning, research, and technical exchanges, and do not constitute any investment advice or decision-making basis. Stock investment involves market risk, liquidity risk, policy risk and other risks, which may lead to losses of principal. Users should make independent decisions based on their risk tolerance capacity, and bear the consequences of any investment behavior and its results using this tool. Market risk, investment needs to be cautious.',
- 'user.login.tab-login-web3': 'Web3 Login',
- 'user.login.web3.tip': 'Sign in with your wallet via signature',
- 'user.login.web3.connect': 'Connect wallet and login',
- 'user.login.web3.no-wallet': 'No wallet detected',
- 'user.login.web3.no-address': 'Wallet address not found',
- 'user.login.web3.nonce-failed': 'Failed to get nonce',
- 'user.login.web3.verify-failed': 'Signature verification failed',
- 'user.login.web3.success': 'Login success',
- 'user.login.web3.failed': 'Wallet login failed',
- 'nav.no_wallet': 'No wallet detected',
- 'nav.copy': 'Copy',
- 'nav.copy_success': 'Copied',
- 'user.login.oauth.google': 'Sign in with Google',
- 'user.login.oauth.github': 'Sign in with GitHub',
- 'user.login.oauth.loading': 'Redirecting to authorization page...',
- 'user.login.oauth.failed': 'OAuth login failed',
- 'user.login.oauth.get-url-failed': 'Failed to get authorization URL',
- 'user.login.subtitle': 'driven quantitative insights for global markets',
- 'user.login.legal.title': 'Legal Disclaimer',
- 'user.login.legal.view': 'View Legal Disclaimer',
- 'user.login.legal.collapse': 'Hide Legal Disclaimer',
- 'user.login.legal.agree': 'I have read and agree to the Legal Disclaimer',
- 'user.login.legal.required': 'Please read and check the Legal Disclaimer first',
- 'user.login.legal.content': 'QuantDinger is an AI multi-agent stock analysis tool and does not provide investment advice. All analysis results, scores, and references are generated by AI based on historical data and are for learning, research, and technical exchange only. They do not constitute investment advice or a basis for decision-making. Stock investments involve market, liquidity, and policy risks, which may lead to loss of principal. Users should make independent decisions based on their risk tolerance and bear the consequences of any investment behavior and results using this tool.',
- 'user.login.privacy.title': 'Privacy Policy',
- 'user.login.privacy.view': 'View Privacy Policy',
- 'user.login.privacy.collapse': 'Hide Privacy Policy',
- 'user.login.privacy.content': 'We value your privacy and data protection. (1) Scope of collection: We only collect information necessary to provide the service (e.g., email, mobile number, country code, Web3 wallet address) and limited logs/device data. (2) Purpose of use: Account login and security verification, feature provisioning, troubleshooting, and compliance requirements. (3) Storage & security: Data is encrypted and access-controlled to prevent unauthorized access, disclosure, or loss. (4) Sharing & third parties: We do not share personal data with third parties except as required by law or to deliver the service; where third-party services are involved (e.g., wallets, SMS providers), processing is limited to the minimum scope required. (5) Cookies/local storage: Used for session and login state (e.g., tokens, PHPSESSID). You may clear or restrict them in your browser. (6) Your rights: You may exercise rights of access, correction, deletion, and consent withdrawal as permitted by law. (7) Changes & notices: We will provide prominent notice for updates. Continued use indicates that you have read and agreed to the updated terms. If you do not agree, please stop using the service and contact us.',
-
- // Login page additions
- 'user.login.username': 'Username',
- 'user.login.usernameRequired': 'Please enter username',
- 'user.login.passwordRequired': 'Please enter password',
- 'user.login.tab': 'Login',
- 'user.login.submit': 'Login',
- 'user.login.register': 'Create Account',
- 'user.login.forgotPassword': 'Forgot Password?',
- 'user.login.orLoginWith': 'Or login with',
- 'user.login.methodPassword': 'Password',
- 'user.login.methodCode': 'Email Code',
- 'user.login.email': 'Email',
- 'user.login.emailRequired': 'Please enter email',
- 'user.login.emailInvalid': 'Invalid email format',
- 'user.login.verificationCode': 'Verification Code',
- 'user.login.codeRequired': 'Please enter verification code',
- 'user.login.sendCode': 'Send',
- 'user.login.codeSent': 'Verification code sent',
- 'user.login.codeLoginHint': 'New users will be auto-registered',
- 'user.login.welcomeNew': 'Welcome!',
- 'user.login.accountCreated': 'Your account has been created',
-
- // OAuth
- 'user.oauth.processing': 'Processing login...',
- 'user.oauth.error.missing_params': 'Missing required parameters',
- 'user.oauth.error.invalid_state': 'Invalid state parameter',
- 'user.oauth.error.user_creation_failed': 'Failed to create user',
- 'user.oauth.error.server_error': 'Server error',
-
- // Register page
- 'user.register.tab': 'Register',
- 'user.register.title': 'Create Account',
- 'user.register.email': 'Email',
- 'user.register.emailRequired': 'Please enter email',
- 'user.register.emailInvalid': 'Invalid email format',
- 'user.register.verificationCode': 'Verification Code',
- 'user.register.codeRequired': 'Please enter verification code',
- 'user.register.sendCode': 'Send Code',
- 'user.register.codeSent': 'Verification code sent',
- 'user.register.username': 'Username',
- 'user.register.usernameRequired': 'Please enter username',
- 'user.register.usernameLength': 'Username must be 3-30 characters',
- 'user.register.usernamePattern': 'Start with letter, letters/numbers/underscore only',
- 'user.register.password': 'Password',
- 'user.register.passwordRequired': 'Please enter password',
- 'user.register.confirmPassword': 'Confirm Password',
- 'user.register.confirmPasswordRequired': 'Please confirm password',
- 'user.register.passwordMismatch': 'Passwords do not match',
- 'user.register.submit': 'Create Account',
- 'user.register.haveAccount': 'Already have an account?',
- 'user.register.login': 'Login',
- 'user.register.success': 'Registration successful',
- 'user.register.pleaseLogin': 'Please login with your new account',
- 'user.register.pwdMinLength': 'At least 8 characters',
- 'user.register.pwdUppercase': 'At least one uppercase letter',
- 'user.register.pwdLowercase': 'At least one lowercase letter',
- 'user.register.pwdNumber': 'At least one number',
-
- // Reset password page
- 'user.resetPassword.title': 'Reset Password',
- 'user.resetPassword.email': 'Email',
- 'user.resetPassword.emailRequired': 'Please enter email',
- 'user.resetPassword.emailInvalid': 'Invalid email format',
- 'user.resetPassword.verificationCode': 'Verification Code',
- 'user.resetPassword.codeRequired': 'Please enter verification code',
- 'user.resetPassword.sendCode': 'Send Code',
- 'user.resetPassword.codeSent': 'Verification code sent',
- 'user.resetPassword.next': 'Next',
- 'user.resetPassword.backToLogin': 'Back to Login',
- 'user.resetPassword.resettingFor': 'Resetting password for',
- 'user.resetPassword.newPassword': 'New Password',
- 'user.resetPassword.passwordRequired': 'Please enter new password',
- 'user.resetPassword.confirmPassword': 'Confirm New Password',
- 'user.resetPassword.confirmPasswordRequired': 'Please confirm password',
- 'user.resetPassword.submit': 'Reset Password',
- 'user.resetPassword.back': 'Back',
- 'user.resetPassword.successTitle': 'Password Reset Successful',
- 'user.resetPassword.successSubtitle': 'You can now login with your new password',
- 'user.resetPassword.goToLogin': 'Go to Login',
-
- // Security
- 'user.security.retry': 'Retry',
-
- // Profile - change password
- 'profile.passwordHintNew': 'For security, email verification is required to change password. Password must be at least 8 characters with uppercase, lowercase, and number.',
- 'profile.verificationCode': 'Verification Code',
- 'profile.codeRequired': 'Please enter verification code',
- 'profile.codePlaceholder': 'Enter verification code',
- 'profile.sendCode': 'Send Code',
- 'profile.codeSent': 'Verification code sent',
- 'profile.codeWillSendTo': 'Code will be sent to',
- 'profile.noEmailWarning': 'Please set your email first in Basic Info tab',
-
- 'account.basicInfo': 'Basic Information',
- 'account.id': 'User ID',
- 'account.username': 'Username',
- 'account.nickname': 'Nickname',
- 'account.email': 'Email',
- 'account.mobile': 'Mobile',
- 'account.web3address': 'Wallet Address',
- 'account.pid': 'Referrer ID',
- 'account.level': 'Level',
- 'account.money': 'Balance',
- 'account.qdtBalance': 'QDT Balance',
- 'account.score': 'Score',
- 'account.createtime': 'Registration Time',
- 'account.inviteLink': 'Invite Link',
- 'account.recharge': 'Recharge',
- 'account.rechargeTip': 'Please scan the QR code below with WeChat or Alipay to recharge',
- 'account.qrCodePlaceholder': 'QR Code Placeholder (Mock)',
- 'account.rechargeAmount': 'Recharge Amount',
- 'account.enterAmount': 'Please enter recharge amount',
- 'account.rechargeHint': 'Minimum recharge amount: 1 QDT',
- 'account.confirmRecharge': 'Confirm Recharge',
- 'account.enterValidAmount': 'Please enter a valid recharge amount',
- 'account.rechargeSuccess': 'Recharge successful! Recharged {amount} QDT',
- 'account.settings.menuMap.basic': 'Basic Settings',
- 'account.settings.menuMap.security': 'Security Settings',
- 'account.settings.menuMap.notification': 'New Message Notification',
- 'account.settings.menuMap.moneyLog': 'Transaction History',
- 'account.moneyLog.empty': 'No transaction history',
- 'account.moneyLog.total': 'Total {total} records',
- 'account.moneyLog.type.purchase': 'Purchase Indicator',
- 'account.moneyLog.type.recharge': 'Recharge',
- 'account.moneyLog.type.refund': 'Refund',
- 'account.moneyLog.type.reward': 'Reward',
- 'account.moneyLog.type.income': 'Indicator Income',
- 'account.moneyLog.type.commission': 'Platform Fee',
- 'wallet.balance': 'QDT Balance',
- 'wallet.recharge': 'Recharge',
- 'wallet.withdraw': 'Withdraw',
- 'wallet.filter': 'Filter',
- 'wallet.reset': 'Reset',
- 'wallet.totalRecharge': 'Total Recharge',
- 'wallet.totalWithdraw': 'Total Withdraw',
- 'wallet.totalIncome': 'Total Income',
- 'wallet.records': 'Trading Records & Transaction History',
- 'wallet.tradingRecords': 'Trading Records',
- 'wallet.moneyLog': 'Transaction History',
- 'wallet.rechargeTip': 'Please scan the QR code below with WeChat or Alipay to recharge',
- 'wallet.qrCodePlaceholder': 'QR Code Placeholder (Simulated)',
- 'wallet.rechargeAmount': 'Recharge Amount',
- 'wallet.enterAmount': 'Please enter recharge amount',
- 'wallet.rechargeHint': 'Minimum recharge amount: 1 QDT',
- 'wallet.confirmRecharge': 'Confirm Recharge',
- 'wallet.enterValidAmount': 'Please enter a valid recharge amount',
- 'wallet.rechargeSuccess': 'Recharge successful! Recharged {amount} QDT',
- 'wallet.rechargeFailed': 'Recharge failed',
- 'wallet.withdrawTip': 'Please enter withdrawal amount and address',
- 'wallet.withdrawAmount': 'Withdrawal Amount',
- 'wallet.enterWithdrawAmount': 'Please enter withdrawal amount',
- 'wallet.withdrawHint': 'Minimum withdrawal amount: 1 QDT',
- 'wallet.withdrawAddress': 'Withdrawal Address (Optional)',
- 'wallet.enterWithdrawAddress': 'Please enter withdrawal address',
- 'wallet.confirmWithdraw': 'Confirm Withdrawal',
- 'wallet.enterValidWithdrawAmount': 'Please enter a valid withdrawal amount',
- 'wallet.insufficientBalance': 'Insufficient balance',
- 'wallet.withdrawSuccess': 'Withdrawal successful! Withdrew {amount} QDT',
- 'wallet.withdrawFailed': 'Withdrawal failed',
- 'wallet.noTradingRecords': 'No trading records',
- 'wallet.noMoneyLog': 'No transaction history',
- 'wallet.loadTradingRecordsFailed': 'Failed to load trading records',
- 'wallet.loadMoneyLogFailed': 'Failed to load transaction history',
- 'wallet.moneyLogTotal': 'Total {total} records',
- 'wallet.moneyLogTypeTitle': 'Type',
- 'wallet.moneyLogType.all': 'All types',
- 'wallet.table.time': 'Time',
- 'wallet.table.type': 'Type',
- 'wallet.table.price': 'Price',
- 'wallet.table.amount': 'Amount',
- 'wallet.table.money': 'Amount',
- 'wallet.table.balance': 'Balance',
- 'wallet.table.memo': 'Memo',
- 'wallet.table.value': 'Value',
- 'wallet.table.profit': 'P/L',
- 'wallet.table.commission': 'Commission',
- 'wallet.table.total': 'Total {total} records',
- 'wallet.tradeType.buy': 'Buy',
- 'wallet.tradeType.sell': 'Sell',
- 'wallet.tradeType.liquidation': 'Liquidation',
- 'wallet.tradeType.openLong': 'Open Long',
- 'wallet.tradeType.addLong': 'Add Long',
- 'wallet.tradeType.closeLong': 'Close Long',
- 'wallet.tradeType.closeLongStop': 'Stop Loss Close Long',
- 'wallet.tradeType.closeLongProfit': 'Take Profit Close Long',
- 'wallet.tradeType.openShort': 'Open Short',
- 'wallet.tradeType.addShort': 'Add Short',
- 'wallet.tradeType.closeShort': 'Close Short',
- 'wallet.tradeType.closeShortStop': 'Stop Loss Close Short',
- 'wallet.tradeType.closeShortProfit': 'Take Profit Close Short',
- 'wallet.moneyLogType.purchase': 'Purchase Indicator',
- 'wallet.moneyLogType.recharge': 'Recharge',
- 'wallet.moneyLogType.withdraw': 'Withdraw',
- 'wallet.moneyLogType.refund': 'Refund',
- 'wallet.moneyLogType.reward': 'Reward',
- 'wallet.moneyLogType.income': 'Income',
- 'wallet.moneyLogType.commission': 'Commission',
- 'wallet.web3Address.required': 'Please fill in Web3 wallet address first',
- 'wallet.web3Address.requiredDescription': 'You need to bind your Web3 wallet address before recharging to receive deposits',
- 'wallet.web3Address.placeholder': 'Please enter your Web3 wallet address (starts with 0x)',
- 'wallet.web3Address.save': 'Save Wallet Address',
- 'wallet.web3Address.saveSuccess': 'Wallet address saved successfully',
- 'wallet.web3Address.saveFailed': 'Failed to save wallet address',
- 'wallet.web3Address.invalidFormat': 'Please enter a valid Web3 wallet address (Ethereum format: 42 characters starting with 0x, or TRC20 format: 34 characters starting with T)',
- 'wallet.selectCoin': 'Select Coin',
- 'wallet.selectChain': 'Select Chain',
- 'wallet.chain.eth': 'ETH(ERC20)',
- 'wallet.chain.trc20': 'TRC20',
- 'wallet.chain.bsc': 'BSC',
- 'wallet.targetQdtAmount': 'Target QDT Amount (Optional)',
- 'wallet.targetQdtAmount.placeholder': 'Enter the QDT amount you want to exchange, current QDT price: {price} USDT',
- 'wallet.targetQdtAmount.requiredUsdt': 'Required USDT: {amount}',
- 'wallet.rechargeAddress': 'Recharge Address',
- 'wallet.copyAddress': 'Copy',
- 'wallet.copySuccess': 'Copied successfully!',
- 'wallet.copyFailed': 'Copy failed, please copy manually',
- 'wallet.rechargeAddressHint': 'Please ensure you use {chain} chain to recharge {coin} to this address',
- 'wallet.qdtPrice.loading': 'Loading...',
- 'wallet.rechargeTip.new': 'Please select coin and chain, then scan the QR code below to recharge',
- 'wallet.exchangeRate': '1 QDT โ {rate} USDT',
- 'wallet.withdrawableAmount': 'Withdrawable Amount',
- 'wallet.totalBalance': 'Total Balance',
- 'wallet.insufficientWithdrawable': 'Insufficient withdrawable amount, current withdrawable: {amount} QDT',
- 'wallet.withdrawAddressRequired': 'Please enter withdrawal address',
- 'wallet.withdrawAddressHint': 'Please ensure the address is correct, withdrawal cannot be revoked',
- 'wallet.withdrawSubmitSuccess': 'Withdrawal application submitted successfully, please wait for review',
- 'menu.footer.contactUs': 'Contact Us',
- 'menu.footer.getSupport': 'Get Support',
- 'menu.footer.socialAccounts': 'Social Accounts',
- 'menu.footer.userAgreement': 'User Agreement',
- 'menu.footer.privacyPolicy': 'Privacy Policy',
- 'menu.footer.support': 'Support',
- 'menu.footer.featureRequest': 'Feature request',
- 'menu.footer.email': 'Email',
- 'menu.footer.liveChat': '24/7 live chat',
- 'dashboard.analysis.title': 'Multi-Dimensional Analysis',
- 'dashboard.analysis.subtitle': 'AI-Powered Comprehensive Financial Analysis Platform',
- 'dashboard.analysis.selectSymbol': 'Select or enter symbol code',
- 'dashboard.analysis.selectModel': 'Select Model',
- 'dashboard.analysis.startAnalysis': 'Start Analysis',
- 'dashboard.analysis.history': 'History',
- 'dashboard.analysis.tab.overview': 'Overview',
- 'dashboard.analysis.tab.fundamental': 'Fundamental',
- 'dashboard.analysis.tab.technical': 'Technical',
- 'dashboard.analysis.tab.news': 'News',
- 'dashboard.analysis.tab.sentiment': 'Sentiment',
- 'dashboard.analysis.tab.risk': 'Risk',
- 'dashboard.analysis.tab.debate': 'Debate',
- 'dashboard.analysis.tab.decision': 'Final Decision',
- 'dashboard.analysis.empty.selectSymbol': 'Select Symbol to Start Analysis',
- 'dashboard.analysis.empty.selectSymbolDesc': 'Select from watchlist or enter symbol code to get multi-dimensional AI analysis report',
- 'dashboard.analysis.empty.startAnalysis': 'Click "Start Analysis" button to perform multi-dimensional analysis',
- 'dashboard.analysis.empty.startAnalysisDesc': 'We will provide comprehensive analysis from multiple dimensions including fundamental, technical, news, sentiment and risk',
- 'dashboard.analysis.empty.noData': 'No {type} analysis data available, please perform comprehensive analysis first',
- 'dashboard.analysis.empty.noWatchlist': 'No watchlist items',
- 'dashboard.analysis.empty.noHistory': 'No history records',
- 'dashboard.analysis.empty.watchlistHint': 'No watchlist, please',
- 'dashboard.analysis.empty.noDebateData': 'No debate data available',
- 'dashboard.analysis.empty.noDecisionData': 'No decision data available',
- 'dashboard.analysis.empty.selectAgent': 'Please select an Agent to view analysis results',
- 'dashboard.analysis.loading.analyzing': 'Analyzing, please wait...',
- 'dashboard.analysis.loading.fundamental': 'Analyzing fundamental data...',
- 'dashboard.analysis.loading.technical': 'Analyzing technical indicators...',
- 'dashboard.analysis.loading.news': 'Analyzing news data...',
- 'dashboard.analysis.loading.sentiment': 'Analyzing market sentiment...',
- 'dashboard.analysis.loading.risk': 'Assessing risks...',
- 'dashboard.analysis.loading.debate': 'Debating...',
- 'dashboard.analysis.loading.decision': 'Generating final decision...',
- 'dashboard.analysis.score.overall': 'Overall Score',
- 'dashboard.analysis.score.recommendation': 'Recommendation',
- 'dashboard.analysis.score.confidence': 'Confidence',
- 'dashboard.analysis.dimension.fundamental': 'Fundamental',
- 'dashboard.analysis.dimension.technical': 'Technical',
- 'dashboard.analysis.dimension.news': 'News',
- 'dashboard.analysis.dimension.sentiment': 'Sentiment',
- 'dashboard.analysis.dimension.risk': 'Risk',
- 'dashboard.analysis.card.dimensionScores': 'Dimension Scores',
- 'dashboard.analysis.card.overviewReport': 'Overview Report',
- 'dashboard.analysis.card.financialMetrics': 'Financial Metrics',
- 'dashboard.analysis.card.fundamentalReport': 'Fundamental Analysis Report',
- 'dashboard.analysis.card.technicalIndicators': 'Technical Indicators',
- 'dashboard.analysis.card.technicalReport': 'Technical Analysis Report',
- 'dashboard.analysis.card.newsList': 'Related News',
- 'dashboard.analysis.card.newsReport': 'News Analysis Report',
- 'dashboard.analysis.card.sentimentIndicators': 'Sentiment Indicators',
- 'dashboard.analysis.card.sentimentReport': 'Sentiment Analysis Report',
- 'dashboard.analysis.card.riskMetrics': 'Risk Metrics',
- 'dashboard.analysis.card.riskReport': 'Risk Assessment Report',
- 'dashboard.analysis.card.bullView': 'Bullish View (Bull)',
- 'dashboard.analysis.card.bearView': 'Bearish View (Bear)',
- 'dashboard.analysis.card.researchConclusion': 'Researcher Conclusion',
- 'dashboard.analysis.card.traderPlan': 'Trader Plan',
- 'dashboard.analysis.card.riskDebate': 'Risk Committee Debate',
- 'dashboard.analysis.card.finalDecision': 'Final Decision',
- 'dashboard.analysis.card.tradePlanDetail': 'Trading Plan Details',
- 'dashboard.analysis.tradingPlan.entry_price': 'Entry Price',
- 'dashboard.analysis.tradingPlan.position_size': 'Position Size',
- 'dashboard.analysis.tradingPlan.stop_loss': 'Stop Loss',
- 'dashboard.analysis.tradingPlan.take_profit': 'Take Profit',
- 'dashboard.analysis.label.confidence': 'Confidence',
- 'dashboard.analysis.label.keyPoints': 'Key Points',
- 'dashboard.analysis.label.riskWarning': 'Risk Warning',
- 'dashboard.analysis.risk.risky': 'Aggressive View (Risky)',
- 'dashboard.analysis.risk.neutral': 'Neutral View (Neutral)',
- 'dashboard.analysis.risk.safe': 'Conservative View (Safe)',
- 'dashboard.analysis.risk.conclusion': 'Conclusion',
- 'dashboard.analysis.feature.fundamental': 'Fundamental Analysis',
- 'dashboard.analysis.feature.technical': 'Technical Analysis',
- 'dashboard.analysis.feature.news': 'News Analysis',
- 'dashboard.analysis.feature.sentiment': 'Sentiment Analysis',
- 'dashboard.analysis.feature.risk': 'Risk Assessment',
- 'dashboard.analysis.watchlist.title': 'My Watchlist',
- 'dashboard.analysis.watchlist.add': 'Add',
- 'dashboard.analysis.watchlist.addStock': 'Add Stock',
- 'dashboard.analysis.modal.addStock.title': 'Add to Watchlist',
- 'dashboard.analysis.modal.addStock.confirm': 'Confirm',
- 'dashboard.analysis.modal.addStock.cancel': 'Cancel',
- 'dashboard.analysis.modal.addStock.market': 'Market Type',
- 'dashboard.analysis.modal.addStock.marketPlaceholder': 'Please select market',
- 'dashboard.analysis.modal.addStock.marketRequired': 'Please select market type',
- 'dashboard.analysis.modal.addStock.symbol': 'Symbol',
- 'dashboard.analysis.modal.addStock.symbolPlaceholder': 'e.g.: AAPL, TSLA, GOOGL, 000001, BTC',
- 'dashboard.analysis.modal.addStock.symbolRequired': 'Please enter symbol code',
- 'dashboard.analysis.modal.addStock.searchPlaceholder': 'Search symbol code or name',
- 'dashboard.analysis.modal.addStock.searchOrInputPlaceholder': 'Search or enter symbol code (e.g.: AAPL, BTC/USDT, EUR/USD)',
- 'dashboard.analysis.modal.addStock.searchOrInputHint': 'Search in database or enter code directly (name will be fetched automatically)',
- 'dashboard.analysis.modal.addStock.search': 'Search',
- 'dashboard.analysis.modal.addStock.searchResults': 'Search Results',
- 'dashboard.analysis.modal.addStock.hotSymbols': 'Hot Symbols',
- 'dashboard.analysis.modal.addStock.noHotSymbols': 'No hot symbols available',
- 'dashboard.analysis.modal.addStock.selectedSymbol': 'Selected Symbol',
- 'dashboard.analysis.modal.addStock.pleaseSelectSymbol': 'Please select a symbol first',
- 'dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol': 'Please select a symbol or enter symbol code',
- 'dashboard.analysis.modal.addStock.pleaseEnterSymbol': 'Please enter symbol code',
- 'dashboard.analysis.modal.addStock.pleaseSelectMarket': 'Please select market type first',
- 'dashboard.analysis.modal.addStock.searchFailed': 'Search failed, please try again later',
- 'dashboard.analysis.modal.addStock.noSearchResults': 'No matching symbols found',
- 'dashboard.analysis.modal.addStock.willAutoFetchName': 'Name will be fetched automatically',
- 'dashboard.analysis.modal.addStock.addDirectly': 'Add Directly',
- 'dashboard.analysis.modal.addStock.nameWillBeFetched': 'Name will be fetched automatically when adding',
- 'dashboard.analysis.market.USStock': 'US Stock',
- 'dashboard.analysis.market.Crypto': 'Cryptocurrency',
- 'dashboard.analysis.market.Forex': 'Forex',
- 'dashboard.analysis.market.Futures': 'Futures',
- 'dashboard.analysis.modal.history.title': 'Analysis History',
- 'dashboard.analysis.modal.history.viewResult': 'View Result',
- 'dashboard.analysis.modal.history.completeTime': 'Complete Time',
- 'dashboard.analysis.modal.history.error': 'Error',
- 'dashboard.analysis.status.pending': 'Pending',
- 'dashboard.analysis.status.processing': 'Processing',
- 'dashboard.analysis.status.completed': 'Completed',
- 'dashboard.analysis.status.failed': 'Failed',
- 'dashboard.analysis.message.selectSymbol': 'Please select a symbol first',
- 'dashboard.analysis.message.taskCreated': 'Analysis task created, executing in background...',
- 'dashboard.analysis.message.analysisComplete': 'Analysis Complete',
- 'dashboard.analysis.message.analysisCompleteCache': 'Analysis Complete (Using Cache)',
- 'dashboard.analysis.message.analysisFailed': 'Analysis failed, please try again later',
- 'dashboard.analysis.message.addStockSuccess': 'Added successfully',
- 'dashboard.analysis.message.addStockFailed': 'Failed to add',
- 'dashboard.analysis.message.removeStockSuccess': 'Removed successfully',
- 'dashboard.analysis.message.removeStockFailed': 'Failed to remove',
- 'dashboard.analysis.message.resumingAnalysis': 'Resuming analysis task...',
- 'dashboard.analysis.message.deleteSuccess': 'Deleted successfully',
- 'dashboard.analysis.message.deleteFailed': 'Failed to delete',
- 'dashboard.analysis.modal.history.delete': 'Delete',
- 'dashboard.analysis.modal.history.deleteConfirm': 'Are you sure you want to delete this analysis record?',
- 'dashboard.analysis.test': 'Gongzhuan No.{no} shop',
- 'dashboard.analysis.introduce': 'Introduce',
- 'dashboard.analysis.total-sales': 'Total Sales',
- 'dashboard.analysis.day-sales': 'Daily Sales',
- 'dashboard.analysis.visits': 'Visits',
- 'dashboard.analysis.visits-trend': 'Visits Trend',
- 'dashboard.analysis.visits-ranking': 'Visits Ranking',
- 'dashboard.analysis.day-visits': 'Daily Visits',
- 'dashboard.analysis.week': 'WoW Change',
- 'dashboard.analysis.day': 'DoD Change',
- 'dashboard.analysis.payments': 'Payments',
- 'dashboard.analysis.conversion-rate': 'Conversion Rate',
- 'dashboard.analysis.operational-effect': 'Operational Effect',
- 'dashboard.analysis.sales-trend': 'Stores Sales Trend',
- 'dashboard.analysis.sales-ranking': 'Sales Ranking',
- 'dashboard.analysis.all-year': 'All Year',
- 'dashboard.analysis.all-month': 'All Month',
- 'dashboard.analysis.all-week': 'All Week',
- 'dashboard.analysis.all-day': 'All day',
- 'dashboard.analysis.search-users': 'Search Users',
- 'dashboard.analysis.per-capita-search': 'Per Capita Search',
- 'dashboard.analysis.online-top-search': 'Online Top Search',
- 'dashboard.analysis.the-proportion-of-sales': 'The Proportion Of Sales',
- 'dashboard.analysis.dropdown-option-one': 'Operation one',
- 'dashboard.analysis.dropdown-option-two': 'Operation two',
- 'dashboard.analysis.channel.all': 'ALL',
- 'dashboard.analysis.channel.online': 'Online',
- 'dashboard.analysis.channel.stores': 'Stores',
- 'dashboard.analysis.sales': 'Sales',
- 'dashboard.analysis.traffic': 'Traffic',
- 'dashboard.analysis.table.rank': 'Rank',
- 'dashboard.analysis.table.search-keyword': 'Keyword',
- 'dashboard.analysis.table.users': 'Users',
- 'dashboard.analysis.table.weekly-range': 'Weekly Range',
- 'dashboard.indicator.selectSymbol': 'Select or enter symbol code',
- 'dashboard.indicator.emptyWatchlistHint': 'No watchlist, please add first',
- 'dashboard.indicator.hint.selectSymbol': 'Please select a symbol to start analysis',
- 'dashboard.indicator.hint.selectSymbolDesc': 'Select or enter stock code in the search box above to view K-line chart and technical indicators',
- 'dashboard.indicator.retry': 'Retry',
- 'dashboard.indicator.panel.title': 'Technical Indicators',
- 'dashboard.indicator.panel.realtimeOn': 'Turn off real-time update',
- 'dashboard.indicator.panel.realtimeOff': 'Turn on real-time update',
- 'dashboard.indicator.panel.themeLight': 'Switch to dark theme',
- 'dashboard.indicator.panel.themeDark': 'Switch to light theme',
- 'dashboard.indicator.section.enabled': 'Enabled',
- 'dashboard.indicator.section.added': 'My Added Indicators',
- 'dashboard.indicator.section.custom': 'My Created Indicators',
- 'dashboard.indicator.section.bought': 'Purchased Indicators',
- 'dashboard.indicator.section.myCreated': 'My Created Indicators',
- 'dashboard.indicator.section.purchased': 'Purchased Indicators',
- 'dashboard.indicator.empty': 'No indicators, please add or create indicators first',
- 'dashboard.indicator.emptyPurchased': 'No purchased indicators, check out the market',
- 'dashboard.indicator.buy': 'Buy Indicators',
- 'dashboard.indicator.action.start': 'Start',
- 'dashboard.indicator.action.stop': 'Stop',
- 'dashboard.indicator.action.edit': 'Edit',
- 'dashboard.indicator.action.delete': 'Delete',
- 'dashboard.indicator.action.backtest': 'Backtest',
- 'dashboard.indicator.action.publish': 'Publish to Community',
- 'dashboard.indicator.action.unpublish': 'Published (Click to Manage)',
- 'dashboard.indicator.status.normal': 'Active',
- 'dashboard.indicator.status.normalPermanent': 'Active (Permanent)',
- 'dashboard.indicator.status.expired': 'Expired',
- 'dashboard.indicator.expiry.permanent': 'Permanent',
- 'dashboard.indicator.expiry.noExpiry': 'No expiration',
- 'dashboard.indicator.expiry.expired': 'Expired: {date}',
- 'dashboard.indicator.expiry.expiresOn': 'Expires: {date}',
- 'dashboard.indicator.delete.confirmTitle': 'Confirm Deletion',
- 'dashboard.indicator.delete.confirmContent': 'Are you sure you want to delete indicator "{name}"? This action cannot be undone.',
- 'dashboard.indicator.delete.confirmOk': 'Delete',
- 'dashboard.indicator.delete.confirmCancel': 'Cancel',
- 'dashboard.indicator.delete.success': 'Deleted successfully',
- 'dashboard.indicator.delete.failed': 'Failed to delete',
- 'dashboard.indicator.save.success': 'Saved successfully',
- 'dashboard.indicator.save.failed': 'Failed to save',
- 'dashboard.indicator.publish.title': 'Publish to Community',
- 'dashboard.indicator.publish.editTitle': 'Manage Publication',
- 'dashboard.indicator.publish.hint': 'After publishing, other users can view and purchase your indicator in the "Indicator Community"',
- 'dashboard.indicator.publish.pricingType': 'Pricing Type',
- 'dashboard.indicator.publish.free': 'Free',
- 'dashboard.indicator.publish.paid': 'Paid',
- 'dashboard.indicator.publish.price': 'Price',
- 'dashboard.indicator.publish.description': 'Description',
- 'dashboard.indicator.publish.descriptionPlaceholder': 'Enter a detailed description to help others understand your indicator...',
- 'dashboard.indicator.publish.confirm': 'Publish',
- 'dashboard.indicator.publish.update': 'Update',
- 'dashboard.indicator.publish.unpublish': 'Unpublish',
- 'dashboard.indicator.publish.success': 'Published successfully',
- 'dashboard.indicator.publish.failed': 'Failed to publish',
- 'dashboard.indicator.publish.unpublishSuccess': 'Unpublished successfully',
- 'dashboard.indicator.publish.unpublishFailed': 'Failed to unpublish',
- 'dashboard.indicator.error.loadWatchlistFailed': 'Failed to load watchlist',
- 'dashboard.indicator.error.chartNotReady': 'Chart component not initialized, please select a symbol and wait for the chart to load',
- 'dashboard.indicator.error.chartMethodNotReady': 'Chart component method not ready, please try again later',
- 'dashboard.indicator.error.chartExecuteNotReady': 'Chart component execute method not ready, please try again later',
- 'dashboard.indicator.error.parseFailed': 'Failed to parse Python code',
- 'dashboard.indicator.error.parseFailedCheck': 'Failed to parse Python code, please check the code format',
- 'dashboard.indicator.error.addIndicatorFailed': 'Failed to add indicator',
- 'dashboard.indicator.error.runIndicatorFailed': 'Failed to run indicator',
- 'dashboard.indicator.error.pleaseLogin': 'Please login first',
- 'dashboard.indicator.error.loadDataFailed': 'Failed to load data',
- 'dashboard.indicator.error.loadDataFailedDesc': 'Please check network connection',
- 'dashboard.indicator.error.tiingoSubscription': 'Forex 1-minute data requires Tiingo paid subscription. Please use other timeframes or upgrade your subscription.',
- 'dashboard.indicator.error.pythonEngineFailed': 'Python engine failed to load, indicator functionality may be unavailable',
- 'dashboard.indicator.error.chartInitFailed': 'Chart initialization failed',
- 'dashboard.indicator.warning.enterCode': 'Please enter indicator code first',
- 'dashboard.indicator.warning.chartNotInitialized': 'Chart not initialized, cannot use drawing tools',
- 'dashboard.indicator.warning.pyodideLoadFailed': 'Python Engine Load Failed',
- 'dashboard.indicator.warning.pyodideLoadFailedDesc': 'Your current region or network environment cannot use this feature',
- 'dashboard.indicator.success.runIndicator': 'Indicator ran successfully',
- 'dashboard.indicator.success.clearDrawings': 'All drawings cleared',
- 'dashboard.indicator.sma': 'SMA (Moving Average Group)',
- 'dashboard.indicator.ema': 'EMA (Exponential Moving Average Group)',
- 'dashboard.indicator.rsi': 'RSI (Relative Strength Index)',
- 'dashboard.indicator.macd': 'MACD',
- 'dashboard.indicator.bb': 'Bollinger Bands',
- 'dashboard.indicator.atr': 'ATR (Average True Range)',
- 'dashboard.indicator.cci': 'CCI (Commodity Channel Index)',
- 'dashboard.indicator.williams': 'Williams %R',
- 'dashboard.indicator.mfi': 'MFI (Money Flow Index)',
- 'dashboard.indicator.adx': 'ADX (Average Directional Index)',
- 'dashboard.indicator.obv': 'OBV (On Balance Volume)',
- 'dashboard.indicator.adosc': 'ADOSC (Accumulation/Distribution Oscillator)',
- 'dashboard.indicator.ad': 'AD (Accumulation/Distribution Line)',
- 'dashboard.indicator.kdj': 'KDJ (Stochastic Indicator)',
- 'dashboard.indicator.signal.buy': 'BUY',
- 'dashboard.indicator.signal.sell': 'SELL',
- 'dashboard.indicator.signal.supertrendBuy': 'SuperTrend Buy',
- 'dashboard.indicator.signal.supertrendSell': 'SuperTrend Sell',
- 'dashboard.indicator.chart.kline': 'K-Line',
- 'dashboard.indicator.chart.volume': 'Volume',
- 'dashboard.indicator.chart.uptrend': 'Up Trend',
- 'dashboard.indicator.chart.downtrend': 'Down Trend',
- 'dashboard.indicator.tooltip.time': 'Time',
- 'dashboard.indicator.tooltip.open': 'O',
- 'dashboard.indicator.tooltip.close': 'C',
- 'dashboard.indicator.tooltip.high': 'H',
- 'dashboard.indicator.tooltip.low': 'L',
- 'dashboard.indicator.tooltip.volume': 'Volume',
- 'dashboard.indicator.drawing.line': 'Line',
- 'dashboard.indicator.drawing.horizontalLine': 'Horizontal Line',
- 'dashboard.indicator.drawing.verticalLine': 'Vertical Line',
- 'dashboard.indicator.drawing.ray': 'Ray',
- 'dashboard.indicator.drawing.straightLine': 'Straight Line',
- 'dashboard.indicator.drawing.parallelLine': 'Parallel Line',
- 'dashboard.indicator.drawing.priceLine': 'Price Line',
- 'dashboard.indicator.drawing.priceChannel': 'Price Channel',
- 'dashboard.indicator.drawing.fibonacciLine': 'Fibonacci Line',
- 'dashboard.indicator.drawing.clearAll': 'Clear All Drawings',
- 'dashboard.indicator.market.USStock': 'US Stock',
- 'dashboard.indicator.market.Crypto': 'Cryptocurrency',
- 'dashboard.indicator.market.Forex': 'Forex',
- 'dashboard.indicator.market.Futures': 'Futures',
- 'dashboard.indicator.create': 'Create Indicator',
- 'dashboard.indicator.editor.title': 'Create/Edit Indicator',
- 'dashboard.indicator.editor.name': 'Indicator Name',
- 'dashboard.indicator.editor.nameRequired': 'Please enter indicator name',
- 'dashboard.indicator.editor.namePlaceholder': 'Enter indicator name',
- 'dashboard.indicator.editor.description': 'Description',
- 'dashboard.indicator.editor.descriptionPlaceholder': 'Enter description (optional)',
- 'dashboard.indicator.editor.code': 'Python Code',
- 'dashboard.indicator.editor.codeRequired': 'Please enter indicator code',
- 'dashboard.indicator.editor.codePlaceholder': 'Enter Python code',
- 'dashboard.indicator.editor.run': 'Run',
- 'dashboard.indicator.editor.runHint': 'Click Run button to preview indicator on K-line chart',
- 'dashboard.indicator.editor.guide': 'Development Guide',
- 'dashboard.indicator.editor.guideTitle': 'Python Indicator Development Guide',
- 'dashboard.indicator.editor.save': 'Save',
- 'dashboard.indicator.editor.cancel': 'Cancel',
- 'dashboard.indicator.editor.unnamed': 'Unnamed Indicator',
- 'dashboard.indicator.editor.publishToCommunity': 'Publish to Community',
- 'dashboard.indicator.editor.publishToCommunityHint': 'After publishing, other users can view and use your indicator in the community',
- 'dashboard.indicator.editor.indicatorType': 'Indicator Type',
- 'dashboard.indicator.editor.indicatorTypeRequired': 'Please select indicator type',
- 'dashboard.indicator.editor.indicatorTypePlaceholder': 'Please select indicator type',
- 'dashboard.indicator.editor.previewImage': 'Preview Image',
- 'dashboard.indicator.editor.uploadImage': 'Upload Image',
- 'dashboard.indicator.editor.previewImageHint': 'Recommended size: 800x400, max 2MB',
- 'dashboard.indicator.editor.pricing': 'Pricing (QDT)',
- 'dashboard.indicator.editor.pricingType.free': 'Free',
- 'dashboard.indicator.editor.pricingType.permanent': 'Permanent',
- 'dashboard.indicator.editor.pricingType.monthly': 'Monthly',
- 'dashboard.indicator.editor.price': 'Price',
- 'dashboard.indicator.editor.priceRequired': 'Please enter price',
- 'dashboard.indicator.editor.pricePlaceholder': 'Please enter price',
- 'dashboard.indicator.editor.pricingHint': 'Free indicators (price 0) will still receive platform rewards based on usage and ratings (QDT)',
- 'dashboard.indicator.editor.aiGenerate': 'AI Generate',
- 'dashboard.indicator.editor.aiPromptPlaceholder': 'Describe your signal logic (buy/sell only) and plots. Position sizing, risk, scaling, fees/slippage are configured in backtest.',
- 'dashboard.indicator.boundary.message': 'Note: The indicator script only computes plots + buy/sell signals. Position sizing, risk, scaling, fees/slippage belong to execution config.',
- 'dashboard.indicator.boundary.indicatorRule': "Keep the script to buy/sell only (and set df['buy']/df['sell']). Do NOT implement position management, TP/SL, scaling in the script.",
- 'dashboard.indicator.boundary.backtestRule': 'Rule: If a bar has a main signal (buy/sell โ open/close/reverse), scaling in/out is skipped on the same bar.',
- 'dashboard.indicator.editor.aiGenerateBtn': 'AI Generate Code',
- 'dashboard.indicator.editor.aiPromptRequired': 'Please enter your idea',
- 'dashboard.indicator.editor.aiGenerateSuccess': 'Code generated successfully',
- 'dashboard.indicator.editor.aiGenerateError': 'Code generation failed, please try again later',
- 'dashboard.indicator.editor.verifyCode': 'Verify Code',
- 'dashboard.indicator.editor.verifyCodeSuccess': 'Verification Passed',
- 'dashboard.indicator.editor.verifyCodeFailed': 'Verification Failed',
- 'dashboard.indicator.editor.verifyCodeEmpty': 'Code cannot be empty',
- 'dashboard.indicator.guide.title': 'Python Indicator & Strategy Development Guide',
- 'dashboard.indicator.guide.intro': 'This platform supports writing custom technical indicators and trading signals using Python. The system includes built-in pandas and numpy data analysis libraries. You can use standard DataFrame operations to process K-line data and draw charts or mark buy/sell signals.',
- 'dashboard.indicator.guide.section1.title': '1. Runtime Environment & Predefined Variables',
- 'dashboard.indicator.guide.section1.env': 'Your code runs in a browser-based Python environment (Pyodide).',
- 'dashboard.indicator.guide.section1.libs': 'Pre-installed Libraries',
- 'dashboard.indicator.guide.section1.libsDesc': 'The following libraries are imported by default, no need to import again:',
- 'dashboard.indicator.guide.section1.libsList': 'pandas (pd), numpy (np), math, json',
- 'dashboard.indicator.guide.section1.data': 'Input Data: df',
- 'dashboard.indicator.guide.section1.dataDesc': 'The system automatically converts current K-line data into a Pandas DataFrame object, variable name is df.',
- 'dashboard.indicator.guide.section1.dataColumns': 'df contains the following columns (all float type):',
- 'dashboard.indicator.guide.section1.dataColumnsList': 'time (timestamp, seconds), open, high, low, close, volume',
- 'dashboard.indicator.guide.section1.dataNote': 'Data index is arranged from old to new (0 is the earliest data, last row is the latest data).',
- 'dashboard.indicator.guide.section1.dataIndex': 'Important: df index is timestamp (DatetimeIndex), please preserve the index, avoid using .values which loses the index.',
- 'dashboard.indicator.guide.section2.title': '2. Parameter Definition',
- 'dashboard.indicator.guide.section2.desc': 'You can define variables as parameters at the beginning of your code. The system will try to parse statements like variable = value as adjustable parameters.',
- 'dashboard.indicator.guide.section2.example': 'Parameter Example',
- 'dashboard.indicator.guide.section2.exampleCode': 'span = 20 or multiplier = 2.0',
- 'dashboard.indicator.guide.section3.title': '3. Backtest Signal Setup (Important!)',
- 'dashboard.indicator.guide.section3.desc': 'If you want your indicator to support backtesting, you must set the following two columns in your code:',
- 'dashboard.indicator.guide.section3.backtestRequired': 'Required for Backtesting:',
- 'dashboard.indicator.guide.section3.backtestBuySignal': "df['buy_signal'] - Boolean Series, True indicates buy signal",
- 'dashboard.indicator.guide.section3.backtestSellSignal': "df['sell_signal'] - Boolean Series, True indicates sell signal",
- 'dashboard.indicator.guide.section3.backtestExample': 'Example:',
- 'dashboard.indicator.guide.section3.backtestExampleCode': "df['buy_signal'] = condition_buydf['sell_signal'] = condition_sell",
- 'dashboard.indicator.guide.section3.backtestNote': 'Note: Even if you only set output.signals for chart display, you must set these two columns to enable backtesting.',
- 'dashboard.indicator.guide.section4.title': '4. Output Requirements: output',
- 'dashboard.indicator.guide.section4.desc': 'At the end of code execution, you must define a dictionary named output to tell the chart how to display results.',
- 'dashboard.indicator.guide.section4.fields': 'The output dictionary contains the following fields:',
- 'dashboard.indicator.guide.section4.plots': 'plots - For drawing lines (e.g., moving averages, RSI)',
- 'dashboard.indicator.guide.section4.signals': 'signals - For marking buy/sell signals (e.g., arrows, labels)',
- 'dashboard.indicator.guide.section4.name': 'name - Indicator name (optional)',
- 'dashboard.indicator.guide.section4.calculatedVars': 'calculatedVars - Calculated variables (optional, for displaying additional information)',
- 'dashboard.indicator.guide.section5.title': '5. Plot Configuration (Plots)',
- 'dashboard.indicator.guide.section5.desc': 'Each object in the plots list represents a line.',
- 'dashboard.indicator.guide.section5.table.field': 'Field',
- 'dashboard.indicator.guide.section5.table.type': 'Type',
- 'dashboard.indicator.guide.section5.table.required': 'Required',
- 'dashboard.indicator.guide.section5.table.requiredYes': 'Yes',
- 'dashboard.indicator.guide.section5.table.requiredNo': 'No',
- 'dashboard.indicator.guide.section5.table.desc': 'Description',
- 'dashboard.indicator.guide.section5.table.name': 'The name of the indicator line, displayed in the legend',
- 'dashboard.indicator.guide.section5.table.data': 'Data list, length must match the number of rows in df. Recommended to use series.tolist()',
- 'dashboard.indicator.guide.section5.table.color': "Line color (Hex format, e.g. '#ff0000'). If not filled, the system will automatically assign",
- 'dashboard.indicator.guide.section5.table.typeDesc': "Chart type, default is 'line'",
- 'dashboard.indicator.guide.section5.table.overlay': 'Important. True means display on main chart (with K-line), False means display on sub-chart (independent area)',
- 'dashboard.indicator.guide.section5.example': 'Example: Draw Simple Moving Average (SMA)',
- 'dashboard.indicator.guide.section5.exampleCalc': 'Calculate SMA',
- 'dashboard.indicator.guide.section5.exampleOutput': 'Construct Output',
- 'dashboard.indicator.guide.section5.exampleOverlay': 'Display on main chart',
- 'dashboard.indicator.guide.section6.title': '6. Signal Markers (Signals)',
- 'dashboard.indicator.guide.section6.desc': "signals are used to mark buy/sell points on specific K-lines through icons or text. Note: This is only for chart display. The backtest system uses df['buy_signal'] and df['sell_signal'].",
- 'dashboard.indicator.guide.section6.table.type': "Signal type: 'buy' (buy, marked below K-line) or 'sell' (sell, marked above K-line)",
- 'dashboard.indicator.guide.section6.table.data': 'Signal data list. Fill price value at signal positions, fill None (or np.nan) at non-signal positions',
- 'dashboard.indicator.guide.section6.table.text': 'Text displayed on the label (e.g. "B", "S", "Buy", "Sell")',
- 'dashboard.indicator.guide.section6.table.color': 'Marker color',
- 'dashboard.indicator.guide.section6.hint': 'The system automatically handles positioning.',
- 'dashboard.indicator.guide.section6.buy': 'Markers will be automatically positioned below the Low of the current K-line',
- 'dashboard.indicator.guide.section6.sell': 'Markers will be automatically positioned above the High of the current K-line',
- 'dashboard.indicator.guide.section6.example': 'Example: Draw Buy/Sell Signals',
- 'dashboard.indicator.guide.section6.exampleInit': 'Initialize signal list, fill all with None',
- 'dashboard.indicator.guide.section6.exampleLogic': 'Simple logic: mark buy when close price is greater than open price',
- 'dashboard.indicator.guide.section6.exampleNote': 'In actual logic, please use loops or vectorized operations',
- 'dashboard.indicator.guide.section6.examplePrice': 'Record price',
- 'dashboard.indicator.guide.section6.exampleText': 'Buy',
- 'dashboard.indicator.guide.section7.title': '7. Complete Code Examples',
- 'dashboard.indicator.guide.section7.exampleA': 'Example A: Dual EMA Strategy (Supports Backtesting)',
- 'dashboard.indicator.guide.section7.exampleACode': "# 1. Calculate indicatorsdf['open_long'], df['close_long'], df['open_short'], df['close_short'] (boolean). Even if you set output.signals for chart display, you must set these columns to enable backtesting.",
- 'dashboard.indicator.guide.section8.q2': 'Q: Data length mismatch?',
- 'dashboard.indicator.guide.section8.a2': "A: The data list in plots and signals must have exactly the same length as the K-line data. If you use df['xxx'].tolist(), there is usually no problem.",
- 'dashboard.indicator.guide.section8.q3': 'Q: How to handle NaN (empty values)?',
- 'dashboard.indicator.guide.section8.a3': "A: Pandas calculations (such as rolling mean) will produce NaN at the beginning. The system will automatically convert NaN to null for chart rendering. You don't need to manually clean it, but if you need specific logic, you can use df.fillna(0) or other methods.",
- 'dashboard.indicator.guide.section8.q4': 'Q: Index mismatch causing all signals to be NaN?',
- 'dashboard.indicator.guide.section8.a4': "A: Please ensure you preserve the original df index (timestamp). Avoid using .values to create new Series. Use columns directly like df['close'] for operations.",
- 'dashboard.indicator.guide.section8.q5': 'Q: Can I use third-party network libraries?',
- 'dashboard.indicator.guide.section8.a5': 'A: No. The runtime environment is a browser sandbox and cannot use libraries like requests to request external APIs, nor can it install additional pip packages. Limited to built-in libraries such as pandas, numpy, math, json.',
- 'dashboard.indicator.guide.section8.q6': 'Q: How to debug code?',
- 'dashboard.indicator.guide.section8.a6': 'A: If the chart does not display indicators, it is usually because the Python code has an error. Please check for syntax errors or array index out of bounds. It is recommended to debug the algorithm logic in a local Python environment first, then copy it in.',
- 'dashboard.indicator.guide.section8.q7': 'Q: Backtest shows 0 signals?',
- 'dashboard.indicator.guide.section8.a7': "A: Please check the data type of df['open_long']/df['close_long']/df['open_short']/df['close_short']. They should be boolean (True/False), not numeric. Use condition.fillna(False).astype(bool) to ensure correct type.",
- 'dashboard.indicator.paramsConfig.title': 'Indicator Parameters',
- 'dashboard.indicator.paramsConfig.noParams': 'No configurable parameters for this indicator',
- 'dashboard.indicator.paramsConfig.hint': 'Configure parameters and click OK to run the indicator',
- 'dashboard.indicator.backtest.title': 'Indicator Backtest',
- 'dashboard.indicator.backtest.config': 'Backtest Parameters',
- 'dashboard.indicator.backtest.startDate': 'Start Date',
- 'dashboard.indicator.backtest.endDate': 'End Date',
- 'dashboard.indicator.backtest.selectStartDate': 'Select start date',
- 'dashboard.indicator.backtest.selectEndDate': 'Select end date',
- 'dashboard.indicator.backtest.startDateRequired': 'Please select start date',
- 'dashboard.indicator.backtest.endDateRequired': 'Please select end date',
- 'dashboard.indicator.backtest.initialCapital': 'Initial Capital',
- 'dashboard.indicator.backtest.initialCapitalRequired': 'Please enter initial capital',
- 'dashboard.indicator.backtest.commission': 'Commission Rate (%)',
- 'dashboard.indicator.backtest.commissionHint': 'Charged on notional value (incl. leverage) per trade; both entry & exit are deducted from balance.',
- 'dashboard.indicator.backtest.leverage': 'Leverage',
- 'dashboard.indicator.backtest.timeframe': 'Timeframe',
- 'dashboard.indicator.backtest.tradeDirection': 'Trade Direction',
- 'dashboard.indicator.backtest.longOnly': 'Long Only',
- 'dashboard.indicator.backtest.shortOnly': 'Short Only',
- 'dashboard.indicator.backtest.both': 'Both',
- 'dashboard.indicator.backtest.run': 'Run Backtest',
- 'dashboard.indicator.backtest.rerun': 'Run Again',
- 'dashboard.indicator.backtest.close': 'Close',
- 'dashboard.indicator.backtest.running': 'Running indicator backtest...',
- 'dashboard.indicator.backtest.loadingTip1': 'Fetching historical K-line data...',
- 'dashboard.indicator.backtest.loadingTip2': 'Executing strategy signal calculation...',
- 'dashboard.indicator.backtest.loadingTip3': 'Simulating trade execution...',
- 'dashboard.indicator.backtest.loadingTip4': 'Calculating backtest metrics...',
- 'dashboard.indicator.backtest.loadingTip5': 'Almost done, please wait...',
- 'dashboard.indicator.backtest.results': 'Backtest Results',
- 'dashboard.indicator.backtest.totalReturn': 'Total Return',
- 'dashboard.indicator.backtest.annualReturn': 'Annual Return',
- 'dashboard.indicator.backtest.maxDrawdown': 'Max Drawdown',
- 'dashboard.indicator.backtest.sharpeRatio': 'Sharpe Ratio',
- 'dashboard.indicator.backtest.winRate': 'Win Rate',
- 'dashboard.indicator.backtest.profitFactor': 'Profit Factor',
- 'dashboard.indicator.backtest.totalTrades': 'Total Trades',
- 'dashboard.indicator.totalReturn': 'Total Return',
- 'dashboard.indicator.annualReturn': 'Annual Return',
- 'dashboard.indicator.maxDrawdown': 'Max Drawdown',
- 'dashboard.indicator.sharpeRatio': 'Sharpe Ratio',
- 'dashboard.indicator.winRate': 'Win Rate',
- 'dashboard.indicator.profitFactor': 'Profit Factor',
- 'dashboard.indicator.totalTrades': 'Total Trades',
- 'dashboard.indicator.backtest.totalCommission': 'Total Commission',
- 'dashboard.indicator.backtest.equityCurve': 'Equity Curve',
- 'dashboard.indicator.backtest.strategy': 'Indicator',
- 'dashboard.indicator.backtest.benchmark': 'Benchmark',
- 'dashboard.indicator.backtest.tradeHistory': 'Trade History',
- 'dashboard.indicator.backtest.tradeTime': 'Time',
- 'dashboard.indicator.backtest.tradeType': 'Type',
- 'dashboard.indicator.backtest.buy': 'Buy',
- 'dashboard.indicator.backtest.sell': 'Sell',
- 'dashboard.indicator.backtest.liquidation': 'Liquidation',
- 'dashboard.indicator.backtest.openLong': 'Open Long',
- 'dashboard.indicator.backtest.closeLong': 'Close Long',
- 'dashboard.indicator.backtest.closeLongStop': 'Close Long (Stop Loss)',
- 'dashboard.indicator.backtest.closeLongProfit': 'Close Long (Take Profit)',
- 'dashboard.indicator.backtest.addLong': 'Add Long',
- 'dashboard.indicator.backtest.openShort': 'Open Short',
- 'dashboard.indicator.backtest.closeShort': 'Close Short',
- 'dashboard.indicator.backtest.closeShortStop': 'Close Short (Stop Loss)',
- 'dashboard.indicator.backtest.closeShortProfit': 'Close Short (Take Profit)',
- 'dashboard.indicator.backtest.addShort': 'Add Short',
- 'dashboard.indicator.backtest.closeLongTrailing': 'Close Long (Trailing)',
- 'dashboard.indicator.backtest.reduceLong': 'Reduce Long',
- 'dashboard.indicator.backtest.closeShortTrailing': 'Close Short (Trailing)',
- 'dashboard.indicator.backtest.reduceShort': 'Reduce Short',
- 'dashboard.indicator.backtest.price': 'Price',
- 'dashboard.indicator.backtest.amount': 'Amount',
- 'dashboard.indicator.backtest.balance': 'Balance',
- 'dashboard.indicator.backtest.profit': 'P&L',
- 'dashboard.indicator.backtest.success': 'Backtest completed',
- 'dashboard.indicator.backtest.failed': 'Backtest failed, please try again later',
- 'dashboard.indicator.backtest.quickSelect': 'Quick Select',
- // Multi-timeframe backtest precision hints
- 'dashboard.indicator.backtest.precisionMode': 'Backtest Precision Mode',
- 'dashboard.indicator.backtest.estimatedCandles': 'Est. {count} candles to process',
- 'dashboard.indicator.backtest.highPrecisionDesc': 'Using 1-minute candles for high-precision backtest, stop-loss/take-profit triggers are more accurate',
- 'dashboard.indicator.backtest.mediumPrecisionDesc': 'Range exceeds 30 days, using 5-minute candles to balance precision and performance',
- 'dashboard.indicator.backtest.standardModeWarning': 'Using Standard Backtest Mode',
- 'dashboard.indicator.backtest.standardModeDesc': 'Current config does not support high-precision backtest, using strategy timeframe',
- 'dashboard.indicator.backtest.onlyCryptoSupported': 'High-precision backtest only supports cryptocurrency market',
- 'dashboard.indicator.backtest.noIndicatorCode': 'This indicator has no backtestable code',
- 'dashboard.indicator.backtest.noSymbol': 'Please select a trading symbol first',
- 'dashboard.indicator.backtest.dateRangeExceeded': 'Backtest date range exceeded: {timeframe} timeframe allows max {maxRange}',
- 'dashboard.indicator.backtest.dateRangeExceededDays': 'Backtest range exceeds limit: {timeframe} max {maxRange} ({maxDays} days)',
- 'dashboard.indicator.backtest.metaLine': 'Symbol: {symbol} | Market: {market} | Timeframe: {timeframe}',
- 'dashboard.indicator.backtest.savedRunId': 'Backtest saved. Run ID: {id}',
- 'dashboard.indicator.backtest.historyTitle': 'Backtest History',
- 'dashboard.indicator.backtest.historyRefresh': 'Refresh',
- 'dashboard.indicator.backtest.historyView': 'View',
- 'dashboard.indicator.backtest.historyNoData': 'No backtest history',
- 'dashboard.indicator.backtest.historyUseCurrent': 'Only current symbol/timeframe',
- 'dashboard.indicator.backtest.historyFilterSymbol': 'Symbol',
- 'dashboard.indicator.backtest.historyFilterTimeframe': 'Timeframe',
- 'dashboard.indicator.backtest.historyApply': 'Apply filters',
- 'dashboard.indicator.backtest.historyAIAnalyze': 'AI Analyze',
- 'dashboard.indicator.backtest.historyAIAnalyzeTitle': 'AI Suggestions',
- 'dashboard.indicator.backtest.historyNoAIResult': 'No AI analysis result',
- 'dashboard.indicator.backtest.historyRunId': 'Run ID',
- 'dashboard.indicator.backtest.historyCreatedAt': 'Time',
- 'dashboard.indicator.backtest.historyRange': 'Range',
- 'dashboard.indicator.backtest.historyStatus': 'Status',
- 'dashboard.indicator.backtest.historyStatusSuccess': 'Success',
- 'dashboard.indicator.backtest.historyStatusFailed': 'Failed',
- 'dashboard.indicator.backtest.historyActions': 'Actions',
- 'dashboard.indicator.backtest.prev': 'Previous',
- 'dashboard.indicator.backtest.next': 'Next',
- 'dashboard.indicator.backtest.steps.strategy.title': 'Execution Config',
- 'dashboard.indicator.backtest.steps.strategy.desc': 'Position, risk, scaling',
- 'dashboard.indicator.backtest.steps.trading.title': 'Backtest Setup',
- 'dashboard.indicator.backtest.steps.trading.desc': 'Time, capital, fees, leverage, slippage',
- 'dashboard.indicator.backtest.steps.results.title': 'Results',
- 'dashboard.indicator.backtest.steps.results.desc': 'Summary & trades',
- 'dashboard.indicator.backtest.panel.risk': 'Execution: Risk (SL / trailing)',
- 'dashboard.indicator.backtest.panel.scale': 'Execution: Scale-in (Trend / DCA)',
- 'dashboard.indicator.backtest.panel.reduce': 'Execution: Scale-out (Trend / Adverse)',
- 'dashboard.indicator.backtest.panel.position': 'Execution: Entry sizing',
- 'dashboard.indicator.backtest.field.stopLossPct': 'Stop Loss (%)',
- 'dashboard.indicator.backtest.field.takeProfitPct': 'Take Profit (%)',
- 'dashboard.indicator.backtest.field.trailingEnabled': 'Trailing stop / take profit',
- 'dashboard.indicator.backtest.field.trailingStopPct': 'Trailing drawdown (%)',
- 'dashboard.indicator.backtest.field.trailingActivationPct': 'Trailing activation (%)',
- 'dashboard.indicator.backtest.field.slippage': 'Slippage (%)',
- 'dashboard.indicator.backtest.field.trendAddEnabled': 'Trend-following scale-in',
- 'dashboard.indicator.backtest.field.dcaAddEnabled': 'Mean-reversion DCA',
- 'dashboard.indicator.backtest.field.trendAddStepPct': 'Scale-in trigger (%)',
- 'dashboard.indicator.backtest.field.dcaAddStepPct': 'DCA trigger (%)',
- 'dashboard.indicator.backtest.field.trendAddSizePct': 'Scale-in size (% of capital)',
- 'dashboard.indicator.backtest.field.dcaAddSizePct': 'DCA size (% of capital)',
- 'dashboard.indicator.backtest.field.trendAddMaxTimes': 'Max scale-in times',
- 'dashboard.indicator.backtest.field.dcaAddMaxTimes': 'Max DCA times',
- 'dashboard.indicator.backtest.field.trendReduceEnabled': 'Trend reduce',
- 'dashboard.indicator.backtest.field.adverseReduceEnabled': 'Adverse reduce',
- 'dashboard.indicator.backtest.field.trendReduceStepPct': 'Trend trigger (%)',
- 'dashboard.indicator.backtest.field.adverseReduceStepPct': 'Adverse trigger (%)',
- 'dashboard.indicator.backtest.field.trendReduceSizePct': 'Reduce size (% of position)',
- 'dashboard.indicator.backtest.field.adverseReduceSizePct': 'Adverse reduce size (% of position)',
- 'dashboard.indicator.backtest.field.trendReduceMaxTimes': 'Max trend reduce times',
- 'dashboard.indicator.backtest.field.adverseReduceMaxTimes': 'Max adverse reduce times',
- 'dashboard.indicator.backtest.field.entryPct': 'Entry size (% of capital)',
- 'dashboard.indicator.backtest.field.minOrderPct': 'Min order size (% of capital) (optional)',
- 'dashboard.indicator.backtest.hint.entryPctMax': 'Max entry: {maxPct}% (reserve budget for future scale-ins)',
- 'dashboard.docs.title': 'Documentation',
- 'dashboard.docs.search.placeholder': 'Search documents...',
- 'dashboard.docs.category.all': 'All',
- 'dashboard.docs.category.guide': 'Guides',
- 'dashboard.docs.category.api': 'API Reference',
- 'dashboard.docs.category.tutorial': 'Tutorials',
- 'dashboard.docs.category.faq': 'FAQ',
- 'dashboard.docs.featured.title': 'Featured Documents',
- 'dashboard.docs.featured.tag': 'Featured',
- 'dashboard.docs.list.views': 'views',
- 'dashboard.docs.list.author': 'Author',
- 'dashboard.docs.list.empty': 'No documents',
- 'dashboard.docs.list.backToAll': 'Back to All Documents',
- 'dashboard.docs.list.total': 'Total {count} documents',
- 'dashboard.docs.detail.back': 'Back to List',
- 'dashboard.docs.detail.updatedAt': 'Updated at',
- 'dashboard.docs.detail.related': 'Related Documents',
- 'dashboard.docs.detail.notFound': 'Document Not Found',
- 'dashboard.docs.detail.error': 'Document does not exist or has been deleted',
- 'dashboard.docs.search.result': 'Search Results',
- 'dashboard.docs.search.keyword': 'Keyword',
- 'dashboard.totalEquity': 'Total Equity',
- 'dashboard.totalPnL': 'Total P&L',
- 'dashboard.aiStrategies': 'AI Strategies',
- 'dashboard.indicatorStrategies': 'Indicator Strategies',
- 'dashboard.running': 'Running',
- 'dashboard.enabled': 'Enabled',
- 'dashboard.pnlHistory': 'P&L History',
- 'dashboard.strategyPerformance': 'Strategy Performance',
- 'dashboard.strategyRanking': 'Strategy Ranking',
- // New KPI labels
- 'dashboard.winRate': 'Win Rate',
- 'dashboard.profitFactor': 'Profit Factor',
- 'dashboard.maxDrawdown': 'Max Drawdown',
- 'dashboard.totalTrades': 'Total Trades',
- 'dashboard.runningStrategies': 'Running Strategies',
- 'dashboard.equityCurve': 'Equity Curve',
- 'dashboard.strategyAllocation': 'Strategy Allocation',
- 'dashboard.drawdownCurve': 'Drawdown Curve',
- 'dashboard.drawdown': 'Drawdown',
- 'dashboard.hourlyDistribution': 'Hourly Distribution',
- // Chart labels
- 'dashboard.dailyPnl': 'Daily P&L',
- 'dashboard.cumulativePnl': 'Cumulative P&L',
- 'dashboard.tradeCount': 'Trade Count',
- 'dashboard.profit': 'Profit',
- 'dashboard.noData': 'No Data',
- 'dashboard.noStrategyData': 'No strategy data',
- // Ranking labels
- 'dashboard.ranking.totalProfit': 'Total Profit',
- 'dashboard.ranking.roi': 'ROI',
- 'dashboard.ranking.trades': 'Trades',
- // Units and labels
- 'dashboard.unit.trades': '',
- 'dashboard.unit.strategies': '',
- 'dashboard.label.avgDaily': 'Avg Daily',
- 'dashboard.label.avgProfit': 'Avg Profit',
- 'dashboard.label.win': 'W',
- 'dashboard.label.lose': 'L',
- 'dashboard.label.trade': 'Trades',
- 'dashboard.label.indicator': 'Indicator',
- 'dashboard.label.totalPnl': 'Total P&L',
- 'dashboard.label.maxDrawdownPoint': 'Max DD',
- 'dashboard.profitCalendar': 'Profit Calendar',
- 'dashboard.recentTrades': 'Recent Trades',
- 'dashboard.currentPositions': 'Current Positions',
- 'dashboard.table.time': 'Time',
- 'dashboard.table.strategy': 'Strategy',
- 'dashboard.table.symbol': 'Symbol',
- 'dashboard.table.type': 'Type',
- 'dashboard.table.side': 'Side',
- 'dashboard.table.size': 'Size',
- 'dashboard.table.entryPrice': 'Entry Price',
- 'dashboard.table.price': 'Price',
- 'dashboard.table.amount': 'Amount',
- 'dashboard.table.profit': 'Profit',
- 'dashboard.pendingOrders': 'Order Execution Records',
- 'dashboard.totalOrders': 'Total {total} orders',
- 'dashboard.viewError': 'View Error',
- 'dashboard.filled': 'Filled',
- 'dashboard.orderTable.time': 'Created Time',
- 'dashboard.orderTable.strategy': 'Strategy',
- 'dashboard.orderTable.symbol': 'Symbol',
- 'dashboard.orderTable.signalType': 'Signal Type',
- 'dashboard.orderTable.amount': 'Amount',
- 'dashboard.orderTable.price': 'Filled Price',
- 'dashboard.orderTable.status': 'Status',
- 'dashboard.orderTable.timeInfo': 'Time',
- 'dashboard.orderTable.executedAt': 'Executed Time',
- 'dashboard.orderTable.exchange': 'Exchange',
- 'dashboard.orderTable.notify': 'Notify',
- 'dashboard.orderTable.actions': 'Actions',
- 'dashboard.orderTable.delete': 'Delete',
- 'dashboard.orderTable.deleteConfirm': 'Delete this record?',
- 'dashboard.orderTable.deleteSuccess': 'Deleted',
- 'dashboard.orderTable.deleteFailed': 'Delete failed',
- 'dashboard.newOrderNotify': 'New Order Alert',
- 'dashboard.newOrderDesc': 'New order execution record',
- 'dashboard.soundEnabled': 'Sound notification enabled',
- 'dashboard.soundDisabled': 'Sound notification disabled',
- 'dashboard.clickToMute': 'Click to mute',
- 'dashboard.clickToUnmute': 'Click to unmute',
- 'dashboard.signalType.openLong': 'Open Long',
- 'dashboard.signalType.openShort': 'Open Short',
- 'dashboard.signalType.closeLong': 'Close Long',
- 'dashboard.signalType.closeShort': 'Close Short',
- 'dashboard.signalType.addLong': 'Add Long',
- 'dashboard.signalType.addShort': 'Add Short',
- 'dashboard.status.pending': 'Pending',
- 'dashboard.status.processing': 'Processing',
- 'dashboard.status.completed': 'Completed',
- 'dashboard.status.failed': 'Failed',
- 'dashboard.status.cancelled': 'Cancelled',
- 'dashboard.table.pnl': 'Unrealized P&L',
- 'form.basic-form.basic.title': 'Basic form',
- 'form.basic-form.basic.description': 'Form pages are used to collect or verify information to users, and basic forms are common in scenarios where there are fewer data items.',
- 'form.basic-form.title.label': 'Title',
- 'form.basic-form.title.placeholder': 'Give the target a name',
- 'form.basic-form.title.required': 'Please enter a title',
- 'form.basic-form.date.label': 'Start and end date',
- 'form.basic-form.placeholder.start': 'Start date',
- 'form.basic-form.placeholder.end': 'End date',
- 'form.basic-form.date.required': 'Please select the start and end date',
- 'form.basic-form.goal.label': 'Goal description',
- 'form.basic-form.goal.placeholder': 'Please enter your work goals',
- 'form.basic-form.goal.required': 'Please enter a description of the goal',
- 'form.basic-form.standard.label': 'Metrics',
- 'form.basic-form.standard.placeholder': 'Please enter a metric',
- 'form.basic-form.standard.required': 'Please enter a metric',
- 'form.basic-form.client.label': 'Client',
- 'form.basic-form.label.tooltip': 'Target service object',
- 'form.basic-form.client.placeholder': 'Please describe your customer service, internal customers directly @ Name / job number',
- 'form.basic-form.client.required': 'Please describe the customers you serve',
- 'form.basic-form.invites.label': 'Inviting critics',
- 'form.basic-form.invites.placeholder': 'Please direct @ Name / job number, you can invite up to 5 people',
- 'form.basic-form.weight.label': 'Weight',
- 'form.basic-form.weight.placeholder': 'Please enter weight',
- 'form.basic-form.public.label': 'Target disclosure',
- 'form.basic-form.label.help': 'Customers and invitees are shared by default',
- 'form.basic-form.radio.public': 'Public',
- 'form.basic-form.radio.partially-public': 'Partially public',
- 'form.basic-form.radio.private': 'Private',
- 'form.basic-form.publicUsers.placeholder': 'Open to',
- 'form.basic-form.option.A': 'Colleague A',
- 'form.basic-form.option.B': 'Colleague B',
- 'form.basic-form.option.C': 'Colleague C',
- 'form.basic-form.email.required': 'Please enter your email!',
- 'form.basic-form.email.wrong-format': 'The email address is in the wrong format!',
- 'form.basic-form.userName.required': 'Please enter your userName!',
- 'form.basic-form.password.required': 'Please enter your password!',
- 'form.basic-form.password.twice': 'The passwords entered twice do not match!',
- 'form.basic-form.strength.msg': "Please enter at least 6 characters and don't use passwords that are easy to guess.",
- 'form.basic-form.strength.strong': 'Strength: strong',
- 'form.basic-form.strength.medium': 'Strength: medium',
- 'form.basic-form.strength.short': 'Strength: too short',
- 'form.basic-form.confirm-password.required': 'Please confirm your password!',
- 'form.basic-form.phone-number.required': 'Please enter your phone number!',
- 'form.basic-form.phone-number.wrong-format': 'Malformed phone number!',
- 'form.basic-form.verification-code.required': 'Please enter the verification code!',
- 'form.basic-form.form.get-captcha': 'Get Captcha',
- 'form.basic-form.captcha.second': 'sec',
- 'form.basic-form.form.optional': ' (optional) ',
- 'form.basic-form.form.submit': 'Submit',
- 'form.basic-form.form.save': 'Save',
- 'form.basic-form.email.placeholder': 'Email',
- 'form.basic-form.password.placeholder': 'Password',
- 'form.basic-form.confirm-password.placeholder': 'Confirm password',
- 'form.basic-form.phone-number.placeholder': 'Phone number',
- 'form.basic-form.verification-code.placeholder': 'Verification code',
- 'result.success.title': 'Submission Success',
- 'result.success.description': 'The submission results page is used to feed back the results of a series of operational tasks. If it is a simple operation, use the Message global prompt feedback. This text area can show a simple supplementary explanation. If there is a similar requirement for displaying โdocumentsโ, the following gray area can present more complicated content.',
- 'result.success.operate-title': 'Project Name',
- 'result.success.operate-id': 'Project ID',
- 'result.success.principal': 'Principal',
- 'result.success.operate-time': 'Effective time',
- 'result.success.step1-title': 'Create project',
- 'result.success.step1-operator': 'Qu Lili',
- 'result.success.step2-title': 'Departmental preliminary review',
- 'result.success.step2-operator': 'Zhou Maomao',
- 'result.success.step2-extra': 'Urge',
- 'result.success.step3-title': 'Financial review',
- 'result.success.step4-title': 'Finish',
- 'result.success.btn-return': 'Back List',
- 'result.success.btn-project': 'View Project',
- 'result.success.btn-print': 'Print',
- 'result.fail.error.title': 'Submission Failed',
- 'result.fail.error.description': 'Please check and modify the following information before resubmitting.',
- 'result.fail.error.hint-title': 'The content you submitted has the following error:',
- 'result.fail.error.hint-text1': 'Your account has been frozen',
- 'result.fail.error.hint-btn1': 'Thaw immediately',
- 'result.fail.error.hint-text2': 'Your account is not yet eligible to apply',
- 'result.fail.error.hint-btn2': 'Upgrade immediately',
- 'result.fail.error.btn-text': 'Return to modify',
- 'account.settings.menuMap.custom': 'Custom Settings',
- 'account.settings.menuMap.binding': 'Account Binding',
- 'account.settings.basic.avatar': 'Avatar',
- 'account.settings.basic.change-avatar': 'Change avatar',
- 'account.settings.basic.email': 'Email',
- 'account.settings.basic.email-message': 'Please input your email!',
- 'account.settings.basic.nickname': 'Nickname',
- 'account.settings.basic.nickname-message': 'Please input your Nickname!',
- 'account.settings.basic.profile': 'Personal profile',
- 'account.settings.basic.profile-message': 'Please input your personal profile!',
- 'account.settings.basic.profile-placeholder': 'Brief introduction to yourself',
- 'account.settings.basic.country': 'Country/Region',
- 'account.settings.basic.country-message': 'Please input your country!',
- 'account.settings.basic.geographic': 'Province or city',
- 'account.settings.basic.geographic-message': 'Please input your geographic info!',
- 'account.settings.basic.address': 'Street Address',
- 'account.settings.basic.address-message': 'Please input your address!',
- 'account.settings.basic.phone': 'Phone Number',
- 'account.settings.basic.phone-message': 'Please input your phone!',
- 'account.settings.basic.update': 'Update Information',
- 'account.settings.basic.update.success': 'Update basic information successfully',
- 'account.settings.security.strong': 'Strong',
- 'account.settings.security.medium': 'Medium',
- 'account.settings.security.weak': 'Weak',
- 'account.settings.security.password': 'Account Password',
- 'account.settings.security.password-description': 'Current password strength๏ผ',
- 'account.settings.security.phone': 'Security Phone',
- 'account.settings.security.phone-description': 'Bound phone๏ผ',
- 'account.settings.security.question': 'Security Question',
- 'account.settings.security.question-description': 'The security question is not set, and the security policy can effectively protect the account security',
- 'account.settings.security.email': 'Bound Email',
- 'account.settings.security.email-description': 'Bound Email๏ผ',
- 'account.settings.security.mfa': 'MFA Device',
- 'account.settings.security.mfa-description': 'Unbound MFA device, after binding, can be confirmed twice',
- 'account.settings.security.modify': 'Modify',
- 'account.settings.security.set': 'Set',
- 'account.settings.security.bind': 'Bind',
- 'account.settings.binding.taobao': 'Binding Taobao',
- 'account.settings.binding.taobao-description': 'Currently unbound Taobao account',
- 'account.settings.binding.alipay': 'Binding Alipay',
- 'account.settings.binding.alipay-description': 'Currently unbound Alipay account',
- 'account.settings.binding.dingding': 'Binding DingTalk',
- 'account.settings.binding.dingding-description': 'Currently unbound DingTalk account',
- 'account.settings.binding.bind': 'Bind',
- 'account.settings.notification.password': 'Account Password',
- 'account.settings.notification.password-description': 'Messages from other users will be notified in the form of a station letter',
- 'account.settings.notification.messages': 'System Messages',
- 'account.settings.notification.messages-description': 'System messages will be notified in the form of a station letter',
- 'account.settings.notification.todo': 'To-do Notification',
- 'account.settings.notification.todo-description': 'The to-do list will be notified in the form of a letter from the station',
- 'account.settings.settings.open': 'Open',
- 'account.settings.settings.close': 'Close',
- 'trading-assistant.title': 'Trading Assistant',
- 'trading-assistant.strategyList': 'Strategy List',
- 'trading-assistant.createStrategy': 'Create Strategy',
- 'trading-assistant.noStrategy': 'No strategies',
- 'trading-assistant.selectStrategy': 'Please select a strategy from the left to view details',
- 'trading-assistant.startStrategy': 'Start Strategy',
- 'trading-assistant.stopStrategy': 'Stop Strategy',
- 'trading-assistant.editStrategy': 'Edit Strategy',
- 'trading-assistant.deleteStrategy': 'Delete Strategy',
- 'trading-assistant.startAll': 'Start All',
- 'trading-assistant.stopAll': 'Stop All',
- 'trading-assistant.deleteAll': 'Delete All',
- 'trading-assistant.symbolCount': 'symbols',
- 'trading-assistant.strategyCount': 'strategies',
- 'trading-assistant.groupBy': 'Group By',
- 'trading-assistant.groupByStrategy': 'Strategy',
- 'trading-assistant.groupBySymbol': 'Symbol',
- 'trading-assistant.timeframe': 'Timeframe',
- 'trading-assistant.indicator': 'Indicator',
- 'trading-assistant.status.running': 'Running',
- 'trading-assistant.status.stopped': 'Stopped',
- 'trading-assistant.status.error': 'Error',
- 'trading-assistant.strategyType.IndicatorStrategy': 'Indicator Strategy',
- 'trading-assistant.strategyType.PromptBasedStrategy': 'Prompt Strategy',
- 'trading-assistant.strategyType.GridStrategy': 'Grid Strategy',
- 'trading-assistant.tabs.tradingRecords': 'Trading Records',
- 'trading-assistant.tabs.positions': 'Positions',
- 'trading-assistant.tabs.equityCurve': 'Equity Curve',
- 'trading-assistant.form.step1': 'Select Indicator',
- 'trading-assistant.form.step2': 'Exchange Configuration',
- 'trading-assistant.form.step3': 'Strategy Parameters',
- 'trading-assistant.form.step2Params': 'Parameters',
- 'trading-assistant.form.step3Signal': 'Signal Delivery',
- 'trading-assistant.form.simpleMode': 'Simple',
- 'trading-assistant.form.advancedMode': 'Advanced',
- 'trading-assistant.form.simpleModeHint': 'Quick setup with recommended defaults',
- 'trading-assistant.form.advancedModeHint': 'Customize all parameters for pros',
- 'trading-assistant.form.simpleStep1': 'Select Indicator & Pair',
- 'trading-assistant.form.simpleStep2': 'Launch Mode',
- 'trading-assistant.form.simpleDefaultsHint': 'Defaults (expand to customize)',
- 'trading-assistant.form.showAdvancedSettings': 'Show Advanced Settings',
- 'trading-assistant.form.hideAdvancedSettings': 'Hide Advanced Settings',
- 'trading-assistant.form.marketCategory': 'Market Category',
- 'trading-assistant.form.marketCategoryHint': 'Select a market first. Only Crypto can enable live trading; other markets are signal-only.',
- 'trading-assistant.market.USStock': 'US Stock',
- 'trading-assistant.market.Crypto': 'Crypto',
- 'trading-assistant.market.Forex': 'Forex',
- 'trading-assistant.form.indicator': 'Select Indicator',
- 'trading-assistant.form.indicatorHint': 'You can only select indicators you have purchased or created',
- 'trading-assistant.form.qdtCostHints': 'Using strategies will consume QDT, please ensure your account has sufficient QDT balance',
- 'trading-assistant.form.indicatorDescription': 'Indicator Description',
- 'trading-assistant.form.noDescription': 'No description',
- 'trading-assistant.form.indicatorParams': 'Indicator Parameters',
- 'trading-assistant.form.indicatorParamsHint': 'These parameters will be passed to the indicator code. Different strategies can use different parameter values.',
- 'trading-assistant.form.exchange': 'Select Exchange',
- 'trading-assistant.form.apiKey': 'API Key',
- 'trading-assistant.form.secretKey': 'Secret Key',
- 'trading-assistant.form.passphrase': 'Passphrase',
- 'trading-assistant.form.testConnection': 'Test Connection',
- 'trading-assistant.form.strategyName': 'Strategy Name',
- 'trading-assistant.form.symbol': 'Trading Pair',
- 'trading-assistant.form.symbols': 'Trading Pairs (Multi-select)',
- 'trading-assistant.form.symbolHint': 'Symbol format depends on the selected market',
- 'trading-assistant.form.symbolsHint': 'Select multiple pairs to create strategies for each',
- 'trading-assistant.form.strategyType': 'Strategy Type',
- 'trading-assistant.form.strategyTypeSingle': 'Single Symbol Strategy',
- 'trading-assistant.form.strategyTypeCrossSectional': 'Cross-Sectional Strategy',
- 'trading-assistant.form.strategyTypeHint': 'Single Symbol: Trade a single symbol; Cross-Sectional: Manage a portfolio of multiple symbols',
- 'trading-assistant.form.symbolList': 'Symbol List',
- 'trading-assistant.form.symbolListHint': 'Select multiple symbols, strategy will rank and rebalance based on indicator scores',
- 'trading-assistant.form.portfolioSize': 'Portfolio Size',
- 'trading-assistant.form.portfolioSizeHint': 'Number of symbols to hold simultaneously',
- 'trading-assistant.form.longRatio': 'Long Ratio',
- 'trading-assistant.form.longRatioHint': 'Proportion of long positions (0-1), e.g. 0.5 means 50% long, 50% short',
- 'trading-assistant.form.rebalanceFrequency': 'Rebalance Frequency',
- 'trading-assistant.form.rebalanceDaily': 'Daily',
- 'trading-assistant.form.rebalanceWeekly': 'Weekly',
- 'trading-assistant.form.rebalanceMonthly': 'Monthly',
- 'trading-assistant.form.rebalanceFrequencyHint': 'Frequency of portfolio rebalancing',
- 'trading-assistant.form.addSymbol': 'Add Symbol',
- 'trading-assistant.form.addSymbolTitle': 'Add Symbol to Watchlist',
- 'trading-assistant.form.searchSymbolPlaceholder': 'Search by code, e.g. BTC, AAPL',
- 'trading-assistant.form.noSymbolFound': 'No matching symbol found',
- 'trading-assistant.form.canDirectAdd': 'You can directly add the code',
- 'trading-assistant.form.searchSymbolHint': 'Enter code to search symbols',
- 'trading-assistant.form.confirmAdd': 'Confirm Add',
- 'trading-assistant.form.addSymbolSuccess': 'Symbol added successfully',
- 'trading-assistant.form.addSymbolFailed': 'Failed to add, please try again',
- 'trading-assistant.form.pleaseSelectSymbol': 'Please select or enter a symbol',
- 'trading-assistant.form.symbolHintCrypto': 'Crypto: use trading pairs like BTC/USDT',
- 'trading-assistant.form.symbolHintGeneral': 'Enter the symbol for the selected market (e.g. 600519, AAPL, EURUSD).',
- 'trading-assistant.form.initialCapital': 'Initial Capital',
- 'trading-assistant.form.marketType': 'Market Type',
- 'trading-assistant.form.marketTypeFutures': 'Futures',
- 'trading-assistant.form.marketTypeSpot': 'Spot',
- 'trading-assistant.form.marketTypeHint': 'Futures support bidirectional trading and leverage, spot only supports long positions with fixed 1x leverage',
- 'trading-assistant.form.leverage': 'Leverage',
- 'trading-assistant.form.leverageHint': 'Futures: 1-125x, Spot: Fixed 1x',
- 'trading-assistant.form.spotLeverageFixed': 'Spot trading leverage is fixed at 1x',
- 'trading-assistant.form.spotOnlyLongHint': 'Spot trading only supports long positions',
- 'trading-assistant.form.tradeDirection': 'Trade Direction',
- 'trading-assistant.form.tradeDirectionLong': 'Long Only',
- 'trading-assistant.form.tradeDirectionShort': 'Short Only',
- 'trading-assistant.form.tradeDirectionBoth': 'Both',
- 'trading-assistant.form.timeframe': 'Timeframe',
- 'trading-assistant.form.klinePeriod': 'K-Line Period',
- 'trading-assistant.form.timeframe1m': '1 Minute',
- 'trading-assistant.form.timeframe5m': '5 Minutes',
- 'trading-assistant.form.timeframe15m': '15 Minutes',
- 'trading-assistant.form.timeframe30m': '30 Minutes',
- 'trading-assistant.form.timeframe1H': '1 Hour',
- 'trading-assistant.form.timeframe4H': '4 Hours',
- 'trading-assistant.form.timeframe1D': '1 Day',
- 'trading-assistant.form.selectStrategyType': 'Select Strategy Type',
- 'trading-assistant.form.indicatorStrategy': 'Indicator Strategy',
- 'trading-assistant.form.indicatorStrategyDesc': 'Automated trading strategy based on technical indicators',
- 'trading-assistant.form.aiStrategy': 'AI Strategy',
- 'trading-assistant.form.aiStrategyDesc': 'Automated trading strategy based on AI intelligent decision-making',
- 'trading-assistant.form.enableAiFilter': 'Enable AI Intelligent Decision Filter',
- 'trading-assistant.form.enableAiFilterHint': 'When enabled, indicator signals will be filtered by AI to improve trading quality',
- 'trading-assistant.form.aiFilterPrompt': 'Custom Prompt',
- 'trading-assistant.form.aiFilterPromptHint': 'Provide custom instructions for AI filtering, leave blank to use system default',
- 'trading-assistant.validation.strategyTypeRequired': 'Please select a strategy type',
- 'trading-assistant.validation.marketCategoryRequired': 'Please select a market category',
- 'trading-assistant.form.advancedSettings': 'Advanced Settings',
- 'trading-assistant.form.orderMode': 'Order Mode',
- 'trading-assistant.form.orderModeMaker': 'Maker (Limit)',
- 'trading-assistant.form.orderModeTaker': 'Taker (Market)',
- 'trading-assistant.form.orderModeHint': 'Maker mode uses limit orders with lower fees; Taker mode executes immediately with higher fees',
- 'trading-assistant.form.makerWaitSec': 'Maker Wait Time (seconds)',
- 'trading-assistant.form.makerWaitSecHint': 'Time to wait for order fill before canceling and retrying',
- 'trading-assistant.form.makerRetries': 'Maker Retries',
- 'trading-assistant.form.makerRetriesHint': 'Maximum number of retries when maker order is not filled',
- 'trading-assistant.form.fallbackToMarket': 'Fallback to Market on failure',
- 'trading-assistant.form.fallbackToMarketHint': 'If limit order (open/close) is not filled, downgrade to market order to ensure execution',
- 'trading-assistant.form.marginMode': 'Margin Mode',
- 'trading-assistant.form.marginModeCross': 'Cross Margin',
- 'trading-assistant.form.marginModeIsolated': 'Isolated Margin',
- 'trading-assistant.form.stopLossPct': 'Stop Loss (%)',
- 'trading-assistant.form.stopLossPctHint': 'Set stop loss percentage, 0 means disabled',
- 'trading-assistant.form.takeProfitPct': 'Take Profit (%)',
- 'trading-assistant.form.takeProfitPctHint': 'Set take profit percentage, 0 means disabled',
- 'trading-assistant.form.commission': 'Commission (%)',
- 'trading-assistant.form.commissionHint': 'Trading fee percentage (optional)',
- 'trading-assistant.form.slippage': 'Slippage (%)',
- 'trading-assistant.form.slippageHint': 'Estimated slippage percentage (optional)',
- 'trading-assistant.form.executionMode': 'Execution',
- 'trading-assistant.form.executionModeSignal': 'Signal only (push notifications)',
- 'trading-assistant.form.executionModeLive': 'Live trading',
- 'trading-assistant.form.liveTradingCryptoOnlyHint': 'Live trading is available for Crypto only. Other markets can only push signals.',
- 'trading-assistant.form.liveTradingNotSupportedHint': 'Live trading is not available for this market',
- 'trading-assistant.form.broker': 'Broker',
- 'trading-assistant.form.localDeploymentRequired': 'โ ๏ธ Local Deployment Required',
- 'trading-assistant.form.localDeploymentHint': 'IBKR and MT5 are external trading interfaces that require local deployment of QuantDinger. Cloud SaaS mode is not supported. Please ensure you have installed and configured the trading software (TWS/IB Gateway or MT5 terminal) on your local machine.',
- 'trading-assistant.form.ibkrConnectionTitle': 'Interactive Brokers Connection',
- 'trading-assistant.form.ibkrConnectionHint': 'Make sure TWS or IB Gateway is running with API enabled',
- 'trading-assistant.validation.brokerRequired': 'Please select a broker',
- 'trading-assistant.placeholders.selectBroker': 'Select broker',
- 'trading-assistant.brokerNames': {
- 'ibkr': 'Interactive Brokers (IBKR)',
- 'mt5': 'MetaTrader 5 (MT5)',
- 'mt4': 'MetaTrader 4 (MT4)',
- 'futu': 'Futu Securities',
- 'tiger': 'Tiger Brokers',
- 'td': 'TD Ameritrade',
- 'schwab': 'Charles Schwab'
- },
- 'trading-assistant.form.ibkrHost': 'Host',
- 'trading-assistant.form.ibkrPort': 'Port',
- 'trading-assistant.form.ibkrPortHint': 'TWS Live:7497, TWS Paper:7496, Gateway Live:4001, Gateway Paper:4002',
- 'trading-assistant.form.ibkrClientId': 'Client ID',
- 'trading-assistant.form.ibkrAccount': 'Account',
- 'trading-assistant.form.ibkrAccountHint': 'Leave empty to auto-select first account. Specify for multi-account users.',
- 'trading-assistant.placeholders.ibkrAccount': 'Optional, e.g. U1234567',
- 'trading-assistant.exchange.ibkrConnectionSuccess': 'IBKR connected successfully',
- 'trading-assistant.exchange.ibkrConnectionFailed': 'IBKR connection failed. Please check if TWS/Gateway is running.',
- 'trading-assistant.exchange.checkLocalDeployment': 'Please ensure you are running locally. Cloud SaaS does not support external trading interfaces.',
- // MT5/Forex configuration
- 'trading-assistant.form.forexBroker': 'Forex Broker',
- 'trading-assistant.form.mt5ConnectionTitle': 'MetaTrader 5 Connection',
- 'trading-assistant.form.mt5ConnectionHint': 'Make sure MT5 terminal is running and logged in (Windows only)',
- 'trading-assistant.form.mt5Server': 'Server',
- 'trading-assistant.form.mt5ServerHint': 'Broker server name (e.g., ICMarkets-Demo)',
- 'trading-assistant.form.mt5Login': 'Account Number',
- 'trading-assistant.form.mt5Password': 'Password',
- 'trading-assistant.form.mt5TerminalPath': 'MT5 Terminal Path (Optional)',
- 'trading-assistant.form.mt5TerminalPathHint': 'If MT5 terminal is not installed in the default location, specify the full path to terminal64.exe (e.g., C:\\Program Files\\MetaTrader 5\\terminal64.exe)',
- 'trading-assistant.placeholders.mt5Server': 'e.g., ICMarkets-Demo',
- 'trading-assistant.placeholders.mt5Login': 'e.g., 12345678',
- 'trading-assistant.placeholders.mt5Password': 'Your MT5 password',
- 'trading-assistant.placeholders.mt5TerminalPath': 'e.g., C:\\Program Files\\MetaTrader 5\\terminal64.exe',
- 'trading-assistant.validation.mt5ServerRequired': 'Please enter MT5 server',
- 'trading-assistant.validation.mt5LoginRequired': 'Please enter MT5 account number',
- 'trading-assistant.validation.mt5PasswordRequired': 'Please enter MT5 password',
- 'trading-assistant.validation.portfolioSizeRequired': 'Please enter portfolio size',
- 'trading-assistant.validation.longRatioRequired': 'Please enter long ratio',
- 'trading-assistant.exchange.mt5ConnectionSuccess': 'MT5 connected successfully',
- 'trading-assistant.exchange.mt5ConnectionFailed': 'MT5 connection failed. Please check if terminal is running.',
- 'trading-assistant.form.notifyChannels': 'Notification Channels',
- 'trading-assistant.form.notifyChannelsHint': 'Choose how you want to receive buy/sell and risk-management signals.',
- 'trading-assistant.notify.browser': 'Browser',
- 'trading-assistant.notify.email': 'Email',
- 'trading-assistant.notify.phone': 'Phone',
- 'trading-assistant.notify.telegram': 'Telegram',
- 'trading-assistant.notify.discord': 'Discord',
- 'trading-assistant.notify.webhook': 'Webhook',
- 'trading-assistant.form.notifyEmail': 'Email',
- 'trading-assistant.form.notifyPhone': 'Phone number',
- 'trading-assistant.form.notifyTelegram': 'Telegram (chat id / username)',
- 'trading-assistant.form.notifyDiscord': 'Discord (webhook url)',
- 'trading-assistant.form.notifyWebhook': 'Webhook URL',
- 'trading-assistant.form.liveTradingConfigTitle': 'Exchange Credentials',
- 'trading-assistant.form.liveTradingConfigHint': 'Provide your exchange API credentials. You can test the connection before saving.',
- 'trading-assistant.form.savedCredential': 'Saved credential',
- 'trading-assistant.form.savedCredentialHint': 'Select a saved credential to auto-fill API keys (optional).',
- 'trading-assistant.form.saveCredential': 'Save this credential for future use',
- 'trading-assistant.form.credentialName': 'Credential name (optional)',
- 'trading-assistant.form.signalMode': 'Signal Mode',
- 'trading-assistant.form.signalModeConfirmed': 'Confirmed',
- 'trading-assistant.form.signalModeAggressive': 'Aggressive',
- 'trading-assistant.form.signalModeHint': 'Confirmed: only check completed candles; Aggressive: also check forming candles',
- 'trading-assistant.form.cancel': 'Cancel',
- 'trading-assistant.form.prev': 'Previous',
- 'trading-assistant.form.next': 'Next',
- 'trading-assistant.form.confirmCreate': 'Confirm Create',
- 'trading-assistant.form.confirmEdit': 'Confirm Edit',
- 'trading-assistant.messages.createSuccess': 'Strategy created successfully',
- 'trading-assistant.messages.createFailed': 'Failed to create strategy',
- 'trading-assistant.messages.updateSuccess': 'Strategy updated successfully',
- 'trading-assistant.messages.updateFailed': 'Failed to update strategy',
- 'trading-assistant.messages.deleteSuccess': 'Strategy deleted successfully',
- 'trading-assistant.messages.deleteFailed': 'Failed to delete strategy',
- 'trading-assistant.messages.startSuccess': 'Strategy started successfully',
- 'trading-assistant.messages.startFailed': 'Failed to start strategy',
- 'trading-assistant.messages.stopSuccess': 'Strategy stopped successfully',
- 'trading-assistant.messages.stopFailed': 'Failed to stop strategy',
- 'trading-assistant.messages.loadFailed': 'Failed to load strategy list',
- 'trading-assistant.messages.runningWarning': 'Strategy is running, please stop it before editing',
- 'trading-assistant.messages.deleteConfirmWithName': 'Are you sure you want to delete strategy "{name}"? This action cannot be undone.',
- 'trading-assistant.messages.deleteConfirm': 'Are you sure you want to delete this strategy? This action cannot be undone.',
- 'trading-assistant.messages.loadTradesFailed': 'Failed to load trading records',
- 'trading-assistant.messages.loadPositionsFailed': 'Failed to load position records',
- 'trading-assistant.messages.loadEquityFailed': 'Failed to load equity curve',
- 'trading-assistant.messages.loadIndicatorsFailed': 'Failed to load indicator list, please try again later',
- 'trading-assistant.messages.spotLimitations': 'Spot trading has been automatically set to long only with 1x leverage',
- 'trading-assistant.messages.autoFillApiConfig': 'Auto-filled API configuration for this exchange from history',
- 'trading-assistant.messages.batchCreateSuccess': 'Successfully created {count} strategies',
- 'trading-assistant.messages.batchStartSuccess': 'Successfully started {count} strategies',
- 'trading-assistant.messages.batchStartFailed': 'Failed to start strategies',
- 'trading-assistant.messages.batchStopSuccess': 'Successfully stopped {count} strategies',
- 'trading-assistant.messages.batchStopFailed': 'Failed to stop strategies',
- 'trading-assistant.messages.batchDeleteSuccess': 'Successfully deleted {count} strategies',
- 'trading-assistant.messages.batchDeleteFailed': 'Failed to delete strategies',
- 'trading-assistant.messages.batchDeleteConfirm': 'Are you sure you want to delete {count} strategies in group "{name}"? This action cannot be undone.',
- 'trading-assistant.placeholders.selectIndicator': 'Please select an indicator',
- 'trading-assistant.placeholders.selectExchange': 'Please select an exchange',
- 'trading-assistant.placeholders.selectMarketCategory': 'Please select market category',
- 'trading-assistant.placeholders.inputApiKey': 'Please enter API Key',
- 'trading-assistant.placeholders.inputSecretKey': 'Please enter Secret Key',
- 'trading-assistant.placeholders.inputPassphrase': 'Please enter Passphrase',
- 'trading-assistant.placeholders.inputStrategyName': 'Please enter strategy name',
- 'trading-assistant.placeholders.selectSymbol': 'Please select trading pair',
- 'trading-assistant.placeholders.selectSymbols': 'Please select trading pairs (multi-select)',
- 'trading-assistant.placeholders.inputSymbol': 'Please enter symbol',
- 'trading-assistant.placeholders.selectTimeframe': 'Please select timeframe',
- 'trading-assistant.placeholders.selectKlinePeriod': 'Please select K-line period',
- 'trading-assistant.placeholders.inputAiFilterPrompt': 'Please enter custom prompt (optional)',
- 'trading-assistant.placeholders.inputEmail': 'Please enter email',
- 'trading-assistant.placeholders.inputPhone': 'Please enter phone number',
- 'trading-assistant.placeholders.inputTelegram': 'Please enter Telegram chat id / username',
- 'trading-assistant.placeholders.inputDiscord': 'Please enter Discord webhook url',
- 'trading-assistant.placeholders.inputWebhook': 'Please enter webhook url',
- 'trading-assistant.placeholders.selectSavedCredential': 'Select saved credential',
- 'trading-assistant.placeholders.inputCredentialName': 'For example: Binance main key',
- 'trading-assistant.validation.indicatorRequired': 'Please select an indicator',
- 'trading-assistant.validation.exchangeRequired': 'Please select an exchange',
- 'trading-assistant.validation.apiKeyRequired': 'Please enter API Key',
- 'trading-assistant.validation.secretKeyRequired': 'Please enter Secret Key',
- 'trading-assistant.validation.passphraseRequired': 'Please enter Passphrase',
- 'trading-assistant.validation.exchangeConfigIncomplete': 'Please fill in complete exchange configuration information',
- 'trading-assistant.validation.testConnectionRequired': 'Please click "Test Connection" button and ensure the connection is successful',
- 'trading-assistant.validation.testConnectionFailed': 'Connection test failed, please check the configuration and test again',
- 'trading-assistant.validation.strategyNameRequired': 'Please enter strategy name',
- 'trading-assistant.validation.symbolRequired': 'Please select trading pair',
- 'trading-assistant.validation.symbolsRequired': 'Please select at least one trading pair',
- 'trading-assistant.validation.initialCapitalRequired': 'Please enter initial capital',
- 'trading-assistant.validation.leverageRequired': 'Please enter leverage',
- 'trading-assistant.validation.emailInvalid': 'Invalid email address',
- 'trading-assistant.validation.notifyChannelRequired': 'Please select at least one notification channel',
- 'trading-assistant.table.time': 'Time',
- 'trading-assistant.table.type': 'Type',
- 'trading-assistant.table.price': 'Price',
- 'trading-assistant.table.amount': 'Amount',
- 'trading-assistant.table.value': 'Value',
- 'trading-assistant.table.commission': 'Commission',
- 'trading-assistant.table.symbol': 'Trading Pair',
- 'trading-assistant.table.side': 'Side',
- 'trading-assistant.table.size': 'Position Size',
- 'trading-assistant.table.entryPrice': 'Entry Price',
- 'trading-assistant.table.currentPrice': 'Current Price',
- 'trading-assistant.table.unrealizedPnl': 'Unrealized P&L',
- 'trading-assistant.table.pnlPercent': 'P&L %',
- 'trading-assistant.table.buy': 'Buy',
- 'trading-assistant.table.sell': 'Sell',
- 'trading-assistant.table.long': 'Long',
- 'trading-assistant.table.short': 'Short',
- 'trading-assistant.table.noPositions': 'No positions',
- 'trading-assistant.detail.title': 'Strategy Details',
- 'trading-assistant.detail.strategyName': 'Strategy Name',
- 'trading-assistant.detail.strategyType': 'Strategy Type',
- 'trading-assistant.detail.status': 'Status',
- 'trading-assistant.detail.tradingMode': 'Trading Mode',
- 'trading-assistant.detail.exchange': 'Exchange',
- 'trading-assistant.detail.initialCapital': 'Initial Capital',
- 'trading-assistant.detail.totalInvestment': 'Total Investment',
- 'trading-assistant.detail.currentEquity': 'Current Equity',
- 'trading-assistant.detail.totalPnl': 'Total P&L',
- 'trading-assistant.detail.indicatorName': 'Indicator Name',
- 'trading-assistant.detail.maxLeverage': 'Max Leverage',
- 'trading-assistant.detail.decideInterval': 'Decision Interval',
- 'trading-assistant.detail.symbols': 'Trading Symbols',
- 'trading-assistant.detail.createdAt': 'Created At',
- 'trading-assistant.detail.updatedAt': 'Updated At',
- 'trading-assistant.detail.llmConfig': 'AI Model Configuration',
- 'trading-assistant.detail.exchangeConfig': 'Exchange Configuration',
- 'trading-assistant.detail.provider': 'Provider',
- 'trading-assistant.detail.modelId': 'Model ID',
- 'trading-assistant.detail.close': 'Close',
- 'trading-assistant.detail.loadFailed': 'Failed to load strategy details',
- 'trading-assistant.equity.noData': 'No equity data',
- 'trading-assistant.equity.equity': 'Equity',
- 'trading-assistant.exchange.tradingMode': 'Trading Mode',
- 'trading-assistant.exchange.virtual': 'Virtual Trading',
- 'trading-assistant.exchange.live': 'Live Trading',
- 'trading-assistant.exchange.selectExchange': 'Select Exchange',
- 'trading-assistant.exchange.walletAddress': 'Wallet Address',
- 'trading-assistant.exchange.walletAddressPlaceholder': 'Please enter wallet address (starts with 0x)',
- 'trading-assistant.exchange.privateKey': 'Private Key',
- 'trading-assistant.exchange.privateKeyPlaceholder': 'Please enter private key (64 characters)',
- 'trading-assistant.exchange.testConnection': 'Test Connection',
- 'trading-assistant.exchange.connectionSuccess': 'Connection successful',
- 'trading-assistant.exchange.connectionFailed': 'Connection failed',
- 'trading-assistant.exchange.testFailed': 'Connection test failed',
- 'trading-assistant.exchange.fillComplete': 'Please fill in complete exchange configuration information',
- 'trading-assistant.exchange.ipWhitelistTip': 'Please add the following IPs to the whitelist in your exchange API settings:',
- 'trading-assistant.strategyTypeOptions.ai': 'AI-Driven Strategy',
- 'trading-assistant.strategyTypeOptions.indicator': 'Indicator Strategy',
- 'trading-assistant.strategyTypeOptions.aiDeveloping': 'AI-Driven Strategy feature is under development, stay tuned',
- 'trading-assistant.strategyTypeOptions.aiDevelopingWarning': 'AI-Driven Strategy feature is under development',
- 'trading-assistant.indicatorType.trend': 'Trend',
- 'trading-assistant.indicatorType.momentum': 'Momentum',
- 'trading-assistant.indicatorType.volatility': 'Volatility',
- 'trading-assistant.indicatorType.volume': 'Volume',
- 'trading-assistant.indicatorType.custom': 'Custom',
- 'trading-assistant.exchangeNames': {
- 'okx': 'OKX',
- 'binance': 'Binance',
- 'hyperliquid': 'Hyperliquid',
- 'blockchaincom': 'Blockchain.com',
- 'coinbaseexchange': 'Coinbase',
- 'gate': 'Gate.io',
- 'mexc': 'MEXC',
- 'kraken': 'Kraken',
- 'bitfinex': 'Bitfinex',
- 'bybit': 'Bybit',
- 'kucoin': 'KuCoin',
- 'huobi': 'Huobi',
- 'bitget': 'Bitget',
- 'bitmex': 'BitMEX',
- 'deribit': 'Deribit',
- 'phemex': 'Phemex',
- 'bitmart': 'BitMart',
- 'bitstamp': 'Bitstamp',
- 'bittrex': 'Bittrex',
- 'poloniex': 'Poloniex',
- 'gemini': 'Gemini',
- 'cryptocom': 'Crypto.com',
- 'bitflyer': 'bitFlyer',
- 'upbit': 'Upbit',
- 'bithumb': 'Bithumb',
- 'coinone': 'Coinone',
- 'zb': 'ZB',
- 'lbank': 'LBank',
- 'bibox': 'Bibox',
- 'bigone': 'BigONE',
- 'bitrue': 'Bitrue',
- 'coinex': 'CoinEx',
- 'digifinex': 'DigiFinex',
- 'ftx': 'FTX',
- 'ftxus': 'FTX US',
- 'binanceus': 'Binance US',
- 'binancecoinm': 'Binance COIN-M',
- 'binanceusdm': 'Binance USDโ-M',
- 'ibkr': 'Interactive Brokers (IBKR)',
- 'deepcoin': 'Deepcoin'
- },
- 'ai-trading-assistant.title': 'AI Trading Assistant',
- 'ai-trading-assistant.strategyList': 'Strategy List',
- 'ai-trading-assistant.createStrategy': 'Create Strategy',
- 'ai-trading-assistant.noStrategy': 'No strategies',
- 'ai-trading-assistant.selectStrategy': 'Please select a strategy from the left to view details',
- 'ai-trading-assistant.startStrategy': 'Start Strategy',
- 'ai-trading-assistant.stopStrategy': 'Stop Strategy',
- 'ai-trading-assistant.editStrategy': 'Edit Strategy',
- 'ai-trading-assistant.deleteStrategy': 'Delete Strategy',
- 'ai-trading-assistant.status.running': 'Running',
- 'ai-trading-assistant.status.stopped': 'Stopped',
- 'ai-trading-assistant.status.error': 'Error',
- 'ai-trading-assistant.tabs.tradingRecords': 'Trading Records',
- 'ai-trading-assistant.tabs.positions': 'Positions',
- 'ai-trading-assistant.tabs.aiDecisions': 'AI Decisions',
- 'ai-trading-assistant.tabs.equityCurve': 'Equity Curve',
- 'ai-trading-assistant.form.createTitle': 'Create AI Trading Strategy',
- 'ai-trading-assistant.form.editTitle': 'Edit AI Trading Strategy',
- 'ai-trading-assistant.form.strategyName': 'Strategy Name',
- 'ai-trading-assistant.form.modelId': 'AI Model',
- 'ai-trading-assistant.form.modelIdHint': 'Using system OpenRouter service, no API Key configuration needed',
- 'ai-trading-assistant.form.decideInterval': 'Decision Interval',
- 'ai-trading-assistant.form.decideInterval5m': '5 Minutes',
- 'ai-trading-assistant.form.decideInterval10m': '10 Minutes',
- 'ai-trading-assistant.form.decideInterval30m': '30 Minutes',
- 'ai-trading-assistant.form.decideInterval1h': '1 Hour',
- 'ai-trading-assistant.form.decideInterval4h': '4 Hours',
- 'ai-trading-assistant.form.decideInterval1d': '1 Day',
- 'ai-trading-assistant.form.decideInterval1w': '1 Week',
- 'ai-trading-assistant.form.decideIntervalHint': 'Time interval for AI decision making',
- 'ai-trading-assistant.form.runPeriod': 'Run Period',
- 'ai-trading-assistant.form.runPeriodHint': 'Start and end time for strategy execution',
- 'ai-trading-assistant.form.startDate': 'Start Date',
- 'ai-trading-assistant.form.endDate': 'End Date',
- 'ai-trading-assistant.form.qdtCostTitle': 'QDT Cost Notice',
- 'ai-trading-assistant.form.qdtCostHint': 'Each AI decision will cost {cost} QDT. Please ensure your account has sufficient QDT balance. During strategy execution, each decision will be charged in real-time.',
- 'ai-trading-assistant.form.apiKey': 'API Key',
- 'ai-trading-assistant.form.exchange': 'Select Exchange',
- 'ai-trading-assistant.form.secretKey': 'Secret Key',
- 'ai-trading-assistant.form.passphrase': 'Passphrase',
- 'ai-trading-assistant.form.testConnection': 'Test Connection',
- 'ai-trading-assistant.form.symbol': 'Trading Pair',
- 'ai-trading-assistant.form.symbolHint': 'Select the trading pair to trade',
- 'ai-trading-assistant.form.initialCapital': 'Initial Capital (Margin)',
- 'ai-trading-assistant.form.leverage': 'Leverage',
- 'ai-trading-assistant.form.timeframe': 'Timeframe',
- 'ai-trading-assistant.form.timeframe1m': '1 Minute',
- 'ai-trading-assistant.form.timeframe5m': '5 Minutes',
- 'ai-trading-assistant.form.timeframe15m': '15 Minutes',
- 'ai-trading-assistant.form.timeframe30m': '30 Minutes',
- 'ai-trading-assistant.form.timeframe1H': '1 Hour',
- 'ai-trading-assistant.form.timeframe4H': '4 Hours',
- 'ai-trading-assistant.form.timeframe1D': '1 Day',
- 'ai-trading-assistant.form.marketType': 'Market Type',
- 'ai-trading-assistant.form.marketTypeFutures': 'Futures',
- 'ai-trading-assistant.form.marketTypeSpot': 'Spot',
- 'ai-trading-assistant.form.totalPnl': 'Total PnL',
- 'ai-trading-assistant.form.customPrompt': 'Custom Prompt',
- 'ai-trading-assistant.form.customPromptHint': 'Optional, used to customize AI trading strategy and decision logic',
- 'ai-trading-assistant.form.cancel': 'Cancel',
- 'ai-trading-assistant.form.prev': 'Previous',
- 'ai-trading-assistant.form.next': 'Next',
- 'ai-trading-assistant.form.confirmCreate': 'Confirm Create',
- 'ai-trading-assistant.form.confirmEdit': 'Confirm Edit',
- 'ai-trading-assistant.messages.createSuccess': 'Strategy created successfully',
- 'ai-trading-assistant.messages.createFailed': 'Failed to create strategy',
- 'ai-trading-assistant.messages.updateSuccess': 'Strategy updated successfully',
- 'ai-trading-assistant.messages.updateFailed': 'Failed to update strategy',
- 'ai-trading-assistant.messages.deleteSuccess': 'Strategy deleted successfully',
- 'ai-trading-assistant.messages.deleteFailed': 'Failed to delete strategy',
- 'ai-trading-assistant.messages.startSuccess': 'Strategy started successfully',
- 'ai-trading-assistant.messages.startFailed': 'Failed to start strategy',
- 'ai-trading-assistant.messages.stopSuccess': 'Strategy stopped successfully',
- 'ai-trading-assistant.messages.stopFailed': 'Failed to stop strategy',
- 'ai-trading-assistant.messages.loadFailed': 'Failed to load strategy list',
- 'ai-trading-assistant.messages.loadDecisionsFailed': 'Failed to load AI decision records',
- 'ai-trading-assistant.messages.deleteConfirm': 'Are you sure you want to delete this strategy? This action cannot be undone.',
- 'ai-trading-assistant.placeholders.inputStrategyName': 'Please enter strategy name',
- 'ai-trading-assistant.placeholders.selectModelId': 'Please select AI model',
- 'ai-trading-assistant.placeholders.selectDecideInterval': 'Please select decision interval',
- 'ai-trading-assistant.placeholders.startTime': 'Start Time',
- 'ai-trading-assistant.placeholders.endTime': 'End Time',
- 'ai-trading-assistant.placeholders.inputApiKey': 'Please enter API Key',
- 'ai-trading-assistant.placeholders.selectExchange': 'Please select an exchange',
- 'ai-trading-assistant.placeholders.inputSecretKey': 'Please enter Secret Key',
- 'ai-trading-assistant.placeholders.inputPassphrase': 'Please enter Passphrase',
- 'ai-trading-assistant.placeholders.selectSymbol': 'Please select trading pair, e.g.: BTC/USDT',
- 'ai-trading-assistant.placeholders.selectTimeframe': 'Please select timeframe',
- 'ai-trading-assistant.placeholders.inputCustomPrompt': 'Please enter custom prompt (optional)',
- 'ai-trading-assistant.validation.strategyNameRequired': 'Please enter strategy name',
- 'ai-trading-assistant.validation.modelIdRequired': 'Please select AI model',
- 'ai-trading-assistant.validation.runPeriodRequired': 'Please select run period',
- 'ai-trading-assistant.validation.apiKeyRequired': 'Please enter API Key',
- 'ai-trading-assistant.validation.exchangeRequired': 'Please select an exchange',
- 'ai-trading-assistant.validation.secretKeyRequired': 'Please enter Secret Key',
- 'ai-trading-assistant.validation.symbolRequired': 'Please select trading pair',
- 'ai-trading-assistant.validation.initialCapitalRequired': 'Please enter initial capital',
- 'ai-trading-assistant.table.time': 'Time',
- 'ai-trading-assistant.table.type': 'Type',
- 'ai-trading-assistant.table.price': 'Price',
- 'ai-trading-assistant.table.amount': 'Amount',
- 'ai-trading-assistant.table.value': 'Value',
- 'ai-trading-assistant.table.symbol': 'Trading Pair',
- 'ai-trading-assistant.table.side': 'Side',
- 'ai-trading-assistant.table.size': 'Position Size',
- 'ai-trading-assistant.table.entryPrice': 'Entry Price',
- 'ai-trading-assistant.table.currentPrice': 'Current Price',
- 'ai-trading-assistant.table.unrealizedPnl': 'Unrealized P&L',
- 'ai-trading-assistant.table.profit': 'Profit',
- 'ai-trading-assistant.table.openLong': 'Open Long',
- 'ai-trading-assistant.table.closeLong': 'Close Long',
- 'ai-trading-assistant.table.openShort': 'Open Short',
- 'ai-trading-assistant.table.closeShort': 'Close Short',
- 'ai-trading-assistant.table.addLong': 'Add Long',
- 'ai-trading-assistant.table.addShort': 'Add Short',
- 'ai-trading-assistant.table.closeShortProfit': 'Close Short (TP)',
- 'ai-trading-assistant.table.closeShortStop': 'Close Short (SL)',
- 'ai-trading-assistant.table.closeLongProfit': 'Close Long (TP)',
- 'ai-trading-assistant.table.closeLongStop': 'Close Long (SL)',
- 'ai-trading-assistant.table.buy': 'Buy',
- 'ai-trading-assistant.table.sell': 'Sell',
- 'ai-trading-assistant.table.long': 'Long',
- 'ai-trading-assistant.table.short': 'Short',
- 'ai-trading-assistant.table.hold': 'Hold',
- 'ai-trading-assistant.table.reasoning': 'Analysis Reasoning',
- 'ai-trading-assistant.table.decisions': 'Decisions',
- 'ai-trading-assistant.table.riskAssessment': 'Risk',
- 'ai-trading-assistant.table.confidence': 'Confidence',
- 'ai-trading-assistant.table.totalRecords': 'Total {total} records',
- 'ai-trading-assistant.table.noPositions': 'No positions',
- 'ai-trading-assistant.detail.title': 'Strategy Details',
- 'ai-trading-assistant.equity.noData': 'No equity data',
- 'ai-trading-assistant.equity.equity': 'Equity',
- 'ai-trading-assistant.exchange.testFailed': 'Connection test failed',
- 'ai-trading-assistant.exchange.connectionSuccess': 'Connection successful',
- 'ai-trading-assistant.exchange.connectionFailed': 'Connection failed',
- 'ai-trading-assistant.form.advancedSettings': 'Advanced Settings',
- 'ai-trading-assistant.form.orderMode': 'Order Mode',
- 'ai-trading-assistant.form.orderModeMaker': 'Maker (Limit)',
- 'ai-trading-assistant.form.orderModeTaker': 'Taker (Market)',
- 'ai-trading-assistant.form.orderModeHint': 'Maker mode uses limit orders with lower fees; Taker mode executes immediately with higher fees',
- 'ai-trading-assistant.form.makerWaitSec': 'Maker Wait Time (seconds)',
- 'ai-trading-assistant.form.makerWaitSecHint': 'Time to wait for order fill before canceling and retrying',
- 'ai-trading-assistant.form.makerRetries': 'Maker Retries',
- 'ai-trading-assistant.form.makerRetriesHint': 'Maximum number of retries when maker order is not filled',
- 'ai-trading-assistant.form.fallbackToMarket': 'Fallback to Market on failure',
- 'ai-trading-assistant.form.fallbackToMarketHint': 'If limit order (open/close) is not filled, downgrade to market order to ensure execution',
- 'ai-trading-assistant.form.marginMode': 'Margin Mode',
- 'ai-trading-assistant.form.marginModeCross': 'Cross Margin',
- 'ai-trading-assistant.form.marginModeIsolated': 'Isolated Margin',
- 'ai-analysis.title': 'Quantum Trading Engine',
- 'ai-analysis.system.online': 'ONLINE',
- 'ai-analysis.system.agents': 'AGENTS',
- 'ai-analysis.system.active': 'ACTIVE',
- 'ai-analysis.system.stage': 'STAGE',
- 'ai-analysis.panel.roster': 'AGENTS ROSTER',
- 'ai-analysis.panel.thinking': 'Thinking...',
- 'ai-analysis.panel.done': 'Done',
- 'ai-analysis.panel.standby': 'Standby',
- 'ai-analysis.input.title': 'QUANTUM TRADING ENGINE',
- 'ai-analysis.input.placeholder': 'SELECT TARGET ASSET (e.g. BTC/USDT)',
- 'ai-analysis.input.watchlist': 'Watchlist',
- 'ai-analysis.input.start': 'START ANALYSIS',
- 'ai-analysis.input.recent': 'RECENT MISSIONS:',
- 'ai-analysis.vis.stage': 'STAGE',
- 'ai-analysis.vis.processing': 'PROCESSING',
- 'ai-analysis.result.complete': 'ANALYSIS COMPLETE',
- 'ai-analysis.result.signal': 'FINAL SIGNAL',
- 'ai-analysis.result.confidence': 'CONFIDENCE:',
- 'ai-analysis.result.new': 'NEW ANALYSIS',
- 'ai-analysis.result.full': 'VIEW FULL DOSSIER',
- 'ai-analysis.logs.title': 'SYSTEM LOGS',
- 'ai-analysis.modal.title': 'CLASSIFIED REPORT',
- 'ai-analysis.modal.fundamental': 'FUNDAMENTAL ANALYSIS',
- 'ai-analysis.modal.technical': 'TECHNICAL ANALYSIS',
- 'ai-analysis.modal.sentiment': 'SENTIMENT ANALYSIS',
- 'ai-analysis.modal.risk': 'RISK ASSESSMENT',
- 'ai-analysis.stage.idle': 'IDLE',
- 'ai-analysis.stage.1': 'PHASE 1: MULTI-DIMENSIONAL ANALYSIS',
- 'ai-analysis.stage.2': 'PHASE 2: BULL/BEAR DEBATE',
- 'ai-analysis.stage.3': 'PHASE 3: STRATEGIC PLANNING',
- 'ai-analysis.stage.4': 'PHASE 4: RISK COMMITTEE REVIEW',
- 'ai-analysis.stage.complete': 'COMPLETE',
- 'ai-analysis.agent.investment_director': 'Investment Director',
- 'ai-analysis.agent.role.investment_director': 'Comprehensive Analysis & Final Conclusion',
- 'ai-analysis.agent.market': 'Market Analyst',
- 'ai-analysis.agent.role.market': 'Technical & Market Data',
- 'ai-analysis.agent.fundamental': 'Fundamental Analyst',
- 'ai-analysis.agent.role.fundamental': 'Financials & Valuation',
- 'ai-analysis.agent.technical': 'Technical Analyst',
- 'ai-analysis.agent.role.technical': 'Technical Indicators & Charts',
- 'ai-analysis.agent.news': 'News Analyst',
- 'ai-analysis.agent.role.news': 'Global News Filter',
- 'ai-analysis.agent.sentiment': 'Sentiment Analyst',
- 'ai-analysis.agent.role.sentiment': 'Social & Emotional',
- 'ai-analysis.agent.risk': 'Risk Analyst',
- 'ai-analysis.agent.role.risk': 'Basic Risk Check',
- 'ai-analysis.agent.bull': 'Bull Researcher',
- 'ai-analysis.agent.role.bull': 'Growth Catalyst Hunter',
- 'ai-analysis.agent.bear': 'Bear Researcher',
- 'ai-analysis.agent.role.bear': 'Risk & Flaw Hunter',
- 'ai-analysis.agent.manager': 'Research Manager',
- 'ai-analysis.agent.role.manager': 'Debate Moderator',
- 'ai-analysis.agent.trader': 'Trader Agent',
- 'ai-analysis.agent.role.trader': 'Execution Strategist',
- 'ai-analysis.agent.risky': 'Risky Analyst',
- 'ai-analysis.agent.role.risky': 'Aggressive Strategy',
- 'ai-analysis.agent.neutral': 'Neutral Analyst',
- 'ai-analysis.agent.role.neutral': 'Balanced Strategy',
- 'ai-analysis.agent.safe': 'Safe Analyst',
- 'ai-analysis.agent.role.safe': 'Conservative Strategy',
- 'ai-analysis.agent.cro': 'Risk Manager (CRO)',
- 'ai-analysis.agent.role.cro': 'Final Decision Authority',
- 'ai-analysis.script.market': 'Fetching OHLCV data from major exchanges...',
- 'ai-analysis.script.fundamental': 'Retrieving quarterly financial reports...',
- 'ai-analysis.script.technical': 'Analyzing technical indicators and chart patterns...',
- 'ai-analysis.script.news': 'Scanning global financial news feeds...',
- 'ai-analysis.script.sentiment': 'Analyzing social media trends...',
- 'ai-analysis.script.risk': 'Calculating historical volatility...',
- 'invite.inviteLink': 'Invite Link',
- 'invite.copy': 'Copy Link',
- 'invite.copySuccess': 'Copied successfully!',
- 'invite.copyFailed': 'Copy failed, please copy manually',
- 'invite.noInviteLink': 'Invite link not generated',
- 'invite.totalInvites': 'Total Invites',
- 'invite.totalReward': 'Total Reward',
- 'invite.rules': 'Invite Rules',
- 'invite.rule1': 'You will receive a reward for each friend you successfully invite to register',
- 'invite.rule2': 'When your invited friend completes their first transaction, you will receive an additional reward',
- 'invite.rule3': 'Invite rewards will be directly credited to your account',
- 'invite.inviteList': 'Invite List',
- 'invite.tasks': 'Task Center',
- 'invite.inviteeName': 'Invitee',
- 'invite.inviteTime': 'Invite Time',
- 'invite.status': 'Status',
- 'invite.reward': 'Reward',
- 'invite.active': 'Active',
- 'invite.inactive': 'Inactive',
- 'invite.completed': 'Completed',
- 'invite.claimed': 'Claimed',
- 'invite.pending': 'Pending',
- 'invite.goToTask': 'Go to Task',
- 'invite.claimReward': 'Claim Reward',
- 'invite.verify': 'Verify',
- 'invite.verifySuccess': 'Verification successful! Task completed',
- 'invite.verifyNotCompleted': 'Task not completed yet, please complete the task first',
- 'invite.verifyFailed': 'Verification failed, please try again later',
- 'invite.claimSuccess': 'Successfully claimed {reward} QDT!',
- 'invite.claimFailed': 'Claim failed, please try again later',
- 'invite.totalRecords': 'Total {total} records',
- 'invite.task.twitter.title': 'Share Tweet on X (Twitter)',
- 'invite.task.twitter.desc': 'Share our official tweet to your X (Twitter) account',
- 'invite.task.youtube.title': 'Follow our YouTube Channel',
- 'invite.task.youtube.desc': 'Subscribe and follow our official YouTube channel',
- 'invite.task.telegram.title': 'Join Telegram Group',
- 'invite.task.telegram.desc': 'Join our official Telegram community group',
- 'invite.task.discord.title': 'Join Discord Server',
- 'invite.task.discord.desc': 'Join our Discord community server',
- 'message': '-',
- 'layouts.usermenu.dialog.title': 'Message',
- 'layouts.usermenu.dialog.content': 'Are you sure you would like to logout?',
- 'layouts.userLayout.title': 'Clarity from Uncertainty',
- // Signal Robot
- 'signal-robot.title': 'Signal Robot Console',
- 'signal-robot.createBot': 'Create New Bot',
- 'signal-robot.search.nameOrSymbol': 'Name/Symbol',
- 'signal-robot.search.placeholder': 'Search bot name or symbol',
- 'signal-robot.search.status': 'Status',
- 'signal-robot.search.statusAll': 'All',
- 'signal-robot.search.statusRunning': 'Running',
- 'signal-robot.search.statusPaused': 'Paused',
- 'signal-robot.search.query': 'Query',
- 'signal-robot.search.reset': 'Reset',
- 'signal-robot.table.botName': 'Bot Name',
- 'signal-robot.table.symbolTimeframe': 'Symbol/Timeframe',
- 'signal-robot.table.triggerStrategy': 'Trigger Strategy',
- 'signal-robot.table.notificationChannels': 'Notification Channels',
- 'signal-robot.table.status': 'Status',
- 'signal-robot.table.action': 'Action',
- 'signal-robot.table.triggerConditions': '{count} trigger conditions',
- 'signal-robot.table.monitoring': 'Monitoring',
- 'signal-robot.table.paused': 'Paused',
- 'signal-robot.table.edit': 'Edit',
- 'signal-robot.table.pause': 'Pause',
- 'signal-robot.table.start': 'Start',
- 'signal-robot.table.delete': 'Delete',
- 'signal-robot.table.deleteConfirm': 'Are you sure you want to delete this bot?',
- 'signal-robot.table.deleteSuccess': 'Deleted successfully',
- 'signal-robot.table.startSuccess': 'Bot started',
- 'signal-robot.table.pauseSuccess': 'Bot paused',
- 'signal-robot.channel.telegram': 'Telegram',
- 'signal-robot.channel.discord': 'Discord',
- 'signal-robot.channel.email': 'Email',
- 'signal-robot.channel.webhook': 'Webhook',
- 'signal-robot.channel.browser': 'Browser Push',
- 'signal-robot.modal.createTitle': 'Create New Signal Robot',
- 'signal-robot.modal.editTitle': 'Edit Signal Robot',
- 'signal-robot.modal.step.basic': 'Basic Settings',
- 'signal-robot.modal.step.entry': 'Entry Strategy',
- 'signal-robot.modal.step.position': 'Position Management',
- 'signal-robot.modal.step.risk': 'Risk Control',
- 'signal-robot.modal.step.notify': 'Notification Config',
- 'signal-robot.modal.prev': 'Previous',
- 'signal-robot.modal.next': 'Next',
- 'signal-robot.modal.preview': 'Preview Backtest',
- 'signal-robot.modal.complete': 'Complete & Run',
- 'signal-robot.modal.saveSuccess': 'Saved successfully',
- 'signal-robot.modal.previewDeveloping': 'Preview feature is under development...',
- 'signal-robot.modal.basicInfoRequired': 'Please complete basic information',
- 'signal-robot.basic.alert': 'Set basic information for the bot',
- 'signal-robot.basic.title': 'Basic Information',
- 'signal-robot.basic.botName': 'Bot Name',
- 'signal-robot.basic.botNamePlaceholder': 'e.g.: BTC SuperTrend Strategy',
- 'signal-robot.basic.symbol': 'Trading Pair',
- 'signal-robot.basic.symbolPlaceholder': 'Select from watchlist',
- 'signal-robot.basic.noWatchlist': 'No watchlist items, please add in market page first',
- 'signal-robot.basic.timeframe': 'K-Line Period',
- 'signal-robot.basic.timeframe15m': '15 Minutes',
- 'signal-robot.basic.timeframe30m': '30 Minutes',
- 'signal-robot.basic.timeframe1h': '1 Hour',
- 'signal-robot.basic.timeframe4h': '4 Hours',
- 'signal-robot.basic.timeframe1d': '1 Day',
- 'signal-robot.basic.autoNameSuggestion': '{symbol} Signal Robot',
- 'signal-robot.entry.alert': 'Trigger entry signal when all conditions below are met',
- 'signal-robot.entry.condition': 'Condition {index}',
- 'signal-robot.entry.indicator': 'Indicator',
- 'signal-robot.entry.indicatorSupertrend': 'SuperTrend',
- 'signal-robot.entry.indicatorEma': 'EMA (Exponential Moving Average)',
- 'signal-robot.entry.indicatorRsi': 'RSI (Relative Strength Index)',
- 'signal-robot.entry.indicatorMacd': 'MACD',
- 'signal-robot.entry.indicatorBollinger': 'Bollinger Bands',
- 'signal-robot.entry.atrPeriod': 'ATR Period',
- 'signal-robot.entry.multiplier': 'Multiplier',
- 'signal-robot.entry.triggerSignal': 'Trigger Signal',
- 'signal-robot.entry.signalTrendBullish': 'Trend Bullish',
- 'signal-robot.entry.signalTrendBearish': 'Trend Bearish',
- 'signal-robot.entry.signalIsUptrend': 'Is Uptrend',
- 'signal-robot.entry.signalIsDowntrend': 'Is Downtrend',
- 'signal-robot.entry.period': 'Period',
- 'signal-robot.entry.compareCondition': 'Compare Condition',
- 'signal-robot.entry.priceAbove': 'Price > EMA (Price Above)',
- 'signal-robot.entry.priceBelow': 'Price < EMA (Price Below)',
- 'signal-robot.entry.crossUp': 'Price Crosses Above EMA (Golden Cross)',
- 'signal-robot.entry.crossDown': 'Price Crosses Below EMA (Death Cross)',
- 'signal-robot.entry.compare': 'Compare',
- 'signal-robot.entry.greaterThan': 'Greater Than',
- 'signal-robot.entry.lessThan': 'Less Than',
- 'signal-robot.entry.crossUpShort': 'Cross Up',
- 'signal-robot.entry.crossDownShort': 'Cross Down',
- 'signal-robot.entry.threshold': 'Threshold',
- 'signal-robot.entry.selectIndicator': 'Please select an indicator to configure parameters',
- 'signal-robot.entry.addCondition': 'Add Condition',
- 'signal-robot.position.alert': 'Configure initial position size, leverage and pyramiding rules',
- 'signal-robot.position.basicTitle': 'Basic Position Management',
- 'signal-robot.position.initialSize': 'Initial Size (Capital %)',
- 'signal-robot.position.initialSizeHint': 'Recommended 5% - 20%',
- 'signal-robot.position.leverage': 'Leverage',
- 'signal-robot.position.leverageHint': 'Please ensure your exchange account supports this leverage',
- 'signal-robot.position.maxPyramiding': 'Max Pyramiding Times',
- 'signal-robot.position.maxPyramidingHint': '0 means no pyramiding',
- 'signal-robot.position.pyramidingTitle': 'Pyramiding Rules',
- 'signal-robot.position.pyramidingEnabled': 'Enabled',
- 'signal-robot.position.pyramidingDisabled': 'Disabled',
- 'signal-robot.position.pyramidingCondition': 'Pyramiding Trigger Condition',
- 'signal-robot.position.priceRisePct': 'Price Rises (Long) / Falls (Short)',
- 'signal-robot.position.profitPct': 'Profit Reaches',
- 'signal-robot.position.triggerThreshold': 'Trigger Threshold (%)',
- 'signal-robot.position.triggerThresholdHint': 'e.g. 3%: add position once every 3% rise',
- 'signal-robot.position.addSize': 'Single Add Size (Capital %)',
- 'signal-robot.position.pyramidingDisabledHint': 'Pyramiding disabled, only initial position will be executed',
- 'signal-robot.risk.alert': 'Configure take profit, stop loss and exit rules',
- 'signal-robot.risk.stopLossTitle': 'Stop Loss',
- 'signal-robot.risk.stopLossEnabled': 'Enabled',
- 'signal-robot.risk.stopLossDisabled': 'Disabled',
- 'signal-robot.risk.stopLossType': 'Stop Loss Type',
- 'signal-robot.risk.stopLossFixedPct': 'Fixed Percentage',
- 'signal-robot.risk.stopLossAtrMultiplier': 'ATR Multiplier',
- 'signal-robot.risk.stopLossValue': 'Value',
- 'signal-robot.risk.stopLossFixedHint': 'e.g. 2%: stop loss when loss reaches 2%',
- 'signal-robot.risk.stopLossAtrHint': 'e.g. 2.0: stop loss when price touches ATR*2.0',
- 'signal-robot.risk.stopLossDisabledHint': 'Stop loss disabled (high risk)',
- 'signal-robot.risk.trailingStopTitle': 'Trailing Stop',
- 'signal-robot.risk.activationProfit': 'Activation Profit (%)',
- 'signal-robot.risk.activationProfitHint': 'Start trailing when profit reaches this level',
- 'signal-robot.risk.callbackPct': 'Callback (%)',
- 'signal-robot.risk.callbackPctHint': 'Trigger take profit when price falls from peak by this percentage',
- 'signal-robot.risk.trailingStopDisabledHint': 'Trailing stop disabled',
- 'signal-robot.risk.otherExitTitle': 'Other Exit Rules',
- 'signal-robot.risk.signalExit': 'Allow Signal Exit',
- 'signal-robot.risk.signalExitHint': 'Close position immediately when reverse signal appears (e.g. close long when short signal appears)',
- 'signal-robot.notify.alert': 'Configure notification methods when signal is triggered',
- 'signal-robot.notify.channelTitle': 'Notification Channels',
- 'signal-robot.notify.discordWebhook': 'Discord Webhook',
- 'signal-robot.notify.genericWebhook': 'Generic Webhook',
- 'signal-robot.notify.webhookUrl': 'Webhook URL',
- 'signal-robot.notify.webhookUrlPlaceholder': 'https://example.com/webhook',
- 'signal-robot.notify.discordUrl': 'Discord URL',
- 'signal-robot.notify.discordUrlPlaceholder': 'https://discord.com/api/webhooks/...',
- 'signal-robot.operator.greaterThan': 'Greater Than',
- 'signal-robot.operator.lessThan': 'Less Than',
- 'signal-robot.operator.equal': 'Equal',
- 'signal-robot.operator.goldenCross': 'Golden Cross',
- 'signal-robot.operator.deathCross': 'Death Cross',
- 'signal-robot.operator.increaseBy': 'Increase By',
- 'signal-robot.operator.decreaseBy': 'Decrease By',
- 'signal-robot.indicator.price': 'Price',
- 'signal-robot.indicator.rsi': 'RSI',
- 'signal-robot.indicator.kdjK': 'KDJ(K)',
- 'signal-robot.indicator.kdjJ': 'KDJ(J)',
- 'signal-robot.indicator.macd': 'MACD',
- 'signal-robot.indicator.macdHist': 'MACD Histogram',
- 'signal-robot.indicator.bollingerUp': 'Bollinger Upper',
- 'signal-robot.indicator.bollingerLow': 'Bollinger Lower',
- 'signal-robot.indicator.volume': 'Volume',
- 'signal-robot.indicator.changePct1h': '1H Change %',
- 'signal-robot.indicator.changePct24h': '24H Change %',
- 'signal-robot.indicator.signalLine': 'Signal Line',
-
- // Settings
- 'settings.title': 'System Settings',
- 'settings.description': 'Configure application settings, API keys, and system preferences',
- 'settings.save': 'Save Settings',
- 'settings.reset': 'Reset',
- 'settings.saveSuccess': 'Settings saved successfully',
- 'settings.saveFailed': 'Failed to save settings',
- 'settings.loadFailed': 'Failed to load settings',
- 'settings.openrouterBalance': 'OpenRouter Account Balance',
- 'settings.queryBalance': 'Query Balance',
- 'settings.balanceUsage': 'Used',
- 'settings.balanceRemaining': 'Remaining',
- 'settings.balanceLimit': 'Total Limit',
- 'settings.balanceQuerySuccess': 'Balance query successful',
- 'settings.balanceQueryFailed': 'Failed to query balance',
- 'settings.balanceNotQueried': 'Click "Query Balance" to get account info',
- 'settings.default': 'Default',
- 'settings.pleaseSelect': 'Please select',
- 'settings.inputApiKey': 'Enter key',
- 'settings.getApi': 'Get API',
- // Settings link texts
- 'settings.link.getApi': 'Get API',
- 'settings.link.getApiKey': 'Get API Key',
- 'settings.link.getToken': 'Get Token',
- 'settings.link.createBot': 'Create Bot',
- 'settings.link.viewModels': 'View Models',
- 'settings.link.freeRegister': 'Free Register',
- 'settings.link.supportedExchanges': 'Supported Exchanges',
- 'settings.link.applyApi': 'Apply API',
- 'settings.link.createSearchEngine': 'Create Search Engine',
- 'settings.link.getTurnstileKey': 'Get Turnstile Key',
- 'settings.link.getGoogleCredentials': 'Get Google Credentials',
- 'settings.link.getGithubCredentials': 'Get GitHub Credentials',
- 'settings.restartRequired': 'Settings saved. Some changes require Python service restart to take effect.',
- 'settings.copyRestartCmd': 'Copy restart command',
- 'settings.copySuccess': 'Copied',
- 'settings.copyFailed': 'Copy failed',
- // Settings groups
- // Settings groups (ordered by backend order)
- 'settings.group.server': 'Server Configuration',
- 'settings.group.auth': 'Security & Authentication',
- 'settings.group.ai': 'AI / LLM Configuration',
- 'settings.group.trading': 'Live Trading',
- 'settings.group.strategy': 'Strategy Execution',
- 'settings.group.data_source': 'Data Sources',
- 'settings.group.notification': 'Notifications',
- 'settings.group.email': 'Email (SMTP)',
- 'settings.group.sms': 'SMS (Twilio)',
- 'settings.group.agent': 'AI Agent',
- 'settings.group.network': 'Network & Proxy',
- 'settings.group.search': 'Web Search',
- 'settings.group.security': 'Registration & Security',
- 'settings.group.app': 'Application',
- // Settings fields - Auth
- 'settings.field.SECRET_KEY': 'Secret Key',
- 'settings.field.ADMIN_USER': 'Admin Username',
- 'settings.field.ADMIN_PASSWORD': 'Admin Password',
- 'settings.field.ADMIN_EMAIL': 'Admin Email',
- // Settings fields - Security
- 'settings.field.ENABLE_REGISTRATION': 'Enable Registration',
- 'settings.field.TURNSTILE_SITE_KEY': 'Turnstile Site Key',
- 'settings.field.TURNSTILE_SECRET_KEY': 'Turnstile Secret Key',
- 'settings.field.FRONTEND_URL': 'Frontend URL',
- 'settings.field.GOOGLE_CLIENT_ID': 'Google Client ID',
- 'settings.field.GOOGLE_CLIENT_SECRET': 'Google Client Secret',
- 'settings.field.GOOGLE_REDIRECT_URI': 'Google Redirect URI',
- 'settings.field.GITHUB_CLIENT_ID': 'GitHub Client ID',
- 'settings.field.GITHUB_CLIENT_SECRET': 'GitHub Client Secret',
- 'settings.field.GITHUB_REDIRECT_URI': 'GitHub Redirect URI',
- 'settings.field.SECURITY_IP_MAX_ATTEMPTS': 'IP Max Failed Attempts',
- 'settings.field.SECURITY_IP_WINDOW_MINUTES': 'IP Window (minutes)',
- 'settings.field.SECURITY_IP_BLOCK_MINUTES': 'IP Block Duration (minutes)',
- 'settings.field.SECURITY_ACCOUNT_MAX_ATTEMPTS': 'Account Max Failed Attempts',
- 'settings.field.SECURITY_ACCOUNT_WINDOW_MINUTES': 'Account Window (minutes)',
- 'settings.field.SECURITY_ACCOUNT_BLOCK_MINUTES': 'Account Block Duration (minutes)',
- 'settings.field.VERIFICATION_CODE_EXPIRE_MINUTES': 'Verification Code Expiry (minutes)',
- 'settings.field.VERIFICATION_CODE_RATE_LIMIT': 'Code Rate Limit (seconds)',
- 'settings.field.VERIFICATION_CODE_IP_HOURLY_LIMIT': 'Code Hourly Limit per IP',
- 'settings.field.VERIFICATION_CODE_MAX_ATTEMPTS': 'Code Max Attempts',
- 'settings.field.VERIFICATION_CODE_LOCK_MINUTES': 'Code Lock Minutes',
- // Settings fields - Server
- 'settings.field.PYTHON_API_HOST': 'Listen Address',
- 'settings.field.PYTHON_API_PORT': 'Port',
- 'settings.field.PYTHON_API_DEBUG': 'Debug Mode',
- // Settings fields - Worker
- 'settings.field.ENABLE_PENDING_ORDER_WORKER': 'Enable Order Worker',
- 'settings.field.PENDING_ORDER_STALE_SEC': 'Order Stale Timeout (sec)',
- // Settings fields - Trading
- 'settings.field.ORDER_MODE': 'Order Mode',
- 'settings.field.MAKER_WAIT_SEC': 'Limit Order Wait Time (sec)',
- 'settings.field.MAKER_OFFSET_BPS': 'Limit Order Price Offset (bps)',
- // Settings fields - Notification
- 'settings.field.SIGNAL_WEBHOOK_URL': 'Webhook URL',
- 'settings.field.SIGNAL_WEBHOOK_TOKEN': 'Webhook Token',
- 'settings.field.SIGNAL_NOTIFY_TIMEOUT_SEC': 'Notify Timeout (sec)',
- 'settings.field.TELEGRAM_BOT_TOKEN': 'Telegram Bot Token',
- // Settings fields - SMTP
- 'settings.field.SMTP_HOST': 'SMTP Host',
- 'settings.field.SMTP_PORT': 'SMTP Port',
- 'settings.field.SMTP_USER': 'SMTP Username',
- 'settings.field.SMTP_PASSWORD': 'SMTP Password',
- 'settings.field.SMTP_FROM': 'From Address',
- 'settings.field.SMTP_USE_TLS': 'Use TLS',
- 'settings.field.SMTP_USE_SSL': 'Use SSL',
- // Settings fields - Twilio
- 'settings.field.TWILIO_ACCOUNT_SID': 'Account SID',
- 'settings.field.TWILIO_AUTH_TOKEN': 'Auth Token',
- 'settings.field.TWILIO_FROM_NUMBER': 'From Number',
- // Settings fields - Strategy
- 'settings.field.DISABLE_RESTORE_RUNNING_STRATEGIES': 'Disable Auto Restore',
- 'settings.field.STRATEGY_TICK_INTERVAL_SEC': 'Tick Interval (sec)',
- 'settings.field.PRICE_CACHE_TTL_SEC': 'Price Cache TTL (sec)',
- // Settings fields - Proxy
- 'settings.field.PROXY_PORT': 'Proxy Port',
- 'settings.field.PROXY_HOST': 'Proxy Host',
- 'settings.field.PROXY_SCHEME': 'Proxy Scheme',
- 'settings.field.PROXY_URL': 'Full Proxy URL',
- // Settings fields - App
- 'settings.field.CORS_ORIGINS': 'CORS Origins',
- 'settings.field.RATE_LIMIT': 'Rate Limit (per min)',
- 'settings.field.ENABLE_CACHE': 'Enable Cache',
- 'settings.field.ENABLE_REQUEST_LOG': 'Enable Request Log',
- 'settings.field.ENABLE_AI_ANALYSIS': 'Enable AI Analysis',
- // Settings fields - Memory/Reflection
- 'settings.field.ENABLE_AGENT_MEMORY': 'Enable Agent Memory',
- 'settings.field.AGENT_MEMORY_ENABLE_VECTOR': 'Enable Vector Retrieval (Local)',
- 'settings.field.AGENT_MEMORY_EMBEDDING_DIM': 'Embedding Dimension',
- 'settings.field.AGENT_MEMORY_TOP_K': 'Top-K Retrieval Count',
- 'settings.field.AGENT_MEMORY_CANDIDATE_LIMIT': 'Candidate Window Size',
- 'settings.field.AGENT_MEMORY_HALF_LIFE_DAYS': 'Time Decay Half-life (days)',
- 'settings.field.AGENT_MEMORY_W_SIM': 'Similarity Weight',
- 'settings.field.AGENT_MEMORY_W_RECENCY': 'Recency Weight',
- 'settings.field.AGENT_MEMORY_W_RETURNS': 'Returns Weight',
- // Settings fields - Reflection Worker
- 'settings.field.ENABLE_REFLECTION_WORKER': 'Enable Auto Verification',
- 'settings.field.REFLECTION_WORKER_INTERVAL_SEC': 'Verification Interval (sec)',
- // Settings fields - AI
- 'settings.field.OPENROUTER_API_KEY': 'OpenRouter API Key',
- 'settings.field.OPENROUTER_API_URL': 'OpenRouter API URL',
- 'settings.field.OPENROUTER_MODEL': 'Default Model',
- 'settings.field.OPENROUTER_TEMPERATURE': 'Temperature',
- 'settings.field.OPENROUTER_MAX_TOKENS': 'Max Tokens',
- 'settings.field.OPENROUTER_TIMEOUT': 'Timeout (sec)',
- 'settings.field.OPENROUTER_CONNECT_TIMEOUT': 'Connect Timeout (sec)',
- 'settings.field.AI_MODELS_JSON': 'Models JSON',
- // Settings fields - Market
- 'settings.field.MARKET_TYPES_JSON': 'Market Types JSON',
- 'settings.field.TRADING_SUPPORTED_SYMBOLS_JSON': 'Supported Symbols JSON',
- // Settings fields - Data Source
- 'settings.field.DATA_SOURCE_TIMEOUT': 'Timeout (sec)',
- 'settings.field.DATA_SOURCE_RETRY': 'Retry Count',
- 'settings.field.DATA_SOURCE_RETRY_BACKOFF': 'Retry Backoff (sec)',
- 'settings.field.FINNHUB_API_KEY': 'Finnhub API Key',
- 'settings.field.FINNHUB_TIMEOUT': 'Finnhub Timeout (sec)',
- 'settings.field.FINNHUB_RATE_LIMIT': 'Finnhub Rate Limit',
- 'settings.field.CCXT_DEFAULT_EXCHANGE': 'CCXT Default Exchange',
- 'settings.field.CCXT_TIMEOUT': 'CCXT Timeout (ms)',
- 'settings.field.CCXT_PROXY': 'CCXT Proxy',
- 'settings.field.YFINANCE_TIMEOUT': 'YFinance Timeout (sec)',
- 'settings.field.TIINGO_API_KEY': 'Tiingo API Key',
- 'settings.field.TIINGO_TIMEOUT': 'Tiingo Timeout (sec)',
- // Settings fields - Search
- 'settings.field.SEARCH_PROVIDER': 'Search Provider',
- 'settings.field.SEARCH_MAX_RESULTS': 'Max Results',
- 'settings.field.TAVILY_API_KEYS': 'Tavily API Keys',
- 'settings.field.BOCHA_API_KEYS': 'Bocha API Keys',
- 'settings.field.SERPAPI_KEYS': 'SerpAPI Keys',
- 'settings.field.SEARCH_GOOGLE_API_KEY': 'Google API Key',
- 'settings.field.SEARCH_GOOGLE_CX': 'Google CX',
- 'settings.field.SEARCH_BING_API_KEY': 'Bing API Key',
- 'settings.field.INTERNAL_API_KEY': 'Internal API Key',
-
- // Settings descriptions (config item descriptions)
- // Note: These are optional since backend already provides English descriptions
- 'settings.desc.SEARCH_PROVIDER': 'Web search provider for AI research',
- 'settings.desc.TAVILY_API_KEYS': 'Tavily Search API keys, comma-separated for rotation. Free 1000 requests/month',
- 'settings.desc.BOCHA_API_KEYS': 'Bocha Search API keys, comma-separated for rotation',
- 'settings.desc.SERPAPI_KEYS': 'SerpAPI keys for Google/Bing search, comma-separated for rotation',
- 'settings.desc.ORDER_MODE': 'maker: Limit order first (lower fees), market: Market order (instant fill)',
- 'settings.desc.MAKER_WAIT_SEC': 'Wait time for limit order fill before switching to market order',
- 'settings.desc.MAKER_OFFSET_BPS': 'Price offset in basis points. Buy: price*(1-offset), Sell: price*(1+offset)',
- 'settings.desc.TIINGO_API_KEY': 'Tiingo API key for Forex/Metals data (free tier does not support 1-minute data)',
- 'settings.desc.TIINGO_TIMEOUT': 'Tiingo API request timeout',
-
- // Portfolio
- 'portfolio.summary.totalValue': 'Total Value',
- 'portfolio.summary.totalCost': 'Total Cost',
- 'portfolio.summary.totalPnl': 'Total P&L',
- 'portfolio.summary.positionCount': 'Positions',
- 'portfolio.summary.profitLossRatio': 'Profit/Loss',
- 'portfolio.summary.today': 'Today',
- 'portfolio.summary.todayPnl': 'Today P&L',
- 'portfolio.summary.bestPerformer': 'Best Performer',
- 'portfolio.summary.worstPerformer': 'Worst Performer',
- 'portfolio.summary.priceSync': 'Price Sync',
- 'portfolio.summary.syncInterval': 'Refresh',
- 'portfolio.summary.justNow': 'Just now',
- 'portfolio.summary.ago': ' ago',
- 'portfolio.positions.title': 'My Positions',
- 'portfolio.positions.add': 'Add Position',
- 'portfolio.positions.addFirst': 'Add Your First Position',
- 'portfolio.positions.empty': 'No positions yet',
- 'portfolio.positions.deleteConfirm': 'Are you sure to delete this position?',
- 'portfolio.positions.currentPrice': 'Current',
- 'portfolio.positions.entryPrice': 'Entry',
- 'portfolio.positions.quantity': 'Quantity',
- 'portfolio.positions.side': 'Side',
- 'portfolio.positions.long': 'Long',
- 'portfolio.positions.short': 'Short',
- 'portfolio.positions.marketValue': 'Value',
- 'portfolio.positions.pnl': 'P&L',
- 'portfolio.positions.items': 'positions',
- 'portfolio.monitors.title': 'AI Monitors',
- 'portfolio.monitors.add': 'Add Monitor',
- 'portfolio.monitors.addFirst': 'Add AI Monitor',
- 'portfolio.monitors.empty': 'No monitors yet',
- 'portfolio.monitors.deleteConfirm': 'Are you sure to delete this monitor?',
- 'portfolio.monitors.interval': 'Interval',
- 'portfolio.monitors.lastRun': 'Last Run',
- 'portfolio.monitors.nextRun': 'Next Run',
- 'portfolio.monitors.channels': 'Channels',
- 'portfolio.monitors.runNow': 'Run Now',
- 'portfolio.monitors.analysisResult': 'AI Analysis Result',
- 'portfolio.monitors.runningTitle': 'AI Analysis Started',
- 'portfolio.monitors.runningDesc': 'Analysis is running in background. Results will be pushed via notification. Analyzing multiple positions may take a few minutes.',
- 'portfolio.monitors.timeoutTitle': 'Request Timeout',
- 'portfolio.monitors.timeoutDesc': 'Analysis may still be running in background. Please check notifications for results later. If no notification is received, please try again.',
- 'portfolio.modal.addPosition': 'Add Position',
- 'portfolio.modal.editPosition': 'Edit Position',
- 'portfolio.modal.addMonitor': 'Add Monitor',
- 'portfolio.modal.editMonitor': 'Edit Monitor',
- 'portfolio.form.market': 'Market',
- 'portfolio.form.marketRequired': 'Please select a market',
- 'portfolio.form.selectMarket': 'Select Market',
- 'portfolio.form.symbol': 'Symbol',
- 'portfolio.form.symbolRequired': 'Please enter symbol',
- 'portfolio.form.searchSymbol': 'Search or enter symbol',
- 'portfolio.form.useAsSymbol': 'Use',
- 'portfolio.form.asSymbolCode': 'as symbol code',
- 'portfolio.form.symbolHint': 'Search symbols or enter any code directly',
- 'portfolio.form.side': 'Side',
- 'portfolio.form.quantity': 'Quantity',
- 'portfolio.form.quantityRequired': 'Please enter quantity',
- 'portfolio.form.enterQuantity': 'Enter quantity',
- 'portfolio.form.entryPrice': 'Entry Price',
- 'portfolio.form.entryPriceRequired': 'Please enter entry price',
- 'portfolio.form.enterEntryPrice': 'Enter entry price',
- 'portfolio.form.notes': 'Notes',
- 'portfolio.form.enterNotes': 'Optional: Add notes',
- 'portfolio.form.monitorName': 'Monitor Name',
- 'portfolio.form.monitorNameRequired': 'Please enter monitor name',
- 'portfolio.form.enterMonitorName': 'e.g. Daily Portfolio Analysis',
- 'portfolio.form.interval': 'Interval',
- 'portfolio.form.minutes': 'minutes',
- 'portfolio.form.hour': 'hour',
- 'portfolio.form.hours': 'hours',
- 'portfolio.form.notifyChannels': 'Notify Channels',
- 'portfolio.form.browser': 'Browser',
- 'portfolio.form.email': 'Email',
- 'portfolio.form.telegramChatId': 'Telegram Chat ID',
- 'portfolio.form.enterTelegramChatId': 'Enter Telegram Chat ID',
- 'portfolio.form.telegramRequired': 'Please enter Telegram Chat ID',
- 'portfolio.form.emailAddress': 'Email Address',
- 'portfolio.form.enterEmail': 'Enter email address',
- 'portfolio.form.emailRequired': 'Please enter email address',
- 'portfolio.form.emailInvalid': 'Please enter a valid email address',
- 'portfolio.form.customPrompt': 'Custom Prompt',
- 'portfolio.form.customPromptPlaceholder': 'Optional: Add focus areas, e.g. "Focus on tech stock risks"',
- 'portfolio.form.monitorScope': 'Monitor Scope',
- 'portfolio.form.allPositions': 'All Positions',
- 'portfolio.form.selectedPositions': 'Selected Positions',
- 'portfolio.form.selectPositions': 'Select Positions',
- 'portfolio.form.selectAll': 'Select All',
- 'portfolio.form.deselectAll': 'Deselect All',
- 'portfolio.form.selectedCount': '{count} of {total} selected',
- 'portfolio.form.pleaseSelectPositions': 'Please select at least one position to monitor',
- 'portfolio.form.notificationFromProfile': 'Notifications will be sent to addresses configured in your profile',
- 'portfolio.form.goToProfile': 'Go to settings',
- 'portfolio.message.loadFailed': 'Failed to load data',
- 'portfolio.message.saveSuccess': 'Saved successfully',
- 'portfolio.message.saveFailed': 'Failed to save',
- 'portfolio.message.deleteSuccess': 'Deleted successfully',
- 'portfolio.message.deleteFailed': 'Failed to delete',
- 'portfolio.message.updateFailed': 'Failed to update',
- 'portfolio.message.monitorEnabled': 'Monitor enabled',
- 'portfolio.message.monitorDisabled': 'Monitor paused',
- 'portfolio.message.monitorRunSuccess': 'Analysis completed',
- 'portfolio.message.monitorRunFailed': 'Analysis failed',
- 'portfolio.message.monitorRunning': 'AI analysis started, please wait for notification',
- // Portfolio - Groups
- 'portfolio.groups.all': 'All Positions',
- 'portfolio.groups.ungrouped': 'Ungrouped',
- 'portfolio.form.group': 'Group',
- 'portfolio.form.enterGroup': 'Enter or select group',
- // Portfolio - Alerts
- 'portfolio.alerts.title': 'Price/PnL Alerts',
- 'portfolio.alerts.addAlert': 'Add Alert',
- 'portfolio.alerts.editAlert': 'Edit Alert',
- 'portfolio.alerts.alertType': 'Alert Type',
- 'portfolio.alerts.priceAbove': 'Price Above',
- 'portfolio.alerts.priceBelow': 'Price Below',
- 'portfolio.alerts.pnlAbove': 'Profit Above (%)',
- 'portfolio.alerts.pnlBelow': 'Loss Below (%)',
- 'portfolio.alerts.threshold': 'Threshold',
- 'portfolio.alerts.thresholdRequired': 'Please enter threshold',
- 'portfolio.alerts.enterPrice': 'Enter price',
- 'portfolio.alerts.enterPercent': 'Enter percentage',
- 'portfolio.alerts.currentPrice': 'Current Price',
- 'portfolio.alerts.currentPriceHint': 'Current price',
- 'portfolio.alerts.repeatInterval': 'Repeat Alert',
- 'portfolio.alerts.noRepeat': 'No repeat (trigger once)',
- 'portfolio.alerts.every5min': 'Every 5 minutes',
- 'portfolio.alerts.every15min': 'Every 15 minutes',
- 'portfolio.alerts.every30min': 'Every 30 minutes',
- 'portfolio.alerts.every1hour': 'Every 1 hour',
- 'portfolio.alerts.every4hours': 'Every 4 hours',
- 'portfolio.alerts.onceDaily': 'Once daily',
- 'portfolio.alerts.enabled': 'Enable Alert',
- 'portfolio.alerts.enabledDesc': 'Auto-monitor and trigger notifications',
- 'portfolio.alerts.delete': 'Delete',
- 'portfolio.alerts.deleteConfirm': 'Are you sure you want to delete this alert?',
- 'portfolio.modal.addAlert': 'Add Alert',
- 'portfolio.modal.editAlert': 'Edit Alert',
-
- // User Management
- 'menu.userManage': 'User Management',
- 'menu.myProfile': 'My Profile',
- 'common.actions': 'Actions',
- 'common.refresh': 'Refresh',
-
- 'userManage.title': 'User Management',
- 'userManage.searchPlaceholder': 'Search by username/email/nickname',
- 'userManage.description': 'Manage system users, roles and permissions',
- 'userManage.createUser': 'Create User',
- 'userManage.editUser': 'Edit User',
- 'userManage.username': 'Username',
- 'userManage.password': 'Password',
- 'userManage.nickname': 'Nickname',
- 'userManage.email': 'Email',
- 'userManage.role': 'Role',
- 'userManage.status': 'Status',
- 'userManage.lastLogin': 'Last Login',
- 'userManage.active': 'Active',
- 'userManage.disabled': 'Disabled',
- 'userManage.neverLogin': 'Never',
- 'userManage.usernameRequired': 'Please enter username',
- 'userManage.usernamePlaceholder': 'Enter username',
- 'userManage.passwordRequired': 'Please enter password',
- 'userManage.passwordPlaceholder': 'Enter password (min 6 chars)',
- 'userManage.passwordMin': 'Password must be at least 6 characters',
- 'userManage.nicknamePlaceholder': 'Enter nickname',
- 'userManage.emailPlaceholder': 'Enter email',
- 'userManage.emailInvalid': 'Invalid email format',
- 'userManage.rolePlaceholder': 'Select role',
- 'userManage.statusPlaceholder': 'Select status',
- 'userManage.resetPassword': 'Reset Password',
- 'userManage.resetPasswordWarning': 'This will reset the user\'s password',
- 'userManage.newPassword': 'New Password',
- 'userManage.newPasswordPlaceholder': 'Enter new password',
- 'userManage.confirmDelete': 'Are you sure to delete this user?',
- 'userManage.roleAdmin': 'Admin',
- 'userManage.roleManager': 'Manager',
- 'userManage.roleUser': 'User',
- 'userManage.roleViewer': 'Viewer',
-
- // Profile
- 'profile.title': 'My Profile',
- 'profile.description': 'Manage your account settings and preferences',
- 'profile.basicInfo': 'Basic Info',
- 'profile.changePassword': 'Change Password',
- 'profile.username': 'Username',
- 'profile.nickname': 'Nickname',
- 'profile.email': 'Email',
- 'profile.lastLogin': 'Last Login',
- 'profile.nicknamePlaceholder': 'Enter your nickname',
- 'profile.emailPlaceholder': 'Enter your email',
- 'profile.emailInvalid': 'Invalid email format',
- 'profile.emailCannotChange': 'Email cannot be changed after registration',
- 'profile.passwordHint': 'Password must be at least 6 characters',
- 'profile.oldPassword': 'Current Password',
- 'profile.newPassword': 'New Password',
- 'profile.confirmPassword': 'Confirm Password',
- 'profile.oldPasswordRequired': 'Please enter current password',
- 'profile.oldPasswordPlaceholder': 'Enter current password',
- 'profile.newPasswordRequired': 'Please enter new password',
- 'profile.newPasswordPlaceholder': 'Enter new password',
- 'profile.confirmPasswordRequired': 'Please confirm password',
- 'profile.confirmPasswordPlaceholder': 'Confirm new password',
- 'profile.passwordMin': 'Password must be at least 6 characters',
- 'profile.passwordMismatch': 'Passwords do not match',
-
- // Profile - Credits
- 'profile.credits.title': 'My Credits',
- 'profile.credits.unit': 'Credits',
- 'profile.credits.recharge': 'Top Up',
- 'profile.credits.vipExpires': 'VIP expires on',
- 'profile.credits.vipExpired': 'VIP expired',
- 'profile.credits.noVip': 'Not a VIP',
- 'profile.credits.hint': 'AI analysis/backtest/monitoring will consume credits; VIP only makes VIP-free indicators free to use.',
-
- // Profile - Credits Log
- 'profile.creditsLog': 'Credits History',
- 'profile.creditsLog.time': 'Time',
- 'profile.creditsLog.action': 'Type',
- 'profile.creditsLog.amount': 'Change',
- 'profile.creditsLog.balance': 'Balance',
- 'profile.creditsLog.remark': 'Remark',
- 'profile.creditsLog.actionConsume': 'Consume',
- 'profile.creditsLog.actionRecharge': 'Recharge',
- 'profile.creditsLog.actionAdjust': 'Adjust',
- 'profile.creditsLog.actionRefund': 'Refund',
- 'profile.creditsLog.actionVipGrant': 'VIP Grant',
- 'profile.creditsLog.actionVipRevoke': 'VIP Revoke',
- 'profile.creditsLog.actionRegisterBonus': 'Register Bonus',
- 'profile.creditsLog.actionReferralBonus': 'Referral Bonus',
- 'profile.creditsLog.actionIndicatorPurchase': 'Indicator Purchase',
- 'profile.creditsLog.actionIndicatorSale': 'Indicator Sale',
-
- // Profile - Referral
- 'profile.referral.title': 'Invite Friends',
- 'profile.referral.listTab': 'Referrals',
- 'profile.referral.totalInvited': 'Invited',
- 'profile.referral.bonusPerInvite': 'Per Invite',
- 'profile.referral.yourLink': 'Your Referral Link',
- 'profile.referral.copyLink': 'Copy Link',
- 'profile.referral.linkCopied': 'Referral link copied',
- 'profile.referral.newUserBonus': 'New users get',
- 'profile.referral.user': 'User',
- 'profile.referral.registerTime': 'Registered',
- 'profile.referral.noReferrals': 'No referrals yet',
- 'profile.referral.shareNow': 'Share Now',
-
- // Profile - Notification Settings
- 'profile.notifications.title': 'Notification Settings',
- 'profile.notifications.hint': 'Configure your default notification methods, which will be used automatically when creating asset monitors and alerts',
- 'profile.notifications.defaultChannels': 'Default Notification Channels',
- 'profile.notifications.browser': 'In-App Notification',
- 'profile.notifications.email': 'Email',
- 'profile.notifications.phone': 'SMS',
- 'profile.notifications.telegramBotToken': 'Telegram Bot Token',
- 'profile.notifications.telegramBotTokenPlaceholder': 'Enter your Telegram Bot Token',
- 'profile.notifications.telegramBotTokenHint': 'Get Token by creating a bot via @BotFather',
- 'profile.notifications.telegramChatId': 'Telegram Chat ID',
- 'profile.notifications.telegramPlaceholder': 'Enter your Telegram Chat ID (e.g. 123456789)',
- 'profile.notifications.telegramHint': 'Send /start to @userinfobot to get your Chat ID',
- 'profile.notifications.notifyEmail': 'Notification Email',
- 'profile.notifications.emailPlaceholder': 'Email address to receive notifications',
- 'profile.notifications.emailHint': 'Uses your account email by default, or set a different one',
- 'profile.notifications.phonePlaceholder': 'Enter phone number (e.g. +1234567890)',
- 'profile.notifications.phoneHint': 'Requires admin to configure Twilio service',
- 'profile.notifications.discordWebhook': 'Discord Webhook',
- 'profile.notifications.discordPlaceholder': 'https://discord.com/api/webhooks/...',
- 'profile.notifications.discordHint': 'Create Webhook in Discord server settings',
- 'profile.notifications.webhookUrl': 'Webhook URL',
- 'profile.notifications.webhookPlaceholder': 'https://your-server.com/webhook',
- 'profile.notifications.webhookHint': 'Custom Webhook URL, notifications sent via POST JSON',
- 'profile.notifications.webhookToken': 'Webhook Token (Optional)',
- 'profile.notifications.webhookTokenPlaceholder': 'Bearer Token for request authentication',
- 'profile.notifications.webhookTokenHint': 'Sent as Authorization: Bearer Token to Webhook',
- 'profile.notifications.testBtn': 'Send Test Notification',
- 'profile.notifications.saveSuccess': 'Notification settings saved successfully',
- 'profile.notifications.selectChannel': 'Please select at least one notification channel',
- 'profile.notifications.fillTelegramToken': 'Please fill in Telegram Bot Token',
- 'profile.notifications.fillTelegram': 'Please fill in Telegram Chat ID',
- 'profile.notifications.fillEmail': 'Please fill in notification email',
- 'profile.notifications.testSent': 'Test notification sent, please check your notification channels',
-
- // User Manage - Credits & VIP
- 'userManage.credits': 'Credits',
- 'userManage.adjustCredits': 'Adjust Credits',
- 'userManage.setVip': 'Set VIP',
- 'userManage.currentCredits': 'Current Credits',
- 'userManage.newCredits': 'New Credits',
- 'userManage.enterCredits': 'Enter new credits amount',
- 'userManage.creditsNonNegative': 'Credits cannot be negative',
- 'userManage.currentVip': 'Current VIP Status',
- 'userManage.vipActive': 'Active',
- 'userManage.vipExpired': 'Expired',
- 'userManage.vipDays': 'VIP Days',
- 'userManage.vipExpiresAt': 'VIP Expires At',
- 'userManage.cancelVip': 'Cancel VIP',
- 'userManage.days': 'days',
- 'userManage.customDate': 'Custom Date',
- 'userManage.selectDate': 'Please select a date',
- 'userManage.remark': 'Remark',
- 'userManage.remarkPlaceholder': 'Optional remark',
- 'userManage.tabUsers': 'User Management',
-
- // System Overview (Admin)
- 'systemOverview.tabTitle': 'System Overview',
- 'systemOverview.totalStrategies': 'Total Strategies',
- 'systemOverview.runningStrategies': 'Running',
- 'systemOverview.totalCapital': 'Total Capital',
- 'systemOverview.totalPnl': 'Total PnL',
- 'systemOverview.filterAll': 'All Status',
- 'systemOverview.filterRunning': 'Running',
- 'systemOverview.filterStopped': 'Stopped',
- 'systemOverview.searchPlaceholder': 'Search strategy/symbol/user',
- 'systemOverview.running': 'Running',
- 'systemOverview.stopped': 'Stopped',
- 'systemOverview.colUser': 'User',
- 'systemOverview.colStrategy': 'Strategy',
- 'systemOverview.colStatus': 'Status',
- 'systemOverview.colSymbol': 'Symbol',
- 'systemOverview.colCapital': 'Capital',
- 'systemOverview.colPnl': 'PnL / ROI',
- 'systemOverview.colPositions': 'Pos',
- 'systemOverview.colTrades': 'Trades',
- 'systemOverview.colIndicator': 'Indicator',
- 'systemOverview.colExchange': 'Exchange',
- 'systemOverview.colTimeframe': 'TF',
- 'systemOverview.colLeverage': 'Lev',
- 'systemOverview.colCreatedAt': 'Created',
- 'systemOverview.realized': 'Real',
- 'systemOverview.unrealized': 'Unreal',
- 'systemOverview.symbols': 'symbols',
- 'systemOverview.live': 'Live',
- 'systemOverview.signal': 'Signal Only',
-
- // Settings - Billing
- 'settings.group.billing': 'Billing & Credits',
- 'settings.field.BILLING_ENABLED': 'Enable Billing',
- 'settings.field.BILLING_VIP_BYPASS': 'VIP Bypass (Legacy)',
- 'settings.field.BILLING_COST_AI_ANALYSIS': 'AI Analysis Cost',
- 'settings.field.BILLING_COST_STRATEGY_RUN': 'Strategy Run Cost',
- 'settings.field.BILLING_COST_BACKTEST': 'Backtest Cost',
- 'settings.field.BILLING_COST_PORTFOLIO_MONITOR': 'Portfolio Monitor Cost',
- 'settings.field.CREDITS_REGISTER_BONUS': 'Register Bonus',
- 'settings.field.CREDITS_REFERRAL_BONUS': 'Referral Bonus',
- 'settings.field.RECHARGE_TELEGRAM_URL': 'Recharge Telegram URL',
- 'settings.field.MEMBERSHIP_MONTHLY_PRICE_USD': 'Monthly Membership Price (USD)',
- 'settings.field.MEMBERSHIP_MONTHLY_CREDITS': 'Monthly Membership Bonus Credits',
- 'settings.field.MEMBERSHIP_YEARLY_PRICE_USD': 'Yearly Membership Price (USD)',
- 'settings.field.MEMBERSHIP_YEARLY_CREDITS': 'Yearly Membership Bonus Credits',
- 'settings.field.MEMBERSHIP_LIFETIME_PRICE_USD': 'Lifetime Membership Price (USD)',
- 'settings.field.MEMBERSHIP_LIFETIME_MONTHLY_CREDITS': 'Lifetime Monthly Credits',
- 'settings.field.USDT_PAY_ENABLED': 'Enable USDT Pay',
- 'settings.field.USDT_PAY_CHAIN': 'USDT Chain',
- 'settings.field.USDT_TRC20_XPUB': 'TRC20 XPUB (Watch-only)',
- 'settings.field.USDT_TRC20_CONTRACT': 'USDT TRC20 Contract',
- 'settings.field.TRONGRID_BASE_URL': 'TronGrid Base URL',
- 'settings.field.TRONGRID_API_KEY': 'TronGrid API Key',
- 'settings.field.USDT_PAY_CONFIRM_SECONDS': 'Confirm Delay (sec)',
- 'settings.field.USDT_PAY_EXPIRE_MINUTES': 'Order Expire (min)',
- 'settings.desc.BILLING_ENABLED': 'Enable billing system. Users need credits to use certain features when enabled',
- 'settings.desc.BILLING_VIP_BYPASS': 'Legacy switch. If enabled, VIP users bypass ALL feature credit costs. Recommended OFF: VIP should only unlock VIP-free indicators.',
- 'settings.desc.BILLING_COST_AI_ANALYSIS': 'Credits consumed per AI analysis request',
- 'settings.desc.BILLING_COST_STRATEGY_RUN': 'Credits consumed when starting a strategy',
- 'settings.desc.BILLING_COST_BACKTEST': 'Credits consumed per backtest run',
- 'settings.desc.BILLING_COST_PORTFOLIO_MONITOR': 'Credits consumed per portfolio AI monitoring run',
- 'settings.desc.CREDITS_REGISTER_BONUS': 'Credits awarded to new users on registration',
- 'settings.desc.CREDITS_REFERRAL_BONUS': 'Credits awarded to referrer when someone signs up with their referral code',
- 'settings.desc.VERIFICATION_CODE_MAX_ATTEMPTS': 'Maximum attempts to verify a code before lockout',
- 'settings.desc.VERIFICATION_CODE_LOCK_MINUTES': 'Lockout duration after exceeding max attempts',
- 'settings.desc.RECHARGE_TELEGRAM_URL': 'Telegram customer service URL for recharge inquiries',
- 'settings.desc.MEMBERSHIP_MONTHLY_PRICE_USD': 'Monthly membership price in USD (mock payment in current version).',
- 'settings.desc.MEMBERSHIP_MONTHLY_CREDITS': 'Credits granted immediately after purchasing monthly membership.',
- 'settings.desc.MEMBERSHIP_YEARLY_PRICE_USD': 'Yearly membership price in USD (mock payment in current version).',
- 'settings.desc.MEMBERSHIP_YEARLY_CREDITS': 'Credits granted immediately after purchasing yearly membership.',
- 'settings.desc.MEMBERSHIP_LIFETIME_PRICE_USD': 'Lifetime membership price in USD (mock payment in current version).',
- 'settings.desc.MEMBERSHIP_LIFETIME_MONTHLY_CREDITS': 'Credits granted every 30 days for lifetime members (first grant happens immediately on purchase).',
- 'settings.desc.USDT_PAY_ENABLED': 'Enable USDT scan-to-pay flow (per-order unique address + auto reconciliation).',
- 'settings.desc.USDT_PAY_CHAIN': 'Currently only TRC20 is supported.',
- 'settings.desc.USDT_TRC20_XPUB': 'Watch-only xpub used to derive per-order deposit addresses. Do NOT paste private key/seed.',
- 'settings.desc.USDT_TRC20_CONTRACT': 'USDT contract address on TRON (default prefilled).',
- 'settings.desc.TRONGRID_BASE_URL': 'TronGrid API base URL (default is fine).',
- 'settings.desc.TRONGRID_API_KEY': 'Optional. For higher TronGrid rate limits and stability.',
- 'settings.desc.USDT_PAY_CONFIRM_SECONDS': 'After a payment is detected, wait N seconds before marking it confirmed.',
- 'settings.desc.USDT_PAY_EXPIRE_MINUTES': 'Order expiration time; users need to regenerate an order after it expires.',
-
- // Global Market
- 'globalMarket.title': 'Global Market Dashboard',
- 'globalMarket.fearGreedShort': 'F&G',
- 'globalMarket.calendar': 'Calendar',
- 'globalMarket.lastUpdate': 'Last Update',
- 'globalMarket.refresh': 'Refresh',
- 'globalMarket.name': 'Name',
- 'globalMarket.price': 'Price',
- 'globalMarket.change': 'Change',
- 'globalMarket.trend': 'Trend',
- 'globalMarket.pair': 'Pair',
- 'globalMarket.unit': 'Unit',
- 'globalMarket.refreshSuccess': 'Data refreshed successfully',
- 'globalMarket.refreshError': 'Failed to refresh data',
- 'globalMarket.fetchError': 'Failed to fetch data',
- 'globalMarket.loading': 'Loading...',
- 'globalMarket.fearGreedIndex': 'Fear & Greed Index',
- 'globalMarket.fearGreedTip': 'Fear & Greed Index measures market sentiment, 0 = Extreme Fear, 100 = Extreme Greed',
- 'globalMarket.volatilityIndex': 'Volatility Index',
- 'globalMarket.dollarIndex': 'Dollar Index',
- 'globalMarket.majorIndices': 'Major Indices',
- 'globalMarket.vixTitle': 'VIX Volatility Index',
- 'globalMarket.vixTip': 'VIX measures expected market volatility, higher values indicate more market fear',
- 'globalMarket.extremeFear': 'Extreme Fear',
- 'globalMarket.fear': 'Fear',
- 'globalMarket.neutral': 'Neutral',
- 'globalMarket.greed': 'Greed',
- 'globalMarket.extremeGreed': 'Extreme Greed',
- 'globalMarket.marketOverview': 'Market Overview',
- 'globalMarket.indices': 'Indices',
- 'globalMarket.forex': 'Forex',
- 'globalMarket.crypto': 'Crypto',
- 'globalMarket.commodities': 'Commodities',
- 'globalMarket.heatmap': 'Market Heatmap',
- 'globalMarket.cryptoHeatmap': 'Crypto',
- 'globalMarket.commoditiesHeatmap': 'Commodities',
- 'globalMarket.sectorHeatmap': 'Sectors',
- 'globalMarket.forexHeatmap': 'Forex',
- 'globalMarket.opportunities': 'Trading Opportunities',
- 'globalMarket.noOpportunities': 'No significant opportunities detected',
- 'globalMarket.financialNews': 'Financial News',
- 'globalMarket.noNews': 'No news available',
- 'globalMarket.economicCalendar': 'Economic Calendar',
- 'globalMarket.noEvents': 'No events scheduled',
- 'globalMarket.actual': 'Actual',
- 'globalMarket.forecast': 'Forecast',
- 'globalMarket.previous': 'Previous',
- 'globalMarket.signal.bullish': 'Bullish Momentum',
- 'globalMarket.signal.bearish': 'Bearish Momentum',
- 'globalMarket.signal.overbought': 'Overbought Warning',
- 'globalMarket.signal.oversold': 'Oversold Opportunity',
- 'globalMarket.worldMap': 'Global Markets Map',
- 'globalMarket.rising': 'Rising',
- 'globalMarket.falling': 'Falling',
- 'globalMarket.bullish': 'Bullish',
- 'globalMarket.bearish': 'Bearish',
- 'globalMarket.expectedImpact': 'Expected Impact',
- 'globalMarket.aboveForecast': 'Above Forecast',
- 'globalMarket.belowForecast': 'Below Forecast',
- 'globalMarket.upcomingEvents': 'Upcoming Events',
- 'globalMarket.releasedEvents': 'Released Data',
-
- // Trading Assistant
- 'trading-assistant.form.notificationFromProfile': 'Notifications will be sent to the address configured in your profile.',
- 'trading-assistant.form.notificationConfigMissing': 'You have not configured parameters for selected channels ({channels}). Please go to your profile to configure them.',
- 'trading-assistant.form.goToProfile': 'Go to Profile',
-
- // Indicator Community
- 'community.title': 'Indicator Market',
- 'community.searchPlaceholder': 'Search indicators...',
- 'community.all': 'All',
- 'community.freeOnly': 'Free',
- 'community.paidOnly': 'Paid',
- 'community.sortNewest': 'Newest',
- 'community.sortHot': 'Popular',
- 'community.sortRating': 'Top Rated',
- 'community.sortPriceLow': 'Price: Low to High',
- 'community.sortPriceHigh': 'Price: High to Low',
- 'community.myPurchases': 'My Purchases',
- 'community.noIndicators': 'No indicators yet',
- 'community.createFirst': 'Create Your First Indicator',
- 'community.total': 'Total',
- 'community.items': 'items',
- 'community.free': 'Free',
- 'community.credits': 'Credits',
- 'community.myIndicator': 'My Indicator',
- 'community.purchased': 'Purchased',
- 'community.noDescription': 'No description',
- 'community.loadFailed': 'Failed to load',
- 'community.publishedAt': 'Published',
- 'community.downloads': 'Downloads',
- 'community.rating': 'Rating',
- 'community.views': 'Views',
- 'community.description': 'Description',
- 'community.performance': 'Live Performance',
- 'community.strategyCount': 'Strategies',
- 'community.tradeCount': 'Trades',
- 'community.winRate': 'Win Rate',
- 'community.totalProfit': 'Total Profit',
- 'community.reviews': 'Reviews',
- 'community.useNow': 'Use Now',
- 'community.getFree': 'Get Free',
- 'community.buyNow': 'Buy Now',
- 'community.purchaseSuccess': 'Purchase successful! Indicator added to your list',
- 'community.purchaseFailed': 'Purchase failed',
- 'community.indicator_not_found': 'Indicator not found or unavailable',
- 'community.cannot_buy_own': 'Cannot buy your own indicator',
- 'community.already_purchased': 'You have already purchased this indicator',
- 'community.insufficient_credits': 'Insufficient credits',
- 'community.commentSuccess': 'Comment submitted',
- 'community.commentFailed': 'Failed to submit comment',
- 'community.commentUpdateSuccess': 'Comment updated successfully',
- 'community.commentUpdateFailed': 'Failed to update comment',
- 'community.editComment': 'Edit Comment',
- 'community.cancelEdit': 'Cancel',
- 'community.updateComment': 'Update Comment',
- 'community.alreadyCommented': 'You have already reviewed this indicator',
- 'community.editMyComment': 'Edit Review',
- 'community.me': 'Me',
- 'community.edited': 'edited',
- 'community.not_purchased': 'Please purchase/get the indicator first to leave a review',
- 'community.cannot_comment_own': 'Cannot review your own indicator',
- 'community.already_commented': 'You have already reviewed this indicator',
- 'community.noComments': 'No reviews yet',
- 'community.yourRating': 'Your Rating',
- 'community.commentPlaceholder': 'Share your experience...',
- 'community.submitComment': 'Submit Review',
- 'community.pleaseRate': 'Please select a rating',
- 'community.loadMore': 'Load More',
- 'community.justNow': 'Just now',
- 'community.minutesAgo': 'minutes ago',
- 'community.hoursAgo': 'hours ago',
- 'community.daysAgo': 'days ago',
- 'community.noPurchases': 'No purchases yet',
- 'community.purchasedFrom': 'Seller',
- 'community.purchaseTime': 'Purchase Time',
-
- // Admin Review
- 'community.admin.reviewTab': 'Review',
- 'community.admin.pending': 'Pending',
- 'community.admin.approved': 'Approved',
- 'community.admin.rejected': 'Rejected',
- 'community.admin.noItems': 'No items',
- 'community.admin.noDescription': 'No description',
- 'community.admin.viewCode': 'View Code',
- 'community.admin.note': 'Note',
- 'community.admin.approve': 'Approve',
- 'community.admin.reject': 'Reject',
- 'community.admin.unpublish': 'Unpublish',
- 'community.admin.delete': 'Delete',
- 'community.admin.deleteConfirm': 'Are you sure to delete this indicator? This cannot be undone.',
- 'community.admin.unpublishConfirm': 'Are you sure to unpublish this indicator?',
- 'community.admin.unpublishHint': 'This indicator will be hidden from the market',
- 'community.admin.confirm': 'Confirm',
- 'community.admin.cancel': 'Cancel',
- 'community.admin.approveTitle': 'Approve Indicator',
- 'community.admin.rejectTitle': 'Reject Indicator',
- 'community.admin.noteLabel': 'Note (optional)',
- 'community.admin.notePlaceholder': 'Enter review note...',
- 'community.admin.loadFailed': 'Failed to load',
- 'community.admin.reviewSuccess': 'Review submitted',
- 'community.admin.reviewFailed': 'Review failed',
- 'community.admin.unpublishSuccess': 'Unpublished successfully',
- 'community.admin.unpublishFailed': 'Failed to unpublish',
- 'community.admin.deleteSuccess': 'Deleted successfully',
- 'community.admin.deleteFailed': 'Failed to delete',
-
- // Fast Analysis
- 'fastAnalysis.aiAnalysis': 'AI Analysis',
- 'fastAnalysis.analyzing': 'AI is analyzing...',
- 'fastAnalysis.pleaseWait': 'Please wait, fetching real-time data and generating professional report',
- 'fastAnalysis.error': 'Analysis Failed',
- 'fastAnalysis.retry': 'Retry',
- 'fastAnalysis.selectSymbol': 'Select a symbol to start',
- 'fastAnalysis.selectHint': 'Choose from your watchlist or add a new symbol',
- 'fastAnalysis.confidence': 'Confidence',
- 'fastAnalysis.currentPrice': 'Current Price',
- 'fastAnalysis.entryPrice': 'Entry Price',
- 'fastAnalysis.stopLoss': 'Stop Loss',
- 'fastAnalysis.takeProfit': 'Take Profit',
- 'fastAnalysis.stopLossHint': 'Based on 2x ATR & support',
- 'fastAnalysis.takeProfitHint': 'Based on 3x ATR & resistance',
- 'fastAnalysis.atrBased': 'ATR-based',
- 'fastAnalysis.riskReward': 'Risk/Reward',
- 'fastAnalysis.technical': 'Technical',
- 'fastAnalysis.fundamental': 'Fundamental',
- 'fastAnalysis.sentiment': 'Sentiment',
- 'fastAnalysis.overall': 'Overall',
- 'fastAnalysis.keyReasons': 'Key Reasons',
- 'fastAnalysis.risks': 'Risks',
- 'fastAnalysis.indicators': 'Technical Indicators',
- 'fastAnalysis.maTrend': 'MA Trend',
- 'fastAnalysis.support': 'Support',
- 'fastAnalysis.resistance': 'Resistance',
- 'fastAnalysis.volatility': 'Volatility',
- 'fastAnalysis.wasHelpful': 'Was this analysis helpful?',
- 'fastAnalysis.helpful': 'Helpful',
- 'fastAnalysis.notHelpful': 'Not Helpful',
- 'fastAnalysis.feedbackThanks': 'Thanks for your feedback!',
- 'fastAnalysis.feedbackFailed': 'Failed to submit feedback',
- 'fastAnalysis.feedbackUnavailable': 'Feedback unavailable, please re-analyze',
- 'fastAnalysis.analysisTime': 'Analysis time',
- 'fastAnalysis.startAnalysis': 'Analyze',
- 'fastAnalysis.history': 'History',
- 'fastAnalysis.systemTitle': 'QUANTDINGER AI',
- 'fastAnalysis.systemOnline': 'Online',
- 'fastAnalysis.version': 'Fast',
- 'fastAnalysis.preparing': 'Preparing...',
- 'fastAnalysis.step1': 'Fetching real-time data',
- 'fastAnalysis.step2': 'Calculating indicators',
- 'fastAnalysis.step3': 'AI deep analysis',
- 'fastAnalysis.step4': 'Generating report',
-
- // Detailed analysis titles
- 'fastAnalysis.technicalAnalysis': 'Technical Analysis',
- 'fastAnalysis.fundamentalAnalysis': 'Fundamental Analysis',
- 'fastAnalysis.sentimentAnalysis': 'Market Sentiment',
-
- // Technical indicator signals
- 'fastAnalysis.signal.bullish': 'Bullish',
- 'fastAnalysis.signal.bearish': 'Bearish',
- 'fastAnalysis.signal.neutral': 'Neutral',
- 'fastAnalysis.signal.overbought': 'Overbought',
- 'fastAnalysis.signal.oversold': 'Oversold',
- 'fastAnalysis.signal.strong_bullish': 'Strong Bullish',
- 'fastAnalysis.signal.strong_bearish': 'Strong Bearish',
-
- // Trend translations
- 'fastAnalysis.trend.uptrend': 'Uptrend',
- 'fastAnalysis.trend.downtrend': 'Downtrend',
- 'fastAnalysis.trend.sideways': 'Sideways',
- 'fastAnalysis.trend.consolidating': 'Consolidating',
- 'fastAnalysis.trend.golden_cross': 'Golden Cross',
- 'fastAnalysis.trend.death_cross': 'Death Cross',
- 'fastAnalysis.trend.strong_uptrend': 'Strong Uptrend',
- 'fastAnalysis.trend.strong_downtrend': 'Strong Downtrend',
-
- // Volatility translations
- 'fastAnalysis.volatilityLevel.high': 'High',
- 'fastAnalysis.volatilityLevel.medium': 'Medium',
- 'fastAnalysis.volatilityLevel.low': 'Low',
- 'fastAnalysis.volatilityLevel.unknown': 'Unknown',
-
- // Market Overview
- 'fastAnalysis.marketOverview': 'Market Overview',
- 'fastAnalysis.selectTip': 'Select a symbol from your watchlist to start AI analysis',
-
- // ==================== AI Quant ====================
- 'aiQuant.title': 'AI Quant',
- 'aiQuant.strategyList': 'Strategies',
- 'aiQuant.create': 'Create',
- 'aiQuant.edit': 'Edit',
- 'aiQuant.delete': 'Delete',
- 'aiQuant.start': 'Start',
- 'aiQuant.stop': 'Stop',
- 'aiQuant.analyze': 'Analyze Now',
- 'aiQuant.noStrategy': 'No strategies yet, click to create',
- 'aiQuant.selectStrategy': 'Select a strategy from the left',
- 'aiQuant.createFirst': 'Create Your First Strategy',
- 'aiQuant.createStrategy': 'Create Strategy',
- 'aiQuant.editStrategy': 'Edit Strategy',
- 'aiQuant.confirmDelete': 'Are you sure you want to delete this strategy?',
- 'aiQuant.latestAnalysis': 'Latest Analysis',
- 'aiQuant.analysisHistory': 'Analysis History',
- 'aiQuant.decision': 'Decision',
- 'aiQuant.confidence': 'Confidence',
- 'aiQuant.currentPrice': 'Current Price',
- 'aiQuant.entryPrice': 'Entry Price',
- 'aiQuant.stopLoss': 'Stop Loss',
- 'aiQuant.takeProfit': 'Take Profit',
- 'aiQuant.reason': 'Reason',
- 'aiQuant.analyzedAt': 'Analyzed At',
- 'aiQuant.tradeSettings': 'Trade Settings',
- 'aiQuant.minutes': 'min',
- 'aiQuant.hour': 'hour',
- 'aiQuant.hours': 'hours',
-
- // AI Quant Stats
- 'aiQuant.stats.totalStrategies': 'Total Strategies',
- 'aiQuant.stats.runningStrategies': 'Running',
- 'aiQuant.stats.totalAnalyses': 'Analyses',
- 'aiQuant.stats.totalPnl': 'Total PnL',
-
- // AI Quant Status
- 'aiQuant.status.running': 'Running',
- 'aiQuant.status.stopped': 'Stopped',
- 'aiQuant.status.paused': 'Paused',
-
- // AI Quant Execution Mode
- 'aiQuant.executionMode.signal': 'Signal Only',
- 'aiQuant.executionMode.live': 'Live Trading',
-
- // AI Quant Market Type
- 'aiQuant.marketType.spot': 'Spot',
- 'aiQuant.marketType.futures': 'Futures',
-
- // AI Quant Fields
- 'aiQuant.field.strategyName': 'Strategy Name',
- 'aiQuant.field.market': 'Market',
- 'aiQuant.field.symbol': 'Symbol',
- 'aiQuant.field.marketType': 'Market Type',
- 'aiQuant.field.aiModel': 'AI Model',
- 'aiQuant.field.interval': 'Analysis Interval',
- 'aiQuant.field.aiPrompt': 'AI Prompt',
- 'aiQuant.field.executionMode': 'Execution Mode',
- 'aiQuant.field.positionSize': 'Position Size',
- 'aiQuant.field.stopLoss': 'Stop Loss %',
- 'aiQuant.field.takeProfit': 'Take Profit %',
- 'aiQuant.field.totalAnalyses': 'Total Analyses',
- 'aiQuant.field.totalTrades': 'Total Trades',
- 'aiQuant.field.totalPnl': 'Total PnL',
-
- // AI Quant Placeholders
- 'aiQuant.placeholder.strategyName': 'Enter strategy name',
- 'aiQuant.placeholder.market': 'Select market',
- 'aiQuant.placeholder.symbol': 'e.g., BTC/USDT',
- 'aiQuant.placeholder.aiModel': 'Use system default',
- 'aiQuant.placeholder.aiPrompt': 'Enter your trading strategy prompt, e.g., Buy when RSI is below 30...',
-
- // AI Quant Validation
- 'aiQuant.validation.strategyName': 'Please enter strategy name',
- 'aiQuant.validation.market': 'Please select market',
- 'aiQuant.validation.symbol': 'Please enter symbol',
-
- // AI Quant Table Columns
- 'aiQuant.table.decision': 'Decision',
- 'aiQuant.table.confidence': 'Confidence',
- 'aiQuant.table.entryPrice': 'Entry',
- 'aiQuant.table.stopLoss': 'Stop Loss',
- 'aiQuant.table.takeProfit': 'Take Profit',
- 'aiQuant.table.time': 'Time',
-
- // AI Quant Messages
- 'aiQuant.msg.createSuccess': 'Strategy created successfully',
- 'aiQuant.msg.updateSuccess': 'Strategy updated successfully',
- 'aiQuant.msg.deleteSuccess': 'Strategy deleted successfully',
- 'aiQuant.msg.startSuccess': 'Strategy started',
- 'aiQuant.msg.stopSuccess': 'Strategy stopped',
- 'aiQuant.msg.analyzeSuccess': 'Analysis completed',
-
- // AI Quant New Fields
- 'aiQuant.field.initialCapital': 'Initial Capital',
- 'aiQuant.field.leverage': 'Leverage',
- 'aiQuant.field.tradeDirection': 'Trade Direction',
- 'aiQuant.field.trailingStop': 'Trailing Stop',
- 'aiQuant.field.trailingStopPct': 'Trailing Stop %',
- 'aiQuant.direction.long': 'Long Only',
- 'aiQuant.direction.short': 'Short Only',
- 'aiQuant.direction.both': 'Both',
- 'aiQuant.riskControl': 'Risk Control',
- 'aiQuant.aiSettings': 'AI Settings',
- 'aiQuant.systemDefault': 'System Default',
- 'aiQuant.placeholder.selectSymbol': 'Select from watchlist',
- 'aiQuant.hint.symbolFromWatchlist': 'Select from your watchlist, market type is auto-detected',
- 'aiQuant.hint.spotLeverageFixed': 'Spot market leverage is fixed at 1x',
- 'aiQuant.hint.stopLossEnforced': 'Enforced stop loss, AI cannot modify',
- 'aiQuant.hint.takeProfitEnforced': 'Enforced take profit, AI cannot modify',
- 'aiQuant.hint.aiPromptOnly': 'AI only determines direction based on prompt, will not modify your risk settings',
- 'aiQuant.aiLimitWarning': 'AI Permission Restricted',
- 'aiQuant.aiLimitDescription': 'AI can ONLY determine trade direction (BUY/SELL/HOLD). Leverage, position size, stop loss/take profit are fully controlled by you and CANNOT be modified by AI.',
- 'aiQuant.userStopLoss': 'Your Stop Loss',
- 'aiQuant.userTakeProfit': 'Your Take Profit',
- 'aiQuant.userLeverage': 'Your Leverage',
- 'aiQuant.validation.initialCapital': 'Please enter initial capital',
- 'aiQuant.table.currentPrice': 'Current Price',
-
- // AI Quant Prompt Templates
- 'aiQuant.field.promptTemplate': 'Strategy Template',
- 'aiQuant.placeholder.selectTemplate': 'Select a preset template',
- 'aiQuant.template.default': '๐ Comprehensive Analysis (Recommended)',
- 'aiQuant.template.trend': '๐ Trend Following',
- 'aiQuant.template.swing': '๐ Swing Trading',
- 'aiQuant.template.news': '๐ฐ News Driven',
- 'aiQuant.template.custom': 'โ๏ธ Custom',
- 'aiQuant.hint.dataProvided': 'System auto-provides: real-time price, indicators (RSI/MACD/MA), recent news, macro data. AI analyzes these with your prompt to determine direction.',
- 'aiQuant.hint.liveWarning': 'Live mode will trade with REAL money! Make sure you have configured exchange API and understand the risks!',
-
- // Trading Assistant - Live Trading Disclaimer
- 'trading-assistant.liveDisclaimer.title': 'Live Trading Disclaimer',
- 'trading-assistant.liveDisclaimer.content': 'Live trading involves significant risk and may result in partial or total loss of funds. The platform does not guarantee returns or profits. You are responsible for your own decisions and outcomes.',
- 'trading-assistant.liveDisclaimer.agree': 'I have read and understood the disclaimer and still want to enable live trading',
- 'trading-assistant.liveDisclaimer.required': 'Please accept the disclaimer before enabling live trading',
- 'trading-assistant.liveDisclaimer.blockTitle': 'Please accept the disclaimer first',
- 'trading-assistant.liveDisclaimer.blockDesc': 'You must accept the disclaimer to configure live trading connection and order settings.',
-
- // Billing / Membership
- 'menu.billing': 'Membership',
- 'billing.title': 'Membership / Credits',
- 'billing.desc': 'Choose a plan to activate VIP and receive bonus credits.',
- 'billing.snapshot.credits': 'Current Credits',
- 'billing.snapshot.vip': 'VIP Status',
- 'billing.snapshot.notVip': 'Not VIP',
- 'billing.snapshot.expires': 'Expires',
- 'billing.vipRule.title': 'VIP Benefit',
- 'billing.vipRule.desc': 'VIP has only one special permission: VIP-free indicators can be used without credits deduction. Other paid features/indicators still consume credits.',
- 'billing.plan.monthly': 'Monthly',
- 'billing.plan.yearly': 'Yearly',
- 'billing.plan.lifetime': 'Lifetime',
- 'billing.perMonth': 'month',
- 'billing.perYear': 'year',
- 'billing.once': 'one-time',
- 'billing.credits': 'Credits',
- 'billing.lifetimeMonthly': 'Monthly bonus',
- 'billing.buyNow': 'Buy Now',
- 'billing.purchaseSuccess': 'Purchase successful',
- 'billing.purchaseFailed': 'Purchase failed',
- 'billing.usdt.title': 'USDT Scan to Pay',
- 'billing.usdt.hintTitle': 'Scan with your wallet and send USDT',
- 'billing.usdt.hintDesc': 'Make sure the network and amount are correct (TRC20 only for now). Membership will be activated automatically after payment is confirmed.',
- 'billing.usdt.chain': 'Chain',
- 'billing.usdt.amount': 'Amount',
- 'billing.usdt.address': 'Deposit Address',
- 'billing.usdt.copyAddress': 'Copy Address',
- 'billing.usdt.copyAmount': 'Copy Amount',
- 'billing.usdt.refresh': 'Refresh',
- 'billing.usdt.expires': 'Expires',
- 'billing.usdt.paidSuccess': 'Payment confirmed. Membership activated.',
- 'billing.usdt.status.pending': 'Waiting for payment',
- 'billing.usdt.status.paid': 'Payment detected',
- 'billing.usdt.status.confirmed': 'Confirmed',
- 'billing.usdt.status.expired': 'Expired',
- 'billing.usdt.status.cancelled': 'Cancelled',
- 'billing.usdt.status.failed': 'Failed',
-
- // Community
- 'community.vipFree': 'VIP Free',
-
- // Indicator publish
- 'dashboard.indicator.publish.vipFree': 'VIP Free',
- 'dashboard.indicator.publish.vipFreeHint': 'When enabled: VIP users can use this indicator for free (non-VIP still need to purchase).'
-}
-
-export default {
- ...components,
- ...locale
-}
diff --git a/quantdinger_vue/src/locales/lang/fr-FR.js b/quantdinger_vue/src/locales/lang/fr-FR.js
deleted file mode 100644
index af8d638..0000000
--- a/quantdinger_vue/src/locales/lang/fr-FR.js
+++ /dev/null
@@ -1,1823 +0,0 @@
-import antdFrFR from 'ant-design-vue/es/locale-provider/fr_FR'
-import momentFR from 'moment/locale/fr'
-
-const components = {
- antLocale: antdFrFR,
- momentName: 'fr',
- momentLocale: momentFR
-}
-
-const locale = {
- 'submit': 'Soumettre',
- 'save': 'enregistrer',
- 'submit.ok': 'Soumission rรฉussie',
- 'save.ok': 'Enregistrรฉ avec succรจs',
- 'menu.welcome': 'bienvenue',
- 'menu.home': "Page d'accueil",
- 'menu.dashboard': 'Tableau de bord',
- 'menu.dashboard.indicator': 'Analyse des indicateurs',
- 'menu.dashboard.community': 'communautรฉ des indicateurs',
- 'menu.dashboard.analysis': "Analyse de l'IA",
- 'menu.dashboard.tradingAssistant': 'Assistante commerciale',
- 'menu.dashboard.aiTradingAssistant': 'Assistant de trading IA',
- 'menu.dashboard.signalRobot': 'Robot de signal',
- 'menu.dashboard.monitor': 'Page de surveillance',
- 'menu.dashboard.workplace': 'รฉtabli',
- 'menu.form': 'page de formulaire',
- 'menu.form.basic-form': 'forme de base',
- 'menu.form.step-form': 'formulaire รฉtape par รฉtape',
- 'menu.form.step-form.info': 'Formulaire รฉtape par รฉtape (remplir les informations de transfert)',
- 'menu.form.step-form.confirm': 'Formulaire รฉtape par รฉtape (confirmer les informations de transfert)',
- 'menu.form.step-form.result': 'Formulaire รฉtape par รฉtape (ร complรฉter)',
- 'menu.form.advanced-form': 'Formulaires avancรฉs',
- 'menu.list': 'Page de liste',
- 'menu.list.table-list': 'Formulaire de demande',
- 'menu.list.basic-list': 'Liste standard',
- 'menu.list.card-list': 'liste de cartes',
- 'menu.list.search-list': 'liste de recherche',
- 'menu.list.search-list.articles': 'Liste de recherche (articles)',
- 'menu.list.search-list.projects': 'Liste de recherche (projet)',
- 'menu.list.search-list.applications': 'Liste de recherche (application)',
- 'menu.profile': 'Page de dรฉtails',
- 'menu.profile.basic': 'Page de dรฉtails de base',
- 'menu.profile.advanced': 'Page de dรฉtails avancรฉs',
- 'menu.result': 'Page de rรฉsultats',
- 'menu.result.success': 'page de rรฉussite',
- 'menu.result.fail': "page d'รฉchec",
- 'menu.exception': "Page d'exceptions",
- 'menu.exception.not-permission': '403',
- 'menu.exception.not-find': '404',
- 'menu.exception.server-error': '500',
- 'menu.exception.trigger': 'erreur de dรฉclenchement',
- 'menu.account': 'Page personnelle',
- 'menu.account.center': 'Centre personnel',
- 'menu.account.settings': 'paramรจtres personnels',
- 'menu.account.trigger': 'Erreur de dรฉclenchement',
- 'menu.account.logout': 'Se dรฉconnecter',
- 'menu.wallet': 'mon portefeuille',
- 'menu.docs': 'Centre de documentation',
- 'menu.docs.detail': 'Dรฉtails du document',
- 'menu.header.refreshPage': 'actualiser la page',
- 'menu.invite.friends': 'Inviter des amis',
- 'app.setting.pagestyle': 'paramรจtres de style gรฉnรฉraux',
- 'app.setting.pagestyle.light': 'Style de menu lumineux',
- 'app.setting.pagestyle.dark': 'style de menu sombre',
- 'app.setting.pagestyle.realdark': 'mode sombre',
- 'app.setting.themecolor': 'couleur du thรจme',
- 'app.setting.navigationmode': 'Mode navigation',
- 'app.setting.sidemenu.nav': 'Navigation dans la barre latรฉrale',
- 'app.setting.topmenu.nav': 'Navigation dans la barre supรฉrieure',
- 'app.setting.content-width': 'largeur de la zone de contenu',
- 'app.setting.content-width.tooltip': "Ce paramรจtre n'est efficace que lorsque [Navigation dans la barre supรฉrieure]",
- 'app.setting.content-width.fixed': 'Corrigรฉ',
- 'app.setting.content-width.fluid': 'diffusion en continu',
- 'app.setting.fixedheader': 'En-tรชte fixe',
- 'app.setting.fixedheader.tooltip': "Configurable lorsqu'il est fixe",
- 'app.setting.autoHideHeader': "Masquer l'en-tรชte lors du dรฉfilement",
- 'app.setting.fixedsidebar': 'Menu latรฉral fixe',
- 'app.setting.sidemenu': 'Disposition du menu latรฉral',
- 'app.setting.topmenu': 'Disposition du menu supรฉrieur',
- 'app.setting.othersettings': 'Autres paramรจtres',
- 'app.setting.weakmode': 'Mode de faiblesse des couleurs',
- 'app.setting.multitab': 'Mode multi-onglets',
- 'app.setting.copy': 'Paramรจtres de copie',
- 'app.setting.loading': 'Chargement du thรจme',
- 'app.setting.copyinfo': 'Copiez les paramรจtres avec succรจs src/config/defaultSettings.js',
- 'app.setting.copy.success': 'Copie terminรฉe',
- 'app.setting.copy.fail': 'รchec de la copie',
- 'app.setting.theme.switching': 'Changer de thรจme !',
- 'app.setting.production.hint': "La barre de configuration est uniquement utilisรฉe pour l'aperรงu dans l'environnement de dรฉveloppement et ne sera pas affichรฉe dans l'environnement de production. Veuillez copier et modifier le fichier de configuration manuellement.",
- 'app.setting.themecolor.daybreak': 'Bleu aube (par dรฉfaut)',
- 'app.setting.themecolor.dust': 'crรฉpuscule',
- 'app.setting.themecolor.volcano': 'volcan',
- 'app.setting.themecolor.sunset': 'coucher de soleil',
- 'app.setting.themecolor.cyan': 'Mingqing',
- 'app.setting.themecolor.green': 'aurore verte',
- 'app.setting.themecolor.geekblue': 'bleu geek',
- 'app.setting.themecolor.purple': 'Jiang Zi',
- 'app.setting.tooltip': 'Paramรจtres des pages',
- 'user.login.userName': "Nom d'utilisateur",
- 'user.login.password': 'Mot de passe',
- 'user.login.username.placeholder': 'Compteย : administrateur',
- 'user.login.password.placeholder': 'Mot de passe : admin ou ant.design',
- 'user.login.message-invalid-credentials': 'La connexion a รฉchouรฉ, veuillez vรฉrifier votre e-mail et votre code de vรฉrification',
- 'user.login.message-invalid-verification-code': 'Erreur de code de vรฉrification',
- 'user.login.tab-login-credentials': 'Connexion par mot de passe du compte',
- 'user.login.tab-login-email': 'Connexion par e-mail',
- 'user.login.tab-login-mobile': 'Connexion au numรฉro de tรฉlรฉphone portable',
- 'user.login.captcha.placeholder': 'Veuillez saisir le code de vรฉrification graphique',
- 'user.login.mobile.placeholder': 'Numรฉro de tรฉlรฉphone portable',
- 'user.login.mobile.verification-code.placeholder': 'Code de vรฉrification',
- 'user.login.email.placeholder': 'Veuillez entrer votre adresse e-mail',
- 'user.login.email.verification-code.placeholder': 'Veuillez entrer le code de vรฉrification',
- 'user.login.email.sending': "Le code de vรฉrification est en cours d'envoi...",
- 'user.login.email.send-success-title': 'Conseils',
- 'user.login.email.send-success': 'Code de vรฉrification envoyรฉ avec succรจs, veuillez vรฉrifier votre email',
- 'user.login.sms.send-success': 'Code de vรฉrification envoyรฉ avec succรจs, veuillez vรฉrifier le message texte',
- 'user.login.remember-me': 'Connexion automatique',
- 'user.login.forgot-password': 'Mot de passe oubliรฉ',
- 'user.login.sign-in-with': 'Autres mรฉthodes de connexion',
- 'user.login.signup': 'Crรฉer un compte',
- 'user.login.login': 'Connexion',
- 'user.register.register': "S'inscrire",
- 'user.register.email.placeholder': 'Courriel',
- 'user.register.password.placeholder': 'Veuillez saisir au moins 6 caractรจres. Veuillez ne pas utiliser de mots de passe faciles ร deviner.',
- 'user.register.password.popover-message': 'Veuillez saisir au moins 6 caractรจres. Veuillez ne pas utiliser de mots de passe faciles ร deviner.',
- 'user.register.confirm-password.placeholder': 'Confirmer le mot de passe',
- 'user.register.get-verification-code': 'Obtenir le code de vรฉrification',
- 'user.register.sign-in': 'Connectez-vous en utilisant un compte existant',
- 'user.register-result.msg': 'Votre compteย : {email} Inscription rรฉussie',
- 'user.register-result.activation-email': "L'e-mail d'activation a รฉtรฉ envoyรฉ dans votre boรฎte mail et est valable 24 heures. Veuillez vous connecter rapidement ร votre messagerie et cliquer sur le lien contenu dans l'e-mail pour activer votre compte.",
- 'user.register-result.back-home': "Retour ร la page d'accueil",
- 'user.register-result.view-mailbox': 'Vรฉrifiez votre boรฎte aux lettres',
- 'user.email.required': 'Veuillez entrer votre adresse e-mailย !',
- 'user.email.wrong-format': "Le format de l'adresse e-mail est incorrectย !",
- 'user.userName.required': 'Veuillez saisir votre nom de compte ou votre adresse e-mail',
- 'user.password.required': 'Veuillez entrer votre mot de passeย !',
- 'user.password.twice.msg': 'Les mots de passe saisis deux fois ne correspondent pasย !',
- 'user.password.strength.msg': "Le mot de passe n'est pas assez fort",
- 'user.password.strength.strong': 'Forceย : Forte',
- 'user.password.strength.medium': 'Forceย : moyenne',
- 'user.password.strength.low': 'Force : faible',
- 'user.password.strength.short': 'Force : trop courte',
- 'user.confirm-password.required': 'Veuillez confirmer votre mot de passeย !',
- 'user.phone-number.required': 'Veuillez saisir le bon numรฉro de tรฉlรฉphone portable',
- 'user.phone-number.wrong-format': 'Le format du numรฉro de tรฉlรฉphone portable est erronรฉย !',
- 'user.verification-code.required': 'Veuillez entrer le code de vรฉrificationย !',
- 'user.captcha.required': 'Veuillez saisir le code de vรฉrification graphiqueย !',
- 'user.login.infos': "QuantDinger est un outil auxiliaire d'analyse boursiรจre multi-agents d'IA et n'a pas de qualifications en conseil en investissement en valeurs mobiliรจres. Tous les rรฉsultats d'analyse, scores et avis de rรฉfรฉrence de la plateforme sont automatiquement gรฉnรฉrรฉs par l'IA sur la base de donnรฉes historiques et sont utilisรฉs uniquement ร des fins d'apprentissage, de recherche et d'รฉchange technique, et ne constituent aucun conseil d'investissement ou base de prise de dรฉcision. L'investissement en actions implique divers risques tels que le risque de marchรฉ, le risque de liquiditรฉ, le risque politique, etc., qui peuvent entraรฎner une perte du principal. Les utilisateurs doivent prendre des dรฉcisions indรฉpendantes en fonction de leur propre tolรฉrance au risque, et tout comportement d'investissement et consรฉquences dรฉcoulant de l'utilisation de cet outil seront ร la charge de l'utilisateur. Le marchรฉ est risquรฉ et les investissements doivent รชtre prudents.",
- 'user.login.tab-login-web3': 'Connexion Web3',
- 'user.login.web3.tip': "Connexion par signature ร l'aide du portefeuille",
- 'user.login.web3.connect': 'Connectez le portefeuille et connectez-vous',
- 'user.login.web3.no-wallet': 'Portefeuille non dรฉtectรฉ',
- 'user.login.web3.no-address': 'Adresse du portefeuille non obtenue',
- 'user.login.web3.nonce-failed': "Impossible d'obtenir un nombre alรฉatoire",
- 'user.login.web3.verify-failed': 'La vรฉrification de la signature a รฉchouรฉ',
- 'user.login.web3.success': 'Connexion rรฉussie',
- 'user.login.web3.failed': 'รchec de la connexion au portefeuille',
- 'nav.no_wallet': 'Portefeuille non dรฉtectรฉ',
- 'nav.copy': 'Copier',
- 'nav.copy_success': 'Copiรฉ avec succรจs',
- 'user.login.oauth.google': 'Connectez-vous avec Google',
- 'user.login.oauth.github': 'Connectez-vous avec GitHub',
- 'user.login.oauth.loading': "Redirection vers la page d'autorisation...",
- 'user.login.oauth.failed': 'รchec de la connexion OAuth',
- 'user.login.oauth.get-url-failed': "รchec de l'obtention du lien d'autorisation",
- 'user.login.subtitle': 'Informations quantitatives sur les marchรฉs mondiaux',
- 'user.login.legal.title': 'Mentions lรฉgales',
- 'user.login.legal.view': 'Voir les mentions lรฉgales',
- 'user.login.legal.collapse': 'Rรฉduire les mentions lรฉgales',
- 'user.login.legal.agree': "J'ai lu et j'accepte les mentions lรฉgales",
- 'user.login.legal.required': "Veuillez d'abord lire et vรฉrifier les mentions lรฉgales",
- 'user.login.legal.content': "QuantDinger est un outil auxiliaire d'analyse boursiรจre multi-agents d'IA et n'a pas de qualifications en conseil en investissement en valeurs mobiliรจres. Tous les rรฉsultats d'analyse, notes et avis de rรฉfรฉrence de la plateforme sont automatiquement gรฉnรฉrรฉs par l'IA sur la base de donnรฉes historiques et sont utilisรฉs uniquement ร des fins d'apprentissage, de recherche et d'รฉchange technique, et ne constituent aucun conseil d'investissement ou base de prise de dรฉcision. L'investissement en actions implique divers risques tels que le risque de marchรฉ, le risque de liquiditรฉ, le risque politique, etc., qui peuvent entraรฎner une perte du principal. Les utilisateurs doivent prendre des dรฉcisions indรฉpendantes en fonction de leur propre tolรฉrance au risque, et tout comportement d'investissement et consรฉquences dรฉcoulant de l'utilisation de cet outil seront ร la charge de l'utilisateur. Le marchรฉ est risquรฉ et les investissements doivent รชtre prudents.",
- 'user.login.privacy.title': 'Politique de confidentialitรฉ des utilisateurs',
- 'user.login.privacy.view': 'Afficher la politique de confidentialitรฉ des utilisateurs',
- 'user.login.privacy.collapse': 'Fermer les conditions de confidentialitรฉ des utilisateurs',
- 'user.login.privacy.content': "Nous accordons une grande importance ร votre vie privรฉe et ร la protection de vos donnรฉes. 1) Portรฉe de la collecteย : seules les informations nรฉcessaires ร la mise en ลuvre de la fonction (telles que l'e-mail, le numรฉro de tรฉlรฉphone mobile, l'indicatif rรฉgional, l'adresse du portefeuille Web3) ainsi que les journaux et informations sur l'appareil nรฉcessaires sont collectรฉs. 2) Objectif d'utilisationย : Pour la connexion au compte et la vรฉrification de la sรฉcuritรฉ, la fourniture de fonctions de service, le dรฉpannage et les exigences de conformitรฉ. 3) Stockage et sรฉcuritรฉย : les donnรฉes sont cryptรฉes et stockรฉes, et les autorisations et mesures de contrรดle d'accรจs nรฉcessaires sont prises pour tenter d'empรชcher tout accรจs non autorisรฉ, toute divulgation ou toute perte. 4) Partage avec des tiersย : sauf si les lois et rรฉglementations l'exigent ou si cela est nรฉcessaire ร l'exรฉcution des services, vos informations personnelles ne seront pas partagรฉes avec des tiersย ; si des services tiers (tels que des portefeuilles, des fournisseurs de services SMS) sont impliquรฉs, ils ne seront traitรฉs que dans la mesure minimale nรฉcessaire ร la mise en ลuvre de la fonction. 5) Cookies/stockage localย : utilisรฉs pour le statut de connexion et la maintenance de session nรฉcessaire (tels que les jetons, PHPSESSID), vous pouvez les effacer ou les restreindre dans le navigateur. 6) Droits personnels : Vous pouvez exercer vos droits d'information, de rectification, de suppression, de retrait de consentement, etc. conformรฉment aux lois et rรจglements. 7) Modifications et avisย : lorsque ces conditions seront mises ร jour, elles seront affichรฉes bien en รฉvidence sur la page. En continuant ร utiliser ce service, vous รชtes rรฉputรฉ avoir lu et acceptรฉ le contenu mis ร jour. Si vous n'acceptez pas ces Conditions ou toute mise ร jour de celles-ci, veuillez cesser d'utiliser le Service et nous contacter.",
- 'account.basicInfo': 'Informations de base',
- 'account.id': 'Identifiant utilisateur',
- 'account.username': "Nom d'utilisateur",
- 'account.nickname': 'Surnom',
- 'account.email': 'Courriel',
- 'account.mobile': 'Numรฉro de tรฉlรฉphone portable',
- 'account.web3address': 'adresse du portefeuille',
- 'account.pid': 'Identifiant du rรฉfรฉrent',
- 'account.level': 'Niveau utilisateur',
- 'account.money': 'รฉquilibre',
- 'account.qdtBalance': 'Solde QDT',
- 'account.score': 'Points',
- 'account.createtime': "Heure d'inscription",
- 'account.inviteLink': "Lien d'invitation",
- 'account.recharge': 'Recharger',
- 'account.rechargeTip': 'Veuillez utiliser WeChat ou Alipay pour scanner le code QR ci-dessous pour recharger.',
- 'account.qrCodePlaceholder': 'Espace rรฉservรฉ au code QR (รฉmulation)',
- 'account.rechargeAmount': 'Montant de la recharge',
- 'account.enterAmount': 'Veuillez saisir le montant de la recharge',
- 'account.rechargeHint': 'Montant minimum du dรฉpรดtย : 1 QDT',
- 'account.confirmRecharge': 'Confirmer la recharge',
- 'account.enterValidAmount': 'Veuillez saisir un montant de recharge valide',
- 'account.rechargeSuccess': 'Recharge rรฉussieย ! Dรฉposรฉ {montant} QDT',
- 'account.settings.menuMap.basic': 'Paramรจtres de base',
- 'account.settings.menuMap.security': 'Paramรจtres de sรฉcuritรฉ',
- 'account.settings.menuMap.notification': 'Notification de nouveau message',
- 'account.settings.menuMap.moneyLog': 'Dรฉtails du fonds',
- 'account.moneyLog.empty': "Aucun dรฉtail sur le fonds pour l'instant",
- 'account.moneyLog.total': '{total} enregistrements au total',
- 'account.moneyLog.type.purchase': "indicateur d'achat",
- 'account.moneyLog.type.recharge': 'Recharger',
- 'account.moneyLog.type.refund': 'Remboursement',
- 'account.moneyLog.type.reward': 'rรฉcompense',
- 'account.moneyLog.type.income': "Revenu de l'indicateur",
- 'account.moneyLog.type.commission': 'Frais de gestion de la plateforme',
- 'wallet.balance': 'Solde QDT',
- 'wallet.recharge': 'Recharger',
- 'wallet.withdraw': "Retirer de l'argent",
- 'wallet.filter': 'Filtrer',
- 'wallet.reset': 'rรฉinitialiser',
- 'wallet.totalRecharge': 'Recharge accumulรฉe',
- 'wallet.totalWithdraw': 'Retraits cumulรฉs',
- 'wallet.totalIncome': 'Revenu cumulรฉ',
- 'wallet.records': 'Enregistrements de transactions et dรฉtails des fonds',
- 'wallet.tradingRecords': 'historique des transactions',
- 'wallet.moneyLog': 'Dรฉtails du fonds',
- 'wallet.rechargeTip': 'Veuillez utiliser WeChat ou Alipay pour scanner le code QR ci-dessous pour recharger.',
- 'wallet.qrCodePlaceholder': 'Espace rรฉservรฉ au code QR (รฉmulation)',
- 'wallet.rechargeAmount': 'Montant de la recharge',
- 'wallet.enterAmount': 'Veuillez saisir le montant de la recharge',
- 'wallet.rechargeHint': 'Montant minimum du dรฉpรดtย : 1 QDT',
- 'wallet.confirmRecharge': 'Confirmer la recharge',
- 'wallet.enterValidAmount': 'Veuillez saisir un montant de recharge valide',
- 'wallet.rechargeSuccess': 'Recharge rรฉussieย ! Dรฉposรฉ {montant} QDT',
- 'wallet.rechargeFailed': 'La recharge a รฉchouรฉ',
- 'wallet.withdrawTip': "Veuillez saisir le montant du retrait et l'adresse de retrait",
- 'wallet.withdrawAmount': 'Montant du retrait',
- 'wallet.enterWithdrawAmount': 'Veuillez saisir le montant du retrait',
- 'wallet.withdrawHint': 'Montant minimum de retrait : 1 QDT',
- 'wallet.withdrawAddress': 'Adresse de retrait (facultatif)',
- 'wallet.enterWithdrawAddress': "Veuillez saisir l'adresse de retrait",
- 'wallet.confirmWithdraw': 'Confirmer le retrait',
- 'wallet.enterValidWithdrawAmount': 'Veuillez saisir un montant de retrait valide',
- 'wallet.insufficientBalance': 'Solde insuffisant',
- 'wallet.withdrawSuccess': 'Retrait rรฉussi ! Retirรฉ {montant} QDT',
- 'wallet.withdrawFailed': 'รchec du retrait',
- 'wallet.noTradingRecords': "Aucun enregistrement de transaction pour l'instant",
- 'wallet.noMoneyLog': "Aucun dรฉtail sur le fonds pour l'instant",
- 'wallet.loadTradingRecordsFailed': 'รchec du chargement des enregistrements de transaction',
- 'wallet.loadMoneyLogFailed': 'รchec du chargement des dรฉtails du fonds',
- 'wallet.moneyLogTotal': '{total} enregistrements au total',
- 'wallet.moneyLogTypeTitle': 'Tapez',
- 'wallet.moneyLogType.all': 'Tous types',
- 'wallet.table.time': 'temps',
- 'wallet.table.type': 'Tapez',
- 'wallet.table.price': 'prix',
- 'wallet.table.amount': 'Quantitรฉ',
- 'wallet.table.money': 'Montant',
- 'wallet.table.balance': 'รฉquilibre',
- 'wallet.table.memo': 'Remarques',
- 'wallet.table.value': 'valeur',
- 'wallet.table.profit': 'Profits et pertes',
- 'wallet.table.commission': 'frais de traitement',
- 'wallet.table.total': '{total} enregistrements au total',
- 'wallet.tradeType.buy': 'acheter',
- 'wallet.tradeType.sell': 'vendre',
- 'wallet.tradeType.liquidation': 'liquidation forcรฉe',
- 'wallet.tradeType.openLong': 'Ouvert longtemps',
- 'wallet.tradeType.addLong': 'Gadot',
- 'wallet.tradeType.closeLong': 'Pinduo',
- 'wallet.tradeType.closeLongStop': 'Stop loss et long',
- 'wallet.tradeType.closeLongProfit': 'Prenez des bรฉnรฉfices et gagnez plus de niveaux',
- 'wallet.tradeType.openShort': 'Ouvert court',
- 'wallet.tradeType.addShort': 'ajouter un court',
- 'wallet.tradeType.closeShort': 'vide',
- 'wallet.tradeType.closeShortStop': 'Arrรชter la perte',
- 'wallet.tradeType.closeShortProfit': 'Prenez des bรฉnรฉfices et clรดturez ร dรฉcouvert',
- 'wallet.moneyLogType.purchase': "indicateur d'achat",
- 'wallet.moneyLogType.recharge': 'Recharger',
- 'wallet.moneyLogType.withdraw': "Retirer de l'argent",
- 'wallet.moneyLogType.refund': 'Remboursement',
- 'wallet.moneyLogType.reward': 'rรฉcompense',
- 'wallet.moneyLogType.income': 'revenu',
- 'wallet.moneyLogType.commission': 'frais de traitement',
- 'wallet.web3Address.required': "Veuillez d'abord remplir l'adresse du portefeuille Web3",
- 'wallet.web3Address.requiredDescription': "Avant de recharger, vous devez lier l'adresse de votre portefeuille Web3 pour recevoir la recharge.",
- 'wallet.web3Address.placeholder': "Veuillez saisir l'adresse de votre portefeuille Web3 (en commenรงant par 0x)",
- 'wallet.web3Address.save': "Enregistrer l'adresse du portefeuille",
- 'wallet.web3Address.saveSuccess': 'Adresse du portefeuille enregistrรฉe avec succรจs',
- 'wallet.web3Address.saveFailed': "รchec de l'enregistrement de l'adresse du portefeuille",
- 'wallet.web3Address.invalidFormat': 'Veuillez saisir une adresse de portefeuille Web3 valide (format Ethereum : 42 caractรจres commenรงant par 0x, ou format TRC20 : 34 caractรจres commenรงant par T)',
- 'wallet.selectCoin': 'Sรฉlectionnez la devise',
- 'wallet.selectChain': 'chaรฎne de sรฉlection',
- 'wallet.chain.eth': 'ETH(ERC20)',
- 'wallet.chain.trc20': 'TRC20',
- 'wallet.chain.bsc': 'BSC',
- 'wallet.targetQdtAmount': 'Le montant de QDT que vous souhaitez รฉchanger (facultatif)',
- 'wallet.targetQdtAmount.placeholder': 'Veuillez saisir la quantitรฉ de QDT que vous souhaitez utiliser, le prix actuel du QDTย :ย {price} USDT',
- 'wallet.targetQdtAmount.requiredUsdt': 'Besoin de rechargeย :ย {amount}ย USDT',
- 'wallet.rechargeAddress': 'Adresse de recharge',
- 'wallet.copyAddress': 'Copier',
- 'wallet.copySuccess': 'Copiez avec succรจsย !',
- 'wallet.copyFailed': 'รchec de la copie, veuillez copier manuellement',
- 'wallet.rechargeAddressHint': "Veuillez vous assurer d'utiliser {chain} pour dรฉposer {coin} ร cette adresse",
- 'wallet.qdtPrice.loading': 'Chargement...',
- 'wallet.rechargeTip.new': 'Veuillez sรฉlectionner la devise et la chaรฎne, puis scannez le code QR ci-dessous pour recharger',
- 'wallet.exchangeRate': '1 QDT โ {taux} USDT',
- 'wallet.withdrawableAmount': 'Montant des liquiditรฉs disponibles',
- 'wallet.totalBalance': 'solde total',
- 'wallet.insufficientWithdrawable': 'Le montant en espรจces pouvant รชtre retirรฉ est insuffisant. Le montant actuel qui peut รชtre retirรฉ estย :ย {amount} QDT',
- 'wallet.withdrawAddressRequired': "Veuillez saisir l'adresse de retrait",
- 'wallet.withdrawAddressHint': "Veuillez vous assurer que l'adresse est correcte. Aprรจs le retrait, il ne peut รชtre rรฉvoquรฉ.",
- 'wallet.withdrawSubmitSuccess': "Demande de retrait soumise avec succรจs, veuillez attendre l'examen",
- 'menu.footer.contactUs': 'Contactez-nous',
- 'menu.footer.getSupport': "Obtenir de l'aide",
- 'menu.footer.socialAccounts': 'compte social',
- 'menu.footer.userAgreement': "Contrat d'utilisation",
- 'menu.footer.privacyPolicy': 'politique de confidentialitรฉ',
- 'menu.footer.support': 'Assistance',
- 'menu.footer.featureRequest': 'Demande de fonctionnalitรฉ',
- 'menu.footer.email': 'Courriel',
- 'menu.footer.liveChat': 'Chat en direct 24h/24 et 7j/7',
- 'dashboard.analysis.title': 'Analyse multidimensionnelle',
- 'dashboard.analysis.subtitle': "Plateforme d'analyse financiรจre complรจte basรฉe sur l'IA",
- 'dashboard.analysis.selectSymbol': 'Sรฉlectionnez ou saisissez le code sous-jacent',
- 'dashboard.analysis.selectModel': 'Sรฉlectionnez le modรจle',
- 'dashboard.analysis.startAnalysis': "Dรฉmarrer l'analyse",
- 'dashboard.analysis.history': 'Histoire',
- 'dashboard.analysis.tab.overview': 'analyse complรจte',
- 'dashboard.analysis.tab.fundamental': 'Fondamentaux',
- 'dashboard.analysis.tab.technical': 'technologie',
- 'dashboard.analysis.tab.news': 'Actualitรฉs',
- 'dashboard.analysis.tab.sentiment': 'รฉmotions',
- 'dashboard.analysis.tab.risk': 'risque',
- 'dashboard.analysis.tab.debate': 'Le dรฉbat long-court',
- 'dashboard.analysis.tab.decision': 'dรฉcision finale',
- 'dashboard.analysis.empty.selectSymbol': "Sรฉlectionnez une cible pour dรฉmarrer l'analyse",
- 'dashboard.analysis.empty.selectSymbolDesc': "Sรฉlectionnez dans la liste d'actions auto-sรฉlectionnรฉe ou entrez le code sous-jacent pour obtenir un rapport d'analyse IA multidimensionnel",
- 'dashboard.analysis.empty.startAnalysis': "Cliquez sur le bouton \"Dรฉmarrer l'analyse\" pour effectuer une analyse multidimensionnelle",
- 'dashboard.analysis.empty.startAnalysisDesc': "Nous vous fournirons une analyse complรจte portant sur plusieurs dimensions telles que les fondamentaux, la technologie, l'actualitรฉ, le sentiment et le risque.",
- 'dashboard.analysis.empty.noData': "Il n'y a actuellement aucune donnรฉe d'analyse {type}, veuillez d'abord effectuer une analyse complรจte",
- 'dashboard.analysis.empty.noWatchlist': "Il n'y a actuellement aucun titre auto-sรฉlectionnรฉ",
- 'dashboard.analysis.empty.noHistory': "Pas encore d'historique",
- 'dashboard.analysis.empty.watchlistHint': "Il n'y a actuellement aucun stock auto-sรฉlectionnรฉ, veuillez d'abord",
- 'dashboard.analysis.empty.noDebateData': "Aucune donnรฉe de dรฉbat pour l'instant",
- 'dashboard.analysis.empty.noDecisionData': "Aucune donnรฉe de dรฉcision pour l'instant",
- 'dashboard.analysis.empty.selectAgent': "Veuillez sรฉlectionner un agent pour afficher les rรฉsultats de l'analyse",
- 'dashboard.analysis.loading.analyzing': 'Analyse, veuillez patienter...',
- 'dashboard.analysis.loading.fundamental': 'Analyser les donnรฉes fondamentales...',
- 'dashboard.analysis.loading.technical': 'Analyse des indicateurs techniques...',
- 'dashboard.analysis.loading.news': "Analyser les donnรฉes d'actualitรฉ...",
- 'dashboard.analysis.loading.sentiment': 'Analyser le sentiment du marchรฉ...',
- 'dashboard.analysis.loading.risk': 'รvaluer le risque...',
- 'dashboard.analysis.loading.debate': 'Le dรฉbat long-court est en cours...',
- 'dashboard.analysis.loading.decision': 'Gรฉnรฉrer la dรฉcision finale...',
- 'dashboard.analysis.score.overall': 'Note globale',
- 'dashboard.analysis.score.recommendation': 'conseil en investissement',
- 'dashboard.analysis.score.confidence': 'Confiance',
- 'dashboard.analysis.dimension.fundamental': 'Fondamentaux',
- 'dashboard.analysis.dimension.technical': 'technologie',
- 'dashboard.analysis.dimension.news': 'Actualitรฉs',
- 'dashboard.analysis.dimension.sentiment': 'รฉmotions',
- 'dashboard.analysis.dimension.risk': 'risque',
- 'dashboard.analysis.card.dimensionScores': 'Notes pour chaque dimension',
- 'dashboard.analysis.card.overviewReport': "Rapport d'analyse complet",
- 'dashboard.analysis.card.financialMetrics': 'indicateurs financiers',
- 'dashboard.analysis.card.fundamentalReport': "Rapport d'analyse fondamentale",
- 'dashboard.analysis.card.technicalIndicators': 'Indicateurs techniques',
- 'dashboard.analysis.card.technicalReport': "rapport d'analyse technique",
- 'dashboard.analysis.card.newsList': 'Actualitรฉs connexes',
- 'dashboard.analysis.card.newsReport': "Rapport d'analyse de l'actualitรฉ",
- 'dashboard.analysis.card.sentimentIndicators': 'indicateur de sentiment',
- 'dashboard.analysis.card.sentimentReport': "Rapport d'analyse des sentiments",
- 'dashboard.analysis.card.riskMetrics': 'indicateurs de risque',
- 'dashboard.analysis.card.riskReport': "rapport d'รฉvaluation des risques",
- 'dashboard.analysis.card.bullView': 'Vue haussiรจre (Taureau)',
- 'dashboard.analysis.card.bearView': 'Vue baissiรจre (ours)',
- 'dashboard.analysis.card.researchConclusion': 'Conclusion du chercheur',
- 'dashboard.analysis.card.traderPlan': 'plan de commerรงant',
- 'dashboard.analysis.card.riskDebate': 'Dรฉbat en commission des risques',
- 'dashboard.analysis.card.finalDecision': 'Dรฉcision finale',
- 'dashboard.analysis.card.tradePlanDetail': 'Dรฉtails du plan de trading',
- 'dashboard.analysis.tradingPlan.entry_price': "Prix d'entrรฉe",
- 'dashboard.analysis.tradingPlan.position_size': 'Taille du poste',
- 'dashboard.analysis.tradingPlan.stop_loss': 'arrรชter les pertes',
- 'dashboard.analysis.tradingPlan.take_profit': 'Profiter',
- 'dashboard.analysis.label.confidence': 'Confiance',
- 'dashboard.analysis.label.keyPoints': 'points essentiels',
- 'dashboard.analysis.label.riskWarning': 'Avertissement de risque',
- 'dashboard.analysis.risk.risky': 'Risquรฉ',
- 'dashboard.analysis.risk.neutral': 'Point de vue neutre (Neutre)',
- 'dashboard.analysis.risk.safe': 'Vue conservatrice (sรปr)',
- 'dashboard.analysis.risk.conclusion': 'Conclusion',
- 'dashboard.analysis.feature.fundamental': 'analyse fondamentale',
- 'dashboard.analysis.feature.technical': 'analyse technique',
- 'dashboard.analysis.feature.news': "analyse de l'actualitรฉ",
- 'dashboard.analysis.feature.sentiment': 'analyse des sentiments',
- 'dashboard.analysis.feature.risk': 'รฉvaluation des risques',
- 'dashboard.analysis.watchlist.title': 'Ma sรฉlection de titres',
- 'dashboard.analysis.watchlist.add': 'ajouter',
- 'dashboard.analysis.watchlist.addStock': 'ajouter du stock',
- 'dashboard.analysis.modal.addStock.title': 'Ajouter des actions facultatives',
- 'dashboard.analysis.modal.addStock.confirm': "D'accord",
- 'dashboard.analysis.modal.addStock.cancel': 'Annuler',
- 'dashboard.analysis.modal.addStock.market': 'type de marchรฉ',
- 'dashboard.analysis.modal.addStock.marketPlaceholder': 'Veuillez sรฉlectionner un marchรฉ',
- 'dashboard.analysis.modal.addStock.marketRequired': 'Veuillez sรฉlectionner le type de marchรฉ',
- 'dashboard.analysis.modal.addStock.symbol': 'Code de stock',
- 'dashboard.analysis.modal.addStock.symbolPlaceholder': 'Par exempleย :ย AAPL, TSLA, GOOGL, 000001, BTC',
- 'dashboard.analysis.modal.addStock.symbolRequired': 'Veuillez entrer le code de stock',
- 'dashboard.analysis.modal.addStock.searchPlaceholder': 'Rechercher le code ou le nom de la cible',
- 'dashboard.analysis.modal.addStock.searchOrInputPlaceholder': 'Recherchez ou saisissez le code sous-jacent (par exempleย : AAPL, BTC/USDT, EUR/USD)',
- 'dashboard.analysis.modal.addStock.searchOrInputHint': "Prend en charge la recherche d'objets dans la base de donnรฉes ou la saisie directe du code (le systรจme obtiendra automatiquement le nom)",
- 'dashboard.analysis.modal.addStock.search': 'Rechercher',
- 'dashboard.analysis.modal.addStock.searchResults': 'Rรฉsultats de la recherche',
- 'dashboard.analysis.modal.addStock.hotSymbols': 'Cibles populaires',
- 'dashboard.analysis.modal.addStock.noHotSymbols': "Aucune cible populaire pour l'instant",
- 'dashboard.analysis.modal.addStock.selectedSymbol': 'Sรฉlectionnรฉ',
- 'dashboard.analysis.modal.addStock.pleaseSelectSymbol': "Veuillez d'abord sรฉlectionner une cible",
- 'dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol': "Veuillez sรฉlectionner une cible ou saisir d'abord le code cible",
- 'dashboard.analysis.modal.addStock.pleaseEnterSymbol': 'Veuillez entrer le code cible',
- 'dashboard.analysis.modal.addStock.pleaseSelectMarket': "Veuillez d'abord sรฉlectionner le type de marchรฉ",
- 'dashboard.analysis.modal.addStock.searchFailed': 'La recherche a รฉchouรฉ, veuillez rรฉessayer plus tard',
- 'dashboard.analysis.modal.addStock.noSearchResults': 'Aucune cible correspondante trouvรฉe',
- 'dashboard.analysis.modal.addStock.willAutoFetchName': 'Le systรจme obtiendra automatiquement le nom',
- 'dashboard.analysis.modal.addStock.addDirectly': 'Ajouter directement',
- 'dashboard.analysis.modal.addStock.nameWillBeFetched': 'Le nom sera rรฉcupรฉrรฉ automatiquement une fois ajoutรฉ',
- 'dashboard.analysis.market.USStock': 'Actions amรฉricaines',
- 'dashboard.analysis.market.Crypto': 'crypto-monnaie',
- 'dashboard.analysis.market.Forex': 'Forex',
- 'dashboard.analysis.market.Futures': 'Contrats ร terme',
- 'dashboard.analysis.modal.history.title': "Enregistrements d'analyse historique",
- 'dashboard.analysis.modal.history.viewResult': 'Afficher les rรฉsultats',
- 'dashboard.analysis.modal.history.completeTime': "temps d'achรจvement",
- 'dashboard.analysis.modal.history.error': 'Erreur',
- 'dashboard.analysis.status.pending': 'En attente',
- 'dashboard.analysis.status.processing': 'Traitement',
- 'dashboard.analysis.status.completed': 'Terminรฉ',
- 'dashboard.analysis.status.failed': 'รฉchouรฉ',
- 'dashboard.analysis.message.selectSymbol': "Veuillez d'abord sรฉlectionner la cible",
- 'dashboard.analysis.message.taskCreated': "La tรขche d'analyse a รฉtรฉ crรฉรฉe et est exรฉcutรฉe en arriรจre-plan...",
- 'dashboard.analysis.message.analysisComplete': 'Analyse terminรฉe',
- 'dashboard.analysis.message.analysisCompleteCache': "Analyse terminรฉe (ร l'aide des donnรฉes mises en cache)",
- 'dashboard.analysis.message.analysisFailed': "L'analyse a รฉchouรฉ, veuillez rรฉessayer plus tard",
- 'dashboard.analysis.message.addStockSuccess': 'Ajoutรฉ avec succรจs',
- 'dashboard.analysis.message.addStockFailed': "L'ajout a รฉchouรฉ",
- 'dashboard.analysis.message.removeStockSuccess': 'Supprimรฉ avec succรจs',
- 'dashboard.analysis.message.removeStockFailed': 'รchec de la suppression',
- 'dashboard.analysis.message.resumingAnalysis': "Reprise de la tรขche d'analyse...",
- 'dashboard.analysis.message.deleteSuccess': 'Supprimรฉ avec succรจs',
- 'dashboard.analysis.message.deleteFailed': 'รchec de la suppression',
- 'dashboard.analysis.modal.history.delete': 'Supprimer',
- 'dashboard.analysis.modal.history.deleteConfirm': "รtes-vous sรปr de vouloir supprimer cet enregistrement d'analyse ?",
- 'dashboard.analysis.test': 'Magasin nยฐ {no}, route Gongzhuan',
- 'dashboard.analysis.introduce': "Description de l'indicateur",
- 'dashboard.analysis.total-sales': 'ventes totales',
- 'dashboard.analysis.day-sales': 'Ventes quotidiennes moyennes๏ฟฅ',
- 'dashboard.analysis.visits': 'Visites',
- 'dashboard.analysis.visits-trend': 'Tendances du trafic',
- 'dashboard.analysis.visits-ranking': 'Classement des visites en magasin',
- 'dashboard.analysis.day-visits': 'Visites quotidiennes',
- 'dashboard.analysis.week': 'Hebdomadaire, annรฉe sur annรฉe',
- 'dashboard.analysis.day': 'Annรฉe aprรจs annรฉe',
- 'dashboard.analysis.payments': 'Nombre de paiements',
- 'dashboard.analysis.conversion-rate': 'taux de conversion',
- 'dashboard.analysis.operational-effect': "Effets sur l'activitรฉ opรฉrationnelle",
- 'dashboard.analysis.sales-trend': 'tendances des ventes',
- 'dashboard.analysis.sales-ranking': 'Classement des ventes en magasin',
- 'dashboard.analysis.all-year': "Toute l'annรฉe",
- 'dashboard.analysis.all-month': 'ce mois-ci',
- 'dashboard.analysis.all-week': 'cette semaine',
- 'dashboard.analysis.all-day': "aujourd'hui",
- 'dashboard.analysis.search-users': "Nombre d'utilisateurs de recherche",
- 'dashboard.analysis.per-capita-search': 'Recherches par habitant',
- 'dashboard.analysis.online-top-search': 'Recherches populaires en ligne',
- 'dashboard.analysis.the-proportion-of-sales': 'Proportion de la catรฉgorie de ventes',
- 'dashboard.analysis.dropdown-option-one': 'Premiรจre opรฉration',
- 'dashboard.analysis.dropdown-option-two': 'Opรฉration 2',
- 'dashboard.analysis.channel.all': 'Toutes les chaรฎnes',
- 'dashboard.analysis.channel.online': 'en ligne',
- 'dashboard.analysis.channel.stores': 'magasin',
- 'dashboard.analysis.sales': 'ventes',
- 'dashboard.analysis.traffic': 'flux de passagers',
- 'dashboard.analysis.table.rank': 'Classement',
- 'dashboard.analysis.table.search-keyword': 'Rechercher des mots-clรฉs',
- 'dashboard.analysis.table.users': "Nombre d'utilisateurs",
- 'dashboard.analysis.table.weekly-range': 'Augmentation hebdomadaire',
- 'dashboard.indicator.selectSymbol': 'Sรฉlectionnez ou saisissez le code sous-jacent',
- 'dashboard.indicator.emptyWatchlistHint': "Il n'y a actuellement aucun titre auto-sรฉlectionnรฉ, veuillez d'abord les ajouter",
- 'dashboard.indicator.hint.selectSymbol': "Veuillez sรฉlectionner une cible pour dรฉmarrer l'analyse",
- 'dashboard.indicator.hint.selectSymbolDesc': 'Sรฉlectionnez ou entrez un code boursier dans la zone de recherche ci-dessus pour afficher les graphiques K-line et les indicateurs techniques.',
- 'dashboard.indicator.retry': 'Rรฉessayez',
- 'dashboard.indicator.panel.title': 'Indicateurs techniques',
- 'dashboard.indicator.panel.realtimeOn': 'Dรฉsactivez les mises ร jour en temps rรฉel',
- 'dashboard.indicator.panel.realtimeOff': 'Activer les mises ร jour en temps rรฉel',
- 'dashboard.indicator.panel.themeLight': 'Passer au thรจme sombre',
- 'dashboard.indicator.panel.themeDark': 'Passer au thรจme clair',
- 'dashboard.indicator.section.enabled': 'Activรฉ',
- 'dashboard.indicator.section.added': "Indicateurs que j'ai ajoutรฉs",
- 'dashboard.indicator.section.custom': 'Indicateurs crรฉรฉs par vous-mรชme',
- 'dashboard.indicator.section.bought': "Indicateurs que j'ai achetรฉs",
- 'dashboard.indicator.section.myCreated': "Indicateurs que j'ai crรฉรฉs",
- 'dashboard.indicator.empty': "Il n'y a pas encore d'indicateur, veuillez d'abord ajouter ou crรฉer un indicateur",
- 'dashboard.indicator.buy': "indicateur d'achat",
- 'dashboard.indicator.action.start': 'commencer',
- 'dashboard.indicator.action.stop': 'Fermer',
- 'dashboard.indicator.action.edit': 'Modifier',
- 'dashboard.indicator.action.delete': 'Supprimer',
- 'dashboard.indicator.action.backtest': 'backtest',
- 'dashboard.indicator.status.normal': 'normal',
- 'dashboard.indicator.status.normalPermanent': 'Normal (valable en permanence)',
- 'dashboard.indicator.status.expired': 'Expirรฉ',
- 'dashboard.indicator.expiry.permanent': 'Valable en permanence',
- 'dashboard.indicator.expiry.noExpiry': "Pas de dรฉlai d'expiration",
- 'dashboard.indicator.expiry.expired': 'Expirรฉย :ย {date}',
- 'dashboard.indicator.expiry.expiresOn': "Heure d'expirationย :ย {date}",
- 'dashboard.indicator.delete.confirmTitle': 'Confirmer la suppression',
- 'dashboard.indicator.delete.confirmContent': "รtes-vous sรปr de vouloir supprimer l'indicateur \"{name}\"ย ? Cette opรฉration est irrรฉversible.",
- 'dashboard.indicator.delete.confirmOk': 'Supprimer',
- 'dashboard.indicator.delete.confirmCancel': 'Annuler',
- 'dashboard.indicator.delete.success': 'Supprimer avec succรจs',
- 'dashboard.indicator.delete.failed': 'รchec de la suppression',
- 'dashboard.indicator.save.success': 'Enregistrรฉ avec succรจs',
- 'dashboard.indicator.save.failed': "รchec de l'enregistrement",
- 'dashboard.indicator.error.loadWatchlistFailed': 'รchec du chargement des stocks facultatifs',
- 'dashboard.indicator.error.chartNotReady': "Le composant graphique n'est pas initialisรฉ. Veuillez d'abord sรฉlectionner la cible et attendre que le graphique se charge.",
- 'dashboard.indicator.error.chartMethodNotReady': "La mรฉthode du composant graphique n'est pas prรชte, veuillez rรฉessayer plus tard",
- 'dashboard.indicator.error.chartExecuteNotReady': "La mรฉthode d'exรฉcution du composant graphique n'est pas prรชte, veuillez rรฉessayer plus tard",
- 'dashboard.indicator.error.parseFailed': "Impossible d'analyser le code Python",
- 'dashboard.indicator.error.parseFailedCheck': "Impossible d'analyser le code Python, veuillez vรฉrifier le format du code",
- 'dashboard.indicator.error.addIndicatorFailed': "รchec de l'ajout de l'indicateur",
- 'dashboard.indicator.error.runIndicatorFailed': "L'indicateur de fonctionnement a รฉchouรฉ",
- 'dashboard.indicator.error.pleaseLogin': "Veuillez d'abord vous connecter",
- 'dashboard.indicator.error.loadDataFailed': 'Le chargement des donnรฉes a รฉchouรฉ',
- 'dashboard.indicator.error.loadDataFailedDesc': 'Veuillez vรฉrifier la connexion rรฉseau',
- 'dashboard.indicator.error.pythonEngineFailed': "Le moteur Python n'a pas pu se charger et la fonction d'indicateur peut ne pas รชtre disponible.",
- 'dashboard.indicator.error.chartInitFailed': "L'initialisation du graphique a รฉchouรฉ",
- 'dashboard.indicator.warning.enterCode': "Veuillez d'abord saisir le code de l'indicateur",
- 'dashboard.indicator.warning.pyodideLoadFailed': "Le moteur Python n'a pas pu se charger",
- 'dashboard.indicator.warning.pyodideLoadFailedDesc': "Cette fonctionnalitรฉ n'est pas disponible dans votre rรฉgion ou environnement rรฉseau actuel",
- 'dashboard.indicator.warning.chartNotInitialized': "Le graphique n'est pas initialisรฉ et l'outil de dessin au trait ne peut pas รชtre utilisรฉ.",
- 'dashboard.indicator.success.runIndicator': "L'indicateur s'exรฉcute avec succรจs",
- 'dashboard.indicator.success.clearDrawings': 'Tous les dessins au trait effacรฉs',
- 'dashboard.indicator.sma': 'SMA (combinaison de moyenne mobile)',
- 'dashboard.indicator.ema': 'EMA (combinaison de moyennes mobiles exponentielles)',
- 'dashboard.indicator.rsi': 'RSI (force relative)',
- 'dashboard.indicator.macd': 'MACD',
- 'dashboard.indicator.bb': 'Bandes de Bollinger',
- 'dashboard.indicator.atr': 'ATR (plage rรฉelle moyenne)',
- 'dashboard.indicator.cci': 'CCI (indice des canaux de matiรจres premiรจres)',
- 'dashboard.indicator.williams': 'Williams %R (indicateur Williams)',
- 'dashboard.indicator.mfi': 'IMF (indice de flux monรฉtaire)',
- 'dashboard.indicator.adx': 'ADX (indice de tendance moyen)',
- 'dashboard.indicator.obv': "OBV (vague d'รฉnergie)",
- 'dashboard.indicator.adosc': "ADOSC (oscillateur d'accumulation/rรฉpartition)",
- 'dashboard.indicator.ad': "AD (ligne d'accumulation/distribution)",
- 'dashboard.indicator.kdj': 'KDJ (indicateur stochastique)',
- 'dashboard.indicator.signal.buy': 'ACHETER',
- 'dashboard.indicator.signal.sell': 'VENDRE',
- 'dashboard.indicator.signal.supertrendBuy': 'Acheter SuperTrend',
- 'dashboard.indicator.signal.supertrendSell': 'Vente SuperTrend',
- 'dashboard.indicator.chart.kline': 'Ligne K',
- 'dashboard.indicator.chart.volume': 'Volume',
- 'dashboard.indicator.chart.uptrend': 'Tendance ร la hausse',
- 'dashboard.indicator.chart.downtrend': 'Tendance ร la baisse',
- 'dashboard.indicator.tooltip.time': 'temps',
- 'dashboard.indicator.tooltip.open': 'ouvert',
- 'dashboard.indicator.tooltip.close': 'recevoir',
- 'dashboard.indicator.tooltip.high': 'haut',
- 'dashboard.indicator.tooltip.low': 'faible',
- 'dashboard.indicator.tooltip.volume': 'Volume',
- 'dashboard.indicator.drawing.line': 'segment de ligne',
- 'dashboard.indicator.drawing.horizontalLine': 'ligne horizontale',
- 'dashboard.indicator.drawing.verticalLine': 'ligne verticale',
- 'dashboard.indicator.drawing.ray': 'rayon',
- 'dashboard.indicator.drawing.straightLine': 'ligne droite',
- 'dashboard.indicator.drawing.parallelLine': 'lignes parallรจles',
- 'dashboard.indicator.drawing.priceLine': 'ligne de prix',
- 'dashboard.indicator.drawing.priceChannel': 'canal de prix',
- 'dashboard.indicator.drawing.fibonacciLine': 'Lignes de Fibonacci',
- 'dashboard.indicator.drawing.clearAll': 'Effacer tous les dessins au trait',
- 'dashboard.indicator.market.USStock': 'Actions amรฉricaines',
- 'dashboard.indicator.market.Crypto': 'crypto-monnaie',
- 'dashboard.indicator.market.Forex': 'Forex',
- 'dashboard.indicator.market.Futures': 'Contrats ร terme',
- 'dashboard.indicator.create': 'Crรฉer un indicateur',
- 'dashboard.indicator.editor.title': 'Crรฉer/modifier des indicateurs',
- 'dashboard.indicator.editor.name': "Nom de l'indicateur",
- 'dashboard.indicator.editor.nameRequired': "Veuillez saisir le nom de l'indicateur",
- 'dashboard.indicator.editor.namePlaceholder': "Veuillez saisir le nom de l'indicateur",
- 'dashboard.indicator.editor.description': "Description de l'indicateur",
- 'dashboard.indicator.editor.descriptionPlaceholder': "Veuillez saisir une description de l'indicateur (facultatif)",
- 'dashboard.indicator.editor.code': 'Code Python',
- 'dashboard.indicator.editor.codeRequired': "Veuillez entrer le code de l'indicateur",
- 'dashboard.indicator.editor.codePlaceholder': 'Veuillez saisir le code Python',
- 'dashboard.indicator.editor.run': 'courir',
- 'dashboard.indicator.editor.runHint': "Cliquez sur le bouton Exรฉcuter pour prรฉvisualiser l'effet de l'indicateur sur le graphique K-line",
- 'dashboard.indicator.editor.guide': 'Guide de dรฉveloppement',
- 'dashboard.indicator.editor.guideTitle': "Guide de dรฉveloppement d'indicateurs Python",
- 'dashboard.indicator.editor.save': 'enregistrer',
- 'dashboard.indicator.editor.cancel': 'Annuler',
- 'dashboard.indicator.editor.unnamed': 'Indicateur sans nom',
- 'dashboard.indicator.editor.publishToCommunity': 'Publier sur la communautรฉ',
- 'dashboard.indicator.editor.publishToCommunityHint': 'Une fois publiรฉ, les autres utilisateurs peuvent visualiser et utiliser votre indicateur dans la communautรฉ',
- 'dashboard.indicator.editor.indicatorType': "Type d'indicateur",
- 'dashboard.indicator.editor.indicatorTypeRequired': "Veuillez sรฉlectionner le type d'indicateur",
- 'dashboard.indicator.editor.indicatorTypePlaceholder': "Veuillez sรฉlectionner le type d'indicateur",
- 'dashboard.indicator.editor.previewImage': 'Aperรงu',
- 'dashboard.indicator.editor.uploadImage': 'Tรฉlรฉcharger des photos',
- 'dashboard.indicator.editor.previewImageHint': 'Taille recommandรฉeย : 800ย xย 400, pas plus de 2ย Mo',
- 'dashboard.indicator.editor.pricing': 'Prix de vente (QDT)',
- 'dashboard.indicator.editor.pricingType.free': 'gratuit',
- 'dashboard.indicator.editor.pricingType.permanent': 'permanent',
- 'dashboard.indicator.editor.pricingType.monthly': 'paiement mensuel',
- 'dashboard.indicator.editor.price': 'prix',
- 'dashboard.indicator.editor.priceRequired': 'Veuillez entrer le prix',
- 'dashboard.indicator.editor.pricePlaceholder': 'Veuillez entrer le prix',
- 'dashboard.indicator.editor.pricingHint': "Bien que le prix des indicateurs gratuits soit de 0, la plateforme vous rรฉcompensera (QDT) en fonction de votre utilisation de l'indicateur et de votre taux d'รฉloges.",
- 'dashboard.indicator.editor.aiGenerate': 'Gรฉnรฉration intelligente',
- 'dashboard.indicator.editor.aiPromptPlaceholder': "Dites-moi vos idรฉes et je gรฉnรฉrerai le code de l'indicateur Python pour vous",
- 'dashboard.indicator.editor.aiGenerateBtn': "Code gรฉnรฉrรฉ par l'IA",
- 'dashboard.indicator.editor.aiPromptRequired': 'Veuillez entrer vos pensรฉes',
- 'dashboard.indicator.editor.aiGenerateSuccess': 'Gรฉnรฉration de code rรฉussie',
- 'dashboard.indicator.editor.aiGenerateError': 'รchec de la gรฉnรฉration du code, veuillez rรฉessayer plus tard',
- 'dashboard.indicator.backtest.title': 'Backtest des indicateurs',
- 'dashboard.indicator.backtest.config': 'Paramรจtres de backtest',
- 'dashboard.indicator.backtest.startDate': 'date de dรฉbut',
- 'dashboard.indicator.backtest.endDate': 'date de fin',
- 'dashboard.indicator.backtest.selectStartDate': 'Sรฉlectionnez la date de dรฉbut',
- 'dashboard.indicator.backtest.selectEndDate': 'Sรฉlectionnez la date de fin',
- 'dashboard.indicator.backtest.startDateRequired': 'Veuillez sรฉlectionner une date de dรฉbut',
- 'dashboard.indicator.backtest.endDateRequired': 'Veuillez sรฉlectionner une date de fin',
- 'dashboard.indicator.backtest.initialCapital': 'Capital initial',
- 'dashboard.indicator.backtest.initialCapitalRequired': 'Veuillez saisir les fonds initiaux',
- 'dashboard.indicator.backtest.commission': 'Frais de traitement',
- 'dashboard.indicator.backtest.leverage': 'Ratio de levier',
- 'dashboard.indicator.backtest.tradeDirection': 'Orientation commerciale',
- 'dashboard.indicator.backtest.longOnly': 'Allez-y longtemps',
- 'dashboard.indicator.backtest.shortOnly': 'court',
- 'dashboard.indicator.backtest.both': 'Bidirectionnel',
- 'dashboard.indicator.backtest.run': 'Commencer le backtest',
- 'dashboard.indicator.backtest.rerun': 'Backtester ร nouveau',
- 'dashboard.indicator.backtest.close': 'Fermer',
- 'dashboard.indicator.backtest.running': 'Backtest des indicateurs en cours...',
- 'dashboard.indicator.backtest.results': 'Rรฉsultats du backtest',
- 'dashboard.indicator.backtest.totalReturn': 'rendement total',
- 'dashboard.indicator.backtest.annualReturn': 'revenu annualisรฉ',
- 'dashboard.indicator.backtest.maxDrawdown': 'prรฉlรจvement maximum',
- 'dashboard.indicator.backtest.sharpeRatio': 'Rapport de nettetรฉ',
- 'dashboard.indicator.backtest.winRate': 'taux de rรฉussite',
- 'dashboard.indicator.backtest.profitFactor': 'ratio profits/pertes',
- 'dashboard.indicator.backtest.totalTrades': 'Nombre de transactions',
- 'dashboard.indicator.totalReturn': 'rendement total',
- 'dashboard.indicator.annualReturn': 'taux de rendement annualisรฉ',
- 'dashboard.indicator.maxDrawdown': 'prรฉlรจvement maximum',
- 'dashboard.indicator.sharpeRatio': 'Rapport de nettetรฉ',
- 'dashboard.indicator.winRate': 'taux de rรฉussite',
- 'dashboard.indicator.profitFactor': 'ratio profits/pertes',
- 'dashboard.indicator.totalTrades': 'nombre total de transactions',
- 'dashboard.indicator.backtest.totalCommission': 'frais de traitement totaux',
- 'dashboard.indicator.backtest.equityCurve': 'courbe des taux',
- 'dashboard.indicator.backtest.strategy': "Revenu de l'indicateur",
- 'dashboard.indicator.backtest.benchmark': 'Rendement de rรฉfรฉrence',
- 'dashboard.indicator.backtest.tradeHistory': 'historique des transactions',
- 'dashboard.indicator.backtest.tradeTime': 'temps',
- 'dashboard.indicator.backtest.tradeType': 'Tapez',
- 'dashboard.indicator.backtest.buy': 'acheter',
- 'dashboard.indicator.backtest.sell': 'vendre',
- 'dashboard.indicator.backtest.liquidation': 'Liquidation',
- 'dashboard.indicator.backtest.openLong': 'Ouvert longtemps',
- 'dashboard.indicator.backtest.closeLong': 'Pinduo',
- 'dashboard.indicator.backtest.closeLongStop': 'Prรจs du long (stop loss)',
- 'dashboard.indicator.backtest.closeLongProfit': 'Fermez davantage (prenez des bรฉnรฉfices)',
- 'dashboard.indicator.backtest.addLong': 'Ajouter une position longue',
- 'dashboard.indicator.backtest.openShort': 'Ouvert court',
- 'dashboard.indicator.backtest.closeShort': 'vide',
- 'dashboard.indicator.backtest.closeShortStop': 'Fermer (stopper la perte)',
- 'dashboard.indicator.backtest.closeShortProfit': 'Fermer (prendre des bรฉnรฉfices)',
- 'dashboard.indicator.backtest.addShort': 'Ajouter une position courte',
- 'dashboard.indicator.backtest.price': 'prix',
- 'dashboard.indicator.backtest.amount': 'Quantitรฉ',
- 'dashboard.indicator.backtest.balance': 'Solde du compte',
- 'dashboard.indicator.backtest.profit': 'Profits et pertes',
- 'dashboard.indicator.backtest.success': 'Backtest terminรฉ',
- 'dashboard.indicator.backtest.failed': 'รchec du backtest, veuillez rรฉessayer plus tard',
- 'dashboard.indicator.backtest.noIndicatorCode': "Il n'y a pas de code backtestable pour cet indicateur",
- 'dashboard.indicator.backtest.noSymbol': "Veuillez d'abord sรฉlectionner la cible de la transaction",
- 'dashboard.indicator.backtest.dateRangeExceeded': 'La plage de temps du backtest dรฉpasse la limiteย :ย {timeframe} la pรฉriode peut รชtre backtestรฉe au maximumย {maxRange}',
- 'dashboard.indicator.backtest.dateRangeExceededDays': 'Backtest range exceeds limit: {timeframe} max {maxRange} ({maxDays} days)',
- 'dashboard.indicator.backtest.metaLine': 'Symbol: {symbol} | Market: {market} | Timeframe: {timeframe}',
- 'dashboard.indicator.backtest.savedRunId': 'Backtest saved. Run ID: {id}',
- 'dashboard.indicator.backtest.prev': 'Previous',
- 'dashboard.indicator.backtest.next': 'Next',
- 'dashboard.indicator.backtest.steps.strategy.title': 'Strategy',
- 'dashboard.indicator.backtest.steps.strategy.desc': 'Position sizing & risk controls',
- 'dashboard.indicator.backtest.steps.trading.title': 'Trading settings',
- 'dashboard.indicator.backtest.steps.trading.desc': 'Time range, capital, fees, leverage',
- 'dashboard.indicator.backtest.steps.results.title': 'Results',
- 'dashboard.indicator.backtest.steps.results.desc': 'Backtest output',
- 'dashboard.indicator.backtest.panel.risk': 'Risk management (SL/TP/Trailing)',
- 'dashboard.indicator.backtest.panel.scale': 'Scale in / DCA (trend & mean-reversion)',
- 'dashboard.indicator.backtest.panel.reduce': 'Reduce position (trend & adverse)',
- 'dashboard.indicator.backtest.panel.position': 'Position sizing',
- 'dashboard.indicator.backtest.field.stopLossPct': 'Stop Loss (%)',
- 'dashboard.indicator.backtest.field.takeProfitPct': 'Take Profit (%)',
- 'dashboard.indicator.backtest.field.trailingEnabled': 'Trailing stop / take profit',
- 'dashboard.indicator.backtest.field.trailingStopPct': 'Trailing drawdown (%)',
- 'dashboard.indicator.backtest.field.trailingActivationPct': 'Trailing activation (%)',
- 'dashboard.indicator.backtest.field.slippage': 'Slippage (%)',
- 'dashboard.indicator.backtest.field.trendAddEnabled': 'Trend-following scale-in',
- 'dashboard.indicator.backtest.field.dcaAddEnabled': 'Mean-reversion DCA',
- 'dashboard.indicator.backtest.field.trendAddStepPct': 'Scale-in trigger (%)',
- 'dashboard.indicator.backtest.field.dcaAddStepPct': 'DCA trigger (%)',
- 'dashboard.indicator.backtest.field.trendAddSizePct': 'Scale-in size (% of capital)',
- 'dashboard.indicator.backtest.field.dcaAddSizePct': 'DCA size (% of capital)',
- 'dashboard.indicator.backtest.field.trendAddMaxTimes': 'Max scale-in times',
- 'dashboard.indicator.backtest.field.dcaAddMaxTimes': 'Max DCA times',
- 'dashboard.indicator.backtest.field.trendReduceEnabled': 'Trend reduce',
- 'dashboard.indicator.backtest.field.adverseReduceEnabled': 'Adverse reduce',
- 'dashboard.indicator.backtest.field.trendReduceStepPct': 'Trend trigger (%)',
- 'dashboard.indicator.backtest.field.adverseReduceStepPct': 'Adverse trigger (%)',
- 'dashboard.indicator.backtest.field.trendReduceSizePct': 'Reduce size (% of position)',
- 'dashboard.indicator.backtest.field.adverseReduceSizePct': 'Adverse reduce size (% of position)',
- 'dashboard.indicator.backtest.field.trendReduceMaxTimes': 'Max trend reduce times',
- 'dashboard.indicator.backtest.field.adverseReduceMaxTimes': 'Max adverse reduce times',
- 'dashboard.indicator.backtest.field.entryPct': 'Entry size (% of capital)',
- 'dashboard.indicator.backtest.field.minOrderPct': 'Min order size (% of capital) (optional)',
- 'dashboard.indicator.backtest.closeLongTrailing': 'Close Long (Trailing)',
- 'dashboard.indicator.backtest.reduceLong': 'Reduce Long',
- 'dashboard.indicator.backtest.closeShortTrailing': 'Close Short (Trailing)',
- 'dashboard.indicator.backtest.reduceShort': 'Reduce Short',
- 'dashboard.docs.title': 'Centre de documentation',
- 'dashboard.docs.search.placeholder': 'Rechercher des documents...',
- 'dashboard.docs.category.all': 'Tout',
- 'dashboard.docs.category.guide': 'Guide de dรฉveloppement',
- 'dashboard.docs.category.api': 'Documentation API',
- 'dashboard.docs.category.tutorial': 'Tutoriel',
- 'dashboard.docs.category.faq': 'FAQ',
- 'dashboard.docs.featured.title': 'Documentation recommandรฉe',
- 'dashboard.docs.featured.tag': 'Recommandรฉ',
- 'dashboard.docs.list.views': 'Parcourir',
- 'dashboard.docs.list.author': 'Auteur',
- 'dashboard.docs.list.empty': "Aucun document pour l'instant",
- 'dashboard.docs.list.backToAll': 'Retour ร tous les documents',
- 'dashboard.docs.list.total': '{count}ย documents au total',
- 'dashboard.docs.detail.back': 'Retour ร la liste des documents',
- 'dashboard.docs.detail.updatedAt': 'mis ร jour sur',
- 'dashboard.docs.detail.related': 'Documents associรฉs',
- 'dashboard.docs.detail.notFound': "Le document n'existe pas",
- 'dashboard.docs.detail.error': "Le document n'existe pas ou a รฉtรฉ supprimรฉ",
- 'dashboard.docs.search.result': 'Rรฉsultats de la recherche',
- 'dashboard.docs.search.keyword': 'mots-clรฉs',
- 'community.filter.indicatorType': "Type d'indicateur",
- 'community.filter.all': 'Tout',
- 'community.filter.other': 'Autres options',
- 'community.filter.pricing': 'Type de prix',
- 'community.filter.allPricing': 'Tous les tarifs',
- 'community.filter.sortBy': 'Trier par',
- 'community.filter.search': 'Rechercher',
- 'community.filter.searchPlaceholder': 'Rechercher le nom de la mรฉtrique',
- 'community.indicatorType.trend': 'Type de tendance',
- 'community.indicatorType.momentum': "type d'รฉlan",
- 'community.indicatorType.volatility': 'Volatilitรฉ',
- 'community.indicatorType.volume': 'Volume',
- 'community.indicatorType.custom': 'Personnaliser',
- 'community.pricing.free': 'gratuit',
- 'community.pricing.paid': 'Payer',
- 'community.sort.downloads': 'Tรฉlรฉchargements',
- 'community.sort.rating': 'Note',
- 'community.sort.newest': 'Derniรจres versions',
- 'community.pagination.total': '{total} indicateurs au total',
- 'community.noDescription': 'Pas encore de description',
- 'community.detail.type': 'Tapez',
- 'community.detail.pricing': 'Tarifs',
- 'community.detail.rating': 'Note',
- 'community.detail.downloads': 'Tรฉlรฉchargements',
- 'community.detail.author': 'Auteur',
- 'community.detail.description': 'Prรฉsentation',
- 'community.detail.detailContent': 'Description dรฉtaillรฉe',
- 'community.detail.backtestStats': 'Statistiques de backtest',
- 'community.action.purchase': "indicateur d'achat",
- 'community.action.addToMyIndicators': 'Ajouter ร mes indicateurs',
- 'community.action.favorite': 'Collecte',
- 'community.action.unfavorite': 'Annuler les favoris',
- 'community.action.buyNow': 'Acheter maintenant',
- 'community.action.renew': 'Renouvellement',
- 'community.purchase.price': 'prix',
- 'community.purchase.permanent': 'permanent',
- 'community.purchase.monthly': 'mois',
- 'community.purchase.confirmBuy': 'Confirmer pour acheter cet indicateur ({price} QDT)ย ?',
- 'community.purchase.confirmRenew': 'Confirmer le renouvellement de cet indicateur ({price} QDT/mois)ย ?',
- 'community.purchase.confirmFree': 'Confirmer pour ajouter cet indicateur gratuit ?',
- 'community.purchase.confirmTitle': "Confirmer l'action",
- 'community.purchase.owned': 'Vous avez achetรฉ cet indicateur (valable en permanence)',
- 'community.purchase.ownIndicator': "Il s'agit de la mรฉtrique que vous avez publiรฉe",
- 'community.purchase.expired': 'Votre abonnement a expirรฉ',
- 'community.purchase.expiresOn': "Heure d'expirationย :ย {date}",
- 'community.tabs.detail': "Dรฉtails de l'indicateur",
- 'community.tabs.backtest': 'Donnรฉes de backtest',
- 'community.tabs.ratings': "Avis d'utilisateurs",
- 'community.rating.myRating': 'Ma note',
- 'community.rating.stars': '{count}ย รฉtoiles',
- 'community.rating.commentPlaceholder': 'Partagez votre expรฉrience...',
- 'community.rating.submit': 'Soumettre une note',
- 'community.rating.modify': 'Modifier',
- 'community.rating.saveModify': 'Enregistrer les modifications',
- 'community.rating.cancel': 'Annuler',
- 'community.rating.selectRating': 'Veuillez sรฉlectionner une note',
- 'community.rating.success': 'รvaluation rรฉussie',
- 'community.rating.modifySuccess': 'Avis modifiรฉ avec succรจs',
- 'community.rating.failed': 'รchec de la notation',
- 'community.rating.noRatings': 'Pas encore de commentaires',
- 'community.backtest.note': 'Les donnรฉes ci-dessus sont des rรฉsultats de backtest historiques et sont fournies ร titre de rรฉfรฉrence uniquement et ne reprรฉsentent pas les bรฉnรฉfices futurs.',
- 'community.backtest.noData': "Aucune donnรฉe de backtest pour l'instant",
- 'community.backtest.uploadHint': "L'auteur n'a pas encore tรฉlรฉchargรฉ les donnรฉes de backtest",
- 'community.message.loadFailed': 'รchec du chargement de la liste des indicateurs',
- 'community.message.purchaseProcessing': "Traitement de la demande d'achat...",
- 'community.message.downloadSuccess': 'La mรฉtrique a รฉtรฉ ajoutรฉe ร ma liste de mรฉtriques',
- 'community.message.favoriteSuccess': 'Collecte rรฉussie',
- 'community.message.unfavoriteSuccess': 'Annuler la collecte avec succรจs',
- 'community.message.operationSuccess': 'Opรฉration rรฉussie',
- 'community.message.operationFailed': "L'opรฉration a รฉchouรฉ",
- 'community.banner.readOnly': 'Lecture seule',
- 'community.banner.loginHint': 'Pour vous connecter ou vous inscrire, veuillez cliquer sur le bouton pour accรฉder ร une page indรฉpendante afin d\'รฉviter les problรจmes CSRF',
- 'community.banner.jumpButton': 'Aller ร Connexion/Inscription',
- 'dashboard.totalEquity': 'capitaux propres totaux',
- 'dashboard.totalPnL': 'Total des profits et pertes',
- 'dashboard.aiStrategies': "Stratรฉgie d'IA",
- 'dashboard.indicatorStrategies': 'Stratรฉgie des indicateurs',
- 'dashboard.running': 'Courir',
- 'dashboard.pnlHistory': 'profits et pertes historiques',
- 'dashboard.strategyPerformance': 'Ratio de profits et pertes de la stratรฉgie',
- 'dashboard.recentTrades': 'transactions rรฉcentes',
- 'dashboard.currentPositions': 'Poste actuel',
- 'dashboard.table.time': 'temps',
- 'dashboard.table.strategy': 'Nom de la stratรฉgie',
- 'dashboard.table.symbol': 'Cible',
- 'dashboard.table.type': 'Tapez',
- 'dashboard.table.side': 'direction',
- 'dashboard.table.size': 'Intรฉrรชt ouvert',
- 'dashboard.table.entryPrice': "cours d'ouverture moyen",
- 'dashboard.table.price': 'prix',
- 'dashboard.table.amount': 'Quantitรฉ',
- 'dashboard.table.profit': 'Profits et pertes',
- 'dashboard.pendingOrders': 'Historique d\'exรฉcution des ordres',
- 'dashboard.totalOrders': 'Total {total} ordres',
- 'dashboard.viewError': 'Voir l\'erreur',
- 'dashboard.filled': 'Rempli',
- 'dashboard.orderTable.time': 'Heure de crรฉation',
- 'dashboard.orderTable.strategy': 'Stratรฉgie',
- 'dashboard.orderTable.symbol': 'Paire de trading',
- 'dashboard.orderTable.signalType': 'Type de signal',
- 'dashboard.orderTable.amount': 'Quantitรฉ',
- 'dashboard.orderTable.price': 'Prix de remplissage',
- 'dashboard.orderTable.status': 'Statut',
- 'dashboard.orderTable.executedAt': 'Heure d\'exรฉcution',
- 'dashboard.signalType.openLong': 'Ouvrir Long',
- 'dashboard.signalType.openShort': 'Ouvrir Short',
- 'dashboard.signalType.closeLong': 'Fermer Long',
- 'dashboard.signalType.closeShort': 'Fermer Short',
- 'dashboard.signalType.addLong': 'Ajouter Long',
- 'dashboard.signalType.addShort': 'Ajouter Short',
- 'dashboard.status.pending': 'En attente',
- 'dashboard.status.processing': 'En cours',
- 'dashboard.status.completed': 'Terminรฉ',
- 'dashboard.status.failed': 'รchouรฉ',
- 'dashboard.status.cancelled': 'Annulรฉ',
- 'dashboard.table.pnl': 'profit ou perte non rรฉalisรฉ',
- 'form.basic-form.basic.title': 'forme de base',
- 'form.basic-form.basic.description': "Les pages de formulaire sont utilisรฉes pour collecter ou vรฉrifier les informations des utilisateurs. Les formulaires de base sont couramment utilisรฉs dans des scรฉnarios de formulaire comportant peu d'รฉlรฉments de donnรฉes.",
- 'form.basic-form.title.label': 'Titre',
- 'form.basic-form.title.placeholder': "Donnez un nom ร l'objectif",
- 'form.basic-form.title.required': 'Veuillez entrer un titre',
- 'form.basic-form.date.label': 'Date de dรฉbut et de fin',
- 'form.basic-form.placeholder.start': 'date de dรฉbut',
- 'form.basic-form.placeholder.end': 'date de fin',
- 'form.basic-form.date.required': 'Veuillez sรฉlectionner les dates de dรฉbut et de fin',
- 'form.basic-form.goal.label': "Description de l'objectif",
- 'form.basic-form.goal.placeholder': 'Veuillez saisir vos objectifs de travail par รฉtapes',
- 'form.basic-form.goal.required': "Veuillez saisir une description de l'objectif",
- 'form.basic-form.standard.label': 'mesurer',
- 'form.basic-form.standard.placeholder': 'Veuillez saisir des statistiques',
- 'form.basic-form.standard.required': 'Veuillez saisir des statistiques',
- 'form.basic-form.client.label': 'Client',
- 'form.basic-form.client.required': 'Veuillez dรฉcrire les clients que vous servez',
- 'form.basic-form.label.tooltip': 'destinataires de services cibles',
- 'form.basic-form.client.placeholder': 'Veuillez dรฉcrire les clients que vous servez, les clients internes directement @nom/numรฉro de poste',
- 'form.basic-form.invites.label': 'Inviter des rรฉviseurs',
- 'form.basic-form.invites.placeholder': "Veuillez directement @nom/numรฉro d'employรฉ, vous pouvez inviter jusqu'ร 5 personnes",
- 'form.basic-form.weight.label': 'poids',
- 'form.basic-form.weight.placeholder': 'Veuillez entrer',
- 'form.basic-form.public.label': 'public cible',
- 'form.basic-form.label.help': 'Les clients et les รฉvaluateurs sont partagรฉs par dรฉfaut',
- 'form.basic-form.radio.public': 'publique',
- 'form.basic-form.radio.partially-public': 'Partiellement public',
- 'form.basic-form.radio.private': 'privรฉ',
- 'form.basic-form.publicUsers.placeholder': 'ouvert ร ',
- 'form.basic-form.option.A': 'Collรจgue 1',
- 'form.basic-form.option.B': 'Collรจgue 2',
- 'form.basic-form.option.C': 'Collรจgue trois',
- 'form.basic-form.email.required': 'Veuillez entrer votre adresse e-mailย !',
- 'form.basic-form.email.wrong-format': "Le format de l'adresse e-mail est incorrectย !",
- 'form.basic-form.userName.required': "Veuillez entrer votre nom d'utilisateurย !",
- 'form.basic-form.password.required': 'Veuillez entrer votre mot de passeย !',
- 'form.basic-form.password.twice': 'Les mots de passe saisis deux fois ne correspondent pasย !',
- 'form.basic-form.strength.msg': 'Veuillez saisir au moins 6 caractรจres. Veuillez ne pas utiliser de mots de passe faciles ร deviner.',
- 'form.basic-form.strength.strong': 'Forceย : Forte',
- 'form.basic-form.strength.medium': 'Forceย : moyenne',
- 'form.basic-form.strength.short': 'Force : trop courte',
- 'form.basic-form.confirm-password.required': 'Veuillez confirmer votre mot de passeย !',
- 'form.basic-form.phone-number.required': 'Veuillez entrer votre numรฉro de tรฉlรฉphone portableย !',
- 'form.basic-form.phone-number.wrong-format': 'Le format du numรฉro de tรฉlรฉphone portable est erronรฉย !',
- 'form.basic-form.verification-code.required': 'Veuillez entrer le code de vรฉrificationย !',
- 'form.basic-form.form.get-captcha': 'Obtenir le code de vรฉrification',
- 'form.basic-form.captcha.second': 'secondes',
- 'form.basic-form.form.optional': '(facultatif)',
- 'form.basic-form.form.submit': 'Soumettre',
- 'form.basic-form.form.save': 'enregistrer',
- 'form.basic-form.email.placeholder': 'Courriel',
- 'form.basic-form.password.placeholder': "Mot de passe d'au moins 6 caractรจres, sensible ร la casse",
- 'form.basic-form.confirm-password.placeholder': 'Confirmer le mot de passe',
- 'form.basic-form.phone-number.placeholder': 'Numรฉro de tรฉlรฉphone portable',
- 'form.basic-form.verification-code.placeholder': 'Code de vรฉrification',
- 'result.success.title': 'Soumission rรฉussie',
- 'result.success.description': "La page de rรฉsultats de soumission est utilisรฉe pour renvoyer les rรฉsultats de traitement d'une sรฉrie de tรขches opรฉrationnelles. S'il ne s'agit que d'une opรฉration simple, utilisez le retour d'invite global du message. Cette zone de texte peut afficher des instructions supplรฉmentaires simples. S'il est nรฉcessaire d'afficher des ยซ documents ยป, la zone grise ci-dessous peut afficher des contenus plus complexes.",
- 'result.success.operate-title': 'Nom du projet',
- 'result.success.operate-id': 'ID du projet',
- 'result.success.principal': 'responsable',
- 'result.success.operate-time': 'Temps effectif',
- 'result.success.step1-title': 'Crรฉer un projet',
- 'result.success.step1-operator': 'Qu Lili',
- 'result.success.step2-title': 'Examen prรฉliminaire du ministรจre',
- 'result.success.step2-operator': 'Zhou Maomao',
- 'result.success.step2-extra': 'Urgent',
- 'result.success.step3-title': 'examen financier',
- 'result.success.step4-title': 'Terminรฉ',
- 'result.success.btn-return': 'Retour ร la liste',
- 'result.success.btn-project': 'Afficher les articles',
- 'result.success.btn-print': 'Imprimer',
- 'result.fail.error.title': 'รchec de la soumission',
- 'result.fail.error.description': 'Veuillez vรฉrifier et modifier les informations suivantes avant de soumettre ร nouveau.',
- 'result.fail.error.hint-title': 'Le contenu que vous avez soumis contient les erreurs suivantesย :',
- 'result.fail.error.hint-text1': 'Votre compte a รฉtรฉ gelรฉ',
- 'result.fail.error.hint-btn1': 'Dรฉcongeler immรฉdiatement',
- 'result.fail.error.hint-text2': "Votre compte n'est pas encore รฉligible pour postuler",
- 'result.fail.error.hint-btn2': 'Mettre ร niveau maintenant',
- 'result.fail.error.btn-text': 'Retour ร la modification',
- 'account.settings.menuMap.custom': 'personnalisation',
- 'account.settings.menuMap.binding': 'Liaison de compte',
- 'account.settings.basic.avatar': 'avatar',
- 'account.settings.basic.change-avatar': "Changer d'avatar",
- 'account.settings.basic.email': 'Courriel',
- 'account.settings.basic.email-message': 'Veuillez entrer votre email!',
- 'account.settings.basic.nickname': 'Surnom',
- 'account.settings.basic.nickname-message': 'Veuillez entrer votre pseudoย !',
- 'account.settings.basic.profile': 'Profil',
- 'account.settings.basic.profile-message': 'Veuillez entrer votre profil personnelย !',
- 'account.settings.basic.profile-placeholder': 'Profil',
- 'account.settings.basic.country': 'Pays/Rรฉgion',
- 'account.settings.basic.country-message': 'Veuillez entrer votre pays ou rรฉgionย !',
- 'account.settings.basic.geographic': 'Province et ville',
- 'account.settings.basic.geographic-message': 'Veuillez entrer votre province et votre villeย !',
- 'account.settings.basic.address': 'adresse postale',
- 'account.settings.basic.address-message': 'Veuillez entrer votre adresse postaleย !',
- 'account.settings.basic.phone': 'Numรฉro de contact',
- 'account.settings.basic.phone-message': 'Veuillez entrer votre numรฉro de contactย !',
- 'account.settings.basic.update': 'Mettre ร jour les informations de base',
- 'account.settings.basic.update.success': 'Mettre ร jour les informations de base avec succรจs',
- 'account.settings.security.strong': 'Fort',
- 'account.settings.security.medium': 'dans',
- 'account.settings.security.weak': 'faible',
- 'account.settings.security.password': 'Mot de passe du compte',
- 'account.settings.security.password-description': 'Force actuelle du mot de passeย :',
- 'account.settings.security.phone': 'Tรฉlรฉphone mobile de sรฉcuritรฉ',
- 'account.settings.security.phone-description': 'Tรฉlรฉphone mobile dรฉjร liรฉย :',
- 'account.settings.security.question': 'Problรจmes de sรฉcuritรฉ',
- 'account.settings.security.question-description': "Aucune question de sรฉcuritรฉ n'est dรฉfinie, ce qui peut protรฉger efficacement la sรฉcuritรฉ du compte.",
- 'account.settings.security.email': 'Lier un e-mail',
- 'account.settings.security.email-description': 'Adresse e-mail dรฉjร liรฉeย :',
- 'account.settings.security.mfa': 'Appareil MFA',
- 'account.settings.security.mfa-description': 'Le pรฉriphรฉrique MFA nโest pas liรฉ. Aprรจs la liaison, vous pouvez confirmer ร nouveau.',
- 'account.settings.security.modify': 'Modifier',
- 'account.settings.security.set': 'paramรจtres',
- 'account.settings.security.bind': 'reliure',
- 'account.settings.binding.taobao': 'Lier Taobao',
- 'account.settings.binding.taobao-description': "Le compte Taobao n'est actuellement pas liรฉ",
- 'account.settings.binding.alipay': 'Lier Alipay',
- 'account.settings.binding.alipay-description': "Le compte Alipay n'est actuellement pas liรฉ",
- 'account.settings.binding.dingding': 'Liaison DingTalk',
- 'account.settings.binding.dingding-description': "Aucun compte DingTalk n'est actuellement liรฉ",
- 'account.settings.binding.bind': 'reliure',
- 'account.settings.notification.password': 'Mot de passe du compte',
- 'account.settings.notification.password-description': 'Les messages des autres utilisateurs seront notifiรฉs sous forme de messages du site.',
- 'account.settings.notification.messages': 'Messages systรจme',
- 'account.settings.notification.messages-description': 'Les messages systรจme seront notifiรฉs sous forme de messages de site.',
- 'account.settings.notification.todo': 'Tรขches ร faire',
- 'account.settings.notification.todo-description': 'Les tรขches ร effectuer seront notifiรฉes sous forme de messages sur site',
- 'account.settings.settings.open': 'ouvert',
- 'account.settings.settings.close': 'fermer',
- 'trading-assistant.title': 'Assistante commerciale',
- 'trading-assistant.strategyList': 'Liste de stratรฉgies',
- 'trading-assistant.createStrategy': 'Crรฉer une politique',
- 'trading-assistant.noStrategy': 'Pas encore de stratรฉgie',
- 'trading-assistant.selectStrategy': 'Veuillez sรฉlectionner une stratรฉgie ร gauche pour afficher les dรฉtails',
- 'trading-assistant.startStrategy': 'stratรฉgie de lancement',
- 'trading-assistant.stopStrategy': "stratรฉgie d'arrรชt",
- 'trading-assistant.editStrategy': 'Stratรฉgie รฉditoriale',
- 'trading-assistant.deleteStrategy': 'Supprimer la stratรฉgie',
- 'trading-assistant.status.running': 'Courir',
- 'trading-assistant.status.stopped': 'Arrรชtรฉ',
- 'trading-assistant.status.error': 'Erreur',
- 'trading-assistant.strategyType.IndicatorStrategy': "Stratรฉgie d'indicateurs techniques",
- 'trading-assistant.strategyType.PromptBasedStrategy': 'stratรฉgie de mots indicateurs',
- 'trading-assistant.strategyType.GridStrategy': 'stratรฉgie de grille',
- 'trading-assistant.tabs.tradingRecords': 'historique des transactions',
- 'trading-assistant.tabs.positions': 'Enregistrement de poste',
- 'trading-assistant.tabs.equityCurve': 'courbe des actions',
- 'trading-assistant.form.step1': 'Sรฉlectionner des indicateurs',
- 'trading-assistant.form.step2': "Configuration d'รฉchange",
- 'trading-assistant.form.step3': 'Paramรจtres de stratรฉgie',
- 'trading-assistant.form.indicator': 'Sรฉlectionner des indicateurs',
- 'trading-assistant.form.indicatorHint': 'Vous ne pouvez sรฉlectionner que les indicateurs techniques que vous avez achetรฉs ou crรฉรฉs',
- 'trading-assistant.form.qdtCostHints': "L'utilisation de la stratรฉgie consommera du QDT, veuillez vous assurer que le compte dispose d'un solde QDT suffisant",
- 'trading-assistant.form.indicatorDescription': "Description de l'indicateur",
- 'trading-assistant.form.noDescription': 'Pas encore de description',
- 'trading-assistant.form.exchange': 'Sรฉlectionnez un รฉchange',
- 'trading-assistant.form.apiKey': 'Clรฉ API',
- 'trading-assistant.form.secretKey': 'Clรฉ secrรจte',
- 'trading-assistant.form.passphrase': 'Phrase secrรจte',
- 'trading-assistant.form.testConnection': 'tester la connexion',
- 'trading-assistant.form.strategyName': 'Nom de la stratรฉgie',
- 'trading-assistant.form.symbol': 'paire de trading',
- 'trading-assistant.form.symbolHint': 'Actuellement, seules les paires de trading de cryptomonnaies sont prises en charge',
- 'trading-assistant.form.initialCapital': "Montant de l'investissement",
- 'trading-assistant.form.marketType': 'type de marchรฉ',
- 'trading-assistant.form.marketTypeFutures': 'contrat',
- 'trading-assistant.form.marketTypeSpot': 'Spot',
- 'trading-assistant.form.marketTypeHint': "Le contrat prend en charge le trading bidirectionnel et l'effet de levier, tandis que le spot ne prend en charge que les positions longues et l'effet de levier est fixรฉ ร 1x.",
- 'trading-assistant.form.leverage': 'Tirer parti de plusieurs',
- 'trading-assistant.form.leverageHint': 'Contrat : 1-125 fois, spot : fixe 1 fois',
- 'trading-assistant.form.spotLeverageFixed': "L'effet de levier du trading au comptant est fixรฉ ร 1x",
- 'trading-assistant.form.spotOnlyLongHint': 'Le trading au comptant ne prend en charge que les positions longues',
- 'trading-assistant.form.tradeDirection': 'Orientation commerciale',
- 'trading-assistant.form.tradeDirectionLong': 'Seulement longtemps',
- 'trading-assistant.form.tradeDirectionShort': 'Seulement court',
- 'trading-assistant.form.tradeDirectionBoth': 'transaction bidirectionnelle',
- 'trading-assistant.form.timeframe': 'pรฉriode',
- 'trading-assistant.form.klinePeriod': 'Pรฉriode K-Line',
- 'trading-assistant.form.timeframe1m': '1 minute',
- 'trading-assistant.form.timeframe5m': '5 minutes',
- 'trading-assistant.form.timeframe15m': '15 minutes',
- 'trading-assistant.form.timeframe30m': '30 minutes',
- 'trading-assistant.form.timeframe1H': '1 heure',
- 'trading-assistant.form.timeframe4H': '4 heures',
- 'trading-assistant.form.timeframe1D': '1 jour',
- 'trading-assistant.form.selectStrategyType': 'Sรฉlectionner le type de stratรฉgie',
- 'trading-assistant.form.indicatorStrategy': 'Stratรฉgie d\'indicateur',
- 'trading-assistant.form.indicatorStrategyDesc': 'Stratรฉgie de trading automatisรฉe basรฉe sur des indicateurs techniques',
- 'trading-assistant.form.aiStrategy': 'Stratรฉgie IA',
- 'trading-assistant.form.aiStrategyDesc': 'Stratรฉgie de trading automatisรฉe basรฉe sur la prise de dรฉcision intelligente IA',
- 'trading-assistant.form.enableAiFilter': 'Activer le filtre de dรฉcision intelligente IA',
- 'trading-assistant.form.enableAiFilterHint': 'Lorsqu\'il est activรฉ, les signaux d\'indicateur seront filtrรฉs par l\'IA pour amรฉliorer la qualitรฉ des transactions',
- 'trading-assistant.form.aiFilterPrompt': 'Invite personnalisรฉe',
- 'trading-assistant.form.aiFilterPromptHint': 'Fournir des instructions personnalisรฉes pour le filtrage IA, laisser vide pour utiliser la valeur par dรฉfaut du systรจme',
- 'trading-assistant.validation.strategyTypeRequired': 'Veuillez sรฉlectionner un type de stratรฉgie',
- 'trading-assistant.form.advancedSettings': 'Paramรจtres avancรฉs',
- 'trading-assistant.form.orderMode': 'Mode de commande',
- 'trading-assistant.form.orderModeMaker': 'Crรฉateur',
- 'trading-assistant.form.orderModeTaker': 'Prix du marchรฉ (Preneur)',
- 'trading-assistant.form.orderModeHint': "Le mode d'ordre en attente utilise des ordres limitรฉs et les frais de traitement sont infรฉrieursย ; le mode prix du marchรฉ est exรฉcutรฉ immรฉdiatement et les frais de traitement sont plus รฉlevรฉs.",
- 'trading-assistant.form.makerWaitSec': "Temps d'attente pour les commandes en attente (secondes)",
- 'trading-assistant.form.makerWaitSecHint': "Le temps d'attente pour la transaction aprรจs avoir passรฉ une commande. Annulez et rรฉessayez aprรจs l'expiration du dรฉlai.",
- 'trading-assistant.form.makerRetries': 'Nombre de tentatives pour les commandes en attente',
- 'trading-assistant.form.makerRetriesHint': "Le nombre maximum de tentatives lorsqu'un ordre en attente n'est pas exรฉcutรฉ",
- 'trading-assistant.form.fallbackToMarket': "L'ordre en attente รฉchoue et le prix du marchรฉ est dรฉgradรฉ.",
- 'trading-assistant.form.fallbackToMarketHint': "Lorsque l'ordre en attente d'ouverture/de clรดture n'a pas รฉtรฉ exรฉcutรฉ, s'il doit รชtre rรฉtrogradรฉ en ordre au marchรฉ pour garantir que la transaction soit terminรฉe.",
- 'trading-assistant.form.marginMode': 'Mode marge',
- 'trading-assistant.form.marginModeCross': 'Entrepรดt complet',
- 'trading-assistant.form.marginModeIsolated': 'Position isolรฉe',
- 'trading-assistant.form.stopLossPct': "Taux d'arrรชt des pertes (%)",
- 'trading-assistant.form.stopLossPctHint': "Dรฉfinissez le pourcentage de stop loss, 0 signifie que le stop loss n'est pas activรฉ",
- 'trading-assistant.form.takeProfitPct': 'Ratio de profit (%)',
- 'trading-assistant.form.takeProfitPctHint': 'Dรฉfinissez le pourcentage de profit, 0 signifie dรฉsactiver le profit',
- 'trading-assistant.form.signalMode': 'Mode signal',
- 'trading-assistant.form.signalModeConfirmed': 'Mode de confirmation',
- 'trading-assistant.form.signalModeAggressive': 'Mode agressif',
- 'trading-assistant.form.signalModeHint': 'Mode de confirmationย : vรฉrifie uniquement les lignes K terminรฉesย ; Mode agressifย : vรฉrifie รฉgalement la formation de lignes K',
- 'trading-assistant.form.cancel': 'Annuler',
- 'trading-assistant.form.prev': 'รtape prรฉcรฉdente',
- 'trading-assistant.form.next': 'รtape suivante',
- 'trading-assistant.form.confirmCreate': 'Confirmer la crรฉation',
- 'trading-assistant.form.confirmEdit': 'Confirmer les modifications',
- 'trading-assistant.messages.createSuccess': 'Stratรฉgie crรฉรฉe avec succรจs',
- 'trading-assistant.messages.createFailed': 'รchec de la crรฉation de la stratรฉgie',
- 'trading-assistant.messages.updateSuccess': 'Mise ร jour de la stratรฉgie rรฉussie',
- 'trading-assistant.messages.updateFailed': 'รchec de la mise ร jour de la stratรฉgie',
- 'trading-assistant.messages.deleteSuccess': 'Suppression de la stratรฉgie rรฉussie',
- 'trading-assistant.messages.deleteFailed': 'รchec de la suppression de la stratรฉgie',
- 'trading-assistant.messages.startSuccess': 'La stratรฉgie a dรฉmarrรฉ avec succรจs',
- 'trading-assistant.messages.startFailed': 'รchec du dรฉmarrage de la stratรฉgie',
- 'trading-assistant.messages.stopSuccess': "La stratรฉgie s'est arrรชtรฉe avec succรจs",
- 'trading-assistant.messages.stopFailed': "La stratรฉgie d'arrรชt a รฉchouรฉ",
- 'trading-assistant.messages.loadFailed': "รchec de l'obtention de la liste des rรจgles",
- 'trading-assistant.messages.runningWarning': 'La stratรฉgie est en marche. Veuillez arrรชter la stratรฉgie avant de la modifier.',
- 'trading-assistant.messages.deleteConfirmWithName': 'รtes-vous sรปr de vouloir supprimer la stratรฉgie ยซย {name}ย ยปย ? Cette opรฉration est irrรฉversible.',
- 'trading-assistant.messages.deleteConfirm': 'รtes-vous sรปr de vouloir supprimer cette stratรฉgieย ? Cette opรฉration est irrรฉversible.',
- 'trading-assistant.messages.loadTradesFailed': "รchec de l'obtention des enregistrements de transaction",
- 'trading-assistant.messages.loadPositionsFailed': "Impossible d'obtenir l'enregistrement de position",
- 'trading-assistant.messages.loadEquityFailed': "Impossible d'obtenir la courbe des capitaux propres",
- 'trading-assistant.messages.loadIndicatorsFailed': 'รchec du chargement de la liste des indicateurs, veuillez rรฉessayer plus tard',
- 'trading-assistant.messages.spotLimitations': 'Le trading au comptant a รฉtรฉ automatiquement rรฉglรฉ sur position longue uniquement, effet de levier 1x',
- 'trading-assistant.messages.autoFillApiConfig': "La configuration historique de l'API de l'รฉchange a รฉtรฉ automatiquement renseignรฉe",
- 'trading-assistant.placeholders.selectIndicator': 'Veuillez sรฉlectionner un indicateur',
- 'trading-assistant.placeholders.selectExchange': 'Veuillez sรฉlectionner un รฉchange',
- 'trading-assistant.placeholders.inputApiKey': 'Veuillez saisir la clรฉ API',
- 'trading-assistant.placeholders.inputSecretKey': 'Veuillez entrer la clรฉ secrรจte',
- 'trading-assistant.placeholders.inputPassphrase': 'Veuillez saisir la phrase secrรจte',
- 'trading-assistant.placeholders.inputStrategyName': 'Veuillez saisir un nom de stratรฉgie',
- 'trading-assistant.placeholders.selectSymbol': 'Veuillez sรฉlectionner une paire de trading',
- 'trading-assistant.placeholders.selectTimeframe': 'Veuillez sรฉlectionner une pรฉriode',
- 'trading-assistant.placeholders.selectKlinePeriod': 'Veuillez sรฉlectionner une pรฉriode K-Line',
- 'trading-assistant.placeholders.inputAiFilterPrompt': 'Veuillez entrer une invite personnalisรฉe (optionnel)',
- 'trading-assistant.validation.indicatorRequired': 'Veuillez sรฉlectionner un indicateur',
- 'trading-assistant.validation.exchangeRequired': 'Veuillez sรฉlectionner un รฉchange',
- 'trading-assistant.validation.apiKeyRequired': 'Veuillez saisir la clรฉ API',
- 'trading-assistant.validation.secretKeyRequired': 'Veuillez entrer la clรฉ secrรจte',
- 'trading-assistant.validation.passphraseRequired': 'Veuillez saisir la phrase secrรจte',
- 'trading-assistant.validation.exchangeConfigIncomplete': "Veuillez remplir les informations complรจtes de configuration de l'รฉchange",
- 'trading-assistant.validation.testConnectionRequired': 'Veuillez d\'abord cliquer sur le bouton "Tester la connexion" et vous assurer que la connexion est rรฉussie',
- 'trading-assistant.validation.testConnectionFailed': 'Le test de connexion a รฉchouรฉ, veuillez vรฉrifier la configuration et rรฉessayer',
- 'trading-assistant.validation.strategyNameRequired': 'Veuillez saisir un nom de stratรฉgie',
- 'trading-assistant.validation.symbolRequired': 'Veuillez sรฉlectionner une paire de trading',
- 'trading-assistant.validation.initialCapitalRequired': "Veuillez saisir le montant de l'investissement",
- 'trading-assistant.validation.leverageRequired': 'Veuillez saisir le ratio de levier',
- 'trading-assistant.table.time': 'temps',
- 'trading-assistant.table.type': 'Tapez',
- 'trading-assistant.table.price': 'prix',
- 'trading-assistant.table.amount': 'Quantitรฉ',
- 'trading-assistant.table.value': 'Montant',
- 'trading-assistant.table.commission': 'frais de traitement',
- 'trading-assistant.table.symbol': 'paire de trading',
- 'trading-assistant.table.side': 'direction',
- 'trading-assistant.table.size': 'Quantitรฉ de position',
- 'trading-assistant.table.entryPrice': "Prix d'ouverture",
- 'trading-assistant.table.currentPrice': 'prix actuel',
- 'trading-assistant.table.unrealizedPnl': 'profit ou perte non rรฉalisรฉ',
- 'trading-assistant.table.pnlPercent': 'Ratio de profits et pertes',
- 'trading-assistant.table.buy': 'acheter',
- 'trading-assistant.table.sell': 'vendre',
- 'trading-assistant.table.long': 'Allez-y longtemps',
- 'trading-assistant.table.short': 'court',
- 'trading-assistant.table.noPositions': "Aucun poste pour l'instant",
- 'trading-assistant.detail.title': 'Dรฉtails de la stratรฉgie',
- 'trading-assistant.detail.strategyName': 'Nom de la stratรฉgie',
- 'trading-assistant.detail.strategyType': 'Type de stratรฉgie',
- 'trading-assistant.detail.status': 'Statut',
- 'trading-assistant.detail.tradingMode': 'modรจle commercial',
- 'trading-assistant.detail.exchange': 'รฉchange',
- 'trading-assistant.detail.initialCapital': 'Capital initial',
- 'trading-assistant.detail.totalInvestment': "montant total de l'investissement",
- 'trading-assistant.detail.currentEquity': 'Valeur nette actuelle',
- 'trading-assistant.detail.totalPnl': 'Total des profits et pertes',
- 'trading-assistant.detail.indicatorName': "Nom de l'indicateur",
- 'trading-assistant.detail.maxLeverage': 'Effet de levier maximal',
- 'trading-assistant.detail.decideInterval': 'intervalle de dรฉcision',
- 'trading-assistant.detail.symbols': 'Objet de transaction',
- 'trading-assistant.detail.createdAt': 'temps de crรฉation',
- 'trading-assistant.detail.updatedAt': 'Heure de mise ร jour',
- 'trading-assistant.detail.llmConfig': "Configuration du modรจle d'IA",
- 'trading-assistant.detail.exchangeConfig': "Configuration d'รฉchange",
- 'trading-assistant.detail.provider': 'fournisseur',
- 'trading-assistant.detail.modelId': 'ID du modรจle',
- 'trading-assistant.detail.close': 'Fermer',
- 'trading-assistant.detail.loadFailed': "รchec de l'obtention des dรฉtails de la stratรฉgie",
- 'trading-assistant.equity.noData': "Aucune donnรฉe sur la valeur nette pour l'instant",
- 'trading-assistant.equity.equity': 'valeur nette',
- 'trading-assistant.exchange.tradingMode': 'modรจle commercial',
- 'trading-assistant.exchange.virtual': 'trading simulรฉ',
- 'trading-assistant.exchange.live': 'Transaction rรฉelle',
- 'trading-assistant.exchange.selectExchange': 'Sรฉlectionnez un รฉchange',
- 'trading-assistant.exchange.walletAddress': 'adresse du portefeuille',
- 'trading-assistant.exchange.walletAddressPlaceholder': "Veuillez saisir l'adresse de votre portefeuille (en commenรงant par 0x)",
- 'trading-assistant.exchange.privateKey': 'clรฉ privรฉe',
- 'trading-assistant.exchange.privateKeyPlaceholder': 'Veuillez saisir la clรฉ privรฉe (64 caractรจres)',
- 'trading-assistant.exchange.testConnection': 'tester la connexion',
- 'trading-assistant.exchange.connectionSuccess': 'Connexion rรฉussie',
- 'trading-assistant.exchange.connectionFailed': 'La connexion a รฉchouรฉ',
- 'trading-assistant.exchange.testFailed': 'Le test de connexion a รฉchouรฉ',
- 'trading-assistant.exchange.fillComplete': "Veuillez remplir les informations complรจtes de configuration de l'รฉchange",
- 'trading-assistant.strategyTypeOptions.ai': "Stratรฉgie basรฉe sur l'IA",
- 'trading-assistant.strategyTypeOptions.indicator': "Stratรฉgie d'indicateurs techniques",
- 'trading-assistant.strategyTypeOptions.aiDeveloping': "La fonction de stratรฉgie basรฉe sur l'IA est en cours de dรฉveloppement, alors restez ร l'รฉcoute",
- 'trading-assistant.strategyTypeOptions.aiDevelopingWarning': "Des fonctionnalitรฉs de stratรฉgie basรฉes sur l'IA sont en cours de dรฉveloppement",
- 'trading-assistant.indicatorType.trend': 'Tendance',
- 'trading-assistant.indicatorType.momentum': 'รฉlan',
- 'trading-assistant.indicatorType.volatility': 'Fluctuations',
- 'trading-assistant.indicatorType.volume': 'Volume',
- 'trading-assistant.indicatorType.custom': 'Personnaliser',
- 'trading-assistant.exchangeNames': {
- 'okx': 'OKX',
- 'binance': 'Binance',
- 'hyperliquid': 'Hyperliquide',
- 'blockchaincom': 'Blockchain.com',
- 'coinbaseexchange': 'Coinbase',
- 'gate': 'Porte.io',
- 'mexc': 'MEXIQUE',
- 'kraken': 'Kraken',
- 'bitfinex': 'Bitfinex',
- 'bybit': 'Bybit',
- 'kucoin': 'KuCoin',
- 'huobi': 'Huobi',
- 'bitget': 'Bitget',
- 'bitmex': 'BitMEX',
- 'deribit': 'Dรฉribuer',
- 'phemex': 'Phemex',
- 'bitmart': 'BitMart',
- 'bitstamp': 'Timbre de bits',
- 'bittrex': 'Bittrex',
- 'poloniex': 'Poloniex',
- 'gemini': 'Gรฉmeaux',
- 'cryptocom': 'Crypto.com',
- 'bitflyer': 'bitFlyer',
- 'upbit': 'Dรฉbit ascendant',
- 'bithumb': 'Bithumb',
- 'coinone': 'Coinone',
- 'zb': 'ZB',
- 'lbank': 'LBanque',
- 'bibox': 'Bibox',
- 'bigone': 'BigONE',
- 'bitrue': 'Bitrue',
- 'coinex': 'CoinEx',
- 'digifinex': 'DigiFinex',
- 'ftx': 'FTX',
- 'ftxus': 'FTX รtats-Unis',
- 'binanceus': 'Binance รtats-Unis',
- 'binancecoinm': 'Binance COIN-M',
- 'binanceusdm': 'Binance USDโ-M',
- 'deepcoin': 'Deepcoin'
- },
- 'ai-trading-assistant.title': 'Assistant de trading IA',
- 'ai-trading-assistant.strategyList': 'Liste de stratรฉgies',
- 'ai-trading-assistant.createStrategy': 'Crรฉer une politique',
- 'ai-trading-assistant.noStrategy': 'Pas encore de stratรฉgie',
- 'ai-trading-assistant.selectStrategy': 'Veuillez sรฉlectionner une stratรฉgie ร gauche pour afficher les dรฉtails',
- 'ai-trading-assistant.startStrategy': 'stratรฉgie de lancement',
- 'ai-trading-assistant.stopStrategy': "stratรฉgie d'arrรชt",
- 'ai-trading-assistant.editStrategy': 'Stratรฉgie รฉditoriale',
- 'ai-trading-assistant.deleteStrategy': 'Supprimer la stratรฉgie',
- 'ai-trading-assistant.status.running': 'Courir',
- 'ai-trading-assistant.status.stopped': 'Arrรชtรฉ',
- 'ai-trading-assistant.status.error': 'Erreur',
- 'ai-trading-assistant.tabs.tradingRecords': 'historique des transactions',
- 'ai-trading-assistant.tabs.positions': 'Enregistrement de poste',
- 'ai-trading-assistant.tabs.aiDecisions': 'Enregistrement de dรฉcision IA',
- 'ai-trading-assistant.tabs.equityCurve': 'courbe des actions',
- 'ai-trading-assistant.form.createTitle': 'Crรฉer des stratรฉgies de trading IA',
- 'ai-trading-assistant.form.editTitle': "Modifier la stratรฉgie de trading de l'IA",
- 'ai-trading-assistant.form.strategyName': 'Nom de la stratรฉgie',
- 'ai-trading-assistant.form.modelId': "Modรจle d'IA",
- 'ai-trading-assistant.form.modelIdHint': 'Utilisez le service systรจme OpenRouter sans configurer la clรฉ API',
- 'ai-trading-assistant.form.decideInterval': 'intervalle de dรฉcision',
- 'ai-trading-assistant.form.decideInterval5m': '5 minutes',
- 'ai-trading-assistant.form.decideInterval10m': '10 minutes',
- 'ai-trading-assistant.form.decideInterval30m': '30 minutes',
- 'ai-trading-assistant.form.decideInterval1h': '1 heure',
- 'ai-trading-assistant.form.decideInterval4h': '4 heures',
- 'ai-trading-assistant.form.decideInterval1d': '1 jour',
- 'ai-trading-assistant.form.decideInterval1w': '1 semaine',
- 'ai-trading-assistant.form.decideIntervalHint': 'Lโintervalle de temps nรฉcessaire ร lโIA pour prendre des dรฉcisions',
- 'ai-trading-assistant.form.runPeriod': "Cycle d'exรฉcution",
- 'ai-trading-assistant.form.runPeriodHint': "L'heure de dรฉbut et l'heure de fin de l'exรฉcution de la stratรฉgie",
- 'ai-trading-assistant.form.startDate': 'date de dรฉbut',
- 'ai-trading-assistant.form.endDate': 'date de fin',
- 'ai-trading-assistant.form.qdtCostTitle': 'Instructions de dรฉduction QDT',
- 'ai-trading-assistant.form.qdtCostHint': "{cost} QDT sera dรฉduit pour chaque dรฉcision de l'IA. Veuillez vous assurer que votre compte dispose d'un solde QDT suffisant. Lors de l'exรฉcution de la stratรฉgie, des frais seront dรฉduits en temps rรฉel pour chaque dรฉcision.",
- 'ai-trading-assistant.form.apiKey': 'Clรฉ API',
- 'ai-trading-assistant.form.exchange': 'Sรฉlectionnez un รฉchange',
- 'ai-trading-assistant.form.secretKey': 'Clรฉ secrรจte',
- 'ai-trading-assistant.form.passphrase': 'Phrase secrรจte',
- 'ai-trading-assistant.form.testConnection': 'tester la connexion',
- 'ai-trading-assistant.form.symbol': 'paire de trading',
- 'ai-trading-assistant.form.symbolHint': 'Sรฉlectionnez la paire de trading ร trader',
- 'ai-trading-assistant.form.initialCapital': 'Montant investi (marge)',
- 'ai-trading-assistant.form.leverage': 'Tirer parti de plusieurs',
- 'ai-trading-assistant.form.timeframe': 'pรฉriode',
- 'ai-trading-assistant.form.timeframe1m': '1 minute',
- 'ai-trading-assistant.form.timeframe5m': '5 minutes',
- 'ai-trading-assistant.form.timeframe15m': '15 minutes',
- 'ai-trading-assistant.form.timeframe30m': '30 minutes',
- 'ai-trading-assistant.form.timeframe1H': '1 heure',
- 'ai-trading-assistant.form.timeframe4H': '4 heures',
- 'ai-trading-assistant.form.timeframe1D': '1 jour',
- 'ai-trading-assistant.form.marketType': 'type de marchรฉ',
- 'ai-trading-assistant.form.marketTypeFutures': 'contrat',
- 'ai-trading-assistant.form.marketTypeSpot': 'Spot',
- 'ai-trading-assistant.form.totalPnl': 'Total des profits et pertes',
- 'ai-trading-assistant.form.customPrompt': "Mots d'invite personnalisรฉs",
- 'ai-trading-assistant.form.customPromptHint': "Facultatif, utilisรฉ pour personnaliser les stratรฉgies de trading de l'IA et la logique de prise de dรฉcision",
- 'ai-trading-assistant.form.cancel': 'Annuler',
- 'ai-trading-assistant.form.prev': 'รtape prรฉcรฉdente',
- 'ai-trading-assistant.form.next': 'รtape suivante',
- 'ai-trading-assistant.form.confirmCreate': 'Confirmer la crรฉation',
- 'ai-trading-assistant.form.confirmEdit': 'Confirmer les modifications',
- 'ai-trading-assistant.messages.createSuccess': 'Stratรฉgie crรฉรฉe avec succรจs',
- 'ai-trading-assistant.messages.createFailed': 'รchec de la crรฉation de la stratรฉgie',
- 'ai-trading-assistant.messages.updateSuccess': 'Mise ร jour de la stratรฉgie rรฉussie',
- 'ai-trading-assistant.messages.updateFailed': 'รchec de la mise ร jour de la stratรฉgie',
- 'ai-trading-assistant.messages.deleteSuccess': 'Suppression de la stratรฉgie rรฉussie',
- 'ai-trading-assistant.messages.deleteFailed': 'รchec de la suppression de la stratรฉgie',
- 'ai-trading-assistant.messages.startSuccess': 'La stratรฉgie a dรฉmarrรฉ avec succรจs',
- 'ai-trading-assistant.messages.startFailed': 'รchec du dรฉmarrage de la stratรฉgie',
- 'ai-trading-assistant.messages.stopSuccess': "La stratรฉgie s'est arrรชtรฉe avec succรจs",
- 'ai-trading-assistant.messages.stopFailed': "La stratรฉgie d'arrรชt a รฉchouรฉ",
- 'ai-trading-assistant.messages.loadFailed': "รchec de l'obtention de la liste des rรจgles",
- 'ai-trading-assistant.messages.loadDecisionsFailed': "รchec de l'obtention du dossier de dรฉcision de l'IA",
- 'ai-trading-assistant.messages.deleteConfirm': 'รtes-vous sรปr de vouloir supprimer cette stratรฉgieย ? Cette opรฉration est irrรฉversible.',
- 'ai-trading-assistant.placeholders.inputStrategyName': 'Veuillez saisir un nom de stratรฉgie',
- 'ai-trading-assistant.placeholders.selectModelId': "Veuillez sรฉlectionner un modรจle d'IA",
- 'ai-trading-assistant.placeholders.selectDecideInterval': 'Veuillez sรฉlectionner un intervalle de dรฉcision',
- 'ai-trading-assistant.placeholders.startTime': 'heure de dรฉbut',
- 'ai-trading-assistant.placeholders.endTime': 'heure de fin',
- 'ai-trading-assistant.placeholders.inputApiKey': 'Veuillez saisir la clรฉ API',
- 'ai-trading-assistant.placeholders.selectExchange': 'Veuillez sรฉlectionner un รฉchange',
- 'ai-trading-assistant.placeholders.inputSecretKey': 'Veuillez entrer la clรฉ secrรจte',
- 'ai-trading-assistant.placeholders.inputPassphrase': 'Veuillez saisir la phrase secrรจte',
- 'ai-trading-assistant.placeholders.selectSymbol': 'Veuillez sรฉlectionner une paire de trading, telle queย : BTC/USDT',
- 'ai-trading-assistant.placeholders.selectTimeframe': 'Veuillez sรฉlectionner une pรฉriode',
- 'ai-trading-assistant.placeholders.inputCustomPrompt': "Veuillez saisir un mot d'invite personnalisรฉ (facultatif)",
- 'ai-trading-assistant.validation.strategyNameRequired': 'Veuillez saisir un nom de stratรฉgie',
- 'ai-trading-assistant.validation.modelIdRequired': "Veuillez sรฉlectionner un modรจle d'IA",
- 'ai-trading-assistant.validation.runPeriodRequired': "Veuillez sรฉlectionner un cycle d'exรฉcution",
- 'ai-trading-assistant.validation.apiKeyRequired': 'Veuillez saisir la clรฉ API',
- 'ai-trading-assistant.validation.exchangeRequired': 'Veuillez sรฉlectionner un รฉchange',
- 'ai-trading-assistant.validation.secretKeyRequired': 'Veuillez entrer la clรฉ secrรจte',
- 'ai-trading-assistant.validation.symbolRequired': 'Veuillez sรฉlectionner une paire de trading',
- 'ai-trading-assistant.validation.initialCapitalRequired': "Veuillez saisir le montant de l'investissement",
- 'ai-trading-assistant.table.time': 'temps',
- 'ai-trading-assistant.table.type': 'Tapez',
- 'ai-trading-assistant.table.price': 'prix',
- 'ai-trading-assistant.table.amount': 'Quantitรฉ',
- 'ai-trading-assistant.table.value': 'Montant',
- 'ai-trading-assistant.table.symbol': 'paire de trading',
- 'ai-trading-assistant.table.side': 'direction',
- 'ai-trading-assistant.table.size': 'Quantitรฉ de position',
- 'ai-trading-assistant.table.entryPrice': "Prix d'ouverture",
- 'ai-trading-assistant.table.currentPrice': 'prix actuel',
- 'ai-trading-assistant.table.unrealizedPnl': 'profit ou perte non rรฉalisรฉ',
- 'ai-trading-assistant.table.profit': 'Profits et pertes',
- 'ai-trading-assistant.table.openLong': 'Ouvert longtemps',
- 'ai-trading-assistant.table.closeLong': 'Pinduo',
- 'ai-trading-assistant.table.openShort': 'Ouvert court',
- 'ai-trading-assistant.table.closeShort': 'vide',
- 'ai-trading-assistant.table.addLong': 'Gadot',
- 'ai-trading-assistant.table.addShort': 'ajouter un court',
- 'ai-trading-assistant.table.closeShortProfit': 'Prendre des bรฉnรฉfices sur une position courte',
- 'ai-trading-assistant.table.closeShortStop': 'Arrรชter la perte',
- 'ai-trading-assistant.table.closeLongProfit': 'Arrรชtez-vous longtemps et profitez',
- 'ai-trading-assistant.table.closeLongStop': 'Arrรชter la perte',
- 'ai-trading-assistant.table.buy': 'acheter',
- 'ai-trading-assistant.table.sell': 'vendre',
- 'ai-trading-assistant.table.long': 'Allez-y longtemps',
- 'ai-trading-assistant.table.short': 'court',
- 'ai-trading-assistant.table.hold': 'tenir',
- 'ai-trading-assistant.table.reasoning': "Raison de l'analyse",
- 'ai-trading-assistant.table.decisions': 'prise de dรฉcision',
- 'ai-trading-assistant.table.riskAssessment': 'รฉvaluation des risques',
- 'ai-trading-assistant.table.confidence': 'Confiance',
- 'ai-trading-assistant.table.totalRecords': '{total} enregistrements au total',
- 'ai-trading-assistant.table.noPositions': "Aucun poste pour l'instant",
- 'ai-trading-assistant.detail.title': 'Dรฉtails de la stratรฉgie',
- 'ai-trading-assistant.equity.noData': "Aucune donnรฉe sur la valeur nette pour l'instant",
- 'ai-trading-assistant.equity.equity': 'valeur nette',
- 'ai-trading-assistant.exchange.testFailed': 'Le test de connexion a รฉchouรฉ',
- 'ai-trading-assistant.exchange.connectionSuccess': 'Connexion rรฉussie',
- 'ai-trading-assistant.exchange.connectionFailed': 'La connexion a รฉchouรฉ',
- 'ai-trading-assistant.form.advancedSettings': 'Paramรจtres avancรฉs',
- 'ai-trading-assistant.form.orderMode': 'Mode de commande',
- 'ai-trading-assistant.form.orderModeMaker': 'Crรฉateur',
- 'ai-trading-assistant.form.orderModeTaker': 'Prix du marchรฉ (Preneur)',
- 'ai-trading-assistant.form.orderModeHint': "Le mode d'ordre en attente utilise des ordres limitรฉs et les frais de traitement sont infรฉrieursย ; le mode prix du marchรฉ est exรฉcutรฉ immรฉdiatement et les frais de traitement sont plus รฉlevรฉs.",
- 'ai-trading-assistant.form.makerWaitSec': "Temps d'attente pour les commandes en attente (secondes)",
- 'ai-trading-assistant.form.makerWaitSecHint': "Le temps d'attente pour la transaction aprรจs avoir passรฉ une commande. Annulez et rรฉessayez aprรจs l'expiration du dรฉlai.",
- 'ai-trading-assistant.form.makerRetries': 'Nombre de tentatives pour les commandes en attente',
- 'ai-trading-assistant.form.makerRetriesHint': "Le nombre maximum de tentatives lorsqu'un ordre en attente n'est pas exรฉcutรฉ",
- 'ai-trading-assistant.form.fallbackToMarket': "L'ordre en attente รฉchoue et le prix du marchรฉ est dรฉgradรฉ.",
- 'ai-trading-assistant.form.fallbackToMarketHint': "Lorsque l'ordre en attente d'ouverture/de clรดture n'a pas รฉtรฉ exรฉcutรฉ, s'il doit รชtre rรฉtrogradรฉ en ordre au marchรฉ pour garantir que la transaction soit terminรฉe.",
- 'ai-trading-assistant.form.marginMode': 'Mode marge',
- 'ai-trading-assistant.form.marginModeCross': 'Entrepรดt complet',
- 'ai-trading-assistant.form.marginModeIsolated': 'Position isolรฉe',
- 'ai-analysis.title': 'Moteur de trading quantique',
- 'ai-analysis.system.online': 'en ligne',
- 'ai-analysis.system.agents': 'agent',
- 'ai-analysis.system.active': 'actif',
- 'ai-analysis.system.stage': 'scรจne',
- 'ai-analysis.panel.roster': 'Composition des agents',
- 'ai-analysis.panel.thinking': 'En pensant...',
- 'ai-analysis.panel.done': 'Terminรฉ',
- 'ai-analysis.panel.standby': 'veille',
- 'ai-analysis.input.title': 'Moteur de trading quantique',
- 'ai-analysis.input.placeholder': "Sรฉlectionnez l'actif cible (par exemple BTC/USDT)",
- 'ai-analysis.input.watchlist': 'Stocks optionnels',
- 'ai-analysis.input.start': "Dรฉmarrer l'analyse",
- 'ai-analysis.input.recent': 'Tรขches rรฉcentesย :',
- 'ai-analysis.vis.stage': 'รฉtape',
- 'ai-analysis.vis.processing': 'Traitement',
- 'ai-analysis.result.complete': 'Analyse terminรฉe',
- 'ai-analysis.result.signal': 'signal final',
- 'ai-analysis.result.confidence': 'Confianceย :',
- 'ai-analysis.result.new': 'nouvelle analyse',
- 'ai-analysis.result.full': 'Voir le rapport complet',
- 'ai-analysis.logs.title': 'Journal systรจme',
- 'ai-analysis.modal.title': 'rapport confidentiel',
- 'ai-analysis.modal.fundamental': 'analyse fondamentale',
- 'ai-analysis.modal.technical': 'Analyse technique',
- 'ai-analysis.modal.sentiment': 'Analyse รฉmotionnelle',
- 'ai-analysis.modal.risk': 'รฉvaluation des risques',
- 'ai-analysis.stage.idle': 'veille',
- 'ai-analysis.stage.1': 'Premiรจre phaseย : analyse multidimensionnelle',
- 'ai-analysis.stage.2': 'Phase deuxย : dรฉbat long-court',
- 'ai-analysis.stage.3': 'Phase troisย :ย planification stratรฉgique',
- 'ai-analysis.stage.4': 'La quatriรจme รฉtape : la revue du contrรดle des risques',
- 'ai-analysis.stage.complete': 'Terminรฉ',
- 'ai-analysis.agent.investment_director': 'Directeur des investissements',
- 'ai-analysis.agent.role.investment_director': 'Analyse complรจte et conclusion finale',
- 'ai-analysis.agent.market': 'analyste de marchรฉ',
- 'ai-analysis.agent.role.market': 'Donnรฉes technologiques et de marchรฉ',
- 'ai-analysis.agent.fundamental': 'analyste fondamental',
- 'ai-analysis.agent.role.fundamental': 'Finances et valorisation',
- 'ai-analysis.agent.technical': 'analyste technique',
- 'ai-analysis.agent.role.technical': 'Indicateurs et graphiques techniques',
- 'ai-analysis.agent.news': 'analyste de nouvelles',
- 'ai-analysis.agent.role.news': "Filtre d'actualitรฉs mondiales",
- 'ai-analysis.agent.sentiment': 'analyste des sentiments',
- 'ai-analysis.agent.role.sentiment': 'Social et รฉmotionnel',
- 'ai-analysis.agent.risk': 'analyste des risques',
- 'ai-analysis.agent.role.risk': 'Vรฉrification des risques de base',
- 'ai-analysis.agent.bull': 'chercheur optimiste',
- 'ai-analysis.agent.role.bull': 'Extraction de catalyseurs de croissance',
- 'ai-analysis.agent.bear': 'chercheur baissier',
- 'ai-analysis.agent.role.bear': 'Recherche de risques et de dรฉfauts',
- 'ai-analysis.agent.manager': 'directeur de recherche',
- 'ai-analysis.agent.role.manager': 'modรฉrateur du dรฉbat',
- 'ai-analysis.agent.trader': 'commerรงant',
- 'ai-analysis.agent.role.trader': 'Stratรจge exรฉcutif',
- 'ai-analysis.agent.risky': 'analyste activiste',
- 'ai-analysis.agent.role.risky': 'stratรฉgie agressive',
- 'ai-analysis.agent.neutral': "analyste d'รฉquilibre",
- 'ai-analysis.agent.role.neutral': "stratรฉgie d'รฉquilibrage",
- 'ai-analysis.agent.safe': 'analyste conservateur',
- 'ai-analysis.agent.role.safe': 'stratรฉgie conservatrice',
- 'ai-analysis.agent.cro': 'Responsable du contrรดle des risques (CRO)',
- 'ai-analysis.agent.role.cro': 'autoritรฉ dรฉcisionnelle finale',
- 'ai-analysis.script.market': 'Rรฉcupรฉration des donnรฉes OHLCV des principaux รฉchanges...',
- 'ai-analysis.script.fundamental': 'Rรฉcupรฉration des rapports financiers trimestriels...',
- 'ai-analysis.script.technical': 'Analyser les indicateurs techniques et les modรจles de graphiques...',
- 'ai-analysis.script.news': "Analyse de l'actualitรฉ financiรจre mondiale...",
- 'ai-analysis.script.sentiment': 'Analyser les tendances des rรฉseaux sociaux...',
- 'ai-analysis.script.risk': 'Calcul de la volatilitรฉ historique...',
- 'invite.inviteLink': "Lien d'invitation",
- 'invite.copy': 'Copier le lien',
- 'invite.copySuccess': 'Copiez avec succรจsย !',
- 'invite.copyFailed': 'รchec de la copie, veuillez copier manuellement',
- 'invite.noInviteLink': "Lien d'invitation non gรฉnรฉrรฉ",
- 'invite.totalInvites': 'Invitations cumulรฉes',
- 'invite.totalReward': 'Rรฉcompenses cumulรฉes',
- 'invite.rules': "Rรจgles d'invitation",
- 'invite.rule1': "Chaque fois que vous invitez avec succรจs un ami ร s'inscrire, vous recevrez une rรฉcompense",
- 'invite.rule2': "Si l'ami invitรฉ termine la premiรจre transaction, vous recevrez des rรฉcompenses supplรฉmentaires",
- 'invite.rule3': "Les rรฉcompenses d'invitation seront envoyรฉes directement sur votre compte",
- 'invite.inviteList': "Liste d'invitations",
- 'invite.tasks': 'centre de mission',
- 'invite.inviteeName': 'Invitรฉ',
- 'invite.inviteTime': "Heure d'invitation",
- 'invite.status': 'Statut',
- 'invite.reward': 'rรฉcompense',
- 'invite.active': 'actif',
- 'invite.inactive': 'Non activรฉ',
- 'invite.completed': 'Terminรฉ',
- 'invite.claimed': 'Reรงu',
- 'invite.pending': 'A complรฉter',
- 'invite.goToTask': 'complรฉter',
- 'invite.claimReward': 'rรฉclamer des rรฉcompenses',
- 'invite.verify': 'Vรฉrification terminรฉe',
- 'invite.verifySuccess': 'Vรฉrification rรฉussieย ! Tรขche terminรฉe',
- 'invite.verifyNotCompleted': "La tรขche n'est pas encore terminรฉe, veuillez d'abord la terminer",
- 'invite.verifyFailed': 'La vรฉrification a รฉchouรฉ, veuillez rรฉessayer plus tard',
- 'invite.claimSuccess': 'Vous avez reรงu avec succรจs {reward} QDTย !',
- 'invite.claimFailed': 'รchec de la collecte, veuillez rรฉessayer plus tard',
- 'invite.totalRecords': '{total} enregistrements au total',
- 'invite.task.twitter.title': 'Retweeter sur X (Twitter)',
- 'invite.task.twitter.desc': 'Partagez nos tweets officiels sur votre compte X (Twitter)',
- 'invite.task.youtube.title': 'Suivez notre chaรฎne YouTube',
- 'invite.task.youtube.desc': 'Abonnez-vous et suivez notre chaรฎne YouTube officielle',
- 'invite.task.telegram.title': 'Rejoindre le groupe Telegram',
- 'invite.task.telegram.desc': 'Rejoignez notre groupe communautaire officiel Telegram',
- 'invite.task.discord.title': 'Rejoignez un serveur Discord',
- 'invite.task.discord.desc': 'Rejoignez notre serveur communautaire Discord',
- 'message': '-',
- 'layouts.usermenu.dialog.title': 'informations',
- 'layouts.usermenu.dialog.content': 'รtes-vous sรปr de vouloir vous dรฉconnecterย ?',
- 'layouts.userLayout.title': "Trouver la vรฉritรฉ dans l'incertitude",
- // Auto-filled missing keys from en-US (fallback to English)
- 'dashboard.indicator.boundary.message': 'Note: The indicator script only computes plots + buy/sell signals. Position sizing, risk, scaling, fees/slippage belong to execution config.',
- 'dashboard.indicator.boundary.indicatorRule': "Keep the script to buy/sell only (and set df['buy']/df['sell']). Do NOT implement position management, TP/SL, scaling in the script.",
- 'dashboard.indicator.boundary.backtestRule': 'Rule: If a bar has a main signal (buy/sell โ open/close/reverse), scaling in/out is skipped on the same bar.',
- 'dashboard.indicator.guide.title': 'Python Indicator & Strategy Development Guide',
- 'dashboard.indicator.guide.intro': 'This platform supports writing custom technical indicators and trading signals using Python. The system includes built-in pandas and numpy data analysis libraries. You can use standard DataFrame operations to process K-line data and draw charts or mark buy/sell signals.',
- 'dashboard.indicator.guide.section1.title': '1. Runtime Environment & Predefined Variables',
- 'dashboard.indicator.guide.section1.env': 'Your code runs in a browser-based Python environment (Pyodide).',
- 'dashboard.indicator.guide.section1.libs': 'Pre-installed Libraries',
- 'dashboard.indicator.guide.section1.libsDesc': 'The following libraries are imported by default, no need to import again:',
- 'dashboard.indicator.guide.section1.libsList': 'pandas (pd), numpy (np), math, json',
- 'dashboard.indicator.guide.section1.data': 'Input Data: df',
- 'dashboard.indicator.guide.section1.dataDesc': 'The system automatically converts current K-line data into a Pandas DataFrame object, variable name is df.',
- 'dashboard.indicator.guide.section1.dataColumns': 'df contains the following columns (all float type):',
- 'dashboard.indicator.guide.section1.dataColumnsList': 'time (timestamp, seconds), open, high, low, close, volume',
- 'dashboard.indicator.guide.section1.dataNote': 'Data index is arranged from old to new (0 is the earliest data, last row is the latest data).',
- 'dashboard.indicator.guide.section1.dataIndex': 'Important: df index is timestamp (DatetimeIndex), please preserve the index, avoid using .values which loses the index.',
- 'dashboard.indicator.guide.section2.title': '2. Parameter Definition',
- 'dashboard.indicator.guide.section2.desc': 'You can define variables as parameters at the beginning of your code. The system will try to parse statements like variable = value as adjustable parameters.',
- 'dashboard.indicator.guide.section2.example': 'Parameter Example',
- 'dashboard.indicator.guide.section2.exampleCode': 'span = 20 or multiplier = 2.0',
- 'dashboard.indicator.guide.section3.title': '3. Backtest Signal Setup (Important!)',
- 'dashboard.indicator.guide.section3.desc': 'If you want your indicator to support backtesting, you must set the following two columns in your code:',
- 'dashboard.indicator.guide.section3.backtestRequired': 'Required for Backtesting:',
- 'dashboard.indicator.guide.section3.backtestBuySignal': "df['buy_signal'] - Boolean Series, True indicates buy signal",
- 'dashboard.indicator.guide.section3.backtestSellSignal': "df['sell_signal'] - Boolean Series, True indicates sell signal",
- 'dashboard.indicator.guide.section3.backtestExample': 'Example:',
- 'dashboard.indicator.guide.section3.backtestExampleCode': "df['buy_signal'] = condition_buydf['sell_signal'] = condition_sell",
- 'dashboard.indicator.guide.section3.backtestNote': 'Note: Even if you only set output.signals for chart display, you must set these two columns to enable backtesting.',
- 'dashboard.indicator.guide.section4.title': '4. Output Requirements: output',
- 'dashboard.indicator.guide.section4.desc': 'At the end of code execution, you must define a dictionary named output to tell the chart how to display results.',
- 'dashboard.indicator.guide.section4.fields': 'The output dictionary contains the following fields:',
- 'dashboard.indicator.guide.section4.plots': 'plots - For drawing lines (e.g., moving averages, RSI)',
- 'dashboard.indicator.guide.section4.signals': 'signals - For marking buy/sell signals (e.g., arrows, labels)',
- 'dashboard.indicator.guide.section4.name': 'name - Indicator name (optional)',
- 'dashboard.indicator.guide.section4.calculatedVars': 'calculatedVars - Calculated variables (optional, for displaying additional information)',
- 'dashboard.indicator.guide.section5.title': '5. Plot Configuration (Plots)',
- 'dashboard.indicator.guide.section5.desc': 'Each object in the plots list represents a line.',
- 'dashboard.indicator.guide.section5.table.field': 'Field',
- 'dashboard.indicator.guide.section5.table.type': 'Type',
- 'dashboard.indicator.guide.section5.table.required': 'Required',
- 'dashboard.indicator.guide.section5.table.requiredYes': 'Yes',
- 'dashboard.indicator.guide.section5.table.requiredNo': 'No',
- 'dashboard.indicator.guide.section5.table.desc': 'Description',
- 'dashboard.indicator.guide.section5.table.name': 'The name of the indicator line, displayed in the legend',
- 'dashboard.indicator.guide.section5.table.data': 'Data list, length must match the number of rows in df. Recommended to use series.tolist()',
- 'dashboard.indicator.guide.section5.table.color': "Line color (Hex format, e.g. '#ff0000'). If not filled, the system will automatically assign",
- 'dashboard.indicator.guide.section5.table.typeDesc': "Chart type, default is 'line'",
- 'dashboard.indicator.guide.section5.table.overlay': 'Important. True means display on main chart (with K-line), False means display on sub-chart (independent area)',
- 'dashboard.indicator.guide.section5.example': 'Example: Draw Simple Moving Average (SMA)',
- 'dashboard.indicator.guide.section5.exampleCalc': 'Calculate SMA',
- 'dashboard.indicator.guide.section5.exampleOutput': 'Construct Output',
- 'dashboard.indicator.guide.section5.exampleOverlay': 'Display on main chart',
- 'dashboard.indicator.guide.section6.title': '6. Signal Markers (Signals)',
- 'dashboard.indicator.guide.section6.desc': "signals are used to mark buy/sell points on specific K-lines through icons or text. Note: This is only for chart display. The backtest system uses df['buy_signal'] and df['sell_signal'].",
- 'dashboard.indicator.guide.section6.table.type': "Signal type: 'buy' (buy, marked below K-line) or 'sell' (sell, marked above K-line)",
- 'dashboard.indicator.guide.section6.table.data': 'Signal data list. Fill price value at signal positions, fill None (or np.nan) at non-signal positions',
- 'dashboard.indicator.guide.section6.table.text': 'Text displayed on the label (e.g. "B", "S", "Buy", "Sell")',
- 'dashboard.indicator.guide.section6.table.color': 'Marker color',
- 'dashboard.indicator.guide.section6.hint': 'The system automatically handles positioning.',
- 'dashboard.indicator.guide.section6.buy': 'Markers will be automatically positioned below the Low of the current K-line',
- 'dashboard.indicator.guide.section6.sell': 'Markers will be automatically positioned above the High of the current K-line',
- 'dashboard.indicator.guide.section6.example': 'Example: Draw Buy/Sell Signals',
- 'dashboard.indicator.guide.section6.exampleInit': 'Initialize signal list, fill all with None',
- 'dashboard.indicator.guide.section6.exampleLogic': 'Simple logic: mark buy when close price is greater than open price',
- 'dashboard.indicator.guide.section6.exampleNote': 'In actual logic, please use loops or vectorized operations',
- 'dashboard.indicator.guide.section6.examplePrice': 'Record price',
- 'dashboard.indicator.guide.section6.exampleText': 'Buy',
- 'dashboard.indicator.guide.section7.title': '7. Complete Code Examples',
- 'dashboard.indicator.guide.section7.exampleA': 'Example A: Dual EMA Strategy (Supports Backtesting)',
- 'dashboard.indicator.guide.section7.exampleACode': "# 1. Calculate indicatorsdf['open_long'], df['close_long'], df['open_short'], df['close_short'] (boolean). Even if you set output.signals for chart display, you must set these columns to enable backtesting.",
- 'dashboard.indicator.guide.section8.q2': 'Q: Data length mismatch?',
- 'dashboard.indicator.guide.section8.a2': "A: The data list in plots and signals must have exactly the same length as the K-line data. If you use df['xxx'].tolist(), there is usually no problem.",
- 'dashboard.indicator.guide.section8.q3': 'Q: How to handle NaN (empty values)?',
- 'dashboard.indicator.guide.section8.a3': "A: Pandas calculations (such as rolling mean) will produce NaN at the beginning. The system will automatically convert NaN to null for chart rendering. You don't need to manually clean it, but if you need specific logic, you can use df.fillna(0) or other methods.",
- 'dashboard.indicator.guide.section8.q4': 'Q: Index mismatch causing all signals to be NaN?',
- 'dashboard.indicator.guide.section8.a4': "A: Please ensure you preserve the original df index (timestamp). Avoid using .values to create new Series. Use columns directly like df['close'] for operations.",
- 'dashboard.indicator.guide.section8.q5': 'Q: Can I use third-party network libraries?',
- 'dashboard.indicator.guide.section8.a5': 'A: No. The runtime environment is a browser sandbox and cannot use libraries like requests to request external APIs, nor can it install additional pip packages. Limited to built-in libraries such as pandas, numpy, math, json.',
- 'dashboard.indicator.guide.section8.q6': 'Q: How to debug code?',
- 'dashboard.indicator.guide.section8.a6': 'A: If the chart does not display indicators, it is usually because the Python code has an error. Please check for syntax errors or array index out of bounds. It is recommended to debug the algorithm logic in a local Python environment first, then copy it in.',
- 'dashboard.indicator.guide.section8.q7': 'Q: Backtest shows 0 signals?',
- 'dashboard.indicator.guide.section8.a7': "A: Please check the data type of df['open_long']/df['close_long']/df['open_short']/df['close_short']. They should be boolean (True/False), not numeric. Use condition.fillna(False).astype(bool) to ensure correct type.",
- 'dashboard.indicator.backtest.commissionHint': 'Charged on notional value (incl. leverage) per trade; both entry & exit are deducted from balance.',
- 'dashboard.indicator.backtest.historyTitle': 'Backtest History',
- 'dashboard.indicator.backtest.historyRefresh': 'Refresh',
- 'dashboard.indicator.backtest.historyView': 'View',
- 'dashboard.indicator.backtest.historyNoData': 'No backtest history',
- 'dashboard.indicator.backtest.historyUseCurrent': 'Only current symbol/timeframe',
- 'dashboard.indicator.backtest.historyFilterSymbol': 'Symbol',
- 'dashboard.indicator.backtest.historyFilterTimeframe': 'Timeframe',
- 'dashboard.indicator.backtest.historyApply': 'Apply filters',
- 'dashboard.indicator.backtest.historyAIAnalyze': 'AI Analyze',
- 'dashboard.indicator.backtest.historyAIAnalyzeTitle': 'AI Suggestions',
- 'dashboard.indicator.backtest.historyNoAIResult': 'No AI analysis result',
- 'dashboard.indicator.backtest.historyRunId': 'Run ID',
- 'dashboard.indicator.backtest.historyCreatedAt': 'Time',
- 'dashboard.indicator.backtest.historyRange': 'Range',
- 'dashboard.indicator.backtest.historyStatus': 'Status',
- 'dashboard.indicator.backtest.historyStatusSuccess': 'Success',
- 'dashboard.indicator.backtest.historyStatusFailed': 'Failed',
- 'dashboard.indicator.backtest.historyActions': 'Actions',
- 'dashboard.indicator.backtest.hint.entryPctMax': 'Max entry: {maxPct}% (reserve budget for future scale-ins)',
- 'trading-assistant.exchange.ipWhitelistTip': 'Please add the following IPs to the whitelist in your exchange API settings:',
- 'signal-robot.title': 'Signal Robot Console',
- 'signal-robot.createBot': 'Create New Bot',
- 'signal-robot.search.nameOrSymbol': 'Name/Symbol',
- 'signal-robot.search.placeholder': 'Search bot name or symbol',
- 'signal-robot.search.status': 'Status',
- 'signal-robot.search.statusAll': 'All',
- 'signal-robot.search.statusRunning': 'Running',
- 'signal-robot.search.statusPaused': 'Paused',
- 'signal-robot.search.query': 'Query',
- 'signal-robot.search.reset': 'Reset',
- 'signal-robot.table.botName': 'Bot Name',
- 'signal-robot.table.symbolTimeframe': 'Symbol/Timeframe',
- 'signal-robot.table.triggerStrategy': 'Trigger Strategy',
- 'signal-robot.table.notificationChannels': 'Notification Channels',
- 'signal-robot.table.status': 'Status',
- 'signal-robot.table.action': 'Action',
- 'signal-robot.table.triggerConditions': '{count} trigger conditions',
- 'signal-robot.table.monitoring': 'Monitoring',
- 'signal-robot.table.paused': 'Paused',
- 'signal-robot.table.edit': 'Edit',
- 'signal-robot.table.pause': 'Pause',
- 'signal-robot.table.start': 'Start',
- 'signal-robot.table.delete': 'Delete',
- 'signal-robot.table.deleteConfirm': 'Are you sure you want to delete this bot?',
- 'signal-robot.table.deleteSuccess': 'Deleted successfully',
- 'signal-robot.table.startSuccess': 'Bot started',
- 'signal-robot.table.pauseSuccess': 'Bot paused',
- 'signal-robot.channel.telegram': 'Telegram',
- 'signal-robot.channel.discord': 'Discord',
- 'signal-robot.channel.email': 'Email',
- 'signal-robot.channel.webhook': 'Webhook',
- 'signal-robot.channel.browser': 'Browser Push',
- 'signal-robot.modal.createTitle': 'Create New Signal Robot',
- 'signal-robot.modal.editTitle': 'Edit Signal Robot',
- 'signal-robot.modal.step.basic': 'Basic Settings',
- 'signal-robot.modal.step.entry': 'Entry Strategy',
- 'signal-robot.modal.step.position': 'Position Management',
- 'signal-robot.modal.step.risk': 'Risk Control',
- 'signal-robot.modal.step.notify': 'Notification Config',
- 'signal-robot.modal.prev': 'Previous',
- 'signal-robot.modal.next': 'Next',
- 'signal-robot.modal.preview': 'Preview Backtest',
- 'signal-robot.modal.complete': 'Complete & Run',
- 'signal-robot.modal.saveSuccess': 'Saved successfully',
- 'signal-robot.modal.previewDeveloping': 'Preview feature is under development...',
- 'signal-robot.modal.basicInfoRequired': 'Please complete basic information',
- 'signal-robot.basic.alert': 'Set basic information for the bot',
- 'signal-robot.basic.title': 'Basic Information',
- 'signal-robot.basic.botName': 'Bot Name',
- 'signal-robot.basic.botNamePlaceholder': 'e.g.: BTC SuperTrend Strategy',
- 'signal-robot.basic.symbol': 'Trading Pair',
- 'signal-robot.basic.symbolPlaceholder': 'Select from watchlist',
- 'signal-robot.basic.noWatchlist': 'No watchlist items, please add in market page first',
- 'signal-robot.basic.timeframe': 'K-Line Period',
- 'signal-robot.basic.timeframe15m': '15 Minutes',
- 'signal-robot.basic.timeframe30m': '30 Minutes',
- 'signal-robot.basic.timeframe1h': '1 Hour',
- 'signal-robot.basic.timeframe4h': '4 Hours',
- 'signal-robot.basic.timeframe1d': '1 Day',
- 'signal-robot.basic.autoNameSuggestion': '{symbol} Signal Robot',
- 'signal-robot.entry.alert': 'Trigger entry signal when all conditions below are met',
- 'signal-robot.entry.condition': 'Condition {index}',
- 'signal-robot.entry.indicator': 'Indicator',
- 'signal-robot.entry.indicatorSupertrend': 'SuperTrend',
- 'signal-robot.entry.indicatorEma': 'EMA (Exponential Moving Average)',
- 'signal-robot.entry.indicatorRsi': 'RSI (Relative Strength Index)',
- 'signal-robot.entry.indicatorMacd': 'MACD',
- 'signal-robot.entry.indicatorBollinger': 'Bollinger Bands',
- 'signal-robot.entry.atrPeriod': 'ATR Period',
- 'signal-robot.entry.multiplier': 'Multiplier',
- 'signal-robot.entry.triggerSignal': 'Trigger Signal',
- 'signal-robot.entry.signalTrendBullish': 'Trend Bullish',
- 'signal-robot.entry.signalTrendBearish': 'Trend Bearish',
- 'signal-robot.entry.signalIsUptrend': 'Is Uptrend',
- 'signal-robot.entry.signalIsDowntrend': 'Is Downtrend',
- 'signal-robot.entry.period': 'Period',
- 'signal-robot.entry.compareCondition': 'Compare Condition',
- 'signal-robot.entry.priceAbove': 'Price > EMA (Price Above)',
- 'signal-robot.entry.priceBelow': 'Price < EMA (Price Below)',
- 'signal-robot.entry.crossUp': 'Price Crosses Above EMA (Golden Cross)',
- 'signal-robot.entry.crossDown': 'Price Crosses Below EMA (Death Cross)',
- 'signal-robot.entry.compare': 'Compare',
- 'signal-robot.entry.greaterThan': 'Greater Than',
- 'signal-robot.entry.lessThan': 'Less Than',
- 'signal-robot.entry.crossUpShort': 'Cross Up',
- 'signal-robot.entry.crossDownShort': 'Cross Down',
- 'signal-robot.entry.threshold': 'Threshold',
- 'signal-robot.entry.selectIndicator': 'Please select an indicator to configure parameters',
- 'signal-robot.entry.addCondition': 'Add Condition',
- 'signal-robot.position.alert': 'Configure initial position size, leverage and pyramiding rules',
- 'signal-robot.position.basicTitle': 'Basic Position Management',
- 'signal-robot.position.initialSize': 'Initial Size (Capital %)',
- 'signal-robot.position.initialSizeHint': 'Recommended 5% - 20%',
- 'signal-robot.position.leverage': 'Leverage',
- 'signal-robot.position.leverageHint': 'Please ensure your exchange account supports this leverage',
- 'signal-robot.position.maxPyramiding': 'Max Pyramiding Times',
- 'signal-robot.position.maxPyramidingHint': '0 means no pyramiding',
- 'signal-robot.position.pyramidingTitle': 'Pyramiding Rules',
- 'signal-robot.position.pyramidingEnabled': 'Enabled',
- 'signal-robot.position.pyramidingDisabled': 'Disabled',
- 'signal-robot.position.pyramidingCondition': 'Pyramiding Trigger Condition',
- 'signal-robot.position.priceRisePct': 'Price Rises (Long) / Falls (Short)',
- 'signal-robot.position.profitPct': 'Profit Reaches',
- 'signal-robot.position.triggerThreshold': 'Trigger Threshold (%)',
- 'signal-robot.position.triggerThresholdHint': 'e.g. 3%: add position once every 3% rise',
- 'signal-robot.position.addSize': 'Single Add Size (Capital %)',
- 'signal-robot.position.pyramidingDisabledHint': 'Pyramiding disabled, only initial position will be executed',
- 'signal-robot.risk.alert': 'Configure take profit, stop loss and exit rules',
- 'signal-robot.risk.stopLossTitle': 'Stop Loss',
- 'signal-robot.risk.stopLossEnabled': 'Enabled',
- 'signal-robot.risk.stopLossDisabled': 'Disabled',
- 'signal-robot.risk.stopLossType': 'Stop Loss Type',
- 'signal-robot.risk.stopLossFixedPct': 'Fixed Percentage',
- 'signal-robot.risk.stopLossAtrMultiplier': 'ATR Multiplier',
- 'signal-robot.risk.stopLossValue': 'Value',
- 'signal-robot.risk.stopLossFixedHint': 'e.g. 2%: stop loss when loss reaches 2%',
- 'signal-robot.risk.stopLossAtrHint': 'e.g. 2.0: stop loss when price touches ATR*2.0',
- 'signal-robot.risk.stopLossDisabledHint': 'Stop loss disabled (high risk)',
- 'signal-robot.risk.trailingStopTitle': 'Trailing Stop',
- 'signal-robot.risk.activationProfit': 'Activation Profit (%)',
- 'signal-robot.risk.activationProfitHint': 'Start trailing when profit reaches this level',
- 'signal-robot.risk.callbackPct': 'Callback (%)',
- 'signal-robot.risk.callbackPctHint': 'Trigger take profit when price falls from peak by this percentage',
- 'signal-robot.risk.trailingStopDisabledHint': 'Trailing stop disabled',
- 'signal-robot.risk.otherExitTitle': 'Other Exit Rules',
- 'signal-robot.risk.signalExit': 'Allow Signal Exit',
- 'signal-robot.risk.signalExitHint': 'Close position immediately when reverse signal appears (e.g. close long when short signal appears)',
- 'signal-robot.notify.alert': 'Configure notification methods when signal is triggered',
- 'signal-robot.notify.channelTitle': 'Notification Channels',
- 'signal-robot.notify.discordWebhook': 'Discord Webhook',
- 'signal-robot.notify.genericWebhook': 'Generic Webhook',
- 'signal-robot.notify.webhookUrl': 'Webhook URL',
- 'signal-robot.notify.webhookUrlPlaceholder': 'https://example.com/webhook',
- 'signal-robot.notify.discordUrl': 'Discord URL',
- 'signal-robot.notify.discordUrlPlaceholder': 'https://discord.com/api/webhooks/...',
- 'signal-robot.operator.greaterThan': 'Greater Than',
- 'signal-robot.operator.lessThan': 'Less Than',
- 'signal-robot.operator.equal': 'Equal',
- 'signal-robot.operator.goldenCross': 'Golden Cross',
- 'signal-robot.operator.deathCross': 'Death Cross',
- 'signal-robot.operator.increaseBy': 'Increase By',
- 'signal-robot.operator.decreaseBy': 'Decrease By',
- 'signal-robot.indicator.price': 'Price',
- 'signal-robot.indicator.rsi': 'RSI',
- 'signal-robot.indicator.kdjK': 'KDJ(K)',
- 'signal-robot.indicator.kdjJ': 'KDJ(J)',
- 'signal-robot.indicator.macd': 'MACD',
- 'signal-robot.indicator.macdHist': 'MACD Histogram',
- 'signal-robot.indicator.bollingerUp': 'Bollinger Upper',
- 'signal-robot.indicator.bollingerLow': 'Bollinger Lower',
- 'signal-robot.indicator.volume': 'Volume',
- 'signal-robot.indicator.changePct1h': '1H Change %',
- 'signal-robot.indicator.changePct24h': '24H Change %',
- 'signal-robot.indicator.signalLine': 'Signal Line',
-
- // Settings (Memory/Reflection)
- 'settings.group.agent_memory': 'Mรฉmoire/Rรฉflexion',
- 'settings.group.reflection_worker': 'Worker de vรฉrification de rรฉflexion automatique',
- 'settings.field.ENABLE_AGENT_MEMORY': 'Activer la mรฉmoire de lโagent',
- 'settings.field.AGENT_MEMORY_ENABLE_VECTOR': 'Activer la recherche vectorielle (local)',
- 'settings.field.AGENT_MEMORY_EMBEDDING_DIM': 'Dimension dโembedding',
- 'settings.field.AGENT_MEMORY_TOP_K': 'Nombre Top-K',
- 'settings.field.AGENT_MEMORY_CANDIDATE_LIMIT': 'Taille de la fenรชtre de candidats',
- 'settings.field.AGENT_MEMORY_HALF_LIFE_DAYS': 'Demi-vie de dรฉcroissance temporelle (jours)',
- 'settings.field.AGENT_MEMORY_W_SIM': 'Poids de similaritรฉ',
- 'settings.field.AGENT_MEMORY_W_RECENCY': 'Poids de rรฉcence',
- 'settings.field.AGENT_MEMORY_W_RETURNS': 'Poids des rendements',
- 'settings.field.ENABLE_REFLECTION_WORKER': 'Activer la vรฉrification automatique',
- 'settings.field.REFLECTION_WORKER_INTERVAL_SEC': 'Intervalle de vรฉrification (s)',
-
- // Profile - Notification Settings (Paramรจtres de notification)
- 'profile.notifications.title': 'Paramรจtres de notification',
- 'profile.notifications.hint': 'Configurez vos mรฉthodes de notification par dรฉfaut, utilisรฉes automatiquement lors de la crรฉation de surveillances et alertes',
- 'profile.notifications.defaultChannels': 'Canaux de notification par dรฉfaut',
- 'profile.notifications.browser': 'Notification dans l\'app',
- 'profile.notifications.email': 'E-mail',
- 'profile.notifications.phone': 'SMS',
- 'profile.notifications.telegramBotToken': 'Token du Bot Telegram',
- 'profile.notifications.telegramBotTokenPlaceholder': 'Entrez votre Token Bot Telegram',
- 'profile.notifications.telegramBotTokenHint': 'Crรฉez un bot via @BotFather pour obtenir le Token',
- 'profile.notifications.telegramChatId': 'Chat ID Telegram',
- 'profile.notifications.telegramPlaceholder': 'Entrez votre Chat ID Telegram (ex: 123456789)',
- 'profile.notifications.telegramHint': 'Envoyez /start ร @userinfobot pour obtenir votre Chat ID',
- 'profile.notifications.notifyEmail': 'E-mail de notification',
- 'profile.notifications.emailPlaceholder': 'Adresse e-mail pour recevoir les notifications',
- 'profile.notifications.emailHint': 'Utilise l\'e-mail du compte par dรฉfaut, vous pouvez en dรฉfinir un autre',
- 'profile.notifications.phonePlaceholder': 'Entrez le numรฉro de tรฉlรฉphone (ex: +33612345678)',
- 'profile.notifications.phoneHint': 'L\'administrateur doit configurer le service Twilio',
- 'profile.notifications.discordWebhook': 'Webhook Discord',
- 'profile.notifications.discordPlaceholder': 'https://discord.com/api/webhooks/...',
- 'profile.notifications.discordHint': 'Crรฉez un Webhook dans les paramรจtres du serveur Discord',
- 'profile.notifications.webhookUrl': 'URL Webhook',
- 'profile.notifications.webhookPlaceholder': 'https://your-server.com/webhook',
- 'profile.notifications.webhookHint': 'URL Webhook personnalisรฉe, notifications envoyรฉes via POST JSON',
- 'profile.notifications.webhookToken': 'Token Webhook (Optionnel)',
- 'profile.notifications.webhookTokenPlaceholder': 'Bearer Token pour l\'authentification',
- 'profile.notifications.webhookTokenHint': 'Envoyรฉ comme Authorization: Bearer Token au Webhook',
- 'profile.notifications.testBtn': 'Envoyer une notification test',
- 'profile.notifications.saveSuccess': 'Paramรจtres de notification enregistrรฉs',
- 'profile.notifications.selectChannel': 'Veuillez sรฉlectionner au moins un canal de notification',
- 'profile.notifications.fillTelegramToken': 'Veuillez remplir le Token Bot Telegram',
- 'profile.notifications.fillTelegram': 'Veuillez remplir le Chat ID Telegram',
- 'profile.notifications.fillEmail': 'Veuillez remplir l\'e-mail de notification',
- 'profile.notifications.testSent': 'Notification test envoyรฉe, vรฉrifiez vos canaux de notification'
-}
-
-export default {
- ...components,
- ...locale
-}
diff --git a/quantdinger_vue/src/locales/lang/ja-JP.js b/quantdinger_vue/src/locales/lang/ja-JP.js
deleted file mode 100644
index 7daf1fb..0000000
--- a/quantdinger_vue/src/locales/lang/ja-JP.js
+++ /dev/null
@@ -1,1827 +0,0 @@
-import antdJaJP from 'ant-design-vue/es/locale-provider/ja_JP'
-import momentJA from 'moment/locale/ja'
-
-const components = {
- antLocale: antdJaJP,
- momentName: 'ja',
- momentLocale: momentJA
-}
-
-const locale = {
- 'submit': '้ไฟกใใ',
- 'save': 'ไฟๅญใใ',
- 'submit.ok': '้ไฟกๆๅ',
- 'save.ok': 'ๆญฃๅธธใซไฟๅญใใใพใใ',
- 'menu.welcome': 'ใใใใ',
- 'menu.home': 'ใใผใ ใใผใธ',
- 'menu.dashboard': 'ใใใทใฅใใผใ',
- 'menu.dashboard.indicator': 'ๆๆจๅๆ',
- 'menu.dashboard.community': 'ใคใณใธใฑใผใฟใผใณใใฅใใใฃ',
- 'menu.dashboard.analysis': 'AIๅๆ',
- 'menu.dashboard.tradingAssistant': 'ๅๅผใขใทในใฟใณใ',
- 'menu.dashboard.aiTradingAssistant': 'AIๅๅผใขใทในใฟใณใ',
- 'menu.dashboard.signalRobot': 'ใทใฐใใซใญใใใ',
- 'menu.dashboard.monitor': 'ใขใใฟใชใณใฐใใผใธ',
- 'menu.dashboard.workplace': 'ไฝๆฅญๅฐ',
- 'menu.form': 'ใใฉใผใ ใใผใธ',
- 'menu.form.basic-form': 'ๅบๆฌๅฝข',
- 'menu.form.step-form': 'ในใใใใใคในใใใใใฉใผใ ',
- 'menu.form.step-form.info': 'ในใใใใใคในใใใใใฉใผใ ๏ผ่ปข้ๆ
ๅ ฑใ่จๅ
ฅ๏ผ',
- 'menu.form.step-form.confirm': 'ในใใใใใคในใใใใใฉใผใ ๏ผๆฏ่พผๆ
ๅ ฑใฎ็ขบ่ช๏ผ',
- 'menu.form.step-form.result': 'ในใใใใใคในใใใใฎใใฉใผใ ๏ผๅฎไบ๏ผ',
- 'menu.form.advanced-form': '้ซๅบฆใชใใฉใผใ ',
- 'menu.list': 'ไธ่ฆงใใผใธ',
- 'menu.list.table-list': 'ใๅใๅใใใใฉใผใ ',
- 'menu.list.basic-list': '่ฆๆ ผไธ่ฆง',
- 'menu.list.card-list': 'ใซใผใใชในใ',
- 'menu.list.search-list': 'ๆค็ดขใชในใ',
- 'menu.list.search-list.articles': 'ๆค็ดขใชในใ๏ผ่จไบ๏ผ',
- 'menu.list.search-list.projects': 'ๆค็ดขใชในใ๏ผใใญใธใงใฏใ๏ผ',
- 'menu.list.search-list.applications': 'ๆค็ดขใชในใ๏ผใขใใช๏ผ',
- 'menu.profile': '่ฉณ็ดฐใใผใธ',
- 'menu.profile.basic': 'ๅบๆฌ่ฉณ็ดฐใใผใธ',
- 'menu.profile.advanced': '่ฉณ็ดฐใใผใธ',
- 'menu.result': '็ตๆใใผใธ',
- 'menu.result.success': 'ๆๅใใผใธ',
- 'menu.result.fail': 'ๅคฑๆใใผใธ',
- 'menu.exception': 'ไพๅคใใผใธ',
- 'menu.exception.not-permission': '403',
- 'menu.exception.not-find': '404',
- 'menu.exception.server-error': '500',
- 'menu.exception.trigger': 'ใใชใฌใผใจใฉใผ',
- 'menu.account': 'ๅไบบใใผใธ',
- 'menu.account.center': 'ใใผใฝใใซใปใณใฟใผ',
- 'menu.account.settings': 'ๅไบบ่จญๅฎ',
- 'menu.account.trigger': 'ใใชใฌใผใจใฉใผ',
- 'menu.account.logout': 'ใญใฐใขใฆใ',
- 'menu.wallet': '็งใฎ่ฒกๅธ',
- 'menu.docs': 'ใใญใฅใกใณใใปใณใฟใผ',
- 'menu.docs.detail': 'ๆๆธใฎ่ฉณ็ดฐ',
- 'menu.header.refreshPage': 'ใใผใธใๆดๆฐใใ',
- 'menu.invite.friends': 'ๅ้ใๆๅพ
ใใ',
- 'app.setting.pagestyle': 'ๅ
จไฝ็ใชในใฟใคใซ่จญๅฎ',
- 'app.setting.pagestyle.light': 'ๆใใใกใใฅใผในใฟใคใซ',
- 'app.setting.pagestyle.dark': 'ใใผใฏใกใใฅใผในใฟใคใซ',
- 'app.setting.pagestyle.realdark': 'ใใผใฏใขใผใ',
- 'app.setting.themecolor': 'ใใผใใซใฉใผ',
- 'app.setting.navigationmode': 'ใใใฒใผใทใงใณใขใผใ',
- 'app.setting.sidemenu.nav': 'ใตใคใใใผใฎใใใฒใผใทใงใณ',
- 'app.setting.topmenu.nav': 'ใใใใใผใฎใใใฒใผใทใงใณ',
- 'app.setting.content-width': 'ใณใณใใณใ้ ๅใฎๅน
',
- 'app.setting.content-width.tooltip': 'ใใฎ่จญๅฎใฏใ[ใใใใใผใใใฒใผใทใงใณ]ๆใฎใฟๆๅนใงใใ',
- 'app.setting.content-width.fixed': 'ไฟฎๆญฃๆธใฟ',
- 'app.setting.content-width.fluid': 'ในใใชใผใใณใฐ',
- 'app.setting.fixedheader': 'ๅบๅฎใใใใผ',
- 'app.setting.fixedheader.tooltip': 'ๅบๅฎใใใใผๆใซ่จญๅฎๅฏ่ฝ',
- 'app.setting.autoHideHeader': 'ในใฏใญใผใซๆใซใใใใผใ้่กจ็คบใซใใ',
- 'app.setting.fixedsidebar': 'ใตใคใใกใใฅใผใไฟฎๆญฃ',
- 'app.setting.sidemenu': 'ใตใคใใกใใฅใผใฎใฌใคใขใฆใ',
- 'app.setting.topmenu': 'ใใใใกใใฅใผใฎใฌใคใขใฆใ',
- 'app.setting.othersettings': 'ใใฎไปใฎ่จญๅฎ',
- 'app.setting.weakmode': 'ใซใฉใผใฆใฃใผใฏใในใขใผใ',
- 'app.setting.multitab': 'ใใซใใฟใใขใผใ',
- 'app.setting.copy': '่จญๅฎใใณใใผใใ',
- 'app.setting.loading': 'ใใผใใ่ชญใฟ่พผใฟไธญ',
- 'app.setting.copyinfo': '่จญๅฎใๆญฃๅธธใซใณใใผใใใพใใ src/config/defaultSettings.js',
- 'app.setting.copy.success': 'ใณใใผๅฎไบ',
- 'app.setting.copy.fail': 'ใณใใผใซๅคฑๆใใพใใ',
- 'app.setting.theme.switching': 'ใใผใๅคๆด๏ผ',
- 'app.setting.production.hint': 'ๆงๆใใผใฏ้็บ็ฐๅขใงใฎใใฌใใฅใผใซใฎใฟไฝฟ็จใใใ้็จ็ฐๅขใงใฏ่กจ็คบใใใพใใใ ๆงๆใใกใคใซใๆๅใงใณใใผใใฆๅคๆดใใฆใใ ใใใ',
- 'app.setting.themecolor.daybreak': 'ใใผใณใใซใผ๏ผใใใฉใซใ๏ผ',
- 'app.setting.themecolor.dust': 'ๅคๆฎใ',
- 'app.setting.themecolor.volcano': '็ซๅฑฑ',
- 'app.setting.themecolor.sunset': 'ๆฅๆฒก',
- 'app.setting.themecolor.cyan': 'ๆๆธ
',
- 'app.setting.themecolor.green': 'ใชใผใญใฉใฐใชใผใณ',
- 'app.setting.themecolor.geekblue': 'ใชใฟใฏใใซใผ',
- 'app.setting.themecolor.purple': 'ใธใฃใณใปใธใผ',
- 'app.setting.tooltip': 'ใใผใธ่จญๅฎ',
- 'user.login.userName': 'ใฆใผใถใผๅ',
- 'user.login.password': 'ใในใฏใผใ',
- 'user.login.username.placeholder': 'ใขใซใฆใณใ: ็ฎก็่
',
- 'user.login.password.placeholder': 'ใในใฏใผใ: admin ใพใใฏ ant.design',
- 'user.login.message-invalid-credentials': 'ใญใฐใคใณใซๅคฑๆใใพใใใใกใผใซใขใใฌในใจ็ขบ่ชใณใผใใ็ขบ่ชใใฆใใ ใใ',
- 'user.login.message-invalid-verification-code': '่ช่จผใณใผใใจใฉใผ',
- 'user.login.tab-login-credentials': 'ใขใซใฆใณใใในใฏใผใใญใฐใคใณ',
- 'user.login.tab-login-email': 'ใกใผใซใญใฐใคใณ',
- 'user.login.tab-login-mobile': 'ๆบๅธฏ้ป่ฉฑ็ชๅทใญใฐใคใณ',
- 'user.login.captcha.placeholder': 'ใฐใฉใใฃใใฏ่ช่จผใณใผใใๅ
ฅๅใใฆใใ ใใ',
- 'user.login.mobile.placeholder': 'ๆบๅธฏ้ป่ฉฑ็ชๅท',
- 'user.login.mobile.verification-code.placeholder': '่ช่จผใณใผใ',
- 'user.login.email.placeholder': 'ใกใผใซใขใใฌในใๅ
ฅๅใใฆใใ ใใ',
- 'user.login.email.verification-code.placeholder': '็ขบ่ชใณใผใใๅ
ฅๅใใฆใใ ใใ',
- 'user.login.email.sending': '่ช่จผใณใผใใ้ไฟกใใใฆใใพใ...',
- 'user.login.email.send-success-title': 'ใใณใ',
- 'user.login.email.send-success': '็ขบ่ชใณใผใใฏๆญฃๅธธใซ้ไฟกใใใพใใใใกใผใซใ็ขบ่ชใใฆใใ ใใ',
- 'user.login.sms.send-success': '็ขบ่ชใณใผใใๆญฃๅธธใซ้ไฟกใใใพใใใใใญในใ ใกใใปใผใธใ็ขบ่ชใใฆใใ ใใใ',
- 'user.login.remember-me': '่ชๅใญใฐใคใณ',
- 'user.login.forgot-password': 'ใในใฏใผใใๅฟใใๅ ดๅ',
- 'user.login.sign-in-with': 'ใใฎไปใฎใญใฐใคใณๆนๆณ',
- 'user.login.signup': 'ใขใซใฆใณใใ็ป้ฒใใ',
- 'user.login.login': 'ใญใฐใคใณ',
- 'user.register.register': '็ป้ฒใใ',
- 'user.register.email.placeholder': '้ปๅญใกใผใซ',
- 'user.register.password.placeholder': '6ๆๅญไปฅไธใๅ
ฅๅใใฆใใ ใใใ ๆจๆธฌใใใใใใในใฏใผใใฏไฝฟ็จใใชใใงใใ ใใใ',
- 'user.register.password.popover-message': '6ๆๅญไปฅไธใๅ
ฅๅใใฆใใ ใใใ ๆจๆธฌใใใใใใในใฏใผใใฏไฝฟ็จใใชใใงใใ ใใใ',
- 'user.register.confirm-password.placeholder': 'ใในใฏใผใใฎ็ขบ่ช',
- 'user.register.get-verification-code': '็ขบ่ชใณใผใใๅๅพใใ',
- 'user.register.sign-in': 'ๆขๅญใฎใขใซใฆใณใใไฝฟ็จใใฆใญใฐใคใณใใ',
- 'user.register-result.msg': 'ใใชใใฎใขใซใฆใณใ: {email} ็ป้ฒใๆๅใใพใใ',
- 'user.register-result.activation-email': 'ใขใฏใใฃใใผใทใงใณ้ปๅญใกใผใซใฏใกใผใซใใใฏในใซ้ไฟกใใใ24 ๆ้ๆๅนใงใใ ใใใซใกใผใซใซใญใฐใคใณใใใกใผใซๅ
ใฎใชใณใฏใใฏใชใใฏใใฆใขใซใฆใณใใใขใฏใใฃใใซใใฆใใ ใใใ',
- 'user.register-result.back-home': 'ใใผใ ใใผใธใซๆปใ',
- 'user.register-result.view-mailbox': 'ใกใผใซใใใฏในใ็ขบ่ชใใฆใใ ใใ',
- 'user.email.required': 'ใกใผใซใขใใฌในใๅ
ฅๅใใฆใใ ใใ๏ผ',
- 'user.email.wrong-format': 'ใกใผใซใขใใฌในใฎๅฝขๅผใ้้ใฃใฆใใพใ!',
- 'user.userName.required': 'ใขใซใฆใณใๅใพใใฏใกใผใซใขใใฌในใๅ
ฅๅใใฆใใ ใใ',
- 'user.password.required': 'ใในใฏใผใใๅ
ฅๅใใฆใใ ใใใ',
- 'user.password.twice.msg': '2 ๅๅ
ฅๅใใใในใฏใผใใไธ่ดใใพใใใ',
- 'user.password.strength.msg': 'ใในใฏใผใใฎๅผทๅบฆใๅๅใงใฏใใใพใใ',
- 'user.password.strength.strong': 'ๅผทใ: ๅผทใ',
- 'user.password.strength.medium': 'ๅผทใ: ไธญ',
- 'user.password.strength.low': 'ๅผทๅบฆ: ไฝใ',
- 'user.password.strength.short': 'ๅผทใ๏ผ็ญใใใ',
- 'user.confirm-password.required': 'ใในใฏใผใใ็ขบ่ชใใฆใใ ใใใ',
- 'user.phone-number.required': 'ๆญฃใใๆบๅธฏ้ป่ฉฑ็ชๅทใๅ
ฅๅใใฆใใ ใใ',
- 'user.phone-number.wrong-format': 'ๆบๅธฏ้ป่ฉฑ็ชๅทใฎๅฝขๅผใ้้ใฃใฆใใพใใ',
- 'user.verification-code.required': '็ขบ่ชใณใผใใๅ
ฅๅใใฆใใ ใใใ',
- 'user.captcha.required': 'ใฐใฉใใฃใใฏ่ช่จผใณใผใใๅ
ฅๅใใฆใใ ใใใ',
- 'user.login.infos': 'QuantDingerใฏAIใใซใใจใผใธใงใณใๆ ชๅๆ่ฃๅฉใใผใซใงใใใ่จผๅธๆ่ณใณใณใตใซใใฃใณใฐ่ณๆ ผใฏใใใใพใใใ ใใฉใใใใฉใผใ ๅ
ใฎใในใฆใฎๅๆ็ตๆใในใณใขใๅ่ๆ่ฆใฏ้ๅปใฎใใผใฟใซๅบใฅใใฆAIใซใใฃใฆ่ชๅ็ใซ็ๆใใใๅญฆ็ฟใ็ ็ฉถใๆ่กไบคๆตใฎใฟใซไฝฟ็จใใใๆ่ณใขใใใคในใๆๆๆฑบๅฎใฎๅบ็คใๆงๆใใใใฎใงใฏใใใพใใใ ๆ ชๅผๆ่ณใซใฏๅธๅ ดใชในใฏใๆตๅๆงใชในใฏใๆฟ็ญใชในใฏ็ญใฎๆงใ
ใชใชในใฏใไผดใใๅ
ๆฌใๅฒใ่พผใๅฏ่ฝๆงใใใใพใใ ใฆใผใถใผใฏ่ช่บซใฎใชในใฏ่จฑๅฎนๅบฆใซๅบใฅใใฆ็ฌ็ซใใๆฑบๅฎใ่กใๅฟ
่ฆใใใใๆฌใใผใซใฎไฝฟ็จใใ็ใใๆ่ณ่กๅใใใณ็ตๆใฏใฆใผใถใผใ่ฒ ๆ
ใใใใฎใจใใพใใ ๅธๅ ดใซใฏใชในใฏใใใใๆ่ณใฏๆ
้ใซใชใๅฟ
่ฆใใใใพใใ',
- 'user.login.tab-login-web3': 'Web3ใญใฐใคใณ',
- 'user.login.web3.tip': 'ใฆใฉใฌใใใไฝฟ็จใใ็ฝฒๅใญใฐใคใณ',
- 'user.login.web3.connect': 'ใฆใฉใฌใใใซๆฅ็ถใใฆใญใฐใคใณใใ',
- 'user.login.web3.no-wallet': 'ใฆใฉใฌใใใๆคๅบใใใชใ',
- 'user.login.web3.no-address': 'ใฆใฉใฌใใใขใใฌในใๅๅพใงใใพใใใงใใ',
- 'user.login.web3.nonce-failed': 'ไนฑๆฐใฎๅๅพใซๅคฑๆใใพใใ',
- 'user.login.web3.verify-failed': '็ฝฒๅๆค่จผใซๅคฑๆใใพใใ',
- 'user.login.web3.success': 'ใญใฐใคใณๆๅ',
- 'user.login.web3.failed': 'ใฆใฉใฌใใใธใฎใญใฐใคใณใซๅคฑๆใใพใใ',
- 'nav.no_wallet': 'ใฆใฉใฌใใใๆคๅบใใใชใ',
- 'nav.copy': 'ใณใใผ',
- 'nav.copy_success': 'ๆญฃๅธธใซใณใใผใใใพใใ',
- 'user.login.oauth.google': 'Googleใงใตใคใณใคใณ',
- 'user.login.oauth.github': 'GitHub ใงใตใคใณใคใณใใ',
- 'user.login.oauth.loading': '่ช่จผใใผใธใซใชใใคใฌใฏใใใฆใใพใ...',
- 'user.login.oauth.failed': 'OAuthใญใฐใคใณใซๅคฑๆใใพใใ',
- 'user.login.oauth.get-url-failed': '่ช่จผใชใณใฏใฎๅๅพใซๅคฑๆใใพใใ',
- 'user.login.subtitle': 'ไธ็ๅธๅ ดใซๅฏพใใๅฎ้็ใชๆดๅฏใๆจ้ฒ',
- 'user.login.legal.title': 'ๆณ็ๅ
่ฒฌไบ้
',
- 'user.login.legal.view': 'ๆณ็ๅ
่ฒฌไบ้
ใ่กจ็คบ',
- 'user.login.legal.collapse': 'ๆณ็ๅ
่ฒฌไบ้
ใๆใใใใ',
- 'user.login.legal.agree': 'ๆณ็ๅ
่ฒฌไบ้
ใ่ชญใฟใๅๆใใพใ',
- 'user.login.legal.required': 'ใพใๆณ็ๅ
่ฒฌไบ้
ใ่ชญใใง็ขบ่ชใใฆใใ ใใ',
- 'user.login.legal.content': 'QuantDingerใฏAIใใซใใจใผใธใงใณใๆ ชๅๆ่ฃๅฉใใผใซใงใใใ่จผๅธๆ่ณใณใณใตใซใใฃใณใฐ่ณๆ ผใฏใใใใพใใใ ใใฉใใใใฉใผใ ๅ
ใฎใในใฆใฎๅๆ็ตๆใ่ฉไพกใๅ่ๆ่ฆใฏ้ๅปใฎใใผใฟใซๅบใฅใใฆAIใซใใฃใฆ่ชๅ็ใซ็ๆใใใๅญฆ็ฟใ็ ็ฉถใๆ่กไบคๆตใฎใฟใซไฝฟ็จใใใๆ่ณใขใใใคในใๆๆๆฑบๅฎใฎๅบ็คใๆงๆใใใใฎใงใฏใใใพใใใ ๆ ชๅผๆ่ณใซใฏๅธๅ ดใชในใฏใๆตๅๆงใชในใฏใๆฟ็ญใชในใฏ็ญใฎๆงใ
ใชใชในใฏใไผดใใๅ
ๆฌใๅฒใ่พผใๅฏ่ฝๆงใใใใพใใ ใฆใผใถใผใฏ่ช่บซใฎใชในใฏ่จฑๅฎนๅบฆใซๅบใฅใใฆ็ฌ็ซใใๆฑบๅฎใ่กใๅฟ
่ฆใใใใๆฌใใผใซใฎไฝฟ็จใใ็ใใๆ่ณ่กๅใใใณ็ตๆใฏใฆใผใถใผใ่ฒ ๆ
ใใใใฎใจใใพใใ ๅธๅ ดใซใฏใชในใฏใใใใๆ่ณใฏๆ
้ใซใชใๅฟ
่ฆใใใใพใใ',
- 'user.login.privacy.title': 'ใฆใผใถใผใใฉใคใใทใผใใชใทใผ',
- 'user.login.privacy.view': 'ใฆใผใถใผใฎใใฉใคใใทใผ ใใชใทใผใ่กจ็คบใใ',
- 'user.login.privacy.collapse': 'ใฆใผใถใผใฎใใฉใคใใทใผ่ฆ็ดใ้ใใ',
- 'user.login.privacy.content': '็งใใกใฏใใชใใฎใใฉใคใใทใผใจใใผใฟไฟ่ญทใๅคงๅใซใใฆใใพใใ 1) ๅ้็ฏๅฒ๏ผๆฉ่ฝใฎๅฎ็พใซๅฟ
่ฆใชๆ
ๅ ฑ๏ผใกใผใซใขใใฌในใๆบๅธฏ้ป่ฉฑ็ชๅทใๅธๅคๅฑ็ชใWeb3ใฆใฉใฌใใใขใใฌในใชใฉ๏ผใจๅฟ
่ฆใชใญใฐใ็ซฏๆซๆ
ๅ ฑใฎใฟใๅ้ใใพใใ 2) ๅฉ็จ็ฎ็๏ผใขใซใฆใณใใธใฎใญใฐใคใณใใใณใปใญใฅใชใใฃ็ขบ่ชใใตใผใในๆฉ่ฝใฎๆไพใใใฉใใซใทใฅใผใใฃใณใฐใใใณใณใณใใฉใคใขใณใน่ฆไปถใฎใใใ 3) ไฟ็ฎกใจใปใญใฅใชใใฃ: ใใผใฟใฏๆๅทๅใใใฆไฟ็ฎกใใใไธๆญฃใชใขใฏใปในใ้็คบใๆๅคฑใ้ฒใใใใซๅฟ
่ฆใช่จฑๅฏใจใขใฏใปในๅถๅพกๆๆฎตใ่ฌใใใใพใใ 4) ็ฌฌไธ่
ใจใฎๅ
ฑๆ: ๆณไปคใง็พฉๅไปใใใใฆใใๅ ดๅใใพใใฏใตใผใในใฎๅฎ่กใซๅฟ
่ฆใชๅ ดๅใ้คใใใๅฎขๆงใฎๅไบบๆ
ๅ ฑใฏ็ฌฌไธ่
ใจๅ
ฑๆใใใใใจใฏใใใพใใใใตใผใใใผใใฃใฎใตใผใใน (ใฆใฉใฌใใใSMS ใตใผใในใใญใใคใใผใชใฉ) ใ้ขไธใใๅ ดๅใๆฉ่ฝใฎๅฎ่ฃ
ใซๅฟ
่ฆใชๆๅฐ้ใฎ็ฏๅฒใงใฎใฟๅฆ็ใใใพใใ 5) Cookie/ใญใผใซใซ ในใใฌใผใธ: ใญใฐใคใณ ในใใผใฟในใจๅฟ
่ฆใชใปใใทใงใณ็ถญๆ (ใใผใฏใณใPHPSESSID ใชใฉ) ใซไฝฟ็จใใใใใฉใฆใถใผใงใฏใชใขใพใใฏๅถ้ใงใใพใใ 6) ๅไบบใฎๆจฉๅฉ๏ผๆณไปคใซๅบใฅใใ็
งไผใ่จๆญฃใๅ้คใๅๆใฎๆคๅ็ญใ่กใๆจฉๅฉใ่กไฝฟใใใใจใใงใใพใใ 7) ๅคๆดใจ้็ฅ: ใใใใฎๆกไปถใๆดๆฐใใใใจใใใผใธไธใง็ฎ็ซใคใใใซ่กจ็คบใใใพใใ ใใฎใตใผใในใ็ถ็ถใใฆไฝฟ็จใใใใจใซใใใๆดๆฐใใใๅ
ๅฎนใ่ชญใฟใๅๆใใใใฎใจใฟใชใใใพใใ ๆฌ่ฆ็ดใพใใฏใใฎๆดๆฐใซๅๆใงใใชใๅ ดๅใฏใใตใผใในใฎไฝฟ็จใไธญๆญขใใๅฝ็คพใพใงใ้ฃ็ตกใใ ใใใ',
- 'account.basicInfo': 'ๅบๆฌๆ
ๅ ฑ',
- 'account.id': 'ใฆใผใถใผID',
- 'account.username': 'ใฆใผใถใผๅ',
- 'account.nickname': 'ใใใฏใใผใ ',
- 'account.email': '้ปๅญใกใผใซ',
- 'account.mobile': 'ๆบๅธฏ้ป่ฉฑ็ชๅท',
- 'account.web3address': 'ใฆใฉใฌใใใขใใฌใน',
- 'account.pid': '็ดนไป่
ID',
- 'account.level': 'ใฆใผใถใผใฌใใซ',
- 'account.money': 'ใใฉใณใน',
- 'account.qdtBalance': 'QDTใใฉใณใน',
- 'account.score': 'ใใคใณใ',
- 'account.createtime': '็ป้ฒๆ้',
- 'account.inviteLink': 'ๆๅพ
ใชใณใฏ',
- 'account.recharge': 'ใชใใฃใผใธ',
- 'account.rechargeTip': 'WeChat ใพใใฏ Alipay ใไฝฟ็จใใฆใไปฅไธใฎ QR ใณใผใใในใญใฃใณใใฆใใฃใผใธใใฆใใ ใใใ',
- 'account.qrCodePlaceholder': 'QR ใณใผใ ใใฌใผในใใซใใผ (ใจใใฅใฌใผใทใงใณ)',
- 'account.rechargeAmount': 'ใใฃใผใธ้้ก',
- 'account.enterAmount': 'ใใฃใผใธ้้กใๅ
ฅๅใใฆใใ ใใ',
- 'account.rechargeHint': 'ๆไฝๅ
ฅ้้ก: 1 QDT',
- 'account.confirmRecharge': 'ใชใใฃใผใธใ็ขบ่ชใใ',
- 'account.enterValidAmount': 'ๆๅนใชใชใใฃใผใธ้้กใๅ
ฅๅใใฆใใ ใใ',
- 'account.rechargeSuccess': 'ใชใใฃใผใธๆๅ๏ผ {้้ก} QDT ใๅ
ฅ้ใใพใใ',
- 'account.settings.menuMap.basic': 'ๅบๆฌ่จญๅฎ',
- 'account.settings.menuMap.security': 'ใปใญใฅใชใใฃ่จญๅฎ',
- 'account.settings.menuMap.notification': 'ๆฐ็ใกใใปใผใธ้็ฅ',
- 'account.settings.menuMap.moneyLog': 'ใใกใณใใฎ่ฉณ็ดฐ',
- 'account.moneyLog.empty': 'ใใกใณใใฎ่ฉณ็ดฐใฏใพใ ใใใพใใ',
- 'account.moneyLog.total': 'ๅ่จ {total} ใฌใณใผใ',
- 'account.moneyLog.type.purchase': '่ณผๅ
ฅใคใณใธใฑใผใฟใผ',
- 'account.moneyLog.type.recharge': 'ใชใใฃใผใธ',
- 'account.moneyLog.type.refund': 'ๆใๆปใ',
- 'account.moneyLog.type.reward': 'ๅ ฑ้
ฌ',
- 'account.moneyLog.type.income': 'ๆๆจๅๅ
ฅ',
- 'account.moneyLog.type.commission': 'ใใฉใใใใฉใผใ ๆๆฐๆ',
- 'wallet.balance': 'QDTใใฉใณใน',
- 'wallet.recharge': 'ใชใใฃใผใธ',
- 'wallet.withdraw': '็พ้ใๅผใๅบใ',
- 'wallet.filter': 'ใใฃใซใฟใผ',
- 'wallet.reset': 'ใชใปใใ',
- 'wallet.totalRecharge': '็ดฏ็ฉใชใใฃใผใธ',
- 'wallet.totalWithdraw': '็ดฏ็ฉๅผใๅบใ้ก',
- 'wallet.totalIncome': '็ดฏ่จๅๅ
ฅ',
- 'wallet.records': 'ๅๅผ่จ้ฒใจ่ณ้ใฎ่ฉณ็ดฐ',
- 'wallet.tradingRecords': 'ๅๅผๅฑฅๆญด',
- 'wallet.moneyLog': 'ใใกใณใใฎ่ฉณ็ดฐ',
- 'wallet.rechargeTip': 'WeChat ใพใใฏ Alipay ใไฝฟ็จใใฆใไปฅไธใฎ QR ใณใผใใในใญใฃใณใใฆใใฃใผใธใใฆใใ ใใใ',
- 'wallet.qrCodePlaceholder': 'QR ใณใผใ ใใฌใผในใใซใใผ (ใจใใฅใฌใผใทใงใณ)',
- 'wallet.rechargeAmount': 'ใใฃใผใธ้้ก',
- 'wallet.enterAmount': 'ใใฃใผใธ้้กใๅ
ฅๅใใฆใใ ใใ',
- 'wallet.rechargeHint': 'ๆไฝๅ
ฅ้้ก: 1 QDT',
- 'wallet.confirmRecharge': 'ใชใใฃใผใธใ็ขบ่ชใใ',
- 'wallet.enterValidAmount': 'ๆๅนใชใชใใฃใผใธ้้กใๅ
ฅๅใใฆใใ ใใ',
- 'wallet.rechargeSuccess': 'ใชใใฃใผใธๆๅ๏ผ {้้ก} QDT ใๅ
ฅ้ใใพใใ',
- 'wallet.rechargeFailed': 'ๅๅ
้ปใซๅคฑๆใใพใใ',
- 'wallet.withdrawTip': 'ๅบ้้้กใจๅบ้ใขใใฌในใๅ
ฅๅใใฆใใ ใใ',
- 'wallet.withdrawAmount': 'ๅบ้้ก',
- 'wallet.enterWithdrawAmount': 'ๅบ้้กใๅ
ฅๅใใฆใใ ใใ',
- 'wallet.withdrawHint': 'ๆไฝๅบ้้ก: 1 QDT',
- 'wallet.withdrawAddress': 'ๅบ้ใขใใฌใน (ใชใใทใงใณ)',
- 'wallet.enterWithdrawAddress': 'ๅบ้ใขใใฌในใๅ
ฅๅใใฆใใ ใใ',
- 'wallet.confirmWithdraw': 'ๅบ้ใฎ็ขบ่ช',
- 'wallet.enterValidWithdrawAmount': 'ๆๅนใชๅบ้้กใๅ
ฅๅใใฆใใ ใใ',
- 'wallet.insufficientBalance': 'ๆฎ้ซไธ่ถณ',
- 'wallet.withdrawSuccess': 'ๅผใๅบใๆๅ๏ผ {้้ก} QDT ใๅผใๅบใใพใใ',
- 'wallet.withdrawFailed': 'ๅบ้ใซๅคฑๆใใพใใ',
- 'wallet.noTradingRecords': 'ใพใ ๅๅผ่จ้ฒใใใใพใใ',
- 'wallet.noMoneyLog': 'ใใกใณใใฎ่ฉณ็ดฐใฏใพใ ใใใพใใ',
- 'wallet.loadTradingRecordsFailed': 'ใใฉใณใถใฏใทใงใณใฌใณใผใใฎใญใผใใซๅคฑๆใใพใใ',
- 'wallet.loadMoneyLogFailed': 'ใใกใณใใฎ่ฉณ็ดฐใใญใผใใงใใพใใใงใใ',
- 'wallet.moneyLogTotal': 'ๅ่จ {total} ใฌใณใผใ',
- 'wallet.moneyLogTypeTitle': 'ใฟใคใ',
- 'wallet.moneyLogType.all': 'ๅ
จ็จฎ้ก',
- 'wallet.table.time': 'ๆ้',
- 'wallet.table.type': 'ใฟใคใ',
- 'wallet.table.price': 'ไพกๆ ผ',
- 'wallet.table.amount': 'ๆฐ้',
- 'wallet.table.money': '้้ก',
- 'wallet.table.balance': 'ใใฉใณใน',
- 'wallet.table.memo': 'ๅ่',
- 'wallet.table.value': 'ๅค',
- 'wallet.table.profit': 'ๆ็',
- 'wallet.table.commission': 'ๆๆฐๆ',
- 'wallet.table.total': 'ๅ่จ {total} ใฌใณใผใ',
- 'wallet.tradeType.buy': '่ฒทใ',
- 'wallet.tradeType.sell': 'ๅฃฒใ',
- 'wallet.tradeType.liquidation': 'ๅผทๅถๆธ
็ฎ',
- 'wallet.tradeType.openLong': '้ทใ้ใ',
- 'wallet.tradeType.addLong': 'ใฌใใใ',
- 'wallet.tradeType.closeLong': 'ใใณใใฅใช',
- 'wallet.tradeType.closeLongStop': 'ในใใใใญในใจใญใณใฐ',
- 'wallet.tradeType.closeLongProfit': 'ๅฉ็ใๅพใฆใใใซๅนณๆบๅใใ',
- 'wallet.tradeType.openShort': 'ใชใผใใณใทใงใผใ',
- 'wallet.tradeType.addShort': '็ญใ่ฟฝๅ ใใ',
- 'wallet.tradeType.closeShort': '็ฉบใฎ',
- 'wallet.tradeType.closeShortStop': 'ในใใใใญใน',
- 'wallet.tradeType.closeShortProfit': 'ๅฉ็ใ็ขบๅฎใใฆ็ฉบๅฃฒใใ็ตไบใใ',
- 'wallet.moneyLogType.purchase': '่ณผๅ
ฅใคใณใธใฑใผใฟใผ',
- 'wallet.moneyLogType.recharge': 'ใชใใฃใผใธ',
- 'wallet.moneyLogType.withdraw': '็พ้ใๅผใๅบใ',
- 'wallet.moneyLogType.refund': 'ๆใๆปใ',
- 'wallet.moneyLogType.reward': 'ๅ ฑ้
ฌ',
- 'wallet.moneyLogType.income': 'ๅๅ
ฅ',
- 'wallet.moneyLogType.commission': 'ๆๆฐๆ',
- 'wallet.web3Address.required': 'ๆๅใซ Web3 ใฆใฉใฌใใใฎใขใใฌในใๅ
ฅๅใใฆใใ ใใ',
- 'wallet.web3Address.requiredDescription': 'ใชใใฃใผใธใใๅใซใใชใใฃใผใธใๅใๅใใใใซ Web3 ใฆใฉใฌใใ ใขใใฌในใใใคใณใใใๅฟ
่ฆใใใใพใใ',
- 'wallet.web3Address.placeholder': 'Web3 ใฆใฉใฌใใใฎใขใใฌในใๅ
ฅๅใใฆใใ ใใ (0x ใงๅงใพใ)',
- 'wallet.web3Address.save': 'ใฆใฉใฌใใใขใใฌในใไฟๅญใใ',
- 'wallet.web3Address.saveSuccess': 'ใฆใฉใฌใใใขใใฌในใๆญฃๅธธใซไฟๅญใใใพใใ',
- 'wallet.web3Address.saveFailed': 'ใฆใฉใฌใใใขใใฌในใฎไฟๅญใซๅคฑๆใใพใใ',
- 'wallet.web3Address.invalidFormat': 'ๆๅนใช Web3 ใฆใฉใฌใใ ใขใใฌในใๅ
ฅๅใใฆใใ ใใ (ใคใผใตใชใขใ ๅฝขๅผ: 0x ใงๅงใพใ 42 ๆๅญใใพใใฏ TRC20 ๅฝขๅผ: T ใงๅงใพใ 34 ๆๅญ)',
- 'wallet.selectCoin': '้่ฒจใ้ธๆใใฆใใ ใใ',
- 'wallet.selectChain': '้ธๆใใงใผใณ',
- 'wallet.chain.eth': 'ใคใผใตใชใขใ (ERC20)',
- 'wallet.chain.trc20': 'TRC20',
- 'wallet.chain.bsc': 'BSC',
- 'wallet.targetQdtAmount': 'ๅผใๆใใใQDTใฎ้๏ผใชใใทใงใณ๏ผ',
- 'wallet.targetQdtAmount.placeholder': 'ๅผใๆใใใ QDT ใฎๆฐ้ใ็พๅจใฎ QDT ไพกๆ ผใๅ
ฅๅใใฆใใ ใใ: {price} USDT',
- 'wallet.targetQdtAmount.requiredUsdt': 'ใชใใฃใผใธใๅฟ
่ฆ: {amount} USDT',
- 'wallet.rechargeAddress': 'ใชใใฃใผใธใขใใฌใน',
- 'wallet.copyAddress': 'ใณใใผ',
- 'wallet.copySuccess': 'ใณใใผๆๅ๏ผ',
- 'wallet.copyFailed': 'ใณใใผใซๅคฑๆใใพใใใๆๅใงใณใใผใใฆใใ ใใ',
- 'wallet.rechargeAddressHint': 'ใใฎใขใใฌในใซ {coin} ใๅ
ฅ้ใใใซใฏใๅฟ
ใ {chain} ใไฝฟ็จใใฆใใ ใใใ',
- 'wallet.qdtPrice.loading': '่ชญใฟ่พผใฟไธญ...',
- 'wallet.rechargeTip.new': '้่ฒจใจใใงใผใณใ้ธๆใใไธใฎ QR ใณใผใใในใญใฃใณใใฆใชใใฃใผใธใใฆใใ ใใ',
- 'wallet.exchangeRate': '1 QDT โ {ใฌใผใ} USDT',
- 'wallet.withdrawableAmount': 'ๅฉ็จๅฏ่ฝใช็พ้ใฎ้',
- 'wallet.totalBalance': 'ๅ่จๆฎ้ซ',
- 'wallet.insufficientWithdrawable': 'ๅผใๅบใใใจใใงใใ็พ้ใฎ้ใไธ่ถณใใฆใใพใใ็พๅจๅบ้ใงใใ้้กใฏๆฌกใฎใจใใใงใ: {amount} QDT',
- 'wallet.withdrawAddressRequired': 'ๅบ้ใขใใฌในใๅ
ฅๅใใฆใใ ใใ',
- 'wallet.withdrawAddressHint': 'ใขใใฌในใๆญฃใใใใจใ็ขบ่ชใใฆใใ ใใใ้ไผๅพใฏๅใๆถใใใจใฏใงใใพใใใ',
- 'wallet.withdrawSubmitSuccess': 'ๅบ้็ณ่ซใๆญฃๅธธใซ้ไฟกใใใพใใใๅฏฉๆปใใๅพ
ใกใใ ใใ',
- 'menu.footer.contactUs': 'ใๅใๅใใ',
- 'menu.footer.getSupport': 'ใตใใผใใๅใใ',
- 'menu.footer.socialAccounts': 'ใฝใผใทใฃใซใขใซใฆใณใ',
- 'menu.footer.userAgreement': 'ใฆใผใถใผๅๆๆธ',
- 'menu.footer.privacyPolicy': 'ใใฉใคใใทใผใใชใทใผ',
- 'menu.footer.support': 'ใตใใผใ',
- 'menu.footer.featureRequest': 'ๆฉ่ฝใชใฏใจในใ',
- 'menu.footer.email': '้ปๅญใกใผใซ',
- 'menu.footer.liveChat': '24ๆ้ๅนดไธญ็กไผใฎใฉใคใใใฃใใ',
- 'dashboard.analysis.title': 'ๅคๆฌกๅ
ๅๆ',
- 'dashboard.analysis.subtitle': 'AIใๆดป็จใใ็ทๅ่ฒกๅๅๆใใฉใใใใฉใผใ ',
- 'dashboard.analysis.selectSymbol': 'ๅบ็คใจใชใใณใผใใ้ธๆใพใใฏๅ
ฅๅใใพใ',
- 'dashboard.analysis.selectModel': 'ใขใใซใ้ธๆใใฆใใ ใใ',
- 'dashboard.analysis.startAnalysis': 'ๅๆใ้ๅงใใ',
- 'dashboard.analysis.history': 'ๆญดๅฒ',
- 'dashboard.analysis.tab.overview': '็ทๅ็ใชๅๆ',
- 'dashboard.analysis.tab.fundamental': 'ๅบๆฌ',
- 'dashboard.analysis.tab.technical': 'ใใฏใใญใธใผ',
- 'dashboard.analysis.tab.news': 'ใใฅใผใน',
- 'dashboard.analysis.tab.sentiment': 'ๆๆ
',
- 'dashboard.analysis.tab.risk': 'ใชในใฏ',
- 'dashboard.analysis.tab.debate': '้ท็ญใฎ่ญฐ่ซ',
- 'dashboard.analysis.tab.decision': 'ๆ็ตๆฑบๅฎ',
- 'dashboard.analysis.empty.selectSymbol': 'ๅๆใ้ๅงใใใฟใผใฒใใใ้ธๆใใฆใใ ใใ',
- 'dashboard.analysis.empty.selectSymbolDesc': '็ฌ่ชใซ้ธๆใใ้ๆใชในใใใ้ธๆใใใใๅบ็คใจใชใใณใผใใๅ
ฅๅใใฆๅคๆฌกๅ
AI ๅๆใฌใใผใใๅๅพใใพใ',
- 'dashboard.analysis.empty.startAnalysis': 'ใๅๆ้ๅงใใใฟใณใใฏใชใใฏใใใจใๅคๆฌกๅ
ๅๆใๅฎ่กใใใพใใ',
- 'dashboard.analysis.empty.startAnalysisDesc': 'ใใกใณใใกใณใฟใซใบใใใฏใใญใธใผใใใฅใผในใใปใณใใกใณใใใชในใฏใชใฉใฎๅคๆฌกๅ
ใใ็ทๅ็ใชๅๆใๆไพใใพใใ',
- 'dashboard.analysis.empty.noData': '็พๅจใ{type} ใฎๅๆใใผใฟใฏใใใพใใใๆๅใซๅ
ๆฌ็ใชๅๆใ่กใฃใฆใใ ใใใ',
- 'dashboard.analysis.empty.noWatchlist': '็พๅจใ่ชไธป้ธๅฎ้ๆใฏใใใพใใ',
- 'dashboard.analysis.empty.noHistory': 'ใพใ ๅฑฅๆญดใใใใพใใ',
- 'dashboard.analysis.empty.watchlistHint': '็พๅจใ็ฌ่ชใซ้ธๆใใ้ๆใฏใใใพใใใใพใใ็ขบ่ชใใ ใใใ',
- 'dashboard.analysis.empty.noDebateData': '่ญฐ่ซใฎใใผใฟใฏใพใ ใใใพใใ',
- 'dashboard.analysis.empty.noDecisionData': 'ๆฑบๅฎใใผใฟใฏใพใ ใใใพใใ',
- 'dashboard.analysis.empty.selectAgent': 'ๅๆ็ตๆใ่กจ็คบใใใซใฏใจใผใธใงใณใใ้ธๆใใฆใใ ใใ',
- 'dashboard.analysis.loading.analyzing': 'ๅๆไธญใงใใใๅพ
ใกใใ ใใ...',
- 'dashboard.analysis.loading.fundamental': 'ๅบๆฌใใผใฟใๅๆไธญ...',
- 'dashboard.analysis.loading.technical': 'ใใฏใใซใซๆๆจใๅๆไธญ...',
- 'dashboard.analysis.loading.news': 'ใใฅใผในใใผใฟใๅๆไธญ...',
- 'dashboard.analysis.loading.sentiment': 'ๅธๅ ดใปใณใใกใณใใๅๆไธญ...',
- 'dashboard.analysis.loading.risk': 'ใชในใฏใ่ฉไพกไธญ...',
- 'dashboard.analysis.loading.debate': '้ท็ญใฎ่ญฐ่ซใฏ็ถใใฆใใพใ...',
- 'dashboard.analysis.loading.decision': 'ๆ็ตๆฑบๅฎใ็ๆไธญ...',
- 'dashboard.analysis.score.overall': '็ทๅ่ฉไพก',
- 'dashboard.analysis.score.recommendation': 'ๆ่ณใขใใใคใน',
- 'dashboard.analysis.score.confidence': '่ชไฟก',
- 'dashboard.analysis.dimension.fundamental': 'ๅบๆฌ',
- 'dashboard.analysis.dimension.technical': 'ใใฏใใญใธใผ',
- 'dashboard.analysis.dimension.news': 'ใใฅใผใน',
- 'dashboard.analysis.dimension.sentiment': 'ๆๆ
',
- 'dashboard.analysis.dimension.risk': 'ใชในใฏ',
- 'dashboard.analysis.card.dimensionScores': 'ๅๆฌกๅ
ใฎ่ฉไพก',
- 'dashboard.analysis.card.overviewReport': '็ทๅๅๆใฌใใผใ',
- 'dashboard.analysis.card.financialMetrics': '่ฒกๅๆๆจ',
- 'dashboard.analysis.card.fundamentalReport': 'ใใกใณใใกใณใฟใซใบๅๆใฌใใผใ',
- 'dashboard.analysis.card.technicalIndicators': 'ใใฏใใซใซๆๆจ',
- 'dashboard.analysis.card.technicalReport': 'ใใฏใใซใซๅๆใฌใใผใ',
- 'dashboard.analysis.card.newsList': '้ข้ฃใใฅใผใน',
- 'dashboard.analysis.card.newsReport': 'ใใฅใผในๅๆใฌใใผใ',
- 'dashboard.analysis.card.sentimentIndicators': 'ๆๆ
ๆๆจ',
- 'dashboard.analysis.card.sentimentReport': 'ใปใณใใกใณใๅๆใฌใใผใ',
- 'dashboard.analysis.card.riskMetrics': 'ใชในใฏๆๆจ',
- 'dashboard.analysis.card.riskReport': 'ใชในใฏ่ฉไพกใฌใใผใ',
- 'dashboard.analysis.card.bullView': 'ๅผทๆฐใฎ่ฆๆน๏ผๅผทๆฐ๏ผ',
- 'dashboard.analysis.card.bearView': 'ๅผฑๆฐใฎ่ฆๆน๏ผใใข๏ผ',
- 'dashboard.analysis.card.researchConclusion': '็ ็ฉถ่
ใฎ็ต่ซ',
- 'dashboard.analysis.card.traderPlan': 'ใใฌใผใใผใใฉใณ',
- 'dashboard.analysis.card.riskDebate': 'ใชในใฏๅงๅกไผใฎ่ญฐ่ซ',
- 'dashboard.analysis.card.finalDecision': 'ๆ็ตๆฑบๅฎ',
- 'dashboard.analysis.card.tradePlanDetail': 'ๅๅผใใฉใณใฎ่ฉณ็ดฐ',
- 'dashboard.analysis.tradingPlan.entry_price': 'ๅ
ฅๅ ดๆ',
- 'dashboard.analysis.tradingPlan.position_size': 'ใใธใทใงใณใตใคใบ',
- 'dashboard.analysis.tradingPlan.stop_loss': 'ในใใใใญใน',
- 'dashboard.analysis.tradingPlan.take_profit': 'ๅฉ็็ขบๅฎ',
- 'dashboard.analysis.label.confidence': '่ชไฟก',
- 'dashboard.analysis.label.keyPoints': 'ใณใขใใคใณใ',
- 'dashboard.analysis.label.riskWarning': 'ใชในใฏ่ญฆๅ',
- 'dashboard.analysis.risk.risky': 'ๅฑ้บใช',
- 'dashboard.analysis.risk.neutral': 'ไธญ็ซ็ใช่ฆ็น๏ผใใฅใผใใฉใซ๏ผ',
- 'dashboard.analysis.risk.safe': 'ไฟๅฎ็ใช่ฆ่งฃ๏ผๅฎๅ
จ๏ผ',
- 'dashboard.analysis.risk.conclusion': '็ต่ซ',
- 'dashboard.analysis.feature.fundamental': 'ใใกใณใใกใณใฟใซใบๅๆ',
- 'dashboard.analysis.feature.technical': 'ใใฏใใซใซๅๆ',
- 'dashboard.analysis.feature.news': 'ใใฅใผในๅๆ',
- 'dashboard.analysis.feature.sentiment': 'ๆๆ
ๅๆ',
- 'dashboard.analysis.feature.risk': 'ใชในใฏ่ฉไพก',
- 'dashboard.analysis.watchlist.title': '็งใฎ้ๆ้ธๆ',
- 'dashboard.analysis.watchlist.add': '่ฟฝๅ ใใ',
- 'dashboard.analysis.watchlist.addStock': 'ๅจๅบซใ่ฟฝๅ ใใ',
- 'dashboard.analysis.modal.addStock.title': 'ใชใใทใงใณใฎในใใใฏใ่ฟฝๅ ใใ',
- 'dashboard.analysis.modal.addStock.confirm': 'OK',
- 'dashboard.analysis.modal.addStock.cancel': 'ใญใฃใณใปใซ',
- 'dashboard.analysis.modal.addStock.market': 'ๅธๅ ดใฟใคใ',
- 'dashboard.analysis.modal.addStock.marketPlaceholder': 'ใใผใฑใใใ้ธๆใใฆใใ ใใ',
- 'dashboard.analysis.modal.addStock.marketRequired': 'ใใผใฑใใใฟใคใใ้ธๆใใฆใใ ใใ',
- 'dashboard.analysis.modal.addStock.symbol': '่จผๅธใณใผใ',
- 'dashboard.analysis.modal.addStock.symbolPlaceholder': 'ไพ: AAPLใTSLAใGOOGLใ000001ใBTC',
- 'dashboard.analysis.modal.addStock.symbolRequired': '่จผๅธใณใผใใๅ
ฅๅใใฆใใ ใใ',
- 'dashboard.analysis.modal.addStock.searchPlaceholder': 'ๆค็ดขๅฏพ่ฑกใฎใณใผใใพใใฏๅๅ',
- 'dashboard.analysis.modal.addStock.searchOrInputPlaceholder': 'ๅบ็คใจใชใใณใผใใๆค็ดขใพใใฏๅ
ฅๅใใพใ (ไพ: AAPLใBTC/USDTใEUR/USD)',
- 'dashboard.analysis.modal.addStock.searchOrInputHint': 'ใใผใฟใใผในๅ
ใฎใชใใธใงใฏใใฎๆค็ดขใใพใใฏใณใผใใฎ็ดๆฅๅ
ฅๅใใตใใผใ (ใทในใใ ใ่ชๅ็ใซๅๅใๅๅพใใพใ)',
- 'dashboard.analysis.modal.addStock.search': 'ๆค็ดข',
- 'dashboard.analysis.modal.addStock.searchResults': 'ๆค็ดข็ตๆ',
- 'dashboard.analysis.modal.addStock.hotSymbols': 'ไบบๆฐใฎใฟใผใฒใใ',
- 'dashboard.analysis.modal.addStock.noHotSymbols': 'ไบบๆฐใฎใใใฟใผใฒใใใฏใพใ ใใใพใใ',
- 'dashboard.analysis.modal.addStock.selectedSymbol': '้ธๆๆธใฟ',
- 'dashboard.analysis.modal.addStock.pleaseSelectSymbol': 'ๆๅใซใฟใผใฒใใใ้ธๆใใฆใใ ใใ',
- 'dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol': 'ใฟใผใฒใใใ้ธๆใใใใๆๅใซใฟใผใฒใใ ใณใผใใๅ
ฅๅใใฆใใ ใใ',
- 'dashboard.analysis.modal.addStock.pleaseEnterSymbol': 'ใฟใผใฒใใใณใผใใๅ
ฅๅใใฆใใ ใใ',
- 'dashboard.analysis.modal.addStock.pleaseSelectMarket': 'ๆๅใซใใผใฑใใใฟใคใใ้ธๆใใฆใใ ใใ',
- 'dashboard.analysis.modal.addStock.searchFailed': 'ๆค็ดขใซๅคฑๆใใพใใใๅพใงใใไธๅบฆใ่ฉฆใใใ ใใ',
- 'dashboard.analysis.modal.addStock.noSearchResults': 'ไธ่ดใใใฟใผใฒใใใ่ฆใคใใใพใใ',
- 'dashboard.analysis.modal.addStock.willAutoFetchName': 'ใทในใใ ใ่ชๅ็ใซๅๅใๅๅพใใพใ',
- 'dashboard.analysis.modal.addStock.addDirectly': '็ดๆฅ่ฟฝๅ ',
- 'dashboard.analysis.modal.addStock.nameWillBeFetched': 'ๅๅใฏ่ฟฝๅ ๆใซ่ชๅ็ใซๅๅพใใใพใ',
- 'dashboard.analysis.market.USStock': '็ฑณๅฝๆ ช',
- 'dashboard.analysis.market.Crypto': 'ๆๅท้่ฒจ',
- 'dashboard.analysis.market.Forex': 'ๅคๅฝ็บๆฟ',
- 'dashboard.analysis.market.Futures': 'ๅ
็ฉ',
- 'dashboard.analysis.modal.history.title': '้ๅปใฎๅๆ่จ้ฒ',
- 'dashboard.analysis.modal.history.viewResult': '็ตๆใ่ฆใ',
- 'dashboard.analysis.modal.history.completeTime': 'ๅฎไบๆ้',
- 'dashboard.analysis.modal.history.error': 'ใจใฉใผ',
- 'dashboard.analysis.status.pending': 'ไฟ็ไธญ',
- 'dashboard.analysis.status.processing': 'ๅฆ็ไธญ',
- 'dashboard.analysis.status.completed': 'ๅฎไบ',
- 'dashboard.analysis.status.failed': 'ๅคฑๆใใพใใ',
- 'dashboard.analysis.message.selectSymbol': 'ๆๅใซใฟใผใฒใใใ้ธๆใใฆใใ ใใ',
- 'dashboard.analysis.message.taskCreated': 'ๅๆใฟในใฏใไฝๆใใใใใใฏใฐใฉใฆใณใใงๅฎ่กใใใฆใใพใ...',
- 'dashboard.analysis.message.analysisComplete': 'ๅๆๅฎไบ',
- 'dashboard.analysis.message.analysisCompleteCache': 'ๅๆๅฎไบ๏ผใญใฃใใทใฅใใใใใผใฟใไฝฟ็จ๏ผ',
- 'dashboard.analysis.message.analysisFailed': 'ๅๆใซๅคฑๆใใพใใใๅพใงใใไธๅบฆใ่ฉฆใใใ ใใใ',
- 'dashboard.analysis.message.addStockSuccess': 'ๆญฃๅธธใซ่ฟฝๅ ใใใพใใ',
- 'dashboard.analysis.message.addStockFailed': '่ฟฝๅ ใซๅคฑๆใใพใใ',
- 'dashboard.analysis.message.removeStockSuccess': 'ๆญฃๅธธใซๅ้คใใใพใใ',
- 'dashboard.analysis.message.removeStockFailed': 'ๅ้คใซๅคฑๆใใพใใ',
- 'dashboard.analysis.message.resumingAnalysis': 'ๅๆใฟในใฏใๅ้ใใฆใใพใ...',
- 'dashboard.analysis.message.deleteSuccess': 'ๆญฃๅธธใซๅ้คใใใพใใ',
- 'dashboard.analysis.message.deleteFailed': 'ๅ้คใซๅคฑๆใใพใใ',
- 'dashboard.analysis.modal.history.delete': 'ๅ้ค',
- 'dashboard.analysis.modal.history.deleteConfirm': 'ใใฎๅๆ่จ้ฒใๅ้คใใฆใใใใใใงใใ๏ผ',
- 'dashboard.analysis.test': 'ใทใงใใ็ชๅท {no}ใๅ
ฌๅบ่ทฏ',
- 'dashboard.analysis.introduce': 'ใคใณใธใฑใผใฟใผใฎ่ชฌๆ',
- 'dashboard.analysis.total-sales': '็ทๅฃฒไธ้ซ',
- 'dashboard.analysis.day-sales': 'ๅนณๅๆฅ่ฒฉ๏ฟฅ',
- 'dashboard.analysis.visits': '่จชๅ',
- 'dashboard.analysis.visits-trend': 'ใใฉใใฃใใฏใฎๅพๅ',
- 'dashboard.analysis.visits-ranking': 'ๆฅๅบใฉใณใญใณใฐ',
- 'dashboard.analysis.day-visits': 'ๆฏๆฅใฎ่จชๅ',
- 'dashboard.analysis.week': 'ๆฏ้ฑๅๅนดๆฏ',
- 'dashboard.analysis.day': 'ๅๅนดๆฏ',
- 'dashboard.analysis.payments': 'ๆฏๆใๅๆฐ',
- 'dashboard.analysis.conversion-rate': 'ใณใณใใผใธใงใณ็',
- 'dashboard.analysis.operational-effect': '้ๅถๆดปๅใธใฎๅฝฑ้ฟ',
- 'dashboard.analysis.sales-trend': '่ฒฉๅฃฒๅๅ',
- 'dashboard.analysis.sales-ranking': 'ๅบ่ๅฃฒไธใฉใณใญใณใฐ',
- 'dashboard.analysis.all-year': 'ไธๅนดไธญ',
- 'dashboard.analysis.all-month': 'ไปๆ',
- 'dashboard.analysis.all-week': 'ไป้ฑ',
- 'dashboard.analysis.all-day': 'ไปๆฅ',
- 'dashboard.analysis.search-users': 'ๆค็ดขใฆใผใถใผๆฐ',
- 'dashboard.analysis.per-capita-search': 'ไธไบบๅฝใใใฎๆค็ดขๆฐ',
- 'dashboard.analysis.online-top-search': 'ใชใณใฉใคใณใงไบบๆฐใฎๆค็ดข',
- 'dashboard.analysis.the-proportion-of-sales': 'ๅฃฒไธใซใใดใชใผๆฏ็',
- 'dashboard.analysis.dropdown-option-one': 'ไฝๆฆ๏ผ',
- 'dashboard.analysis.dropdown-option-two': 'ๆไฝ 2',
- 'dashboard.analysis.channel.all': 'ใในใฆใฎใใฃใณใใซ',
- 'dashboard.analysis.channel.online': 'ใชใณใฉใคใณ',
- 'dashboard.analysis.channel.stores': 'ๅบ',
- 'dashboard.analysis.sales': '่ฒฉๅฃฒ',
- 'dashboard.analysis.traffic': 'ไนๅฎขใฎๆตใ',
- 'dashboard.analysis.table.rank': 'ใฉใณใญใณใฐ',
- 'dashboard.analysis.table.search-keyword': 'ๆค็ดขใญใผใฏใผใ',
- 'dashboard.analysis.table.users': 'ใฆใผใถใผๆฐ',
- 'dashboard.analysis.table.weekly-range': 'ๆฏ้ฑใฎๅขๅ ',
- 'dashboard.indicator.selectSymbol': 'ๅบ็คใจใชใใณใผใใ้ธๆใพใใฏๅ
ฅๅใใพใ',
- 'dashboard.indicator.emptyWatchlistHint': '็พๅจใ็ฌ่ชใซ้ธๆใใ้ๆใฏใใใพใใใๆๅใซ่ฟฝๅ ใใฆใใ ใใใ',
- 'dashboard.indicator.hint.selectSymbol': 'ๅๆใ้ๅงใใใซใฏใฟใผใฒใใใ้ธๆใใฆใใ ใใ',
- 'dashboard.indicator.hint.selectSymbolDesc': 'K ใฉใคใณ ใใฃใผใใจใใฏใใซใซๆๆจใ่กจ็คบใใใซใฏใไธใฎๆค็ดขใใใฏในใซ้ๆใณใผใใ้ธๆใพใใฏๅ
ฅๅใใพใใ',
- 'dashboard.indicator.retry': 'ใใไธๅบฆ่ฉฆใใฆใใ ใใ',
- 'dashboard.indicator.panel.title': 'ใใฏใใซใซๆๆจ',
- 'dashboard.indicator.panel.realtimeOn': 'ใชใขใซใฟใคใ ๆดๆฐใใชใใซใใ',
- 'dashboard.indicator.panel.realtimeOff': 'ใชใขใซใฟใคใ ๆดๆฐใๆๅนใซใใ',
- 'dashboard.indicator.panel.themeLight': 'ใใผใฏใใผใใซๅใๆฟใใ',
- 'dashboard.indicator.panel.themeDark': 'ใฉใคใใใผใใซๅใๆฟใใ',
- 'dashboard.indicator.section.enabled': 'ๆๅน',
- 'dashboard.indicator.section.added': '็งใ่ฟฝๅ ใใใคใณใธใฑใผใฟใผ',
- 'dashboard.indicator.section.custom': '่ชๅใงไฝๆใใใคใณใธใฑใผใฟใผ',
- 'dashboard.indicator.section.bought': '่ณผๅ
ฅใใใคใณใธใฑใผใฟใผ',
- 'dashboard.indicator.section.myCreated': '็งใไฝๆใใใคใณใธใฑใผใฟใผ',
- 'dashboard.indicator.empty': 'ใพใ ใคใณใธใฑใผใฟใผใใใใพใใใๆๅใซใคใณใธใฑใผใฟใผใ่ฟฝๅ ใพใใฏไฝๆใใฆใใ ใใ',
- 'dashboard.indicator.buy': '่ณผๅ
ฅใคใณใธใฑใผใฟใผ',
- 'dashboard.indicator.action.start': 'ๅงใใ',
- 'dashboard.indicator.action.stop': '้ใใ',
- 'dashboard.indicator.action.edit': '็ทจ้',
- 'dashboard.indicator.action.delete': 'ๅ้ค',
- 'dashboard.indicator.action.backtest': 'ใใใฏใในใ',
- 'dashboard.indicator.status.normal': 'ๆฎ้ใฎ',
- 'dashboard.indicator.status.normalPermanent': '้ๅธธ๏ผๆฐธ็ถ็ใซๆๅน๏ผ',
- 'dashboard.indicator.status.expired': 'ๆ้ๅใ',
- 'dashboard.indicator.expiry.permanent': 'ๆฐธไน
ใซๆๅน',
- 'dashboard.indicator.expiry.noExpiry': 'ๆๅนๆ้ใชใ',
- 'dashboard.indicator.expiry.expired': 'ๆ้ๅใ: {ๆฅไป}',
- 'dashboard.indicator.expiry.expiresOn': 'ๆๅนๆ้: {ๆฅไป}',
- 'dashboard.indicator.delete.confirmTitle': 'ๅ้คใฎ็ขบ่ช',
- 'dashboard.indicator.delete.confirmContent': 'ใคใณใธใฑใผใฟใผใ{name}ใใๅ้คใใฆใใใใใใงใใ?ใใฎๆไฝใฏๅ
ใซๆปใใใจใใงใใพใใใ',
- 'dashboard.indicator.delete.confirmOk': 'ๅ้ค',
- 'dashboard.indicator.delete.confirmCancel': 'ใญใฃใณใปใซ',
- 'dashboard.indicator.delete.success': 'ๆญฃๅธธใซๅ้คใใใพใใ',
- 'dashboard.indicator.delete.failed': 'ๅ้คใซๅคฑๆใใพใใ',
- 'dashboard.indicator.save.success': 'ๆญฃๅธธใซไฟๅญใใใพใใ',
- 'dashboard.indicator.save.failed': 'ไฟๅญใซๅคฑๆใใพใใ',
- 'dashboard.indicator.error.loadWatchlistFailed': 'ใชใใทใงใณใฎในใใใฏใใญใผใใงใใพใใใงใใ',
- 'dashboard.indicator.error.chartNotReady': 'ใใฃใผใใณใณใใผใใณใใฏๅๆๅใใใฆใใพใใใๆๅใซใฟใผใฒใใใ้ธๆใใใใฃใผใใใญใผใใใใใพใงๅพ
ใฃใฆใใ ใใใ',
- 'dashboard.indicator.error.chartMethodNotReady': 'ใฐใฉใ ใณใณใใผใใณใ ใกใฝใใใฎๆบๅใใงใใฆใใพใใใๅพใงใใไธๅบฆใ่ฉฆใใใ ใใใ',
- 'dashboard.indicator.error.chartExecuteNotReady': 'ใใฃใผใใณใณใใผใใณใใฎๅฎ่กใกใฝใใใฎๆบๅใใงใใฆใใพใใใๅพใงใใไธๅบฆ่ฉฆใใฆใใ ใใใ',
- 'dashboard.indicator.error.parseFailed': 'Pythonใณใผใใ่งฃๆใงใใพใใ',
- 'dashboard.indicator.error.parseFailedCheck': 'Python ใณใผใใ่งฃๆใงใใพใใใใณใผใๅฝขๅผใ็ขบ่ชใใฆใใ ใใใ',
- 'dashboard.indicator.error.addIndicatorFailed': 'ใคใณใธใฑใผใฟใผใฎ่ฟฝๅ ใซๅคฑๆใใพใใ',
- 'dashboard.indicator.error.runIndicatorFailed': 'ใคใณใธใฑใผใฟใผใฎๅฎ่กใซๅคฑๆใใพใใ',
- 'dashboard.indicator.error.pleaseLogin': 'ใพใใญใฐใคใณใใฆใใ ใใ',
- 'dashboard.indicator.error.loadDataFailed': 'ใใผใฟใฎใญใผใใซๅคฑๆใใพใใ',
- 'dashboard.indicator.error.loadDataFailedDesc': 'ใใใใฏใผใฏๆฅ็ถใ็ขบ่ชใใฆใใ ใใ',
- 'dashboard.indicator.error.pythonEngineFailed': 'Python ใจใณใธใณใฎใญใผใใซๅคฑๆใใใใใใคใณใธใฑใผใฟใผๆฉ่ฝใไฝฟ็จใงใใชใๅฏ่ฝๆงใใใใพใใ',
- 'dashboard.indicator.error.chartInitFailed': 'ใใฃใผใใฎๅๆๅใซๅคฑๆใใพใใ',
- 'dashboard.indicator.warning.enterCode': 'ๆๅใซใคใณใธใฑใผใฟใผใณใผใใๅ
ฅๅใใฆใใ ใใ',
- 'dashboard.indicator.warning.pyodideLoadFailed': 'Python ใจใณใธใณใฎใญใผใใซๅคฑๆใใพใใ',
- 'dashboard.indicator.warning.pyodideLoadFailedDesc': 'ใใฎๆฉ่ฝใฏใ็พๅจใฎๅฐๅใพใใฏใใใใฏใผใฏ็ฐๅขใงใฏๅฉ็จใงใใพใใ',
- 'dashboard.indicator.warning.chartNotInitialized': 'ใฐใฉใใๅๆๅใใใฆใใชใใใใ็ทๆ็ปใใผใซใไฝฟ็จใงใใพใใใ',
- 'dashboard.indicator.success.runIndicator': 'ใคใณใธใฑใผใฟใผใฏๆญฃๅธธใซๅฎ่กใใใพใ',
- 'dashboard.indicator.success.clearDrawings': '็ท็ปใใในใฆใฏใชใขใใพใใ',
- 'dashboard.indicator.sma': 'SMA๏ผ็งปๅๅนณๅ็ตๅ๏ผ',
- 'dashboard.indicator.ema': 'EMA (ๆๆฐ็งปๅๅนณๅ็ตๅ)',
- 'dashboard.indicator.rsi': 'RSI (็ธๅฏพๅผทๅบฆ)',
- 'dashboard.indicator.macd': 'MACD',
- 'dashboard.indicator.bb': 'ใใชใณใธใฃใผใใณใ',
- 'dashboard.indicator.atr': 'ATR (ๅนณๅใใฅใซใผใฌใณใธ)',
- 'dashboard.indicator.cci': 'CCI (ๅๅใใฃใใซๆๆฐ)',
- 'dashboard.indicator.williams': 'ใฆใฃใชใขใ ใบ %R (ใฆใฃใชใขใ ใบๆๆจ)',
- 'dashboard.indicator.mfi': 'MFI๏ผใใใผใใญใผใคใณใใใฏใน๏ผ',
- 'dashboard.indicator.adx': 'ADX๏ผๅนณๅใใฌใณใๆๆฐ๏ผ',
- 'dashboard.indicator.obv': 'OBV๏ผใจใใซใฎใผๆณข๏ผ',
- 'dashboard.indicator.adosc': 'ADOSC (ใขใญใฅใ ใฌใผใ/ใใฃในใใใใชใทใฌใผใฟใผ)',
- 'dashboard.indicator.ad': 'AD๏ผ่้ปใป้
้ป็ท๏ผ',
- 'dashboard.indicator.kdj': 'KDJ (็ขบ็็ๆๆจ)',
- 'dashboard.indicator.signal.buy': '่ฒทใ',
- 'dashboard.indicator.signal.sell': 'ๅฃฒใ',
- 'dashboard.indicator.signal.supertrendBuy': 'ในใผใใผใใฌใณใ่ณผๅ
ฅ',
- 'dashboard.indicator.signal.supertrendSell': 'ในใผใใผใใฌใณใใปใซ',
- 'dashboard.indicator.chart.kline': 'Kใฉใคใณ',
- 'dashboard.indicator.chart.volume': 'ใใชใฅใผใ ',
- 'dashboard.indicator.chart.uptrend': 'ไธๆๅพๅ',
- 'dashboard.indicator.chart.downtrend': 'ไธ้ๅพๅ',
- 'dashboard.indicator.tooltip.time': 'ๆ้',
- 'dashboard.indicator.tooltip.open': '้ใ',
- 'dashboard.indicator.tooltip.close': 'ๅใๅใ',
- 'dashboard.indicator.tooltip.high': '้ซใ',
- 'dashboard.indicator.tooltip.low': 'ไฝใ',
- 'dashboard.indicator.tooltip.volume': 'ใใชใฅใผใ ',
- 'dashboard.indicator.drawing.line': '็ทๅ',
- 'dashboard.indicator.drawing.horizontalLine': 'ๆฐดๅนณ็ท',
- 'dashboard.indicator.drawing.verticalLine': '็ธฆ็ท',
- 'dashboard.indicator.drawing.ray': 'ๅ
็ท',
- 'dashboard.indicator.drawing.straightLine': '็ด็ท',
- 'dashboard.indicator.drawing.parallelLine': 'ๅนณ่ก็ท',
- 'dashboard.indicator.drawing.priceLine': 'ไพกๆ ผใฉใคใณ',
- 'dashboard.indicator.drawing.priceChannel': 'ไพกๆ ผใใฃใใซ',
- 'dashboard.indicator.drawing.fibonacciLine': 'ใใฃใใใใใฉใคใณ',
- 'dashboard.indicator.drawing.clearAll': '็ท็ปใใในใฆใฏใชใขใใ',
- 'dashboard.indicator.market.USStock': '็ฑณๅฝๆ ช',
- 'dashboard.indicator.market.Crypto': 'ๆๅท้่ฒจ',
- 'dashboard.indicator.market.Forex': 'ๅคๅฝ็บๆฟ',
- 'dashboard.indicator.market.Futures': 'ๅ
็ฉ',
- 'dashboard.indicator.create': 'ใคใณใธใฑใผใฟใผใฎไฝๆ',
- 'dashboard.indicator.editor.title': 'ใคใณใธใฑใผใฟใผใฎไฝๆ/็ทจ้',
- 'dashboard.indicator.editor.name': 'ใคใณใธใฑใผใฟใผๅ',
- 'dashboard.indicator.editor.nameRequired': 'ใคใณใธใฑใผใฟใผๅใๅ
ฅๅใใฆใใ ใใ',
- 'dashboard.indicator.editor.namePlaceholder': 'ใคใณใธใฑใผใฟใผๅใๅ
ฅๅใใฆใใ ใใ',
- 'dashboard.indicator.editor.description': 'ใคใณใธใฑใผใฟใผใฎ่ชฌๆ',
- 'dashboard.indicator.editor.descriptionPlaceholder': 'ใคใณใธใฑใผใฟใผใฎ่ชฌๆใๅ
ฅๅใใฆใใ ใใ (ใชใใทใงใณ)',
- 'dashboard.indicator.editor.code': 'Pythonใณใผใ',
- 'dashboard.indicator.editor.codeRequired': 'ใคใณใธใฑใผใฟใผใณใผใใๅ
ฅๅใใฆใใ ใใ',
- 'dashboard.indicator.editor.codePlaceholder': 'Python ใณใผใใๅ
ฅๅใใฆใใ ใใ',
- 'dashboard.indicator.editor.run': '่ตฐใ',
- 'dashboard.indicator.editor.runHint': 'ๅฎ่กใใฟใณใใฏใชใใฏใใฆใK ใฉใคใณ ใใฃใผใไธใฎใคใณใธใฑใผใฟใผใฎๅนๆใใใฌใใฅใผใใพใใ',
- 'dashboard.indicator.editor.guide': '้็บใฌใคใ',
- 'dashboard.indicator.editor.guideTitle': 'Python ใคใณใธใฑใผใฟใผ้็บใฌใคใ',
- 'dashboard.indicator.editor.save': 'ไฟๅญใใ',
- 'dashboard.indicator.editor.cancel': 'ใญใฃใณใปใซ',
- 'dashboard.indicator.editor.unnamed': 'ๅๅใฎใชใใคใณใธใฑใผใฟใผ',
- 'dashboard.indicator.editor.publishToCommunity': 'ใณใใฅใใใฃใซๆ็จฟใใ',
- 'dashboard.indicator.editor.publishToCommunityHint': 'ๅ
ฌ้ใใใใจใไปใฎใฆใผใถใผใใณใใฅใใใฃใงใคใณใธใฑใผใฟใผใ่กจ็คบใใฆไฝฟ็จใงใใใใใซใชใใพใ',
- 'dashboard.indicator.editor.indicatorType': 'ใคใณใธใฑใผใฟใผใฎ็จฎ้ก',
- 'dashboard.indicator.editor.indicatorTypeRequired': 'ใคใณใธใฑใผใฟใผใฎใฟใคใใ้ธๆใใฆใใ ใใ',
- 'dashboard.indicator.editor.indicatorTypePlaceholder': 'ใคใณใธใฑใผใฟใผใฎใฟใคใใ้ธๆใใฆใใ ใใ',
- 'dashboard.indicator.editor.previewImage': 'ใใฌใใฅใผ',
- 'dashboard.indicator.editor.uploadImage': 'ๅ็ใใขใใใญใผใใใ',
- 'dashboard.indicator.editor.previewImageHint': 'ๆจๅฅจใตใคใบ: 800x400ใ2MB ไปฅไธ',
- 'dashboard.indicator.editor.pricing': '่ฒฉๅฃฒไพกๆ ผ๏ผQDT๏ผ',
- 'dashboard.indicator.editor.pricingType.free': '็กๆ',
- 'dashboard.indicator.editor.pricingType.permanent': 'ๆฐธไน
็ใช',
- 'dashboard.indicator.editor.pricingType.monthly': 'ๆใ
ใฎๆฏๆใ',
- 'dashboard.indicator.editor.price': 'ไพกๆ ผ',
- 'dashboard.indicator.editor.priceRequired': 'ไพกๆ ผใๅ
ฅๅใใฆใใ ใใ',
- 'dashboard.indicator.editor.pricePlaceholder': 'ไพกๆ ผใๅ
ฅๅใใฆใใ ใใ',
- 'dashboard.indicator.editor.pricingHint': '็กๆใฎใคใณใธใฑใผใฟใผใฎไพกๆ ผใฏ 0 ใงใใใใใฉใใใใฉใผใ ใฏใคใณใธใฑใผใฟใผใฎไฝฟ็จ้ใจ่ณ่ณ็ใซๅบใฅใใฆๅ ฑ้
ฌ (QDT) ใไธใใพใใ',
- 'dashboard.indicator.editor.aiGenerate': 'ใคใณใใชใธใงใณใใชไธไปฃ',
- 'dashboard.indicator.editor.aiPromptPlaceholder': 'ใใชใใฎใขใคใใขใๆใใฆใใ ใใใPython ใคใณใธใฑใผใฟใผ ใณใผใใ็ๆใใพใใ',
- 'dashboard.indicator.editor.aiGenerateBtn': 'AIใ็ๆใใใณใผใ',
- 'dashboard.indicator.editor.aiPromptRequired': 'ใใชใใฎ่ใใๅ
ฅๅใใฆใใ ใใ',
- 'dashboard.indicator.editor.aiGenerateSuccess': 'ใณใผใ็ๆใๆๅใใพใใ',
- 'dashboard.indicator.editor.aiGenerateError': 'ใณใผใ็ๆใซๅคฑๆใใพใใใๅพใงใใไธๅบฆใ่ฉฆใใใ ใใใ',
- 'dashboard.indicator.editor.verifyCode': 'ใณใผใๆค่จผ',
- 'dashboard.indicator.editor.verifyCodeSuccess': 'ๆค่จผๅๆ ผ',
- 'dashboard.indicator.editor.verifyCodeFailed': 'ๆค่จผๅคฑๆ',
- 'dashboard.indicator.editor.verifyCodeEmpty': 'ใณใผใใฏ็ฉบใซใงใใพใใ',
- 'dashboard.indicator.backtest.title': 'ใคใณใธใฑใผใฟใผใฎใใใฏใในใ',
- 'dashboard.indicator.backtest.config': 'ใใใฏใในใใใฉใกใผใฟ',
- 'dashboard.indicator.backtest.startDate': '้ๅงๆฅ',
- 'dashboard.indicator.backtest.endDate': '็ตไบๆฅ',
- 'dashboard.indicator.backtest.selectStartDate': '้ๅงๆฅใ้ธๆใใฆใใ ใใ',
- 'dashboard.indicator.backtest.selectEndDate': '็ตไบๆฅใ้ธๆใใฆใใ ใใ',
- 'dashboard.indicator.backtest.startDateRequired': '้ๅงๆฅใ้ธๆใใฆใใ ใใ',
- 'dashboard.indicator.backtest.endDateRequired': '็ตไบๆฅใ้ธๆใใฆใใ ใใ',
- 'dashboard.indicator.backtest.initialCapital': 'ๅๆ่ณๆฌ',
- 'dashboard.indicator.backtest.initialCapitalRequired': 'ๅๆ่ณ้ใๅ
ฅๅใใฆใใ ใใ',
- 'dashboard.indicator.backtest.commission': 'ๆๆฐๆ',
- 'dashboard.indicator.backtest.leverage': 'ใฌใใฌใใธๆฏ็',
- 'dashboard.indicator.backtest.tradeDirection': 'ๅๅผใฎๆนๅๆง',
- 'dashboard.indicator.backtest.longOnly': '้ทใ็ถใใฆใใ ใใ',
- 'dashboard.indicator.backtest.shortOnly': '็ญใ',
- 'dashboard.indicator.backtest.both': 'ๅๆนๅ',
- 'dashboard.indicator.backtest.run': 'ใใใฏใในใใ้ๅงใใ',
- 'dashboard.indicator.backtest.rerun': 'ใใไธๅบฆใใใฏใในใ',
- 'dashboard.indicator.backtest.close': '้ใใ',
- 'dashboard.indicator.backtest.running': 'ใคใณใธใฑใผใฟใผใฎใใใฏใในใใ้ฒ่กไธญใงใ...',
- 'dashboard.indicator.backtest.results': 'ใใใฏใในใ็ตๆ',
- 'dashboard.indicator.backtest.totalReturn': 'ใใผใฟใซใชใฟใผใณ',
- 'dashboard.indicator.backtest.annualReturn': 'ๅนดๅ',
- 'dashboard.indicator.backtest.maxDrawdown': 'ๆๅคงใใญใผใใฆใณ',
- 'dashboard.indicator.backtest.sharpeRatio': 'ใทใฃใผใใฌใทใช',
- 'dashboard.indicator.backtest.winRate': 'ๅ็',
- 'dashboard.indicator.backtest.profitFactor': 'ๆ็็',
- 'dashboard.indicator.backtest.totalTrades': 'ใใฉใณใถใฏใทใงใณๆฐ',
- 'dashboard.indicator.totalReturn': 'ใใผใฟใซใชใฟใผใณ',
- 'dashboard.indicator.annualReturn': 'ๅนดๆ็ฎๅ็็',
- 'dashboard.indicator.maxDrawdown': 'ๆๅคงใใญใผใใฆใณ',
- 'dashboard.indicator.sharpeRatio': 'ใทใฃใผใใฌใทใช',
- 'dashboard.indicator.winRate': 'ๅ็',
- 'dashboard.indicator.profitFactor': 'ๆ็็',
- 'dashboard.indicator.totalTrades': '็ทใใฉใณใถใฏใทใงใณๆฐ',
- 'dashboard.indicator.backtest.totalCommission': 'ๅ่จๆๆฐๆ',
- 'dashboard.indicator.backtest.equityCurve': 'ใคใผใซใใซใผใ',
- 'dashboard.indicator.backtest.strategy': 'ๆๆจๅๅ
ฅ',
- 'dashboard.indicator.backtest.benchmark': 'ใใณใใใผใฏใชใฟใผใณ',
- 'dashboard.indicator.backtest.tradeHistory': 'ๅๅผๅฑฅๆญด',
- 'dashboard.indicator.backtest.tradeTime': 'ๆ้',
- 'dashboard.indicator.backtest.tradeType': 'ใฟใคใ',
- 'dashboard.indicator.backtest.buy': '่ฒทใ',
- 'dashboard.indicator.backtest.sell': 'ๅฃฒใ',
- 'dashboard.indicator.backtest.liquidation': 'ๆธ
็ฎ',
- 'dashboard.indicator.backtest.openLong': '้ทใ้ใ',
- 'dashboard.indicator.backtest.closeLong': 'ใใณใใฅใช',
- 'dashboard.indicator.backtest.closeLongStop': 'ใญใณใฐใซ่ฟใ๏ผในใใใใญใน๏ผ',
- 'dashboard.indicator.backtest.closeLongProfit': 'ใใใซ้ใใ๏ผๅฉ็็ขบๅฎ๏ผ',
- 'dashboard.indicator.backtest.addLong': 'ใญใณใฐใใธใทใงใณใ่ฟฝๅ ',
- 'dashboard.indicator.backtest.openShort': 'ใชใผใใณใทใงใผใ',
- 'dashboard.indicator.backtest.closeShort': '็ฉบใฎ',
- 'dashboard.indicator.backtest.closeShortStop': 'ใฏใญใผใบ๏ผในใใใใญใน๏ผ',
- 'dashboard.indicator.backtest.closeShortProfit': 'ใฏใญใผใบ๏ผๅฉ็็ขบๅฎ๏ผ',
- 'dashboard.indicator.backtest.addShort': 'ใทใงใผใใใธใทใงใณใ่ฟฝๅ ',
- 'dashboard.indicator.backtest.price': 'ไพกๆ ผ',
- 'dashboard.indicator.backtest.amount': 'ๆฐ้',
- 'dashboard.indicator.backtest.balance': 'ๅฃๅบงๆฎ้ซ',
- 'dashboard.indicator.backtest.profit': 'ๆ็',
- 'dashboard.indicator.backtest.success': 'ใใใฏใในใๅฎไบ',
- 'dashboard.indicator.backtest.failed': 'ใใใฏใในใใซๅคฑๆใใพใใใๅพใงใใไธๅบฆใ่ฉฆใใใ ใใ',
- 'dashboard.indicator.backtest.noIndicatorCode': 'ใใฎใคใณใธใฑใผใฟใผใซใฏใใใฏใในใๅฏ่ฝใชใณใผใใฏใใใพใใ',
- 'dashboard.indicator.backtest.noSymbol': 'ๆๅใซๅๅผๅฏพ่ฑกใ้ธๆใใฆใใ ใใ',
- 'dashboard.indicator.backtest.dateRangeExceeded': 'ใใใฏใในใใฎๆ้็ฏๅฒใๅถ้ใ่ถ
ใใฆใใพใ: {timeframe} ๆ้ใฏๆๅคงใงใ {maxRange} ใพใงใใใฏใในใใงใใพใ',
- 'dashboard.indicator.backtest.dateRangeExceededDays': 'Backtest range exceeds limit: {timeframe} max {maxRange} ({maxDays} days)',
- 'dashboard.indicator.backtest.metaLine': 'Symbol: {symbol} | Market: {market} | Timeframe: {timeframe}',
- 'dashboard.indicator.backtest.savedRunId': 'Backtest saved. Run ID: {id}',
- 'dashboard.indicator.backtest.prev': 'Previous',
- 'dashboard.indicator.backtest.next': 'Next',
- 'dashboard.indicator.backtest.steps.strategy.title': 'Strategy',
- 'dashboard.indicator.backtest.steps.strategy.desc': 'Position sizing & risk controls',
- 'dashboard.indicator.backtest.steps.trading.title': 'Trading settings',
- 'dashboard.indicator.backtest.steps.trading.desc': 'Time range, capital, fees, leverage',
- 'dashboard.indicator.backtest.steps.results.title': 'Results',
- 'dashboard.indicator.backtest.steps.results.desc': 'Backtest output',
- 'dashboard.indicator.backtest.panel.risk': 'Risk management (SL/TP/Trailing)',
- 'dashboard.indicator.backtest.panel.scale': 'Scale in / DCA (trend & mean-reversion)',
- 'dashboard.indicator.backtest.panel.reduce': 'Reduce position (trend & adverse)',
- 'dashboard.indicator.backtest.panel.position': 'Position sizing',
- 'dashboard.indicator.backtest.field.stopLossPct': 'Stop Loss (%)',
- 'dashboard.indicator.backtest.field.takeProfitPct': 'Take Profit (%)',
- 'dashboard.indicator.backtest.field.trailingEnabled': 'Trailing stop / take profit',
- 'dashboard.indicator.backtest.field.trailingStopPct': 'Trailing drawdown (%)',
- 'dashboard.indicator.backtest.field.trailingActivationPct': 'Trailing activation (%)',
- 'dashboard.indicator.backtest.field.slippage': 'Slippage (%)',
- 'dashboard.indicator.backtest.field.trendAddEnabled': 'Trend-following scale-in',
- 'dashboard.indicator.backtest.field.dcaAddEnabled': 'Mean-reversion DCA',
- 'dashboard.indicator.backtest.field.trendAddStepPct': 'Scale-in trigger (%)',
- 'dashboard.indicator.backtest.field.dcaAddStepPct': 'DCA trigger (%)',
- 'dashboard.indicator.backtest.field.trendAddSizePct': 'Scale-in size (% of capital)',
- 'dashboard.indicator.backtest.field.dcaAddSizePct': 'DCA size (% of capital)',
- 'dashboard.indicator.backtest.field.trendAddMaxTimes': 'Max scale-in times',
- 'dashboard.indicator.backtest.field.dcaAddMaxTimes': 'Max DCA times',
- 'dashboard.indicator.backtest.field.trendReduceEnabled': 'Trend reduce',
- 'dashboard.indicator.backtest.field.adverseReduceEnabled': 'Adverse reduce',
- 'dashboard.indicator.backtest.field.trendReduceStepPct': 'Trend trigger (%)',
- 'dashboard.indicator.backtest.field.adverseReduceStepPct': 'Adverse trigger (%)',
- 'dashboard.indicator.backtest.field.trendReduceSizePct': 'Reduce size (% of position)',
- 'dashboard.indicator.backtest.field.adverseReduceSizePct': 'Adverse reduce size (% of position)',
- 'dashboard.indicator.backtest.field.trendReduceMaxTimes': 'Max trend reduce times',
- 'dashboard.indicator.backtest.field.adverseReduceMaxTimes': 'Max adverse reduce times',
- 'dashboard.indicator.backtest.field.entryPct': 'Entry size (% of capital)',
- 'dashboard.indicator.backtest.field.minOrderPct': 'Min order size (% of capital) (optional)',
- 'dashboard.indicator.backtest.closeLongTrailing': 'Close Long (Trailing)',
- 'dashboard.indicator.backtest.reduceLong': 'Reduce Long',
- 'dashboard.indicator.backtest.closeShortTrailing': 'Close Short (Trailing)',
- 'dashboard.indicator.backtest.reduceShort': 'Reduce Short',
- 'dashboard.docs.title': 'ใใญใฅใกใณใใปใณใฟใผ',
- 'dashboard.docs.search.placeholder': 'ใใญใฅใกใณใใๆค็ดข...',
- 'dashboard.docs.category.all': 'ใในใฆ',
- 'dashboard.docs.category.guide': '้็บใฌใคใ',
- 'dashboard.docs.category.api': 'APIใใญใฅใกใณใ',
- 'dashboard.docs.category.tutorial': 'ใใฅใผใใชใขใซ',
- 'dashboard.docs.category.faq': 'ใใใใ่ณชๅ',
- 'dashboard.docs.featured.title': 'ๆจๅฅจใใญใฅใกใณใ',
- 'dashboard.docs.featured.tag': 'ใใใใ',
- 'dashboard.docs.list.views': '้ฒ่ฆงใใ',
- 'dashboard.docs.list.author': '่่
',
- 'dashboard.docs.list.empty': 'ใพใ ๆๆธใใใใพใใ',
- 'dashboard.docs.list.backToAll': 'ใในใฆใฎใใญใฅใกใณใใซๆปใ',
- 'dashboard.docs.list.total': 'ๅ่จ {count} ๅใฎใใญใฅใกใณใ',
- 'dashboard.docs.detail.back': 'ใใญใฅใกใณใใชในใใซๆปใ',
- 'dashboard.docs.detail.updatedAt': 'ใซๆดๆฐใใใพใใ',
- 'dashboard.docs.detail.related': '้ข้ฃ่ณๆ',
- 'dashboard.docs.detail.notFound': 'ใใญใฅใกใณใใๅญๅจใใพใใ',
- 'dashboard.docs.detail.error': 'ใใญใฅใกใณใใๅญๅจใใชใใๅ้คใใใฆใใพใ',
- 'dashboard.docs.search.result': 'ๆค็ดข็ตๆ',
- 'dashboard.docs.search.keyword': 'ใญใผใฏใผใ',
- 'community.filter.indicatorType': 'ใคใณใธใฑใผใฟใผใฎ็จฎ้ก',
- 'community.filter.all': 'ใในใฆ',
- 'community.filter.other': 'ใใฎไปใฎใชใใทใงใณ',
- 'community.filter.pricing': 'ไพกๆ ผใฟใคใ',
- 'community.filter.allPricing': 'ใในใฆใฎไพกๆ ผ่จญๅฎ',
- 'community.filter.sortBy': 'ไธฆในๆฟใ้ ',
- 'community.filter.search': 'ๆค็ดข',
- 'community.filter.searchPlaceholder': 'ๆค็ดขใกใใชใฏในๅ',
- 'community.indicatorType.trend': 'ใใฌใณใใฟใคใ',
- 'community.indicatorType.momentum': 'ๅขใใฟใคใ',
- 'community.indicatorType.volatility': 'ใใฉใใฃใชใใฃ',
- 'community.indicatorType.volume': 'ใใชใฅใผใ ',
- 'community.indicatorType.custom': 'ใซในใฟใใคใบ',
- 'community.pricing.free': '็กๆ',
- 'community.pricing.paid': 'ๆฏๆใ',
- 'community.sort.downloads': 'ใใฆใณใญใผใ',
- 'community.sort.rating': '่ฉไพก',
- 'community.sort.newest': 'ๆๆฐใชใชใผใน',
- 'community.pagination.total': 'ๅ่จ {total} ๅใฎใคใณใธใฑใผใฟใผ',
- 'community.noDescription': 'ใพใ ่ชฌๆใใใใพใใ',
- 'community.detail.type': 'ใฟใคใ',
- 'community.detail.pricing': 'ไพกๆ ผ่จญๅฎ',
- 'community.detail.rating': '่ฉไพก',
- 'community.detail.downloads': 'ใใฆใณใญใผใ',
- 'community.detail.author': '่่
',
- 'community.detail.description': 'ใฏใใใซ',
- 'community.detail.detailContent': '่ฉณ็ดฐใช่ชฌๆ',
- 'community.detail.backtestStats': 'ใใใฏใในใ็ตฑ่จ',
- 'community.action.purchase': '่ณผๅ
ฅใคใณใธใฑใผใฟใผ',
- 'community.action.addToMyIndicators': '็งใฎใคใณใธใฑใผใฟใผใซ่ฟฝๅ ',
- 'community.action.favorite': 'ใณใฌใฏใทใงใณ',
- 'community.action.unfavorite': 'ใๆฐใซๅ
ฅใใใญใฃใณใปใซใใ',
- 'community.action.buyNow': 'ไปใใ่ณผๅ
ฅ',
- 'community.action.renew': 'ใชใใฅใผใขใซ',
- 'community.purchase.price': 'ไพกๆ ผ',
- 'community.purchase.permanent': 'ๆฐธไน
็ใช',
- 'community.purchase.monthly': 'ๆ',
- 'community.purchase.confirmBuy': 'ใใฎใคใณใธใฑใผใฟใผ ({price} QDT) ใ่ณผๅ
ฅใใใใจใ็ขบ่ชใใพใใ?',
- 'community.purchase.confirmRenew': 'ใใฎใคใณใธใฑใผใฟใผ ({price} QDT/ๆ) ใๆดๆฐใใใใจใ็ขบ่ชใใพใใ?',
- 'community.purchase.confirmFree': 'ใใฎ็กๆใคใณใธใฑใผใฟใผใ่ฟฝๅ ใใใใจใ็ขบ่ชใใพใใ?',
- 'community.purchase.confirmTitle': 'ใขใฏใทใงใณใฎ็ขบ่ช',
- 'community.purchase.owned': 'ใใฎใคใณใธใฑใผใฟใผใ่ณผๅ
ฅใใพใใ (ๆฐธไน
ใซๆๅนใงใ)',
- 'community.purchase.ownIndicator': 'ใใใฏใใชใใๅ
ฌ้ใใๆๆจใงใ',
- 'community.purchase.expired': 'ใตใในใฏใชใใทใงใณใฎๆๅนๆ้ใๅใใพใใ',
- 'community.purchase.expiresOn': 'ๆๅนๆ้: {ๆฅไป}',
- 'community.tabs.detail': 'ใคใณใธใฑใผใฟใผใฎ่ฉณ็ดฐ',
- 'community.tabs.backtest': 'ใใใฏใในใใใผใฟ',
- 'community.tabs.ratings': 'ใฆใผใถใผใฌใใฅใผ',
- 'community.rating.myRating': '็งใฎ่ฉไพก',
- 'community.rating.stars': '{count} ๅใฎๆ',
- 'community.rating.commentPlaceholder': 'ใใชใใฎ็ต้จใๅ
ฑๆใใฆใใ ใใ...',
- 'community.rating.submit': '่ฉไพกใ้ไฟกใใ',
- 'community.rating.modify': 'ๅคๆด',
- 'community.rating.saveModify': 'ๅคๆดใไฟๅญใใ',
- 'community.rating.cancel': 'ใญใฃใณใปใซ',
- 'community.rating.selectRating': '่ฉไพกใ้ธๆใใฆใใ ใใ',
- 'community.rating.success': '่ฉไพกใๆๅใใพใใ',
- 'community.rating.modifySuccess': 'ใฌใใฅใผใๆญฃๅธธใซๅคๆดใใใพใใ',
- 'community.rating.failed': '่ฉไพกใซๅคฑๆใใพใใ',
- 'community.rating.noRatings': 'ใพใ ใณใกใณใใฏใใใพใใ',
- 'community.backtest.note': 'ไธ่จใฎใใผใฟใฏ้ๅปใฎใใใฏใในใ็ตๆใงใใใๅ่ใฎใฟใ็ฎ็ใจใใฆใใใๅฐๆฅใฎๅ็ใ็คบใใใฎใงใฏใใใพใใใ',
- 'community.backtest.noData': 'ใใใฏใในใใใผใฟใฏใพใ ใใใพใใ',
- 'community.backtest.uploadHint': 'ไฝ่
ใฏใพใ ใใใฏใในใใใผใฟใใขใใใญใผใใใฆใใพใใ',
- 'community.message.loadFailed': 'ใคใณใธใฑใผใฟใผใชในใใฎใญใผใใซๅคฑๆใใพใใ',
- 'community.message.purchaseProcessing': '่ณผๅ
ฅใชใฏใจในใใๅฆ็ใใฆใใพใ...',
- 'community.message.downloadSuccess': 'ใกใใชใใฏใใกใใชใใฏ ใชในใใซ่ฟฝๅ ใใใพใใ',
- 'community.message.favoriteSuccess': 'ๅ้ใซๆๅใใพใใ',
- 'community.message.unfavoriteSuccess': 'ๅ้ใๆญฃๅธธใซใญใฃใณใปใซใใพใใ',
- 'community.message.operationSuccess': 'ๆไฝใฏๆๅใใพใใ',
- 'community.message.operationFailed': 'ๆไฝใๅคฑๆใใพใใ',
- 'community.banner.readOnly': '้ฒ่ฆงใฎใฟ',
- 'community.banner.loginHint': 'ใญใฐใคใณใพใใฏ็ป้ฒใๅฟ
่ฆใชๅ ดๅใฏใใใฟใณใใฏใชใใฏใใฆ็ฌ็ซใใใใผใธใซ็งปๅใใCSRFใฎๅ้กใๅ้ฟใใฆใใ ใใ',
- 'community.banner.jumpButton': 'ใญใฐใคใณ/็ป้ฒใธ',
- 'dashboard.totalEquity': '็ท่ณๆฌ',
- 'dashboard.totalPnL': 'ๆ็้็ฎ',
- 'dashboard.aiStrategies': 'AIๆฆ็ฅ',
- 'dashboard.indicatorStrategies': 'ๆๆจๆฆ็ฅ',
- 'dashboard.running': 'ใฉใณใใณใฐ',
- 'dashboard.pnlHistory': '้ๅปใฎๆ็',
- 'dashboard.strategyPerformance': 'ๆฆ็ฅๆ็็',
- 'dashboard.recentTrades': 'ๆ่ฟใฎๅๅผ',
- 'dashboard.currentPositions': '็พๅจไฝ็ฝฎ',
- 'dashboard.table.time': 'ๆ้',
- 'dashboard.table.strategy': 'ใใชใทใผๅ',
- 'dashboard.table.symbol': 'ใฟใผใฒใใ',
- 'dashboard.table.type': 'ใฟใคใ',
- 'dashboard.table.side': 'ๆนๅ',
- 'dashboard.table.size': 'ๅปบ็',
- 'dashboard.table.entryPrice': 'ๅนณๅๅงๅค',
- 'dashboard.table.price': 'ไพกๆ ผ',
- 'dashboard.table.amount': 'ๆฐ้',
- 'dashboard.table.profit': 'ๆ็',
- 'dashboard.pendingOrders': 'ๆณจๆๅฎ่ก่จ้ฒ',
- 'dashboard.totalOrders': 'ๅ่จ {total} ไปถ',
- 'dashboard.viewError': 'ใจใฉใผใ่กจ็คบ',
- 'dashboard.filled': '็ดๅฎๆธใฟ',
- 'dashboard.orderTable.time': 'ไฝๆๆ้',
- 'dashboard.orderTable.strategy': 'ๆฆ็ฅ',
- 'dashboard.orderTable.symbol': 'ๅๅผใใข',
- 'dashboard.orderTable.signalType': 'ใทใฐใใซใฟใคใ',
- 'dashboard.orderTable.amount': 'ๆฐ้',
- 'dashboard.orderTable.price': '็ดๅฎไพกๆ ผ',
- 'dashboard.orderTable.status': 'ในใใผใฟใน',
- 'dashboard.orderTable.executedAt': 'ๅฎ่กๆ้',
- 'dashboard.signalType.openLong': 'ใญใณใฐ้ๅง',
- 'dashboard.signalType.openShort': 'ใทใงใผใ้ๅง',
- 'dashboard.signalType.closeLong': 'ใญใณใฐๆฑบๆธ',
- 'dashboard.signalType.closeShort': 'ใทใงใผใๆฑบๆธ',
- 'dashboard.signalType.addLong': 'ใญใณใฐ่ฟฝๅ ',
- 'dashboard.signalType.addShort': 'ใทใงใผใ่ฟฝๅ ',
- 'dashboard.status.pending': 'ไฟ็ไธญ',
- 'dashboard.status.processing': 'ๅฆ็ไธญ',
- 'dashboard.status.completed': 'ๅฎไบ',
- 'dashboard.status.failed': 'ๅคฑๆ',
- 'dashboard.status.cancelled': 'ใญใฃใณใปใซๆธใฟ',
- 'dashboard.table.pnl': 'ๆชๅฎ็พๆ็',
- 'form.basic-form.basic.title': 'ๅบๆฌๅฝข',
- 'form.basic-form.basic.description': 'ใใฉใผใ ใใผใธใฏใใฆใผใถใผใใใฎๆ
ๅ ฑใๅ้ใพใใฏ็ขบ่ชใใใใใซไฝฟ็จใใใพใใ ๅบๆฌใใฉใผใ ใฏใใใผใฟ้
็ฎใๅฐใชใใใฉใผใ ใทใใชใชใงใใไฝฟ็จใใใพใใ',
- 'form.basic-form.title.label': 'ใฟใคใใซ',
- 'form.basic-form.title.placeholder': '็ฎๆจใซๅๅใไปใใพใ',
- 'form.basic-form.title.required': 'ใฟใคใใซใๅ
ฅๅใใฆใใ ใใ',
- 'form.basic-form.date.label': '้ๅงๆฅใจ็ตไบๆฅ',
- 'form.basic-form.placeholder.start': '้ๅงๆฅ',
- 'form.basic-form.placeholder.end': '็ตไบๆฅ',
- 'form.basic-form.date.required': '้ๅงๆฅใจ็ตไบๆฅใ้ธๆใใฆใใ ใใ',
- 'form.basic-form.goal.label': '็ฎๆจใฎ่ชฌๆ',
- 'form.basic-form.goal.placeholder': 'ๆฎต้็ใชไฝๆฅญ็ฎๆจใๅ
ฅๅใใฆใใ ใใ',
- 'form.basic-form.goal.required': '็ฎๆจใฎ่ชฌๆใๅ
ฅๅใใฆใใ ใใ',
- 'form.basic-form.standard.label': 'ๆธฌใ',
- 'form.basic-form.standard.placeholder': 'ๆๆจใๅ
ฅๅใใฆใใ ใใ',
- 'form.basic-form.standard.required': 'ๆๆจใๅ
ฅๅใใฆใใ ใใ',
- 'form.basic-form.client.label': 'ใๅฎขๆง',
- 'form.basic-form.client.required': 'ใใชใใใตใผใในใๆไพใใฆใใใฏใฉใคใขใณใใซใคใใฆ่ชฌๆใใฆใใ ใใ',
- 'form.basic-form.label.tooltip': 'ๅฏพ่ฑกใตใผใในๅไฟก่
',
- 'form.basic-form.client.placeholder': 'ใใชใใใตใผใในใๆไพใใฆใใ้กงๅฎขใๅ
้จ้กงๅฎขใซใคใใฆ็ดๆฅ่ชฌๆใใฆใใ ใใ @ๅๅ/ๅฝน่ท็ชๅท',
- 'form.basic-form.invites.label': 'ๆป่ชญ่
ใๆๅพ
ใใ',
- 'form.basic-form.invites.placeholder': '@ๅๅ/ๅพๆฅญๅก็ชๅทใ็ดๆฅ้ไฟกใใฆใใ ใใใๆๅคง 5 ไบบใพใงๆๅพ
ใงใใพใ',
- 'form.basic-form.weight.label': '้้',
- 'form.basic-form.weight.placeholder': 'ๅ
ฅๅใใฆใใ ใใ',
- 'form.basic-form.public.label': 'ใฟใผใฒใใใใใชใใฏ',
- 'form.basic-form.label.help': '้กงๅฎขใจใฌใใฅใผๆ
ๅฝ่
ใฏใใใฉใซใใงๅ
ฑๆใใใพใ',
- 'form.basic-form.radio.public': 'ๅ
ฌๅ
ฑใฎ',
- 'form.basic-form.radio.partially-public': '้จๅ็ใซๅ
ฌ้',
- 'form.basic-form.radio.private': 'ใใฉใคใใผใ',
- 'form.basic-form.publicUsers.placeholder': 'ใซใชใผใใณ',
- 'form.basic-form.option.A': 'ๅๅ1',
- 'form.basic-form.option.B': 'ๅๅ2',
- 'form.basic-form.option.C': 'ๅๅ3ไบบ',
- 'form.basic-form.email.required': 'ใกใผใซใขใใฌในใๅ
ฅๅใใฆใใ ใใ๏ผ',
- 'form.basic-form.email.wrong-format': 'ใกใผใซใขใใฌในใฎๅฝขๅผใ้้ใฃใฆใใพใ!',
- 'form.basic-form.userName.required': 'ใฆใผใถใผๅใๅ
ฅๅใใฆใใ ใใ!',
- 'form.basic-form.password.required': 'ใในใฏใผใใๅ
ฅๅใใฆใใ ใใใ',
- 'form.basic-form.password.twice': '2 ๅๅ
ฅๅใใใในใฏใผใใไธ่ดใใพใใใ',
- 'form.basic-form.strength.msg': '6ๆๅญไปฅไธใๅ
ฅๅใใฆใใ ใใใ ๆจๆธฌใใใใใใในใฏใผใใฏไฝฟ็จใใชใใงใใ ใใใ',
- 'form.basic-form.strength.strong': 'ๅผทใ: ๅผทใ',
- 'form.basic-form.strength.medium': 'ๅผทใ: ไธญ',
- 'form.basic-form.strength.short': 'ๅผทใ๏ผ็ญใใใ',
- 'form.basic-form.confirm-password.required': 'ใในใฏใผใใ็ขบ่ชใใฆใใ ใใใ',
- 'form.basic-form.phone-number.required': 'ๆบๅธฏ้ป่ฉฑ็ชๅทใๅ
ฅๅใใฆใใ ใใ๏ผ',
- 'form.basic-form.phone-number.wrong-format': 'ๆบๅธฏ้ป่ฉฑ็ชๅทใฎๅฝขๅผใ้้ใฃใฆใใพใใ',
- 'form.basic-form.verification-code.required': '็ขบ่ชใณใผใใๅ
ฅๅใใฆใใ ใใใ',
- 'form.basic-form.form.get-captcha': '็ขบ่ชใณใผใใๅๅพใใ',
- 'form.basic-form.captcha.second': '็ง',
- 'form.basic-form.form.optional': '(ใชใใทใงใณ)',
- 'form.basic-form.form.submit': '้ไฟกใใ',
- 'form.basic-form.form.save': 'ไฟๅญใใ',
- 'form.basic-form.email.placeholder': '้ปๅญใกใผใซ',
- 'form.basic-form.password.placeholder': 'ใในใฏใผใใฏ 6 ๆๅญไปฅไธใๅคงๆๅญใจๅฐๆๅญใฏๅบๅฅใใใพใ',
- 'form.basic-form.confirm-password.placeholder': 'ใในใฏใผใใฎ็ขบ่ช',
- 'form.basic-form.phone-number.placeholder': 'ๆบๅธฏ้ป่ฉฑ็ชๅท',
- 'form.basic-form.verification-code.placeholder': '่ช่จผใณใผใ',
- 'result.success.title': '้ไฟกๆๅ',
- 'result.success.description': 'ๆๅ
ฅ็ตๆใใผใธใฏใไธ้ฃใฎ้็จใฟในใฏใฎๅฆ็็ตๆใใใฃใผใใใใฏใใใใใซไฝฟ็จใใใพใใๅ็ดใชๆไฝใฎใฟใฎๅ ดๅใฏใใกใใปใผใธ ใฐใญใผใใซ ใใญใณใใ ใใฃใผใใใใฏใไฝฟ็จใใพใใใใฎใใญในใใจใชใขใซใฏ็ฐกๅใช่ฃ่ถณ่ชฌๆใ่กจ็คบใงใใพใใ ใใใญใฅใกใณใใใ่กจ็คบใใๅฟ
่ฆใใใๅ ดๅใฏใไธใฎ็ฐ่ฒใฎ้ ๅใซใใใซ่ค้ใชใณใณใใณใใ่กจ็คบใงใใพใใ',
- 'result.success.operate-title': 'ใใญใธใงใฏใๅ',
- 'result.success.operate-id': 'ใใญใธใงใฏใID',
- 'result.success.principal': 'ๆ
ๅฝ่
',
- 'result.success.operate-time': 'ๅนๆๆ้',
- 'result.success.step1-title': 'ใใญใธใงใฏใใฎไฝๆ',
- 'result.success.step1-operator': 'ใฏใปใชใช',
- 'result.success.step2-title': '้จ้ใฎไบๅๅฏฉๆป',
- 'result.success.step2-operator': 'ๅจ็ซ็ซ',
- 'result.success.step2-extra': '็ทๆฅ',
- 'result.success.step3-title': '่ฒกๅใฌใใฅใผ',
- 'result.success.step4-title': 'ๅฎไบ',
- 'result.success.btn-return': 'ใชในใใซๆปใ',
- 'result.success.btn-project': 'ใขใคใใ ใ่ฆใ',
- 'result.success.btn-print': 'ๅฐๅทใใ',
- 'result.fail.error.title': '้ไฟกใซๅคฑๆใใพใใ',
- 'result.fail.error.description': 'ๅ้ไฟกใใๅใซใๆฌกใฎๆ
ๅ ฑใ็ขบ่ชใใฆๅคๆดใใฆใใ ใใใ',
- 'result.fail.error.hint-title': '้ไฟกใใใณใณใใณใใซใฏๆฌกใฎใจใฉใผใๅซใพใใฆใใพใใ',
- 'result.fail.error.hint-text1': 'ใใชใใฎใขใซใฆใณใใฏๅ็ตใใใพใใ',
- 'result.fail.error.hint-btn1': 'ใใใซ่งฃๅใใฆใใ ใใ',
- 'result.fail.error.hint-text2': 'ใใชใใฎใขใซใฆใณใใฏใพใ ็ณ่ซใใ่ณๆ ผใใใใพใใ',
- 'result.fail.error.hint-btn2': 'ไปใใใขใใใฐใฌใผใใใฆใใ ใใ',
- 'result.fail.error.btn-text': 'ไฟฎๆญฃใซๆปใ',
- 'account.settings.menuMap.custom': 'ใใผใฝใใฉใคใผใผใทใงใณ',
- 'account.settings.menuMap.binding': 'ใขใซใฆใณใใใคใณใใฃใณใฐ',
- 'account.settings.basic.avatar': 'ใขใใฟใผ',
- 'account.settings.basic.change-avatar': 'ใขใใฟใผใฎๅคๆด',
- 'account.settings.basic.email': '้ปๅญใกใผใซ',
- 'account.settings.basic.email-message': 'ใกใผใซใขใใฌในใๅ
ฅๅใใฆใใ ใใใ',
- 'account.settings.basic.nickname': 'ใใใฏใใผใ ',
- 'account.settings.basic.nickname-message': 'ใใใฏใใผใ ใๅ
ฅๅใใฆใใ ใใ๏ผ',
- 'account.settings.basic.profile': 'ใใญใใฃใผใซ',
- 'account.settings.basic.profile-message': 'ใใชใใฎๅไบบใใญใใฃใผใซใๅ
ฅๅใใฆใใ ใใ๏ผ',
- 'account.settings.basic.profile-placeholder': 'ใใญใใฃใผใซ',
- 'account.settings.basic.country': 'ๅฝ/ๅฐๅ',
- 'account.settings.basic.country-message': 'ใใชใใฎๅฝใพใใฏๅฐๅใๅ
ฅๅใใฆใใ ใใใ',
- 'account.settings.basic.geographic': '็ใจๅธ',
- 'account.settings.basic.geographic-message': 'ใใชใใฎ้ฝ้ๅบ็ใจๅธๅบ็บๆใๅ
ฅๅใใฆใใ ใใใ',
- 'account.settings.basic.address': 'ไฝๆ',
- 'account.settings.basic.address-message': 'ไฝๆใๅ
ฅๅใใฆใใ ใใใ',
- 'account.settings.basic.phone': '้ฃ็ตกๅ
็ชๅท',
- 'account.settings.basic.phone-message': '้ฃ็ตกๅ
็ชๅทใๅ
ฅๅใใฆใใ ใใใ',
- 'account.settings.basic.update': 'ๅบๆฌๆ
ๅ ฑใๆดๆฐ',
- 'account.settings.basic.update.success': 'ๅบๆฌๆ
ๅ ฑใๆญฃๅธธใซๆดๆฐใใใพใใ',
- 'account.settings.security.strong': 'ๅผทใ',
- 'account.settings.security.medium': 'ใง',
- 'account.settings.security.weak': 'ๅผฑใ',
- 'account.settings.security.password': 'ใขใซใฆใณใใฎใในใฏใผใ',
- 'account.settings.security.password-description': '็พๅจใฎใในใฏใผใใฎๅผทๅบฆ:',
- 'account.settings.security.phone': 'ใปใญใฅใชใใฃๆบๅธฏ้ป่ฉฑ',
- 'account.settings.security.phone-description': 'ใใงใซใใคใณใใใใฆใใๆบๅธฏ้ป่ฉฑ:',
- 'account.settings.security.question': 'ใปใญใฅใชใใฃใฎๅ้ก',
- 'account.settings.security.question-description': '็งๅฏใฎ่ณชๅใฏ่จญๅฎใใใฆใใชใใใใใขใซใฆใณใใฎใปใญใฅใชใใฃใๅนๆ็ใซไฟ่ญทใงใใพใใ',
- 'account.settings.security.email': '้ปๅญใกใผใซใใใคใณใใใ',
- 'account.settings.security.email-description': 'ใใงใซใใคใณใใใใฆใใ้ปๅญใกใผใซ ใขใใฌใน:',
- 'account.settings.security.mfa': 'MFAใใใคใน',
- 'account.settings.security.mfa-description': 'MFA ใใใคในใฏใใคใณใใใใฆใใพใใใใใคใณใๅพใๅๅบฆ็ขบ่ชใงใใพใใ',
- 'account.settings.security.modify': 'ๅคๆด',
- 'account.settings.security.set': '่จญๅฎ',
- 'account.settings.security.bind': 'ใใคใณใใฃใณใฐ',
- 'account.settings.binding.taobao': 'ใฟใชใใชใใใคใณใใใ',
- 'account.settings.binding.taobao-description': 'ใฟใชใใชใขใซใฆใณใใฏ็พๅจใใคใณใใใใฆใใพใใ',
- 'account.settings.binding.alipay': 'Alipayใใใคใณใใใ',
- 'account.settings.binding.alipay-description': 'Alipay ใขใซใฆใณใใฏ็พๅจใใคใณใใใใฆใใพใใ',
- 'account.settings.binding.dingding': 'ใใคใณใใฃใณใฐใใฃใณใใผใฏ',
- 'account.settings.binding.dingding-description': '็พๅจใใคใณใใใใฆใใ DingTalk ใขใซใฆใณใใฏใใใพใใ',
- 'account.settings.binding.bind': 'ใใคใณใใฃใณใฐ',
- 'account.settings.notification.password': 'ใขใซใฆใณใใฎใในใฏใผใ',
- 'account.settings.notification.password-description': 'ไปใฎใฆใผใถใผใใใฎใกใใปใผใธใฏใใตใคใใกใใปใผใธใฎๅฝขๅผใง้็ฅใใใพใใ',
- 'account.settings.notification.messages': 'ใทในใใ ใกใใปใผใธ',
- 'account.settings.notification.messages-description': 'ใทในใใ ใกใใปใผใธใฏใตใคใ ใกใใปใผใธใฎๅฝขๅผใง้็ฅใใใพใใ',
- 'account.settings.notification.todo': 'ToDoใฟในใฏ',
- 'account.settings.notification.todo-description': 'To Do ใฟในใฏใฏใตใคใๅ
ใกใใปใผใธใฎๅฝขๅผใง้็ฅใใใพใ',
- 'account.settings.settings.open': '้ใ',
- 'account.settings.settings.close': '้ใใ',
- 'trading-assistant.title': 'ๅๅผใขใทในใฟใณใ',
- 'trading-assistant.strategyList': 'ๆฆ็ฅไธ่ฆง',
- 'trading-assistant.createStrategy': 'ใใชใทใผใฎไฝๆ',
- 'trading-assistant.noStrategy': 'ใพใ ๆฆ็ฅใฏใใใพใใ',
- 'trading-assistant.selectStrategy': '่ฉณ็ดฐใ่กจ็คบใใใซใฏใๅทฆๅดใใๆฆ็ฅใ้ธๆใใฆใใ ใใ',
- 'trading-assistant.startStrategy': 'ๆฆ็ฅใ็ซใกไธใใ',
- 'trading-assistant.stopStrategy': 'ๆฆ็ฅใๅๆญขใใ',
- 'trading-assistant.editStrategy': '็ทจ้ๆฆ็ฅ',
- 'trading-assistant.deleteStrategy': 'ใใชใทใผใฎๅ้ค',
- 'trading-assistant.status.running': 'ใฉใณใใณใฐ',
- 'trading-assistant.status.stopped': 'ๅๆญขใใพใใ',
- 'trading-assistant.status.error': 'ใจใฉใผ',
- 'trading-assistant.strategyType.IndicatorStrategy': 'ใใฏใใซใซๆๆจๆฆ็ฅ',
- 'trading-assistant.strategyType.PromptBasedStrategy': 'ๅ่จ่ๆฆ็ฅ',
- 'trading-assistant.strategyType.GridStrategy': 'ใฐใชใใๆฆ็ฅ',
- 'trading-assistant.tabs.tradingRecords': 'ๅๅผๅฑฅๆญด',
- 'trading-assistant.tabs.positions': 'ไฝ็ฝฎ่จ้ฒ',
- 'trading-assistant.tabs.equityCurve': '่ณๆฌๆฒ็ท',
- 'trading-assistant.form.step1': 'ใคใณใธใฑใผใฟใผใฎ้ธๆ',
- 'trading-assistant.form.step2': 'Exchangeใฎๆงๆ',
- 'trading-assistant.form.step3': 'ๆฆ็ฅใใฉใกใผใฟ',
- 'trading-assistant.form.indicator': 'ใคใณใธใฑใผใฟใผใฎ้ธๆ',
- 'trading-assistant.form.indicatorHint': '่ณผๅ
ฅใพใใฏไฝๆใใใใฏใใซใซๆๆจใฎใฟใ้ธๆใงใใพใ',
- 'trading-assistant.form.qdtCostHints': 'ๆฆ็ฅใไฝฟ็จใใใจ QDT ใๆถ่ฒปใใใพใใใขใซใฆใณใใซๅๅใช QDT ๆฎ้ซใใใใใจใ็ขบ่ชใใฆใใ ใใใ',
- 'trading-assistant.form.indicatorDescription': 'ใคใณใธใฑใผใฟใผใฎ่ชฌๆ',
- 'trading-assistant.form.noDescription': 'ใพใ ่ชฌๆใใใใพใใ',
- 'trading-assistant.form.exchange': 'ไบคๆใ้ธๆ',
- 'trading-assistant.form.apiKey': 'APIใญใผ',
- 'trading-assistant.form.secretKey': '็งๅฏ้ต',
- 'trading-assistant.form.passphrase': 'ใในใใฌใผใบ',
- 'trading-assistant.form.testConnection': 'ใในใๆฅ็ถ',
- 'trading-assistant.form.strategyName': 'ใใชใทใผๅ',
- 'trading-assistant.form.symbol': 'ๅๅผใใข',
- 'trading-assistant.form.symbolHint': '็พๅจใๆๅท้่ฒจๅๅผใใขใฎใฟใใตใใผใใใใฆใใพใ',
- 'trading-assistant.form.initialCapital': 'ๆ่ณ้ก',
- 'trading-assistant.form.marketType': 'ๅธๅ ดใฟใคใ',
- 'trading-assistant.form.marketTypeFutures': 'ๅฅ็ด',
- 'trading-assistant.form.marketTypeSpot': 'ในใใใ',
- 'trading-assistant.form.marketTypeHint': 'ใใฎๅฅ็ดใฏๅๆนๅใฎๅๅผใจใฌใใฌใใธใใตใใผใใใพใใใในใใใใฏใญใณใฐใใธใทใงใณใฎใฟใใตใใผใใใใฌใใฌใใธใฏ 1 ๅใซๅบๅฎใใใพใใ',
- 'trading-assistant.form.leverage': '่คๆฐใๆดป็จใใ',
- 'trading-assistant.form.leverageHint': 'ๅฅ็ด๏ผ1๏ฝ125ๅใในใใใ๏ผๅบๅฎ1ๅ',
- 'trading-assistant.form.spotLeverageFixed': '็พ็ฉๅๅผใฎใฌใใฌใใธใฏ1ๅใซๅบๅฎใใใพใ',
- 'trading-assistant.form.spotOnlyLongHint': 'ในใใใๅๅผใฏใญใณใฐใใธใทใงใณใฎใฟใใตใใผใใใพใ',
- 'trading-assistant.form.tradeDirection': 'ๅๅผใฎๆนๅๆง',
- 'trading-assistant.form.tradeDirectionLong': 'ใใ ้ทใใ ใ',
- 'trading-assistant.form.tradeDirectionShort': '็ญใใ ใ',
- 'trading-assistant.form.tradeDirectionBoth': 'ๅๆนๅๅๅผ',
- 'trading-assistant.form.timeframe': 'ๆ้',
- 'trading-assistant.form.klinePeriod': 'K็ทๆ้',
- 'trading-assistant.form.timeframe1m': '1ๅ',
- 'trading-assistant.form.timeframe5m': '5ๅ',
- 'trading-assistant.form.timeframe15m': '15ๅ',
- 'trading-assistant.form.timeframe30m': '30ๅ',
- 'trading-assistant.form.timeframe1H': '1ๆ้',
- 'trading-assistant.form.timeframe4H': '4ๆ้',
- 'trading-assistant.form.timeframe1D': '1ๆฅ',
- 'trading-assistant.form.selectStrategyType': 'ๆฆ็ฅใฟใคใใ้ธๆ',
- 'trading-assistant.form.indicatorStrategy': 'ใคใณใธใฑใผใฟใผๆฆ็ฅ',
- 'trading-assistant.form.indicatorStrategyDesc': 'ใใฏใใซใซใคใณใธใฑใผใฟใผใซๅบใฅใ่ชๅๅๅผๆฆ็ฅ',
- 'trading-assistant.form.aiStrategy': 'AIๆฆ็ฅ',
- 'trading-assistant.form.aiStrategyDesc': 'AIใคใณใใชใธใงใณใๆๆๆฑบๅฎใซๅบใฅใ่ชๅๅๅผๆฆ็ฅ',
- 'trading-assistant.form.enableAiFilter': 'AIใคใณใใชใธใงใณใๆๆๆฑบๅฎใใฃใซใฟใผใๆๅนๅ',
- 'trading-assistant.form.enableAiFilterHint': 'ๆๅนใซใใใจใใคใณใธใฑใผใฟใผใทใฐใใซใAIใซใใฃใฆใใฃใซใฟใชใณใฐใใใๅๅผๅ่ณชใๅไธใใพใ',
- 'trading-assistant.form.aiFilterPrompt': 'ใซในใฟใ ใใญใณใใ',
- 'trading-assistant.form.aiFilterPromptHint': 'AIใใฃใซใฟใชใณใฐใซใซในใฟใ ๆ็คบใๆไพใใ็ฉบ็ฝใฎใพใพใซใใใจใทในใใ ใใใฉใซใใไฝฟ็จใใพใ',
- 'trading-assistant.validation.strategyTypeRequired': 'ๆฆ็ฅใฟใคใใ้ธๆใใฆใใ ใใ',
- 'trading-assistant.form.advancedSettings': '่ฉณ็ดฐ่จญๅฎ',
- 'trading-assistant.form.orderMode': 'ใชใผใใผใขใผใ',
- 'trading-assistant.form.orderModeMaker': 'ใกใผใซใผ',
- 'trading-assistant.form.orderModeTaker': 'ๅธๅ ดไพกๆ ผ๏ผใใคใซใผ๏ผ',
- 'trading-assistant.form.orderModeHint': 'ๆชๆฑบๆณจๆใขใผใใงใฏๆๅคๆณจๆใไฝฟ็จใใใๆๆฐๆใๅฎใใชใใพใใๅธๅ ดไพกๆ ผใขใผใใฏใใใซๅฎ่กใใใๆๆฐๆใ้ซใใชใใพใใ',
- 'trading-assistant.form.makerWaitSec': 'ๆชๆฑบๆณจๆใฎๅพ
ใกๆ้ (็ง)',
- 'trading-assistant.form.makerWaitSecHint': 'ๆณจๆๅพใฎๅๅผใๅพ
ใคๆ้ใใญใฃใณใปใซใใฆใใฟใคใ ใขใฆใๅพใซๅ่ฉฆ่กใใฆใใ ใใใ',
- 'trading-assistant.form.makerRetries': 'ๆชๆฑบๆณจๆใฎๅ่ฉฆ่กๅๆฐ',
- 'trading-assistant.form.makerRetriesHint': 'ๆชๆฑบๆณจๆใ็ดๅฎใใชใๅ ดๅใฎๆๅคงใชใใฉใคๅๆฐ',
- 'trading-assistant.form.fallbackToMarket': 'ๆชๆฑบๆณจๆใฏๅคฑๆใใๅธๅ ดไพกๆ ผใฏๅผใไธใใใใพใใ',
- 'trading-assistant.form.fallbackToMarketHint': '้ๅง/็ตไบๆชๆฑบๆณจๆใๅฎไบใใฆใใชใๅ ดๅใใใฉใณใถใฏใทใงใณใ็ขบๅฎใซๅฎไบใใใใใใซๆ่กๆณจๆใซใใฆใณใฐใฌใผใใใๅฟ
่ฆใใใใใฉใใใ',
- 'trading-assistant.form.marginMode': 'ใใผใธใณใขใผใ',
- 'trading-assistant.form.marginModeCross': 'ๅๅบซใใใฃใฑใ',
- 'trading-assistant.form.marginModeIsolated': 'ๅญค็ซใใไฝ็ฝฎ',
- 'trading-assistant.form.stopLossPct': 'ในใใใใญใน็(%)',
- 'trading-assistant.form.stopLossPctHint': 'ในใใใใญในใฎใใผใปใณใใผใธใ่จญๅฎใใพใใ0 ใฏในใใใใญในใๆๅนใซใชใฃใฆใใชใใใจใๆๅณใใพใ',
- 'trading-assistant.form.takeProfitPct': 'ใใคใฏใใญใใฃใใ็(%)',
- 'trading-assistant.form.takeProfitPctHint': 'ใใคใฏใใญใใฃใใใฎใใผใปใณใใผใธใ่จญๅฎใใพใใ0 ใฏใใคใฏใใญใใฃใใใ็กๅนใซใใใใจใๆๅณใใพใ',
- 'trading-assistant.form.signalMode': 'ไฟกๅทใขใผใ',
- 'trading-assistant.form.signalModeConfirmed': '็ขบ่ชใขใผใ',
- 'trading-assistant.form.signalModeAggressive': 'ใขใฐใฌใใทใใขใผใ',
- 'trading-assistant.form.signalModeHint': '็ขบ่ชใขใผใ: ๅฎไบใใ K ่กใฎใฟใใใงใใฏใใพใใใขใฐใฌใใทใ ใขใผใ: K ใฉใคใณใฎๅฝขๆใใใงใใฏใใพใ',
- 'trading-assistant.form.cancel': 'ใญใฃใณใปใซ',
- 'trading-assistant.form.prev': 'ๅใฎในใใใ',
- 'trading-assistant.form.next': 'ๆฌกใฎในใใใ',
- 'trading-assistant.form.confirmCreate': 'ไฝๆใฎ็ขบ่ช',
- 'trading-assistant.form.confirmEdit': 'ๅคๆดใ็ขบ่ชใใ',
- 'trading-assistant.messages.createSuccess': 'ๆฆ็ฅใๆญฃๅธธใซไฝๆใใใพใใ',
- 'trading-assistant.messages.createFailed': 'ใใชใทใผใฎไฝๆใซๅคฑๆใใพใใ',
- 'trading-assistant.messages.updateSuccess': 'ใใชใทใผใฎๆดๆฐใๆๅใใพใใ',
- 'trading-assistant.messages.updateFailed': 'ใใชใทใผใฎๆดๆฐใซๅคฑๆใใพใใ',
- 'trading-assistant.messages.deleteSuccess': 'ใใชใทใผใฎๅ้คใๆๅใใพใใ',
- 'trading-assistant.messages.deleteFailed': 'ใใชใทใผใฎๅ้คใซๅคฑๆใใพใใ',
- 'trading-assistant.messages.startSuccess': 'ๆฆ็ฅใฏ็กไบใซ้ๅงใใใพใใ',
- 'trading-assistant.messages.startFailed': 'ใใชใทใผใฎ้ๅงใซๅคฑๆใใพใใ',
- 'trading-assistant.messages.stopSuccess': 'ๆฆ็ฅใฏๆญฃๅธธใซๅๆญขใใใพใใ',
- 'trading-assistant.messages.stopFailed': 'ๅๆญขๆฆ็ฅใฏๅคฑๆใใพใใ',
- 'trading-assistant.messages.loadFailed': 'ใใชใทใผใชในใใฎๅๅพใซๅคฑๆใใพใใ',
- 'trading-assistant.messages.runningWarning': 'ๆฆ็ฅใฏๅฎ่กใใใฆใใพใใ ๆฆ็ฅใๅคๆดใใๅใซๆฆ็ฅใๅๆญขใใฆใใ ใใใ',
- 'trading-assistant.messages.deleteConfirmWithName': 'ใใชใทใผใ{name}ใใๅ้คใใฆใใใใใใงใใ?ใใฎๆไฝใฏๅ
ใซๆปใใใจใใงใใพใใใ',
- 'trading-assistant.messages.deleteConfirm': 'ใใฎใใชใทใผใๅ้คใใฆใใใใใใงใใ?ใใฎๆไฝใฏๅ
ใซๆปใใใจใใงใใพใใใ',
- 'trading-assistant.messages.loadTradesFailed': 'ๅๅผ่จ้ฒใฎๅๅพใซๅคฑๆใใพใใ',
- 'trading-assistant.messages.loadPositionsFailed': 'ไฝ็ฝฎใฌใณใผใใฎๅๅพใซๅคฑๆใใพใใ',
- 'trading-assistant.messages.loadEquityFailed': '่ณๆฌๆฒ็ทใฎๅๅพใซๅคฑๆใใพใใ',
- 'trading-assistant.messages.loadIndicatorsFailed': 'ใคใณใธใฑใผใฟใผ ใชในใใฎ่ชญใฟ่พผใฟใซๅคฑๆใใพใใใๅพใงใใไธๅบฆใ่ฉฆใใใ ใใใ',
- 'trading-assistant.messages.spotLimitations': 'ในใใใๅๅผใฏ่ชๅ็ใซใญใณใฐใฎใฟใใฌใใฌใใธ1ๅใซ่จญๅฎใใใฆใใพใ',
- 'trading-assistant.messages.autoFillApiConfig': 'ๅๅผๆใฎ้ๅปใฎ API ่จญๅฎใ่ชๅ็ใซๅ
ฅๅใใใพใ',
- 'trading-assistant.placeholders.selectIndicator': 'ใคใณใธใฑใผใฟใผใ้ธๆใใฆใใ ใใ',
- 'trading-assistant.placeholders.selectExchange': 'ไบคๆใ้ธๆใใฆใใ ใใ',
- 'trading-assistant.placeholders.inputApiKey': 'APIใญใผใๅ
ฅๅใใฆใใ ใใ',
- 'trading-assistant.placeholders.inputSecretKey': '็งๅฏใญใผใๅ
ฅๅใใฆใใ ใใ',
- 'trading-assistant.placeholders.inputPassphrase': 'ใในใใฌใผใบใๅ
ฅๅใใฆใใ ใใ',
- 'trading-assistant.placeholders.inputStrategyName': 'ใใชใทใผๅใๅ
ฅๅใใฆใใ ใใ',
- 'trading-assistant.placeholders.selectSymbol': 'ๅๅผใใขใ้ธๆใใฆใใ ใใ',
- 'trading-assistant.placeholders.selectTimeframe': 'ๆ้ใ้ธๆใใฆใใ ใใ',
- 'trading-assistant.placeholders.selectKlinePeriod': 'K็ทๆ้ใ้ธๆใใฆใใ ใใ',
- 'trading-assistant.placeholders.inputAiFilterPrompt': 'ใซในใฟใ ใใญใณใใใๅ
ฅๅใใฆใใ ใใ๏ผใชใใทใงใณ๏ผ',
- 'trading-assistant.validation.indicatorRequired': 'ใคใณใธใฑใผใฟใผใ้ธๆใใฆใใ ใใ',
- 'trading-assistant.validation.exchangeRequired': 'ไบคๆใ้ธๆใใฆใใ ใใ',
- 'trading-assistant.validation.apiKeyRequired': 'APIใญใผใๅ
ฅๅใใฆใใ ใใ',
- 'trading-assistant.validation.secretKeyRequired': '็งๅฏใญใผใๅ
ฅๅใใฆใใ ใใ',
- 'trading-assistant.validation.passphraseRequired': 'ใในใใฌใผใบใๅ
ฅๅใใฆใใ ใใ',
- 'trading-assistant.validation.exchangeConfigIncomplete': 'ๅฎๅ
จใชไบคๆๆงๆๆ
ๅ ฑใๅ
ฅๅใใฆใใ ใใ',
- 'trading-assistant.validation.testConnectionRequired': 'ใพใใใในใๆฅ็ถใใใฟใณใใฏใชใใฏใใๆฅ็ถใๆๅใใใใจใ็ขบ่ชใใฆใใ ใใ',
- 'trading-assistant.validation.testConnectionFailed': 'ๆฅ็ถใในใใซๅคฑๆใใพใใใ่จญๅฎใ็ขบ่ชใใฆๅๅบฆใในใใใฆใใ ใใ',
- 'trading-assistant.validation.strategyNameRequired': 'ใใชใทใผๅใๅ
ฅๅใใฆใใ ใใ',
- 'trading-assistant.validation.symbolRequired': 'ๅๅผใใขใ้ธๆใใฆใใ ใใ',
- 'trading-assistant.validation.initialCapitalRequired': 'ๆ่ณ้กใๅ
ฅๅใใฆใใ ใใ',
- 'trading-assistant.validation.leverageRequired': 'ใฌใใฌใใธๆฏ็ใๅ
ฅๅใใฆใใ ใใ',
- 'trading-assistant.table.time': 'ๆ้',
- 'trading-assistant.table.type': 'ใฟใคใ',
- 'trading-assistant.table.price': 'ไพกๆ ผ',
- 'trading-assistant.table.amount': 'ๆฐ้',
- 'trading-assistant.table.value': '้้ก',
- 'trading-assistant.table.commission': 'ๆๆฐๆ',
- 'trading-assistant.table.symbol': 'ๅๅผใใข',
- 'trading-assistant.table.side': 'ๆนๅ',
- 'trading-assistant.table.size': 'ใใธใทใงใณๆฐ้',
- 'trading-assistant.table.entryPrice': 'ใชใผใใณไพกๆ ผ',
- 'trading-assistant.table.currentPrice': '็พๅจใฎไพกๆ ผ',
- 'trading-assistant.table.unrealizedPnl': 'ๆชๅฎ็พๆ็',
- 'trading-assistant.table.pnlPercent': 'ๆ็็',
- 'trading-assistant.table.buy': '่ฒทใ',
- 'trading-assistant.table.sell': 'ๅฃฒใ',
- 'trading-assistant.table.long': '้ทใ็ถใใฆใใ ใใ',
- 'trading-assistant.table.short': '็ญใ',
- 'trading-assistant.table.noPositions': 'ใพใ ใใธใทใงใณใใใใพใใ',
- 'trading-assistant.detail.title': 'ๆฆ็ฅใฎ่ฉณ็ดฐ',
- 'trading-assistant.detail.strategyName': 'ใใชใทใผๅ',
- 'trading-assistant.detail.strategyType': 'ๆฆ็ฅใฟใคใ',
- 'trading-assistant.detail.status': 'ในใใผใฟใน',
- 'trading-assistant.detail.tradingMode': 'ๅๅผใขใใซ',
- 'trading-assistant.detail.exchange': 'ไบคๆ',
- 'trading-assistant.detail.initialCapital': 'ๅๆ่ณๆฌ',
- 'trading-assistant.detail.totalInvestment': 'ๆ่ณ็ท้ก',
- 'trading-assistant.detail.currentEquity': '็พๅจใฎ็ด่ณ็ฃ',
- 'trading-assistant.detail.totalPnl': 'ๆ็้็ฎ',
- 'trading-assistant.detail.indicatorName': 'ใคใณใธใฑใผใฟใผๅ',
- 'trading-assistant.detail.maxLeverage': 'ๆๅคงใฌใใฌใใธ',
- 'trading-assistant.detail.decideInterval': 'ๆฑบๅฎ้้',
- 'trading-assistant.detail.symbols': 'ใใฉใณใถใฏใทใงใณใชใใธใงใฏใ',
- 'trading-assistant.detail.createdAt': 'ไฝๆๆ้',
- 'trading-assistant.detail.updatedAt': 'ๆดๆฐๆ้',
- 'trading-assistant.detail.llmConfig': 'AIใขใใซๆงๆ',
- 'trading-assistant.detail.exchangeConfig': 'Exchangeใฎๆงๆ',
- 'trading-assistant.detail.provider': 'ใใญใใคใใผ',
- 'trading-assistant.detail.modelId': 'ใขใใซID',
- 'trading-assistant.detail.close': '้ใใ',
- 'trading-assistant.detail.loadFailed': 'ใใชใทใผใฎ่ฉณ็ดฐใๅๅพใงใใพใใใงใใ',
- 'trading-assistant.equity.noData': '็ด่ณ็ฃใใผใฟใฏใพใ ใใใพใใ',
- 'trading-assistant.equity.equity': '็ด่ณ็ฃ',
- 'trading-assistant.exchange.tradingMode': 'ๅๅผใขใใซ',
- 'trading-assistant.exchange.virtual': 'ๆจกๆฌๅๅผ',
- 'trading-assistant.exchange.live': 'ๅฎ้ใฎใใฉใณใถใฏใทใงใณ',
- 'trading-assistant.exchange.selectExchange': 'ไบคๆใ้ธๆ',
- 'trading-assistant.exchange.walletAddress': 'ใฆใฉใฌใใใขใใฌใน',
- 'trading-assistant.exchange.walletAddressPlaceholder': 'ใฆใฉใฌใใใขใใฌในใๅ
ฅๅใใฆใใ ใใ๏ผ0xใงๅงใพใ๏ผ',
- 'trading-assistant.exchange.privateKey': '็งๅฏ้ต',
- 'trading-assistant.exchange.privateKeyPlaceholder': '็งๅฏใญใผใๅ
ฅๅใใฆใใ ใใ(64ๆๅญ)',
- 'trading-assistant.exchange.testConnection': 'ใในใๆฅ็ถ',
- 'trading-assistant.exchange.connectionSuccess': 'ๆฅ็ถๆๅ',
- 'trading-assistant.exchange.connectionFailed': 'ๆฅ็ถใซๅคฑๆใใพใใ',
- 'trading-assistant.exchange.testFailed': 'ๆฅ็ถใในใใซๅคฑๆใใพใใ',
- 'trading-assistant.exchange.fillComplete': 'ๅฎๅ
จใชไบคๆๆงๆๆ
ๅ ฑใๅ
ฅๅใใฆใใ ใใ',
- 'trading-assistant.strategyTypeOptions.ai': 'AIไธปๅฐใฎๆฆ็ฅ',
- 'trading-assistant.strategyTypeOptions.indicator': 'ใใฏใใซใซๆๆจๆฆ็ฅ',
- 'trading-assistant.strategyTypeOptions.aiDeveloping': 'AIใๆดป็จใใๆฆ็ฅๆฉ่ฝใฏ้็บไธญใงใใฎใงใๆๅพ
ใใ ใใ',
- 'trading-assistant.strategyTypeOptions.aiDevelopingWarning': 'AIไธปๅฐใฎๆฆ็ฅๆฉ่ฝใฏ้็บไธญใงใ',
- 'trading-assistant.indicatorType.trend': 'ใใฌใณใ',
- 'trading-assistant.indicatorType.momentum': 'ๅขใ',
- 'trading-assistant.indicatorType.volatility': 'ๅคๅ',
- 'trading-assistant.indicatorType.volume': 'ใใชใฅใผใ ',
- 'trading-assistant.indicatorType.custom': 'ใซในใฟใใคใบ',
- 'trading-assistant.exchangeNames': {
- 'okx': 'OKX',
- 'binance': 'ใใคใใณใน',
- 'hyperliquid': '่ถ
ๆตๅๆง',
- 'blockchaincom': 'Blockchain.com',
- 'coinbaseexchange': 'ใณใคใณใใผใน',
- 'gate': 'Gate.io',
- 'mexc': 'ใกใญใทใณ',
- 'kraken': 'ใฏใฉใผใฑใณ',
- 'bitfinex': 'ใใใใใฃใใใฏใน',
- 'bybit': 'ใใคใใใ',
- 'kucoin': 'ใฏใผใณใคใณ',
- 'huobi': 'ใใฉใ',
- 'bitget': 'ใใฒใใ',
- 'bitmex': 'ใใใใกใใฏใน',
- 'deribit': 'ใใชใใใ',
- 'phemex': 'ใใงใกใใฏใน',
- 'bitmart': 'ใใใใใผใ',
- 'bitstamp': 'ใใใในใฟใณใ',
- 'bittrex': 'ใใใใฌใใฏใน',
- 'poloniex': 'ใใญใใจใใฏใน',
- 'gemini': 'ใธใงใใ',
- 'cryptocom': 'Crypto.com',
- 'bitflyer': 'ใใใใใฉใคใคใผ',
- 'upbit': 'ใขใใใใใ',
- 'bithumb': 'ใใตใ ',
- 'coinone': 'ใณใคใใณ',
- 'zb': 'ZB',
- 'lbank': 'Lใใณใฏ',
- 'bibox': 'ใใใใฏใน',
- 'bigone': 'ใใใฐใฏใณ',
- 'bitrue': 'ใใใฅใซใผ',
- 'coinex': 'CoinEx',
- 'digifinex': 'ใใธใใฃใใใฏใน',
- 'ftx': 'FTX',
- 'ftxus': 'FTX็ฑณๅฝ',
- 'binanceus': 'ใใคใใณในUS',
- 'binancecoinm': 'ใใคใใณใน COIN-M',
- 'binanceusdm': 'ใใคใใณในUSDโ-M',
- 'deepcoin': 'ใใฃใผใใณใคใณ'
- },
- 'ai-trading-assistant.title': 'AIๅๅผใขใทในใฟใณใ',
- 'ai-trading-assistant.strategyList': 'ๆฆ็ฅไธ่ฆง',
- 'ai-trading-assistant.createStrategy': 'ใใชใทใผใฎไฝๆ',
- 'ai-trading-assistant.noStrategy': 'ใพใ ๆฆ็ฅใฏใใใพใใ',
- 'ai-trading-assistant.selectStrategy': '่ฉณ็ดฐใ่กจ็คบใใใซใฏใๅทฆๅดใใๆฆ็ฅใ้ธๆใใฆใใ ใใ',
- 'ai-trading-assistant.startStrategy': 'ๆฆ็ฅใ็ซใกไธใใ',
- 'ai-trading-assistant.stopStrategy': 'ๆฆ็ฅใๅๆญขใใ',
- 'ai-trading-assistant.editStrategy': '็ทจ้ๆฆ็ฅ',
- 'ai-trading-assistant.deleteStrategy': 'ใใชใทใผใฎๅ้ค',
- 'ai-trading-assistant.status.running': 'ใฉใณใใณใฐ',
- 'ai-trading-assistant.status.stopped': 'ๅๆญขใใพใใ',
- 'ai-trading-assistant.status.error': 'ใจใฉใผ',
- 'ai-trading-assistant.tabs.tradingRecords': 'ๅๅผๅฑฅๆญด',
- 'ai-trading-assistant.tabs.positions': 'ไฝ็ฝฎ่จ้ฒ',
- 'ai-trading-assistant.tabs.aiDecisions': 'AIๅคๅฎ่จ้ฒ',
- 'ai-trading-assistant.tabs.equityCurve': '่ณๆฌๆฒ็ท',
- 'ai-trading-assistant.form.createTitle': 'AIๅๅผๆฆ็ฅใไฝๆใใ',
- 'ai-trading-assistant.form.editTitle': 'AIๅๅผๆฆ็ฅใ็ทจ้ใใ',
- 'ai-trading-assistant.form.strategyName': 'ใใชใทใผๅ',
- 'ai-trading-assistant.form.modelId': 'AIใขใใซ',
- 'ai-trading-assistant.form.modelIdHint': 'API ใญใผใ่จญๅฎใใใซใทในใใ OpenRouter ใตใผใในใไฝฟ็จใใ',
- 'ai-trading-assistant.form.decideInterval': 'ๆฑบๅฎ้้',
- 'ai-trading-assistant.form.decideInterval5m': '5ๅ',
- 'ai-trading-assistant.form.decideInterval10m': '10ๅ',
- 'ai-trading-assistant.form.decideInterval30m': '30ๅ',
- 'ai-trading-assistant.form.decideInterval1h': '1ๆ้',
- 'ai-trading-assistant.form.decideInterval4h': '4ๆ้',
- 'ai-trading-assistant.form.decideInterval1d': '1ๆฅ',
- 'ai-trading-assistant.form.decideInterval1w': '1้ฑ้',
- 'ai-trading-assistant.form.decideIntervalHint': 'AIใๆๆๆฑบๅฎใ่กใใพใงใฎๆ้้้',
- 'ai-trading-assistant.form.runPeriod': 'ๅฎ่กใตใคใฏใซ',
- 'ai-trading-assistant.form.runPeriodHint': 'ๆฆ็ฅๅฎ่กใฎ้ๅงๆๅปใจ็ตไบๆๅป',
- 'ai-trading-assistant.form.startDate': '้ๅงๆฅ',
- 'ai-trading-assistant.form.endDate': '็ตไบๆฅ',
- 'ai-trading-assistant.form.qdtCostTitle': 'QDT ๆง้คใฎๆ็คบ',
- 'ai-trading-assistant.form.qdtCostHint': 'AI ใฎๆฑบๅฎใใจใซ {cost} QDT ใๅทฎใๅผใใใพใใใขใซใฆใณใใซๅๅใช QDT ๆฎ้ซใใใใใจใ็ขบ่ชใใฆใใ ใใใๆฆ็ฅใฎๅฎ่กไธญใๆฑบๅฎใใจใซๆ้ใใชใขใซใฟใคใ ใงๅทฎใๅผใใใพใใ',
- 'ai-trading-assistant.form.apiKey': 'APIใญใผ',
- 'ai-trading-assistant.form.exchange': 'ไบคๆใ้ธๆ',
- 'ai-trading-assistant.form.secretKey': '็งๅฏ้ต',
- 'ai-trading-assistant.form.passphrase': 'ใในใใฌใผใบ',
- 'ai-trading-assistant.form.testConnection': 'ใในใๆฅ็ถ',
- 'ai-trading-assistant.form.symbol': 'ๅๅผใใข',
- 'ai-trading-assistant.form.symbolHint': 'ๅๅผใใๅๅผใใขใ้ธๆใใฆใใ ใใ',
- 'ai-trading-assistant.form.initialCapital': 'ๆ่ณ้ก๏ผ่จผๆ ้๏ผ',
- 'ai-trading-assistant.form.leverage': '่คๆฐใๆดป็จใใ',
- 'ai-trading-assistant.form.timeframe': 'ๆ้',
- 'ai-trading-assistant.form.timeframe1m': '1ๅ',
- 'ai-trading-assistant.form.timeframe5m': '5ๅ',
- 'ai-trading-assistant.form.timeframe15m': '15ๅ',
- 'ai-trading-assistant.form.timeframe30m': '30ๅ',
- 'ai-trading-assistant.form.timeframe1H': '1ๆ้',
- 'ai-trading-assistant.form.timeframe4H': '4ๆ้',
- 'ai-trading-assistant.form.timeframe1D': '1ๆฅ',
- 'ai-trading-assistant.form.marketType': 'ๅธๅ ดใฟใคใ',
- 'ai-trading-assistant.form.marketTypeFutures': 'ๅฅ็ด',
- 'ai-trading-assistant.form.marketTypeSpot': 'ในใใใ',
- 'ai-trading-assistant.form.totalPnl': 'ๆ็้็ฎ',
- 'ai-trading-assistant.form.customPrompt': 'ใซในใฟใ ใฎใใญใณใใๅ่ช',
- 'ai-trading-assistant.form.customPromptHint': 'ใชใใทใงใณใ AI ๅๅผๆฆ็ฅใจๆๆๆฑบๅฎใญใธใใฏใใซในใฟใใคใบใใใใใซไฝฟ็จใใใพใใ',
- 'ai-trading-assistant.form.cancel': 'ใญใฃใณใปใซ',
- 'ai-trading-assistant.form.prev': 'ๅใฎในใใใ',
- 'ai-trading-assistant.form.next': 'ๆฌกใฎในใใใ',
- 'ai-trading-assistant.form.confirmCreate': 'ไฝๆใฎ็ขบ่ช',
- 'ai-trading-assistant.form.confirmEdit': 'ๅคๆดใ็ขบ่ชใใ',
- 'ai-trading-assistant.messages.createSuccess': 'ๆฆ็ฅใๆญฃๅธธใซไฝๆใใใพใใ',
- 'ai-trading-assistant.messages.createFailed': 'ใใชใทใผใฎไฝๆใซๅคฑๆใใพใใ',
- 'ai-trading-assistant.messages.updateSuccess': 'ใใชใทใผใฎๆดๆฐใๆๅใใพใใ',
- 'ai-trading-assistant.messages.updateFailed': 'ใใชใทใผใฎๆดๆฐใซๅคฑๆใใพใใ',
- 'ai-trading-assistant.messages.deleteSuccess': 'ใใชใทใผใฎๅ้คใๆๅใใพใใ',
- 'ai-trading-assistant.messages.deleteFailed': 'ใใชใทใผใฎๅ้คใซๅคฑๆใใพใใ',
- 'ai-trading-assistant.messages.startSuccess': 'ๆฆ็ฅใฏ็กไบใซ้ๅงใใใพใใ',
- 'ai-trading-assistant.messages.startFailed': 'ใใชใทใผใฎ้ๅงใซๅคฑๆใใพใใ',
- 'ai-trading-assistant.messages.stopSuccess': 'ๆฆ็ฅใฏๆญฃๅธธใซๅๆญขใใใพใใ',
- 'ai-trading-assistant.messages.stopFailed': 'ๅๆญขๆฆ็ฅใฏๅคฑๆใใพใใ',
- 'ai-trading-assistant.messages.loadFailed': 'ใใชใทใผใชในใใฎๅๅพใซๅคฑๆใใพใใ',
- 'ai-trading-assistant.messages.loadDecisionsFailed': 'AIๅคๅฎ่จ้ฒใฎๅๅพใซๅคฑๆใใพใใ',
- 'ai-trading-assistant.messages.deleteConfirm': 'ใใฎใใชใทใผใๅ้คใใฆใใใใใใงใใ?ใใฎๆไฝใฏๅ
ใซๆปใใใจใใงใใพใใใ',
- 'ai-trading-assistant.placeholders.inputStrategyName': 'ใใชใทใผๅใๅ
ฅๅใใฆใใ ใใ',
- 'ai-trading-assistant.placeholders.selectModelId': 'AI ใขใใซใ้ธๆใใฆใใ ใใ',
- 'ai-trading-assistant.placeholders.selectDecideInterval': 'ๆฑบๅฎ้้ใ้ธๆใใฆใใ ใใ',
- 'ai-trading-assistant.placeholders.startTime': '้ๅงๆ้',
- 'ai-trading-assistant.placeholders.endTime': '็ตไบๆ้',
- 'ai-trading-assistant.placeholders.inputApiKey': 'APIใญใผใๅ
ฅๅใใฆใใ ใใ',
- 'ai-trading-assistant.placeholders.selectExchange': 'ไบคๆใ้ธๆใใฆใใ ใใ',
- 'ai-trading-assistant.placeholders.inputSecretKey': '็งๅฏใญใผใๅ
ฅๅใใฆใใ ใใ',
- 'ai-trading-assistant.placeholders.inputPassphrase': 'ใในใใฌใผใบใๅ
ฅๅใใฆใใ ใใ',
- 'ai-trading-assistant.placeholders.selectSymbol': 'BTC/USDT ใชใฉใฎๅๅผใใขใ้ธๆใใฆใใ ใใใ',
- 'ai-trading-assistant.placeholders.selectTimeframe': 'ๆ้ใ้ธๆใใฆใใ ใใ',
- 'ai-trading-assistant.placeholders.inputCustomPrompt': 'ใซในใฟใ ใฎใใญใณใใๅ่ชใๅ
ฅๅใใฆใใ ใใ (ใชใใทใงใณ)',
- 'ai-trading-assistant.validation.strategyNameRequired': 'ใใชใทใผๅใๅ
ฅๅใใฆใใ ใใ',
- 'ai-trading-assistant.validation.modelIdRequired': 'AI ใขใใซใ้ธๆใใฆใใ ใใ',
- 'ai-trading-assistant.validation.runPeriodRequired': 'ๅฎ่กใตใคใฏใซใ้ธๆใใฆใใ ใใ',
- 'ai-trading-assistant.validation.apiKeyRequired': 'APIใญใผใๅ
ฅๅใใฆใใ ใใ',
- 'ai-trading-assistant.validation.exchangeRequired': 'ไบคๆใ้ธๆใใฆใใ ใใ',
- 'ai-trading-assistant.validation.secretKeyRequired': '็งๅฏใญใผใๅ
ฅๅใใฆใใ ใใ',
- 'ai-trading-assistant.validation.symbolRequired': 'ๅๅผใใขใ้ธๆใใฆใใ ใใ',
- 'ai-trading-assistant.validation.initialCapitalRequired': 'ๆ่ณ้กใๅ
ฅๅใใฆใใ ใใ',
- 'ai-trading-assistant.table.time': 'ๆ้',
- 'ai-trading-assistant.table.type': 'ใฟใคใ',
- 'ai-trading-assistant.table.price': 'ไพกๆ ผ',
- 'ai-trading-assistant.table.amount': 'ๆฐ้',
- 'ai-trading-assistant.table.value': '้้ก',
- 'ai-trading-assistant.table.symbol': 'ๅๅผใใข',
- 'ai-trading-assistant.table.side': 'ๆนๅ',
- 'ai-trading-assistant.table.size': 'ใใธใทใงใณๆฐ้',
- 'ai-trading-assistant.table.entryPrice': 'ใชใผใใณไพกๆ ผ',
- 'ai-trading-assistant.table.currentPrice': '็พๅจใฎไพกๆ ผ',
- 'ai-trading-assistant.table.unrealizedPnl': 'ๆชๅฎ็พๆ็',
- 'ai-trading-assistant.table.profit': 'ๆ็',
- 'ai-trading-assistant.table.openLong': '้ทใ้ใ',
- 'ai-trading-assistant.table.closeLong': 'ใใณใใฅใช',
- 'ai-trading-assistant.table.openShort': 'ใชใผใใณใทใงใผใ',
- 'ai-trading-assistant.table.closeShort': '็ฉบใฎ',
- 'ai-trading-assistant.table.addLong': 'ใฌใใใ',
- 'ai-trading-assistant.table.addShort': '็ญใ่ฟฝๅ ใใ',
- 'ai-trading-assistant.table.closeShortProfit': 'ใทใงใผใใใธใทใงใณใงๅฉ็็ขบๅฎ',
- 'ai-trading-assistant.table.closeShortStop': 'ในใใใใญใน',
- 'ai-trading-assistant.table.closeLongProfit': '้ทใๅๆญขใใฆๅฉ็ใๅพใ',
- 'ai-trading-assistant.table.closeLongStop': 'ในใใใใญใน',
- 'ai-trading-assistant.table.buy': '่ฒทใ',
- 'ai-trading-assistant.table.sell': 'ๅฃฒใ',
- 'ai-trading-assistant.table.long': '้ทใ็ถใใฆใใ ใใ',
- 'ai-trading-assistant.table.short': '็ญใ',
- 'ai-trading-assistant.table.hold': 'ใใผใซใ',
- 'ai-trading-assistant.table.reasoning': 'ๅๆ็็ฑ',
- 'ai-trading-assistant.table.decisions': 'ๆๆๆฑบๅฎ',
- 'ai-trading-assistant.table.riskAssessment': 'ใชในใฏ่ฉไพก',
- 'ai-trading-assistant.table.confidence': '่ชไฟก',
- 'ai-trading-assistant.table.totalRecords': 'ๅ่จ {total} ใฌใณใผใ',
- 'ai-trading-assistant.table.noPositions': 'ใพใ ใใธใทใงใณใใใใพใใ',
- 'ai-trading-assistant.detail.title': 'ๆฆ็ฅใฎ่ฉณ็ดฐ',
- 'ai-trading-assistant.equity.noData': '็ด่ณ็ฃใใผใฟใฏใพใ ใใใพใใ',
- 'ai-trading-assistant.equity.equity': '็ด่ณ็ฃ',
- 'ai-trading-assistant.exchange.testFailed': 'ๆฅ็ถใในใใซๅคฑๆใใพใใ',
- 'ai-trading-assistant.exchange.connectionSuccess': 'ๆฅ็ถๆๅ',
- 'ai-trading-assistant.exchange.connectionFailed': 'ๆฅ็ถใซๅคฑๆใใพใใ',
- 'ai-trading-assistant.form.advancedSettings': '่ฉณ็ดฐ่จญๅฎ',
- 'ai-trading-assistant.form.orderMode': 'ใชใผใใผใขใผใ',
- 'ai-trading-assistant.form.orderModeMaker': 'ใกใผใซใผ',
- 'ai-trading-assistant.form.orderModeTaker': 'ๅธๅ ดไพกๆ ผ๏ผใใคใซใผ๏ผ',
- 'ai-trading-assistant.form.orderModeHint': 'ๆชๆฑบๆณจๆใขใผใใงใฏๆๅคๆณจๆใไฝฟ็จใใใๆๆฐๆใๅฎใใชใใพใใๅธๅ ดไพกๆ ผใขใผใใฏใใใซๅฎ่กใใใๆๆฐๆใ้ซใใชใใพใใ',
- 'ai-trading-assistant.form.makerWaitSec': 'ๆชๆฑบๆณจๆใฎๅพ
ใกๆ้ (็ง)',
- 'ai-trading-assistant.form.makerWaitSecHint': 'ๆณจๆๅพใฎๅๅผใๅพ
ใคๆ้ใใญใฃใณใปใซใใฆใใฟใคใ ใขใฆใๅพใซๅ่ฉฆ่กใใฆใใ ใใใ',
- 'ai-trading-assistant.form.makerRetries': 'ๆชๆฑบๆณจๆใฎๅ่ฉฆ่กๅๆฐ',
- 'ai-trading-assistant.form.makerRetriesHint': 'ๆชๆฑบๆณจๆใ็ดๅฎใใชใๅ ดๅใฎๆๅคงใชใใฉใคๅๆฐ',
- 'ai-trading-assistant.form.fallbackToMarket': 'ๆชๆฑบๆณจๆใฏๅคฑๆใใๅธๅ ดไพกๆ ผใฏๅผใไธใใใใพใใ',
- 'ai-trading-assistant.form.fallbackToMarketHint': '้ๅง/็ตไบๆชๆฑบๆณจๆใๅฎไบใใฆใใชใๅ ดๅใใใฉใณใถใฏใทใงใณใ็ขบๅฎใซๅฎไบใใใใใใซๆ่กๆณจๆใซใใฆใณใฐใฌใผใใใๅฟ
่ฆใใใใใฉใใใ',
- 'ai-trading-assistant.form.marginMode': 'ใใผใธใณใขใผใ',
- 'ai-trading-assistant.form.marginModeCross': 'ๅๅบซใใใฃใฑใ',
- 'ai-trading-assistant.form.marginModeIsolated': 'ๅญค็ซใใไฝ็ฝฎ',
- 'ai-analysis.title': 'ใฏใฉใณใฟใ ใใฌใผใใฃใณใฐใจใณใธใณ',
- 'ai-analysis.system.online': 'ใชใณใฉใคใณ',
- 'ai-analysis.system.agents': 'ใจใผใธใงใณใ',
- 'ai-analysis.system.active': 'ใขใฏใใฃใใช',
- 'ai-analysis.system.stage': 'ในใใผใธ',
- 'ai-analysis.panel.roster': 'ใจใผใธใงใณใใฉใคใณใใใ',
- 'ai-analysis.panel.thinking': '่ใไธญ...',
- 'ai-analysis.panel.done': 'ๅฎไบ',
- 'ai-analysis.panel.standby': 'ในใฟใณใใค',
- 'ai-analysis.input.title': 'ใฏใฉใณใฟใ ใใฌใผใใฃใณใฐใจใณใธใณ',
- 'ai-analysis.input.placeholder': 'ใฟใผใฒใใ่ณ็ฃใ้ธๆใใพใ (ไพ: BTC/USDT)',
- 'ai-analysis.input.watchlist': 'ใชใใทใงใณในใใใฏ',
- 'ai-analysis.input.start': 'ๅๆใ้ๅงใใ',
- 'ai-analysis.input.recent': 'ๆ่ฟใฎใฟในใฏ:',
- 'ai-analysis.vis.stage': 'ในใใผใธ',
- 'ai-analysis.vis.processing': 'ๅฆ็ไธญ',
- 'ai-analysis.result.complete': 'ๅๆๅฎไบ',
- 'ai-analysis.result.signal': 'ๆ็ตไฟกๅท',
- 'ai-analysis.result.confidence': '่ชไฟก:',
- 'ai-analysis.result.new': 'ๆฐใใๅๆ',
- 'ai-analysis.result.full': 'ใฌใใผใๅ
จไฝใ่กจ็คบ',
- 'ai-analysis.logs.title': 'ใทในใใ ใญใฐ',
- 'ai-analysis.modal.title': 'ๆฉๅฏๅ ฑๅๆธ',
- 'ai-analysis.modal.fundamental': 'ใใกใณใใกใณใฟใซใบๅๆ',
- 'ai-analysis.modal.technical': 'ใใฏใใซใซๅๆ',
- 'ai-analysis.modal.sentiment': 'ๆๆ
ๅๆ',
- 'ai-analysis.modal.risk': 'ใชในใฏ่ฉไพก',
- 'ai-analysis.stage.idle': 'ในใฟใณใใค',
- 'ai-analysis.stage.1': 'ใใงใผใบ 1: ๅคๆฌกๅ
ๅๆ',
- 'ai-analysis.stage.2': 'ใใงใผใบ 2: ้ท็ญ่จ่ซ',
- 'ai-analysis.stage.3': 'ใใงใผใบ 3: ๆฆ็ฅ่จ็ป',
- 'ai-analysis.stage.4': '็ฌฌ 4 ๆฎต้: ใชในใฏ็ฎก็ใฎใฌใใฅใผ',
- 'ai-analysis.stage.complete': 'ๅฎไบ',
- 'ai-analysis.agent.investment_director': 'ๆ่ณใใฃใฌใฏใฟใผ',
- 'ai-analysis.agent.role.investment_director': 'ๅ
ๆฌ็ใชๅๆใจๆ็ต็ต่ซ',
- 'ai-analysis.agent.market': 'ๅธๅ ดใขใใชในใ',
- 'ai-analysis.agent.role.market': 'ใใฏใใญใธใผใจๅธๅ ดใใผใฟ',
- 'ai-analysis.agent.fundamental': 'ใใกใณใใกใณใฟใซใบใขใใชในใ',
- 'ai-analysis.agent.role.fundamental': '่ฒกๅใจ่ฉไพก',
- 'ai-analysis.agent.technical': 'ใใฏใใซใซใขใใชในใ',
- 'ai-analysis.agent.role.technical': 'ใใฏใใซใซๆๆจใจใใฃใผใ',
- 'ai-analysis.agent.news': 'ใใฅใผในใขใใชในใ',
- 'ai-analysis.agent.role.news': 'ใฐใญใผใใซใใฅใผในใใฃใซใฟใผ',
- 'ai-analysis.agent.sentiment': 'ใปใณใใกใณใใขใใชในใ',
- 'ai-analysis.agent.role.sentiment': '็คพไผ็๏ผๆๆ
็',
- 'ai-analysis.agent.risk': 'ใชในใฏใขใใชในใ',
- 'ai-analysis.agent.role.risk': 'ๅบๆฌ็ใชใชในใฏใใงใใฏ',
- 'ai-analysis.agent.bull': 'ๅผทๆฐใช็ ็ฉถ่
',
- 'ai-analysis.agent.role.bull': 'ๆ้ท่งฆๅชใฎๆกๆ',
- 'ai-analysis.agent.bear': 'ๅผฑๆฐใช็ ็ฉถ่
',
- 'ai-analysis.agent.role.bear': 'ใชในใฏใจๆฌ ้ฅใฎๆใไธใ',
- 'ai-analysis.agent.manager': '็ ็ฉถใใใผใธใฃใผ',
- 'ai-analysis.agent.role.manager': 'ใใฃใใผใใขใใฌใผใฟใผ',
- 'ai-analysis.agent.trader': 'ใใฌใผใใผ',
- 'ai-analysis.agent.role.trader': 'ใจใฐใผใฏใใฃใใปในใใฉใใธในใ',
- 'ai-analysis.agent.risky': 'ๆดปๅๅฎถใขใใชในใ',
- 'ai-analysis.agent.role.risky': '็ฉๆฅต็ใชๆฆ็ฅ',
- 'ai-analysis.agent.neutral': 'ใใฉใณในใขใใชในใ',
- 'ai-analysis.agent.role.neutral': 'ใใฉใณในๆฆ็ฅ',
- 'ai-analysis.agent.safe': 'ไฟๅฎ็ใชใขใใชในใ',
- 'ai-analysis.agent.role.safe': 'ไฟๅฎ็ใชๆฆ็ฅ',
- 'ai-analysis.agent.cro': 'ใชในใฏใณใณใใญใผใซใใใผใธใฃใผ (CRO)',
- 'ai-analysis.agent.role.cro': 'ๆ็ต็ใชๆๆๆฑบๅฎๆจฉ้',
- 'ai-analysis.script.market': 'ไธป่ฆใชๅๅผๆใใ OHLCV ใใผใฟใๅๅพใใฆใใพใ...',
- 'ai-analysis.script.fundamental': 'ๅๅๆ่ฒกๅๅ ฑๅๆธใๅๅพใใฆใใพใ...',
- 'ai-analysis.script.technical': 'ใใฏใใซใซๆๆจใจใใฃใผใใใฟใผใณใๅๆใใฆใใพใ...',
- 'ai-analysis.script.news': 'ไธ็็ใช้่ใใฅใผในใ่ชฟในใฆใใพใ...',
- 'ai-analysis.script.sentiment': 'ใฝใผใทใฃใซใกใใฃใขใฎใใฌใณใใๅๆไธญ...',
- 'ai-analysis.script.risk': '้ๅปใฎใใฉใใฃใชใใฃใ่จ็ฎใใฆใใพใ...',
- 'invite.inviteLink': 'ๆๅพ
ใชใณใฏ',
- 'invite.copy': 'ใชใณใฏใใณใใผ',
- 'invite.copySuccess': 'ใณใใผๆๅ๏ผ',
- 'invite.copyFailed': 'ใณใใผใซๅคฑๆใใพใใใ ๆๅใงใณใใผใใฆใใ ใใ',
- 'invite.noInviteLink': 'ๆๅพ
ใชใณใฏใ็ๆใใใพใใใงใใ',
- 'invite.totalInvites': '็ดฏ็ฉๆๅพ
็ถ',
- 'invite.totalReward': '็ดฏ่จๅ ฑ้
ฌ',
- 'invite.rules': 'ๆๅพ
ใซใผใซ',
- 'invite.rule1': 'ๅ้ใฎ็ป้ฒใซๆๅใใใใณใซใๅ ฑ้
ฌใๅใๅใใพใ',
- 'invite.rule2': 'ๆๅพ
ใใใๅ้ใๆๅใฎใใฉใณใถใฏใทใงใณใๅฎไบใใใจใ่ฟฝๅ ใฎๅ ฑ้
ฌใๅใๅใใพใ',
- 'invite.rule3': 'ๆๅพ
็นๅ
ธใฏใขใซใฆใณใใซ็ดๆฅ้ไฟกใใใพใ',
- 'invite.inviteList': 'ๆๅพ
ใชในใ',
- 'invite.tasks': 'ใใใทใงใณใปใณใฟใผ',
- 'invite.inviteeName': 'ๆๅพ
่
',
- 'invite.inviteTime': 'ๆๅพ
ๆ้',
- 'invite.status': 'ในใใผใฟใน',
- 'invite.reward': 'ๅ ฑ้
ฌ',
- 'invite.active': 'ใขใฏใใฃใใช',
- 'invite.inactive': 'ใขใฏใใฃใๅใใใฆใใพใใ',
- 'invite.completed': 'ๅฎไบ',
- 'invite.claimed': 'ๅใๅใใพใใ',
- 'invite.pending': 'ๅฎๆไบๅฎ',
- 'invite.goToTask': 'ๅฎไบใใ',
- 'invite.claimReward': 'ๅ ฑ้
ฌใ่ซๆฑใใ',
- 'invite.verify': 'ๆค่จผๅฎไบ',
- 'invite.verifySuccess': 'ๆค่จผๆๅ๏ผใฟในใฏใๅฎไบใใพใใ',
- 'invite.verifyNotCompleted': 'ใฟในใฏใฏใพใ ๅฎไบใใฆใใพใใใ ๆๅใซใฟในใฏใๅฎไบใใฆใใ ใใ',
- 'invite.verifyFailed': 'ๆค่จผใซๅคฑๆใใพใใใๅพใงใใไธๅบฆใ่ฉฆใใใ ใใ',
- 'invite.claimSuccess': '{reward} QDT ใๆญฃๅธธใซๅใๅใใพใใ!',
- 'invite.claimFailed': 'ๅ้ใซๅคฑๆใใพใใใ ๅพใงใใไธๅบฆใ่ฉฆใใใ ใใ',
- 'invite.totalRecords': 'ๅ่จ {total} ใฌใณใผใ',
- 'invite.task.twitter.title': 'X๏ผTwitter๏ผใซใชใใคใผใ',
- 'invite.task.twitter.desc': 'ๅ
ฌๅผใใคใผใใ X (Twitter) ใขใซใฆใณใใซๅ
ฑๆใใพใ',
- 'invite.task.youtube.title': 'YouTube ใใฃใณใใซใใใฉใญใผใใฆใใ ใใ',
- 'invite.task.youtube.desc': 'ๅ
ฌๅผ YouTube ใใฃใณใใซใ่ณผ่ชญใใฆใใฉใญใผใใฆใใ ใใ',
- 'invite.task.telegram.title': 'ใใฌใฐใฉใ ใฐใซใผใใซๅๅ ใใ',
- 'invite.task.telegram.desc': 'ๅ
ฌๅผ Telegram ใณใใฅใใใฃ ใฐใซใผใใซๅๅ ใใฆใใ ใใ',
- 'invite.task.discord.title': 'Discordใตใผใใผใซๅๅ ใใ',
- 'invite.task.discord.desc': 'Discordใณใใฅใใใฃใตใผใใผใซๅๅ ใใฆใใ ใใ',
- 'message': '-',
- 'layouts.usermenu.dialog.title': 'ๆ
ๅ ฑ',
- 'layouts.usermenu.dialog.content': 'ใญใฐใขใฆใใใฆใใใใใใงใใ?',
- 'layouts.userLayout.title': 'ไธ็ขบๅฎๆงใฎไธญใง็ๅฎใ่ฆใคใใ',
- // Auto-filled missing keys from en-US (fallback to English)
- 'dashboard.indicator.boundary.message': 'Note: The indicator script only computes plots + buy/sell signals. Position sizing, risk, scaling, fees/slippage belong to execution config.',
- 'dashboard.indicator.boundary.indicatorRule': "Keep the script to buy/sell only (and set df['buy']/df['sell']). Do NOT implement position management, TP/SL, scaling in the script.",
- 'dashboard.indicator.boundary.backtestRule': 'Rule: If a bar has a main signal (buy/sell โ open/close/reverse), scaling in/out is skipped on the same bar.',
- 'dashboard.indicator.guide.title': 'Python Indicator & Strategy Development Guide',
- 'dashboard.indicator.guide.intro': 'This platform supports writing custom technical indicators and trading signals using Python. The system includes built-in pandas and numpy data analysis libraries. You can use standard DataFrame operations to process K-line data and draw charts or mark buy/sell signals.',
- 'dashboard.indicator.guide.section1.title': '1. Runtime Environment & Predefined Variables',
- 'dashboard.indicator.guide.section1.env': 'Your code runs in a browser-based Python environment (Pyodide).',
- 'dashboard.indicator.guide.section1.libs': 'Pre-installed Libraries',
- 'dashboard.indicator.guide.section1.libsDesc': 'The following libraries are imported by default, no need to import again:',
- 'dashboard.indicator.guide.section1.libsList': 'pandas (pd), numpy (np), math, json',
- 'dashboard.indicator.guide.section1.data': 'Input Data: df',
- 'dashboard.indicator.guide.section1.dataDesc': 'The system automatically converts current K-line data into a Pandas DataFrame object, variable name is df.',
- 'dashboard.indicator.guide.section1.dataColumns': 'df contains the following columns (all float type):',
- 'dashboard.indicator.guide.section1.dataColumnsList': 'time (timestamp, seconds), open, high, low, close, volume',
- 'dashboard.indicator.guide.section1.dataNote': 'Data index is arranged from old to new (0 is the earliest data, last row is the latest data).',
- 'dashboard.indicator.guide.section1.dataIndex': 'Important: df index is timestamp (DatetimeIndex), please preserve the index, avoid using .values which loses the index.',
- 'dashboard.indicator.guide.section2.title': '2. Parameter Definition',
- 'dashboard.indicator.guide.section2.desc': 'You can define variables as parameters at the beginning of your code. The system will try to parse statements like variable = value as adjustable parameters.',
- 'dashboard.indicator.guide.section2.example': 'Parameter Example',
- 'dashboard.indicator.guide.section2.exampleCode': 'span = 20 or multiplier = 2.0',
- 'dashboard.indicator.guide.section3.title': '3. Backtest Signal Setup (Important!)',
- 'dashboard.indicator.guide.section3.desc': 'If you want your indicator to support backtesting, you must set the following two columns in your code:',
- 'dashboard.indicator.guide.section3.backtestRequired': 'Required for Backtesting:',
- 'dashboard.indicator.guide.section3.backtestBuySignal': "df['buy_signal'] - Boolean Series, True indicates buy signal",
- 'dashboard.indicator.guide.section3.backtestSellSignal': "df['sell_signal'] - Boolean Series, True indicates sell signal",
- 'dashboard.indicator.guide.section3.backtestExample': 'Example:',
- 'dashboard.indicator.guide.section3.backtestExampleCode': "df['buy_signal'] = condition_buydf['sell_signal'] = condition_sell",
- 'dashboard.indicator.guide.section3.backtestNote': 'Note: Even if you only set output.signals for chart display, you must set these two columns to enable backtesting.',
- 'dashboard.indicator.guide.section4.title': '4. Output Requirements: output',
- 'dashboard.indicator.guide.section4.desc': 'At the end of code execution, you must define a dictionary named output to tell the chart how to display results.',
- 'dashboard.indicator.guide.section4.fields': 'The output dictionary contains the following fields:',
- 'dashboard.indicator.guide.section4.plots': 'plots - For drawing lines (e.g., moving averages, RSI)',
- 'dashboard.indicator.guide.section4.signals': 'signals - For marking buy/sell signals (e.g., arrows, labels)',
- 'dashboard.indicator.guide.section4.name': 'name - Indicator name (optional)',
- 'dashboard.indicator.guide.section4.calculatedVars': 'calculatedVars - Calculated variables (optional, for displaying additional information)',
- 'dashboard.indicator.guide.section5.title': '5. Plot Configuration (Plots)',
- 'dashboard.indicator.guide.section5.desc': 'Each object in the plots list represents a line.',
- 'dashboard.indicator.guide.section5.table.field': 'Field',
- 'dashboard.indicator.guide.section5.table.type': 'Type',
- 'dashboard.indicator.guide.section5.table.required': 'Required',
- 'dashboard.indicator.guide.section5.table.requiredYes': 'Yes',
- 'dashboard.indicator.guide.section5.table.requiredNo': 'No',
- 'dashboard.indicator.guide.section5.table.desc': 'Description',
- 'dashboard.indicator.guide.section5.table.name': 'The name of the indicator line, displayed in the legend',
- 'dashboard.indicator.guide.section5.table.data': 'Data list, length must match the number of rows in df. Recommended to use series.tolist()',
- 'dashboard.indicator.guide.section5.table.color': "Line color (Hex format, e.g. '#ff0000'). If not filled, the system will automatically assign",
- 'dashboard.indicator.guide.section5.table.typeDesc': "Chart type, default is 'line'",
- 'dashboard.indicator.guide.section5.table.overlay': 'Important. True means display on main chart (with K-line), False means display on sub-chart (independent area)',
- 'dashboard.indicator.guide.section5.example': 'Example: Draw Simple Moving Average (SMA)',
- 'dashboard.indicator.guide.section5.exampleCalc': 'Calculate SMA',
- 'dashboard.indicator.guide.section5.exampleOutput': 'Construct Output',
- 'dashboard.indicator.guide.section5.exampleOverlay': 'Display on main chart',
- 'dashboard.indicator.guide.section6.title': '6. Signal Markers (Signals)',
- 'dashboard.indicator.guide.section6.desc': "signals are used to mark buy/sell points on specific K-lines through icons or text. Note: This is only for chart display. The backtest system uses df['buy_signal'] and df['sell_signal'].",
- 'dashboard.indicator.guide.section6.table.type': "Signal type: 'buy' (buy, marked below K-line) or 'sell' (sell, marked above K-line)",
- 'dashboard.indicator.guide.section6.table.data': 'Signal data list. Fill price value at signal positions, fill None (or np.nan) at non-signal positions',
- 'dashboard.indicator.guide.section6.table.text': 'Text displayed on the label (e.g. "B", "S", "Buy", "Sell")',
- 'dashboard.indicator.guide.section6.table.color': 'Marker color',
- 'dashboard.indicator.guide.section6.hint': 'The system automatically handles positioning.',
- 'dashboard.indicator.guide.section6.buy': 'Markers will be automatically positioned below the Low of the current K-line',
- 'dashboard.indicator.guide.section6.sell': 'Markers will be automatically positioned above the High of the current K-line',
- 'dashboard.indicator.guide.section6.example': 'Example: Draw Buy/Sell Signals',
- 'dashboard.indicator.guide.section6.exampleInit': 'Initialize signal list, fill all with None',
- 'dashboard.indicator.guide.section6.exampleLogic': 'Simple logic: mark buy when close price is greater than open price',
- 'dashboard.indicator.guide.section6.exampleNote': 'In actual logic, please use loops or vectorized operations',
- 'dashboard.indicator.guide.section6.examplePrice': 'Record price',
- 'dashboard.indicator.guide.section6.exampleText': 'Buy',
- 'dashboard.indicator.guide.section7.title': '7. Complete Code Examples',
- 'dashboard.indicator.guide.section7.exampleA': 'Example A: Dual EMA Strategy (Supports Backtesting)',
- 'dashboard.indicator.guide.section7.exampleACode': "# 1. Calculate indicatorsdf['open_long'], df['close_long'], df['open_short'], df['close_short'] (boolean). Even if you set output.signals for chart display, you must set these columns to enable backtesting.",
- 'dashboard.indicator.guide.section8.q2': 'Q: Data length mismatch?',
- 'dashboard.indicator.guide.section8.a2': "A: The data list in plots and signals must have exactly the same length as the K-line data. If you use df['xxx'].tolist(), there is usually no problem.",
- 'dashboard.indicator.guide.section8.q3': 'Q: How to handle NaN (empty values)?',
- 'dashboard.indicator.guide.section8.a3': "A: Pandas calculations (such as rolling mean) will produce NaN at the beginning. The system will automatically convert NaN to null for chart rendering. You don't need to manually clean it, but if you need specific logic, you can use df.fillna(0) or other methods.",
- 'dashboard.indicator.guide.section8.q4': 'Q: Index mismatch causing all signals to be NaN?',
- 'dashboard.indicator.guide.section8.a4': "A: Please ensure you preserve the original df index (timestamp). Avoid using .values to create new Series. Use columns directly like df['close'] for operations.",
- 'dashboard.indicator.guide.section8.q5': 'Q: Can I use third-party network libraries?',
- 'dashboard.indicator.guide.section8.a5': 'A: No. The runtime environment is a browser sandbox and cannot use libraries like requests to request external APIs, nor can it install additional pip packages. Limited to built-in libraries such as pandas, numpy, math, json.',
- 'dashboard.indicator.guide.section8.q6': 'Q: How to debug code?',
- 'dashboard.indicator.guide.section8.a6': 'A: If the chart does not display indicators, it is usually because the Python code has an error. Please check for syntax errors or array index out of bounds. It is recommended to debug the algorithm logic in a local Python environment first, then copy it in.',
- 'dashboard.indicator.guide.section8.q7': 'Q: Backtest shows 0 signals?',
- 'dashboard.indicator.guide.section8.a7': "A: Please check the data type of df['open_long']/df['close_long']/df['open_short']/df['close_short']. They should be boolean (True/False), not numeric. Use condition.fillna(False).astype(bool) to ensure correct type.",
- 'dashboard.indicator.backtest.commissionHint': 'Charged on notional value (incl. leverage) per trade; both entry & exit are deducted from balance.',
- 'dashboard.indicator.backtest.historyTitle': 'Backtest History',
- 'dashboard.indicator.backtest.historyRefresh': 'Refresh',
- 'dashboard.indicator.backtest.historyView': 'View',
- 'dashboard.indicator.backtest.historyNoData': 'No backtest history',
- 'dashboard.indicator.backtest.historyUseCurrent': 'Only current symbol/timeframe',
- 'dashboard.indicator.backtest.historyFilterSymbol': 'Symbol',
- 'dashboard.indicator.backtest.historyFilterTimeframe': 'Timeframe',
- 'dashboard.indicator.backtest.historyApply': 'Apply filters',
- 'dashboard.indicator.backtest.historyAIAnalyze': 'AI Analyze',
- 'dashboard.indicator.backtest.historyAIAnalyzeTitle': 'AI Suggestions',
- 'dashboard.indicator.backtest.historyNoAIResult': 'No AI analysis result',
- 'dashboard.indicator.backtest.historyRunId': 'Run ID',
- 'dashboard.indicator.backtest.historyCreatedAt': 'Time',
- 'dashboard.indicator.backtest.historyRange': 'Range',
- 'dashboard.indicator.backtest.historyStatus': 'Status',
- 'dashboard.indicator.backtest.historyStatusSuccess': 'Success',
- 'dashboard.indicator.backtest.historyStatusFailed': 'Failed',
- 'dashboard.indicator.backtest.historyActions': 'Actions',
- 'dashboard.indicator.backtest.hint.entryPctMax': 'Max entry: {maxPct}% (reserve budget for future scale-ins)',
- 'trading-assistant.exchange.ipWhitelistTip': 'Please add the following IPs to the whitelist in your exchange API settings:',
- 'signal-robot.title': 'Signal Robot Console',
- 'signal-robot.createBot': 'Create New Bot',
- 'signal-robot.search.nameOrSymbol': 'Name/Symbol',
- 'signal-robot.search.placeholder': 'Search bot name or symbol',
- 'signal-robot.search.status': 'Status',
- 'signal-robot.search.statusAll': 'All',
- 'signal-robot.search.statusRunning': 'Running',
- 'signal-robot.search.statusPaused': 'Paused',
- 'signal-robot.search.query': 'Query',
- 'signal-robot.search.reset': 'Reset',
- 'signal-robot.table.botName': 'Bot Name',
- 'signal-robot.table.symbolTimeframe': 'Symbol/Timeframe',
- 'signal-robot.table.triggerStrategy': 'Trigger Strategy',
- 'signal-robot.table.notificationChannels': 'Notification Channels',
- 'signal-robot.table.status': 'Status',
- 'signal-robot.table.action': 'Action',
- 'signal-robot.table.triggerConditions': '{count} trigger conditions',
- 'signal-robot.table.monitoring': 'Monitoring',
- 'signal-robot.table.paused': 'Paused',
- 'signal-robot.table.edit': 'Edit',
- 'signal-robot.table.pause': 'Pause',
- 'signal-robot.table.start': 'Start',
- 'signal-robot.table.delete': 'Delete',
- 'signal-robot.table.deleteConfirm': 'Are you sure you want to delete this bot?',
- 'signal-robot.table.deleteSuccess': 'Deleted successfully',
- 'signal-robot.table.startSuccess': 'Bot started',
- 'signal-robot.table.pauseSuccess': 'Bot paused',
- 'signal-robot.channel.telegram': 'Telegram',
- 'signal-robot.channel.discord': 'Discord',
- 'signal-robot.channel.email': 'Email',
- 'signal-robot.channel.webhook': 'Webhook',
- 'signal-robot.channel.browser': 'Browser Push',
- 'signal-robot.modal.createTitle': 'Create New Signal Robot',
- 'signal-robot.modal.editTitle': 'Edit Signal Robot',
- 'signal-robot.modal.step.basic': 'Basic Settings',
- 'signal-robot.modal.step.entry': 'Entry Strategy',
- 'signal-robot.modal.step.position': 'Position Management',
- 'signal-robot.modal.step.risk': 'Risk Control',
- 'signal-robot.modal.step.notify': 'Notification Config',
- 'signal-robot.modal.prev': 'Previous',
- 'signal-robot.modal.next': 'Next',
- 'signal-robot.modal.preview': 'Preview Backtest',
- 'signal-robot.modal.complete': 'Complete & Run',
- 'signal-robot.modal.saveSuccess': 'Saved successfully',
- 'signal-robot.modal.previewDeveloping': 'Preview feature is under development...',
- 'signal-robot.modal.basicInfoRequired': 'Please complete basic information',
- 'signal-robot.basic.alert': 'Set basic information for the bot',
- 'signal-robot.basic.title': 'Basic Information',
- 'signal-robot.basic.botName': 'Bot Name',
- 'signal-robot.basic.botNamePlaceholder': 'e.g.: BTC SuperTrend Strategy',
- 'signal-robot.basic.symbol': 'Trading Pair',
- 'signal-robot.basic.symbolPlaceholder': 'Select from watchlist',
- 'signal-robot.basic.noWatchlist': 'No watchlist items, please add in market page first',
- 'signal-robot.basic.timeframe': 'K-Line Period',
- 'signal-robot.basic.timeframe15m': '15 Minutes',
- 'signal-robot.basic.timeframe30m': '30 Minutes',
- 'signal-robot.basic.timeframe1h': '1 Hour',
- 'signal-robot.basic.timeframe4h': '4 Hours',
- 'signal-robot.basic.timeframe1d': '1 Day',
- 'signal-robot.basic.autoNameSuggestion': '{symbol} Signal Robot',
- 'signal-robot.entry.alert': 'Trigger entry signal when all conditions below are met',
- 'signal-robot.entry.condition': 'Condition {index}',
- 'signal-robot.entry.indicator': 'Indicator',
- 'signal-robot.entry.indicatorSupertrend': 'SuperTrend',
- 'signal-robot.entry.indicatorEma': 'EMA (Exponential Moving Average)',
- 'signal-robot.entry.indicatorRsi': 'RSI (Relative Strength Index)',
- 'signal-robot.entry.indicatorMacd': 'MACD',
- 'signal-robot.entry.indicatorBollinger': 'Bollinger Bands',
- 'signal-robot.entry.atrPeriod': 'ATR Period',
- 'signal-robot.entry.multiplier': 'Multiplier',
- 'signal-robot.entry.triggerSignal': 'Trigger Signal',
- 'signal-robot.entry.signalTrendBullish': 'Trend Bullish',
- 'signal-robot.entry.signalTrendBearish': 'Trend Bearish',
- 'signal-robot.entry.signalIsUptrend': 'Is Uptrend',
- 'signal-robot.entry.signalIsDowntrend': 'Is Downtrend',
- 'signal-robot.entry.period': 'Period',
- 'signal-robot.entry.compareCondition': 'Compare Condition',
- 'signal-robot.entry.priceAbove': 'Price > EMA (Price Above)',
- 'signal-robot.entry.priceBelow': 'Price < EMA (Price Below)',
- 'signal-robot.entry.crossUp': 'Price Crosses Above EMA (Golden Cross)',
- 'signal-robot.entry.crossDown': 'Price Crosses Below EMA (Death Cross)',
- 'signal-robot.entry.compare': 'Compare',
- 'signal-robot.entry.greaterThan': 'Greater Than',
- 'signal-robot.entry.lessThan': 'Less Than',
- 'signal-robot.entry.crossUpShort': 'Cross Up',
- 'signal-robot.entry.crossDownShort': 'Cross Down',
- 'signal-robot.entry.threshold': 'Threshold',
- 'signal-robot.entry.selectIndicator': 'Please select an indicator to configure parameters',
- 'signal-robot.entry.addCondition': 'Add Condition',
- 'signal-robot.position.alert': 'Configure initial position size, leverage and pyramiding rules',
- 'signal-robot.position.basicTitle': 'Basic Position Management',
- 'signal-robot.position.initialSize': 'Initial Size (Capital %)',
- 'signal-robot.position.initialSizeHint': 'Recommended 5% - 20%',
- 'signal-robot.position.leverage': 'Leverage',
- 'signal-robot.position.leverageHint': 'Please ensure your exchange account supports this leverage',
- 'signal-robot.position.maxPyramiding': 'Max Pyramiding Times',
- 'signal-robot.position.maxPyramidingHint': '0 means no pyramiding',
- 'signal-robot.position.pyramidingTitle': 'Pyramiding Rules',
- 'signal-robot.position.pyramidingEnabled': 'Enabled',
- 'signal-robot.position.pyramidingDisabled': 'Disabled',
- 'signal-robot.position.pyramidingCondition': 'Pyramiding Trigger Condition',
- 'signal-robot.position.priceRisePct': 'Price Rises (Long) / Falls (Short)',
- 'signal-robot.position.profitPct': 'Profit Reaches',
- 'signal-robot.position.triggerThreshold': 'Trigger Threshold (%)',
- 'signal-robot.position.triggerThresholdHint': 'e.g. 3%: add position once every 3% rise',
- 'signal-robot.position.addSize': 'Single Add Size (Capital %)',
- 'signal-robot.position.pyramidingDisabledHint': 'Pyramiding disabled, only initial position will be executed',
- 'signal-robot.risk.alert': 'Configure take profit, stop loss and exit rules',
- 'signal-robot.risk.stopLossTitle': 'Stop Loss',
- 'signal-robot.risk.stopLossEnabled': 'Enabled',
- 'signal-robot.risk.stopLossDisabled': 'Disabled',
- 'signal-robot.risk.stopLossType': 'Stop Loss Type',
- 'signal-robot.risk.stopLossFixedPct': 'Fixed Percentage',
- 'signal-robot.risk.stopLossAtrMultiplier': 'ATR Multiplier',
- 'signal-robot.risk.stopLossValue': 'Value',
- 'signal-robot.risk.stopLossFixedHint': 'e.g. 2%: stop loss when loss reaches 2%',
- 'signal-robot.risk.stopLossAtrHint': 'e.g. 2.0: stop loss when price touches ATR*2.0',
- 'signal-robot.risk.stopLossDisabledHint': 'Stop loss disabled (high risk)',
- 'signal-robot.risk.trailingStopTitle': 'Trailing Stop',
- 'signal-robot.risk.activationProfit': 'Activation Profit (%)',
- 'signal-robot.risk.activationProfitHint': 'Start trailing when profit reaches this level',
- 'signal-robot.risk.callbackPct': 'Callback (%)',
- 'signal-robot.risk.callbackPctHint': 'Trigger take profit when price falls from peak by this percentage',
- 'signal-robot.risk.trailingStopDisabledHint': 'Trailing stop disabled',
- 'signal-robot.risk.otherExitTitle': 'Other Exit Rules',
- 'signal-robot.risk.signalExit': 'Allow Signal Exit',
- 'signal-robot.risk.signalExitHint': 'Close position immediately when reverse signal appears (e.g. close long when short signal appears)',
- 'signal-robot.notify.alert': 'Configure notification methods when signal is triggered',
- 'signal-robot.notify.channelTitle': 'Notification Channels',
- 'signal-robot.notify.discordWebhook': 'Discord Webhook',
- 'signal-robot.notify.genericWebhook': 'Generic Webhook',
- 'signal-robot.notify.webhookUrl': 'Webhook URL',
- 'signal-robot.notify.webhookUrlPlaceholder': 'https://example.com/webhook',
- 'signal-robot.notify.discordUrl': 'Discord URL',
- 'signal-robot.notify.discordUrlPlaceholder': 'https://discord.com/api/webhooks/...',
- 'signal-robot.operator.greaterThan': 'Greater Than',
- 'signal-robot.operator.lessThan': 'Less Than',
- 'signal-robot.operator.equal': 'Equal',
- 'signal-robot.operator.goldenCross': 'Golden Cross',
- 'signal-robot.operator.deathCross': 'Death Cross',
- 'signal-robot.operator.increaseBy': 'Increase By',
- 'signal-robot.operator.decreaseBy': 'Decrease By',
- 'signal-robot.indicator.price': 'Price',
- 'signal-robot.indicator.rsi': 'RSI',
- 'signal-robot.indicator.kdjK': 'KDJ(K)',
- 'signal-robot.indicator.kdjJ': 'KDJ(J)',
- 'signal-robot.indicator.macd': 'MACD',
- 'signal-robot.indicator.macdHist': 'MACD Histogram',
- 'signal-robot.indicator.bollingerUp': 'Bollinger Upper',
- 'signal-robot.indicator.bollingerLow': 'Bollinger Lower',
- 'signal-robot.indicator.volume': 'Volume',
- 'signal-robot.indicator.changePct1h': '1H Change %',
- 'signal-robot.indicator.changePct24h': '24H Change %',
- 'signal-robot.indicator.signalLine': 'Signal Line',
-
- // Settings (Memory/Reflection)
- 'settings.group.agent_memory': '่จๆถ/ๅ็่จญๅฎ',
- 'settings.group.reflection_worker': '่ชๅๅ็ๆค่จผใฏใผใซใผ',
- 'settings.field.ENABLE_AGENT_MEMORY': 'ใจใผใธใงใณใ่จๆถใๆๅนๅ',
- 'settings.field.AGENT_MEMORY_ENABLE_VECTOR': 'ใใฏใใซๆค็ดขใๆๅนๅ๏ผใญใผใซใซ๏ผ',
- 'settings.field.AGENT_MEMORY_EMBEDDING_DIM': 'ๅใ่พผใฟๆฌกๅ
',
- 'settings.field.AGENT_MEMORY_TOP_K': 'Top-K ๅๅพๆฐ',
- 'settings.field.AGENT_MEMORY_CANDIDATE_LIMIT': 'ๅ่ฃใฆใฃใณใใฆใตใคใบ',
- 'settings.field.AGENT_MEMORY_HALF_LIFE_DAYS': 'ๆ้ๆธ่กฐใฎๅๆธๆ๏ผๆฅ๏ผ',
- 'settings.field.AGENT_MEMORY_W_SIM': '้กไผผๅบฆ้ใฟ',
- 'settings.field.AGENT_MEMORY_W_RECENCY': 'ๆฐใใ้ใฟ',
- 'settings.field.AGENT_MEMORY_W_RETURNS': 'ๅ็้ใฟ',
- 'settings.field.ENABLE_REFLECTION_WORKER': '่ชๅๆค่จผใๆๅนๅ',
- 'settings.field.REFLECTION_WORKER_INTERVAL_SEC': 'ๆค่จผ้้๏ผ็ง๏ผ',
-
- // Profile - Notification Settings (้็ฅ่จญๅฎ)
- 'profile.notifications.title': '้็ฅ่จญๅฎ',
- 'profile.notifications.hint': 'ใใใฉใซใใฎ้็ฅๆนๆณใ่จญๅฎใใพใใ่ณ็ฃใขใใฟใผใใขใฉใผใไฝๆๆใซ่ชๅ็ใซไฝฟ็จใใใพใ',
- 'profile.notifications.defaultChannels': 'ใใใฉใซใ้็ฅใใฃใณใใซ',
- 'profile.notifications.browser': 'ใขใใชๅ
้็ฅ',
- 'profile.notifications.email': 'ใกใผใซ',
- 'profile.notifications.phone': 'SMS',
- 'profile.notifications.telegramBotToken': 'Telegram Bot Token',
- 'profile.notifications.telegramBotTokenPlaceholder': 'Telegram Bot Tokenใๅ
ฅๅใใฆใใ ใใ',
- 'profile.notifications.telegramBotTokenHint': '@BotFatherใงใใใใไฝๆใใฆTokenใๅๅพใใฆใใ ใใ',
- 'profile.notifications.telegramChatId': 'Telegram Chat ID',
- 'profile.notifications.telegramPlaceholder': 'Telegram Chat IDใๅ
ฅๅใใฆใใ ใใ๏ผไพ๏ผ123456789๏ผ',
- 'profile.notifications.telegramHint': '@userinfobot ใซ /start ใ้ไฟกใใฆChat IDใๅๅพใใฆใใ ใใ',
- 'profile.notifications.notifyEmail': '้็ฅใกใผใซ',
- 'profile.notifications.emailPlaceholder': '้็ฅใๅใๅใใกใผใซใขใใฌใน',
- 'profile.notifications.emailHint': 'ใใใฉใซใใฏใขใซใฆใณใใกใผใซใๅฅใฎใกใผใซใ่จญๅฎๅฏ่ฝ',
- 'profile.notifications.phonePlaceholder': '้ป่ฉฑ็ชๅทใๅ
ฅๅใใฆใใ ใใ๏ผไพ๏ผ+81901234567๏ผ',
- 'profile.notifications.phoneHint': '็ฎก็่
ใTwilioใตใผใในใ่จญๅฎใใๅฟ
่ฆใใใใพใ',
- 'profile.notifications.discordWebhook': 'Discord Webhook',
- 'profile.notifications.discordPlaceholder': 'https://discord.com/api/webhooks/...',
- 'profile.notifications.discordHint': 'Discordใตใผใใผ่จญๅฎใงWebhookใไฝๆใใฆใใ ใใ',
- 'profile.notifications.webhookUrl': 'Webhook URL',
- 'profile.notifications.webhookPlaceholder': 'https://your-server.com/webhook',
- 'profile.notifications.webhookHint': 'ใซในใฟใ Webhook URLใPOST JSONใง้็ฅใ้ไฟก',
- 'profile.notifications.webhookToken': 'Webhook Token๏ผไปปๆ๏ผ',
- 'profile.notifications.webhookTokenPlaceholder': 'ใชใฏใจในใ่ช่จผ็จBearer Token',
- 'profile.notifications.webhookTokenHint': 'Authorization: Bearer TokenใจใใฆWebhookใซ้ไฟก',
- 'profile.notifications.testBtn': 'ใในใ้็ฅใ้ไฟก',
- 'profile.notifications.saveSuccess': '้็ฅ่จญๅฎใไฟๅญใใพใใ',
- 'profile.notifications.selectChannel': 'ๅฐใชใใจใ1ใคใฎ้็ฅใใฃใณใใซใ้ธๆใใฆใใ ใใ',
- 'profile.notifications.fillTelegramToken': 'Telegram Bot Tokenใๅ
ฅๅใใฆใใ ใใ',
- 'profile.notifications.fillTelegram': 'Telegram Chat IDใๅ
ฅๅใใฆใใ ใใ',
- 'profile.notifications.fillEmail': '้็ฅใกใผใซใๅ
ฅๅใใฆใใ ใใ',
- 'profile.notifications.testSent': 'ใในใ้็ฅใ้ไฟกใใพใใใ้็ฅใใฃใณใใซใ็ขบ่ชใใฆใใ ใใ'
-}
-
-export default {
- ...components,
- ...locale
-}
diff --git a/quantdinger_vue/src/locales/lang/ko-KR.js b/quantdinger_vue/src/locales/lang/ko-KR.js
deleted file mode 100644
index 9b01e7d..0000000
--- a/quantdinger_vue/src/locales/lang/ko-KR.js
+++ /dev/null
@@ -1,1826 +0,0 @@
-import antdKoKR from 'ant-design-vue/es/locale-provider/ko_KR'
-import momentKO from 'moment/locale/ko'
-
-const components = {
- antLocale: antdKoKR,
- momentName: 'ko',
- momentLocale: momentKO
-}
-const locale = {
- 'submit': '์ ์ถ',
- 'save': '์ ์ฅ',
- 'submit.ok': '์ ์ถ ์ฑ๊ณต',
- 'save.ok': '์ฑ๊ณต์ ์ผ๋ก ์ ์ฅ๋์์ต๋๋ค',
- 'menu.welcome': 'ํ์ํฉ๋๋ค',
- 'menu.home': 'ํํ์ด์ง',
- 'menu.dashboard': '๋์๋ณด๋',
- 'menu.dashboard.indicator': '์งํ๋ถ์',
- 'menu.dashboard.community': '์งํ ์ปค๋ฎค๋ํฐ',
- 'menu.dashboard.analysis': 'AI ๋ถ์',
- 'menu.dashboard.tradingAssistant': 'ํธ๋ ์ด๋ฉ ์ด์์คํดํธ',
- 'menu.dashboard.aiTradingAssistant': 'AI ํธ๋ ์ด๋ฉ ๋์ฐ๋ฏธ',
- 'menu.dashboard.signalRobot': '์๊ทธ๋ ๋ก๋ด',
- 'menu.dashboard.monitor': '๋ชจ๋ํฐ๋ง ํ์ด์ง',
- 'menu.dashboard.workplace': '์์
๋',
- 'menu.form': '์์ ํ์ด์ง',
- 'menu.form.basic-form': '๊ธฐ๋ณธ ํํ',
- 'menu.form.step-form': '๋จ๊ณ๋ณ ์์',
- 'menu.form.step-form.info': '๋จ๊ณ๋ณ ์์(์ด์ฒด ์ ๋ณด ์
๋ ฅ)',
- 'menu.form.step-form.confirm': '๋จ๊ณ๋ณ ์์(์ด์ฒด์ ๋ณด ํ์ธ)',
- 'menu.form.step-form.result': '๋จ๊ณ๋ณ ์์(์๋ฃ)',
- 'menu.form.advanced-form': '๊ณ ๊ธ ์์',
- 'menu.list': '๋ชฉ๋ก ํ์ด์ง',
- 'menu.list.table-list': '๋ฌธ์ ์์',
- 'menu.list.basic-list': 'ํ์ค ๋ชฉ๋ก',
- 'menu.list.card-list': '์นด๋ ๋ชฉ๋ก',
- 'menu.list.search-list': '๊ฒ์ ๋ชฉ๋ก',
- 'menu.list.search-list.articles': '๊ฒ์ ๋ชฉ๋ก(๊ธฐ์ฌ)',
- 'menu.list.search-list.projects': '๊ฒ์ ๋ชฉ๋ก(ํ๋ก์ ํธ)',
- 'menu.list.search-list.applications': '๊ฒ์ ๋ชฉ๋ก(์ฑ)',
- 'menu.profile': '์ธ๋ถ์ ๋ณด ํ์ด์ง',
- 'menu.profile.basic': '๊ธฐ๋ณธ ์ธ๋ถ์ ๋ณด ํ์ด์ง',
- 'menu.profile.advanced': '๊ณ ๊ธ ์ธ๋ถ์ ๋ณด ํ์ด์ง',
- 'menu.result': '๊ฒฐ๊ณผ ํ์ด์ง',
- 'menu.result.success': '์ฑ๊ณต ํ์ด์ง',
- 'menu.result.fail': '์คํจ ํ์ด์ง',
- 'menu.exception': '์์ธ ํ์ด์ง',
- 'menu.exception.not-permission': '403',
- 'menu.exception.not-find': '404',
- 'menu.exception.server-error': '500',
- 'menu.exception.trigger': 'ํธ๋ฆฌ๊ฑฐ ์ค๋ฅ',
- 'menu.account': '๊ฐ์ธ ํ์ด์ง',
- 'menu.account.center': '๊ฐ์ธ ์ผํฐ',
- 'menu.account.settings': '๊ฐ์ธ ์ค์ ',
- 'menu.account.trigger': 'ํธ๋ฆฌ๊ฑฐ ์ค๋ฅ',
- 'menu.account.logout': '๋ก๊ทธ์์',
- 'menu.wallet': '๋ด ์ง๊ฐ',
- 'menu.docs': '๋ฌธ์ ์ผํฐ',
- 'menu.docs.detail': '๋ฌธ์ ์ธ๋ถ์ ๋ณด',
- 'menu.header.refreshPage': 'ํ์ด์ง ์๋ก ๊ณ ์นจ',
- 'menu.invite.friends': '์น๊ตฌ ์ด๋',
- 'app.setting.pagestyle': '์ ๋ฐ์ ์ธ ์คํ์ผ ์ค์ ',
- 'app.setting.pagestyle.light': '๋ฐ์ ๋ฉ๋ด ์คํ์ผ',
- 'app.setting.pagestyle.dark': '์ด๋์ด ๋ฉ๋ด ์คํ์ผ',
- 'app.setting.pagestyle.realdark': '๋คํฌ ๋ชจ๋',
- 'app.setting.themecolor': 'ํ
๋ง ์์',
- 'app.setting.navigationmode': 'ํ์ ๋ชจ๋',
- 'app.setting.sidemenu.nav': '์ฌ์ด๋๋ฐ ํ์',
- 'app.setting.topmenu.nav': '์๋จ ํ์์ค ํ์',
- 'app.setting.content-width': '์ฝํ
์ธ ์์ญ ๋๋น',
- 'app.setting.content-width.tooltip': '์ด ์ค์ ์ [์๋จ ํ์์ค ํ์]์ธ ๊ฒฝ์ฐ์๋ง ์ ํจํฉ๋๋ค.',
- 'app.setting.content-width.fixed': '๊ณ ์ ',
- 'app.setting.content-width.fluid': '์คํธ๋ฆฌ๋ฐ',
- 'app.setting.fixedheader': '๊ณ ์ ํค๋',
- 'app.setting.fixedheader.tooltip': 'ํค๋ ๊ณ ์ ์ ๊ตฌ์ฑ ๊ฐ๋ฅ',
- 'app.setting.autoHideHeader': '์คํฌ๋กคํ ๋ ํค๋ ์จ๊ธฐ๊ธฐ',
- 'app.setting.fixedsidebar': '์ฌ์ด๋ ๋ฉ๋ด ๊ณ ์ ',
- 'app.setting.sidemenu': '์ฌ์ด๋ ๋ฉ๋ด ๋ ์ด์์',
- 'app.setting.topmenu': '์๋จ ๋ฉ๋ด ๋ ์ด์์',
- 'app.setting.othersettings': '๊ธฐํ ์ค์ ',
- 'app.setting.weakmode': '์์ฝ ๋ชจ๋',
- 'app.setting.multitab': '๋ฉํฐํญ ๋ชจ๋',
- 'app.setting.copy': '์ค์ ๋ณต์ฌ',
- 'app.setting.loading': 'ํ
๋ง ๋ก๋ ์ค',
- 'app.setting.copyinfo': '์ค์ ์ ์ฑ๊ณต์ ์ผ๋ก ๋ณต์ฌํ์ต๋๋ค. src/config/defaultSettings.js',
- 'app.setting.copy.success': '๋ณต์ฌ ์๋ฃ',
- 'app.setting.copy.fail': '๋ณต์ฌ ์คํจ',
- 'app.setting.theme.switching': 'ํ
๋ง ๋ณ๊ฒฝ!',
- 'app.setting.production.hint': '๊ตฌ์ฑ ํ์์ค์ ๊ฐ๋ฐ ํ๊ฒฝ์์ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ์๋ง ์ฌ์ฉ๋๋ฉฐ ํ๋ก๋์
ํ๊ฒฝ์์๋ ํ์๋์ง ์์ต๋๋ค. ๊ตฌ์ฑ ํ์ผ์ ์๋์ผ๋ก ๋ณต์ฌํ๊ณ ์์ ํ์ญ์์ค.',
- 'app.setting.themecolor.daybreak': '์๋ฒฝ ํ๋์(๊ธฐ๋ณธ๊ฐ)',
- 'app.setting.themecolor.dust': 'ํฉํผ',
- 'app.setting.themecolor.volcano': 'ํ์ฐ',
- 'app.setting.themecolor.sunset': '์ผ๋ชฐ',
- 'app.setting.themecolor.cyan': '๋ฐ์นญ',
- 'app.setting.themecolor.green': '์ค๋ก๋ผ ๊ทธ๋ฆฐ',
- 'app.setting.themecolor.geekblue': '๊ธฑ ๋ธ๋ฃจ',
- 'app.setting.themecolor.purple': '์ฅ์ฏ(Jiang Zi)',
- 'app.setting.tooltip': 'ํ์ด์ง ์ค์ ',
- 'user.login.userName': '์ฌ์ฉ์ ์ด๋ฆ',
- 'user.login.password': '๋น๋ฐ๋ฒํธ',
- 'user.login.username.placeholder': '๊ณ์ : ๊ด๋ฆฌ์',
- 'user.login.password.placeholder': '๋น๋ฐ๋ฒํธ: admin ๋๋ ant.design',
- 'user.login.message-invalid-credentials': '๋ก๊ทธ์ธ์ ์คํจํ์ต๋๋ค. ์ด๋ฉ์ผ๊ณผ ์ธ์ฆ ์ฝ๋๋ฅผ ํ์ธํ์ธ์.',
- 'user.login.message-invalid-verification-code': '์ธ์ฆ์ฝ๋ ์ค๋ฅ',
- 'user.login.tab-login-credentials': '๊ณ์ ๋น๋ฐ๋ฒํธ ๋ก๊ทธ์ธ',
- 'user.login.tab-login-email': '์ด๋ฉ์ผ ๋ก๊ทธ์ธ',
- 'user.login.tab-login-mobile': 'ํด๋ํฐ๋ฒํธ ๋ก๊ทธ์ธ',
- 'user.login.captcha.placeholder': '๊ทธ๋ํฝ ์ธ์ฆ ์ฝ๋๋ฅผ ์
๋ ฅํ์ธ์.',
- 'user.login.mobile.placeholder': 'ํด๋์ ํ๋ฒํธ',
- 'user.login.mobile.verification-code.placeholder': '์ธ์ฆ์ฝ๋',
- 'user.login.email.placeholder': '์ด๋ฉ์ผ ์ฃผ์๋ฅผ ์
๋ ฅํด์ฃผ์ธ์',
- 'user.login.email.verification-code.placeholder': '์ธ์ฆ๋ฒํธ๋ฅผ ์
๋ ฅํด์ฃผ์ธ์',
- 'user.login.email.sending': '์ธ์ฆ์ฝ๋๊ฐ ์ ์ก๋๋ ์ค์
๋๋ค...',
- 'user.login.email.send-success-title': 'ํ',
- 'user.login.email.send-success': '์ธ์ฆ์ฝ๋๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ ์ก๋์์ต๋๋ค. ์ด๋ฉ์ผ์ ํ์ธํด ์ฃผ์ธ์.',
- 'user.login.sms.send-success': '์ธ์ฆ๋ฒํธ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ ์ก๋์์ต๋๋ค. ๋ฌธ์ ๋ฉ์์ง๋ฅผ ํ์ธํ์ธ์.',
- 'user.login.remember-me': '์๋ ๋ก๊ทธ์ธ',
- 'user.login.forgot-password': '๋น๋ฐ๋ฒํธ๋ฅผ ์์ผ์
จ๋์?',
- 'user.login.sign-in-with': '๊ธฐํ ๋ก๊ทธ์ธ ๋ฐฉ๋ฒ',
- 'user.login.signup': '๊ณ์ ๋ฑ๋ก',
- 'user.login.login': '๋ก๊ทธ์ธ',
- 'user.register.register': '๋ฑ๋ก',
- 'user.register.email.placeholder': '์ด๋ฉ์ผ',
- 'user.register.password.placeholder': '6์ ์ด์ ์
๋ ฅํด์ฃผ์ธ์. ์ฝ๊ฒ ์ถ์ธกํ ์ ์๋ ๋น๋ฐ๋ฒํธ๋ ์ฌ์ฉํ์ง ๋ง์ธ์.',
- 'user.register.password.popover-message': '6์ ์ด์ ์
๋ ฅํด์ฃผ์ธ์. ์ฝ๊ฒ ์ถ์ธกํ ์ ์๋ ๋น๋ฐ๋ฒํธ๋ ์ฌ์ฉํ์ง ๋ง์ธ์.',
- 'user.register.confirm-password.placeholder': '๋น๋ฐ๋ฒํธ ํ์ธ',
- 'user.register.get-verification-code': '์ธ์ฆ ์ฝ๋ ๋ฐ๊ธฐ',
- 'user.register.sign-in': '๊ธฐ์กด ๊ณ์ ์ ์ฌ์ฉํ์ฌ ๋ก๊ทธ์ธ',
- 'user.register-result.msg': '๊ทํ์ ๊ณ์ : {email} ๋ฑ๋ก์ด ์๋ฃ๋์์ต๋๋ค.',
- 'user.register-result.activation-email': 'ํ์ฑํ ์ด๋ฉ์ผ์ด ๊ทํ์ ์ฌ์ํจ์ผ๋ก ์ ์ก๋์์ผ๋ฉฐ 24์๊ฐ ๋์ ์ ํจํฉ๋๋ค. ๊ทํ์ ์ด๋ฉ์ผ์ ์ฆ์ ๋ก๊ทธ์ธํ๊ณ ์ด๋ฉ์ผ์ ์๋ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๊ณ์ ์ ํ์ฑํํ์ญ์์ค.',
- 'user.register-result.back-home': 'ํํ์ด์ง๋ก ๋์๊ฐ๊ธฐ',
- 'user.register-result.view-mailbox': '์ฐํธํจ์ ํ์ธํ์ธ์',
- 'user.email.required': '์ด๋ฉ์ผ ์ฃผ์๋ฅผ ์
๋ ฅํด์ฃผ์ธ์!',
- 'user.email.wrong-format': '์ด๋ฉ์ผ ์ฃผ์ ํ์์ด ์๋ชป๋์์ต๋๋ค!',
- 'user.userName.required': '๊ณ์ ์ด๋ฆ์ด๋ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ์
๋ ฅํ์ธ์',
- 'user.password.required': '๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํด์ฃผ์ธ์!',
- 'user.password.twice.msg': '๋ ๋ฒ ์
๋ ฅํ ๋น๋ฐ๋ฒํธ๊ฐ ์ผ์นํ์ง ์์ต๋๋ค!',
- 'user.password.strength.msg': '๋น๋ฐ๋ฒํธ๊ฐ ์ถฉ๋ถํ ๊ฐ๋ ฅํ์ง ์์ต๋๋ค.',
- 'user.password.strength.strong': 'ํ: ๊ฐํ',
- 'user.password.strength.medium': '๊ฐ๋: ์ค๊ฐ',
- 'user.password.strength.low': '๊ฐ๋: ๋ฎ์',
- 'user.password.strength.short': '๊ฐ๋: ๋๋ฌด ์งง์',
- 'user.confirm-password.required': '๋น๋ฐ๋ฒํธ๋ฅผ ํ์ธํด ์ฃผ์ธ์!',
- 'user.phone-number.required': '์ ํํ ํด๋ํฐ๋ฒํธ๋ฅผ ์
๋ ฅํด์ฃผ์ธ์',
- 'user.phone-number.wrong-format': 'ํด๋ํฐ ๋ฒํธ ํ์์ด ์๋ชป๋์์ต๋๋ค!',
- 'user.verification-code.required': '์ธ์ฆ๋ฒํธ๋ฅผ ์
๋ ฅํด์ฃผ์ธ์!',
- 'user.captcha.required': '๊ทธ๋ํฝ ์ธ์ฆ์ฝ๋๋ฅผ ์
๋ ฅํด์ฃผ์ธ์!',
- 'user.login.infos': 'QuantDinger๋ AI ๋ฉํฐ์์ด์ ํธ ์ฃผ์ ๋ถ์ ๋ณด์กฐ ๋๊ตฌ๋ก ์ฆ๊ถ ํฌ์ ์ปจ์คํ
์๊ฒฉ์ด ์์ต๋๋ค. ํ๋ซํผ ๋ด ๋ชจ๋ ๋ถ์ ๊ฒฐ๊ณผ, ์ ์, ์ฐธ๊ณ ์๊ฒฌ์ ๊ณผ๊ฑฐ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก AI์ ์ํด ์๋์ผ๋ก ์์ฑ๋๋ฉฐ ํ์ต, ์ฐ๊ตฌ ๋ฐ ๊ธฐ์ ๊ต๋ฅ์๋ง ์ฌ์ฉ๋๋ฉฐ ํฌ์ ์กฐ์ธ์ด๋ ์์ฌ ๊ฒฐ์ ๊ธฐ๋ฐ์ ๊ตฌ์ฑํ์ง ์์ต๋๋ค. ์ฃผ์ํฌ์์๋ ์์ฅ๋ฆฌ์คํฌ, ์ ๋์ฑ๋ฆฌ์คํฌ, ์ ์ฑ
๋ฆฌ์คํฌ ๋ฑ ๋ค์ํ ๋ฆฌ์คํฌ๊ฐ ์๋ฐ๋๋ฉฐ, ์ด๋ก ์ธํด ์๊ธ ์์ค์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ์ฌ์ฉ์๋ ์์ ์ ์ํ ํ์ฉ ๋ฒ์์ ๋ฐ๋ผ ๋
๋ฆฝ์ ์ธ ๊ฒฐ์ ์ ๋ด๋ ค์ผ ํ๋ฉฐ, ์ด ๋๊ตฌ์ ์ฌ์ฉ์ผ๋ก ์ธํด ๋ฐ์ํ๋ ๋ชจ๋ ํฌ์ ํ์ ๋ฐ ๊ฒฐ๊ณผ๋ ์ฌ์ฉ์๊ฐ ๋ถ๋ดํด์ผ ํฉ๋๋ค. ์์ฅ์ ์ํํ๋ฏ๋ก ํฌ์์ ์ ์คํด์ผ ํฉ๋๋ค.',
- 'user.login.tab-login-web3': 'Web3 ๋ก๊ทธ์ธ',
- 'user.login.web3.tip': '์ง๊ฐ์ ์ด์ฉํ ์๋ช
๋ก๊ทธ์ธ',
- 'user.login.web3.connect': '์ง๊ฐ์ ์ฐ๊ฒฐํ๊ณ ๋ก๊ทธ์ธํ์ธ์',
- 'user.login.web3.no-wallet': '์ง๊ฐ์ด ๊ฐ์ง๋์ง ์์',
- 'user.login.web3.no-address': '์ง๊ฐ ์ฃผ์๋ฅผ ๊ฐ์ ธ์ค์ง ๋ชปํ์ต๋๋ค.',
- 'user.login.web3.nonce-failed': '๋์๋ฅผ ๊ฐ์ ธ์ค์ง ๋ชปํ์ต๋๋ค.',
- 'user.login.web3.verify-failed': '์๋ช
ํ์ธ ์คํจ',
- 'user.login.web3.success': '๋ก๊ทธ์ธ ์ฑ๊ณต',
- 'user.login.web3.failed': '์ง๊ฐ ๋ก๊ทธ์ธ ์คํจ',
- 'nav.no_wallet': '์ง๊ฐ์ด ๊ฐ์ง๋์ง ์์',
- 'nav.copy': '๋ณต์ฌ',
- 'nav.copy_success': '์ฑ๊ณต์ ์ผ๋ก ๋ณต์ฌ๋์์ต๋๋ค',
- 'user.login.oauth.google': 'Google๋ก ๋ก๊ทธ์ธ',
- 'user.login.oauth.github': 'GitHub๋ก ๋ก๊ทธ์ธ',
- 'user.login.oauth.loading': '์น์ธ ํ์ด์ง๋ก ๋ฆฌ๋๋ ์
์ค...',
- 'user.login.oauth.failed': 'OAuth ๋ก๊ทธ์ธ ์คํจ',
- 'user.login.oauth.get-url-failed': '์น์ธ ๋งํฌ๋ฅผ ์ป์ง ๋ชปํ์ต๋๋ค.',
- 'user.login.subtitle': '๊ธ๋ก๋ฒ ์์ฅ์ ๋ํ ์ ๋์ ํต์ฐฐ๋ ฅ ํ๋ณด',
- 'user.login.legal.title': '๋ฒ์ ๊ณ ์ง ์ฌํญ',
- 'user.login.legal.view': '๋ฒ์ ๊ณ ์ง์ฌํญ ๋ณด๊ธฐ',
- 'user.login.legal.collapse': '๋ฒ์ ๋ฉด์ฑ
์กฐํญ ์ ๊ธฐ',
- 'user.login.legal.agree': '๋ฒ์ ๊ณ ์ง ์ฌํญ์ ์ฝ์์ผ๋ฉฐ ์ด์ ๋์ํฉ๋๋ค.',
- 'user.login.legal.required': '๋จผ์ ๋ฒ์ ๊ณ ์ง ์ฌํญ์ ์ฝ๊ณ ํ์ธํ์ญ์์ค.',
- 'user.login.legal.content': 'QuantDinger๋ AI ๋ฉํฐ์์ด์ ํธ ์ฃผ์ ๋ถ์ ๋ณด์กฐ ๋๊ตฌ๋ก ์ฆ๊ถ ํฌ์ ์ปจ์คํ
์๊ฒฉ์ด ์์ต๋๋ค. ํ๋ซํผ ๋ด ๋ชจ๋ ๋ถ์ ๊ฒฐ๊ณผ, ๋ฑ๊ธ, ์ฐธ๊ณ ์๊ฒฌ์ ๊ณผ๊ฑฐ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก AI์ ์ํด ์๋์ผ๋ก ์์ฑ๋๋ฉฐ ํ์ต, ์ฐ๊ตฌ ๋ฐ ๊ธฐ์ ๊ต๋ฅ์๋ง ์ฌ์ฉ๋๋ฉฐ ํฌ์ ์กฐ์ธ์ด๋ ์์ฌ ๊ฒฐ์ ๊ธฐ๋ฐ์ ๊ตฌ์ฑํ์ง ์์ต๋๋ค. ์ฃผ์ํฌ์์๋ ์์ฅ๋ฆฌ์คํฌ, ์ ๋์ฑ๋ฆฌ์คํฌ, ์ ์ฑ
๋ฆฌ์คํฌ ๋ฑ ๋ค์ํ ๋ฆฌ์คํฌ๊ฐ ์๋ฐ๋๋ฉฐ, ์ด๋ก ์ธํด ์๊ธ ์์ค์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ์ฌ์ฉ์๋ ์์ ์ ์ํ ํ์ฉ ๋ฒ์์ ๋ฐ๋ผ ๋
๋ฆฝ์ ์ธ ๊ฒฐ์ ์ ๋ด๋ ค์ผ ํ๋ฉฐ, ์ด ๋๊ตฌ์ ์ฌ์ฉ์ผ๋ก ์ธํด ๋ฐ์ํ๋ ๋ชจ๋ ํฌ์ ํ์ ๋ฐ ๊ฒฐ๊ณผ๋ ์ฌ์ฉ์๊ฐ ๋ถ๋ดํด์ผ ํฉ๋๋ค. ์์ฅ์ ์ํํ๋ฏ๋ก ํฌ์์ ์ ์คํด์ผ ํฉ๋๋ค.',
- 'user.login.privacy.title': '์ฌ์ฉ์ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ์ ์ฑ
',
- 'user.login.privacy.view': '์ฌ์ฉ์ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ์ ์ฑ
๋ณด๊ธฐ',
- 'user.login.privacy.collapse': '์ฌ์ฉ์ ๊ฐ์ธ์ ๋ณด ๋ณดํธ ์ฝ๊ด ๋ซ๊ธฐ',
- 'user.login.privacy.content': '์ฐ๋ฆฌ๋ ๊ทํ์ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ์ ๋ฐ์ดํฐ ๋ณดํธ๋ฅผ ์ค์ํ๊ฒ ์๊ฐํฉ๋๋ค. 1) ์์ง ๋ฒ์ : ๊ธฐ๋ฅ ๊ตฌํ์ ๊ผญ ํ์ํ ์ ๋ณด(์ด๋ฉ์ผ, ํด๋์ ํ๋ฒํธ, ์ง์ญ๋ฒํธ, Web3 ์ง๊ฐ ์ฃผ์ ๋ฑ)์ ํ์ ๋ก๊ทธ, ๊ธฐ๊ธฐ์ ๋ณด๋ง ์์งํฉ๋๋ค. 2) ์ด์ฉ ๋ชฉ์ : ๊ณ์ ๋ก๊ทธ์ธ ๋ฐ ๋ณด์ ํ์ธ, ์๋น์ค ๊ธฐ๋ฅ ์ ๊ณต, ๋ฌธ์ ํด๊ฒฐ ๋ฐ ๊ท์ ์ค์ ์๊ตฌ ์ฌํญ. 3) ์ ์ฅ ๋ฐ ๋ณด์: ๋ฐ์ดํฐ๋ ์ํธํ๋์ด ์ ์ฅ๋๋ฉฐ, ๋ฌด๋จ ์ ๊ทผ, ๊ณต๊ฐ ๋๋ ์์ค์ ๋ฐฉ์งํ๊ธฐ ์ํด ํ์ํ ๊ถํ ๋ฐ ์ ๊ทผ ์ ์ด ์กฐ์น๊ฐ ์ทจํด์ง๋๋ค. 4) ์ 3์์์ ๊ณต์ : ๋ฒ๋ฅ ๋ฐ ๊ท์ ์ ์ํด ์๊ตฌ๋๊ฑฐ๋ ์๋น์ค ์ํ์ ํ์ํ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ , ๊ทํ์ ๊ฐ์ธ์ ๋ณด๋ ์ 3์์ ๊ณต์ ๋์ง ์์ต๋๋ค. ์ 3์ ์๋น์ค(์: ์ง๊ฐ, SMS ์๋น์ค ์ ๊ณต์
์ฒด)๊ฐ ๊ด๋ จ๋ ๊ฒฝ์ฐ ํด๋น ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ฐ ํ์ํ ์ต์ํ์ ๋ฒ์์์๋ง ์ฒ๋ฆฌ๋ฉ๋๋ค. 5) ์ฟ ํค/๋ก์ปฌ ์ ์ฅ์: ๋ก๊ทธ์ธ ์ํ ๋ฐ ํ์ํ ์ธ์
์ ์ง ๊ด๋ฆฌ(์: ํ ํฐ, PHPSESSID)์ ์ฌ์ฉ๋๋ฉฐ ๋ธ๋ผ์ฐ์ ์์ ์ด๋ฅผ ์ญ์ ํ๊ฑฐ๋ ์ ํํ ์ ์์ต๋๋ค. 6) ๊ฐ์ธ๊ถ๋ฆฌ : ๊ทํ๋ ๋ฒ๋ น์ ๋ฐ๋ฅธ ์กฐํ, ์ ์ , ์ญ์ , ๋์์ฒ ํ ๋ฑ์ ๊ถ๋ฆฌ๋ฅผ ํ์ฌํ ์ ์์ต๋๋ค. 7) ๋ณ๊ฒฝ ๋ฐ ๊ณต์ง: ๋ณธ ์ฝ๊ด์ด ์
๋ฐ์ดํธ๋๋ฉด ํ์ด์ง์ ๋์ ๋๊ฒ ํ์๋ฉ๋๋ค. ๋ณธ ์๋น์ค๋ฅผ ๊ณ์ ์ด์ฉํ์๋ฉด ์
๋ฐ์ดํธ๋ ๋ด์ฉ์ ์ฝ๊ณ ๋์ํ์ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. ๋ณธ ์ฝ๊ด ๋๋ ๊ทธ์ ๋ํ ์
๋ฐ์ดํธ์ ๋์ํ์ง ์๋ ๊ฒฝ์ฐ ์๋น์ค ์ฌ์ฉ์ ์ค๋จํ๊ณ ๋น์ฌ์ ๋ฌธ์ํ์ญ์์ค.',
- 'account.basicInfo': '๊ธฐ๋ณธ์ ๋ณด',
- 'account.id': '์ฌ์ฉ์ ID',
- 'account.username': '์ฌ์ฉ์ ์ด๋ฆ',
- 'account.nickname': '๋๋ค์',
- 'account.email': '์ด๋ฉ์ผ',
- 'account.mobile': 'ํด๋์ ํ๋ฒํธ',
- 'account.web3address': '์ง๊ฐ ์ฃผ์',
- 'account.pid': '์ถ์ฒ์ธ ID',
- 'account.level': '์ฌ์ฉ์ ์์ค',
- 'account.money': '๊ท ํ',
- 'account.qdtBalance': 'QDT ์์ก',
- 'account.score': 'ํฌ์ธํธ',
- 'account.createtime': '๋ฑ๋ก ์๊ฐ',
- 'account.inviteLink': '์ด๋๋งํฌ',
- 'account.recharge': '์ฌ์ถฉ์ ',
- 'account.rechargeTip': '์ถฉ์ ํ๋ ค๋ฉด WeChat ๋๋ Alipay๋ฅผ ์ฌ์ฉํ์ฌ ์๋ QR ์ฝ๋๋ฅผ ์ค์บํ์ธ์.',
- 'account.qrCodePlaceholder': 'QR ์ฝ๋ ์๋ฆฌ ํ์์(์๋ฎฌ๋ ์ด์
)',
- 'account.rechargeAmount': '์ถฉ์ ๊ธ์ก',
- 'account.enterAmount': '์ถฉ์ ๊ธ์ก์ ์
๋ ฅํด์ฃผ์ธ์',
- 'account.rechargeHint': '์ต์ ์
๊ธ์ก: 1 QDT',
- 'account.confirmRecharge': '์ถฉ์ ํ์ธ',
- 'account.enterValidAmount': '์ ํจํ ์ถฉ์ ๊ธ์ก์ ์
๋ ฅํ์ธ์.',
- 'account.rechargeSuccess': '์ฌ์ถฉ์ ์ฑ๊ณต! {amount} QDT ์
๊ธ',
- 'account.settings.menuMap.basic': '๊ธฐ๋ณธ ์ค์ ',
- 'account.settings.menuMap.security': '๋ณด์ ์ค์ ',
- 'account.settings.menuMap.notification': '์ ๋ฉ์์ง ์๋ฆผ',
- 'account.settings.menuMap.moneyLog': '๊ธฐ๊ธ ์ธ๋ถ์ ๋ณด',
- 'account.moneyLog.empty': '์์ง ํ๋ ์ธ๋ถ์ ๋ณด๊ฐ ์์ต๋๋ค.',
- 'account.moneyLog.total': '์ด {total}๊ฐ ๊ธฐ๋ก',
- 'account.moneyLog.type.purchase': '๋งค์ ์งํ',
- 'account.moneyLog.type.recharge': '์ฌ์ถฉ์ ',
- 'account.moneyLog.type.refund': 'ํ๋ถ',
- 'account.moneyLog.type.reward': '๋ณด์',
- 'account.moneyLog.type.income': '์งํ์๋',
- 'account.moneyLog.type.commission': 'ํ๋ซํผ ์ทจ๊ธ ์์๋ฃ',
- 'wallet.balance': 'QDT ์์ก',
- 'wallet.recharge': '์ฌ์ถฉ์ ',
- 'wallet.withdraw': 'ํ๊ธ ์ธ์ถ',
- 'wallet.filter': 'ํํฐ',
- 'wallet.reset': '์ฌ์ค์ ',
- 'wallet.totalRecharge': '๋์ ์ถฉ์ ',
- 'wallet.totalWithdraw': '๋์ ์ถ๊ธ',
- 'wallet.totalIncome': '๋์ ์์
',
- 'wallet.records': '๊ฑฐ๋๊ธฐ๋ก ๋ฐ ์๊ธ๋ด์ญ',
- 'wallet.tradingRecords': '๊ฑฐ๋ ๋ด์ญ',
- 'wallet.moneyLog': '๊ธฐ๊ธ ์ธ๋ถ์ ๋ณด',
- 'wallet.rechargeTip': '์ถฉ์ ํ๋ ค๋ฉด WeChat ๋๋ Alipay๋ฅผ ์ฌ์ฉํ์ฌ ์๋ QR ์ฝ๋๋ฅผ ์ค์บํ์ธ์.',
- 'wallet.qrCodePlaceholder': 'QR ์ฝ๋ ์๋ฆฌ ํ์์(์๋ฎฌ๋ ์ด์
)',
- 'wallet.rechargeAmount': '์ถฉ์ ๊ธ์ก',
- 'wallet.enterAmount': '์ถฉ์ ๊ธ์ก์ ์
๋ ฅํด์ฃผ์ธ์',
- 'wallet.rechargeHint': '์ต์ ์
๊ธ์ก: 1 QDT',
- 'wallet.confirmRecharge': '์ถฉ์ ํ์ธ',
- 'wallet.enterValidAmount': '์ ํจํ ์ถฉ์ ๊ธ์ก์ ์
๋ ฅํ์ธ์.',
- 'wallet.rechargeSuccess': '์ฌ์ถฉ์ ์ฑ๊ณต! {amount} QDT ์
๊ธ',
- 'wallet.rechargeFailed': '์ฌ์ถฉ์ ์คํจ',
- 'wallet.withdrawTip': '์ถ๊ธ๊ธ์ก๊ณผ ์ถ๊ธ์ฃผ์๋ฅผ ์
๋ ฅํด์ฃผ์ธ์',
- 'wallet.withdrawAmount': '์ถ๊ธ๊ธ์ก',
- 'wallet.enterWithdrawAmount': '์ถ๊ธ๊ธ์ก์ ์
๋ ฅํด์ฃผ์ธ์',
- 'wallet.withdrawHint': '์ต์ ์ถ๊ธ ๊ธ์ก: 1 QDT',
- 'wallet.withdrawAddress': '์ถ๊ธ์ฃผ์(์ ํ)',
- 'wallet.enterWithdrawAddress': '์ถ๊ธ์ฃผ์๋ฅผ ์
๋ ฅํด์ฃผ์ธ์',
- 'wallet.confirmWithdraw': '์ถ๊ธ ํ์ธ',
- 'wallet.enterValidWithdrawAmount': '์ ํจํ ์ธ์ถ ๊ธ์ก์ ์
๋ ฅํ์ธ์.',
- 'wallet.insufficientBalance': '์์ก ๋ถ์กฑ',
- 'wallet.withdrawSuccess': '์ถ๊ธ ์ฑ๊ณต! ์ธ์ถ๋ {๊ธ์ก} QDT',
- 'wallet.withdrawFailed': '์ถ๊ธ ์คํจ',
- 'wallet.noTradingRecords': '์์ง ๊ฑฐ๋๊ธฐ๋ก์ด ์์ต๋๋ค',
- 'wallet.noMoneyLog': '์์ง ํ๋ ์ธ๋ถ์ ๋ณด๊ฐ ์์ต๋๋ค.',
- 'wallet.loadTradingRecordsFailed': '๊ฑฐ๋ ๊ธฐ๋ก์ ๋ก๋ํ์ง ๋ชปํ์ต๋๋ค.',
- 'wallet.loadMoneyLogFailed': '์๊ธ ์ธ๋ถ์ ๋ณด๋ฅผ ๋ก๋ํ์ง ๋ชปํ์ต๋๋ค.',
- 'wallet.moneyLogTotal': '์ด {total}๊ฐ ๊ธฐ๋ก',
- 'wallet.moneyLogTypeTitle': '์ ํ',
- 'wallet.moneyLogType.all': '๋ชจ๋ ์ ํ',
- 'wallet.table.time': '์๊ฐ',
- 'wallet.table.type': '์ ํ',
- 'wallet.table.price': '๊ฐ๊ฒฉ',
- 'wallet.table.amount': '์๋',
- 'wallet.table.money': '๊ธ์ก',
- 'wallet.table.balance': '๊ท ํ',
- 'wallet.table.memo': '๋น๊ณ ',
- 'wallet.table.value': '๊ฐ์น',
- 'wallet.table.profit': '์ด์ต๊ณผ ์์ค',
- 'wallet.table.commission': '์ทจ๊ธ ์์๋ฃ',
- 'wallet.table.total': '์ด {total}๊ฐ ๊ธฐ๋ก',
- 'wallet.tradeType.buy': '์ฌ๋ค',
- 'wallet.tradeType.sell': 'ํ๋ค',
- 'wallet.tradeType.liquidation': '๊ฐ์ ์ฒญ์ฐ',
- 'wallet.tradeType.openLong': '๊ธธ๊ฒ ์ด๋ค',
- 'wallet.tradeType.addLong': '๊ฐ๋',
- 'wallet.tradeType.closeLong': 'ํ๋์ค',
- 'wallet.tradeType.closeLongStop': '์์ค์ ๋ฉ์ถ๊ณ ์ค๋ซ๋์',
- 'wallet.tradeType.closeLongProfit': '์ด์ต์ ์ป๊ณ ๋ ๋ง์ ๋ ๋ฒจ์ ์ฌ๋ฆฌ์ธ์',
- 'wallet.tradeType.openShort': '์คํ ์ผํธ',
- 'wallet.tradeType.addShort': '์งง๊ฒ ์ถ๊ฐํ๋ค',
- 'wallet.tradeType.closeShort': '๋น์ด ์์',
- 'wallet.tradeType.closeShortStop': '์์ค ์ค์ง',
- 'wallet.tradeType.closeShortProfit': '์ด์ต์ ์ป๊ณ ๊ณต๋งค๋ ๋ง๊ฐ',
- 'wallet.moneyLogType.purchase': '๋งค์ ์งํ',
- 'wallet.moneyLogType.recharge': '์ฌ์ถฉ์ ',
- 'wallet.moneyLogType.withdraw': 'ํ๊ธ ์ธ์ถ',
- 'wallet.moneyLogType.refund': 'ํ๋ถ',
- 'wallet.moneyLogType.reward': '๋ณด์',
- 'wallet.moneyLogType.income': '์๋',
- 'wallet.moneyLogType.commission': '์ทจ๊ธ ์์๋ฃ',
- 'wallet.web3Address.required': '๋จผ์ Web3 ์ง๊ฐ ์ฃผ์๋ฅผ ์
๋ ฅํด์ฃผ์ธ์',
- 'wallet.web3Address.requiredDescription': '์ถฉ์ ํ๊ธฐ ์ ์ Web3 ์ง๊ฐ ์ฃผ์๋ฅผ ๋ฐ์ธ๋ฉํด์ผ ์ถฉ์ ์ ๋ฐ์ ์ ์์ต๋๋ค.',
- 'wallet.web3Address.placeholder': 'Web3 ์ง๊ฐ ์ฃผ์(0x๋ก ์์)๋ฅผ ์
๋ ฅํ์ธ์.',
- 'wallet.web3Address.save': '์ง๊ฐ ์ฃผ์ ์ ์ฅ',
- 'wallet.web3Address.saveSuccess': '์ง๊ฐ ์ฃผ์๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ ์ฅ๋์์ต๋๋ค',
- 'wallet.web3Address.saveFailed': '์ง๊ฐ ์ฃผ์ ์ ์ฅ ์คํจ',
- 'wallet.web3Address.invalidFormat': '์ ํจํ Web3 ์ง๊ฐ ์ฃผ์๋ฅผ ์
๋ ฅํ์ธ์. (์ด๋๋ฆฌ์ ํ์: 0x๋ก ์์ํ๋ 42์ ๋๋ TRC20 ํ์: T๋ก ์์ํ๋ 34์)',
- 'wallet.selectCoin': 'ํตํ ์ ํ',
- 'wallet.selectChain': '์ ํ ์ฒด์ธ',
- 'wallet.chain.eth': 'ETH(ERC20)',
- 'wallet.chain.trc20': 'TRC20',
- 'wallet.chain.bsc': 'BSC',
- 'wallet.targetQdtAmount': '์ํํ๋ ค๋ QDT ๊ธ์ก(์ ํ ์ฌํญ)',
- 'wallet.targetQdtAmount.placeholder': '์ํํ๋ ค๋ QDT ์๋, ํ์ฌ QDT ๊ฐ๊ฒฉ์ ์
๋ ฅํ์ธ์: {price} USDT',
- 'wallet.targetQdtAmount.requiredUsdt': '์ฌ์ถฉ์ ํ์: {amount} USDT',
- 'wallet.rechargeAddress': '์ถฉ์ ์ฃผ์',
- 'wallet.copyAddress': '๋ณต์ฌ',
- 'wallet.copySuccess': '์ฑ๊ณต์ ์ผ๋ก ๋ณต์ฌ๋์์ต๋๋ค!',
- 'wallet.copyFailed': '๋ณต์ฌํ์ง ๋ชปํ์ต๋๋ค. ์๋์ผ๋ก ๋ณต์ฌํ์ธ์.',
- 'wallet.rechargeAddressHint': '์ด ์ฃผ์์ {coin}์ ์
๊ธํ๋ ค๋ฉด ๋ฐ๋์ {chain}์ ์ฌ์ฉํ์ธ์.',
- 'wallet.qdtPrice.loading': '๋ก๋ ์ค...',
- 'wallet.rechargeTip.new': 'ํตํ์ ์ฒด์ธ์ ์ ํํ ํ ์๋ QR ์ฝ๋๋ฅผ ์ค์บํ์ฌ ์ถฉ์ ํ์ธ์.',
- 'wallet.exchangeRate': '1 QDT โ {rate} USDT',
- 'wallet.withdrawableAmount': '์ฌ์ฉ ๊ฐ๋ฅํ ํ๊ธ ๊ธ์ก',
- 'wallet.totalBalance': '์ด ์์ก',
- 'wallet.insufficientWithdrawable': '์ถ๊ธ ๊ฐ๋ฅํ ํ๊ธ ๊ธ์ก์ด ๋ถ์กฑํฉ๋๋ค. ํ์ฌ ์ธ์ถํ ์ ์๋ ๊ธ์ก์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค: {amount} QDT',
- 'wallet.withdrawAddressRequired': '์ถ๊ธ์ฃผ์๋ฅผ ์
๋ ฅํด์ฃผ์ธ์',
- 'wallet.withdrawAddressHint': '์ฃผ์๊ฐ ์ฌ๋ฐ๋ฅธ์ง ํ์ธํ์ญ์์ค. ํํด ํ์๋ ์ทจ์๊ฐ ๋ถ๊ฐ๋ฅํฉ๋๋ค.',
- 'wallet.withdrawSubmitSuccess': '์ฒ ํ ์ ์ฒญ์๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ ์ถ๋์์ต๋๋ค. ๊ฒํ ๋ฅผ ๊ธฐ๋ค๋ ค ์ฃผ์ธ์.',
- 'menu.footer.contactUs': '๋ฌธ์ํ๊ธฐ',
- 'menu.footer.getSupport': '์ง์ ๋ฐ๊ธฐ',
- 'menu.footer.socialAccounts': '์์
๊ณ์ ',
- 'menu.footer.userAgreement': '์ฌ์ฉ์ ๊ณ์ฝ',
- 'menu.footer.privacyPolicy': '๊ฐ์ธ ์ ๋ณด ๋ณดํธ ์ ์ฑ
',
- 'menu.footer.support': '์ง์',
- 'menu.footer.featureRequest': '๊ธฐ๋ฅ ์์ฒญ',
- 'menu.footer.email': '์ด๋ฉ์ผ',
- 'menu.footer.liveChat': '์ฐ์ค๋ฌดํด ๋ผ์ด๋ธ ์ฑํ
',
- 'dashboard.analysis.title': '๋ค์ฐจ์ ๋ถ์',
- 'dashboard.analysis.subtitle': 'AI ๊ธฐ๋ฐ ์ข
ํฉ์ฌ๋ฌด๋ถ์ ํ๋ซํผ',
- 'dashboard.analysis.selectSymbol': '๊ธฐ๋ณธ ์ฝ๋ ์ ํ ๋๋ ์
๋ ฅ',
- 'dashboard.analysis.selectModel': '๋ชจ๋ธ ์ ํ',
- 'dashboard.analysis.startAnalysis': '๋ถ์ ์์',
- 'dashboard.analysis.history': '์ญ์ฌ',
- 'dashboard.analysis.tab.overview': '์ข
ํฉ์ ์ธ ๋ถ์',
- 'dashboard.analysis.tab.fundamental': '๊ธฐ์ด',
- 'dashboard.analysis.tab.technical': '๊ธฐ์ ',
- 'dashboard.analysis.tab.news': '๋ด์ค',
- 'dashboard.analysis.tab.sentiment': '๊ฐ์ ',
- 'dashboard.analysis.tab.risk': '์ํ',
- 'dashboard.analysis.tab.debate': '๊ธธ๊ณ ์งง์ ๋
ผ์',
- 'dashboard.analysis.tab.decision': '์ต์ข
๊ฒฐ์ ',
- 'dashboard.analysis.empty.selectSymbol': '๋ถ์์ ์์ํ๋ ค๋ฉด ๋์์ ์ ํํ์ธ์.',
- 'dashboard.analysis.empty.selectSymbolDesc': '์์ฒด ์ ํํ ์ฃผ์ ๋ชฉ๋ก์์ ์ ํํ๊ฑฐ๋ ๊ธฐ๋ณธ ์ฝ๋๋ฅผ ์
๋ ฅํ์ฌ ๋ค์ฐจ์ AI ๋ถ์ ๋ณด๊ณ ์๋ฅผ ์ป์ต๋๋ค.',
- 'dashboard.analysis.empty.startAnalysis': '๋ค์ฐจ์ ๋ถ์์ ์ํํ๋ ค๋ฉด "๋ถ์ ์์" ๋ฒํผ์ ํด๋ฆญํ์ธ์.',
- 'dashboard.analysis.empty.startAnalysisDesc': 'ํ๋๋ฉํธ, ๊ธฐ์ , ๋ด์ค, ์ ์, ๋ฆฌ์คํฌ ๋ฑ ๋ค์ฐจ์์์ ์ข
ํฉ์ ์ธ ๋ถ์์ ์ ๊ณตํด๋๋ฆฝ๋๋ค.',
- 'dashboard.analysis.empty.noData': 'ํ์ฌ {type} ๋ถ์ ๋ฐ์ดํฐ๊ฐ ์์ต๋๋ค. ๋จผ์ ์ข
ํฉ์ ์ธ ๋ถ์์ ์ํํด ์ฃผ์ธ์.',
- 'dashboard.analysis.empty.noWatchlist': 'ํ์ฌ ์์ฒด์ ํํ ์ข
๋ชฉ์ด ์์ต๋๋ค.',
- 'dashboard.analysis.empty.noHistory': '์์ง ๊ธฐ๋ก์ด ์์ต๋๋ค.',
- 'dashboard.analysis.empty.watchlistHint': 'ํ์ฌ ์์ฒด ์ ํํ ์ฃผ์์ด ์์ต๋๋ค. ๋จผ์ ๋ฌธ์ํด ์ฃผ์ธ์.',
- 'dashboard.analysis.empty.noDebateData': '์์ง ํ ๋ก ๋ฐ์ดํฐ๊ฐ ์์ต๋๋ค.',
- 'dashboard.analysis.empty.noDecisionData': '์์ง ๊ฒฐ์ ๋ฐ์ดํฐ๊ฐ ์์ต๋๋ค.',
- 'dashboard.analysis.empty.selectAgent': '๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ ค๋ฉด ์์ด์ ํธ๋ฅผ ์ ํํ์ธ์.',
- 'dashboard.analysis.loading.analyzing': '๋ถ์ ์ค์
๋๋ค. ์ ์ ๊ธฐ๋ค๋ ค ์ฃผ์ธ์...',
- 'dashboard.analysis.loading.fundamental': '๊ธฐ๋ณธ ๋ฐ์ดํฐ ๋ถ์ ์ค...',
- 'dashboard.analysis.loading.technical': '๊ธฐ์ ์งํ ๋ถ์ ์ค...',
- 'dashboard.analysis.loading.news': '๋ด์ค ๋ฐ์ดํฐ ๋ถ์ ์ค...',
- 'dashboard.analysis.loading.sentiment': '์์ฅ ์ฌ๋ฆฌ ๋ถ์ ์คโฆ',
- 'dashboard.analysis.loading.risk': '์ํ ํ๊ฐ ์ค...',
- 'dashboard.analysis.loading.debate': '๋กฑ์ ๋
ผ์์ด ์งํ์ค์ธ๋ฐ..',
- 'dashboard.analysis.loading.decision': '์ต์ข
๊ฒฐ์ ์ ๋ด๋ฆฌ๋ ์ค...',
- 'dashboard.analysis.score.overall': '์ข
ํฉํ๊ฐ',
- 'dashboard.analysis.score.recommendation': 'ํฌ์ ์กฐ์ธ',
- 'dashboard.analysis.score.confidence': '์์ ๊ฐ',
- 'dashboard.analysis.dimension.fundamental': '๊ธฐ์ด',
- 'dashboard.analysis.dimension.technical': '๊ธฐ์ ',
- 'dashboard.analysis.dimension.news': '๋ด์ค',
- 'dashboard.analysis.dimension.sentiment': '๊ฐ์ ',
- 'dashboard.analysis.dimension.risk': '์ํ',
- 'dashboard.analysis.card.dimensionScores': '๊ฐ ์ฐจ์์ ๋ํ ํ๊ฐ',
- 'dashboard.analysis.card.overviewReport': '์ข
ํฉ๋ถ์๋ณด๊ณ ์',
- 'dashboard.analysis.card.financialMetrics': '์ฌ๋ฌด ์งํ',
- 'dashboard.analysis.card.fundamentalReport': '๊ธฐ์ด๋ถ์ ๋ณด๊ณ ์',
- 'dashboard.analysis.card.technicalIndicators': '๊ธฐ์ ์งํ',
- 'dashboard.analysis.card.technicalReport': '๊ธฐ์ ์ ๋ถ์ ๋ณด๊ณ ์',
- 'dashboard.analysis.card.newsList': '๊ด๋ จ ๋ด์ค',
- 'dashboard.analysis.card.newsReport': '๋ด์ค ๋ถ์ ๋ณด๊ณ ์',
- 'dashboard.analysis.card.sentimentIndicators': '๊ฐ์ ์งํ',
- 'dashboard.analysis.card.sentimentReport': '๊ฐ์ ๋ถ์ ๋ณด๊ณ ์',
- 'dashboard.analysis.card.riskMetrics': '์ํ ์งํ',
- 'dashboard.analysis.card.riskReport': '์ํ ํ๊ฐ ๋ณด๊ณ ์',
- 'dashboard.analysis.card.bullView': '๊ฐ์ธ ์ ๋ง(๊ฐ์ธ)',
- 'dashboard.analysis.card.bearView': '์ฝ์ธ ์ ๋ง (๊ณฐ)',
- 'dashboard.analysis.card.researchConclusion': '์ฐ๊ตฌ์์ ๊ฒฐ๋ก ',
- 'dashboard.analysis.card.traderPlan': '์์ธ ๊ณํ',
- 'dashboard.analysis.card.riskDebate': '์ํ์์ํ ํ ๋ก ',
- 'dashboard.analysis.card.finalDecision': '์ต์ข
๊ฒฐ์ ',
- 'dashboard.analysis.card.tradePlanDetail': '๊ฑฐ๋ ๊ณํ ์ธ๋ถ์ ๋ณด',
- 'dashboard.analysis.tradingPlan.entry_price': '์
์ฅ๋ฃ',
- 'dashboard.analysis.tradingPlan.position_size': '์์น ํฌ๊ธฐ',
- 'dashboard.analysis.tradingPlan.stop_loss': '์์ค์ ๋ง๋ค',
- 'dashboard.analysis.tradingPlan.take_profit': '์ด์ต์ ์ป์ผ์ธ์',
- 'dashboard.analysis.label.confidence': '์์ ๊ฐ',
- 'dashboard.analysis.label.keyPoints': 'ํต์ฌ ํฌ์ธํธ',
- 'dashboard.analysis.label.riskWarning': '์ํ ๊ฒฝ๊ณ ',
- 'dashboard.analysis.risk.risky': '์ํํ๋ค',
- 'dashboard.analysis.risk.neutral': '์ค๋ฆฝ์ ๊ด์ (Neutral)',
- 'dashboard.analysis.risk.safe': '๋ณด์์ ๊ด์ (์์ )',
- 'dashboard.analysis.risk.conclusion': '๊ฒฐ๋ก ',
- 'dashboard.analysis.feature.fundamental': '๊ธฐ๋ณธ์ ๋ถ์',
- 'dashboard.analysis.feature.technical': '๊ธฐ์ ์ ๋ถ์',
- 'dashboard.analysis.feature.news': '๋ด์ค ๋ถ์',
- 'dashboard.analysis.feature.sentiment': '๊ฐ์ ๋ถ์',
- 'dashboard.analysis.feature.risk': '์ํ ํ๊ฐ',
- 'dashboard.analysis.watchlist.title': '๋์ ์ฃผ์ ์ ํ',
- 'dashboard.analysis.watchlist.add': '์ถ๊ฐํ๋ค',
- 'dashboard.analysis.watchlist.addStock': '์ฌ๊ณ ์ถ๊ฐ',
- 'dashboard.analysis.modal.addStock.title': '์ต์
์ฌ๊ณ ์ถ๊ฐ',
- 'dashboard.analysis.modal.addStock.confirm': '์์์ด',
- 'dashboard.analysis.modal.addStock.cancel': '์ทจ์',
- 'dashboard.analysis.modal.addStock.market': '์์ฅ ์ ํ',
- 'dashboard.analysis.modal.addStock.marketPlaceholder': '์์ฅ์ ์ ํํด์ฃผ์ธ์',
- 'dashboard.analysis.modal.addStock.marketRequired': '์์ฅ ์ ํ์ ์ ํํ์ธ์.',
- 'dashboard.analysis.modal.addStock.symbol': '์ฃผ์ ์ฝ๋',
- 'dashboard.analysis.modal.addStock.symbolPlaceholder': '์: AAPL, TSLA, GOOGL, 000001, BTC',
- 'dashboard.analysis.modal.addStock.symbolRequired': '์ฃผ์์ฝ๋๋ฅผ ์
๋ ฅํด์ฃผ์ธ์',
- 'dashboard.analysis.modal.addStock.searchPlaceholder': '๋์ ์ฝ๋ ๋๋ ์ด๋ฆ ๊ฒ์',
- 'dashboard.analysis.modal.addStock.searchOrInputPlaceholder': '๊ธฐ๋ณธ ์ฝ๋๋ฅผ ๊ฒ์ํ๊ฑฐ๋ ์
๋ ฅํ์ธ์(์: AAPL, BTC/USDT, EUR/USD)',
- 'dashboard.analysis.modal.addStock.searchOrInputHint': '๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ฐ์ฒด ๊ฒ์ ๋๋ ์ฝ๋ ์ง์ ์
๋ ฅ ์ง์(์์คํ
์ด ์๋์ผ๋ก ์ด๋ฆ์ ์ป์)',
- 'dashboard.analysis.modal.addStock.search': '๊ฒ์',
- 'dashboard.analysis.modal.addStock.searchResults': '๊ฒ์๊ฒฐ๊ณผ',
- 'dashboard.analysis.modal.addStock.hotSymbols': '์ธ๊ธฐ ์๋ ํ๊ฒ',
- 'dashboard.analysis.modal.addStock.noHotSymbols': '์์ง ์ธ๊ธฐ ์๋ ํ๊ฒ์ด ์์ต๋๋ค.',
- 'dashboard.analysis.modal.addStock.selectedSymbol': '์ ํ๋จ',
- 'dashboard.analysis.modal.addStock.pleaseSelectSymbol': '๋จผ์ ๋์์ ์ ํํ์ธ์.',
- 'dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol': '๋์์ ์ ํํ๊ฑฐ๋ ๋์ ์ฝ๋๋ฅผ ๋จผ์ ์
๋ ฅํ์ธ์',
- 'dashboard.analysis.modal.addStock.pleaseEnterSymbol': 'ํ๊ฒ์ฝ๋๋ฅผ ์
๋ ฅํด์ฃผ์ธ์',
- 'dashboard.analysis.modal.addStock.pleaseSelectMarket': '๋จผ์ ์์ฅ ์ ํ์ ์ ํํ์ธ์.',
- 'dashboard.analysis.modal.addStock.searchFailed': '๊ฒ์์ ์คํจํ์ต๋๋ค. ๋์ค์ ๋ค์ ์๋ํด ์ฃผ์ธ์.',
- 'dashboard.analysis.modal.addStock.noSearchResults': '์ผ์นํ๋ ๋์์ด ์์ต๋๋ค.',
- 'dashboard.analysis.modal.addStock.willAutoFetchName': '์์คํ
์์ ์๋์ผ๋ก ์ด๋ฆ์ ๊ฐ์ ธ์ต๋๋ค.',
- 'dashboard.analysis.modal.addStock.addDirectly': '์ง์ ์ถ๊ฐ',
- 'dashboard.analysis.modal.addStock.nameWillBeFetched': '์ถ๊ฐ๋๋ฉด ์ด๋ฆ์ด ์๋์ผ๋ก ์ ํ๋ฉ๋๋ค.',
- 'dashboard.analysis.market.USStock': '๋ฏธ๊ตญ ์ฃผ์',
- 'dashboard.analysis.market.Crypto': '์ํธํํ',
- 'dashboard.analysis.market.Forex': '์ธํ',
- 'dashboard.analysis.market.Futures': '์ ๋ฌผ',
- 'dashboard.analysis.modal.history.title': '์ญ์ฌ์ ๋ถ์ ๊ธฐ๋ก',
- 'dashboard.analysis.modal.history.viewResult': '๊ฒฐ๊ณผ ๋ณด๊ธฐ',
- 'dashboard.analysis.modal.history.completeTime': '์๋ฃ ์๊ฐ',
- 'dashboard.analysis.modal.history.error': '์ค๋ฅ',
- 'dashboard.analysis.status.pending': '๋ณด๋ฅ ์ค',
- 'dashboard.analysis.status.processing': '์ฒ๋ฆฌ',
- 'dashboard.analysis.status.completed': '์๋ฃ๋จ',
- 'dashboard.analysis.status.failed': '์คํจํ๋ค',
- 'dashboard.analysis.message.selectSymbol': '๋์์ ๋จผ์ ์ ํํด์ฃผ์ธ์',
- 'dashboard.analysis.message.taskCreated': '๋ถ์ ์์
์ด ์์ฑ๋์ด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ ์ค์
๋๋ค...',
- 'dashboard.analysis.message.analysisComplete': '๋ถ์ ์๋ฃ',
- 'dashboard.analysis.message.analysisCompleteCache': '๋ถ์ ์๋ฃ(์บ์๋ ๋ฐ์ดํฐ ํ์ฉ)',
- 'dashboard.analysis.message.analysisFailed': '๋ถ์์ ์คํจํ์ต๋๋ค. ๋์ค์ ๋ค์ ์๋ํด ์ฃผ์ธ์.',
- 'dashboard.analysis.message.addStockSuccess': '์ฑ๊ณต์ ์ผ๋ก ์ถ๊ฐ๋์์ต๋๋ค',
- 'dashboard.analysis.message.addStockFailed': '์ถ๊ฐ ์คํจ',
- 'dashboard.analysis.message.removeStockSuccess': '์ฑ๊ณต์ ์ผ๋ก ์ ๊ฑฐ๋์์ต๋๋ค',
- 'dashboard.analysis.message.removeStockFailed': '์ ๊ฑฐ ์คํจ',
- 'dashboard.analysis.message.resumingAnalysis': '๋ถ์ ์์
์ ์ฌ๊ฐํ๋ ์ค...',
- 'dashboard.analysis.message.deleteSuccess': '์ฑ๊ณต์ ์ผ๋ก ์ญ์ ๋์์ต๋๋ค',
- 'dashboard.analysis.message.deleteFailed': '์ญ์ ์คํจ',
- 'dashboard.analysis.modal.history.delete': '์ญ์ ',
- 'dashboard.analysis.modal.history.deleteConfirm': '์ด ๋ถ์ ๊ธฐ๋ก์ ์ญ์ ํ์๊ฒ ์ต๋๊น?',
- 'dashboard.analysis.test': '์์ ๋ฒํธ {no}, Gongzhuan Road',
- 'dashboard.analysis.introduce': 'ํ์๊ธฐ ์ค๋ช
',
- 'dashboard.analysis.total-sales': '์ด๋งค์ถ',
- 'dashboard.analysis.day-sales': '์ผํ๊ท ๋งค์ถ์์',
- 'dashboard.analysis.visits': '๋ฐฉ๋ฌธ',
- 'dashboard.analysis.visits-trend': 'ํธ๋ํฝ ๋ํฅ',
- 'dashboard.analysis.visits-ranking': '๋งค์ฅ ๋ฐฉ๋ฌธ ์์',
- 'dashboard.analysis.day-visits': '์ผ์ผ ๋ฐฉ๋ฌธ',
- 'dashboard.analysis.week': '๋งค์ฃผ ์ ๋
๋๋น',
- 'dashboard.analysis.day': '์ ๋
๋๋น',
- 'dashboard.analysis.payments': '๊ฒฐ์ ํ์',
- 'dashboard.analysis.conversion-rate': '์ ํ์จ',
- 'dashboard.analysis.operational-effect': '์ด์ํ๋ ํจ๊ณผ',
- 'dashboard.analysis.sales-trend': 'ํ๋งค ๋ํฅ',
- 'dashboard.analysis.sales-ranking': '๋งค์ฅํ๋งค์์',
- 'dashboard.analysis.all-year': '์ผ๋
๋ด๋ด',
- 'dashboard.analysis.all-month': '์ด๋ฒ ๋ฌ',
- 'dashboard.analysis.all-week': '์ด๋ฒ ์ฃผ',
- 'dashboard.analysis.all-day': '์ค๋',
- 'dashboard.analysis.search-users': '๊ฒ์ ์ฌ์ฉ์ ์',
- 'dashboard.analysis.per-capita-search': '1์ธ๋น ๊ฒ์๋',
- 'dashboard.analysis.online-top-search': '์จ๋ผ์ธ ์ธ๊ธฐ ๊ฒ์์ด',
- 'dashboard.analysis.the-proportion-of-sales': 'ํ๋งค ์นดํ
๊ณ ๋ฆฌ ๋น์จ',
- 'dashboard.analysis.dropdown-option-one': '์ฒซ ๋ฒ์งธ ์์ ',
- 'dashboard.analysis.dropdown-option-two': '์์ 2',
- 'dashboard.analysis.channel.all': '๋ชจ๋ ์ฑ๋',
- 'dashboard.analysis.channel.online': '์จ๋ผ์ธ',
- 'dashboard.analysis.channel.stores': '์ ์ฅ',
- 'dashboard.analysis.sales': 'ํ๋งค',
- 'dashboard.analysis.traffic': '์น๊ฐ ํ๋ฆ',
- 'dashboard.analysis.table.rank': '์์',
- 'dashboard.analysis.table.search-keyword': 'ํค์๋ ๊ฒ์',
- 'dashboard.analysis.table.users': '์ฌ์ฉ์ ์',
- 'dashboard.analysis.table.weekly-range': '์ฃผ๊ฐ ์ฆ๊ฐ',
- 'dashboard.indicator.selectSymbol': '๊ธฐ๋ณธ ์ฝ๋ ์ ํ ๋๋ ์
๋ ฅ',
- 'dashboard.indicator.emptyWatchlistHint': 'ํ์ฌ ์์ฒด ์ ํํ ์ฃผ์์ด ์์ต๋๋ค. ๋จผ์ ์ถ๊ฐํด ์ฃผ์ธ์.',
- 'dashboard.indicator.hint.selectSymbol': '๋ถ์์ ์์ํ๋ ค๋ฉด ๋์์ ์ ํํ์ธ์.',
- 'dashboard.indicator.hint.selectSymbolDesc': 'K-๋ผ์ธ ์ฐจํธ ๋ฐ ๊ธฐ์ ์งํ๋ฅผ ๋ณด๋ ค๋ฉด ์ ๊ฒ์์ฐฝ์์ ์ฃผ์ ์ฝ๋๋ฅผ ์ ํํ๊ฑฐ๋ ์
๋ ฅํ์ธ์.',
- 'dashboard.indicator.retry': '๋ค์ ์๋ํ์ธ์',
- 'dashboard.indicator.panel.title': '๊ธฐ์ ์งํ',
- 'dashboard.indicator.panel.realtimeOn': '์ค์๊ฐ ์
๋ฐ์ดํธ ๋๊ธฐ',
- 'dashboard.indicator.panel.realtimeOff': '์ค์๊ฐ ์
๋ฐ์ดํธ ํ์ฑํ',
- 'dashboard.indicator.panel.themeLight': '์ด๋์ด ํ
๋ง๋ก ์ ํ',
- 'dashboard.indicator.panel.themeDark': '๋ฐ์ ํ
๋ง๋ก ์ ํ',
- 'dashboard.indicator.section.enabled': 'ํ์ฑํ๋จ',
- 'dashboard.indicator.section.added': '๋ด๊ฐ ์ถ๊ฐํ ์งํ',
- 'dashboard.indicator.section.custom': '์ง์ ๋ง๋ ์งํ',
- 'dashboard.indicator.section.bought': '๋ด๊ฐ ๊ตฌ๋งคํ ์งํ',
- 'dashboard.indicator.section.myCreated': '๋ด๊ฐ ๋ง๋ ์งํ',
- 'dashboard.indicator.empty': '์์ง ํ์๊ธฐ๊ฐ ์์ต๋๋ค. ๋จผ์ ํ์๊ธฐ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์์ฑํ์ธ์.',
- 'dashboard.indicator.buy': '๋งค์ ์งํ',
- 'dashboard.indicator.action.start': '์์',
- 'dashboard.indicator.action.stop': '๋ซ๊ธฐ',
- 'dashboard.indicator.action.edit': 'ํธ์ง',
- 'dashboard.indicator.action.delete': '์ญ์ ',
- 'dashboard.indicator.action.backtest': '๋ฐฑํ
์คํธ',
- 'dashboard.indicator.status.normal': '์ ์',
- 'dashboard.indicator.status.normalPermanent': '์ผ๋ฐ(์๊ตฌ์ ์ผ๋ก ์ ํจ)',
- 'dashboard.indicator.status.expired': '๋ง๋ฃ๋จ',
- 'dashboard.indicator.expiry.permanent': '์๊ตฌ์ ์ผ๋ก ์ ํจํจ',
- 'dashboard.indicator.expiry.noExpiry': '๋ง๋ฃ ์๊ฐ ์์',
- 'dashboard.indicator.expiry.expired': '๋ง๋ฃ๋จ: {date}',
- 'dashboard.indicator.expiry.expiresOn': '๋ง๋ฃ ์๊ฐ: {date}',
- 'dashboard.indicator.delete.confirmTitle': '์ญ์ ํ์ธ',
- 'dashboard.indicator.delete.confirmContent': '"{name}" ํ์๊ธฐ๋ฅผ ์ญ์ ํ์๊ฒ ์ต๋๊น? ์ด ์์
์ ๋๋๋ฆด ์ ์์ต๋๋ค.',
- 'dashboard.indicator.delete.confirmOk': '์ญ์ ',
- 'dashboard.indicator.delete.confirmCancel': '์ทจ์',
- 'dashboard.indicator.delete.success': '์ฑ๊ณต์ ์ผ๋ก ์ญ์ ๋์์ต๋๋ค',
- 'dashboard.indicator.delete.failed': '์ญ์ ์คํจ',
- 'dashboard.indicator.save.success': '์ฑ๊ณต์ ์ผ๋ก ์ ์ฅ๋์์ต๋๋ค',
- 'dashboard.indicator.save.failed': '์ ์ฅ ์คํจ',
- 'dashboard.indicator.error.loadWatchlistFailed': '์ต์
์ฌ๊ณ ๋ฅผ ๋ก๋ํ์ง ๋ชปํ์ต๋๋ค.',
- 'dashboard.indicator.error.chartNotReady': '์ฐจํธ ๊ตฌ์ฑ ์์๊ฐ ์ด๊ธฐํ๋์ง ์์์ต๋๋ค. ๋จผ์ ๋์์ ์ ํํ๊ณ ์ฐจํธ๊ฐ ๋ก๋๋ ๋๊น์ง ๊ธฐ๋ค๋ ค ์ฃผ์ธ์.',
- 'dashboard.indicator.error.chartMethodNotReady': '์ฐจํธ ๊ตฌ์ฑ ์์ ๋ฉ์๋๊ฐ ์ค๋น๋์ง ์์์ต๋๋ค. ๋์ค์ ๋ค์ ์๋ํด ์ฃผ์ธ์.',
- 'dashboard.indicator.error.chartExecuteNotReady': '์ฐจํธ ๊ตฌ์ฑ์์ ์คํ ๋ฐฉ๋ฒ์ด ์ค๋น๋์ง ์์์ต๋๋ค. ๋์ค์ ๋ค์ ์๋ํด ์ฃผ์ธ์.',
- 'dashboard.indicator.error.parseFailed': 'Python ์ฝ๋๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ ์ ์์ต๋๋ค.',
- 'dashboard.indicator.error.parseFailedCheck': 'Python ์ฝ๋๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ ์ ์์ต๋๋ค. ์ฝ๋ ํ์์ ํ์ธํ์ธ์.',
- 'dashboard.indicator.error.addIndicatorFailed': 'ํ์๊ธฐ๋ฅผ ์ถ๊ฐํ์ง ๋ชปํ์ต๋๋ค.',
- 'dashboard.indicator.error.runIndicatorFailed': '์คํ ํ์๊ธฐ ์คํจ',
- 'dashboard.indicator.error.pleaseLogin': '๋จผ์ ๋ก๊ทธ์ธํด์ฃผ์ธ์',
- 'dashboard.indicator.error.loadDataFailed': '๋ฐ์ดํฐ ๋ก๋ฉ ์คํจ',
- 'dashboard.indicator.error.loadDataFailedDesc': '๋คํธ์ํฌ ์ฐ๊ฒฐ์ ํ์ธํด์ฃผ์ธ์',
- 'dashboard.indicator.error.pythonEngineFailed': 'Python ์์ง์ ๋ก๋ํ์ง ๋ชปํ๊ณ ํ์๊ธฐ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ง ๋ชปํ ์ ์์ต๋๋ค.',
- 'dashboard.indicator.error.chartInitFailed': '์ฐจํธ ์ด๊ธฐํ ์คํจ',
- 'dashboard.indicator.warning.enterCode': 'ํ์๊ธฐ ์ฝ๋๋ฅผ ๋จผ์ ์
๋ ฅํ์ธ์.',
- 'dashboard.indicator.warning.pyodideLoadFailed': 'Python ์์ง์ ๋ก๋ํ์ง ๋ชปํ์ต๋๋ค.',
- 'dashboard.indicator.warning.pyodideLoadFailedDesc': 'ํ์ฌ ์ง์ญ ๋๋ ๋คํธ์ํฌ ํ๊ฒฝ์์๋ ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.',
- 'dashboard.indicator.warning.chartNotInitialized': '์ฐจํธ๊ฐ ์ด๊ธฐํ๋์ง ์์ ์ ๊ทธ๋ฆฌ๊ธฐ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.',
- 'dashboard.indicator.success.runIndicator': 'ํ์๊ธฐ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์คํ๋ฉ๋๋ค.',
- 'dashboard.indicator.success.clearDrawings': '๋ชจ๋ ์ ํ ์ญ์ ๋จ',
- 'dashboard.indicator.sma': 'SMA(์ด๋ ํ๊ท ์กฐํฉ)',
- 'dashboard.indicator.ema': 'EMA(์ง์ ์ด๋ ํ๊ท ์กฐํฉ)',
- 'dashboard.indicator.rsi': 'RSI(์๋๊ฐ๋)',
- 'dashboard.indicator.macd': 'MACD',
- 'dashboard.indicator.bb': '๋ณผ๋ฆฐ์ ๋ฐด๋',
- 'dashboard.indicator.atr': 'ATR(ํ๊ท ์ค์ ๋ฒ์)',
- 'dashboard.indicator.cci': 'CCI(์ํ ์ฑ๋ ์ง์)',
- 'dashboard.indicator.williams': 'Williams %R(์๋ฆฌ์์ค ์งํ)',
- 'dashboard.indicator.mfi': 'MFI(์๊ธ ํ๋ฆ ์ง์)',
- 'dashboard.indicator.adx': 'ADX(ํ๊ท ์ถ์ธ ์ง์)',
- 'dashboard.indicator.obv': 'OBV(์๋์งํ)',
- 'dashboard.indicator.adosc': 'ADOSC(๋์ /๋์คํจ์น ์ค์ค๋ ์ดํฐ)',
- 'dashboard.indicator.ad': 'AD(์ง์ /๋ถ๋ฐฐ์ )',
- 'dashboard.indicator.kdj': 'KDJ(ํ๋ฅ ์ ์งํ)',
- 'dashboard.indicator.signal.buy': '๊ตฌ๋งค',
- 'dashboard.indicator.signal.sell': 'ํ๋งค',
- 'dashboard.indicator.signal.supertrendBuy': '์ํผํธ๋ ๋ ๊ตฌ๋งค',
- 'dashboard.indicator.signal.supertrendSell': '์ํผํธ๋ ๋ ๋งค๋',
- 'dashboard.indicator.chart.kline': 'K๋ผ์ธ',
- 'dashboard.indicator.chart.volume': '๋ณผ๋ฅจ',
- 'dashboard.indicator.chart.uptrend': '์์น ์ถ์ธ',
- 'dashboard.indicator.chart.downtrend': 'ํ๋ฝ ์ถ์ธ',
- 'dashboard.indicator.tooltip.time': '์๊ฐ',
- 'dashboard.indicator.tooltip.open': '์ด๋ค',
- 'dashboard.indicator.tooltip.close': '๋ฐ๋ค',
- 'dashboard.indicator.tooltip.high': '๋๋ค',
- 'dashboard.indicator.tooltip.low': '๋ฎ์',
- 'dashboard.indicator.tooltip.volume': '๋ณผ๋ฅจ',
- 'dashboard.indicator.drawing.line': '์ ๋ถ',
- 'dashboard.indicator.drawing.horizontalLine': '์ํ์ ',
- 'dashboard.indicator.drawing.verticalLine': '์์ง์ ',
- 'dashboard.indicator.drawing.ray': '๋ ์ด',
- 'dashboard.indicator.drawing.straightLine': '์ง์ ',
- 'dashboard.indicator.drawing.parallelLine': 'ํํ์ ',
- 'dashboard.indicator.drawing.priceLine': '๊ฐ๊ฒฉ์ ',
- 'dashboard.indicator.drawing.priceChannel': '๊ฐ๊ฒฉ ์ฑ๋',
- 'dashboard.indicator.drawing.fibonacciLine': 'ํผ๋ณด๋์น ๋ผ์ธ',
- 'dashboard.indicator.drawing.clearAll': '๋ชจ๋ ์ ํ ์ง์ฐ๊ธฐ',
- 'dashboard.indicator.market.USStock': '๋ฏธ๊ตญ ์ฃผ์',
- 'dashboard.indicator.market.Crypto': '์ํธํํ',
- 'dashboard.indicator.market.Forex': '์ธํ',
- 'dashboard.indicator.market.Futures': '์ ๋ฌผ',
- 'dashboard.indicator.create': '์งํ ์์ฑ',
- 'dashboard.indicator.editor.title': '์งํ ์์ฑ/ํธ์ง',
- 'dashboard.indicator.editor.name': '์งํ ์ด๋ฆ',
- 'dashboard.indicator.editor.nameRequired': '์งํ ์ด๋ฆ์ ์
๋ ฅํ์ธ์.',
- 'dashboard.indicator.editor.namePlaceholder': '์งํ ์ด๋ฆ์ ์
๋ ฅํ์ธ์.',
- 'dashboard.indicator.editor.description': 'ํ์๊ธฐ ์ค๋ช
',
- 'dashboard.indicator.editor.descriptionPlaceholder': 'ํ์๊ธฐ์ ๋ํ ์ค๋ช
์ ์
๋ ฅํ์ธ์(์ ํ ์ฌํญ).',
- 'dashboard.indicator.editor.code': 'ํ์ด์ฌ ์ฝ๋',
- 'dashboard.indicator.editor.codeRequired': 'ํ์ ์ฝ๋๋ฅผ ์
๋ ฅํ์ธ์',
- 'dashboard.indicator.editor.codePlaceholder': 'Python ์ฝ๋๋ฅผ ์
๋ ฅํ์ธ์.',
- 'dashboard.indicator.editor.run': '๋ฌ๋ฆฌ๋ค',
- 'dashboard.indicator.editor.runHint': '์คํ ๋ฒํผ์ ํด๋ฆญํ๋ฉด K-๋ผ์ธ ์ฐจํธ์ ์งํ ํจ๊ณผ๋ฅผ ๋ฏธ๋ฆฌ ๋ณผ ์ ์์ต๋๋ค.',
- 'dashboard.indicator.editor.guide': '๊ฐ๋ฐ ๊ฐ์ด๋',
- 'dashboard.indicator.editor.guideTitle': 'Python ์งํ ๊ฐ๋ฐ ๊ฐ์ด๋',
- 'dashboard.indicator.editor.save': '์ ์ฅ',
- 'dashboard.indicator.editor.cancel': '์ทจ์',
- 'dashboard.indicator.editor.unnamed': '์ด๋ฆ ์๋ ํ์๊ธฐ',
- 'dashboard.indicator.editor.publishToCommunity': '์ปค๋ฎค๋ํฐ์ ๊ฒ์',
- 'dashboard.indicator.editor.publishToCommunityHint': '๊ฒ์๋๋ฉด ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ์ปค๋ฎค๋ํฐ์์ ๊ทํ์ ์งํ๋ฅผ ๋ณด๊ณ ์ฌ์ฉํ ์ ์์ต๋๋ค.',
- 'dashboard.indicator.editor.indicatorType': 'ํ์๊ธฐ ์ ํ',
- 'dashboard.indicator.editor.indicatorTypeRequired': '์งํ ์ ํ์ ์ ํํ์ธ์.',
- 'dashboard.indicator.editor.indicatorTypePlaceholder': '์งํ ์ ํ์ ์ ํํ์ธ์.',
- 'dashboard.indicator.editor.previewImage': '๋ฏธ๋ฆฌ๋ณด๊ธฐ',
- 'dashboard.indicator.editor.uploadImage': '์ฌ์ง ์
๋ก๋',
- 'dashboard.indicator.editor.previewImageHint': '๊ถ์ฅ ํฌ๊ธฐ: 800x400, 2MB ์ดํ',
- 'dashboard.indicator.editor.pricing': 'ํ๋งค๊ฐ(QDT)',
- 'dashboard.indicator.editor.pricingType.free': '๋ฌด๋ฃ',
- 'dashboard.indicator.editor.pricingType.permanent': '์๊ตฌ',
- 'dashboard.indicator.editor.pricingType.monthly': '์๋ณ ๊ฒฐ์ ',
- 'dashboard.indicator.editor.price': '๊ฐ๊ฒฉ',
- 'dashboard.indicator.editor.priceRequired': '๊ฐ๊ฒฉ์ ์
๋ ฅํด์ฃผ์ธ์',
- 'dashboard.indicator.editor.pricePlaceholder': '๊ฐ๊ฒฉ์ ์
๋ ฅํด์ฃผ์ธ์',
- 'dashboard.indicator.editor.pricingHint': '๋ฌด๋ฃ ์งํ์ ๊ฐ๊ฒฉ์ 0์ด์ง๋ง ํ๋ซํผ์ ์งํ ์ฌ์ฉ๋๊ณผ ์นญ์ฐฌ๋ฅ ์ ๋ฐ๋ผ ๋ณด์(QDT)์ ์ ๊ณตํฉ๋๋ค.',
- 'dashboard.indicator.editor.aiGenerate': '์ง๋ฅํ ์ธ๋',
- 'dashboard.indicator.editor.aiPromptPlaceholder': '๋น์ ์ ์์ด๋์ด๋ฅผ ์๋ ค์ฃผ์๋ฉด Python ํ์๊ธฐ ์ฝ๋๋ฅผ ์์ฑํด ๋๋ฆฌ๊ฒ ์ต๋๋ค.',
- 'dashboard.indicator.editor.aiGenerateBtn': 'AI ์์ฑ ์ฝ๋',
- 'dashboard.indicator.editor.aiPromptRequired': '๋น์ ์ ์๊ฐ์ ์
๋ ฅํด์ฃผ์ธ์',
- 'dashboard.indicator.editor.aiGenerateSuccess': '์ฝ๋ ์์ฑ ์ฑ๊ณต',
- 'dashboard.indicator.editor.aiGenerateError': '์ฝ๋ ์์ฑ์ ์คํจํ์ต๋๋ค. ๋์ค์ ๋ค์ ์๋ํด ์ฃผ์ธ์.',
- 'dashboard.indicator.editor.verifyCode': '์ฝ๋ ๊ฒ์ฆ',
- 'dashboard.indicator.editor.verifyCodeSuccess': '๊ฒ์ฆ ํต๊ณผ',
- 'dashboard.indicator.editor.verifyCodeFailed': '๊ฒ์ฆ ์คํจ',
- 'dashboard.indicator.editor.verifyCodeEmpty': '์ฝ๋๋ ๋น์๋ ์ ์์ต๋๋ค',
- 'dashboard.indicator.backtest.title': '์งํ ๋ฐฑํ
์คํธ',
- 'dashboard.indicator.backtest.config': '๋ฐฑํ
์คํธ ๋งค๊ฐ๋ณ์',
- 'dashboard.indicator.backtest.startDate': '์์์ผ',
- 'dashboard.indicator.backtest.endDate': '์ข
๋ฃ์ผ',
- 'dashboard.indicator.backtest.selectStartDate': '์์์ผ ์ ํ',
- 'dashboard.indicator.backtest.selectEndDate': '์ข
๋ฃ์ผ ์ ํ',
- 'dashboard.indicator.backtest.startDateRequired': '์์์ผ์ ์ ํํ์ธ์.',
- 'dashboard.indicator.backtest.endDateRequired': '์ข
๋ฃ์ผ์ ์ ํํ์ธ์.',
- 'dashboard.indicator.backtest.initialCapital': '์ด๊ธฐ์๋ณธ๊ธ',
- 'dashboard.indicator.backtest.initialCapitalRequired': '์ด๊ธฐ์๊ธ์ ์
๋ ฅํด์ฃผ์ธ์',
- 'dashboard.indicator.backtest.commission': '์์๋ฃ',
- 'dashboard.indicator.backtest.leverage': '๋ ๋ฒ๋ฆฌ์ง ๋น์จ',
- 'dashboard.indicator.backtest.tradeDirection': '๊ฑฐ๋ ๋ฐฉํฅ',
- 'dashboard.indicator.backtest.longOnly': '์ค๋ ๊ฐ์ธ์',
- 'dashboard.indicator.backtest.shortOnly': '์งง์',
- 'dashboard.indicator.backtest.both': '์๋ฐฉํฅ',
- 'dashboard.indicator.backtest.run': '๋ฐฑํ
์คํ
์์',
- 'dashboard.indicator.backtest.rerun': '๋ค์ ๋ฐฑํ
์คํธ',
- 'dashboard.indicator.backtest.close': '๋ซ๊ธฐ',
- 'dashboard.indicator.backtest.running': '์งํ ๋ฐฑํ
์คํธ ์งํ ์ค...',
- 'dashboard.indicator.backtest.results': '๋ฐฑํ
์คํธ ๊ฒฐ๊ณผ',
- 'dashboard.indicator.backtest.totalReturn': '์ด ์์ต',
- 'dashboard.indicator.backtest.annualReturn': '์ฐ๊ฐ ์๋',
- 'dashboard.indicator.backtest.maxDrawdown': '์ต๋ ๊ฐ์',
- 'dashboard.indicator.backtest.sharpeRatio': '์คํ๋น์จ',
- 'dashboard.indicator.backtest.winRate': '์น๋ฅ ',
- 'dashboard.indicator.backtest.profitFactor': '์์ต ๋น์จ',
- 'dashboard.indicator.backtest.totalTrades': '๊ฑฐ๋์',
- 'dashboard.indicator.totalReturn': '์ด ์์ต',
- 'dashboard.indicator.annualReturn': '์ฐ๊ฐ ์์ต๋ฅ ',
- 'dashboard.indicator.maxDrawdown': '์ต๋ ๊ฐ์',
- 'dashboard.indicator.sharpeRatio': '์คํ๋น์จ',
- 'dashboard.indicator.winRate': '์น๋ฅ ',
- 'dashboard.indicator.profitFactor': '์์ต ๋น์จ',
- 'dashboard.indicator.totalTrades': '์ด ๊ฑฐ๋ ์',
- 'dashboard.indicator.backtest.totalCommission': '์ด ์ทจ๊ธ ์์๋ฃ',
- 'dashboard.indicator.backtest.equityCurve': '์์ต๋ฅ ๊ณก์ ',
- 'dashboard.indicator.backtest.strategy': '์งํ์๋',
- 'dashboard.indicator.backtest.benchmark': '๋ฒค์น๋งํฌ ์์ต๋ฅ ',
- 'dashboard.indicator.backtest.tradeHistory': '๊ฑฐ๋ ๋ด์ญ',
- 'dashboard.indicator.backtest.tradeTime': '์๊ฐ',
- 'dashboard.indicator.backtest.tradeType': '์ ํ',
- 'dashboard.indicator.backtest.buy': '์ฌ๋ค',
- 'dashboard.indicator.backtest.sell': 'ํ๋ค',
- 'dashboard.indicator.backtest.liquidation': '์ฒญ์ฐ',
- 'dashboard.indicator.backtest.openLong': '๊ธธ๊ฒ ์ด๋ค',
- 'dashboard.indicator.backtest.closeLong': 'ํ๋์ค',
- 'dashboard.indicator.backtest.closeLongStop': '๋งค์์ ๊ฐ๊น์(์์ ๋งค)',
- 'dashboard.indicator.backtest.closeLongProfit': '๋ ๋ซ๊ธฐ (์ด์ต ์คํ)',
- 'dashboard.indicator.backtest.addLong': '๋กฑ ํฌ์ง์
์ถ๊ฐ',
- 'dashboard.indicator.backtest.openShort': '์คํ ์ผํธ',
- 'dashboard.indicator.backtest.closeShort': '๋น์ด ์์',
- 'dashboard.indicator.backtest.closeShortStop': '์ฒญ์ฐ(์์ ๋งค)',
- 'dashboard.indicator.backtest.closeShortProfit': '๋ง๊ฐ(์ด์ต์คํ)',
- 'dashboard.indicator.backtest.addShort': '์ ํฌ์ง์
์ถ๊ฐ',
- 'dashboard.indicator.backtest.price': '๊ฐ๊ฒฉ',
- 'dashboard.indicator.backtest.amount': '์๋',
- 'dashboard.indicator.backtest.balance': '๊ณ์ข์๊ณ ',
- 'dashboard.indicator.backtest.profit': '์ด์ต๊ณผ ์์ค',
- 'dashboard.indicator.backtest.success': '๋ฐฑํ
์คํธ ์๋ฃ',
- 'dashboard.indicator.backtest.failed': '๋ฐฑํ
์คํธ์ ์คํจํ์ต๋๋ค. ๋์ค์ ๋ค์ ์๋ํด ์ฃผ์ธ์.',
- 'dashboard.indicator.backtest.noIndicatorCode': '์ด ์งํ์ ๋ํ ๋ฐฑํ
์คํธ ๊ฐ๋ฅํ ์ฝ๋๊ฐ ์์ต๋๋ค.',
- 'dashboard.indicator.backtest.noSymbol': '๊ฑฐ๋๋์์ ๋จผ์ ์ ํํด์ฃผ์ธ์',
- 'dashboard.indicator.backtest.dateRangeExceeded': '๋ฐฑํ
์คํธ ์๊ฐ ๋ฒ์๊ฐ ํ๋๋ฅผ ์ด๊ณผํฉ๋๋ค. {timeframe} ๊ธฐ๊ฐ์ ์ต๋ {maxRange}๊น์ง ๋ฐฑํ
์คํธํ ์ ์์ต๋๋ค.',
- 'dashboard.indicator.backtest.dateRangeExceededDays': 'Backtest range exceeds limit: {timeframe} max {maxRange} ({maxDays} days)',
- 'dashboard.indicator.backtest.metaLine': 'Symbol: {symbol} | Market: {market} | Timeframe: {timeframe}',
- 'dashboard.indicator.backtest.savedRunId': 'Backtest saved. Run ID: {id}',
- 'dashboard.indicator.backtest.prev': 'Previous',
- 'dashboard.indicator.backtest.next': 'Next',
- 'dashboard.indicator.backtest.hint.entryPctMax': 'Max entry: {maxPct}% (reserve budget for future scale-ins)',
- 'dashboard.indicator.backtest.steps.strategy.title': 'Strategy',
- 'dashboard.indicator.backtest.steps.strategy.desc': 'Position sizing & risk controls',
- 'dashboard.indicator.backtest.steps.trading.title': 'Trading settings',
- 'dashboard.indicator.backtest.steps.trading.desc': 'Time range, capital, fees, leverage',
- 'dashboard.indicator.backtest.steps.results.title': 'Results',
- 'dashboard.indicator.backtest.steps.results.desc': 'Backtest output',
- 'dashboard.indicator.backtest.panel.risk': 'Risk management (SL/TP/Trailing)',
- 'dashboard.indicator.backtest.panel.scale': 'Scale in / DCA (trend & mean-reversion)',
- 'dashboard.indicator.backtest.panel.reduce': 'Reduce position (trend & adverse)',
- 'dashboard.indicator.backtest.panel.position': 'Position sizing',
- 'dashboard.indicator.backtest.field.stopLossPct': 'Stop Loss (%)',
- 'dashboard.indicator.backtest.field.takeProfitPct': 'Take Profit (%)',
- 'dashboard.indicator.backtest.field.trailingEnabled': 'Trailing stop / take profit',
- 'dashboard.indicator.backtest.field.trailingStopPct': 'Trailing drawdown (%)',
- 'dashboard.indicator.backtest.field.trailingActivationPct': 'Trailing activation (%)',
- 'dashboard.indicator.backtest.field.slippage': 'Slippage (%)',
- 'dashboard.indicator.backtest.field.trendAddEnabled': 'Trend-following scale-in',
- 'dashboard.indicator.backtest.field.dcaAddEnabled': 'Mean-reversion scale-in',
- 'dashboard.indicator.backtest.field.trendAddStepPct': 'Scale-in trigger (%)',
- 'dashboard.indicator.backtest.field.dcaAddStepPct': 'Scale-in trigger (%)',
- 'dashboard.indicator.backtest.field.trendAddSizePct': 'Scale-in size (% of capital)',
- 'dashboard.indicator.backtest.field.dcaAddSizePct': 'Scale-in size (% of capital)',
- 'dashboard.indicator.backtest.field.trendAddMaxTimes': 'Max scale-in times',
- 'dashboard.indicator.backtest.field.dcaAddMaxTimes': 'Max scale-in times',
- 'dashboard.indicator.backtest.field.trendReduceEnabled': 'Trend reduce',
- 'dashboard.indicator.backtest.field.adverseReduceEnabled': 'Adverse reduce',
- 'dashboard.indicator.backtest.field.trendReduceStepPct': 'Trend trigger (%)',
- 'dashboard.indicator.backtest.field.adverseReduceStepPct': 'Adverse trigger (%)',
- 'dashboard.indicator.backtest.field.trendReduceSizePct': 'Reduce size (% of position)',
- 'dashboard.indicator.backtest.field.adverseReduceSizePct': 'Adverse reduce size (% of position)',
- 'dashboard.indicator.backtest.field.trendReduceMaxTimes': 'Max trend reduce times',
- 'dashboard.indicator.backtest.field.adverseReduceMaxTimes': 'Max adverse reduce times',
- 'dashboard.indicator.backtest.field.entryPct': 'Entry size (% of capital)',
- 'dashboard.indicator.backtest.field.minOrderPct': 'Min order size (% of capital) (optional)',
- 'dashboard.indicator.backtest.closeLongTrailing': 'Close Long (Trailing)',
- 'dashboard.indicator.backtest.reduceLong': 'Reduce Long',
- 'dashboard.indicator.backtest.closeShortTrailing': 'Close Short (Trailing)',
- 'dashboard.indicator.backtest.reduceShort': 'Reduce Short',
- 'dashboard.docs.title': '๋ฌธ์ ์ผํฐ',
- 'dashboard.docs.search.placeholder': '๋ฌธ์ ๊ฒ์...',
- 'dashboard.docs.category.all': '๋ชจ๋',
- 'dashboard.docs.category.guide': '๊ฐ๋ฐ ๊ฐ์ด๋',
- 'dashboard.docs.category.api': 'API ๋ฌธ์',
- 'dashboard.docs.category.tutorial': 'ํํ ๋ฆฌ์ผ',
- 'dashboard.docs.category.faq': 'FAQ',
- 'dashboard.docs.featured.title': '๊ถ์ฅ ๋ฌธ์',
- 'dashboard.docs.featured.tag': '์ถ์ฒ',
- 'dashboard.docs.list.views': '์ฐพ์๋ณด๊ธฐ',
- 'dashboard.docs.list.author': '์์ฑ์',
- 'dashboard.docs.list.empty': '์์ง ๋ฌธ์๊ฐ ์์ต๋๋ค.',
- 'dashboard.docs.list.backToAll': '๋ชจ๋ ๋ฌธ์๋ก ๋์๊ฐ๊ธฐ',
- 'dashboard.docs.list.total': '์ด {count}๊ฐ์ ๋ฌธ์',
- 'dashboard.docs.detail.back': '๋ฌธ์ ๋ชฉ๋ก์ผ๋ก ๋์๊ฐ๊ธฐ',
- 'dashboard.docs.detail.updatedAt': '์
๋ฐ์ดํธ ๋ ์ง',
- 'dashboard.docs.detail.related': '๊ด๋ จ ๋ฌธ์',
- 'dashboard.docs.detail.notFound': '๋ฌธ์๊ฐ ์กด์ฌํ์ง ์์ต๋๋ค',
- 'dashboard.docs.detail.error': '๋ฌธ์๊ฐ ์กด์ฌํ์ง ์๊ฑฐ๋ ์ญ์ ๋์์ต๋๋ค.',
- 'dashboard.docs.search.result': '๊ฒ์๊ฒฐ๊ณผ',
- 'dashboard.docs.search.keyword': 'ํค์๋',
- 'community.filter.indicatorType': 'ํ์๊ธฐ ์ ํ',
- 'community.filter.all': '๋ชจ๋',
- 'community.filter.other': '๊ธฐํ ์ต์
',
- 'community.filter.pricing': '๊ฐ๊ฒฉ ์ ํ',
- 'community.filter.allPricing': '๋ชจ๋ ๊ฐ๊ฒฉ',
- 'community.filter.sortBy': '์ ๋ ฌ ๊ธฐ์ค',
- 'community.filter.search': '๊ฒ์',
- 'community.filter.searchPlaceholder': '์ธก์ ํญ๋ชฉ ์ด๋ฆ ๊ฒ์',
- 'community.indicatorType.trend': 'ํธ๋ ๋ ์ ํ',
- 'community.indicatorType.momentum': '๋ชจ๋ฉํ
ํ',
- 'community.indicatorType.volatility': '๋ณ๋์ฑ',
- 'community.indicatorType.volume': '๋ณผ๋ฅจ',
- 'community.indicatorType.custom': '์ฌ์ฉ์ ์ ์',
- 'community.pricing.free': '๋ฌด๋ฃ',
- 'community.pricing.paid': '์ง๋ถ',
- 'community.sort.downloads': '๋ค์ด๋ก๋',
- 'community.sort.rating': '๋ฑ๊ธ',
- 'community.sort.newest': '์ต์ ๋ฆด๋ฆฌ์ค',
- 'community.pagination.total': '์ด {total} ์งํ',
- 'community.noDescription': '์์ง ์ค๋ช
์ด ์์ต๋๋ค',
- 'community.detail.type': '์ ํ',
- 'community.detail.pricing': '๊ฐ๊ฒฉ',
- 'community.detail.rating': '๋ฑ๊ธ',
- 'community.detail.downloads': '๋ค์ด๋ก๋',
- 'community.detail.author': '์์ฑ์',
- 'community.detail.description': '์๊ฐ',
- 'community.detail.detailContent': '์์ธํ ์ค๋ช
',
- 'community.detail.backtestStats': '๋ฐฑํ
์คํธ ํต๊ณ',
- 'community.action.purchase': '๋งค์ ์งํ',
- 'community.action.addToMyIndicators': '๋ด ์งํ์ ์ถ๊ฐ',
- 'community.action.favorite': '์ปฌ๋ ์
',
- 'community.action.unfavorite': '์ฆ๊ฒจ์ฐพ๊ธฐ ์ทจ์',
- 'community.action.buyNow': '์ง๊ธ ๊ตฌ๋งค',
- 'community.action.renew': '๊ฐฑ์ ',
- 'community.purchase.price': '๊ฐ๊ฒฉ',
- 'community.purchase.permanent': '์๊ตฌ',
- 'community.purchase.monthly': '๋ฌ',
- 'community.purchase.confirmBuy': '์ด ์งํ({price} QDT) ๊ตฌ๋งค๋ฅผ ํ์ธํ์๊ฒ ์ต๋๊น?',
- 'community.purchase.confirmRenew': '์ด ์งํ({price} QDT/์)๋ฅผ ๊ฐฑ์ ํ์๊ฒ ์ต๋๊น?',
- 'community.purchase.confirmFree': '์ด ๋ฌด๋ฃ ํ์๊ธฐ๋ฅผ ์ถ๊ฐํ์๊ฒ ์ต๋๊น?',
- 'community.purchase.confirmTitle': '์กฐ์น ํ์ธ',
- 'community.purchase.owned': '์ด ํ์๊ธฐ๋ฅผ ๊ตฌ์
ํ์
จ์ต๋๋ค(์๊ตฌ์ ์ผ๋ก ์ ํจํจ).',
- 'community.purchase.ownIndicator': '๊ทํ๊ฐ ๊ฒ์ํ ์ธก์ ํญ๋ชฉ์
๋๋ค.',
- 'community.purchase.expired': '๊ตฌ๋
์ด ๋ง๋ฃ๋์์ต๋๋ค',
- 'community.purchase.expiresOn': '๋ง๋ฃ ์๊ฐ: {date}',
- 'community.tabs.detail': '์งํ ์ธ๋ถ์ ๋ณด',
- 'community.tabs.backtest': '๋ฐฑํ
์คํธ ๋ฐ์ดํฐ',
- 'community.tabs.ratings': '์ฌ์ฉ์ ๋ฆฌ๋ทฐ',
- 'community.rating.myRating': '๋ด ํ๊ฐ',
- 'community.rating.stars': '๋ณ {count}๊ฐ',
- 'community.rating.commentPlaceholder': '๋น์ ์ ๊ฒฝํ์ ๊ณต์ ํ์ธ์...',
- 'community.rating.submit': 'ํ๊ฐ ์ ์ถ',
- 'community.rating.modify': '์์ ',
- 'community.rating.saveModify': '๋ณ๊ฒฝ์ฌํญ ์ ์ฅ',
- 'community.rating.cancel': '์ทจ์',
- 'community.rating.selectRating': '๋ฑ๊ธ์ ์ ํํด ์ฃผ์ธ์',
- 'community.rating.success': 'ํ๊ฐ ์ฑ๊ณต',
- 'community.rating.modifySuccess': '๋ฆฌ๋ทฐ๊ฐ ์์ ๋์์ต๋๋ค.',
- 'community.rating.failed': 'ํ๊ฐ ์คํจ',
- 'community.rating.noRatings': '์์ง ๋๊ธ์ด ์์ต๋๋ค',
- 'community.backtest.note': '์ ๋ฐ์ดํฐ๋ ๊ณผ๊ฑฐ ๋ฐฑํ
์คํธ ๊ฒฐ๊ณผ์ด๋ฉฐ ์ฐธ๊ณ ์ฉ์ผ ๋ฟ ๋ฏธ๋ ์์ต์ ๋ํ๋ด์ง๋ ์์ต๋๋ค.',
- 'community.backtest.noData': '์์ง ๋ฐฑํ
์คํธ ๋ฐ์ดํฐ๊ฐ ์์ต๋๋ค.',
- 'community.backtest.uploadHint': '์์ฑ์๋ ์์ง ๋ฐฑํ
์คํธ ๋ฐ์ดํฐ๋ฅผ ์
๋ก๋ํ์ง ์์์ต๋๋ค.',
- 'community.message.loadFailed': 'ํ์๊ธฐ ๋ชฉ๋ก์ ๋ก๋ํ์ง ๋ชปํ์ต๋๋ค.',
- 'community.message.purchaseProcessing': '๊ตฌ๋งค ์์ฒญ ์ฒ๋ฆฌ ์ค...',
- 'community.message.downloadSuccess': '๋ด ์ธก์ ํญ๋ชฉ ๋ชฉ๋ก์ ์ธก์ ํญ๋ชฉ์ด ์ถ๊ฐ๋์์ต๋๋ค.',
- 'community.message.favoriteSuccess': '์์ง ์ฑ๊ณต',
- 'community.message.unfavoriteSuccess': '์์ง์ ์ทจ์ํ์ต๋๋ค.',
- 'community.message.operationSuccess': '์์
์ฑ๊ณต',
- 'community.message.operationFailed': '์์
์คํจ',
- 'community.banner.readOnly': '์ฝ๊ธฐ ์ ์ฉ',
- 'community.banner.loginHint': '๋ก๊ทธ์ธ ๋๋ ๋ฑ๋ก์ด ํ์ํ ๊ฒฝ์ฐ ๋ฒํผ์ ํด๋ฆญํ์ฌ ๋
๋ฆฝ ํ์ด์ง๋ก ์ด๋ํ์ฌ CSRF ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ์ธ์',
- 'community.banner.jumpButton': '๋ก๊ทธ์ธ/๋ฑ๋ก์ผ๋ก ์ด๋',
- 'dashboard.totalEquity': '์ด์๋ณธ',
- 'dashboard.totalPnL': '์ด์์ต',
- 'dashboard.aiStrategies': 'AI ์ ๋ต',
- 'dashboard.indicatorStrategies': '์งํ ์ ๋ต',
- 'dashboard.running': '๋ฌ๋ฆฌ๊ธฐ',
- 'dashboard.pnlHistory': '์ญ์ฌ์ ์์ต',
- 'dashboard.strategyPerformance': '์ ๋ต ์์ต๋น์จ',
- 'dashboard.recentTrades': '์ต๊ทผ ๊ฑฐ๋',
- 'dashboard.currentPositions': 'ํ์ฌ ์์น',
- 'dashboard.table.time': '์๊ฐ',
- 'dashboard.table.strategy': '์ ์ฑ
์ด๋ฆ',
- 'dashboard.table.symbol': '๋์',
- 'dashboard.table.type': '์ ํ',
- 'dashboard.table.side': '๋ฐฉํฅ',
- 'dashboard.table.size': '๋ฏธ๊ฒฐ์ ์ฝ์ ',
- 'dashboard.table.entryPrice': 'ํ๊ท ๊ฐ์ฅ๊ฐ',
- 'dashboard.table.price': '๊ฐ๊ฒฉ',
- 'dashboard.table.amount': '์๋',
- 'dashboard.table.profit': '์ด์ต๊ณผ ์์ค',
- 'dashboard.pendingOrders': '์ฃผ๋ฌธ ์คํ ๊ธฐ๋ก',
- 'dashboard.totalOrders': '์ด {total}๊ฑด',
- 'dashboard.viewError': '์ค๋ฅ ๋ณด๊ธฐ',
- 'dashboard.filled': '์ฒด๊ฒฐ๋จ',
- 'dashboard.orderTable.time': '์์ฑ ์๊ฐ',
- 'dashboard.orderTable.strategy': '์ ๋ต',
- 'dashboard.orderTable.symbol': '๊ฑฐ๋ ์',
- 'dashboard.orderTable.signalType': '์ ํธ ์ ํ',
- 'dashboard.orderTable.amount': '์๋',
- 'dashboard.orderTable.price': '์ฒด๊ฒฐ ๊ฐ๊ฒฉ',
- 'dashboard.orderTable.status': '์ํ',
- 'dashboard.orderTable.executedAt': '์คํ ์๊ฐ',
- 'dashboard.signalType.openLong': '๋กฑ ์คํ',
- 'dashboard.signalType.openShort': '์ ์คํ',
- 'dashboard.signalType.closeLong': '๋กฑ ์ฒญ์ฐ',
- 'dashboard.signalType.closeShort': '์ ์ฒญ์ฐ',
- 'dashboard.signalType.addLong': '๋กฑ ์ถ๊ฐ',
- 'dashboard.signalType.addShort': '์ ์ถ๊ฐ',
- 'dashboard.status.pending': '๋๊ธฐ ์ค',
- 'dashboard.status.processing': '์ฒ๋ฆฌ ์ค',
- 'dashboard.status.completed': '์๋ฃ',
- 'dashboard.status.failed': '์คํจ',
- 'dashboard.status.cancelled': '์ทจ์๋จ',
- 'dashboard.table.pnl': '๋ฏธ์คํ ์์ต',
- 'form.basic-form.basic.title': '๊ธฐ๋ณธ ํํ',
- 'form.basic-form.basic.description': '์์ ํ์ด์ง๋ ์ฌ์ฉ์๋ก๋ถํฐ ์ ๋ณด๋ฅผ ์์งํ๊ฑฐ๋ ํ์ธํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๊ธฐ๋ณธ ์์์ ๋ฐ์ดํฐ ํญ๋ชฉ์ด ๊ฑฐ์ ์๋ ์์ ์๋๋ฆฌ์ค์์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.',
- 'form.basic-form.title.label': '์ ๋ชฉ',
- 'form.basic-form.title.placeholder': '๋ชฉํ์ ์ด๋ฆ์ ์ง์ด์ฃผ์ธ์',
- 'form.basic-form.title.required': '์ ๋ชฉ์ ์
๋ ฅํ์ธ์',
- 'form.basic-form.date.label': '์์์ผ ๋ฐ ์ข
๋ฃ์ผ',
- 'form.basic-form.placeholder.start': '์์์ผ',
- 'form.basic-form.placeholder.end': '์ข
๋ฃ์ผ',
- 'form.basic-form.date.required': '์์์ผ๊ณผ ์ข
๋ฃ์ผ์ ์ ํํ์ธ์.',
- 'form.basic-form.goal.label': '๋ชฉํ ์ค๋ช
',
- 'form.basic-form.goal.placeholder': '๋จ๊ณ๋ณ ์
๋ฌด ๋ชฉํ๋ฅผ ์
๋ ฅํ์ธ์.',
- 'form.basic-form.goal.required': '๋ชฉํ ์ค๋ช
์ ์
๋ ฅํ์ธ์.',
- 'form.basic-form.standard.label': '์ธก์ ํ๋ค',
- 'form.basic-form.standard.placeholder': '์ธก์ ํญ๋ชฉ์ ์
๋ ฅํ์ธ์.',
- 'form.basic-form.standard.required': '์ธก์ ํญ๋ชฉ์ ์
๋ ฅํ์ธ์.',
- 'form.basic-form.client.label': '๊ณ ๊ฐ',
- 'form.basic-form.client.required': '๊ทํ๊ฐ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ๊ณ ๊ฐ์ ๋ํด ์ค๋ช
ํด์ฃผ์ธ์.',
- 'form.basic-form.label.tooltip': '๋์ ์๋น์ค ๋์์',
- 'form.basic-form.client.placeholder': '๊ทํ๊ฐ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ๊ณ ๊ฐ, ๋ด๋ถ ๊ณ ๊ฐ์ ์ง์ @์ด๋ฆ/์ง์ ๋ฒํธ๋ก ์ค๋ช
ํ์ญ์์ค.',
- 'form.basic-form.invites.label': '๋ฆฌ๋ทฐ์ด ์ด๋',
- 'form.basic-form.invites.placeholder': '@์ด๋ฆ/์ฌ์๋ฒํธ๋ก ์ง์ ๋ณด๋ด์ฃผ์ธ์. ์ต๋ 5๋ช
๊น์ง ์ด๋ ๊ฐ๋ฅํฉ๋๋ค.',
- 'form.basic-form.weight.label': '๋ฌด๊ฒ',
- 'form.basic-form.weight.placeholder': '์
๋ ฅํด์ฃผ์ธ์',
- 'form.basic-form.public.label': '๋์ค์ ๋์์ผ๋ก',
- 'form.basic-form.label.help': '๊ณ ๊ฐ๊ณผ ๊ฒํ ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ณต์ ๋ฉ๋๋ค.',
- 'form.basic-form.radio.public': '๋์ค',
- 'form.basic-form.radio.partially-public': '๋ถ๋ถ์ ์ผ๋ก ๊ณต๊ฐ',
- 'form.basic-form.radio.private': '๋น๊ณต๊ฐ',
- 'form.basic-form.publicUsers.placeholder': '์ด๋ ค ์๋ค',
- 'form.basic-form.option.A': '๋๋ฃ 1',
- 'form.basic-form.option.B': '๋๋ฃ 2',
- 'form.basic-form.option.C': '๋๋ฃ 3',
- 'form.basic-form.email.required': '์ด๋ฉ์ผ ์ฃผ์๋ฅผ ์
๋ ฅํด์ฃผ์ธ์!',
- 'form.basic-form.email.wrong-format': '์ด๋ฉ์ผ ์ฃผ์ ํ์์ด ์๋ชป๋์์ต๋๋ค!',
- 'form.basic-form.userName.required': '์ฌ์ฉ์ ์ด๋ฆ์ ์
๋ ฅํด์ฃผ์ธ์!',
- 'form.basic-form.password.required': '๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํด์ฃผ์ธ์!',
- 'form.basic-form.password.twice': '๋ ๋ฒ ์
๋ ฅํ ๋น๋ฐ๋ฒํธ๊ฐ ์ผ์นํ์ง ์์ต๋๋ค!',
- 'form.basic-form.strength.msg': '6์ ์ด์ ์
๋ ฅํด์ฃผ์ธ์. ์ฝ๊ฒ ์ถ์ธกํ ์ ์๋ ๋น๋ฐ๋ฒํธ๋ ์ฌ์ฉํ์ง ๋ง์ธ์.',
- 'form.basic-form.strength.strong': 'ํ: ๊ฐํ',
- 'form.basic-form.strength.medium': '๊ฐ๋: ์ค๊ฐ',
- 'form.basic-form.strength.short': '๊ฐ๋: ๋๋ฌด ์งง์',
- 'form.basic-form.confirm-password.required': '๋น๋ฐ๋ฒํธ๋ฅผ ํ์ธํด ์ฃผ์ธ์!',
- 'form.basic-form.phone-number.required': 'ํด๋ํฐ๋ฒํธ๋ฅผ ์
๋ ฅํด์ฃผ์ธ์!',
- 'form.basic-form.phone-number.wrong-format': 'ํด๋ํฐ ๋ฒํธ ํ์์ด ์๋ชป๋์์ต๋๋ค!',
- 'form.basic-form.verification-code.required': '์ธ์ฆ๋ฒํธ๋ฅผ ์
๋ ฅํด์ฃผ์ธ์!',
- 'form.basic-form.form.get-captcha': '์ธ์ฆ ์ฝ๋ ๋ฐ๊ธฐ',
- 'form.basic-form.captcha.second': '์ด',
- 'form.basic-form.form.optional': '(์ ํ์ฌํญ)',
- 'form.basic-form.form.submit': '์ ์ถ',
- 'form.basic-form.form.save': '์ ์ฅ',
- 'form.basic-form.email.placeholder': '์ด๋ฉ์ผ',
- 'form.basic-form.password.placeholder': '๋น๋ฐ๋ฒํธ๋ 6์ ์ด์, ๋์๋ฌธ์ ๊ตฌ๋ถ',
- 'form.basic-form.confirm-password.placeholder': '๋น๋ฐ๋ฒํธ ํ์ธ',
- 'form.basic-form.phone-number.placeholder': 'ํด๋์ ํ๋ฒํธ',
- 'form.basic-form.verification-code.placeholder': '์ธ์ฆ์ฝ๋',
- 'result.success.title': '์ ์ถ ์ฑ๊ณต',
- 'result.success.description': '์ ์ถ ๊ฒฐ๊ณผ ํ์ด์ง๋ ์ผ๋ จ์ ์์
์์
์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ํผ๋๋ฐฑํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๊ฐ๋จํ ์์
์ธ ๊ฒฝ์ฐ ๋ฉ์์ง ์ ์ญ ํ๋กฌํํธ ํผ๋๋ฐฑ์ ์ฌ์ฉํ์ธ์. ์ด ํ
์คํธ ์์ญ์๋ ๊ฐ๋จํ ๋ณด์ถฉ ์ง์นจ์ด ํ์๋ ์ ์์ต๋๋ค. "๋ฌธ์"๋ฅผ ํ์ํด์ผ ํ๋ ๊ฒฝ์ฐ ์๋ ํ์ ์์ญ์ ๋ ๋ณต์กํ ๋ด์ฉ์ด ํ์๋ ์ ์์ต๋๋ค.',
- 'result.success.operate-title': 'ํ๋ก์ ํธ ์ด๋ฆ',
- 'result.success.operate-id': 'ํ๋ก์ ํธ ID',
- 'result.success.principal': '๋ด๋น์',
- 'result.success.operate-time': '์ ํจ์๊ฐ',
- 'result.success.step1-title': 'ํ๋ก์ ํธ ์์ฑ',
- 'result.success.step1-operator': '์ฟ ๋ฆด๋ฆฌ',
- 'result.success.step2-title': 'ํ๊ณผ ์ฌ์ ๊ฒํ ',
- 'result.success.step2-operator': '์ ์ฐ ๋ง์ค๋ง์ค',
- 'result.success.step2-extra': '๊ธด๊ธ',
- 'result.success.step3-title': '์ฌ๋ฌด ๊ฒํ ',
- 'result.success.step4-title': '์๋ฃ',
- 'result.success.btn-return': '๋ชฉ๋ก์ผ๋ก ๋์๊ฐ๊ธฐ',
- 'result.success.btn-project': 'ํญ๋ชฉ ๋ณด๊ธฐ',
- 'result.success.btn-print': '์ธ์',
- 'result.fail.error.title': '์ ์ถ ์คํจ',
- 'result.fail.error.description': '๋ค์ ์ ์ถํ๊ธฐ ์ ์ ๋ค์ ์ ๋ณด๋ฅผ ํ์ธํ๊ณ ์์ ํ์๊ธฐ ๋ฐ๋๋๋ค.',
- 'result.fail.error.hint-title': '์ ์ถํ ์ฝํ
์ธ ์ ๋ค์ ์ค๋ฅ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.',
- 'result.fail.error.hint-text1': '๊ทํ์ ๊ณ์ ์ด ๋๊ฒฐ๋์์ต๋๋ค',
- 'result.fail.error.hint-btn1': '์ฆ์ ํด๋',
- 'result.fail.error.hint-text2': '๊ทํ์ ๊ณ์ ์ ์์ง ์ ์ฒญํ ์ ์์ต๋๋ค',
- 'result.fail.error.hint-btn2': '์ง๊ธ ์
๊ทธ๋ ์ด๋',
- 'result.fail.error.btn-text': '์์ ์ผ๋ก ๋์๊ฐ๊ธฐ',
- 'account.settings.menuMap.custom': '๊ฐ์ธํ',
- 'account.settings.menuMap.binding': '๊ณ์ ๋ฐ์ธ๋ฉ',
- 'account.settings.basic.avatar': '์๋ฐํ',
- 'account.settings.basic.change-avatar': '์๋ฐํ ๋ณ๊ฒฝ',
- 'account.settings.basic.email': '์ด๋ฉ์ผ',
- 'account.settings.basic.email-message': '์ด๋ฉ์ผ์ ์
๋ ฅํด์ฃผ์ธ์!',
- 'account.settings.basic.nickname': '๋๋ค์',
- 'account.settings.basic.nickname-message': '๋๋ค์์ ์
๋ ฅํด์ฃผ์ธ์!',
- 'account.settings.basic.profile': 'ํ๋กํ',
- 'account.settings.basic.profile-message': '๊ฐ์ธ ํ๋กํ์ ์
๋ ฅํด์ฃผ์ธ์!',
- 'account.settings.basic.profile-placeholder': 'ํ๋กํ',
- 'account.settings.basic.country': '๊ตญ๊ฐ/์ง์ญ',
- 'account.settings.basic.country-message': '๊ตญ๊ฐ๋ ์ง์ญ์ ์
๋ ฅํด์ฃผ์ธ์!',
- 'account.settings.basic.geographic': '์ง๋ฐฉ ๋ฐ ๋์',
- 'account.settings.basic.geographic-message': '๊ทํ์ ์/๋๋ฅผ ์
๋ ฅํด์ฃผ์ธ์!',
- 'account.settings.basic.address': '๊ฑฐ๋ฆฌ ์ฃผ์',
- 'account.settings.basic.address-message': '์ฃผ์๋ฅผ ์
๋ ฅํด์ฃผ์ธ์!',
- 'account.settings.basic.phone': '์ฐ๋ฝ์ฒ',
- 'account.settings.basic.phone-message': '์ฐ๋ฝ์ฒ๋ฅผ ์
๋ ฅํด์ฃผ์ธ์!',
- 'account.settings.basic.update': '๊ธฐ๋ณธ์ ๋ณด ์
๋ฐ์ดํธ',
- 'account.settings.basic.update.success': '๊ธฐ๋ณธ ์ ๋ณด๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์
๋ฐ์ดํธํ์ต๋๋ค.',
- 'account.settings.security.strong': '๊ฐํ',
- 'account.settings.security.medium': '์์ผ๋ก',
- 'account.settings.security.weak': '์ฝํ',
- 'account.settings.security.password': '๊ณ์ ๋น๋ฐ๋ฒํธ',
- 'account.settings.security.password-description': 'ํ์ฌ ๋น๋ฐ๋ฒํธ ๊ฐ๋:',
- 'account.settings.security.phone': '๋ณด์ ํด๋ํฐ',
- 'account.settings.security.phone-description': '์ด๋ฏธ ๋ฐ์ธ๋ฉ๋ ํด๋ํฐ:',
- 'account.settings.security.question': '๋ณด์ ๋ฌธ์ ',
- 'account.settings.security.question-description': '๋ณด์ ์ง๋ฌธ์ด ์ค์ ๋์ง ์์ ๊ณ์ ๋ณด์์ ํจ๊ณผ์ ์ผ๋ก ๋ณดํธํ ์ ์์ต๋๋ค.',
- 'account.settings.security.email': '์ด๋ฉ์ผ ๋ฐ์ธ๋ฉ',
- 'account.settings.security.email-description': '์ด๋ฏธ ๋ฐ์ธ๋ฉ๋ ์ด๋ฉ์ผ ์ฃผ์:',
- 'account.settings.security.mfa': 'MFA ์ฅ์น',
- 'account.settings.security.mfa-description': 'MFA ๋๋ฐ์ด์ค๊ฐ ๋ฐ์ธ๋ฉ๋์ง ์์์ต๋๋ค. ๋ฐ์ธ๋ฉ ํ ๋ค์ ํ์ธํ ์ ์์ต๋๋ค.',
- 'account.settings.security.modify': '์์ ',
- 'account.settings.security.set': '์ค์ ',
- 'account.settings.security.bind': '๋ฐ์ธ๋ฉ',
- 'account.settings.binding.taobao': 'ํ์ค๋ฐ์ค ๋ฐ์ธ๋ฉ',
- 'account.settings.binding.taobao-description': 'ํ์ฌ ํ์ค๋ฐ์ค ๊ณ์ ์ด ์ฐ๊ฒฐ๋์ด ์์ง ์์ต๋๋ค',
- 'account.settings.binding.alipay': '์๋ฆฌํ์ด ๋ฐ์ธ๋ฉ',
- 'account.settings.binding.alipay-description': 'Alipay ๊ณ์ ์ด ํ์ฌ ์ฐ๊ฒฐ๋์ด ์์ง ์์ต๋๋ค.',
- 'account.settings.binding.dingding': '๋ฐ์ธ๋ฉ ๋ฉํก',
- 'account.settings.binding.dingding-description': 'ํ์ฌ ๋ฐ์ธ๋ฉ๋ DingTalk ๊ณ์ ์ด ์์ต๋๋ค.',
- 'account.settings.binding.bind': '๋ฐ์ธ๋ฉ',
- 'account.settings.notification.password': '๊ณ์ ๋น๋ฐ๋ฒํธ',
- 'account.settings.notification.password-description': '๋ค๋ฅธ ์ฌ์ฉ์์ ๋ฉ์์ง๋ ์ฌ์ดํธ ๋ฉ์์ง ํ์์ผ๋ก ํต๋ณด๋ฉ๋๋ค.',
- 'account.settings.notification.messages': '์์คํ
๋ฉ์์ง',
- 'account.settings.notification.messages-description': '์์คํ
๋ฉ์์ง๋ ์ฌ์ดํธ ๋ฉ์์ง ํ์์ผ๋ก ํต๋ณด๋ฉ๋๋ค.',
- 'account.settings.notification.todo': 'ํด์ผ ํ ์ผ',
- 'account.settings.notification.todo-description': 'ํ ์ผ์ ์ฌ์ดํธ ๋ด ๋ฉ์์ง๋ก ์๋ ค๋๋ฆฝ๋๋ค.',
- 'account.settings.settings.open': '์ด๋ค',
- 'account.settings.settings.close': '๋ซ๊ธฐ',
- 'trading-assistant.title': 'ํธ๋ ์ด๋ฉ ์ด์์คํดํธ',
- 'trading-assistant.strategyList': '์ ๋ต ๋ชฉ๋ก',
- 'trading-assistant.createStrategy': '์ ์ฑ
๋ง๋ค๊ธฐ',
- 'trading-assistant.noStrategy': '์์ง ์ ๋ต์ด ์์ต๋๋ค.',
- 'trading-assistant.selectStrategy': '์ธ๋ถ์ ๋ณด๋ฅผ ๋ณด๋ ค๋ฉด ์ผ์ชฝ์์ ์ ๋ต์ ์ ํํ์ธ์.',
- 'trading-assistant.startStrategy': '์ถ์ ์ ๋ต',
- 'trading-assistant.stopStrategy': '์ค์ง ์ ๋ต',
- 'trading-assistant.editStrategy': 'ํธ์ง ์ ๋ต',
- 'trading-assistant.deleteStrategy': '์ ์ฑ
์ญ์ ',
- 'trading-assistant.status.running': '๋ฌ๋ฆฌ๊ธฐ',
- 'trading-assistant.status.stopped': '์ค์ง๋จ',
- 'trading-assistant.status.error': '์ค๋ฅ',
- 'trading-assistant.strategyType.IndicatorStrategy': '๊ธฐ์ ์งํ ์ ๋ต',
- 'trading-assistant.strategyType.PromptBasedStrategy': '๋จ์ ์ ๋ต',
- 'trading-assistant.strategyType.GridStrategy': '๊ทธ๋ฆฌ๋ ์ ๋ต',
- 'trading-assistant.tabs.tradingRecords': '๊ฑฐ๋ ๋ด์ญ',
- 'trading-assistant.tabs.positions': '์ง์๊ธฐ๋ก',
- 'trading-assistant.tabs.equityCurve': '์ฃผ์๊ณก์ ',
- 'trading-assistant.form.step1': '์งํ ์ ํ',
- 'trading-assistant.form.step2': '๊ตํ ๊ตฌ์ฑ',
- 'trading-assistant.form.step3': '์ ๋ต ๋งค๊ฐ๋ณ์',
- 'trading-assistant.form.indicator': '์งํ ์ ํ',
- 'trading-assistant.form.indicatorHint': '์์ ์ด ๊ตฌ๋งคํ๊ฑฐ๋ ์์ฑํ ๊ธฐ์ ์งํ๋ง ์ ํํ ์ ์์ต๋๋ค.',
- 'trading-assistant.form.qdtCostHints': '์ ๋ต์ ์ฌ์ฉํ๋ฉด QDT๊ฐ ์๋ชจ๋ฉ๋๋ค. ๊ณ์ ์ QDT ์์ก์ด ์ถฉ๋ถํ์ง ํ์ธํ์ธ์.',
- 'trading-assistant.form.indicatorDescription': 'ํ์๊ธฐ ์ค๋ช
',
- 'trading-assistant.form.noDescription': '์์ง ์ค๋ช
์ด ์์ต๋๋ค',
- 'trading-assistant.form.exchange': '๊ตํ ์ ํ',
- 'trading-assistant.form.apiKey': 'API ํค',
- 'trading-assistant.form.secretKey': '๋น๋ฐํค',
- 'trading-assistant.form.passphrase': '์ํธ',
- 'trading-assistant.form.testConnection': '์ฐ๊ฒฐ ํ
์คํธ',
- 'trading-assistant.form.strategyName': '์ ์ฑ
์ด๋ฆ',
- 'trading-assistant.form.symbol': '๊ฑฐ๋ ์',
- 'trading-assistant.form.symbolHint': 'ํ์ฌ๋ ์ํธํํ ๊ฑฐ๋์๋ง ์ง์๋ฉ๋๋ค',
- 'trading-assistant.form.initialCapital': 'ํฌ์๊ธ์ก',
- 'trading-assistant.form.marketType': '์์ฅ ์ ํ',
- 'trading-assistant.form.marketTypeFutures': '๊ณ์ฝ',
- 'trading-assistant.form.marketTypeSpot': '์คํ',
- 'trading-assistant.form.marketTypeHint': '๊ณ์ฝ์ ์๋ฐฉํฅ ๊ฑฐ๋์ ๋ ๋ฒ๋ฆฌ์ง๋ฅผ ์ง์ํ๋ ๋ฐ๋ฉด ํ๋ฌผ์ ๋กฑ ํฌ์ง์
๋ง ์ง์ํ๊ณ ๋ ๋ฒ๋ฆฌ์ง๋ 1x๋ก ๊ณ ์ ๋ฉ๋๋ค.',
- 'trading-assistant.form.leverage': '์ฌ๋ฌ ๊ฐ์ง ํ์ฉ',
- 'trading-assistant.form.leverageHint': '๊ณ์ฝ : 1~125ํ, ํ๋ฌผ : ๊ณ ์ 1ํ',
- 'trading-assistant.form.spotLeverageFixed': 'ํ๋ฌผ ๊ฑฐ๋ ๋ ๋ฒ๋ฆฌ์ง๋ 1x๋ก ๊ณ ์ ๋ฉ๋๋ค.',
- 'trading-assistant.form.spotOnlyLongHint': 'ํ๋ฌผ ๊ฑฐ๋๋ ๋งค์ ํฌ์ง์
๋ง ์ง์ํฉ๋๋ค',
- 'trading-assistant.form.tradeDirection': '๊ฑฐ๋ ๋ฐฉํฅ',
- 'trading-assistant.form.tradeDirectionLong': '์ค์ง ๊ธธ๋ค',
- 'trading-assistant.form.tradeDirectionShort': '๋จ์ง ์งง๋ค',
- 'trading-assistant.form.tradeDirectionBoth': '์๋ฐฉํฅ ๊ฑฐ๋',
- 'trading-assistant.form.timeframe': '๊ธฐ๊ฐ',
- 'trading-assistant.form.klinePeriod': 'K์ ๊ธฐ๊ฐ',
- 'trading-assistant.form.timeframe1m': '1๋ถ',
- 'trading-assistant.form.timeframe5m': '5๋ถ',
- 'trading-assistant.form.timeframe15m': '15๋ถ',
- 'trading-assistant.form.timeframe30m': '30๋ถ',
- 'trading-assistant.form.timeframe1H': '1์๊ฐ',
- 'trading-assistant.form.timeframe4H': '4์๊ฐ',
- 'trading-assistant.form.timeframe1D': '1์ผ',
- 'trading-assistant.form.selectStrategyType': '์ ๋ต ์ ํ ์ ํ',
- 'trading-assistant.form.indicatorStrategy': '์งํ ์ ๋ต',
- 'trading-assistant.form.indicatorStrategyDesc': '๊ธฐ์ ์งํ ๊ธฐ๋ฐ ์๋ ๊ฑฐ๋ ์ ๋ต',
- 'trading-assistant.form.aiStrategy': 'AI ์ ๋ต',
- 'trading-assistant.form.aiStrategyDesc': 'AI ์ง๋ฅํ ์์ฌ๊ฒฐ์ ๊ธฐ๋ฐ ์๋ ๊ฑฐ๋ ์ ๋ต',
- 'trading-assistant.form.enableAiFilter': 'AI ์ง๋ฅํ ์์ฌ๊ฒฐ์ ํํฐ ํ์ฑํ',
- 'trading-assistant.form.enableAiFilterHint': 'ํ์ฑํํ๋ฉด ์งํ ์ ํธ๊ฐ AI์ ์ํด ํํฐ๋ง๋์ด ๊ฑฐ๋ ํ์ง์ด ํฅ์๋ฉ๋๋ค',
- 'trading-assistant.form.aiFilterPrompt': '์ฌ์ฉ์ ์ ์ ํ๋กฌํํธ',
- 'trading-assistant.form.aiFilterPromptHint': 'AI ํํฐ๋ง์ ์ํ ์ฌ์ฉ์ ์ ์ ์ง์นจ์ ์ ๊ณตํ๊ณ , ๋น์๋๋ฉด ์์คํ
๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉํฉ๋๋ค',
- 'trading-assistant.validation.strategyTypeRequired': '์ ๋ต ์ ํ์ ์ ํํ์ธ์',
- 'trading-assistant.form.advancedSettings': '๊ณ ๊ธ ์ค์ ',
- 'trading-assistant.form.orderMode': '์ฃผ๋ฌธ ๋ชจ๋',
- 'trading-assistant.form.orderModeMaker': '๋ฉ์ด์ปค',
- 'trading-assistant.form.orderModeTaker': '์์ฅ๊ฐ(ํ
์ด์ปค)',
- 'trading-assistant.form.orderModeHint': '์ง์ ๊ฐ ์ฃผ๋ฌธ ๋ชจ๋๋ ์ง์ ๊ฐ ์ฃผ๋ฌธ์ ์ฌ์ฉํ๋ฉฐ ์ฒ๋ฆฌ ์์๋ฃ๊ฐ ๋ ๋ฎ์ต๋๋ค. ์์ฅ ๊ฐ๊ฒฉ ๋ชจ๋๋ ์ฆ์ ์คํ๋๋ฉฐ ์ฒ๋ฆฌ ์์๋ฃ๊ฐ ๋ ๋์ต๋๋ค.',
- 'trading-assistant.form.makerWaitSec': '์ง์ ๊ฐ ์ฃผ๋ฌธ ๋๊ธฐ ์๊ฐ(์ด)',
- 'trading-assistant.form.makerWaitSecHint': '์ฃผ๋ฌธ ํ ๊ฑฐ๋๊ฐ ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์
๋๋ค. ์ทจ์ํ๊ณ ์๊ฐ ์ด๊ณผ ํ ๋ค์ ์๋ํ์ธ์.',
- 'trading-assistant.form.makerRetries': '๋ณด๋ฅ ์ค์ธ ์ฃผ๋ฌธ์ ๋ํ ์ฌ์๋ ํ์',
- 'trading-assistant.form.makerRetriesHint': '๋ณด๋ฅ ์ค์ธ ์ฃผ๋ฌธ์ด ์คํ๋์ง ์์ ๋ ์ต๋ ์ฌ์๋ ํ์',
- 'trading-assistant.form.fallbackToMarket': '์ง์ ๊ฐ ์ฃผ๋ฌธ์ด ์คํจํ๊ณ ์์ฅ ๊ฐ๊ฒฉ์ด ํ๋ฝํฉ๋๋ค.',
- 'trading-assistant.form.fallbackToMarketHint': '๊ฐ์/์ฒญ์ฐ ๋ณด๋ฅ ์ฃผ๋ฌธ์ด ์๋ฃ๋์ง ์์ ๊ฒฝ์ฐ ๊ฑฐ๋๊ฐ ์๋ฃ๋์๋์ง ํ์ธํ๊ธฐ ์ํด ์์ฅ๊ฐ ์ฃผ๋ฌธ์ผ๋ก ๋ค์ด๊ทธ๋ ์ด๋ํด์ผ ํ๋์ง ์ฌ๋ถ.',
- 'trading-assistant.form.marginMode': '๋ง์ง ๋ชจ๋',
- 'trading-assistant.form.marginModeCross': '์ ์ฒด ์ฐฝ๊ณ ',
- 'trading-assistant.form.marginModeIsolated': '๊ณ ๋ฆฝ๋ ์์น',
- 'trading-assistant.form.stopLossPct': '์ ์ง์ํด์จ(%)',
- 'trading-assistant.form.stopLossPctHint': '์ ์ง ์์ค ๋น์จ์ ์ค์ ํฉ๋๋ค. 0์ ์ ์ง ์์ค์ด ํ์ฑํ๋์ง ์์์์ ์๋ฏธํฉ๋๋ค.',
- 'trading-assistant.form.takeProfitPct': '์ด์ต ์คํ ๋น์จ(%)',
- 'trading-assistant.form.takeProfitPctHint': '์ด์ต์คํ ๋น์จ์ ์ค์ ํฉ๋๋ค. 0์ ์ด์ต์คํ์ ๋นํ์ฑํํจ์ ์๋ฏธํฉ๋๋ค.',
- 'trading-assistant.form.signalMode': '์ ํธ ๋ชจ๋',
- 'trading-assistant.form.signalModeConfirmed': '๋ชจ๋ ํ์ธ',
- 'trading-assistant.form.signalModeAggressive': '๊ณต๊ฒฉ์ ๋ชจ๋',
- 'trading-assistant.form.signalModeHint': 'ํ์ธ ๋ชจ๋: ์๋ฃ๋ K ๋ผ์ธ๋ง ํ์ธํฉ๋๋ค. ๊ณต๊ฒฉ์ ๋ชจ๋: K ๋ผ์ธ ํ์ฑ๋ ํ์ธํฉ๋๋ค.',
- 'trading-assistant.form.cancel': '์ทจ์',
- 'trading-assistant.form.prev': '์ด์ ๋จ๊ณ',
- 'trading-assistant.form.next': '๋ค์ ๋จ๊ณ',
- 'trading-assistant.form.confirmCreate': '์์ฑ ํ์ธ',
- 'trading-assistant.form.confirmEdit': '๋ณ๊ฒฝ์ฌํญ ํ์ธ',
- 'trading-assistant.messages.createSuccess': '์ ๋ต์ด ์ฑ๊ณต์ ์ผ๋ก ์์ฑ๋์์ต๋๋ค.',
- 'trading-assistant.messages.createFailed': '์ ์ฑ
์ ์์ฑํ์ง ๋ชปํ์ต๋๋ค.',
- 'trading-assistant.messages.updateSuccess': '์ ์ฑ
์
๋ฐ์ดํธ ์ฑ๊ณต',
- 'trading-assistant.messages.updateFailed': '์ ์ฑ
์
๋ฐ์ดํธ ์คํจ',
- 'trading-assistant.messages.deleteSuccess': '์ ์ฑ
์ญ์ ์ฑ๊ณต',
- 'trading-assistant.messages.deleteFailed': '์ ์ฑ
์ญ์ ์คํจ',
- 'trading-assistant.messages.startSuccess': '์ ๋ต์ด ์ฑ๊ณต์ ์ผ๋ก ์์๋์์ต๋๋ค',
- 'trading-assistant.messages.startFailed': '์ ์ฑ
์ ์์ํ์ง ๋ชปํ์ต๋๋ค.',
- 'trading-assistant.messages.stopSuccess': '์ ๋ต์ด ์ฑ๊ณต์ ์ผ๋ก ์ค์ง๋์์ต๋๋ค.',
- 'trading-assistant.messages.stopFailed': '์ค์ง ์ ๋ต์ด ์คํจํ์ต๋๋ค.',
- 'trading-assistant.messages.loadFailed': '์ ์ฑ
๋ชฉ๋ก์ ๊ฐ์ ธ์ค์ง ๋ชปํ์ต๋๋ค.',
- 'trading-assistant.messages.runningWarning': '์ ๋ต์ด ์คํ๋๊ณ ์์ต๋๋ค. ์ ๋ต์ ์์ ํ๊ธฐ ์ ์ ์ ๋ต์ ์ค์งํ์ธ์.',
- 'trading-assistant.messages.deleteConfirmWithName': '"{name}" ์ ์ฑ
์ ์ญ์ ํ์๊ฒ ์ต๋๊น? ์ด ์์
์ ๋๋๋ฆด ์ ์์ต๋๋ค.',
- 'trading-assistant.messages.deleteConfirm': '์ด ์ ์ฑ
์ ์ญ์ ํ์๊ฒ ์ต๋๊น? ์ด ์์
์ ๋๋๋ฆด ์ ์์ต๋๋ค.',
- 'trading-assistant.messages.loadTradesFailed': '๊ฑฐ๋ ๊ธฐ๋ก์ ๊ฐ์ ธ์ค์ง ๋ชปํ์ต๋๋ค.',
- 'trading-assistant.messages.loadPositionsFailed': '์์น ๊ธฐ๋ก์ ๊ฐ์ ธ์ค์ง ๋ชปํ์ต๋๋ค.',
- 'trading-assistant.messages.loadEquityFailed': '์๊ธฐ์๋ณธ๊ณก์ ํ๋ ์คํจ',
- 'trading-assistant.messages.loadIndicatorsFailed': 'ํ์๊ธฐ ๋ชฉ๋ก์ ๋ก๋ํ์ง ๋ชปํ์ต๋๋ค. ๋์ค์ ๋ค์ ์๋ํด ์ฃผ์ธ์.',
- 'trading-assistant.messages.spotLimitations': 'ํ๋ฌผ ๊ฑฐ๋๋ ์๋์ผ๋ก ๋งค์, 1๋ฐฐ ๋ ๋ฒ๋ฆฌ์ง๋ก ์ค์ ๋์์ต๋๋ค.',
- 'trading-assistant.messages.autoFillApiConfig': '๊ฑฐ๋์์ ๊ณผ๊ฑฐ API ๊ตฌ์ฑ์ด ์๋์ผ๋ก ์ฑ์์ก์ต๋๋ค.',
- 'trading-assistant.placeholders.selectIndicator': '์งํ๋ฅผ ์ ํํ์ธ์',
- 'trading-assistant.placeholders.selectExchange': '๊ตํ์ ์ ํํด์ฃผ์ธ์',
- 'trading-assistant.placeholders.inputApiKey': 'API ํค๋ฅผ ์
๋ ฅํ์ธ์',
- 'trading-assistant.placeholders.inputSecretKey': '๋น๋ฐํค๋ฅผ ์
๋ ฅํด์ฃผ์ธ์',
- 'trading-assistant.placeholders.inputPassphrase': '์ํธ๋ฅผ ์
๋ ฅํ์ธ์',
- 'trading-assistant.placeholders.inputStrategyName': '์ ์ฑ
์ด๋ฆ์ ์
๋ ฅํ์ธ์.',
- 'trading-assistant.placeholders.selectSymbol': '๊ฑฐ๋์์ ์ ํํด์ฃผ์ธ์',
- 'trading-assistant.placeholders.selectTimeframe': '๊ธฐ๊ฐ์ ์ ํํ์ธ์.',
- 'trading-assistant.placeholders.selectKlinePeriod': 'K์ ๊ธฐ๊ฐ์ ์ ํํ์ธ์',
- 'trading-assistant.placeholders.inputAiFilterPrompt': '์ฌ์ฉ์ ์ ์ ํ๋กฌํํธ๋ฅผ ์
๋ ฅํ์ธ์(์ ํ์ฌํญ)',
- 'trading-assistant.validation.indicatorRequired': '์งํ๋ฅผ ์ ํํ์ธ์',
- 'trading-assistant.validation.exchangeRequired': '๊ตํ์ ์ ํํด์ฃผ์ธ์',
- 'trading-assistant.validation.apiKeyRequired': 'API ํค๋ฅผ ์
๋ ฅํ์ธ์',
- 'trading-assistant.validation.secretKeyRequired': '๋น๋ฐํค๋ฅผ ์
๋ ฅํด์ฃผ์ธ์',
- 'trading-assistant.validation.passphraseRequired': '์ํธ๋ฅผ ์
๋ ฅํ์ธ์',
- 'trading-assistant.validation.exchangeConfigIncomplete': '์ ์ฒด ๊ตํ ๊ตฌ์ฑ ์ ๋ณด๋ฅผ ์
๋ ฅํ์ธ์.',
- 'trading-assistant.validation.testConnectionRequired': '๋จผ์ "์ฐ๊ฒฐ ํ
์คํธ" ๋ฒํผ์ ํด๋ฆญํ๊ณ ์ฐ๊ฒฐ์ด ์ฑ๊ณตํ๋์ง ํ์ธํ์ธ์',
- 'trading-assistant.validation.testConnectionFailed': '์ฐ๊ฒฐ ํ
์คํธ์ ์คํจํ์ต๋๋ค. ๊ตฌ์ฑ์ ํ์ธํ๊ณ ๋ค์ ํ
์คํธํ์ธ์',
- 'trading-assistant.validation.strategyNameRequired': '์ ์ฑ
์ด๋ฆ์ ์
๋ ฅํ์ธ์.',
- 'trading-assistant.validation.symbolRequired': '๊ฑฐ๋์์ ์ ํํด์ฃผ์ธ์',
- 'trading-assistant.validation.initialCapitalRequired': 'ํฌ์๊ธ์ก์ ์
๋ ฅํด์ฃผ์ธ์.',
- 'trading-assistant.validation.leverageRequired': '๋ ๋ฒ๋ฆฌ์ง ๋น์จ์ ์
๋ ฅํ์ธ์.',
- 'trading-assistant.table.time': '์๊ฐ',
- 'trading-assistant.table.type': '์ ํ',
- 'trading-assistant.table.price': '๊ฐ๊ฒฉ',
- 'trading-assistant.table.amount': '์๋',
- 'trading-assistant.table.value': '๊ธ์ก',
- 'trading-assistant.table.commission': '์ทจ๊ธ ์์๋ฃ',
- 'trading-assistant.table.symbol': '๊ฑฐ๋์',
- 'trading-assistant.table.side': '๋ฐฉํฅ',
- 'trading-assistant.table.size': 'ํฌ์ง์
์๋',
- 'trading-assistant.table.entryPrice': '๊ฐ์ฅ ๊ฐ๊ฒฉ',
- 'trading-assistant.table.currentPrice': 'ํ์ฌ ๊ฐ๊ฒฉ',
- 'trading-assistant.table.unrealizedPnl': '๋ฏธ์คํ ์์ต',
- 'trading-assistant.table.pnlPercent': '์์ต๋น์จ',
- 'trading-assistant.table.buy': '์ฌ๋ค',
- 'trading-assistant.table.sell': 'ํ๋ค',
- 'trading-assistant.table.long': '์ค๋ ๊ฐ์ธ์',
- 'trading-assistant.table.short': '์งง์',
- 'trading-assistant.table.noPositions': '์์ง ์ง์ฑ
์ด ์์ต๋๋ค.',
- 'trading-assistant.detail.title': '์ ๋ต ์ธ๋ถ์ ๋ณด',
- 'trading-assistant.detail.strategyName': '์ ์ฑ
์ด๋ฆ',
- 'trading-assistant.detail.strategyType': '์ ๋ต ์ ํ',
- 'trading-assistant.detail.status': '์ํ',
- 'trading-assistant.detail.tradingMode': '๊ฑฐ๋ ๋ชจ๋ธ',
- 'trading-assistant.detail.exchange': '๊ตํ',
- 'trading-assistant.detail.initialCapital': '์ด๊ธฐ์๋ณธ๊ธ',
- 'trading-assistant.detail.totalInvestment': '์ดํฌ์๊ธ์ก',
- 'trading-assistant.detail.currentEquity': 'ํ์ฌ ์์์ฐ',
- 'trading-assistant.detail.totalPnl': '์ด์์ต',
- 'trading-assistant.detail.indicatorName': '์งํ ์ด๋ฆ',
- 'trading-assistant.detail.maxLeverage': '์ต๋ ๋ ๋ฒ๋ฆฌ์ง',
- 'trading-assistant.detail.decideInterval': '๊ฒฐ์ ๊ฐ๊ฒฉ',
- 'trading-assistant.detail.symbols': '๊ฑฐ๋๊ฐ์ฒด',
- 'trading-assistant.detail.createdAt': '์์ฑ ์๊ฐ',
- 'trading-assistant.detail.updatedAt': '์
๋ฐ์ดํธ ์๊ฐ',
- 'trading-assistant.detail.llmConfig': 'AI ๋ชจ๋ธ ๊ตฌ์ฑ',
- 'trading-assistant.detail.exchangeConfig': '๊ตํ ๊ตฌ์ฑ',
- 'trading-assistant.detail.provider': '๊ณต๊ธ์',
- 'trading-assistant.detail.modelId': '๋ชจ๋ธ ID',
- 'trading-assistant.detail.close': '๋ซ๊ธฐ',
- 'trading-assistant.detail.loadFailed': '์ ์ฑ
์ธ๋ถ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค์ง ๋ชปํ์ต๋๋ค.',
- 'trading-assistant.equity.noData': '์์ง ์์์ฐ ๋ฐ์ดํฐ๊ฐ ์์ต๋๋ค.',
- 'trading-assistant.equity.equity': '์์์ฐ',
- 'trading-assistant.exchange.tradingMode': '๊ฑฐ๋ ๋ชจ๋ธ',
- 'trading-assistant.exchange.virtual': '๋ชจ์๊ฑฐ๋',
- 'trading-assistant.exchange.live': '์ค์ ๊ฑฐ๋',
- 'trading-assistant.exchange.selectExchange': '๊ตํ ์ ํ',
- 'trading-assistant.exchange.walletAddress': '์ง๊ฐ ์ฃผ์',
- 'trading-assistant.exchange.walletAddressPlaceholder': '์ง๊ฐ ์ฃผ์(0x๋ก ์์)๋ฅผ ์
๋ ฅํ์ธ์.',
- 'trading-assistant.exchange.privateKey': '๊ฐ์ธ ํค',
- 'trading-assistant.exchange.privateKeyPlaceholder': '๊ฐ์ธํค(64์)๋ฅผ ์
๋ ฅํด์ฃผ์ธ์.',
- 'trading-assistant.exchange.testConnection': '์ฐ๊ฒฐ ํ
์คํธ',
- 'trading-assistant.exchange.connectionSuccess': '์ฐ๊ฒฐ ์ฑ๊ณต',
- 'trading-assistant.exchange.connectionFailed': '์ฐ๊ฒฐ ์คํจ',
- 'trading-assistant.exchange.testFailed': '์ฐ๊ฒฐ ํ
์คํธ ์คํจ',
- 'trading-assistant.exchange.fillComplete': '์ ์ฒด ๊ตํ ๊ตฌ์ฑ ์ ๋ณด๋ฅผ ์
๋ ฅํ์ธ์.',
- 'trading-assistant.strategyTypeOptions.ai': 'AI ์ค์ฌ ์ ๋ต',
- 'trading-assistant.strategyTypeOptions.indicator': '๊ธฐ์ ์งํ ์ ๋ต',
- 'trading-assistant.strategyTypeOptions.aiDeveloping': 'AI ๊ธฐ๋ฐ ์ ๋ต ๊ธฐ๋ฅ์ ๊ฐ๋ฐ ์ค์ด๋ฏ๋ก ๊ณ์ ์ง์ผ๋ด ์ฃผ์๊ธฐ ๋ฐ๋๋๋ค',
- 'trading-assistant.strategyTypeOptions.aiDevelopingWarning': 'AI ๊ธฐ๋ฐ ์ ๋ต ๊ธฐ๋ฅ ๊ฐ๋ฐ ์ค',
- 'trading-assistant.indicatorType.trend': '์ถ์ธ',
- 'trading-assistant.indicatorType.momentum': '์ถ์ง๋ ฅ',
- 'trading-assistant.indicatorType.volatility': '๋ณ๋',
- 'trading-assistant.indicatorType.volume': '๋ณผ๋ฅจ',
- 'trading-assistant.indicatorType.custom': '์ฌ์ฉ์ ์ ์',
- 'trading-assistant.exchangeNames': {
- 'okx': 'OKX',
- 'binance': '๋ฐ์ด๋ธ์ค',
- 'hyperliquid': '์ด์ก์ฒด',
- 'blockchaincom': '๋ธ๋ก์ฒด์ธ๋ท์ปด',
- 'coinbaseexchange': '์ฝ์ธ๋ฒ ์ด์ค',
- 'gate': 'Gate.io',
- 'mexc': '๋ฉ์์ฝ',
- 'kraken': 'ํฌ๋ผ์ผ',
- 'bitfinex': '๋นํธํ์ด๋ฅ์ค',
- 'bybit': '๋ฐ์ด๋นํธ',
- 'kucoin': '์ฟ ์ฝ์ธ',
- 'huobi': 'ํ์ค๋น',
- 'bitget': '๋นํธ๊ฒ',
- 'bitmex': '๋นํธ๋ฉ์ค',
- 'deribit': '๋ฐ๋ฆฌ๋นํธ',
- 'phemex': 'ํ๋ฉ์ค',
- 'bitmart': '๋นํธ๋งํธ',
- 'bitstamp': '๋นํธ์คํฌํ',
- 'bittrex': '๋นํธ๋ ์ค',
- 'poloniex': 'ํด๋ก๋์ค',
- 'gemini': '์๋ฅ์ด์๋ฆฌ',
- 'cryptocom': 'ํฌ๋ฆฝํ ๋ท์ปด',
- 'bitflyer': '๋นํธํ๋ผ์ด์ด',
- 'upbit': '์
๋นํธ',
- 'bithumb': '๋น์ธ',
- 'coinone': '์ฝ์ธ์',
- 'zb': 'ZB',
- 'lbank': 'L์ํ',
- 'bibox': '๋น๋ฐ์ค',
- 'bigone': '๋น
์',
- 'bitrue': '๋ฐ์ดํธ๋ฃจ',
- 'coinex': '์ฝ์ธ์์ค',
- 'digifinex': '๋์งํ์ด๋ฅ์ค',
- 'ftx': 'FTX',
- 'ftxus': 'FTX ๋ฏธ๊ตญ',
- 'binanceus': '๋ฐ์ด๋ธ์ค ๋ฏธ๊ตญ',
- 'binancecoinm': '๋ฐ์ด๋ธ์ค ์ฝ์ธ-M',
- 'binanceusdm': '๋ฐ์ด๋ธ์ค USDโ-M',
- 'deepcoin': '๋ฅ์ฝ์ธ'
- },
- 'ai-trading-assistant.title': 'AI ํธ๋ ์ด๋ฉ ๋์ฐ๋ฏธ',
- 'ai-trading-assistant.strategyList': '์ ๋ต ๋ชฉ๋ก',
- 'ai-trading-assistant.createStrategy': '์ ์ฑ
๋ง๋ค๊ธฐ',
- 'ai-trading-assistant.noStrategy': '์์ง ์ ๋ต์ด ์์ต๋๋ค.',
- 'ai-trading-assistant.selectStrategy': '์ธ๋ถ์ ๋ณด๋ฅผ ๋ณด๋ ค๋ฉด ์ผ์ชฝ์์ ์ ๋ต์ ์ ํํ์ธ์.',
- 'ai-trading-assistant.startStrategy': '์ถ์ ์ ๋ต',
- 'ai-trading-assistant.stopStrategy': '์ค์ง ์ ๋ต',
- 'ai-trading-assistant.editStrategy': 'ํธ์ง ์ ๋ต',
- 'ai-trading-assistant.deleteStrategy': '์ ์ฑ
์ญ์ ',
- 'ai-trading-assistant.status.running': '๋ฌ๋ฆฌ๊ธฐ',
- 'ai-trading-assistant.status.stopped': '์ค์ง๋จ',
- 'ai-trading-assistant.status.error': '์ค๋ฅ',
- 'ai-trading-assistant.tabs.tradingRecords': '๊ฑฐ๋ ๋ด์ญ',
- 'ai-trading-assistant.tabs.positions': '์ง์๊ธฐ๋ก',
- 'ai-trading-assistant.tabs.aiDecisions': 'AI ์์ฌ๊ฒฐ์ ๊ธฐ๋ก',
- 'ai-trading-assistant.tabs.equityCurve': '์ฃผ์๊ณก์ ',
- 'ai-trading-assistant.form.createTitle': 'AI ๊ฑฐ๋ ์ ๋ต ์๋ฆฝ',
- 'ai-trading-assistant.form.editTitle': 'AI ๊ฑฐ๋ ์ ๋ต ํธ์ง',
- 'ai-trading-assistant.form.strategyName': '์ ์ฑ
์ด๋ฆ',
- 'ai-trading-assistant.form.modelId': 'AI ๋ชจ๋ธ',
- 'ai-trading-assistant.form.modelIdHint': 'API ํค๋ฅผ ๊ตฌ์ฑํ์ง ์๊ณ ์์คํ
OpenRouter ์๋น์ค ์ฌ์ฉ',
- 'ai-trading-assistant.form.decideInterval': '๊ฒฐ์ ๊ฐ๊ฒฉ',
- 'ai-trading-assistant.form.decideInterval5m': '5๋ถ',
- 'ai-trading-assistant.form.decideInterval10m': '10๋ถ',
- 'ai-trading-assistant.form.decideInterval30m': '30๋ถ',
- 'ai-trading-assistant.form.decideInterval1h': '1์๊ฐ',
- 'ai-trading-assistant.form.decideInterval4h': '4์๊ฐ',
- 'ai-trading-assistant.form.decideInterval1d': '1์ผ',
- 'ai-trading-assistant.form.decideInterval1w': '1์ฃผ',
- 'ai-trading-assistant.form.decideIntervalHint': 'AI๊ฐ ๊ฒฐ์ ์ ๋ด๋ฆฌ๋ ์๊ฐ ๊ฐ๊ฒฉ',
- 'ai-trading-assistant.form.runPeriod': '์คํ ์ฃผ๊ธฐ',
- 'ai-trading-assistant.form.runPeriodHint': '์ ๋ต ์คํ์ ์์ ์๊ฐ๊ณผ ์ข
๋ฃ ์๊ฐ',
- 'ai-trading-assistant.form.startDate': '์์์ผ',
- 'ai-trading-assistant.form.endDate': '์ข
๋ฃ์ผ',
- 'ai-trading-assistant.form.qdtCostTitle': 'QDT ๊ณต์ ์ง์นจ',
- 'ai-trading-assistant.form.qdtCostHint': '๊ฐ AI ๊ฒฐ์ ์ ๋ํด {cost} QDT๊ฐ ์ฐจ๊ฐ๋ฉ๋๋ค. ๊ทํ์ ๊ณ์ ์ ์ถฉ๋ถํ QDT ์์ก์ด ์๋์ง ํ์ธํ์ญ์์ค. ์ ๋ต์ ์คํํ๋ ๋์ ๊ฐ ๊ฒฐ์ ์ ๋ํด ์์๋ฃ๊ฐ ์ค์๊ฐ์ผ๋ก ์ฐจ๊ฐ๋ฉ๋๋ค.',
- 'ai-trading-assistant.form.apiKey': 'API ํค',
- 'ai-trading-assistant.form.exchange': '๊ตํ ์ ํ',
- 'ai-trading-assistant.form.secretKey': '๋น๋ฐํค',
- 'ai-trading-assistant.form.passphrase': '์ํธ',
- 'ai-trading-assistant.form.testConnection': '์ฐ๊ฒฐ ํ
์คํธ',
- 'ai-trading-assistant.form.symbol': '๊ฑฐ๋ ์',
- 'ai-trading-assistant.form.symbolHint': '๊ฑฐ๋ํ ๊ฑฐ๋์์ ์ ํํ์ธ์',
- 'ai-trading-assistant.form.initialCapital': 'ํฌ์๊ธ์ก(๋ง์ง)',
- 'ai-trading-assistant.form.leverage': '์ฌ๋ฌ ๊ฐ์ง ํ์ฉ',
- 'ai-trading-assistant.form.timeframe': '๊ธฐ๊ฐ',
- 'ai-trading-assistant.form.timeframe1m': '1๋ถ',
- 'ai-trading-assistant.form.timeframe5m': '5๋ถ',
- 'ai-trading-assistant.form.timeframe15m': '15๋ถ',
- 'ai-trading-assistant.form.timeframe30m': '30๋ถ',
- 'ai-trading-assistant.form.timeframe1H': '1์๊ฐ',
- 'ai-trading-assistant.form.timeframe4H': '4์๊ฐ',
- 'ai-trading-assistant.form.timeframe1D': '1์ผ',
- 'ai-trading-assistant.form.marketType': '์์ฅ ์ ํ',
- 'ai-trading-assistant.form.marketTypeFutures': '๊ณ์ฝ',
- 'ai-trading-assistant.form.marketTypeSpot': '์คํ',
- 'ai-trading-assistant.form.totalPnl': '์ด์์ต',
- 'ai-trading-assistant.form.customPrompt': '๋ง์ถค ํ๋กฌํํธ ๋จ์ด',
- 'ai-trading-assistant.form.customPromptHint': '์ ํ ์ฌํญ, AI ๊ฑฐ๋ ์ ๋ต ๋ฐ ์์ฌ ๊ฒฐ์ ๋
ผ๋ฆฌ๋ฅผ ์ฌ์ฉ์ ์ ์ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.',
- 'ai-trading-assistant.form.cancel': '์ทจ์',
- 'ai-trading-assistant.form.prev': '์ด์ ๋จ๊ณ',
- 'ai-trading-assistant.form.next': '๋ค์ ๋จ๊ณ',
- 'ai-trading-assistant.form.confirmCreate': '์์ฑ ํ์ธ',
- 'ai-trading-assistant.form.confirmEdit': '๋ณ๊ฒฝ์ฌํญ ํ์ธ',
- 'ai-trading-assistant.messages.createSuccess': '์ ๋ต์ด ์ฑ๊ณต์ ์ผ๋ก ์์ฑ๋์์ต๋๋ค.',
- 'ai-trading-assistant.messages.createFailed': '์ ์ฑ
์ ์์ฑํ์ง ๋ชปํ์ต๋๋ค.',
- 'ai-trading-assistant.messages.updateSuccess': '์ ์ฑ
์
๋ฐ์ดํธ ์ฑ๊ณต',
- 'ai-trading-assistant.messages.updateFailed': '์ ์ฑ
์
๋ฐ์ดํธ ์คํจ',
- 'ai-trading-assistant.messages.deleteSuccess': '์ ์ฑ
์ญ์ ์ฑ๊ณต',
- 'ai-trading-assistant.messages.deleteFailed': '์ ์ฑ
์ญ์ ์คํจ',
- 'ai-trading-assistant.messages.startSuccess': '์ ๋ต์ด ์ฑ๊ณต์ ์ผ๋ก ์์๋์์ต๋๋ค',
- 'ai-trading-assistant.messages.startFailed': '์ ์ฑ
์ ์์ํ์ง ๋ชปํ์ต๋๋ค.',
- 'ai-trading-assistant.messages.stopSuccess': '์ ๋ต์ด ์ฑ๊ณต์ ์ผ๋ก ์ค์ง๋์์ต๋๋ค.',
- 'ai-trading-assistant.messages.stopFailed': '์ค์ง ์ ๋ต์ด ์คํจํ์ต๋๋ค.',
- 'ai-trading-assistant.messages.loadFailed': '์ ์ฑ
๋ชฉ๋ก์ ๊ฐ์ ธ์ค์ง ๋ชปํ์ต๋๋ค.',
- 'ai-trading-assistant.messages.loadDecisionsFailed': 'AI ๊ฒฐ์ ๊ธฐ๋ก์ ๊ฐ์ ธ์ค์ง ๋ชปํ์ต๋๋ค.',
- 'ai-trading-assistant.messages.deleteConfirm': '์ด ์ ์ฑ
์ ์ญ์ ํ์๊ฒ ์ต๋๊น? ์ด ์์
์ ๋๋๋ฆด ์ ์์ต๋๋ค.',
- 'ai-trading-assistant.placeholders.inputStrategyName': '์ ์ฑ
์ด๋ฆ์ ์
๋ ฅํ์ธ์.',
- 'ai-trading-assistant.placeholders.selectModelId': 'AI ๋ชจ๋ธ์ ์ ํํด ์ฃผ์ธ์',
- 'ai-trading-assistant.placeholders.selectDecideInterval': '๊ฒฐ์ ๊ฐ๊ฒฉ์ ์ ํํ์ธ์.',
- 'ai-trading-assistant.placeholders.startTime': '์์ ์๊ฐ',
- 'ai-trading-assistant.placeholders.endTime': '์ข
๋ฃ ์๊ฐ',
- 'ai-trading-assistant.placeholders.inputApiKey': 'API ํค๋ฅผ ์
๋ ฅํ์ธ์',
- 'ai-trading-assistant.placeholders.selectExchange': '๊ตํ์ ์ ํํด์ฃผ์ธ์',
- 'ai-trading-assistant.placeholders.inputSecretKey': '๋น๋ฐํค๋ฅผ ์
๋ ฅํด์ฃผ์ธ์',
- 'ai-trading-assistant.placeholders.inputPassphrase': '์ํธ๋ฅผ ์
๋ ฅํ์ธ์',
- 'ai-trading-assistant.placeholders.selectSymbol': '๋ค์๊ณผ ๊ฐ์ ๊ฑฐ๋์์ ์ ํํ์ธ์: BTC/USDT',
- 'ai-trading-assistant.placeholders.selectTimeframe': '๊ธฐ๊ฐ์ ์ ํํ์ธ์.',
- 'ai-trading-assistant.placeholders.inputCustomPrompt': '๋ง์ถค ํ๋กฌํํธ ๋จ์ด๋ฅผ ์
๋ ฅํ์ธ์(์ ํ์ฌํญ).',
- 'ai-trading-assistant.validation.strategyNameRequired': '์ ์ฑ
์ด๋ฆ์ ์
๋ ฅํ์ธ์.',
- 'ai-trading-assistant.validation.modelIdRequired': 'AI ๋ชจ๋ธ์ ์ ํํด ์ฃผ์ธ์',
- 'ai-trading-assistant.validation.runPeriodRequired': '์คํ ์ฃผ๊ธฐ๋ฅผ ์ ํํ์ธ์.',
- 'ai-trading-assistant.validation.apiKeyRequired': 'API ํค๋ฅผ ์
๋ ฅํ์ธ์',
- 'ai-trading-assistant.validation.exchangeRequired': '๊ตํ์ ์ ํํด์ฃผ์ธ์',
- 'ai-trading-assistant.validation.secretKeyRequired': '๋น๋ฐํค๋ฅผ ์
๋ ฅํด์ฃผ์ธ์',
- 'ai-trading-assistant.validation.symbolRequired': '๊ฑฐ๋์์ ์ ํํด์ฃผ์ธ์',
- 'ai-trading-assistant.validation.initialCapitalRequired': 'ํฌ์๊ธ์ก์ ์
๋ ฅํด์ฃผ์ธ์.',
- 'ai-trading-assistant.table.time': '์๊ฐ',
- 'ai-trading-assistant.table.type': '์ ํ',
- 'ai-trading-assistant.table.price': '๊ฐ๊ฒฉ',
- 'ai-trading-assistant.table.amount': '์๋',
- 'ai-trading-assistant.table.value': '๊ธ์ก',
- 'ai-trading-assistant.table.symbol': '๊ฑฐ๋ ์',
- 'ai-trading-assistant.table.side': '๋ฐฉํฅ',
- 'ai-trading-assistant.table.size': 'ํฌ์ง์
์๋',
- 'ai-trading-assistant.table.entryPrice': '๊ฐ์ฅ ๊ฐ๊ฒฉ',
- 'ai-trading-assistant.table.currentPrice': 'ํ์ฌ ๊ฐ๊ฒฉ',
- 'ai-trading-assistant.table.unrealizedPnl': '๋ฏธ์คํ ์์ต',
- 'ai-trading-assistant.table.profit': '์ด์ต๊ณผ ์์ค',
- 'ai-trading-assistant.table.openLong': '๊ธธ๊ฒ ์ด๋ค',
- 'ai-trading-assistant.table.closeLong': 'ํ๋์ค',
- 'ai-trading-assistant.table.openShort': '์คํ ์ผํธ',
- 'ai-trading-assistant.table.closeShort': '๋น์ด ์์',
- 'ai-trading-assistant.table.addLong': '๊ฐ๋',
- 'ai-trading-assistant.table.addShort': '์งง๊ฒ ์ถ๊ฐํ๋ค',
- 'ai-trading-assistant.table.closeShortProfit': '์ ํฌ์ง์
์์ ์ด์ต์ ์ป์ผ์ธ์',
- 'ai-trading-assistant.table.closeShortStop': '์์ค ์ค์ง',
- 'ai-trading-assistant.table.closeLongProfit': '์ค๋ ๋ฉ์ถ๊ณ ์ด์ต์ ์ป์ผ์ญ์์ค',
- 'ai-trading-assistant.table.closeLongStop': '์์ค ์ค์ง',
- 'ai-trading-assistant.table.buy': '์ฌ๋ค',
- 'ai-trading-assistant.table.sell': 'ํ๋ค',
- 'ai-trading-assistant.table.long': '์ค๋ ๊ฐ์ธ์',
- 'ai-trading-assistant.table.short': '์งง์',
- 'ai-trading-assistant.table.hold': '๋ณด๋ฅ',
- 'ai-trading-assistant.table.reasoning': '๋ถ์ ์ด์ ',
- 'ai-trading-assistant.table.decisions': '์์ฌ๊ฒฐ์ ',
- 'ai-trading-assistant.table.riskAssessment': '์ํ ํ๊ฐ',
- 'ai-trading-assistant.table.confidence': '์์ ๊ฐ',
- 'ai-trading-assistant.table.totalRecords': '์ด {total}๊ฐ ๊ธฐ๋ก',
- 'ai-trading-assistant.table.noPositions': '์์ง ์ง์ฑ
์ด ์์ต๋๋ค.',
- 'ai-trading-assistant.detail.title': '์ ๋ต ์ธ๋ถ์ ๋ณด',
- 'ai-trading-assistant.equity.noData': '์์ง ์์์ฐ ๋ฐ์ดํฐ๊ฐ ์์ต๋๋ค.',
- 'ai-trading-assistant.equity.equity': '์์์ฐ',
- 'ai-trading-assistant.exchange.testFailed': '์ฐ๊ฒฐ ํ
์คํธ ์คํจ',
- 'ai-trading-assistant.exchange.connectionSuccess': '์ฐ๊ฒฐ ์ฑ๊ณต',
- 'ai-trading-assistant.exchange.connectionFailed': '์ฐ๊ฒฐ ์คํจ',
- 'ai-trading-assistant.form.advancedSettings': '๊ณ ๊ธ ์ค์ ',
- 'ai-trading-assistant.form.orderMode': '์ฃผ๋ฌธ ๋ชจ๋',
- 'ai-trading-assistant.form.orderModeMaker': '๋ฉ์ด์ปค',
- 'ai-trading-assistant.form.orderModeTaker': '์์ฅ๊ฐ(ํ
์ด์ปค)',
- 'ai-trading-assistant.form.orderModeHint': '์ง์ ๊ฐ ์ฃผ๋ฌธ ๋ชจ๋๋ ์ง์ ๊ฐ ์ฃผ๋ฌธ์ ์ฌ์ฉํ๋ฉฐ ์ฒ๋ฆฌ ์์๋ฃ๊ฐ ๋ ๋ฎ์ต๋๋ค. ์์ฅ ๊ฐ๊ฒฉ ๋ชจ๋๋ ์ฆ์ ์คํ๋๋ฉฐ ์ฒ๋ฆฌ ์์๋ฃ๊ฐ ๋ ๋์ต๋๋ค.',
- 'ai-trading-assistant.form.makerWaitSec': '์ง์ ๊ฐ ์ฃผ๋ฌธ ๋๊ธฐ ์๊ฐ(์ด)',
- 'ai-trading-assistant.form.makerWaitSecHint': '์ฃผ๋ฌธ ํ ๊ฑฐ๋๊ฐ ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์
๋๋ค. ์ทจ์ํ๊ณ ์๊ฐ ์ด๊ณผ ํ ๋ค์ ์๋ํ์ธ์.',
- 'ai-trading-assistant.form.makerRetries': '๋ณด๋ฅ ์ค์ธ ์ฃผ๋ฌธ์ ๋ํ ์ฌ์๋ ํ์',
- 'ai-trading-assistant.form.makerRetriesHint': '๋ณด๋ฅ ์ค์ธ ์ฃผ๋ฌธ์ด ์คํ๋์ง ์์ ๋ ์ต๋ ์ฌ์๋ ํ์',
- 'ai-trading-assistant.form.fallbackToMarket': '์ง์ ๊ฐ ์ฃผ๋ฌธ์ด ์คํจํ๊ณ ์์ฅ ๊ฐ๊ฒฉ์ด ํ๋ฝํฉ๋๋ค.',
- 'ai-trading-assistant.form.fallbackToMarketHint': '๊ฐ์/์ฒญ์ฐ ๋ณด๋ฅ ์ฃผ๋ฌธ์ด ์๋ฃ๋์ง ์์ ๊ฒฝ์ฐ ๊ฑฐ๋๊ฐ ์๋ฃ๋์๋์ง ํ์ธํ๊ธฐ ์ํด ์์ฅ๊ฐ ์ฃผ๋ฌธ์ผ๋ก ๋ค์ด๊ทธ๋ ์ด๋ํด์ผ ํ๋์ง ์ฌ๋ถ.',
- 'ai-trading-assistant.form.marginMode': '๋ง์ง ๋ชจ๋',
- 'ai-trading-assistant.form.marginModeCross': '์ ์ฒด ์ฐฝ๊ณ ',
- 'ai-trading-assistant.form.marginModeIsolated': '๊ณ ๋ฆฝ๋ ์์น',
- 'ai-analysis.title': 'ํํธ ํธ๋ ์ด๋ฉ ์์ง',
- 'ai-analysis.system.online': '์จ๋ผ์ธ',
- 'ai-analysis.system.agents': '๋๋ฆฌ์ธ',
- 'ai-analysis.system.active': 'ํ์ฑ',
- 'ai-analysis.system.stage': '๋ฌด๋',
- 'ai-analysis.panel.roster': '์์ด์ ํธ ๋ผ์ธ์
',
- 'ai-analysis.panel.thinking': '์๊ฐํ๋ค...',
- 'ai-analysis.panel.done': '์๋ฃ',
- 'ai-analysis.panel.standby': '๋๊ธฐ',
- 'ai-analysis.input.title': 'ํํธ ํธ๋ ์ด๋ฉ ์์ง',
- 'ai-analysis.input.placeholder': '๋์ ์์ฐ ์ ํ(์: BTC/USDT)',
- 'ai-analysis.input.watchlist': '์ต์
์ฃผ์',
- 'ai-analysis.input.start': '๋ถ์ ์์',
- 'ai-analysis.input.recent': '์ต๊ทผ ์์
:',
- 'ai-analysis.vis.stage': '๋ฌด๋',
- 'ai-analysis.vis.processing': '์ฒ๋ฆฌ',
- 'ai-analysis.result.complete': '๋ถ์ ์๋ฃ',
- 'ai-analysis.result.signal': '์ต์ข
์ ํธ',
- 'ai-analysis.result.confidence': '์์ ๊ฐ:',
- 'ai-analysis.result.new': '์๋ก์ด ๋ถ์',
- 'ai-analysis.result.full': '์ ์ฒด ๋ณด๊ณ ์ ๋ณด๊ธฐ',
- 'ai-analysis.logs.title': '์์คํ
๋ก๊ทธ',
- 'ai-analysis.modal.title': '๊ธฐ๋ฐ ๋ณด๊ณ ์',
- 'ai-analysis.modal.fundamental': '๊ธฐ๋ณธ์ ๋ถ์',
- 'ai-analysis.modal.technical': '๊ธฐ์ ์ ๋ถ์',
- 'ai-analysis.modal.sentiment': '๊ฐ์ ๋ถ์',
- 'ai-analysis.modal.risk': '์ํ ํ๊ฐ',
- 'ai-analysis.stage.idle': '๋๊ธฐ',
- 'ai-analysis.stage.1': '1๋จ๊ณ: ๋ค์ฐจ์ ๋ถ์',
- 'ai-analysis.stage.2': '2๋จ๊ณ: ์ฅ๋จ๊ธฐ ํ ๋ก ',
- 'ai-analysis.stage.3': '3๋จ๊ณ: ์ ๋ต์ ๊ณํ',
- 'ai-analysis.stage.4': '๋ค ๋ฒ์งธ ๋จ๊ณ: ์ํ ํต์ ๊ฒํ ',
- 'ai-analysis.stage.complete': '์๋ฃ',
- 'ai-analysis.agent.investment_director': 'ํฌ์ ์ด์ฌ',
- 'ai-analysis.agent.role.investment_director': '์ข
ํฉ ๋ถ์ ๋ฐ ์ต์ข
๊ฒฐ๋ก ',
- 'ai-analysis.agent.market': '์์ฅ ๋ถ์๊ฐ',
- 'ai-analysis.agent.role.market': '๊ธฐ์ ๋ฐ ์์ฅ ๋ฐ์ดํฐ',
- 'ai-analysis.agent.fundamental': '๊ธฐ๋ณธ ๋ถ์๊ฐ',
- 'ai-analysis.agent.role.fundamental': '์ฌ๋ฌด ๋ฐ ํ๊ฐ',
- 'ai-analysis.agent.technical': '๊ธฐ์ ๋ถ์๊ฐ',
- 'ai-analysis.agent.role.technical': '๊ธฐ์ ์งํ ๋ฐ ์ฐจํธ',
- 'ai-analysis.agent.news': '๋ด์ค ๋ถ์๊ฐ',
- 'ai-analysis.agent.role.news': '๊ธ๋ก๋ฒ ๋ด์ค ํํฐ',
- 'ai-analysis.agent.sentiment': '๊ฐ์ ๋ถ์๊ฐ',
- 'ai-analysis.agent.role.sentiment': '์ฌํ์ ๋ฐ ์ ์์ ',
- 'ai-analysis.agent.risk': '์ํ ๋ถ์๊ฐ',
- 'ai-analysis.agent.role.risk': '๊ธฐ๋ณธ ๋ฆฌ์คํฌ ์ ๊ฒ',
- 'ai-analysis.agent.bull': '๋๊ด์ ์ธ ์ฐ๊ตฌ์',
- 'ai-analysis.agent.role.bull': '์ฑ์ฅ์ด๋งค ์ฑ๊ตด',
- 'ai-analysis.agent.bear': '์ฝ์ธ ์ฐ๊ตฌ์',
- 'ai-analysis.agent.role.bear': '์ํ ๋ฐ ๊ฒฐํจ ์กฐ์ฌ',
- 'ai-analysis.agent.manager': '์ฐ๊ตฌ ๊ด๋ฆฌ์',
- 'ai-analysis.agent.role.manager': 'ํ ๋ก ์งํ์',
- 'ai-analysis.agent.trader': '์์ธ',
- 'ai-analysis.agent.role.trader': '๊ฒฝ์ ์ ๋ต๊ฐ',
- 'ai-analysis.agent.risky': 'ํ๋๊ฐ ๋ถ์๊ฐ',
- 'ai-analysis.agent.role.risky': '๊ณต๊ฒฉ์ ์ธ ์ ๋ต',
- 'ai-analysis.agent.neutral': '๊ท ํ ๋ถ์๊ฐ',
- 'ai-analysis.agent.role.neutral': '๊ท ํ ์ ๋ต',
- 'ai-analysis.agent.safe': '๋ณด์์ ์ธ ๋ถ์๊ฐ',
- 'ai-analysis.agent.role.safe': '๋ณด์์ ์ ๋ต',
- 'ai-analysis.agent.cro': '์ํ ํต์ ๊ด๋ฆฌ์(CRO)',
- 'ai-analysis.agent.role.cro': '์ต์ข
์์ฌ๊ฒฐ์ ๊ถํ',
- 'ai-analysis.script.market': '์ฃผ์ ๊ฑฐ๋์์์ OHLCV ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์ค...',
- 'ai-analysis.script.fundamental': '๋ถ๊ธฐ๋ณ ์ฌ๋ฌด ๋ณด๊ณ ์๋ฅผ ๊ฒ์ํ๋ ์ค...',
- 'ai-analysis.script.technical': '๊ธฐ์ ์งํ ๋ฐ ์ฐจํธ ํจํด ๋ถ์ ์ค...',
- 'ai-analysis.script.news': '๊ธ๋ก๋ฒ ๊ธ์ต ๋ด์ค๋ฅผ ์ค์บํ๋ ์ค...',
- 'ai-analysis.script.sentiment': '์์
๋ฏธ๋์ด ํธ๋ ๋ ๋ถ์โฆ',
- 'ai-analysis.script.risk': '์ญ์ฌ์ ๋ณ๋์ฑ์ ๊ณ์ฐํ๋ ์ค...',
- 'invite.inviteLink': '์ด๋๋งํฌ',
- 'invite.copy': '๋งํฌ ๋ณต์ฌ',
- 'invite.copySuccess': '์ฑ๊ณต์ ์ผ๋ก ๋ณต์ฌ๋์์ต๋๋ค!',
- 'invite.copyFailed': '๋ณต์ฌํ์ง ๋ชปํ์ต๋๋ค. ์๋์ผ๋ก ๋ณต์ฌํ์ธ์.',
- 'invite.noInviteLink': '์ด๋ ๋งํฌ๊ฐ ์์ฑ๋์ง ์์์ต๋๋ค.',
- 'invite.totalInvites': '๋์ ์ด๋',
- 'invite.totalReward': '๋์ ๋ณด์',
- 'invite.rules': '์ด๋ ๊ท์น',
- 'invite.rule1': '์น๊ตฌ๋ฅผ ๋ฑ๋กํ๋๋ก ์ฑ๊ณต์ ์ผ๋ก ์ด๋ํ ๋๋ง๋ค ๋ณด์์ ๋ฐ๊ฒ ๋ฉ๋๋ค.',
- 'invite.rule2': '์ด๋ํ ์น๊ตฌ๊ฐ ์ฒซ ๋ฒ์งธ ๊ฑฐ๋๋ฅผ ์๋ฃํ๋ฉด ์ถ๊ฐ ๋ณด์์ ๋ฐ์ ์ ์์ต๋๋ค.',
- 'invite.rule3': '์ด๋ ๋ณด์์ ๊ทํ์ ๊ณ์ ์ผ๋ก ์ง์ ์ ์ก๋ฉ๋๋ค',
- 'invite.inviteList': '์ด๋ ๋ชฉ๋ก',
- 'invite.tasks': '์ ๊ต ์ผํฐ',
- 'invite.inviteeName': '์ด๋๋ฐ์ ์ฌ๋',
- 'invite.inviteTime': '์ด๋ ์๊ฐ',
- 'invite.status': '์ํ',
- 'invite.reward': '๋ณด์',
- 'invite.active': 'ํ์ฑ',
- 'invite.inactive': 'ํ์ฑํ๋์ง ์์',
- 'invite.completed': '์๋ฃ๋จ',
- 'invite.claimed': '์ ์๋จ',
- 'invite.pending': '์๋ฃ ์์ ',
- 'invite.goToTask': '์๋ฃํ๋ค',
- 'invite.claimReward': '๋ณด์ ์ฒญ๊ตฌ',
- 'invite.verify': 'ํ์ธ ์๋ฃ',
- 'invite.verifySuccess': 'ํ์ธ์ ์ฑ๊ณตํ์ต๋๋ค. ์์
์๋ฃ',
- 'invite.verifyNotCompleted': '์์
์ด ์์ง ์๋ฃ๋์ง ์์์ต๋๋ค. ๋จผ์ ์์
์ ์๋ฃํ์ธ์.',
- 'invite.verifyFailed': 'ํ์ธ์ ์คํจํ์ต๋๋ค. ๋์ค์ ๋ค์ ์๋ํด ์ฃผ์ธ์.',
- 'invite.claimSuccess': '{reward} QDT๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ๋ฐ์์ต๋๋ค!',
- 'invite.claimFailed': '์์งํ์ง ๋ชปํ์ต๋๋ค. ๋์ค์ ๋ค์ ์๋ํด ์ฃผ์ธ์.',
- 'invite.totalRecords': '์ด {total}๊ฐ ๊ธฐ๋ก',
- 'invite.task.twitter.title': 'X(ํธ์ํฐ)๋ก ๋ฆฌํธ์',
- 'invite.task.twitter.desc': '๊ณต์ ํธ์์ X(ํธ์ํฐ) ๊ณ์ ์ ๊ณต์ ํ์ธ์',
- 'invite.task.youtube.title': 'YouTube ์ฑ๋์ ํ๋ก์ฐํ์ธ์',
- 'invite.task.youtube.desc': '๊ณต์ YouTube ์ฑ๋์ ๊ตฌ๋
ํ๊ณ ํ๋ก์ฐํ์ธ์.',
- 'invite.task.telegram.title': 'ํ
๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ๊ฐ์
ํ์ธ์',
- 'invite.task.telegram.desc': '๊ณต์ ํ
๋ ๊ทธ๋จ ์ปค๋ฎค๋ํฐ ๊ทธ๋ฃน์ ๊ฐ์
ํ์ธ์',
- 'invite.task.discord.title': 'Discord ์๋ฒ์ ๊ฐ์
ํ์ธ์',
- 'invite.task.discord.desc': 'Discord ์ปค๋ฎค๋ํฐ ์๋ฒ์ ๊ฐ์
ํ์ธ์',
- 'message': '-',
- 'layouts.usermenu.dialog.title': '์ ๋ณด',
- 'layouts.usermenu.dialog.content': '์ ๋ง๋ก ๋ก๊ทธ์์ํ์๊ฒ ์ต๋๊น?',
- 'layouts.userLayout.title': '๋ถํ์ค์ฑ ์์์ ์ง์ค์ ์ฐพ์๋ผ',
- // Auto-filled missing keys from en-US (fallback to English)
- 'dashboard.indicator.boundary.message': 'Note: The indicator script only computes plots + buy/sell signals. Position sizing, risk, scaling, fees/slippage belong to execution config.',
- 'dashboard.indicator.boundary.indicatorRule': "Keep the script to buy/sell only (and set df['buy']/df['sell']). Do NOT implement position management, TP/SL, scaling in the script.",
- 'dashboard.indicator.boundary.backtestRule': 'Rule: If a bar has a main signal (buy/sell โ open/close/reverse), scaling in/out is skipped on the same bar.',
- 'dashboard.indicator.guide.title': 'Python Indicator & Strategy Development Guide',
- 'dashboard.indicator.guide.intro': 'This platform supports writing custom technical indicators and trading signals using Python. The system includes built-in pandas and numpy data analysis libraries. You can use standard DataFrame operations to process K-line data and draw charts or mark buy/sell signals.',
- 'dashboard.indicator.guide.section1.title': '1. Runtime Environment & Predefined Variables',
- 'dashboard.indicator.guide.section1.env': 'Your code runs in a browser-based Python environment (Pyodide).',
- 'dashboard.indicator.guide.section1.libs': 'Pre-installed Libraries',
- 'dashboard.indicator.guide.section1.libsDesc': 'The following libraries are imported by default, no need to import again:',
- 'dashboard.indicator.guide.section1.libsList': 'pandas (pd), numpy (np), math, json',
- 'dashboard.indicator.guide.section1.data': 'Input Data: df',
- 'dashboard.indicator.guide.section1.dataDesc': 'The system automatically converts current K-line data into a Pandas DataFrame object, variable name is df.',
- 'dashboard.indicator.guide.section1.dataColumns': 'df contains the following columns (all float type):',
- 'dashboard.indicator.guide.section1.dataColumnsList': 'time (timestamp, seconds), open, high, low, close, volume',
- 'dashboard.indicator.guide.section1.dataNote': 'Data index is arranged from old to new (0 is the earliest data, last row is the latest data).',
- 'dashboard.indicator.guide.section1.dataIndex': 'Important: df index is timestamp (DatetimeIndex), please preserve the index, avoid using .values which loses the index.',
- 'dashboard.indicator.guide.section2.title': '2. Parameter Definition',
- 'dashboard.indicator.guide.section2.desc': 'You can define variables as parameters at the beginning of your code. The system will try to parse statements like variable = value as adjustable parameters.',
- 'dashboard.indicator.guide.section2.example': 'Parameter Example',
- 'dashboard.indicator.guide.section2.exampleCode': 'span = 20 or multiplier = 2.0',
- 'dashboard.indicator.guide.section3.title': '3. Backtest Signal Setup (Important!)',
- 'dashboard.indicator.guide.section3.desc': 'If you want your indicator to support backtesting, you must set the following two columns in your code:',
- 'dashboard.indicator.guide.section3.backtestRequired': 'Required for Backtesting:',
- 'dashboard.indicator.guide.section3.backtestBuySignal': "df['buy_signal'] - Boolean Series, True indicates buy signal",
- 'dashboard.indicator.guide.section3.backtestSellSignal': "df['sell_signal'] - Boolean Series, True indicates sell signal",
- 'dashboard.indicator.guide.section3.backtestExample': 'Example:',
- 'dashboard.indicator.guide.section3.backtestExampleCode': "df['buy_signal'] = condition_buydf['sell_signal'] = condition_sell",
- 'dashboard.indicator.guide.section3.backtestNote': 'Note: Even if you only set output.signals for chart display, you must set these two columns to enable backtesting.',
- 'dashboard.indicator.guide.section4.title': '4. Output Requirements: output',
- 'dashboard.indicator.guide.section4.desc': 'At the end of code execution, you must define a dictionary named output to tell the chart how to display results.',
- 'dashboard.indicator.guide.section4.fields': 'The output dictionary contains the following fields:',
- 'dashboard.indicator.guide.section4.plots': 'plots - For drawing lines (e.g., moving averages, RSI)',
- 'dashboard.indicator.guide.section4.signals': 'signals - For marking buy/sell signals (e.g., arrows, labels)',
- 'dashboard.indicator.guide.section4.name': 'name - Indicator name (optional)',
- 'dashboard.indicator.guide.section4.calculatedVars': 'calculatedVars - Calculated variables (optional, for displaying additional information)',
- 'dashboard.indicator.guide.section5.title': '5. Plot Configuration (Plots)',
- 'dashboard.indicator.guide.section5.desc': 'Each object in the plots list represents a line.',
- 'dashboard.indicator.guide.section5.table.field': 'Field',
- 'dashboard.indicator.guide.section5.table.type': 'Type',
- 'dashboard.indicator.guide.section5.table.required': 'Required',
- 'dashboard.indicator.guide.section5.table.requiredYes': 'Yes',
- 'dashboard.indicator.guide.section5.table.requiredNo': 'No',
- 'dashboard.indicator.guide.section5.table.desc': 'Description',
- 'dashboard.indicator.guide.section5.table.name': 'The name of the indicator line, displayed in the legend',
- 'dashboard.indicator.guide.section5.table.data': 'Data list, length must match the number of rows in df. Recommended to use series.tolist()',
- 'dashboard.indicator.guide.section5.table.color': "Line color (Hex format, e.g. '#ff0000'). If not filled, the system will automatically assign",
- 'dashboard.indicator.guide.section5.table.typeDesc': "Chart type, default is 'line'",
- 'dashboard.indicator.guide.section5.table.overlay': 'Important. True means display on main chart (with K-line), False means display on sub-chart (independent area)',
- 'dashboard.indicator.guide.section5.example': 'Example: Draw Simple Moving Average (SMA)',
- 'dashboard.indicator.guide.section5.exampleCalc': 'Calculate SMA',
- 'dashboard.indicator.guide.section5.exampleOutput': 'Construct Output',
- 'dashboard.indicator.guide.section5.exampleOverlay': 'Display on main chart',
- 'dashboard.indicator.guide.section6.title': '6. Signal Markers (Signals)',
- 'dashboard.indicator.guide.section6.desc': "signals are used to mark buy/sell points on specific K-lines through icons or text. Note: This is only for chart display. The backtest system uses df['buy_signal'] and df['sell_signal'].",
- 'dashboard.indicator.guide.section6.table.type': "Signal type: 'buy' (buy, marked below K-line) or 'sell' (sell, marked above K-line)",
- 'dashboard.indicator.guide.section6.table.data': 'Signal data list. Fill price value at signal positions, fill None (or np.nan) at non-signal positions',
- 'dashboard.indicator.guide.section6.table.text': 'Text displayed on the label (e.g. "B", "S", "Buy", "Sell")',
- 'dashboard.indicator.guide.section6.table.color': 'Marker color',
- 'dashboard.indicator.guide.section6.hint': 'The system automatically handles positioning.',
- 'dashboard.indicator.guide.section6.buy': 'Markers will be automatically positioned below the Low of the current K-line',
- 'dashboard.indicator.guide.section6.sell': 'Markers will be automatically positioned above the High of the current K-line',
- 'dashboard.indicator.guide.section6.example': 'Example: Draw Buy/Sell Signals',
- 'dashboard.indicator.guide.section6.exampleInit': 'Initialize signal list, fill all with None',
- 'dashboard.indicator.guide.section6.exampleLogic': 'Simple logic: mark buy when close price is greater than open price',
- 'dashboard.indicator.guide.section6.exampleNote': 'In actual logic, please use loops or vectorized operations',
- 'dashboard.indicator.guide.section6.examplePrice': 'Record price',
- 'dashboard.indicator.guide.section6.exampleText': 'Buy',
- 'dashboard.indicator.guide.section7.title': '7. Complete Code Examples',
- 'dashboard.indicator.guide.section7.exampleA': 'Example A: Dual EMA Strategy (Supports Backtesting)',
- 'dashboard.indicator.guide.section7.exampleACode': "# 1. Calculate indicatorsdf['open_long'], df['close_long'], df['open_short'], df['close_short'] (boolean). Even if you set output.signals for chart display, you must set these columns to enable backtesting.",
- 'dashboard.indicator.guide.section8.q2': 'Q: Data length mismatch?',
- 'dashboard.indicator.guide.section8.a2': "A: The data list in plots and signals must have exactly the same length as the K-line data. If you use df['xxx'].tolist(), there is usually no problem.",
- 'dashboard.indicator.guide.section8.q3': 'Q: How to handle NaN (empty values)?',
- 'dashboard.indicator.guide.section8.a3': "A: Pandas calculations (such as rolling mean) will produce NaN at the beginning. The system will automatically convert NaN to null for chart rendering. You don't need to manually clean it, but if you need specific logic, you can use df.fillna(0) or other methods.",
- 'dashboard.indicator.guide.section8.q4': 'Q: Index mismatch causing all signals to be NaN?',
- 'dashboard.indicator.guide.section8.a4': "A: Please ensure you preserve the original df index (timestamp). Avoid using .values to create new Series. Use columns directly like df['close'] for operations.",
- 'dashboard.indicator.guide.section8.q5': 'Q: Can I use third-party network libraries?',
- 'dashboard.indicator.guide.section8.a5': 'A: No. The runtime environment is a browser sandbox and cannot use libraries like requests to request external APIs, nor can it install additional pip packages. Limited to built-in libraries such as pandas, numpy, math, json.',
- 'dashboard.indicator.guide.section8.q6': 'Q: How to debug code?',
- 'dashboard.indicator.guide.section8.a6': 'A: If the chart does not display indicators, it is usually because the Python code has an error. Please check for syntax errors or array index out of bounds. It is recommended to debug the algorithm logic in a local Python environment first, then copy it in.',
- 'dashboard.indicator.guide.section8.q7': 'Q: Backtest shows 0 signals?',
- 'dashboard.indicator.guide.section8.a7': "A: Please check the data type of df['open_long']/df['close_long']/df['open_short']/df['close_short']. They should be boolean (True/False), not numeric. Use condition.fillna(False).astype(bool) to ensure correct type.",
- 'dashboard.indicator.backtest.commissionHint': 'Charged on notional value (incl. leverage) per trade; both entry & exit are deducted from balance.',
- 'dashboard.indicator.backtest.historyTitle': 'Backtest History',
- 'dashboard.indicator.backtest.historyRefresh': 'Refresh',
- 'dashboard.indicator.backtest.historyView': 'View',
- 'dashboard.indicator.backtest.historyNoData': 'No backtest history',
- 'dashboard.indicator.backtest.historyUseCurrent': 'Only current symbol/timeframe',
- 'dashboard.indicator.backtest.historyFilterSymbol': 'Symbol',
- 'dashboard.indicator.backtest.historyFilterTimeframe': 'Timeframe',
- 'dashboard.indicator.backtest.historyApply': 'Apply filters',
- 'dashboard.indicator.backtest.historyAIAnalyze': 'AI Analyze',
- 'dashboard.indicator.backtest.historyAIAnalyzeTitle': 'AI Suggestions',
- 'dashboard.indicator.backtest.historyNoAIResult': 'No AI analysis result',
- 'dashboard.indicator.backtest.historyRunId': 'Run ID',
- 'dashboard.indicator.backtest.historyCreatedAt': 'Time',
- 'dashboard.indicator.backtest.historyRange': 'Range',
- 'dashboard.indicator.backtest.historyStatus': 'Status',
- 'dashboard.indicator.backtest.historyStatusSuccess': 'Success',
- 'dashboard.indicator.backtest.historyStatusFailed': 'Failed',
- 'dashboard.indicator.backtest.historyActions': 'Actions',
- 'trading-assistant.exchange.ipWhitelistTip': 'Please add the following IPs to the whitelist in your exchange API settings:',
- 'signal-robot.title': 'Signal Robot Console',
- 'signal-robot.createBot': 'Create New Bot',
- 'signal-robot.search.nameOrSymbol': 'Name/Symbol',
- 'signal-robot.search.placeholder': 'Search bot name or symbol',
- 'signal-robot.search.status': 'Status',
- 'signal-robot.search.statusAll': 'All',
- 'signal-robot.search.statusRunning': 'Running',
- 'signal-robot.search.statusPaused': 'Paused',
- 'signal-robot.search.query': 'Query',
- 'signal-robot.search.reset': 'Reset',
- 'signal-robot.table.botName': 'Bot Name',
- 'signal-robot.table.symbolTimeframe': 'Symbol/Timeframe',
- 'signal-robot.table.triggerStrategy': 'Trigger Strategy',
- 'signal-robot.table.notificationChannels': 'Notification Channels',
- 'signal-robot.table.status': 'Status',
- 'signal-robot.table.action': 'Action',
- 'signal-robot.table.triggerConditions': '{count} trigger conditions',
- 'signal-robot.table.monitoring': 'Monitoring',
- 'signal-robot.table.paused': 'Paused',
- 'signal-robot.table.edit': 'Edit',
- 'signal-robot.table.pause': 'Pause',
- 'signal-robot.table.start': 'Start',
- 'signal-robot.table.delete': 'Delete',
- 'signal-robot.table.deleteConfirm': 'Are you sure you want to delete this bot?',
- 'signal-robot.table.deleteSuccess': 'Deleted successfully',
- 'signal-robot.table.startSuccess': 'Bot started',
- 'signal-robot.table.pauseSuccess': 'Bot paused',
- 'signal-robot.channel.telegram': 'Telegram',
- 'signal-robot.channel.discord': 'Discord',
- 'signal-robot.channel.email': 'Email',
- 'signal-robot.channel.webhook': 'Webhook',
- 'signal-robot.channel.browser': 'Browser Push',
- 'signal-robot.modal.createTitle': 'Create New Signal Robot',
- 'signal-robot.modal.editTitle': 'Edit Signal Robot',
- 'signal-robot.modal.step.basic': 'Basic Settings',
- 'signal-robot.modal.step.entry': 'Entry Strategy',
- 'signal-robot.modal.step.position': 'Position Management',
- 'signal-robot.modal.step.risk': 'Risk Control',
- 'signal-robot.modal.step.notify': 'Notification Config',
- 'signal-robot.modal.prev': 'Previous',
- 'signal-robot.modal.next': 'Next',
- 'signal-robot.modal.preview': 'Preview Backtest',
- 'signal-robot.modal.complete': 'Complete & Run',
- 'signal-robot.modal.saveSuccess': 'Saved successfully',
- 'signal-robot.modal.previewDeveloping': 'Preview feature is under development...',
- 'signal-robot.modal.basicInfoRequired': 'Please complete basic information',
- 'signal-robot.basic.alert': 'Set basic information for the bot',
- 'signal-robot.basic.title': 'Basic Information',
- 'signal-robot.basic.botName': 'Bot Name',
- 'signal-robot.basic.botNamePlaceholder': 'e.g.: BTC SuperTrend Strategy',
- 'signal-robot.basic.symbol': 'Trading Pair',
- 'signal-robot.basic.symbolPlaceholder': 'Select from watchlist',
- 'signal-robot.basic.noWatchlist': 'No watchlist items, please add in market page first',
- 'signal-robot.basic.timeframe': 'K-Line Period',
- 'signal-robot.basic.timeframe15m': '15 Minutes',
- 'signal-robot.basic.timeframe30m': '30 Minutes',
- 'signal-robot.basic.timeframe1h': '1 Hour',
- 'signal-robot.basic.timeframe4h': '4 Hours',
- 'signal-robot.basic.timeframe1d': '1 Day',
- 'signal-robot.basic.autoNameSuggestion': '{symbol} Signal Robot',
- 'signal-robot.entry.alert': 'Trigger entry signal when all conditions below are met',
- 'signal-robot.entry.condition': 'Condition {index}',
- 'signal-robot.entry.indicator': 'Indicator',
- 'signal-robot.entry.indicatorSupertrend': 'SuperTrend',
- 'signal-robot.entry.indicatorEma': 'EMA (Exponential Moving Average)',
- 'signal-robot.entry.indicatorRsi': 'RSI (Relative Strength Index)',
- 'signal-robot.entry.indicatorMacd': 'MACD',
- 'signal-robot.entry.indicatorBollinger': 'Bollinger Bands',
- 'signal-robot.entry.atrPeriod': 'ATR Period',
- 'signal-robot.entry.multiplier': 'Multiplier',
- 'signal-robot.entry.triggerSignal': 'Trigger Signal',
- 'signal-robot.entry.signalTrendBullish': 'Trend Bullish',
- 'signal-robot.entry.signalTrendBearish': 'Trend Bearish',
- 'signal-robot.entry.signalIsUptrend': 'Is Uptrend',
- 'signal-robot.entry.signalIsDowntrend': 'Is Downtrend',
- 'signal-robot.entry.period': 'Period',
- 'signal-robot.entry.compareCondition': 'Compare Condition',
- 'signal-robot.entry.priceAbove': 'Price > EMA (Price Above)',
- 'signal-robot.entry.priceBelow': 'Price < EMA (Price Below)',
- 'signal-robot.entry.crossUp': 'Price Crosses Above EMA (Golden Cross)',
- 'signal-robot.entry.crossDown': 'Price Crosses Below EMA (Death Cross)',
- 'signal-robot.entry.compare': 'Compare',
- 'signal-robot.entry.greaterThan': 'Greater Than',
- 'signal-robot.entry.lessThan': 'Less Than',
- 'signal-robot.entry.crossUpShort': 'Cross Up',
- 'signal-robot.entry.crossDownShort': 'Cross Down',
- 'signal-robot.entry.threshold': 'Threshold',
- 'signal-robot.entry.selectIndicator': 'Please select an indicator to configure parameters',
- 'signal-robot.entry.addCondition': 'Add Condition',
- 'signal-robot.position.alert': 'Configure initial position size, leverage and pyramiding rules',
- 'signal-robot.position.basicTitle': 'Basic Position Management',
- 'signal-robot.position.initialSize': 'Initial Size (Capital %)',
- 'signal-robot.position.initialSizeHint': 'Recommended 5% - 20%',
- 'signal-robot.position.leverage': 'Leverage',
- 'signal-robot.position.leverageHint': 'Please ensure your exchange account supports this leverage',
- 'signal-robot.position.maxPyramiding': 'Max Pyramiding Times',
- 'signal-robot.position.maxPyramidingHint': '0 means no pyramiding',
- 'signal-robot.position.pyramidingTitle': 'Pyramiding Rules',
- 'signal-robot.position.pyramidingEnabled': 'Enabled',
- 'signal-robot.position.pyramidingDisabled': 'Disabled',
- 'signal-robot.position.pyramidingCondition': 'Pyramiding Trigger Condition',
- 'signal-robot.position.priceRisePct': 'Price Rises (Long) / Falls (Short)',
- 'signal-robot.position.profitPct': 'Profit Reaches',
- 'signal-robot.position.triggerThreshold': 'Trigger Threshold (%)',
- 'signal-robot.position.triggerThresholdHint': 'e.g. 3%: add position once every 3% rise',
- 'signal-robot.position.addSize': 'Single Add Size (Capital %)',
- 'signal-robot.position.pyramidingDisabledHint': 'Pyramiding disabled, only initial position will be executed',
- 'signal-robot.risk.alert': 'Configure take profit, stop loss and exit rules',
- 'signal-robot.risk.stopLossTitle': 'Stop Loss',
- 'signal-robot.risk.stopLossEnabled': 'Enabled',
- 'signal-robot.risk.stopLossDisabled': 'Disabled',
- 'signal-robot.risk.stopLossType': 'Stop Loss Type',
- 'signal-robot.risk.stopLossFixedPct': 'Fixed Percentage',
- 'signal-robot.risk.stopLossAtrMultiplier': 'ATR Multiplier',
- 'signal-robot.risk.stopLossValue': 'Value',
- 'signal-robot.risk.stopLossFixedHint': 'e.g. 2%: stop loss when loss reaches 2%',
- 'signal-robot.risk.stopLossAtrHint': 'e.g. 2.0: stop loss when price touches ATR*2.0',
- 'signal-robot.risk.stopLossDisabledHint': 'Stop loss disabled (high risk)',
- 'signal-robot.risk.trailingStopTitle': 'Trailing Stop',
- 'signal-robot.risk.activationProfit': 'Activation Profit (%)',
- 'signal-robot.risk.activationProfitHint': 'Start trailing when profit reaches this level',
- 'signal-robot.risk.callbackPct': 'Callback (%)',
- 'signal-robot.risk.callbackPctHint': 'Trigger take profit when price falls from peak by this percentage',
- 'signal-robot.risk.trailingStopDisabledHint': 'Trailing stop disabled',
- 'signal-robot.risk.otherExitTitle': 'Other Exit Rules',
- 'signal-robot.risk.signalExit': 'Allow Signal Exit',
- 'signal-robot.risk.signalExitHint': 'Close position immediately when reverse signal appears (e.g. close long when short signal appears)',
- 'signal-robot.notify.alert': 'Configure notification methods when signal is triggered',
- 'signal-robot.notify.channelTitle': 'Notification Channels',
- 'signal-robot.notify.discordWebhook': 'Discord Webhook',
- 'signal-robot.notify.genericWebhook': 'Generic Webhook',
- 'signal-robot.notify.webhookUrl': 'Webhook URL',
- 'signal-robot.notify.webhookUrlPlaceholder': 'https://example.com/webhook',
- 'signal-robot.notify.discordUrl': 'Discord URL',
- 'signal-robot.notify.discordUrlPlaceholder': 'https://discord.com/api/webhooks/...',
- 'signal-robot.operator.greaterThan': 'Greater Than',
- 'signal-robot.operator.lessThan': 'Less Than',
- 'signal-robot.operator.equal': 'Equal',
- 'signal-robot.operator.goldenCross': 'Golden Cross',
- 'signal-robot.operator.deathCross': 'Death Cross',
- 'signal-robot.operator.increaseBy': 'Increase By',
- 'signal-robot.operator.decreaseBy': 'Decrease By',
- 'signal-robot.indicator.price': 'Price',
- 'signal-robot.indicator.rsi': 'RSI',
- 'signal-robot.indicator.kdjK': 'KDJ(K)',
- 'signal-robot.indicator.kdjJ': 'KDJ(J)',
- 'signal-robot.indicator.macd': 'MACD',
- 'signal-robot.indicator.macdHist': 'MACD Histogram',
- 'signal-robot.indicator.bollingerUp': 'Bollinger Upper',
- 'signal-robot.indicator.bollingerLow': 'Bollinger Lower',
- 'signal-robot.indicator.volume': 'Volume',
- 'signal-robot.indicator.changePct1h': '1H Change %',
- 'signal-robot.indicator.changePct24h': '24H Change %',
- 'signal-robot.indicator.signalLine': 'Signal Line',
-
- // Settings (Memory/Reflection)
- 'settings.group.agent_memory': '๋ฉ๋ชจ๋ฆฌ/๋ฆฌํ๋ ์
์ค์ ',
- 'settings.group.reflection_worker': '์๋ ๋ฆฌํ๋ ์
๊ฒ์ฆ ์์ปค',
- 'settings.field.ENABLE_AGENT_MEMORY': '์์ด์ ํธ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ',
- 'settings.field.AGENT_MEMORY_ENABLE_VECTOR': '๋ฒกํฐ ๊ฒ์ ์ฌ์ฉ(๋ก์ปฌ)',
- 'settings.field.AGENT_MEMORY_EMBEDDING_DIM': '์๋ฒ ๋ฉ ์ฐจ์',
- 'settings.field.AGENT_MEMORY_TOP_K': 'Top-K ์กฐํ ๊ฐ์',
- 'settings.field.AGENT_MEMORY_CANDIDATE_LIMIT': 'ํ๋ณด ์๋์ฐ ํฌ๊ธฐ',
- 'settings.field.AGENT_MEMORY_HALF_LIFE_DAYS': '์๊ฐ ๊ฐ์ ๋ฐ๊ฐ๊ธฐ(์ผ)',
- 'settings.field.AGENT_MEMORY_W_SIM': '์ ์ฌ๋ ๊ฐ์ค์น',
- 'settings.field.AGENT_MEMORY_W_RECENCY': '์๊ฐ ๊ฐ์ค์น',
- 'settings.field.AGENT_MEMORY_W_RETURNS': '์์ต ๊ฐ์ค์น',
- 'settings.field.ENABLE_REFLECTION_WORKER': '์๋ ๊ฒ์ฆ ์ฌ์ฉ',
- 'settings.field.REFLECTION_WORKER_INTERVAL_SEC': '๊ฒ์ฆ ์ฃผ๊ธฐ(์ด)',
-
- // Profile - Notification Settings (์๋ฆผ ์ค์ )
- 'profile.notifications.title': '์๋ฆผ ์ค์ ',
- 'profile.notifications.hint': '๊ธฐ๋ณธ ์๋ฆผ ๋ฐฉ๋ฒ์ ์ค์ ํ์ธ์. ์์ฐ ๋ชจ๋ํฐ๋ง ๋ฐ ์๋ฆผ ์์ฑ ์ ์๋์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค',
- 'profile.notifications.defaultChannels': '๊ธฐ๋ณธ ์๋ฆผ ์ฑ๋',
- 'profile.notifications.browser': '์ฑ ๋ด ์๋ฆผ',
- 'profile.notifications.email': '์ด๋ฉ์ผ',
- 'profile.notifications.phone': 'SMS',
- 'profile.notifications.telegramBotToken': 'Telegram Bot Token',
- 'profile.notifications.telegramBotTokenPlaceholder': 'Telegram Bot Token์ ์
๋ ฅํ์ธ์',
- 'profile.notifications.telegramBotTokenHint': '@BotFather์์ ๋ด์ ๋ง๋ค์ด Token์ ๋ฐ์ผ์ธ์',
- 'profile.notifications.telegramChatId': 'Telegram Chat ID',
- 'profile.notifications.telegramPlaceholder': 'Telegram Chat ID๋ฅผ ์
๋ ฅํ์ธ์ (์: 123456789)',
- 'profile.notifications.telegramHint': '@userinfobot์ /start๋ฅผ ๋ณด๋ด Chat ID๋ฅผ ๋ฐ์ผ์ธ์',
- 'profile.notifications.notifyEmail': '์๋ฆผ ์ด๋ฉ์ผ',
- 'profile.notifications.emailPlaceholder': '์๋ฆผ์ ๋ฐ์ ์ด๋ฉ์ผ ์ฃผ์',
- 'profile.notifications.emailHint': '๊ธฐ๋ณธ๊ฐ์ ๊ณ์ ์ด๋ฉ์ผ์ด๋ฉฐ ๋ค๋ฅธ ์ด๋ฉ์ผ๋ ์ค์ ๊ฐ๋ฅ',
- 'profile.notifications.phonePlaceholder': '์ ํ๋ฒํธ๋ฅผ ์
๋ ฅํ์ธ์ (์: +821012345678)',
- 'profile.notifications.phoneHint': '๊ด๋ฆฌ์๊ฐ Twilio ์๋น์ค๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค',
- 'profile.notifications.discordWebhook': 'Discord Webhook',
- 'profile.notifications.discordPlaceholder': 'https://discord.com/api/webhooks/...',
- 'profile.notifications.discordHint': 'Discord ์๋ฒ ์ค์ ์์ Webhook์ ์์ฑํ์ธ์',
- 'profile.notifications.webhookUrl': 'Webhook URL',
- 'profile.notifications.webhookPlaceholder': 'https://your-server.com/webhook',
- 'profile.notifications.webhookHint': '์ปค์คํ
Webhook URL, POST JSON์ผ๋ก ์๋ฆผ ์ ์ก',
- 'profile.notifications.webhookToken': 'Webhook Token (์ ํ)',
- 'profile.notifications.webhookTokenPlaceholder': '์์ฒญ ์ธ์ฆ์ฉ Bearer Token',
- 'profile.notifications.webhookTokenHint': 'Authorization: Bearer Token์ผ๋ก Webhook์ ์ ์ก',
- 'profile.notifications.testBtn': 'ํ
์คํธ ์๋ฆผ ๋ณด๋ด๊ธฐ',
- 'profile.notifications.saveSuccess': '์๋ฆผ ์ค์ ์ด ์ ์ฅ๋์์ต๋๋ค',
- 'profile.notifications.selectChannel': '์ต์ ํ๋์ ์๋ฆผ ์ฑ๋์ ์ ํํ์ธ์',
- 'profile.notifications.fillTelegramToken': 'Telegram Bot Token์ ์
๋ ฅํ์ธ์',
- 'profile.notifications.fillTelegram': 'Telegram Chat ID๋ฅผ ์
๋ ฅํ์ธ์',
- 'profile.notifications.fillEmail': '์๋ฆผ ์ด๋ฉ์ผ์ ์
๋ ฅํ์ธ์',
- 'profile.notifications.testSent': 'ํ
์คํธ ์๋ฆผ์ด ์ ์ก๋์์ต๋๋ค. ์๋ฆผ ์ฑ๋์ ํ์ธํ์ธ์'
-}
-
-export default {
- ...components,
- ...locale
-}
diff --git a/quantdinger_vue/src/locales/lang/th-TH.js b/quantdinger_vue/src/locales/lang/th-TH.js
deleted file mode 100644
index c1200b9..0000000
--- a/quantdinger_vue/src/locales/lang/th-TH.js
+++ /dev/null
@@ -1,1823 +0,0 @@
-import antdThTH from 'ant-design-vue/es/locale-provider/th_TH'
-import momentTH from 'moment/locale/th'
-
-const components = {
- antLocale: antdThTH,
- momentName: 'th',
- momentLocale: momentTH
-}
-
-const locale = {
- 'submit': 'เธชเนเธ',
- 'save': 'เธเธฑเธเธเธถเธ',
- 'submit.ok': 'เธชเนเธเธชเธณเนเธฃเนเธ',
- 'save.ok': 'เธเธฑเธเธเธถเธเนเธฃเธตเธขเธเธฃเนเธญเธขเนเธฅเนเธง',
- 'menu.welcome': 'เธขเธดเธเธเธตเธเนเธญเธเธฃเธฑเธ',
- 'menu.home': 'เธซเธเนเธฒเนเธฃเธ',
- 'menu.dashboard': 'เนเธเธเธเธญเธฃเนเธ',
- 'menu.dashboard.indicator': 'เธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเธฑเธงเธเนเธเธเธตเน',
- 'menu.dashboard.community': 'เธเธธเธกเธเธเธเธฑเธงเธเนเธเธเธตเน',
- 'menu.dashboard.analysis': 'เธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเนเธญเนเธญ',
- 'menu.dashboard.tradingAssistant': 'เธเธนเนเธเนเธงเธขเธเธฒเธฃเธเธทเนเธญเธเธฒเธข',
- 'menu.dashboard.aiTradingAssistant': 'เธเธนเนเธเนเธงเธขเธเธฒเธฃเธเธทเนเธญเธเธฒเธข AI',
- 'menu.dashboard.signalRobot': 'เธซเธธเนเธเธขเธเธเนเธชเธฑเธเธเธฒเธ',
- 'menu.dashboard.monitor': 'เธซเธเนเธฒเธเธดเธเธเธฒเธก',
- 'menu.dashboard.workplace': 'เนเธเนเธฐเธเธณเธเธฒเธ',
- 'menu.form': 'เธซเธเนเธฒเนเธเธเธเธญเธฃเนเธก',
- 'menu.form.basic-form': 'เนเธเธเธเธญเธฃเนเธกเธเธทเนเธเธเธฒเธ',
- 'menu.form.step-form': 'เนเธเธเธเธญเธฃเนเธกเธเธตเธฅเธฐเธเธฑเนเธเธเธญเธ',
- 'menu.form.step-form.info': 'เนเธเธเธเธญเธฃเนเธกเธเธตเธฅเธฐเธเธฑเนเธเธเธญเธ (เธเธฃเธญเธเธเนเธญเธกเธนเธฅเธเธฒเธฃเนเธญเธ)',
- 'menu.form.step-form.confirm': 'เนเธเธเธเธญเธฃเนเธกเธเธตเธฅเธฐเธเธฑเนเธเธเธญเธ (เธขเธทเธเธขเธฑเธเธเนเธญเธกเธนเธฅเธเธฒเธฃเนเธญเธ)',
- 'menu.form.step-form.result': 'เนเธเธเธเธญเธฃเนเธกเธเธตเธฅเธฐเธเธฑเนเธเธเธญเธ (เธชเธกเธเธนเธฃเธเน)',
- 'menu.form.advanced-form': 'เนเธเธเธเธญเธฃเนเธกเธเธฑเนเธเธชเธนเธ',
- 'menu.list': 'เธซเธเนเธฒเธฃเธฒเธขเธเธฒเธฃ',
- 'menu.list.table-list': 'เนเธเธเธเธญเธฃเนเธกเธชเธญเธเธเธฒเธก',
- 'menu.list.basic-list': 'เธฃเธฒเธขเธเธฒเธฃเธกเธฒเธเธฃเธเธฒเธ',
- 'menu.list.card-list': 'เธฃเธฒเธขเธเธฒเธฃเธเธฒเธฃเนเธ',
- 'menu.list.search-list': 'เธฃเธฒเธขเธเธฒเธฃเธเนเธเธซเธฒ',
- 'menu.list.search-list.articles': 'เธฃเธฒเธขเธเธฒเธฃเธเนเธเธซเธฒ (เธเธเธเธงเธฒเธก)',
- 'menu.list.search-list.projects': 'เธฃเธฒเธขเธเธฒเธฃเธเนเธเธซเธฒ (เนเธเธฃเธเธเธฒเธฃ)',
- 'menu.list.search-list.applications': 'เธฃเธฒเธขเธเธฒเธฃเธเนเธเธซเธฒ (เนเธญเธ)',
- 'menu.profile': 'เธซเธเนเธฒเธฃเธฒเธขเธฅเธฐเนเธญเธตเธขเธ',
- 'menu.profile.basic': 'เธซเธเนเธฒเธฃเธฒเธขเธฅเธฐเนเธญเธตเธขเธเนเธเธทเนเธญเธเธเนเธ',
- 'menu.profile.advanced': 'เธซเธเนเธฒเธฃเธฒเธขเธฅเธฐเนเธญเธตเธขเธเธเธฑเนเธเธชเธนเธ',
- 'menu.result': 'เธซเธเนเธฒเธเธฅเธฅเธฑเธเธเน',
- 'menu.result.success': 'เธซเธเนเธฒเธเธงเธฒเธกเธชเธณเนเธฃเนเธ',
- 'menu.result.fail': 'เธซเธเนเธฒเธเธงเธฒเธกเธฅเนเธกเนเธซเธฅเธง',
- 'menu.exception': 'เธซเธเนเธฒเธเนเธญเธขเธเนเธงเนเธ',
- 'menu.exception.not-permission': '403',
- 'menu.exception.not-find': '404',
- 'menu.exception.server-error': '500',
- 'menu.exception.trigger': 'เธเนเธญเธเธดเธเธเธฅเธฒเธเธเธญเธเธเธฃเธดเธเนเธเธญเธฃเน',
- 'menu.account': 'เธซเธเนเธฒเธชเนเธงเธเธเธฑเธง',
- 'menu.account.center': 'เธจเธนเธเธขเนเธชเนเธงเธเธเธธเธเธเธฅ',
- 'menu.account.settings': 'เธเธฒเธฃเธเธฑเนเธเธเนเธฒเธชเนเธงเธเธเธธเธเธเธฅ',
- 'menu.account.trigger': 'เธเนเธญเธเธดเธเธเธฅเธฒเธเธเธญเธเธเธฃเธดเธเนเธเธญเธฃเน',
- 'menu.account.logout': 'เธญเธญเธเธเธฒเธเธฃเธฐเธเธ',
- 'menu.wallet': 'เธเธฃเธฐเนเธเนเธฒเนเธเธดเธเธเธญเธเธเธฑเธ',
- 'menu.docs': 'เธจเธนเธเธขเนเนเธญเธเธชเธฒเธฃ',
- 'menu.docs.detail': 'เธฃเธฒเธขเธฅเธฐเนเธญเธตเธขเธเนเธญเธเธชเธฒเธฃ',
- 'menu.header.refreshPage': 'เธฃเธตเนเธเธฃเธเธซเธเนเธฒ',
- 'menu.invite.friends': 'เธเธงเธเนเธเธทเนเธญเธ',
- 'app.setting.pagestyle': 'เธเธฒเธฃเธเธฑเนเธเธเนเธฒเธชเนเธเธฅเนเนเธเธขเธฃเธงเธก',
- 'app.setting.pagestyle.light': 'เนเธกเธเธนเธชเนเธเธฅเนเธชเธเนเธช',
- 'app.setting.pagestyle.dark': 'เธชเนเธเธฅเนเนเธกเธเธนเธชเธตเนเธเนเธก',
- 'app.setting.pagestyle.realdark': 'เนเธซเธกเธเธกเธทเธ',
- 'app.setting.themecolor': 'เธชเธตเธเธญเธเธเธตเธก',
- 'app.setting.navigationmode': 'เนเธซเธกเธเธเธฒเธฃเธเธณเธเธฒเธ',
- 'app.setting.sidemenu.nav': 'เธเธฒเธฃเธเธณเธเธฒเธเนเธเธเธเนเธฒเธเธเนเธฒเธ',
- 'app.setting.topmenu.nav': 'เธเธฒเธฃเธเธณเธเธฒเธเนเธเธเธเนเธฒเธเธเธ',
- 'app.setting.content-width': 'เธเธงเธฒเธกเธเธงเนเธฒเธเธเธญเธเธเธทเนเธเธเธตเนเนเธเธทเนเธญเธซเธฒ',
- 'app.setting.content-width.tooltip': 'เธเธฒเธฃเธเธฑเนเธเธเนเธฒเธเธตเนเธเธฐเธกเธตเธเธฅเนเธเธเธฒเธฐเนเธกเธทเนเธญ [เธเธฒเธฃเธเธณเธเธฒเธเนเธเธเธเนเธฒเธเธเธ]',
- 'app.setting.content-width.fixed': 'เธเธตเนเธเธฒเธขเธเธฑเธง',
- 'app.setting.content-width.fluid': 'เธชเธเธฃเธตเธกเธกเธดเนเธ',
- 'app.setting.fixedheader': 'เธชเนเธงเธเธซเธฑเธงเธเธเธเธตเน',
- 'app.setting.fixedheader.tooltip': 'เธเธณเธซเธเธเธเนเธฒเนเธเนเนเธกเธทเนเธญเนเธเนเนเธเธชเนเธงเธเธซเธฑเธง',
- 'app.setting.autoHideHeader': 'เธเนเธญเธเธชเนเธงเธเธซเธฑเธงเนเธกเธทเนเธญเนเธฅเธทเนเธญเธ',
- 'app.setting.fixedsidebar': 'เนเธกเธเธนเธเนเธฒเธเธเนเธฒเธเธเธเธเธตเน',
- 'app.setting.sidemenu': 'เนเธเนเธฒเนเธเธฃเธเนเธกเธเธนเธเนเธฒเธเธเนเธฒเธ',
- 'app.setting.topmenu': 'เนเธเนเธฒเนเธเธฃเธเนเธกเธเธนเธเนเธฒเธเธเธ',
- 'app.setting.othersettings': 'เธเธฒเธฃเธเธฑเนเธเธเนเธฒเธญเธทเนเธเน',
- 'app.setting.weakmode': 'เนเธซเธกเธเธเธงเธฒเธกเธญเนเธญเธเนเธญเธเธญเธเธชเธต',
- 'app.setting.multitab': 'เนเธซเธกเธเธซเธฅเธฒเธขเนเธเนเธ',
- 'app.setting.copy': 'เธเธฒเธฃเธเธฑเนเธเธเนเธฒเธเธฒเธฃเธเธณเธชเธณเนเธเธฒ',
- 'app.setting.loading': 'เธเธณเธฅเธฑเธเนเธซเธฅเธเธเธตเธก',
- 'app.setting.copyinfo': 'เธเธฑเธเธฅเธญเธเธเธฒเธฃเธเธฑเนเธเธเนเธฒเธชเธณเนเธฃเนเธ src/config/defaultSettings.js',
- 'app.setting.copy.success': 'เธเธฑเธเธฅเธญเธเนเธชเธฃเนเธเนเธฅเนเธง',
- 'app.setting.copy.fail': 'เธเธฒเธฃเธเธฑเธเธฅเธญเธเธฅเนเธกเนเธซเธฅเธง',
- 'app.setting.theme.switching': 'เนเธเธฅเธตเนเธขเธเธเธตเธก!',
- 'app.setting.production.hint': 'เนเธเธเธเธฒเธฃเธเธณเธซเธเธเธเนเธฒเนเธเนเธชเธณเธซเธฃเธฑเธเธเธฒเธฃเธเธนเธเธฑเธงเธญเธขเนเธฒเธเนเธเธชเธ เธฒเธเนเธงเธเธฅเนเธญเธกเธเธฒเธฃเธเธฑเธเธเธฒเนเธเนเธฒเธเธฑเนเธ เนเธฅเธฐเธเธฐเนเธกเนเนเธชเธเธเนเธเธชเธ เธฒเธเนเธงเธเธฅเนเธญเธกเธเธฒเธฃเนเธเนเธเธฒเธเธเธฃเธดเธ เนเธเธฃเธเธเธฑเธเธฅเธญเธเนเธฅเธฐเนเธเนเนเธเนเธเธฅเนเธเธฒเธฃเธเธณเธซเธเธเธเนเธฒเธเนเธงเธขเธเธเนเธญเธ',
- 'app.setting.themecolor.daybreak': 'เธฃเธธเนเธเธญเธฃเธธเธเธชเธตเธเนเธฒ (เธเนเธฒเนเธฃเธดเนเธกเธเนเธ)',
- 'app.setting.themecolor.dust': 'เธเธฅเธเธเนเธณ',
- 'app.setting.themecolor.volcano': 'เธ เธนเนเธเธฒเนเธ',
- 'app.setting.themecolor.sunset': 'เธเธฃเธฐเธญเธฒเธเธดเธเธขเนเธเธ',
- 'app.setting.themecolor.cyan': 'เธซเธกเธดเธเธเธดเธ',
- 'app.setting.themecolor.green': 'เธญเธญเนเธฃเธฃเนเธฒเธชเธตเนเธเธตเธขเธง',
- 'app.setting.themecolor.geekblue': 'เนเธเธดเธเธเธฃเธฃเธขเธฒเธขเธชเธตเธเนเธฒ',
- 'app.setting.themecolor.purple': 'เนเธเธตเธขเธเธเธต',
- 'app.setting.tooltip': 'เธเธฒเธฃเธเธฑเนเธเธเนเธฒเธซเธเนเธฒ',
- 'user.login.userName': 'เธเธทเนเธญเธเธนเนเนเธเน',
- 'user.login.password': 'เธฃเธซเธฑเธชเธเนเธฒเธ',
- 'user.login.username.placeholder': 'เธเธฑเธเธเธต: เธเธนเนเธเธนเนเธฅเธฃเธฐเธเธ',
- 'user.login.password.placeholder': 'เธฃเธซเธฑเธชเธเนเธฒเธ: admin เธซเธฃเธทเธญ ant.design',
- 'user.login.message-invalid-credentials': 'เธเธฒเธฃเนเธเนเธฒเธชเธนเนเธฃเธฐเธเธเธฅเนเธกเนเธซเธฅเธง เนเธเธฃเธเธเธฃเธงเธเธชเธญเธเธญเธตเนเธกเธฅเนเธฅเธฐเธฃเธซเธฑเธชเธขเธทเธเธขเธฑเธเธเธญเธเธเธธเธ',
- 'user.login.message-invalid-verification-code': 'เธฃเธซเธฑเธชเธขเธทเธเธขเธฑเธเธเธดเธเธเธฅเธฒเธ',
- 'user.login.tab-login-credentials': 'เนเธเนเธฒเธชเธนเนเธฃเธฐเธเธเธฃเธซเธฑเธชเธเนเธฒเธเธเธฑเธเธเธต',
- 'user.login.tab-login-email': 'เนเธเนเธฒเธชเธนเนเธฃเธฐเธเธเธญเธตเนเธกเธฅ',
- 'user.login.tab-login-mobile': 'เนเธเนเธฒเธชเธนเนเธฃเธฐเธเธเธซเธกเธฒเธขเนเธฅเธเนเธเธฃเธจเธฑเธเธเนเธกเธทเธญเธเธทเธญ',
- 'user.login.captcha.placeholder': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธฃเธซเธฑเธชเธขเธทเธเธขเธฑเธเธเธฃเธฒเธเธดเธ',
- 'user.login.mobile.placeholder': 'เธซเธกเธฒเธขเนเธฅเธเนเธเธฃเธจเธฑเธเธเน',
- 'user.login.mobile.verification-code.placeholder': 'เธฃเธซเธฑเธชเธขเธทเธเธขเธฑเธ',
- 'user.login.email.placeholder': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธตเนเธญเธขเธนเนเธญเธตเนเธกเธฅเธเธญเธเธเธธเธ',
- 'user.login.email.verification-code.placeholder': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธฃเธซเธฑเธชเธขเธทเธเธขเธฑเธ',
- 'user.login.email.sending': 'เธเธณเธฅเธฑเธเธชเนเธเธฃเธซเธฑเธชเธขเธทเธเธขเธฑเธ...',
- 'user.login.email.send-success-title': 'เธเธณเนเธเน',
- 'user.login.email.send-success': 'เธชเนเธเธฃเธซเธฑเธชเธขเธทเธเธขเธฑเธเธชเธณเนเธฃเนเธเนเธฅเนเธง เนเธเธฃเธเธเธฃเธงเธเธชเธญเธเธญเธตเนเธกเธฅเธเธญเธเธเธธเธ',
- 'user.login.sms.send-success': 'เธชเนเธเธฃเธซเธฑเธชเธขเธทเธเธขเธฑเธเธชเธณเนเธฃเนเธเนเธฅเนเธง เนเธเธฃเธเธเธฃเธงเธเธชเธญเธเธเนเธญเธเธงเธฒเธก',
- 'user.login.remember-me': 'เนเธเนเธฒเธชเธนเนเธฃเธฐเธเธเธญเธฑเธเนเธเธกเธฑเธเธด',
- 'user.login.forgot-password': 'เธฅเธทเธกเธฃเธซเธฑเธชเธเนเธฒเธ',
- 'user.login.sign-in-with': 'เธงเธดเธเธตเธเธฒเธฃเนเธเนเธฒเธชเธนเนเธฃเธฐเธเธเธญเธทเนเธ เน',
- 'user.login.signup': 'เธฅเธเธเธฐเนเธเธตเธขเธเธเธฑเธเธเธต',
- 'user.login.login': 'เนเธเนเธฒเธชเธนเนเธฃเธฐเธเธ',
- 'user.register.register': 'เธฅเธเธเธฐเนเธเธตเธขเธ',
- 'user.register.email.placeholder': 'เธเธเธซเธกเธฒเธข',
- 'user.register.password.placeholder': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธญเธขเนเธฒเธเธเนเธญเธข 6 เธเธฑเธงเธญเธฑเธเธฉเธฃ เธเธฃเธธเธเธฒเธญเธขเนเธฒเนเธเนเธฃเธซเธฑเธชเธเนเธฒเธเธเธตเนเธเธฒเธเนเธเธฒเนเธเนเธเนเธฒเธข',
- 'user.register.password.popover-message': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธญเธขเนเธฒเธเธเนเธญเธข 6 เธเธฑเธงเธญเธฑเธเธฉเธฃ เธเธฃเธธเธเธฒเธญเธขเนเธฒเนเธเนเธฃเธซเธฑเธชเธเนเธฒเธเธเธตเนเธเธฒเธเนเธเธฒเนเธเนเธเนเธฒเธข',
- 'user.register.confirm-password.placeholder': 'เธขเธทเธเธขเธฑเธเธฃเธซเธฑเธชเธเนเธฒเธ',
- 'user.register.get-verification-code': 'เธฃเธฑเธเธฃเธซเธฑเธชเธขเธทเธเธขเธฑเธ',
- 'user.register.sign-in': 'เนเธเนเธฒเธชเธนเนเธฃเธฐเธเธเนเธเธขเนเธเนเธเธฑเธเธเธตเธเธตเนเธกเธตเธญเธขเธนเน',
- 'user.register-result.msg': 'เธเธฑเธเธเธตเธเธญเธเธเธธเธ: {email} เธเธฒเธฃเธฅเธเธเธฐเนเธเธตเธขเธเธชเธณเนเธฃเนเธ',
- 'user.register-result.activation-email': 'เธญเธตเนเธกเธฅเนเธเธดเธเนเธเนเธเธฒเธเนเธเนเธเธนเธเธชเนเธเนเธเธขเธฑเธเธเธฅเนเธญเธเธเธเธซเธกเธฒเธขเธเธญเธเธเธธเธเนเธฅเนเธง เนเธฅเธฐเธกเธตเธญเธฒเธขเธธ 24 เธเธฑเนเธงเนเธกเธ เนเธเธฃเธเนเธเนเธฒเธชเธนเนเธฃเธฐเธเธเธญเธตเนเธกเธฅเธเธญเธเธเธธเธเธเธฑเธเธเธตเนเธฅเธฐเธเธฅเธดเธเธฅเธดเธเธเนเนเธเธญเธตเนเธกเธฅเนเธเธทเนเธญเนเธเธดเธเนเธเนเธเธฒเธเธเธฑเธเธเธตเธเธญเธเธเธธเธ',
- 'user.register-result.back-home': 'เธเธฅเธฑเธเนเธเธเธตเนเธซเธเนเธฒเนเธฃเธ',
- 'user.register-result.view-mailbox': 'เธเธฃเธงเธเธชเธญเธเธเธฅเนเธญเธเธเธเธซเธกเธฒเธขเธเธญเธเธเธธเธ',
- 'user.email.required': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธตเนเธญเธขเธนเนเธญเธตเนเธกเธฅเธเธญเธเธเธธเธ!',
- 'user.email.wrong-format': 'เธฃเธนเธเนเธเธเธเธตเนเธญเธขเธนเนเธญเธตเนเธกเธฅเนเธกเนเธเธนเธเธเนเธญเธ!',
- 'user.userName.required': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธทเนเธญเธเธฑเธเธเธตเธซเธฃเธทเธญเธเธตเนเธญเธขเธนเนเธญเธตเนเธกเธฅเธเธญเธเธเธธเธ',
- 'user.password.required': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธฃเธซเธฑเธชเธเนเธฒเธเธเธญเธเธเธธเธ!',
- 'user.password.twice.msg': 'เธฃเธซเธฑเธชเธเนเธฒเธเธเธตเนเธเนเธญเธเธชเธญเธเธเธฃเธฑเนเธเนเธกเนเธเธฃเธเธเธฑเธ!',
- 'user.password.strength.msg': 'เธฃเธซเธฑเธชเธเนเธฒเธเนเธกเนเนเธเนเธเนเธเธฃเนเธเธเธญ',
- 'user.password.strength.strong': 'เธเธงเธฒเธกเนเธเนเธเนเธเธฃเนเธ: เนเธเนเธเนเธเธฃเนเธ',
- 'user.password.strength.medium': 'เธเธงเธฒเธกเนเธเนเธเนเธเธฃเนเธ: เธเธฒเธเธเธฅเธฒเธ',
- 'user.password.strength.low': 'เธเธงเธฒเธกเนเธฃเธ: เธเนเธณ',
- 'user.password.strength.short': 'เธเธงเธฒเธกเนเธฃเธ: เธชเธฑเนเธเนเธเธดเธเนเธ',
- 'user.confirm-password.required': 'เธเธฃเธธเธเธฒเธขเธทเธเธขเธฑเธเธฃเธซเธฑเธชเธเนเธฒเธเธเธญเธเธเธธเธ!',
- 'user.phone-number.required': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธซเธกเธฒเธขเนเธฅเธเนเธเธฃเธจเธฑเธเธเนเธกเธทเธญเธเธทเธญเธเธตเนเธเธนเธเธเนเธญเธ',
- 'user.phone-number.wrong-format': 'เธฃเธนเธเนเธเธเธซเธกเธฒเธขเนเธฅเธเนเธเธฃเธจเธฑเธเธเนเธกเธทเธญเธเธทเธญเธเธดเธ!',
- 'user.verification-code.required': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธฃเธซเธฑเธชเธขเธทเธเธขเธฑเธ!',
- 'user.captcha.required': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธฃเธซเธฑเธชเธขเธทเธเธขเธฑเธเธเธฃเธฒเธเธดเธ!',
- 'user.login.infos': 'QuantDinger เนเธเนเธเนเธเธฃเธทเนเธญเธเธกเธทเธญเนเธชเธฃเธดเธกเธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเธซเธธเนเธเนเธเธเธซเธฅเธฒเธขเธเธฑเธงเนเธเธเธเนเธงเธข AI เนเธฅเธฐเนเธกเนเธกเธตเธเธธเธเธชเธกเธเธฑเธเธดเนเธเธเธฒเธฃเนเธซเนเธเธณเธเธฃเธถเธเธฉเธฒเธเนเธฒเธเธเธฒเธฃเธฅเธเธเธธเธเนเธเธซเธฅเธฑเธเธเธฃเธฑเธเธขเนเธเธฅเธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเน เธเธฐเนเธเธ เนเธฅเธฐเธเธงเธฒเธกเธเธดเธเนเธซเนเธเธญเนเธฒเธเธญเธดเธเธเธฑเนเธเธซเธกเธเนเธเนเธเธฅเธเธเธญเธฃเนเธกเธเธนเธเธชเธฃเนเธฒเธเธเธถเนเธเนเธเธขเธญเธฑเธเนเธเธกเธฑเธเธดเนเธเธข AI เธเธฒเธกเธเนเธญเธกเธนเธฅเนเธเธญเธเธตเธ เนเธฅเธฐเนเธเนเนเธเธทเนเธญเธเธฒเธฃเนเธฃเธตเธขเธเธฃเธนเน เธเธฒเธฃเธงเธดเธเธฑเธข เนเธฅเธฐเธเธฒเธฃเนเธฅเธเนเธเธฅเธตเนเธขเธเธเธฒเธเนเธเธเธเธดเธเนเธเนเธฒเธเธฑเนเธ เนเธฅเธฐเนเธกเนเธเธทเธญเนเธเนเธเธเธณเนเธเธฐเธเธณเนเธเธเธฒเธฃเธฅเธเธเธธเธเธซเธฃเธทเธญเธเธทเนเธเธเธฒเธเธเธฒเธฃเธเธฑเธเธชเธดเธเนเธเนเธเนเธเธฒเธฃเธฅเธเธเธธเธเนเธเธซเธธเนเธเนเธเธตเนเธขเธงเธเนเธญเธเธเธฑเธเธเธงเธฒเธกเนเธชเธตเนเธขเธเธเนเธฒเธเน เนเธเนเธ เธเธงเธฒเธกเนเธชเธตเนเธขเธเธเนเธฒเธเธเธฅเธฒเธ เธเธงเธฒเธกเนเธชเธตเนเธขเธเธเนเธฒเธเธชเธ เธฒเธเธเธฅเนเธญเธ เธเธงเธฒเธกเนเธชเธตเนเธขเธเธเนเธฒเธเธเนเธขเธเธฒเธข เธฏเธฅเธฏ เธเธถเนเธเธญเธฒเธเธเธณเนเธเธชเธนเนเธเธฒเธฃเธชเธนเธเนเธชเธตเธขเนเธเธดเธเธเนเธเนเธเนเธเธนเนเนเธเนเธเธงเธฃเธเธฑเธเธชเธดเธเนเธเธญเธขเนเธฒเธเธญเธดเธชเธฃเธฐเนเธเธขเธเธดเธเธฒเธฃเธเธฒเธเธฒเธเธเธฒเธฃเธขเธญเธกเธฃเธฑเธเธเธงเธฒเธกเนเธชเธตเนเธขเธเธเธญเธเธเธเนเธญเธ เนเธฅเธฐเธเธคเธเธดเธเธฃเธฃเธกเธเธฒเธฃเธฅเธเธเธธเธเนเธฅเธฐเธเธฅเธเธตเนเธเธฒเธกเธกเธฒเธเธตเนเนเธเธดเธเธเธฒเธเธเธฒเธฃเนเธเนเนเธเธฃเธทเนเธญเธเธกเธทเธญเธเธตเนเธเธฐเธเนเธญเธเธเธเนเธเนเธเธ เธฒเธฃเธฐเธเธญเธเธเธนเนเนเธเนเธเธฅเธฒเธเธกเธตเธเธงเธฒเธกเนเธชเธตเนเธขเธเนเธฅเธฐเธเธฒเธฃเธฅเธเธเธธเธเธเนเธญเธเธฃเธฐเธกเธฑเธเธฃเธฐเธงเธฑเธ',
- 'user.login.tab-login-web3': 'เนเธเนเธฒเธชเธนเนเธฃเธฐเธเธ Web3',
- 'user.login.web3.tip': 'เนเธเนเธฒเธชเธนเนเธฃเธฐเธเธเนเธเธขเนเธเนเธเธฃเธฐเนเธเนเธฒเนเธเธดเธ',
- 'user.login.web3.connect': 'เนเธเธทเนเธญเธกเธเนเธญเธเธฃเธฐเนเธเนเธฒเนเธเธดเธเนเธฅเธฐเนเธเนเธฒเธชเธนเนเธฃเธฐเธเธ',
- 'user.login.web3.no-wallet': 'เธเธฃเธงเธเนเธกเนเธเธเธเธฃเธฐเนเธเนเธฒเนเธเธดเธ',
- 'user.login.web3.no-address': 'เนเธกเนเนเธเนเธฃเธฑเธเธเธตเนเธญเธขเธนเนเธเธฃเธฐเนเธเนเธฒเนเธเธดเธ',
- 'user.login.web3.nonce-failed': 'เนเธกเนเธชเธฒเธกเธฒเธฃเธเธฃเธฑเธเธซเธกเธฒเธขเนเธฅเธเธชเธธเนเธกเนเธเน',
- 'user.login.web3.verify-failed': 'เธเธฒเธฃเธเธฃเธงเธเธชเธญเธเธฅเธฒเธขเนเธเนเธเธฅเนเธกเนเธซเธฅเธง',
- 'user.login.web3.success': 'เนเธเนเธฒเธชเธนเนเธฃเธฐเธเธเธชเธณเนเธฃเนเธ',
- 'user.login.web3.failed': 'เธเธฒเธฃเนเธเนเธฒเธชเธนเนเธฃเธฐเธเธ Wallet เธฅเนเธกเนเธซเธฅเธง',
- 'nav.no_wallet': 'เธเธฃเธงเธเนเธกเนเธเธเธเธฃเธฐเนเธเนเธฒเนเธเธดเธ',
- 'nav.copy': 'เธชเธณเนเธเธฒ',
- 'nav.copy_success': 'เธเธฑเธเธฅเธญเธเนเธฃเธตเธขเธเธฃเนเธญเธขเนเธฅเนเธง',
- 'user.login.oauth.google': 'เธฅเธเธเธทเนเธญเนเธเนเธฒเนเธเนเธเธฒเธเธเนเธงเธข Google',
- 'user.login.oauth.github': 'เธฅเธเธเธทเนเธญเนเธเนเธฒเนเธเนเธเนเธงเธข GitHub',
- 'user.login.oauth.loading': 'เธเธณเธฅเธฑเธเนเธเธฅเธตเนเธขเธเนเธชเนเธเธเธฒเธเนเธเธขเธฑเธเธซเธเนเธฒเธเธฒเธฃเธญเธเธธเธเธฒเธ...',
- 'user.login.oauth.failed': 'เธเธฒเธฃเนเธเนเธฒเธชเธนเนเธฃเธฐเธเธ OAuth เธฅเนเธกเนเธซเธฅเธง',
- 'user.login.oauth.get-url-failed': 'เนเธกเนเธชเธฒเธกเธฒเธฃเธเธฃเธฑเธเธฅเธดเธเธเนเธเธฒเธฃเธญเธเธธเธเธฒเธเนเธเน',
- 'user.login.subtitle': 'เธเธฑเธเนเธเธฅเธทเนเธญเธเธเนเธญเธกเธนเธฅเนเธเธดเธเธฅเธถเธเนเธเธดเธเธเธฃเธดเธกเธฒเธเธชเธนเนเธเธฅเธฒเธเนเธฅเธ',
- 'user.login.legal.title': 'เธเนเธญเธชเธเธงเธเธชเธดเธเธเธดเนเธเธฒเธเธเธเธซเธกเธฒเธข',
- 'user.login.legal.view': 'เธเธนเธเนเธญเธเธณเธเธฑเธเธเธงเธฒเธกเธฃเธฑเธเธเธดเธเธเธญเธเธเธฒเธเธเธเธซเธกเธฒเธข',
- 'user.login.legal.collapse': 'เธขเธธเธเธเนเธญเธเธณเธเธฑเธเธเธงเธฒเธกเธฃเธฑเธเธเธดเธเธเธญเธเธเธฒเธเธเธเธซเธกเธฒเธข',
- 'user.login.legal.agree': 'เธเธฑเธเนเธเนเธญเนเธฒเธเนเธฅเธฐเธขเธญเธกเธฃเธฑเธเธเนเธญเธเธณเธเธฑเธเธเธงเธฒเธกเธฃเธฑเธเธเธดเธเธเธญเธเธเธฒเธเธเธเธซเธกเธฒเธข',
- 'user.login.legal.required': 'เนเธเธฃเธเธญเนเธฒเธเนเธฅเธฐเธเธฃเธงเธเธชเธญเธเธเนเธญเธเธณเธเธฑเธเธเธงเธฒเธกเธฃเธฑเธเธเธดเธเธเธญเธเธเธฒเธเธเธเธซเธกเธฒเธขเธเนเธญเธ',
- 'user.login.legal.content': 'QuantDinger เนเธเนเธเนเธเธฃเธทเนเธญเธเธกเธทเธญเนเธชเธฃเธดเธกเธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเธซเธธเนเธเนเธเธเธซเธฅเธฒเธขเธเธฑเธงเนเธเธเธเนเธงเธข AI เนเธฅเธฐเนเธกเนเธกเธตเธเธธเธเธชเธกเธเธฑเธเธดเนเธเธเธฒเธฃเนเธซเนเธเธณเธเธฃเธถเธเธฉเธฒเธเนเธฒเธเธเธฒเธฃเธฅเธเธเธธเธเนเธเธซเธฅเธฑเธเธเธฃเธฑเธเธขเนเธเธฅเธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเน เธเธฒเธฃเนเธซเนเธเธฐเนเธเธ เนเธฅเธฐเธเธงเธฒเธกเธเธดเธเนเธซเนเธเธญเนเธฒเธเธญเธดเธเธเธฑเนเธเธซเธกเธเนเธเนเธเธฅเธเธเธญเธฃเนเธกเธเธนเธเธชเธฃเนเธฒเธเธเธถเนเธเนเธเธขเธญเธฑเธเนเธเธกเธฑเธเธดเนเธเธข AI เธเธฒเธกเธเนเธญเธกเธนเธฅเนเธเธญเธเธตเธ เนเธฅเธฐเนเธเนเธชเธณเธซเธฃเธฑเธเธเธฒเธฃเนเธฃเธตเธขเธเธฃเธนเน เธเธฒเธฃเธงเธดเธเธฑเธข เนเธฅเธฐเธเธฒเธฃเนเธฅเธเนเธเธฅเธตเนเธขเธเธเธฒเธเนเธเธเธเธดเธเนเธเนเธฒเธเธฑเนเธ เนเธฅเธฐเนเธกเนเธเธทเธญเนเธเนเธเธเธณเนเธเธฐเธเธณเนเธเธเธฒเธฃเธฅเธเธเธธเธเธซเธฃเธทเธญเธเธทเนเธเธเธฒเธเธเธฒเธฃเธเธฑเธเธชเธดเธเนเธเนเธเนเธเธฒเธฃเธฅเธเธเธธเธเนเธเธซเธธเนเธเนเธเธตเนเธขเธงเธเนเธญเธเธเธฑเธเธเธงเธฒเธกเนเธชเธตเนเธขเธเธเนเธฒเธเน เนเธเนเธ เธเธงเธฒเธกเนเธชเธตเนเธขเธเธเนเธฒเธเธเธฅเธฒเธ เธเธงเธฒเธกเนเธชเธตเนเธขเธเธเนเธฒเธเธชเธ เธฒเธเธเธฅเนเธญเธ เธเธงเธฒเธกเนเธชเธตเนเธขเธเธเนเธฒเธเธเนเธขเธเธฒเธข เธฏเธฅเธฏ เธเธถเนเธเธญเธฒเธเธเธณเนเธเธชเธนเนเธเธฒเธฃเธชเธนเธเนเธชเธตเธขเนเธเธดเธเธเนเธเนเธเนเธเธนเนเนเธเนเธเธงเธฃเธเธฑเธเธชเธดเธเนเธเธญเธขเนเธฒเธเธญเธดเธชเธฃเธฐเนเธเธขเธเธดเธเธฒเธฃเธเธฒเธเธฒเธเธเธฒเธฃเธขเธญเธกเธฃเธฑเธเธเธงเธฒเธกเนเธชเธตเนเธขเธเธเธญเธเธเธเนเธญเธ เนเธฅเธฐเธเธคเธเธดเธเธฃเธฃเธกเธเธฒเธฃเธฅเธเธเธธเธเนเธฅเธฐเธเธฅเธเธตเนเธเธฒเธกเธกเธฒเธเธตเนเนเธเธดเธเธเธฒเธเธเธฒเธฃเนเธเนเนเธเธฃเธทเนเธญเธเธกเธทเธญเธเธตเนเธเธฐเธเนเธญเธเธเธเนเธเนเธเธ เธฒเธฃเธฐเธเธญเธเธเธนเนเนเธเนเธเธฅเธฒเธเธกเธตเธเธงเธฒเธกเนเธชเธตเนเธขเธเนเธฅเธฐเธเธฒเธฃเธฅเธเธเธธเธเธเนเธญเธเธฃเธฐเธกเธฑเธเธฃเธฐเธงเธฑเธ',
- 'user.login.privacy.title': 'เธเนเธขเธเธฒเธขเธเธงเธฒเธกเนเธเนเธเธชเนเธงเธเธเธฑเธงเธเธญเธเธเธนเนเนเธเน',
- 'user.login.privacy.view': 'เธเธนเธเนเธขเธเธฒเธขเธเธงเธฒเธกเนเธเนเธเธชเนเธงเธเธเธฑเธงเธเธญเธเธเธนเนเนเธเน',
- 'user.login.privacy.collapse': 'เธเธดเธเธเนเธญเธเธณเธซเธเธเธเธงเธฒเธกเนเธเนเธเธชเนเธงเธเธเธฑเธงเธเธญเธเธเธนเนเนเธเน',
- 'user.login.privacy.content': 'เนเธฃเธฒเนเธซเนเธเธงเธฒเธกเธชเธณเธเธฑเธเธเธฑเธเธเธงเธฒเธกเนเธเนเธเธชเนเธงเธเธเธฑเธงเนเธฅเธฐเธเธฒเธฃเธเธเธเนเธญเธเธเนเธญเธกเธนเธฅเธเธญเธเธเธธเธ 1) เธเธญเธเนเธเธเธเธญเธเธเธฒเธฃเธฃเธงเธเธฃเธงเธก: เนเธเธเธฒเธฐเธเนเธญเธกเธนเธฅเธเธตเนเธเธณเนเธเนเธเนเธเธเธฒเธฃเนเธเนเธเธฒเธเธเธฑเธเธเนเธเธฑเธ (เนเธเนเธ เธญเธตเนเธกเธฅ เธซเธกเธฒเธขเนเธฅเธเนเธเธฃเธจเธฑเธเธเนเธกเธทเธญเธเธทเธญ เธฃเธซเธฑเธชเธเธทเนเธเธเธตเน เธเธตเนเธญเธขเธนเนเธเธฃเธฐเนเธเนเธฒเธชเธเธฒเธเธเนเธเธญเธ Web3) เนเธฅเธฐเธเธฑเธเธเธถเธเนเธฅเธฐเธเนเธญเธกเธนเธฅเธญเธธเธเธเธฃเธเนเธเธตเนเธเธณเนเธเนเธเนเธเนเธฒเธเธฑเนเธเธเธตเนเธเธฐเธเธนเธเธฃเธงเธเธฃเธงเธก 2) เธงเธฑเธเธเธธเธเธฃเธฐเธชเธเธเนเธเธฒเธฃเนเธเนเธเธฒเธ: เธชเธณเธซเธฃเธฑเธเธเธฒเธฃเนเธเนเธฒเธชเธนเนเธฃเธฐเธเธเธเธฑเธเธเธตเนเธฅเธฐเธเธฒเธฃเธเธฃเธงเธเธชเธญเธเธเธงเธฒเธกเธเธฅเธญเธเธ เธฑเธขเธเธฒเธฃเนเธซเนเธเธฃเธดเธเธฒเธฃเธเธฑเธเธเนเธเธฑเนเธ เธเธฒเธฃเนเธเนเนเธเธเธฑเธเธซเธฒเนเธฅเธฐเธเนเธญเธเธณเธซเธเธเธเธฒเธฃเธเธเธดเธเธฑเธเธดเธเธฒเธก 3) เธเธฒเธฃเธเธฑเธเนเธเนเธเนเธฅเธฐเธเธงเธฒเธกเธเธฅเธญเธเธ เธฑเธข: เธเนเธญเธกเธนเธฅเนเธเนเธฃเธฑเธเธเธฒเธฃเนเธเนเธฒเธฃเธซเธฑเธชเนเธฅเธฐเธเธฑเธเนเธเนเธเนเธฅเธฐเธกเธตเธเธฒเธฃเนเธเนเธชเธดเธเธเธดเนเธเธตเนเธเธณเนเธเนเธเนเธฅเธฐเธกเธฒเธเธฃเธเธฒเธฃเธเธงเธเธเธธเธกเธเธฒเธฃเนเธเนเธฒเธเธถเธเนเธเธทเนเธญเธเนเธญเธเธเธฑเธเธเธฒเธฃเนเธเนเธฒเธเธถเธ เธเธฒเธฃเนเธเธดเธเนเธเธข เธซเธฃเธทเธญเธเธฒเธฃเธชเธนเธเธซเธฒเธขเนเธเธขเนเธกเนเนเธเนเธฃเธฑเธเธญเธเธธเธเธฒเธ 4) เธเธฒเธฃเนเธเนเธเธเธฑเธเธเธฑเธเธเธธเธเธเธฅเธเธตเนเธชเธฒเธก: เนเธงเนเธเนเธเนเธเธเธซเธกเธฒเธขเนเธฅเธฐเธเนเธญเธเธฑเธเธเธฑเธเธเธณเธซเธเธเนเธงเนเธซเธฃเธทเธญเธเธณเนเธเนเธเนเธเธเธฒเธฃเนเธซเนเธเธฃเธดเธเธฒเธฃ เธเนเธญเธกเธนเธฅเธชเนเธงเธเธเธธเธเธเธฅเธเธญเธเธเธธเธเธเธฐเนเธกเนเธเธนเธเนเธเนเธเธเธฑเธเธเธฑเธเธเธธเธเธเธฅเธเธตเนเธชเธฒเธกเธซเธฒเธเนเธเธตเนเธขเธงเธเนเธญเธเธเธฑเธเธเธฃเธดเธเธฒเธฃเธเธญเธเธเธธเธเธเธฅเธเธตเนเธชเธฒเธก (เนเธเนเธ เธเธฃเธฐเนเธเนเธฒเนเธเธดเธ เธเธนเนเนเธซเนเธเธฃเธดเธเธฒเธฃ SMS) เธเธฐเธเธนเธเธเธฃเธฐเธกเธงเธฅเธเธฅเนเธเธเธญเธเนเธเธเธเธฑเนเธเธเนเธณเธเธตเนเธเธณเนเธเนเธเนเธเธทเนเธญเนเธเนเธเธฒเธเธเธฑเธเธเนเธเธฑเธเธเธตเนเนเธเนเธฒเธเธฑเนเธ 5) เธเธธเธเธเธตเน/เธเธตเนเนเธเนเธเธเนเธญเธกเธนเธฅเนเธเนเธเธฃเธทเนเธญเธ: เนเธเนเธชเธณเธซเธฃเธฑเธเธชเธเธฒเธเธฐเธเธฒเธฃเนเธเนเธฒเธชเธนเนเธฃเธฐเธเธเนเธฅเธฐเธเธฒเธฃเธเธณเธฃเธธเธเธฃเธฑเธเธฉเธฒเนเธเธชเธเธฑเธเธเธตเนเธเธณเนเธเนเธ (เนเธเนเธ เนเธเนเธเนเธ PHPSESSID) เธเธธเธเธชเธฒเธกเธฒเธฃเธเธฅเนเธฒเธเธซเธฃเธทเธญเธเธณเธเธฑเธเนเธเนเนเธเนเธเธฃเธฒเธงเนเนเธเธญเธฃเน 6) เธชเธดเธเธเธดเนเธชเนเธงเธเธเธธเธเธเธฅ: เธเธธเธเธชเธฒเธกเธฒเธฃเธเนเธเนเธชเธดเธเธเธดเนเธเธญเธเธเธธเธเนเธเธเธฒเธฃเธชเธญเธเธเธฒเธก เนเธเนเนเธ เธฅเธ เนเธเธดเธเธเธญเธเธเธงเธฒเธกเธขเธดเธเธขเธญเธก เธฏเธฅเธฏ เธเธฒเธกเธเธเธซเธกเธฒเธขเนเธฅเธฐเธเนเธญเธเธฑเธเธเธฑเธ 7) เธเธฒเธฃเนเธเธฅเธตเนเธขเธเนเธเธฅเธเนเธฅเธฐเธเธฃเธฐเธเธฒเธจ: เนเธกเธทเนเธญเธกเธตเธเธฒเธฃเธญเธฑเธเนเธเธเธเนเธญเธเธณเธซเธเธเนเธซเธฅเนเธฒเธเธตเนเธเธฐเนเธชเธเธเธญเธขเนเธฒเธเนเธเนเธเธเธฑเธเธเธเธซเธเนเธฒเนเธงเนเธเธเธฒเธฃเนเธเนเธเธฃเธดเธเธฒเธฃเธเธตเนเธเนเธญเนเธเธเธฐเธเธทเธญเธงเนเธฒเธเธธเธเนเธเนเธญเนเธฒเธเนเธฅเธฐเธขเธญเธกเธฃเธฑเธเนเธเธทเนเธญเธซเธฒเธเธตเนเธญเธฑเธเนเธเธเนเธฅเนเธงเธซเธฒเธเธเธธเธเนเธกเนเธขเธญเธกเธฃเธฑเธเธเนเธญเธเธณเธซเธเธเนเธซเธฅเนเธฒเธเธตเนเธซเธฃเธทเธญเธเธฒเธฃเธเธฃเธฑเธเธเธฃเธธเธเนเธ เน เนเธเธฃเธเธซเธขเธธเธเนเธเนเธเธฃเธดเธเธฒเธฃเนเธฅเธฐเธเธดเธเธเนเธญเนเธฃเธฒ',
- 'account.basicInfo': 'เธเนเธญเธกเธนเธฅเธเธทเนเธเธเธฒเธ',
- 'account.id': 'เธฃเธซเธฑเธชเธเธนเนเนเธเน',
- 'account.username': 'เธเธทเนเธญเธเธนเนเนเธเน',
- 'account.nickname': 'เธเธทเนเธญเธเธดเธ',
- 'account.email': 'เธเธเธซเธกเธฒเธข',
- 'account.mobile': 'เธซเธกเธฒเธขเนเธฅเธเนเธเธฃเธจเธฑเธเธเน',
- 'account.web3address': 'เธเธตเนเธญเธขเธนเนเธเธฃเธฐเนเธเนเธฒเนเธเธดเธ',
- 'account.pid': 'เธฃเธซเธฑเธชเธเธนเนเธญเนเธฒเธเธญเธดเธ',
- 'account.level': 'เธฃเธฐเธเธฑเธเธเธนเนเนเธเน',
- 'account.money': 'เธชเธกเธเธธเธฅ',
- 'account.qdtBalance': 'เธขเธญเธเธเธเนเธซเธฅเธทเธญ QDT',
- 'account.score': 'เธเธนเธฃเธเธฒเธเธฒเธฃ',
- 'account.createtime': 'เนเธงเธฅเธฒเธฅเธเธเธฐเนเธเธตเธขเธ',
- 'account.inviteLink': 'เธฅเธดเธเธเนเธเธณเนเธเธดเธ',
- 'account.recharge': 'เนเธเธดเธกเนเธเธดเธ',
- 'account.rechargeTip': 'เนเธเธฃเธเนเธเน WeChat เธซเธฃเธทเธญ Alipay เนเธเธทเนเธญเธชเนเธเธเนเธเนเธ QR เธเนเธฒเธเธฅเนเธฒเธเนเธเธทเนเธญเนเธเธดเธกเนเธเธดเธ',
- 'account.qrCodePlaceholder': 'เธเธฑเธงเธขเธถเธเธฃเธซเธฑเธช QR (เธเธฒเธฃเธเธณเธฅเธญเธ)',
- 'account.rechargeAmount': 'เธเธณเธเธงเธเธเธฒเธฃเนเธเธดเธกเนเธเธดเธ',
- 'account.enterAmount': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธณเธเธงเธเนเธเธดเธเธเธตเนเนเธเธดเธก',
- 'account.rechargeHint': 'เธเธณเธเธงเธเนเธเธดเธเธเธฒเธเธเธฑเนเธเธเนเธณ: 1 QDT',
- 'account.confirmRecharge': 'เธขเธทเธเธขเธฑเธเธเธฒเธฃเนเธเธดเธกเนเธเธดเธ',
- 'account.enterValidAmount': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธณเธเธงเธเนเธเธดเธเธเธตเนเนเธเธดเธกเนเธซเนเธเธนเธเธเนเธญเธ',
- 'account.rechargeSuccess': 'เนเธเธดเธกเนเธเธดเธเธชเธณเนเธฃเนเธ!เธเธฒเธเนเธฅเนเธง {amount} QDT',
- 'account.settings.menuMap.basic': 'เธเธฒเธฃเธเธฑเนเธเธเนเธฒเธเธทเนเธเธเธฒเธ',
- 'account.settings.menuMap.security': 'เธเธฒเธฃเธเธฑเนเธเธเนเธฒเธเธงเธฒเธกเธเธฅเธญเธเธ เธฑเธข',
- 'account.settings.menuMap.notification': 'เธเธฒเธฃเนเธเนเธเนเธเธทเธญเธเธเนเธญเธเธงเธฒเธกเนเธซเธกเน',
- 'account.settings.menuMap.moneyLog': 'เธฃเธฒเธขเธฅเธฐเนเธญเธตเธขเธเธเธญเธเธเธธเธ',
- 'account.moneyLog.empty': 'เธขเธฑเธเนเธกเนเธกเธตเธฃเธฒเธขเธฅเธฐเนเธญเธตเธขเธเธเธญเธเธเธธเธ',
- 'account.moneyLog.total': 'เธฃเธงเธก {total} เธเธฑเธเธเธถเธ',
- 'account.moneyLog.type.purchase': 'เธเธฑเธงเธเนเธเธเธตเนเธเธฒเธฃเธเธทเนเธญ',
- 'account.moneyLog.type.recharge': 'เนเธเธดเธกเนเธเธดเธ',
- 'account.moneyLog.type.refund': 'เธเธทเธเนเธเธดเธ',
- 'account.moneyLog.type.reward': 'เธฃเธฒเธเธงเธฑเธฅ',
- 'account.moneyLog.type.income': 'เธเธฑเธงเธเธตเนเธงเธฑเธเธฃเธฒเธขเนเธเน',
- 'account.moneyLog.type.commission': 'เธเนเธฒเธเธฃเธฃเธกเนเธเธตเธขเธกเธเธฒเธฃเธเธฑเธเธเธฒเธฃเนเธเธฅเธเธเธญเธฃเนเธก',
- 'wallet.balance': 'เธขเธญเธเธเธเนเธซเธฅเธทเธญ QDT',
- 'wallet.recharge': 'เนเธเธดเธกเนเธเธดเธ',
- 'wallet.withdraw': 'เธเธญเธเนเธเธดเธเธชเธ',
- 'wallet.filter': 'เธเธฃเธญเธ',
- 'wallet.reset': 'เธฃเธตเนเธเนเธ',
- 'wallet.totalRecharge': 'เธเธฒเธฃเนเธเธดเธกเนเธเธดเธเธชเธฐเธชเธก',
- 'wallet.totalWithdraw': 'เธเธฒเธฃเธเธญเธเนเธเธดเธเธชเธฐเธชเธก',
- 'wallet.totalIncome': 'เธฃเธฒเธขเนเธเนเธชเธฐเธชเธก',
- 'wallet.records': 'เธเธฑเธเธเธถเธเธเธฒเธฃเธเธณเธเธธเธฃเธเธฃเธฃเธกเนเธฅเธฐเธฃเธฒเธขเธฅเธฐเนเธญเธตเธขเธเธเธญเธเธเธธเธ',
- 'wallet.tradingRecords': 'เธเธฃเธฐเธงเธฑเธเธดเธเธฒเธฃเธเธณเธเธธเธฃเธเธฃเธฃเธก',
- 'wallet.moneyLog': 'เธฃเธฒเธขเธฅเธฐเนเธญเธตเธขเธเธเธญเธเธเธธเธ',
- 'wallet.rechargeTip': 'เนเธเธฃเธเนเธเน WeChat เธซเธฃเธทเธญ Alipay เนเธเธทเนเธญเธชเนเธเธเนเธเนเธ QR เธเนเธฒเธเธฅเนเธฒเธเนเธเธทเนเธญเนเธเธดเธกเนเธเธดเธ',
- 'wallet.qrCodePlaceholder': 'เธเธฑเธงเธขเธถเธเธฃเธซเธฑเธช QR (เธเธฒเธฃเธเธณเธฅเธญเธ)',
- 'wallet.rechargeAmount': 'เธเธณเธเธงเธเธเธฒเธฃเนเธเธดเธกเนเธเธดเธ',
- 'wallet.enterAmount': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธณเธเธงเธเนเธเธดเธเธเธตเนเนเธเธดเธก',
- 'wallet.rechargeHint': 'เธเธณเธเธงเธเนเธเธดเธเธเธฒเธเธเธฑเนเธเธเนเธณ: 1 QDT',
- 'wallet.confirmRecharge': 'เธขเธทเธเธขเธฑเธเธเธฒเธฃเนเธเธดเธกเนเธเธดเธ',
- 'wallet.enterValidAmount': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธณเธเธงเธเนเธเธดเธเธเธตเนเนเธเธดเธกเนเธซเนเธเธนเธเธเนเธญเธ',
- 'wallet.rechargeSuccess': 'เนเธเธดเธกเนเธเธดเธเธชเธณเนเธฃเนเธ!เธเธฒเธเนเธฅเนเธง {amount} QDT',
- 'wallet.rechargeFailed': 'เธเธฒเธฃเนเธเธดเธกเนเธเธดเธเธฅเนเธกเนเธซเธฅเธง',
- 'wallet.withdrawTip': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธณเธเธงเธเนเธเธดเธเธเธตเนเธเธญเธเนเธฅเธฐเธเธตเนเธญเธขเธนเนเธเธฒเธฃเธเธญเธ',
- 'wallet.withdrawAmount': 'เธเธญเธเธเธณเธเธงเธเนเธเธดเธ',
- 'wallet.enterWithdrawAmount': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธณเธเธงเธเนเธเธดเธเธเธตเนเธเธญเธ',
- 'wallet.withdrawHint': 'เธเธณเธเธงเธเธเธญเธเธเธฑเนเธเธเนเธณ: 1 QDT',
- 'wallet.withdrawAddress': 'เธเธตเนเธญเธขเธนเนเธเธฒเธฃเธเธญเธเนเธเธดเธ (เนเธกเนเธเธฑเธเธเธฑเธ)',
- 'wallet.enterWithdrawAddress': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธตเนเธญเธขเธนเนเธเธฒเธฃเธเธญเธเนเธเธดเธ',
- 'wallet.confirmWithdraw': 'เธขเธทเธเธขเธฑเธเธเธฒเธฃเธเธญเธเนเธเธดเธ',
- 'wallet.enterValidWithdrawAmount': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธณเธเธงเธเนเธเธดเธเธเธตเนเธเธญเธเนเธซเนเธเธนเธเธเนเธญเธ',
- 'wallet.insufficientBalance': 'เธขเธญเธเธเธเนเธซเธฅเธทเธญเนเธกเนเนเธเธตเธขเธเธเธญ',
- 'wallet.withdrawSuccess': 'เธเธฒเธฃเธเธญเธเนเธเธดเธเธชเธณเนเธฃเนเธ!เธเธญเธเธญเธญเธ {amount} QDT',
- 'wallet.withdrawFailed': 'เธเธฒเธฃเธเธญเธเนเธเธดเธเธฅเนเธกเนเธซเธฅเธง',
- 'wallet.noTradingRecords': 'เธขเธฑเธเนเธกเนเธกเธตเธเธฑเธเธเธถเธเธเธฒเธฃเธเธณเธเธธเธฃเธเธฃเธฃเธก',
- 'wallet.noMoneyLog': 'เธขเธฑเธเนเธกเนเธกเธตเธฃเธฒเธขเธฅเธฐเนเธญเธตเธขเธเธเธญเธเธเธธเธ',
- 'wallet.loadTradingRecordsFailed': 'เนเธซเธฅเธเธเธฑเธเธเธถเธเธเธธเธฃเธเธฃเธฃเธกเนเธกเนเธชเธณเนเธฃเนเธ',
- 'wallet.loadMoneyLogFailed': 'เนเธซเธฅเธเธฃเธฒเธขเธฅเธฐเนเธญเธตเธขเธเธเธญเธเธเธธเธเนเธกเนเธชเธณเนเธฃเนเธ',
- 'wallet.moneyLogTotal': 'เธฃเธงเธก {total} เธเธฑเธเธเธถเธ',
- 'wallet.moneyLogTypeTitle': 'เธเธดเธกเธเน',
- 'wallet.moneyLogType.all': 'เธเธธเธเธเธฃเธฐเนเธ เธ',
- 'wallet.table.time': 'เนเธงเธฅเธฒ',
- 'wallet.table.type': 'เธเธดเธกเธเน',
- 'wallet.table.price': 'เธฃเธฒเธเธฒ',
- 'wallet.table.amount': 'เธเธฃเธดเธกเธฒเธ',
- 'wallet.table.money': 'เธเธณเธเธงเธ',
- 'wallet.table.balance': 'เธชเธกเธเธธเธฅ',
- 'wallet.table.memo': 'เธซเธกเธฒเธขเนเธซเธเธธ',
- 'wallet.table.value': 'เธเนเธฒ',
- 'wallet.table.profit': 'เธเธณเนเธฃเนเธฅเธฐเธเธฒเธเธเธธเธ',
- 'wallet.table.commission': 'เธเนเธฒเธเธฃเธฃเธกเนเธเธตเธขเธกเธเธฒเธฃเธเธฑเธเธเธฒเธฃ',
- 'wallet.table.total': 'เธฃเธงเธก {total} เธเธฑเธเธเธถเธ',
- 'wallet.tradeType.buy': 'เธเธทเนเธญ',
- 'wallet.tradeType.sell': 'เธเธฒเธข',
- 'wallet.tradeType.liquidation': 'เธเธฑเธเธเธฑเธเนเธซเนเนเธฅเธดเธเธเธดเธเธเธฒเธฃ',
- 'wallet.tradeType.openLong': 'เนเธเธดเธเธขเธฒเธงเน',
- 'wallet.tradeType.addLong': 'เธเธฒเธเธญเธ',
- 'wallet.tradeType.closeLong': 'เธเธดเธเธเธฑเธง',
- 'wallet.tradeType.closeLongStop': 'เธซเธขเธธเธเธเธฒเธเธเธธเธเนเธฅเธฐเธขเธฒเธง',
- 'wallet.tradeType.closeLongProfit': 'เธเธฒเธขเธเธณเธเธณเนเธฃเนเธฅเธฐเธฃเธฐเธเธฑเธเธกเธฒเธเธเธถเนเธ',
- 'wallet.tradeType.openShort': 'เนเธเธดเธเธชเธฑเนเธ',
- 'wallet.tradeType.addShort': 'เนเธเธดเนเธกเธชเธฑเนเธ',
- 'wallet.tradeType.closeShort': 'เธงเนเธฒเธเนเธเธฅเนเธฒ',
- 'wallet.tradeType.closeShortStop': 'เธซเธขเธธเธเธเธฒเธฃเธชเธนเธเนเธชเธตเธข',
- 'wallet.tradeType.closeShortProfit': 'เธเธฒเธขเธเธณเธเธณเนเธฃเนเธฅเธฐเธเธดเธเธเธฒเธฃเธเธฒเธข',
- 'wallet.moneyLogType.purchase': 'เธเธฑเธงเธเนเธเธเธตเนเธเธฒเธฃเธเธทเนเธญ',
- 'wallet.moneyLogType.recharge': 'เนเธเธดเธกเนเธเธดเธ',
- 'wallet.moneyLogType.withdraw': 'เธเธญเธเนเธเธดเธเธชเธ',
- 'wallet.moneyLogType.refund': 'เธเธทเธเนเธเธดเธ',
- 'wallet.moneyLogType.reward': 'เธฃเธฒเธเธงเธฑเธฅ',
- 'wallet.moneyLogType.income': 'เธฃเธฒเธขเนเธเน',
- 'wallet.moneyLogType.commission': 'เธเนเธฒเธเธฃเธฃเธกเนเธเธตเธขเธกเธเธฒเธฃเธเธฑเธเธเธฒเธฃ',
- 'wallet.web3Address.required': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธตเนเธญเธขเธนเนเธเธฃเธฐเนเธเนเธฒเนเธเธดเธ Web3 เธเนเธญเธ',
- 'wallet.web3Address.requiredDescription': 'เธเนเธญเธเธเธตเนเธเธฐเนเธเธดเธกเนเธเธดเธ เธเธธเธเธเนเธญเธเธเธนเธเธเธตเนเธญเธขเธนเนเธเธฃเธฐเนเธเนเธฒเนเธเธดเธ Web3 เธเธญเธเธเธธเธเนเธเธทเนเธญเธฃเธฑเธเธเธฒเธฃเนเธเธดเธกเนเธเธดเธ',
- 'wallet.web3Address.placeholder': 'เนเธเธฃเธเธเนเธญเธเธเธตเนเธญเธขเธนเนเธเธฃเธฐเนเธเนเธฒเนเธเธดเธ Web3 เธเธญเธเธเธธเธ (เนเธฃเธดเนเธกเธเนเธเธเนเธงเธข 0x)',
- 'wallet.web3Address.save': 'เธเธฑเธเธเธถเธเธเธตเนเธญเธขเธนเนเธเธฃเธฐเนเธเนเธฒเนเธเธดเธ',
- 'wallet.web3Address.saveSuccess': 'เธเธฑเธเธเธถเธเธเธตเนเธญเธขเธนเน Wallet เนเธฃเธตเธขเธเธฃเนเธญเธขเนเธฅเนเธง',
- 'wallet.web3Address.saveFailed': 'เนเธกเนเธชเธฒเธกเธฒเธฃเธเธเธฑเธเธเธถเธเธเธตเนเธญเธขเธนเนเธเธฃเธฐเนเธเนเธฒเธชเธเธฒเธเธเนเนเธเน',
- 'wallet.web3Address.invalidFormat': 'เนเธเธฃเธเธเนเธญเธเธเธตเนเธญเธขเธนเนเธเธฃเธฐเนเธเนเธฒเนเธเธดเธ Web3 เธเธตเนเธเธนเธเธเนเธญเธ (เธฃเธนเธเนเธเธ Ethereum: 42 เธเธฑเธงเธญเธฑเธเธฉเธฃเนเธฃเธดเนเธกเธเนเธเธเนเธงเธข 0x เธซเธฃเธทเธญเธฃเธนเธเนเธเธ TRC20: 34 เธเธฑเธงเธญเธฑเธเธฉเธฃเนเธฃเธดเนเธกเธเนเธเธเนเธงเธข T)',
- 'wallet.selectCoin': 'เนเธฅเธทเธญเธเธชเธเธธเธฅเนเธเธดเธ',
- 'wallet.selectChain': 'เธซเนเธงเธเนเธเนเธเธฒเธฃเธเธฑเธเนเธฅเธทเธญเธ',
- 'wallet.chain.eth': 'เธเธฅเธเธฃเธฐเนเธขเธเธเนเธเธฑเธเธเนเธญเธ (ERC20)',
- 'wallet.chain.trc20': 'TRC20',
- 'wallet.chain.bsc': 'เธเธตเนเธญเธชเธเธต',
- 'wallet.targetQdtAmount': 'เธเธณเธเธงเธ QDT เธเธตเนเธเธธเธเธเนเธญเธเธเธฒเธฃเนเธฅเธ (เนเธกเนเธเธฑเธเธเธฑเธ)',
- 'wallet.targetQdtAmount.placeholder': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธณเธเธงเธ QDT เธเธตเนเธเธธเธเธเนเธญเธเธเธฒเธฃเนเธฅเธเนเธเธฅเธตเนเธขเธ เธฃเธฒเธเธฒ QDT เธเธฑเธเธเธธเธเธฑเธเธเธทเธญ: {price} USDT',
- 'wallet.targetQdtAmount.requiredUsdt': 'เธเนเธญเธเนเธเธดเธกเนเธเธดเธ: {amount} USDT',
- 'wallet.rechargeAddress': 'เธเธตเนเธญเธขเธนเนเนเธเธดเธกเนเธเธดเธ',
- 'wallet.copyAddress': 'เธชเธณเนเธเธฒ',
- 'wallet.copySuccess': 'เธเธฑเธเธฅเธญเธเธชเธณเนเธฃเนเธ!',
- 'wallet.copyFailed': 'เธเธฒเธฃเธเธฑเธเธฅเธญเธเธฅเนเธกเนเธซเธฅเธง เนเธเธฃเธเธเธฑเธเธฅเธญเธเธเนเธงเธขเธเธเนเธญเธ',
- 'wallet.rechargeAddressHint': 'เนเธเธฃเธเธเธฃเธงเธเธชเธญเธเนเธซเนเนเธเนเนเธเธงเนเธฒเนเธเนเนเธเนเนเธเธฃเธทเธญเธเนเธฒเธข {chain} เนเธเธทเนเธญเธเธฒเธ {coin} เนเธเธขเธฑเธเธเธตเนเธญเธขเธนเนเธเธตเน',
- 'wallet.qdtPrice.loading': 'เธเธณเธฅเธฑเธเนเธซเธฅเธ...',
- 'wallet.rechargeTip.new': 'เนเธเธฃเธเนเธฅเธทเธญเธเธชเธเธธเธฅเนเธเธดเธเนเธฅเธฐเธซเนเธงเธเนเธเน เธเธฒเธเธเธฑเนเธเธชเนเธเธเนเธเนเธ QR เธเนเธฒเธเธฅเนเธฒเธเนเธเธทเนเธญเนเธเธดเธกเนเธเธดเธ',
- 'wallet.exchangeRate': '1 เธเธดเธงเธเธตเธเธต เธเธฅเธฑเธเนเธเธขเธฑเธ {rate} เธเธญเธฅเธฅเธฒเธฃเนเธชเธซเธฃเธฑเธ',
- 'wallet.withdrawableAmount': 'เธเธณเธเธงเธเนเธเธดเธเธชเธเธเธตเนเธกเธตเธญเธขเธนเน',
- 'wallet.totalBalance': 'เธขเธญเธเธฃเธงเธก',
- 'wallet.insufficientWithdrawable': 'เธเธณเธเธงเธเนเธเธดเธเธชเธเธเธตเนเธชเธฒเธกเธฒเธฃเธเธเธญเธเธญเธญเธเนเธเนเนเธกเนเนเธเธตเธขเธเธเธญ เนเธเธดเธเธชเธเธเธตเนเธกเธตเธญเธขเธนเนเนเธเธเธฑเธเธเธธเธเธฑเธเธเธทเธญ: {amount} QDT',
- 'wallet.withdrawAddressRequired': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธตเนเธญเธขเธนเนเธเธฒเธฃเธเธญเธเนเธเธดเธ',
- 'wallet.withdrawAddressHint': 'เนเธเธฃเธเธเธฃเธงเธเธชเธญเธเนเธซเนเนเธเนเนเธเธงเนเธฒเธเธตเนเธญเธขเธนเนเธเธนเธเธเนเธญเธ เธซเธฅเธฑเธเธเธฒเธเธเธญเธเนเธฅเนเธงเนเธกเนเธชเธฒเธกเธฒเธฃเธเนเธเธดเธเธเธญเธเนเธเน',
- 'wallet.withdrawSubmitSuccess': 'เธชเนเธเนเธเธชเธกเธฑเธเธฃเธเธญเธเนเธฃเธตเธขเธเธฃเนเธญเธขเนเธฅเนเธง เนเธเธฃเธเธฃเธญเธเธฒเธฃเธเธฃเธงเธเธชเธญเธ',
- 'menu.footer.contactUs': 'เธเธดเธเธเนเธญเนเธฃเธฒ',
- 'menu.footer.getSupport': 'เธฃเธฑเธเธเธฒเธฃเธชเธเธฑเธเธชเธเธธเธ',
- 'menu.footer.socialAccounts': 'เธเธฑเธเธเธตเนเธเนเธเธตเธขเธฅ',
- 'menu.footer.userAgreement': 'เธเนเธญเธเธเธฅเธเธเธนเนเนเธเน',
- 'menu.footer.privacyPolicy': 'เธเนเธขเธเธฒเธขเธเธงเธฒเธกเนเธเนเธเธชเนเธงเธเธเธฑเธง',
- 'menu.footer.support': 'เธชเธเธฑเธเธชเธเธธเธ',
- 'menu.footer.featureRequest': 'เธเธณเธเธญเธเธธเธเธชเธกเธเธฑเธเธด',
- 'menu.footer.email': 'เธญเธตเนเธกเธฅ',
- 'menu.footer.liveChat': 'เนเธเธเธชเธเธเธธเธเธงเธฑเธเธเธฅเธญเธ 24 เธเธฑเนเธงเนเธกเธ',
- 'dashboard.analysis.title': 'เธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเธซเธฅเธฒเธขเธกเธดเธเธด',
- 'dashboard.analysis.subtitle': 'เนเธเธฅเธเธเธญเธฃเนเธกเธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเธฒเธเธเธฒเธฃเนเธเธดเธเธเธตเนเธเธฃเธญเธเธเธฅเธธเธกเธเธตเนเธเธฑเธเนเธเธฅเธทเนเธญเธเธเนเธงเธข AI',
- 'dashboard.analysis.selectSymbol': 'เนเธฅเธทเธญเธเธซเธฃเธทเธญเธเนเธญเธเธฃเธซเธฑเธชเธเธทเนเธเธเธฒเธ',
- 'dashboard.analysis.selectModel': 'เนเธฅเธทเธญเธเธฃเธธเนเธ',
- 'dashboard.analysis.startAnalysis': 'เนเธฃเธดเนเธกเธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเน',
- 'dashboard.analysis.history': 'เธเธฃเธฐเธงเธฑเธเธดเธจเธฒเธชเธเธฃเน',
- 'dashboard.analysis.tab.overview': 'เธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเธตเนเธเธฃเธญเธเธเธฅเธธเธก',
- 'dashboard.analysis.tab.fundamental': 'เธเธงเธฒเธกเธฃเธนเนเธเธทเนเธเธเธฒเธ',
- 'dashboard.analysis.tab.technical': 'เนเธเธเนเธเนเธฅเธขเธต',
- 'dashboard.analysis.tab.news': 'เธเนเธฒเธง',
- 'dashboard.analysis.tab.sentiment': 'เธญเธฒเธฃเธกเธเน',
- 'dashboard.analysis.tab.risk': 'เนเธชเธตเนเธขเธ',
- 'dashboard.analysis.tab.debate': 'เธเธฒเธฃเธญเธ เธดเธเธฃเธฒเธขเธฃเธฐเธขเธฐเธชเธฑเนเธเธขเธฒเธง',
- 'dashboard.analysis.tab.decision': 'เธเธฒเธฃเธเธฑเธเธชเธดเธเนเธเธเธฑเนเธเธชเธธเธเธเนเธฒเธข',
- 'dashboard.analysis.empty.selectSymbol': 'เนเธฅเธทเธญเธเนเธเนเธฒเธซเธกเธฒเธขเนเธเธทเนเธญเนเธฃเธดเนเธกเธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเน',
- 'dashboard.analysis.empty.selectSymbolDesc': 'เนเธฅเธทเธญเธเธเธฒเธเธฃเธฒเธขเธเธฒเธฃเธซเธธเนเธเธเธตเนเนเธฅเธทเธญเธเนเธญเธเธซเธฃเธทเธญเธเนเธญเธเธฃเธซเธฑเธชเธเธตเนเนเธเธตเนเธขเธงเธเนเธญเธเนเธเธทเนเธญเธฃเธฑเธเธฃเธฒเธขเธเธฒเธเธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเน AI เธซเธฅเธฒเธขเธกเธดเธเธด',
- 'dashboard.analysis.empty.startAnalysis': 'เธเธฅเธดเธเธเธธเนเธก "เนเธฃเธดเนเธกเธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเน" เนเธเธทเนเธญเธเธณเธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเธซเธฅเธฒเธขเธกเธดเธเธด',
- 'dashboard.analysis.empty.startAnalysisDesc': 'เนเธฃเธฒเธเธฐเนเธซเนเธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเธตเนเธเธฃเธญเธเธเธฅเธธเธกเธเธฒเธเธซเธฅเธฒเธขเธกเธดเธเธด เนเธเนเธ เธเธฑเธเธเธฑเธขเธเธทเนเธเธเธฒเธ เนเธเธเนเธเนเธฅเธขเธต เธเนเธฒเธงเธชเธฒเธฃ เธเธงเธฒเธกเธฃเธนเนเธชเธถเธ เนเธฅเธฐเธเธงเธฒเธกเนเธชเธตเนเธขเธ',
- 'dashboard.analysis.empty.noData': 'เธเธเธฐเธเธตเนเนเธกเนเธกเธตเธเนเธญเธกเธนเธฅเธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเน {type} เนเธเธฃเธเธเธณเนเธเธดเธเธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเธตเนเธเธฃเธญเธเธเธฅเธธเธกเธเนเธญเธ',
- 'dashboard.analysis.empty.noWatchlist': 'เธเธเธฐเธเธตเนเนเธกเนเธกเธตเธซเธธเนเธเธเธตเนเนเธฅเธทเธญเธเนเธญเธ',
- 'dashboard.analysis.empty.noHistory': 'เธขเธฑเธเนเธกเนเธกเธตเธเธฃเธฐเธงเธฑเธเธด',
- 'dashboard.analysis.empty.watchlistHint': 'เธเธเธฐเธเธตเนเนเธกเนเธกเธตเธซเธธเนเธเธเธตเนเนเธฅเธทเธญเธเนเธญเธเธเธฃเธธเธเธฒเธเนเธญเธ',
- 'dashboard.analysis.empty.noDebateData': 'เธขเธฑเธเนเธกเนเธกเธตเธเนเธญเธกเธนเธฅเธเธฒเธฃเธญเธ เธดเธเธฃเธฒเธข',
- 'dashboard.analysis.empty.noDecisionData': 'เธขเธฑเธเนเธกเนเธกเธตเธเนเธญเธกเธนเธฅเธเธฒเธฃเธเธฑเธเธชเธดเธเนเธ',
- 'dashboard.analysis.empty.selectAgent': 'เนเธเธฃเธเนเธฅเธทเธญเธเธเธฑเธงเนเธเธเนเธเธทเนเธญเธเธนเธเธฅเธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเน',
- 'dashboard.analysis.loading.analyzing': 'เธเธณเธฅเธฑเธเธงเธดเนเธเธฃเธฒเธฐเธซเน เธเธฃเธธเธเธฒเธฃเธญเธชเธฑเธเธเธฃเธนเน...',
- 'dashboard.analysis.loading.fundamental': 'เธเธณเธฅเธฑเธเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเนเธญเธกเธนเธฅเธเธทเนเธเธเธฒเธ...',
- 'dashboard.analysis.loading.technical': 'เธเธณเธฅเธฑเธเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเธฑเธงเธเธตเนเธงเธฑเธเธเธฒเธเนเธเธเธเธดเธ...',
- 'dashboard.analysis.loading.news': 'เธเธณเธฅเธฑเธเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเนเธญเธกเธนเธฅเธเนเธฒเธง...',
- 'dashboard.analysis.loading.sentiment': 'เธงเธดเนเธเธฃเธฒเธฐเธซเนเธญเธฒเธฃเธกเธเนเธเธฅเธฒเธ...',
- 'dashboard.analysis.loading.risk': 'เธเธณเธฅเธฑเธเธเธฃเธฐเนเธกเธดเธเธเธงเธฒเธกเนเธชเธตเนเธขเธ...',
- 'dashboard.analysis.loading.debate': 'เธเธฒเธฃเธญเธ เธดเธเธฃเธฒเธขเธฃเธฐเธขเธฐเธชเธฑเนเธเธฃเธฐเธขเธฐเธชเธฑเนเธเธเธณเธฅเธฑเธเธเธณเนเธเธดเธเธญเธขเธนเน...',
- 'dashboard.analysis.loading.decision': 'เธเธณเธฅเธฑเธเธชเธฃเนเธฒเธเธเธฒเธฃเธเธฑเธเธชเธดเธเนเธเธเธฑเนเธเธชเธธเธเธเนเธฒเธข...',
- 'dashboard.analysis.score.overall': 'เธเธฐเนเธเธเนเธเธขเธฃเธงเธก',
- 'dashboard.analysis.score.recommendation': 'เธเธณเนเธเธฐเธเธณเธเธฒเธฃเธฅเธเธเธธเธ',
- 'dashboard.analysis.score.confidence': 'เธเธงเธฒเธกเธกเธฑเนเธเนเธ',
- 'dashboard.analysis.dimension.fundamental': 'เธเธงเธฒเธกเธฃเธนเนเธเธทเนเธเธเธฒเธ',
- 'dashboard.analysis.dimension.technical': 'เนเธเธเนเธเนเธฅเธขเธต',
- 'dashboard.analysis.dimension.news': 'เธเนเธฒเธง',
- 'dashboard.analysis.dimension.sentiment': 'เธญเธฒเธฃเธกเธเน',
- 'dashboard.analysis.dimension.risk': 'เนเธชเธตเนเธขเธ',
- 'dashboard.analysis.card.dimensionScores': 'เธเธฒเธฃเนเธซเนเธเธฐเนเธเธเธชเธณเธซเธฃเธฑเธเนเธเนเธฅเธฐเธกเธดเธเธด',
- 'dashboard.analysis.card.overviewReport': 'เธฃเธฒเธขเธเธฒเธเธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเธตเนเธเธฃเธญเธเธเธฅเธธเธก',
- 'dashboard.analysis.card.financialMetrics': 'เธเธฑเธงเธเธตเนเธงเธฑเธเธเธฒเธเธเธฒเธฃเนเธเธดเธ',
- 'dashboard.analysis.card.fundamentalReport': 'เธฃเธฒเธขเธเธฒเธเธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเธฑเธเธเธฑเธขเธเธทเนเธเธเธฒเธ',
- 'dashboard.analysis.card.technicalIndicators': 'เธเธฑเธงเธเธตเนเธงเธฑเธเธเธฒเธเนเธเธเธเธดเธ',
- 'dashboard.analysis.card.technicalReport': 'เธฃเธฒเธขเธเธฒเธเธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเธฒเธเนเธเธเธเธดเธ',
- 'dashboard.analysis.card.newsList': 'เธเนเธฒเธงเธเธตเนเนเธเธตเนเธขเธงเธเนเธญเธ',
- 'dashboard.analysis.card.newsReport': 'เธฃเธฒเธขเธเธฒเธเธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเนเธฒเธง',
- 'dashboard.analysis.card.sentimentIndicators': 'เธเธฑเธงเธเนเธเธเธตเนเธเธงเธฒเธกเธฃเธนเนเธชเธถเธ',
- 'dashboard.analysis.card.sentimentReport': 'เธฃเธฒเธขเธเธฒเธเธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเธงเธฒเธกเธฃเธนเนเธชเธถเธ',
- 'dashboard.analysis.card.riskMetrics': 'เธเธฑเธงเธเธตเนเธงเธฑเธเธเธงเธฒเธกเนเธชเธตเนเธขเธ',
- 'dashboard.analysis.card.riskReport': 'เธฃเธฒเธขเธเธฒเธเธเธฒเธฃเธเธฃเธฐเนเธกเธดเธเธเธงเธฒเธกเนเธชเธตเนเธขเธ',
- 'dashboard.analysis.card.bullView': 'เธกเธธเธกเธกเธญเธเธฃเธฑเนเธ (เธเธฃเธฐเธเธดเธ)',
- 'dashboard.analysis.card.bearView': 'เธกเธธเธกเธกเธญเธเธซเธขเธฒเธเธเธฒเธข (เธซเธกเธต)',
- 'dashboard.analysis.card.researchConclusion': 'เธเนเธญเธชเธฃเธธเธเธเธญเธเธเธนเนเธงเธดเธเธฑเธข',
- 'dashboard.analysis.card.traderPlan': 'เนเธเธเธเธนเนเธเนเธฒ',
- 'dashboard.analysis.card.riskDebate': 'เธเธฒเธฃเธญเธ เธดเธเธฃเธฒเธขเธเธเธฐเธเธฃเธฃเธกเธเธฒเธฃเธเธงเธฒเธกเนเธชเธตเนเธขเธ',
- 'dashboard.analysis.card.finalDecision': 'เธเธฒเธฃเธเธฑเธเธชเธดเธเนเธเธเธฃเธฑเนเธเธชเธธเธเธเนเธฒเธข',
- 'dashboard.analysis.card.tradePlanDetail': 'เธฃเธฒเธขเธฅเธฐเนเธญเธตเธขเธเนเธเธเธเธฒเธฃเนเธเธฃเธ',
- 'dashboard.analysis.tradingPlan.entry_price': 'เธฃเธฒเธเธฒเธเนเธฒเนเธเนเธฒเธเธก',
- 'dashboard.analysis.tradingPlan.position_size': 'เธเธเธฒเธเธเธณเนเธซเธเนเธ',
- 'dashboard.analysis.tradingPlan.stop_loss': 'เธซเธขเธธเธเธเธฒเธฃเธชเธนเธเนเธชเธตเธข',
- 'dashboard.analysis.tradingPlan.take_profit': 'เธเธฒเธขเธเธณเธเธณเนเธฃ',
- 'dashboard.analysis.label.confidence': 'เธเธงเธฒเธกเธกเธฑเนเธเนเธ',
- 'dashboard.analysis.label.keyPoints': 'เธเธธเธเธซเธฅเธฑเธ',
- 'dashboard.analysis.label.riskWarning': 'เธเธณเนเธเธทเธญเธเธเธงเธฒเธกเนเธชเธตเนเธขเธ',
- 'dashboard.analysis.risk.risky': 'เนเธชเธตเนเธขเธ',
- 'dashboard.analysis.risk.neutral': 'เธกเธธเธกเธกเธญเธเธเธตเนเนเธเนเธเธเธฅเธฒเธ (เนเธเนเธเธเธฅเธฒเธ)',
- 'dashboard.analysis.risk.safe': 'เธกเธธเธกเธกเธญเธเนเธเธเธญเธเธธเธฃเธฑเธเธฉเนเธเธดเธขเธก (เธเธฅเธญเธเธ เธฑเธข)',
- 'dashboard.analysis.risk.conclusion': 'เธชเธฃเธธเธเนเธฅเนเธง',
- 'dashboard.analysis.feature.fundamental': 'เธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเธทเนเธเธเธฒเธ',
- 'dashboard.analysis.feature.technical': 'เธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเธฒเธเนเธเธเธเธดเธ',
- 'dashboard.analysis.feature.news': 'เธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเนเธฒเธง',
- 'dashboard.analysis.feature.sentiment': 'เธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเธงเธฒเธกเธฃเธนเนเธชเธถเธ',
- 'dashboard.analysis.feature.risk': 'เธเธฒเธฃเธเธฃเธฐเนเธกเธดเธเธเธงเธฒเธกเนเธชเธตเนเธขเธ',
- 'dashboard.analysis.watchlist.title': 'เธเธฒเธฃเนเธฅเธทเธญเธเธซเธธเนเธเธเธญเธเธเธฑเธ',
- 'dashboard.analysis.watchlist.add': 'เนเธเธดเนเธกเนเธเธเธตเน',
- 'dashboard.analysis.watchlist.addStock': 'เนเธเธดเนเธกเธชเธเนเธญเธ',
- 'dashboard.analysis.modal.addStock.title': 'เนเธเธดเนเธกเธซเธธเนเธเนเธชเธฃเธดเธก',
- 'dashboard.analysis.modal.addStock.confirm': 'เนเธเนเธเธญเธ',
- 'dashboard.analysis.modal.addStock.cancel': 'เธขเธเนเธฅเธดเธ',
- 'dashboard.analysis.modal.addStock.market': 'เธเธฃเธฐเนเธ เธเธเธฅเธฒเธ',
- 'dashboard.analysis.modal.addStock.marketPlaceholder': 'เธเธฃเธธเธเธฒเนเธฅเธทเธญเธเธเธฅเธฒเธ',
- 'dashboard.analysis.modal.addStock.marketRequired': 'เธเธฃเธธเธเธฒเนเธฅเธทเธญเธเธเธฃเธฐเนเธ เธเธเธฅเธฒเธ',
- 'dashboard.analysis.modal.addStock.symbol': 'เธฃเธซเธฑเธชเธชเธเนเธญเธเธชเธดเธเธเนเธฒ',
- 'dashboard.analysis.modal.addStock.symbolPlaceholder': 'เธเธฑเธงเธญเธขเนเธฒเธเนเธเนเธ: AAPL, TSLA, GOOGL, 000001, BTC',
- 'dashboard.analysis.modal.addStock.symbolRequired': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธฃเธซเธฑเธชเธชเธเนเธญเธเธชเธดเธเธเนเธฒ',
- 'dashboard.analysis.modal.addStock.searchPlaceholder': 'เธเนเธเธซเธฒเธฃเธซเธฑเธชเธซเธฃเธทเธญเธเธทเนเธญเนเธเนเธฒเธซเธกเธฒเธข',
- 'dashboard.analysis.modal.addStock.searchOrInputPlaceholder': 'เธเนเธเธซเธฒเธซเธฃเธทเธญเธเนเธญเธเธฃเธซเธฑเธชเธญเนเธฒเธเธญเธดเธ (เนเธเนเธ AAPL, BTC/USDT, EUR/USD)',
- 'dashboard.analysis.modal.addStock.searchOrInputHint': 'เธฃเธญเธเธฃเธฑเธเธเธฒเธฃเธเนเธเธซเธฒเธงเธฑเธเธเธธเนเธเธเธฒเธเธเนเธญเธกเธนเธฅเธซเธฃเธทเธญเธเนเธญเธเธฃเธซเธฑเธชเนเธเธขเธเธฃเธ (เธฃเธฐเธเธเธเธฐเธฃเธฑเธเธเธทเนเธญเนเธเธขเธญเธฑเธเนเธเธกเธฑเธเธด)',
- 'dashboard.analysis.modal.addStock.search': 'เธเนเธเธซเธฒ',
- 'dashboard.analysis.modal.addStock.searchResults': 'เธเธฅเธเธฒเธฃเธเนเธเธซเธฒ',
- 'dashboard.analysis.modal.addStock.hotSymbols': 'เนเธเนเธฒเธซเธกเธฒเธขเธขเธญเธเธเธดเธขเธก',
- 'dashboard.analysis.modal.addStock.noHotSymbols': 'เธขเธฑเธเนเธกเนเธกเธตเนเธเนเธฒเธซเธกเธฒเธขเธขเธญเธเธเธดเธขเธก',
- 'dashboard.analysis.modal.addStock.selectedSymbol': 'เนเธฅเธทเธญเธเนเธฅเนเธง',
- 'dashboard.analysis.modal.addStock.pleaseSelectSymbol': 'เนเธเธฃเธเนเธฅเธทเธญเธเนเธเนเธฒเธซเธกเธฒเธขเธเนเธญเธ',
- 'dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol': 'เนเธเธฃเธเนเธฅเธทเธญเธเนเธเนเธฒเธซเธกเธฒเธขเธซเธฃเธทเธญเธเนเธญเธเธฃเธซเธฑเธชเนเธเนเธฒเธซเธกเธฒเธขเธเนเธญเธ',
- 'dashboard.analysis.modal.addStock.pleaseEnterSymbol': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธฃเธซเธฑเธชเนเธเนเธฒเธซเธกเธฒเธข',
- 'dashboard.analysis.modal.addStock.pleaseSelectMarket': 'เนเธเธฃเธเนเธฅเธทเธญเธเธเธฃเธฐเนเธ เธเธเธฅเธฒเธเธเนเธญเธ',
- 'dashboard.analysis.modal.addStock.searchFailed': 'เธเธฒเธฃเธเนเธเธซเธฒเธฅเนเธกเนเธซเธฅเธง เนเธเธฃเธเธฅเธญเธเธญเธตเธเธเธฃเธฑเนเธเนเธเธ เธฒเธขเธซเธฅเธฑเธ',
- 'dashboard.analysis.modal.addStock.noSearchResults': 'เนเธกเนเธเธเนเธเนเธฒเธซเธกเธฒเธขเธเธตเนเธเธฃเธเธเธฑเธ',
- 'dashboard.analysis.modal.addStock.willAutoFetchName': 'เธฃเธฐเธเธเธเธฐเธฃเธฑเธเธเธทเนเธญเนเธซเนเธญเธฑเธเนเธเธกเธฑเธเธด',
- 'dashboard.analysis.modal.addStock.addDirectly': 'เนเธเธดเนเธกเนเธเธขเธเธฃเธ',
- 'dashboard.analysis.modal.addStock.nameWillBeFetched': 'เธเธทเนเธญเธเธฐเธเธนเธเธซเธขเธดเธเธเธถเนเธเธกเธฒเนเธเธขเธญเธฑเธเนเธเธกเธฑเธเธดเนเธกเธทเนเธญเนเธเธดเนเธก',
- 'dashboard.analysis.market.USStock': 'เธซเธธเนเธเธชเธซเธฃเธฑเธ',
- 'dashboard.analysis.market.Crypto': 'เธชเธเธธเธฅเนเธเธดเธเธเธดเธเธดเธเธฑเธฅ',
- 'dashboard.analysis.market.Forex': 'เธเธญเนเธฃเนเธเธเน',
- 'dashboard.analysis.market.Futures': 'เธเธดเธงเนเธเธญเธฃเนเธช',
- 'dashboard.analysis.modal.history.title': 'เธเธฑเธเธเธถเธเธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเธฒเธเธเธฃเธฐเธงเธฑเธเธดเธจเธฒเธชเธเธฃเน',
- 'dashboard.analysis.modal.history.viewResult': 'เธเธนเธเธฅเธฅเธฑเธเธเน',
- 'dashboard.analysis.modal.history.completeTime': 'เนเธงเธฅเธฒเนเธชเธฃเนเธเธชเธดเนเธ',
- 'dashboard.analysis.modal.history.error': 'เธเธงเธฒเธกเธเธดเธเธเธฅเธฒเธ',
- 'dashboard.analysis.status.pending': 'เธฃเธญเธเธณเนเธเธดเธเธเธฒเธฃ',
- 'dashboard.analysis.status.processing': 'เธเธณเธฅเธฑเธเธเธฃเธฐเธกเธงเธฅเธเธฅ',
- 'dashboard.analysis.status.completed': 'เธชเธกเธเธนเธฃเธเน',
- 'dashboard.analysis.status.failed': 'เธฅเนเธกเนเธซเธฅเธง',
- 'dashboard.analysis.message.selectSymbol': 'เนเธเธฃเธเนเธฅเธทเธญเธเนเธเนเธฒเธซเธกเธฒเธขเธเนเธญเธ',
- 'dashboard.analysis.message.taskCreated': 'เธเธฒเธเธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเนเธเนเธเธนเธเธชเธฃเนเธฒเธเธเธถเนเธเนเธฅเนเธงเนเธฅเธฐเธเธณเธฅเธฑเธเธเธณเนเธเธดเธเธเธฒเธฃเธญเธขเธนเนเนเธเธทเนเธญเธเธซเธฅเธฑเธ...',
- 'dashboard.analysis.message.analysisComplete': 'เธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเนเธชเธฃเนเธเธชเธกเธเธนเธฃเธเน',
- 'dashboard.analysis.message.analysisCompleteCache': 'เธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเนเธชเธฃเนเธเธชเธกเธเธนเธฃเธเน (เนเธเนเธเนเธญเธกเธนเธฅเธเธตเนเนเธเธเนเธงเน)',
- 'dashboard.analysis.message.analysisFailed': 'เธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเธฅเนเธกเนเธซเธฅเธง เนเธเธฃเธเธฅเธญเธเธญเธตเธเธเธฃเธฑเนเธเนเธเธ เธฒเธขเธซเธฅเธฑเธ',
- 'dashboard.analysis.message.addStockSuccess': 'เนเธเธดเนเธกเนเธฃเธตเธขเธเธฃเนเธญเธขเนเธฅเนเธง',
- 'dashboard.analysis.message.addStockFailed': 'เนเธเธดเนเธกเธฅเนเธกเนเธซเธฅเธง',
- 'dashboard.analysis.message.removeStockSuccess': 'เธฅเธเธชเธณเนเธฃเนเธเนเธฅเนเธง',
- 'dashboard.analysis.message.removeStockFailed': 'เธเธฒเธฃเธฅเธเธฅเนเธกเนเธซเธฅเธง',
- 'dashboard.analysis.message.resumingAnalysis': 'เธเธณเธฅเธฑเธเธเธณเนเธเธดเธเธเธฒเธฃเธเธฒเธเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเนเธญ...',
- 'dashboard.analysis.message.deleteSuccess': 'เธฅเธเธชเธณเนเธฃเนเธเนเธฅเนเธง',
- 'dashboard.analysis.message.deleteFailed': 'เธเธฒเธฃเธฅเธเธฅเนเธกเนเธซเธฅเธง',
- 'dashboard.analysis.modal.history.delete': 'เธฅเธ',
- 'dashboard.analysis.modal.history.deleteConfirm': 'เธเธธเธเนเธเนเนเธเธซเธฃเธทเธญเนเธกเนเธงเนเธฒเธเนเธญเธเธเธฒเธฃเธฅเธเธเธฑเธเธเธถเธเธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเธตเน?',
- 'dashboard.analysis.test': 'เธฃเนเธฒเธเธเนเธฒเนเธฅเธเธเธตเน {no} เธเธเธ Gongzhan',
- 'dashboard.analysis.introduce': 'เธเธณเธญเธเธดเธเธฒเธขเธเธฑเธงเธเนเธเธเธตเน',
- 'dashboard.analysis.total-sales': 'เธขเธญเธเธเธฒเธขเธฃเธงเธก',
- 'dashboard.analysis.day-sales': 'เธขเธญเธเธเธฒเธขเนเธเธฅเธตเนเธขเธเนเธญเธงเธฑเธ๏ฟฅ',
- 'dashboard.analysis.visits': 'เธเธฒเธฃเนเธเนเธฒเธเธก',
- 'dashboard.analysis.visits-trend': 'เนเธเธงเนเธเนเธกเธเธฒเธฃเนเธเนเธฒเธเธก',
- 'dashboard.analysis.visits-ranking': 'เธญเธฑเธเธเธฑเธเธเธฒเธฃเนเธเนเธฒเธเธกเธฃเนเธฒเธเธเนเธฒ',
- 'dashboard.analysis.day-visits': 'เธเธฒเธฃเนเธเนเธฒเธเธกเธฃเธฒเธขเธงเธฑเธ',
- 'dashboard.analysis.week': 'เธฃเธฒเธขเธชเธฑเธเธเธฒเธซเนเธเธตเธเนเธญเธเธต',
- 'dashboard.analysis.day': 'เธเธตเธเนเธญเธเธต',
- 'dashboard.analysis.payments': 'เธเธณเธเธงเธเธเธฒเธฃเธเธณเธฃเธฐเนเธเธดเธ',
- 'dashboard.analysis.conversion-rate': 'เธญเธฑเธเธฃเธฒเธเธฒเธฃเนเธเธฅเธ',
- 'dashboard.analysis.operational-effect': 'เธเธฅเธเธฃเธฐเธเธเธเธฒเธเธเธดเธเธเธฃเธฃเธกเธเธฒเธฃเธเธณเนเธเธดเธเธเธฒเธ',
- 'dashboard.analysis.sales-trend': 'เนเธเธงเนเธเนเธกเธเธฒเธฃเธเธฒเธข',
- 'dashboard.analysis.sales-ranking': 'เธญเธฑเธเธเธฑเธเธขเธญเธเธเธฒเธขเธเธญเธเธฃเนเธฒเธ',
- 'dashboard.analysis.all-year': 'เธเธฃเธฐเธเธณเธเธต',
- 'dashboard.analysis.all-month': 'เนเธเธทเธญเธเธเธตเน',
- 'dashboard.analysis.all-week': 'เธชเธฑเธเธเธฒเธซเนเธเธตเน',
- 'dashboard.analysis.all-day': 'เธงเธฑเธเธเธตเน',
- 'dashboard.analysis.search-users': 'เธเธณเธเธงเธเธเธนเนเนเธเนเธเธฒเธฃเธเนเธเธซเธฒ',
- 'dashboard.analysis.per-capita-search': 'เธเธฒเธฃเธเนเธเธซเธฒเธเนเธญเธซเธฑเธง',
- 'dashboard.analysis.online-top-search': 'เธเธฒเธฃเธเนเธเธซเธฒเธขเธญเธเธเธดเธขเธกเธญเธญเธเนเธฅเธเน',
- 'dashboard.analysis.the-proportion-of-sales': 'เธชเธฑเธเธชเนเธงเธเธเธฃเธฐเนเธ เธเธเธฒเธฃเธเธฒเธข',
- 'dashboard.analysis.dropdown-option-one': 'เธเธเธดเธเธฑเธเธดเธเธฒเธฃเธเธตเนเธซเธเธถเนเธ',
- 'dashboard.analysis.dropdown-option-two': 'เธเธเธดเธเธฑเธเธดเธเธฒเธฃ 2',
- 'dashboard.analysis.channel.all': 'เธเธธเธเธเนเธญเธ',
- 'dashboard.analysis.channel.online': 'เธญเธญเธเนเธฅเธเน',
- 'dashboard.analysis.channel.stores': 'เนเธเนเธ',
- 'dashboard.analysis.sales': 'เธเนเธฒเธขเธเธฒเธข',
- 'dashboard.analysis.traffic': 'เธเธฒเธฃเนเธซเธฅเธเธญเธเธเธนเนเนเธเธขเธชเธฒเธฃ',
- 'dashboard.analysis.table.rank': 'เธเธฒเธฃเธเธฑเธเธญเธฑเธเธเธฑเธ',
- 'dashboard.analysis.table.search-keyword': 'เธเนเธเธซเธฒเธเธณเธชเธณเธเธฑเธ',
- 'dashboard.analysis.table.users': 'เธเธณเธเธงเธเธเธนเนเนเธเน',
- 'dashboard.analysis.table.weekly-range': 'เนเธเธดเนเธกเธเธถเนเธเธฃเธฒเธขเธชเธฑเธเธเธฒเธซเน',
- 'dashboard.indicator.selectSymbol': 'เนเธฅเธทเธญเธเธซเธฃเธทเธญเธเนเธญเธเธฃเธซเธฑเธชเธเธทเนเธเธเธฒเธ',
- 'dashboard.indicator.emptyWatchlistHint': 'เธเธเธฐเธเธตเนเนเธกเนเธกเธตเธซเธธเนเธเธเธตเนเนเธฅเธทเธญเธเนเธญเธ เธเธฃเธธเธเธฒเนเธเธดเนเธกเธเนเธญเธ',
- 'dashboard.indicator.hint.selectSymbol': 'เนเธเธฃเธเนเธฅเธทเธญเธเนเธเนเธฒเธซเธกเธฒเธขเนเธเธทเนเธญเนเธฃเธดเนเธกเธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเน',
- 'dashboard.indicator.hint.selectSymbolDesc': 'เนเธฅเธทเธญเธเธซเธฃเธทเธญเธเนเธญเธเธฃเธซเธฑเธชเธซเธธเนเธเนเธเธเนเธญเธเธเนเธเธซเธฒเธเนเธฒเธเธเธเนเธเธทเนเธญเธเธนเธเธฃเธฒเธ K-line เนเธฅเธฐเธเธฑเธงเธเธตเนเธงเธฑเธเธเธฒเธเนเธเธเธเธดเธ',
- 'dashboard.indicator.retry': 'เธฅเธญเธเธญเธตเธเธเธฃเธฑเนเธ',
- 'dashboard.indicator.panel.title': 'เธเธฑเธงเธเธตเนเธงเธฑเธเธเธฒเธเนเธเธเธเธดเธ',
- 'dashboard.indicator.panel.realtimeOn': 'เธเธดเธเธเธฒเธฃเธญเธฑเธเนเธเธเนเธเธเนเธฃเธตเธขเธฅเนเธเธกเน',
- 'dashboard.indicator.panel.realtimeOff': 'เนเธเธดเธเนเธเนเธเธฒเธเธเธฒเธฃเธญเธฑเธเนเธเธเนเธเธเนเธฃเธตเธขเธฅเนเธเธกเน',
- 'dashboard.indicator.panel.themeLight': 'เนเธเธฅเธตเนเธขเธเนเธเนเธเธเธตเธกเธชเธตเนเธเนเธก',
- 'dashboard.indicator.panel.themeDark': 'เนเธเธฅเธตเนเธขเธเนเธเนเธเธเธตเธกเธชเธงเนเธฒเธ',
- 'dashboard.indicator.section.enabled': 'เนเธเธดเธเนเธเนเธเธฒเธเนเธฅเนเธง',
- 'dashboard.indicator.section.added': 'เธเธฑเธงเธเนเธเธเธตเนเธเธตเนเธเธฑเธเนเธเธดเนเธก',
- 'dashboard.indicator.section.custom': 'เธเธฑเธงเธเธตเนเธงเธฑเธเธเธตเนเธชเธฃเนเธฒเธเธเธถเนเธเธเนเธงเธขเธเธฑเธงเนเธญเธ',
- 'dashboard.indicator.section.bought': 'เธเธฑเธงเธเนเธเธเธตเนเธเธตเนเธเธฑเธเธเธทเนเธญ',
- 'dashboard.indicator.section.myCreated': 'เธเธฑเธงเธเนเธเธเธตเนเธเธตเนเธเธฑเธเธชเธฃเนเธฒเธเธเธถเนเธ',
- 'dashboard.indicator.empty': 'เธขเธฑเธเนเธกเนเธกเธตเธเธฑเธงเธเนเธเธเธตเน เนเธเธฃเธเนเธเธดเนเธกเธซเธฃเธทเธญเธชเธฃเนเธฒเธเธเธฑเธงเธเนเธเธเธตเนเธเนเธญเธ',
- 'dashboard.indicator.buy': 'เธเธฑเธงเธเนเธเธเธตเนเธเธฒเธฃเธเธทเนเธญ',
- 'dashboard.indicator.action.start': 'เนเธฃเธดเนเธกเธเนเธเธเธถเนเธ',
- 'dashboard.indicator.action.stop': 'เธเธดเธ',
- 'dashboard.indicator.action.edit': 'เนเธเนเนเธ',
- 'dashboard.indicator.action.delete': 'เธฅเธ',
- 'dashboard.indicator.action.backtest': 'เธเธฒเธฃเธเธเธชเธญเธเธขเนเธญเธเธซเธฅเธฑเธ',
- 'dashboard.indicator.status.normal': 'เธเธเธเธด',
- 'dashboard.indicator.status.normalPermanent': 'เธเธเธเธด (เนเธเนเนเธเนเธเธฒเธงเธฃ)',
- 'dashboard.indicator.status.expired': 'เธซเธกเธเธญเธฒเธขเธธเนเธฅเนเธง',
- 'dashboard.indicator.expiry.permanent': 'เธกเธตเธเธฅเธเธฒเธงเธฃ',
- 'dashboard.indicator.expiry.noExpiry': 'เนเธกเนเธกเธตเนเธงเธฅเธฒเธซเธกเธเธญเธฒเธขเธธ',
- 'dashboard.indicator.expiry.expired': 'เธซเธกเธเธญเธฒเธขเธธ: {date}',
- 'dashboard.indicator.expiry.expiresOn': 'เนเธงเธฅเธฒเธซเธกเธเธญเธฒเธขเธธ: {date}',
- 'dashboard.indicator.delete.confirmTitle': 'เธขเธทเธเธขเธฑเธเธเธฒเธฃเธฅเธ',
- 'dashboard.indicator.delete.confirmContent': 'เธเธธเธเนเธเนเนเธเธซเธฃเธทเธญเนเธกเนเธงเนเธฒเธเนเธญเธเธเธฒเธฃเธฅเธเธเธฑเธงเธเนเธเธเธตเน "{name}"?เธเธฒเธฃเธเธณเนเธเธดเธเธเธฒเธฃเธเธตเนเนเธกเนเธชเธฒเธกเธฒเธฃเธเธขเนเธญเธเธเธฅเธฑเธเนเธเน',
- 'dashboard.indicator.delete.confirmOk': 'เธฅเธ',
- 'dashboard.indicator.delete.confirmCancel': 'เธขเธเนเธฅเธดเธ',
- 'dashboard.indicator.delete.success': 'เธฅเธเธชเธณเนเธฃเนเธ',
- 'dashboard.indicator.delete.failed': 'เธฅเธเนเธกเนเธชเธณเนเธฃเนเธ',
- 'dashboard.indicator.save.success': 'เธเธฑเธเธเธถเธเนเธฃเธตเธขเธเธฃเนเธญเธขเนเธฅเนเธง',
- 'dashboard.indicator.save.failed': 'เธเธฑเธเธเธถเธเธฅเนเธกเนเธซเธฅเธง',
- 'dashboard.indicator.error.loadWatchlistFailed': 'เนเธกเนเธชเธฒเธกเธฒเธฃเธเนเธซเธฅเธเธซเธธเนเธเนเธชเธฃเธดเธกเนเธเน',
- 'dashboard.indicator.error.chartNotReady': 'เธชเนเธงเธเธเธฃเธฐเธเธญเธเนเธเธเธ เธนเธกเธดเนเธกเนเนเธเนเนเธเธฃเธตเธขเธกเนเธเนเธเธฒเธ เนเธเธฃเธเนเธฅเธทเธญเธเนเธเนเธฒเธซเธกเธฒเธขเธเนเธญเธเนเธฅเนเธงเธฃเธญเนเธซเนเนเธเธเธ เธนเธกเธดเนเธซเธฅเธ',
- 'dashboard.indicator.error.chartMethodNotReady': 'เธงเธดเธเธตเธชเนเธงเธเธเธฃเธฐเธเธญเธเนเธเธเธ เธนเธกเธดเนเธกเนเธเธฃเนเธญเธก เนเธเธฃเธเธฅเธญเธเธญเธตเธเธเธฃเธฑเนเธเนเธเธ เธฒเธขเธซเธฅเธฑเธ',
- 'dashboard.indicator.error.chartExecuteNotReady': 'เธงเธดเธเธตเธเธณเนเธเธดเธเธเธฒเธฃเธชเนเธงเธเธเธฃเธฐเธเธญเธเนเธเธเธ เธนเธกเธดเนเธกเนเธเธฃเนเธญเธก เนเธเธฃเธเธฅเธญเธเธญเธตเธเธเธฃเธฑเนเธเนเธเธ เธฒเธขเธซเธฅเธฑเธ',
- 'dashboard.indicator.error.parseFailed': 'เนเธกเนเธชเธฒเธกเธฒเธฃเธเนเธขเธเธงเธดเนเธเธฃเธฒเธฐเธซเนเนเธเนเธ Python',
- 'dashboard.indicator.error.parseFailedCheck': 'เนเธกเนเธชเธฒเธกเธฒเธฃเธเนเธขเธเธงเธดเนเธเธฃเธฒเธฐเธซเนเนเธเนเธ Python เนเธเน เนเธเธฃเธเธเธฃเธงเธเธชเธญเธเธฃเธนเธเนเธเธเนเธเนเธ',
- 'dashboard.indicator.error.addIndicatorFailed': 'เนเธกเนเธชเธฒเธกเธฒเธฃเธเนเธเธดเนเธกเธเธฑเธงเธเนเธเธเธตเนเนเธเน',
- 'dashboard.indicator.error.runIndicatorFailed': 'เธเธฑเธงเธเนเธเธเธตเนเธเธฒเธฃเธเธณเธเธฒเธเธฅเนเธกเนเธซเธฅเธง',
- 'dashboard.indicator.error.pleaseLogin': 'เธเธฃเธธเธเธฒเนเธเนเธฒเธชเธนเนเธฃเธฐเธเธเธเนเธญเธ',
- 'dashboard.indicator.error.loadDataFailed': 'เธเธฒเธฃเนเธซเธฅเธเธเนเธญเธกเธนเธฅเธฅเนเธกเนเธซเธฅเธง',
- 'dashboard.indicator.error.loadDataFailedDesc': 'เนเธเธฃเธเธเธฃเธงเธเธชเธญเธเธเธฒเธฃเนเธเธทเนเธญเธกเธเนเธญเนเธเธฃเธทเธญเธเนเธฒเธข',
- 'dashboard.indicator.error.pythonEngineFailed': 'เนเธซเธฅเธเธเธฅเนเธ Python เธฅเนเธกเนเธซเธฅเธงเนเธฅเธฐเธเธฑเธเธเนเธเธฑเธเธเธฑเธงเธเนเธเธเธตเนเธญเธฒเธเนเธกเนเธเธฃเนเธญเธกเนเธเนเธเธฒเธ',
- 'dashboard.indicator.error.chartInitFailed': 'เธเธฒเธฃเนเธฃเธดเนเธกเธเนเธเนเธเธเธ เธนเธกเธดเธฅเนเธกเนเธซเธฅเธง',
- 'dashboard.indicator.warning.enterCode': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธฃเธซเธฑเธชเธเธฑเธงเธเนเธเธเธตเนเธเนเธญเธ',
- 'dashboard.indicator.warning.pyodideLoadFailed': 'เนเธเธฃเนเธเธฃเธก Python เนเธกเนเธชเธฒเธกเธฒเธฃเธเนเธซเธฅเธเนเธเน',
- 'dashboard.indicator.warning.pyodideLoadFailedDesc': 'เธเธธเธเธชเธกเธเธฑเธเธดเธเธตเนเนเธกเนเธชเธฒเธกเธฒเธฃเธเนเธเนเนเธเนเนเธเธ เธนเธกเธดเธ เธฒเธเธซเธฃเธทเธญเธชเธ เธฒเธเนเธงเธเธฅเนเธญเธกเนเธเธฃเธทเธญเธเนเธฒเธขเธเธฑเธเธเธธเธเธฑเธเธเธญเธเธเธธเธ',
- 'dashboard.indicator.warning.chartNotInitialized': 'เนเธเธเธ เธนเธกเธดเนเธกเนเนเธเนเนเธเธฃเธตเธขเธกเนเธเนเธเธฒเธเนเธฅเธฐเนเธกเนเธชเธฒเธกเธฒเธฃเธเนเธเนเนเธเธฃเธทเนเธญเธเธกเธทเธญเธงเธฒเธเนเธชเนเธเนเธเน',
- 'dashboard.indicator.success.runIndicator': 'เธเธฑเธงเธเนเธเธเธตเนเธเธณเธเธฒเธเธชเธณเนเธฃเนเธ',
- 'dashboard.indicator.success.clearDrawings': 'เธฅเนเธฒเธเธ เธฒเธเธงเธฒเธเนเธชเนเธเธเธฑเนเธเธซเธกเธเนเธฅเนเธง',
- 'dashboard.indicator.sma': 'SMA (เธเธธเธเธเนเธฒเธเธชเธกเธเนเธฒเนเธเธฅเธตเนเธขเนเธเธฅเธทเนเธญเธเธเธตเน)',
- 'dashboard.indicator.ema': 'EMA (เธเธธเธเธเนเธฒเธเธชเธกเธเนเธฒเนเธเธฅเธตเนเธขเนเธเธฅเธทเนเธญเธเธเธตเนเนเธญเนเธเธเนเนเธเนเธเธเนเธเธตเธขเธฅ)',
- 'dashboard.indicator.rsi': 'RSI (เธเธงเธฒเธกเนเธฃเธเธชเธฑเธกเธเธฑเธเธเน)',
- 'dashboard.indicator.macd': 'MACD',
- 'dashboard.indicator.bb': 'เนเธเธฅเธดเธเนเธเธญเธฃเน เนเธเธเธเน',
- 'dashboard.indicator.atr': 'ATR (เธเนเธงเธเธเธตเนเนเธเนเธเธฃเธดเธเนเธเธฅเธตเนเธข)',
- 'dashboard.indicator.cci': 'CCI (เธเธฑเธเธเธตเธเนเธญเธเธชเธดเธเธเนเธฒเนเธ เธเธ เธฑเธเธเน)',
- 'dashboard.indicator.williams': 'เธงเธดเธฅเนเธฅเธตเธขเธกเธชเน %R (เธเธฑเธงเธเนเธเธเธตเนเธงเธดเธฅเนเธฅเธตเธขเธกเธชเน)',
- 'dashboard.indicator.mfi': 'MFI (เธเธฑเธเธเธตเธเธฒเธฃเนเธซเธฅเธเธญเธเนเธเธดเธ)',
- 'dashboard.indicator.adx': 'ADX (เธเธฑเธเธเธตเนเธเธงเนเธเนเธกเนเธเธฅเธตเนเธข)',
- 'dashboard.indicator.obv': 'OBV (เธเธฅเธทเนเธเธเธฅเธฑเธเธเธฒเธ)',
- 'dashboard.indicator.adosc': 'ADOSC (เธญเธญเธชเธเธดเธฅเนเธฅเนเธเธญเธฃเนเธชเธฐเธชเธก/เธชเนเธ)',
- 'dashboard.indicator.ad': 'AD (เนเธชเนเธเธเธฒเธฃเธชเธฐเธชเธก/เธเธฒเธฃเธเธฃเธฐเธเธฒเธข)',
- 'dashboard.indicator.kdj': 'KDJ (เธเธฑเธงเธเนเธเธเธตเนเธชเธธเนเธก)',
- 'dashboard.indicator.signal.buy': 'เธเธทเนเธญ',
- 'dashboard.indicator.signal.sell': 'เธเธฒเธข',
- 'dashboard.indicator.signal.supertrendBuy': 'เธเธทเนเธญ SuperTrend',
- 'dashboard.indicator.signal.supertrendSell': 'เธเธฒเธข SuperTrend',
- 'dashboard.indicator.chart.kline': 'เนเธเนเธฅเธเน',
- 'dashboard.indicator.chart.volume': 'เธเธฃเธดเธกเธฒเธ',
- 'dashboard.indicator.chart.uptrend': 'เธญเธฑเธเนเธเธฃเธเธเน',
- 'dashboard.indicator.chart.downtrend': 'เนเธเธฃเธเธเนเธเธฒเธฅเธ',
- 'dashboard.indicator.tooltip.time': 'เนเธงเธฅเธฒ',
- 'dashboard.indicator.tooltip.open': 'เนเธเธดเธ',
- 'dashboard.indicator.tooltip.close': 'เธฃเธฑเธ',
- 'dashboard.indicator.tooltip.high': 'เธชเธนเธ',
- 'dashboard.indicator.tooltip.low': 'เธเนเธณ',
- 'dashboard.indicator.tooltip.volume': 'เธเธฃเธดเธกเธฒเธ',
- 'dashboard.indicator.drawing.line': 'เธชเนเธงเธเธเธญเธเนเธชเนเธ',
- 'dashboard.indicator.drawing.horizontalLine': 'เนเธชเนเธเนเธเธงเธเธญเธ',
- 'dashboard.indicator.drawing.verticalLine': 'เนเธชเนเธเนเธเธงเธเธฑเนเธ',
- 'dashboard.indicator.drawing.ray': 'เธฃเธฑเธเธชเธต',
- 'dashboard.indicator.drawing.straightLine': 'เนเธชเนเธเธเธฃเธ',
- 'dashboard.indicator.drawing.parallelLine': 'เนเธชเนเธเธเธเธฒเธ',
- 'dashboard.indicator.drawing.priceLine': 'เนเธชเนเธเธฃเธฒเธเธฒ',
- 'dashboard.indicator.drawing.priceChannel': 'เธเนเธญเธเธฃเธฒเธเธฒ',
- 'dashboard.indicator.drawing.fibonacciLine': 'เนเธชเนเธเธเธตเนเธเธเธฑเธเธเธต',
- 'dashboard.indicator.drawing.clearAll': 'เธฅเนเธฒเธเธ เธฒเธเธงเธฒเธเนเธชเนเธเธเธฑเนเธเธซเธกเธ',
- 'dashboard.indicator.market.USStock': 'เธซเธธเนเธเธชเธซเธฃเธฑเธ',
- 'dashboard.indicator.market.Crypto': 'เธชเธเธธเธฅเนเธเธดเธเธเธดเธเธดเธเธฑเธฅ',
- 'dashboard.indicator.market.Forex': 'เธเธญเนเธฃเนเธเธเน',
- 'dashboard.indicator.market.Futures': 'เธเธดเธงเนเธเธญเธฃเนเธช',
- 'dashboard.indicator.create': 'เธชเธฃเนเธฒเธเธเธฑเธงเธเนเธเธเธตเน',
- 'dashboard.indicator.editor.title': 'เธชเธฃเนเธฒเธ/เนเธเนเนเธเธเธฑเธงเธเนเธเธเธตเน',
- 'dashboard.indicator.editor.name': 'เธเธทเนเธญเธเธฑเธงเธเนเธเธเธตเน',
- 'dashboard.indicator.editor.nameRequired': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธทเนเธญเธเธฑเธงเธเนเธเธเธตเน',
- 'dashboard.indicator.editor.namePlaceholder': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธทเนเธญเธเธฑเธงเธเนเธเธเธตเน',
- 'dashboard.indicator.editor.description': 'เธเธณเธญเธเธดเธเธฒเธขเธเธฑเธงเธเนเธเธเธตเน',
- 'dashboard.indicator.editor.descriptionPlaceholder': 'เนเธเธฃเธเธเนเธญเธเธเธณเธญเธเธดเธเธฒเธขเธเธญเธเธเธฑเธงเธเนเธเธเธตเน (เธเธฑเธงเนเธฅเธทเธญเธ)',
- 'dashboard.indicator.editor.code': 'เธฃเธซเธฑเธชเธซเธฅเธฒเธก',
- 'dashboard.indicator.editor.codeRequired': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธฃเธซเธฑเธชเธเธฑเธงเธเนเธเธเธตเน',
- 'dashboard.indicator.editor.codePlaceholder': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธฃเธซเธฑเธชเนเธเธเธญเธ',
- 'dashboard.indicator.editor.run': 'เธงเธดเนเธ',
- 'dashboard.indicator.editor.runHint': 'เธเธฅเธดเธเธเธธเนเธกเนเธฃเธตเธขเธเนเธเนเนเธเธทเนเธญเธเธนเธเธฑเธงเธญเธขเนเธฒเธเนเธญเธเนเธเธเธเนเธเธฑเธงเธเนเธเธเธตเนเธเธเนเธเธเธ เธนเธกเธดเนเธชเนเธ K',
- 'dashboard.indicator.editor.guide': 'เธเธนเนเธกเธทเธญเธเธฒเธฃเธเธฑเธเธเธฒ',
- 'dashboard.indicator.editor.guideTitle': 'เธเธนเนเธกเธทเธญเธเธฒเธฃเธเธฑเธเธเธฒเธเธฑเธงเธเนเธเธเธตเน Python',
- 'dashboard.indicator.editor.save': 'เธเธฑเธเธเธถเธ',
- 'dashboard.indicator.editor.cancel': 'เธขเธเนเธฅเธดเธ',
- 'dashboard.indicator.editor.unnamed': 'เธเธฑเธงเธเนเธเธเธตเนเธเธตเนเนเธกเนเธกเธตเธเธทเนเธญ',
- 'dashboard.indicator.editor.publishToCommunity': 'เนเธเธชเธเนเนเธเธเธตเนเธเธธเธกเธเธ',
- 'dashboard.indicator.editor.publishToCommunityHint': 'เนเธกเธทเนเธญเนเธเธขเนเธเธฃเนเนเธฅเนเธง เธเธนเนเนเธเนเธฃเธฒเธขเธญเธทเนเธเธเธฐเธชเธฒเธกเธฒเธฃเธเธเธนเนเธฅเธฐเนเธเนเธเธฑเธงเธเนเธเธเธตเนเธเธญเธเธเธธเธเนเธเธเธธเธกเธเธเนเธเน',
- 'dashboard.indicator.editor.indicatorType': 'เธเธฃเธฐเนเธ เธเธเธฑเธงเธเนเธเธเธตเน',
- 'dashboard.indicator.editor.indicatorTypeRequired': 'เนเธเธฃเธเนเธฅเธทเธญเธเธเธฃเธฐเนเธ เธเธเธฑเธงเธเนเธเธเธตเน',
- 'dashboard.indicator.editor.indicatorTypePlaceholder': 'เนเธเธฃเธเนเธฅเธทเธญเธเธเธฃเธฐเนเธ เธเธเธฑเธงเธเนเธเธเธตเน',
- 'dashboard.indicator.editor.previewImage': 'เธเธนเธเธฑเธงเธญเธขเนเธฒเธ',
- 'dashboard.indicator.editor.uploadImage': 'เธญเธฑเธเนเธซเธฅเธเธฃเธนเธเธ เธฒเธ',
- 'dashboard.indicator.editor.previewImageHint': 'เธเธเธฒเธเธเธตเนเนเธเธฐเธเธณ: 800x400 เนเธกเนเนเธเธดเธ 2MB',
- 'dashboard.indicator.editor.pricing': 'เธฃเธฒเธเธฒเธเธฒเธข (QDT)',
- 'dashboard.indicator.editor.pricingType.free': 'เธเธฃเธต',
- 'dashboard.indicator.editor.pricingType.permanent': 'เธเธฒเธงเธฃ',
- 'dashboard.indicator.editor.pricingType.monthly': 'เธเธฒเธฃเธเธณเธฃเธฐเนเธเธดเธเธฃเธฒเธขเนเธเธทเธญเธ',
- 'dashboard.indicator.editor.price': 'เธฃเธฒเธเธฒ',
- 'dashboard.indicator.editor.priceRequired': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธฃเธฒเธเธฒ',
- 'dashboard.indicator.editor.pricePlaceholder': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธฃเธฒเธเธฒ',
- 'dashboard.indicator.editor.pricingHint': 'เนเธกเนเธงเนเธฒเธฃเธฒเธเธฒเธเธญเธเธเธฑเธงเธเนเธเธเธตเนเธเธฃเธตเธเธฐเนเธเนเธ 0 เนเธเนเนเธเธฅเธเธเธญเธฃเนเธกเธเธฐเนเธซเนเธฃเธฒเธเธงเธฑเธฅเนเธเนเธเธธเธ (QDT) เธเธฒเธกเธเธฒเธฃเนเธเนเธเธฑเธงเธเนเธเธเธตเนเนเธฅเธฐเธญเธฑเธเธฃเธฒเธเธฒเธฃเธเธกเนเธเธขเธเธญเธเธเธธเธ',
- 'dashboard.indicator.editor.aiGenerate': 'เธฃเธธเนเธเธญเธฑเธเธเธฃเธดเธขเธฐ',
- 'dashboard.indicator.editor.aiPromptPlaceholder': 'เธเธญเธเธเธงเธฒเธกเธเธดเธเธเธญเธเธเธธเธเธกเธฒเนเธซเนเธเธฑเธ เนเธฅเนเธงเธเธฑเธเธเธฐเธชเธฃเนเธฒเธเนเธเนเธเธเธฑเธงเธเนเธเธเธตเน Python เนเธซเนเธเธฑเธเธเธธเธ',
- 'dashboard.indicator.editor.aiGenerateBtn': 'AI เธชเธฃเนเธฒเธเนเธเนเธ',
- 'dashboard.indicator.editor.aiPromptRequired': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธงเธฒเธกเธเธดเธเธเธญเธเธเธธเธ',
- 'dashboard.indicator.editor.aiGenerateSuccess': 'เธเธฒเธฃเธชเธฃเนเธฒเธเธฃเธซเธฑเธชเธชเธณเนเธฃเนเธ',
- 'dashboard.indicator.editor.aiGenerateError': 'เธเธฒเธฃเธชเธฃเนเธฒเธเนเธเนเธเธฅเนเธกเนเธซเธฅเธง เนเธเธฃเธเธฅเธญเธเธญเธตเธเธเธฃเธฑเนเธเนเธเธ เธฒเธขเธซเธฅเธฑเธ',
- 'dashboard.indicator.backtest.title': 'เธเธฑเธงเธเนเธเธเธตเนเธขเนเธญเธเธเธฅเธฑเธ',
- 'dashboard.indicator.backtest.config': 'เธเธฒเธฃเธฒเธกเธดเนเธเธญเธฃเนเธเธฒเธฃเธเธเธชเธญเธเธขเนเธญเธเธเธฅเธฑเธ',
- 'dashboard.indicator.backtest.startDate': 'เธงเธฑเธเธเธตเนเนเธฃเธดเนเธกเธเนเธ',
- 'dashboard.indicator.backtest.endDate': 'เธงเธฑเธเธเธตเนเธชเธดเนเธเธชเธธเธ',
- 'dashboard.indicator.backtest.selectStartDate': 'เนเธฅเธทเธญเธเธงเธฑเธเธเธตเนเนเธฃเธดเนเธกเธเนเธ',
- 'dashboard.indicator.backtest.selectEndDate': 'เนเธฅเธทเธญเธเธงเธฑเธเธเธตเนเธชเธดเนเธเธชเธธเธ',
- 'dashboard.indicator.backtest.startDateRequired': 'เนเธเธฃเธเนเธฅเธทเธญเธเธงเธฑเธเธเธตเนเนเธฃเธดเนเธกเธเนเธ',
- 'dashboard.indicator.backtest.endDateRequired': 'เนเธเธฃเธเนเธฅเธทเธญเธเธงเธฑเธเธเธตเนเธชเธดเนเธเธชเธธเธ',
- 'dashboard.indicator.backtest.initialCapital': 'เธเธธเธเนเธฃเธดเนเธกเธเนเธ',
- 'dashboard.indicator.backtest.initialCapitalRequired': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเนเธเธดเธเธเธธเธเนเธฃเธดเนเธกเธเนเธ',
- 'dashboard.indicator.backtest.commission': 'เธเนเธฒเธเธฃเธฃเธกเนเธเธตเธขเธกเธเธฒเธฃเธเธฑเธเธเธฒเธฃ',
- 'dashboard.indicator.backtest.leverage': 'เธญเธฑเธเธฃเธฒเธชเนเธงเธเนเธฅเนเธงเธญเนเธฃเธ',
- 'dashboard.indicator.backtest.tradeDirection': 'เธเธดเธจเธเธฒเธเธเธฒเธฃเธเธทเนเธญเธเธฒเธข',
- 'dashboard.indicator.backtest.longOnly': 'เธขเธฒเธงเนเธ',
- 'dashboard.indicator.backtest.shortOnly': 'เธชเธฑเนเธ',
- 'dashboard.indicator.backtest.both': 'เธชเธญเธเธเธฒเธ',
- 'dashboard.indicator.backtest.run': 'เนเธฃเธดเนเธกเธเธฒเธฃเธเธเธชเธญเธเธขเนเธญเธเธซเธฅเธฑเธ',
- 'dashboard.indicator.backtest.rerun': 'เธเธเธชเธญเธเธขเนเธญเธเธซเธฅเธฑเธเธญเธตเธเธเธฃเธฑเนเธ',
- 'dashboard.indicator.backtest.close': 'เธเธดเธ',
- 'dashboard.indicator.backtest.running': 'เธญเธขเธนเนเธฃเธฐเธซเธงเนเธฒเธเธเธฒเธฃเธเธเธชเธญเธเธเธฑเธงเธเนเธเธเธตเนเธขเนเธญเธเธเธฅเธฑเธ...',
- 'dashboard.indicator.backtest.results': 'เธเธฅเธเธฒเธฃเธเธเธชเธญเธเธขเนเธญเธเธซเธฅเธฑเธ',
- 'dashboard.indicator.backtest.totalReturn': 'เธเธฅเธเธญเธเนเธเธเธฃเธงเธก',
- 'dashboard.indicator.backtest.annualReturn': 'เธฃเธฒเธขเนเธเนเธเนเธญเธเธต',
- 'dashboard.indicator.backtest.maxDrawdown': 'เธเธฒเธฃเนเธเธดเธเธเธญเธเธชเธนเธเธชเธธเธ',
- 'dashboard.indicator.backtest.sharpeRatio': 'เธญเธฑเธเธฃเธฒเธชเนเธงเธเธเธงเธฒเธกเธเธกเธเธฑเธ',
- 'dashboard.indicator.backtest.winRate': 'เธญเธฑเธเธฃเธฒเธเธฒเธฃเธเธเธฐ',
- 'dashboard.indicator.backtest.profitFactor': 'เธญเธฑเธเธฃเธฒเธชเนเธงเธเธเธณเนเธฃ-เธเธฒเธเธเธธเธ',
- 'dashboard.indicator.backtest.totalTrades': 'เธเธณเธเธงเธเธเธธเธฃเธเธฃเธฃเธก',
- 'dashboard.indicator.totalReturn': 'เธเธฅเธเธญเธเนเธเธเธฃเธงเธก',
- 'dashboard.indicator.annualReturn': 'เธญเธฑเธเธฃเธฒเธเธฅเธเธญเธเนเธเธเธเนเธญเธเธต',
- 'dashboard.indicator.maxDrawdown': 'เธเธฒเธฃเนเธเธดเธเธเธญเธเธชเธนเธเธชเธธเธ',
- 'dashboard.indicator.sharpeRatio': 'เธญเธฑเธเธฃเธฒเธชเนเธงเธเธเธงเธฒเธกเธเธกเธเธฑเธ',
- 'dashboard.indicator.winRate': 'เธญเธฑเธเธฃเธฒเธเธฒเธฃเธเธเธฐ',
- 'dashboard.indicator.profitFactor': 'เธญเธฑเธเธฃเธฒเธชเนเธงเธเธเธณเนเธฃ-เธเธฒเธเธเธธเธ',
- 'dashboard.indicator.totalTrades': 'เธเธณเธเธงเธเธเธธเธฃเธเธฃเธฃเธกเธเธฑเนเธเธซเธกเธ',
- 'dashboard.indicator.backtest.totalCommission': 'เธเนเธฒเธเธฃเธฃเธกเนเธเธตเธขเธกเธเธฒเธฃเธเธฑเธเธเธฒเธฃเธเธฑเนเธเธซเธกเธ',
- 'dashboard.indicator.backtest.equityCurve': 'เนเธชเนเธเธญเธฑเธเธฃเธฒเธเธฅเธเธญเธเนเธเธ',
- 'dashboard.indicator.backtest.strategy': 'เธเธฑเธงเธเธตเนเธงเธฑเธเธฃเธฒเธขเนเธเน',
- 'dashboard.indicator.backtest.benchmark': 'เธเธฅเธเธญเธเนเธเธเธกเธฒเธเธฃเธเธฒเธ',
- 'dashboard.indicator.backtest.tradeHistory': 'เธเธฃเธฐเธงเธฑเธเธดเธเธฒเธฃเธเธณเธเธธเธฃเธเธฃเธฃเธก',
- 'dashboard.indicator.backtest.tradeTime': 'เนเธงเธฅเธฒ',
- 'dashboard.indicator.backtest.tradeType': 'เธเธดเธกเธเน',
- 'dashboard.indicator.backtest.buy': 'เธเธทเนเธญ',
- 'dashboard.indicator.backtest.sell': 'เธเธฒเธข',
- 'dashboard.indicator.backtest.liquidation': 'เธเธฒเธฃเธเธณเธฃเธฐเธเธฑเธเธเธต',
- 'dashboard.indicator.backtest.openLong': 'เนเธเธดเธเธขเธฒเธงเน',
- 'dashboard.indicator.backtest.closeLong': 'เธเธดเธเธเธฑเธง',
- 'dashboard.indicator.backtest.closeLongStop': 'เนเธเธฅเนเธเธถเธเธฃเธฐเธขเธฐเธขเธฒเธง (เธซเธขเธธเธเธเธฒเธฃเธชเธนเธเนเธชเธตเธข)',
- 'dashboard.indicator.backtest.closeLongProfit': 'เธเธดเธเธกเธฒเธเธเธถเนเธ (เธเธณเธเธณเนเธฃ)',
- 'dashboard.indicator.backtest.addLong': 'เนเธเธดเนเธกเธเธณเนเธซเธเนเธเธขเธฒเธง',
- 'dashboard.indicator.backtest.openShort': 'เนเธเธดเธเธชเธฑเนเธ',
- 'dashboard.indicator.backtest.closeShort': 'เธงเนเธฒเธเนเธเธฅเนเธฒ',
- 'dashboard.indicator.backtest.closeShortStop': 'เธเธดเธ (เธซเธขเธธเธเธเธฒเธฃเธชเธนเธเนเธชเธตเธข)',
- 'dashboard.indicator.backtest.closeShortProfit': 'เธเธดเธ (เธเธณเธเธณเนเธฃ)',
- 'dashboard.indicator.backtest.addShort': 'เนเธเธดเนเธกเธเธณเนเธซเธเนเธเธชเธฑเนเธ',
- 'dashboard.indicator.backtest.price': 'เธฃเธฒเธเธฒ',
- 'dashboard.indicator.backtest.amount': 'เธเธฃเธดเธกเธฒเธ',
- 'dashboard.indicator.backtest.balance': 'เธขเธญเธเนเธเธดเธเนเธเธเธฑเธเธเธต',
- 'dashboard.indicator.backtest.profit': 'เธเธณเนเธฃเนเธฅเธฐเธเธฒเธเธเธธเธ',
- 'dashboard.indicator.backtest.success': 'เธเธฒเธฃเธเธเธชเธญเธเธขเนเธญเธเธเธฅเธฑเธเนเธชเธฃเนเธเธชเธกเธเธนเธฃเธเน',
- 'dashboard.indicator.backtest.failed': 'เธเธฒเธฃเธเธเธชเธญเธเธขเนเธญเธเธเธฅเธฑเธเธฅเนเธกเนเธซเธฅเธง เนเธเธฃเธเธฅเธญเธเธญเธตเธเธเธฃเธฑเนเธเนเธเธ เธฒเธขเธซเธฅเธฑเธ',
- 'dashboard.indicator.backtest.noIndicatorCode': 'เนเธกเนเธกเธตเธฃเธซเธฑเธชเธเธตเนเธเธเธชเธญเธเธขเนเธญเธเธเธฅเธฑเธเนเธเนเธชเธณเธซเธฃเธฑเธเธเธฑเธงเธเนเธเธเธตเนเธเธตเน',
- 'dashboard.indicator.backtest.noSymbol': 'เนเธเธฃเธเนเธฅเธทเธญเธเนเธเนเธฒเธซเธกเธฒเธขเธเธฒเธฃเธเธณเธเธธเธฃเธเธฃเธฃเธกเธเนเธญเธ',
- 'dashboard.indicator.backtest.dateRangeExceeded': 'เธเนเธงเธเนเธงเธฅเธฒเธเธฒเธฃเธเธเธชเธญเธเธขเนเธญเธเธซเธฅเธฑเธเนเธเธดเธเธเธตเธเธเธณเธเธฑเธ: {timeframe} เธฃเธญเธเธชเธฒเธกเธฒเธฃเธเธเธเธชเธญเธเธขเนเธญเธเธซเธฅเธฑเธเนเธเนเธชเธนเธเธชเธธเธ {maxRange}',
- 'dashboard.indicator.backtest.dateRangeExceededDays': 'Backtest range exceeds limit: {timeframe} max {maxRange} ({maxDays} days)',
- 'dashboard.indicator.backtest.metaLine': 'Symbol: {symbol} | Market: {market} | Timeframe: {timeframe}',
- 'dashboard.indicator.backtest.savedRunId': 'Backtest saved. Run ID: {id}',
- 'dashboard.indicator.backtest.prev': 'Previous',
- 'dashboard.indicator.backtest.next': 'Next',
- 'dashboard.indicator.backtest.hint.entryPctMax': 'Max entry: {maxPct}% (reserve budget for future scale-ins)',
- 'dashboard.indicator.backtest.steps.strategy.title': 'Strategy',
- 'dashboard.indicator.backtest.steps.strategy.desc': 'Position sizing & risk controls',
- 'dashboard.indicator.backtest.steps.trading.title': 'Trading settings',
- 'dashboard.indicator.backtest.steps.trading.desc': 'Time range, capital, fees, leverage',
- 'dashboard.indicator.backtest.steps.results.title': 'Results',
- 'dashboard.indicator.backtest.steps.results.desc': 'Backtest output',
- 'dashboard.indicator.backtest.panel.risk': 'Risk management (SL/TP/Trailing)',
- 'dashboard.indicator.backtest.panel.scale': 'Scale in / DCA (trend & mean-reversion)',
- 'dashboard.indicator.backtest.panel.reduce': 'Reduce position (trend & adverse)',
- 'dashboard.indicator.backtest.panel.position': 'Position sizing',
- 'dashboard.indicator.backtest.field.stopLossPct': 'Stop Loss (%)',
- 'dashboard.indicator.backtest.field.takeProfitPct': 'Take Profit (%)',
- 'dashboard.indicator.backtest.field.trailingEnabled': 'Trailing stop / take profit',
- 'dashboard.indicator.backtest.field.trailingStopPct': 'Trailing drawdown (%)',
- 'dashboard.indicator.backtest.field.trailingActivationPct': 'Trailing activation (%)',
- 'dashboard.indicator.backtest.field.slippage': 'Slippage (%)',
- 'dashboard.indicator.backtest.field.trendAddEnabled': 'Trend-following scale-in',
- 'dashboard.indicator.backtest.field.dcaAddEnabled': 'Mean-reversion scale-in',
- 'dashboard.indicator.backtest.field.trendAddStepPct': 'Scale-in trigger (%)',
- 'dashboard.indicator.backtest.field.dcaAddStepPct': 'Scale-in trigger (%)',
- 'dashboard.indicator.backtest.field.trendAddSizePct': 'Scale-in size (% of capital)',
- 'dashboard.indicator.backtest.field.dcaAddSizePct': 'Scale-in size (% of capital)',
- 'dashboard.indicator.backtest.field.trendAddMaxTimes': 'Max scale-in times',
- 'dashboard.indicator.backtest.field.dcaAddMaxTimes': 'Max scale-in times',
- 'dashboard.indicator.backtest.field.trendReduceEnabled': 'Trend reduce',
- 'dashboard.indicator.backtest.field.adverseReduceEnabled': 'Adverse reduce',
- 'dashboard.indicator.backtest.field.trendReduceStepPct': 'Trend trigger (%)',
- 'dashboard.indicator.backtest.field.adverseReduceStepPct': 'Adverse trigger (%)',
- 'dashboard.indicator.backtest.field.trendReduceSizePct': 'Reduce size (% of position)',
- 'dashboard.indicator.backtest.field.adverseReduceSizePct': 'Adverse reduce size (% of position)',
- 'dashboard.indicator.backtest.field.trendReduceMaxTimes': 'Max trend reduce times',
- 'dashboard.indicator.backtest.field.adverseReduceMaxTimes': 'Max adverse reduce times',
- 'dashboard.indicator.backtest.field.entryPct': 'Entry size (% of capital)',
- 'dashboard.indicator.backtest.field.minOrderPct': 'Min order size (% of capital) (optional)',
- 'dashboard.indicator.backtest.closeLongTrailing': 'Close Long (Trailing)',
- 'dashboard.indicator.backtest.reduceLong': 'Reduce Long',
- 'dashboard.indicator.backtest.closeShortTrailing': 'Close Short (Trailing)',
- 'dashboard.indicator.backtest.reduceShort': 'Reduce Short',
- 'dashboard.docs.title': 'เธจเธนเธเธขเนเนเธญเธเธชเธฒเธฃ',
- 'dashboard.docs.search.placeholder': 'เธเนเธเธซเธฒเนเธญเธเธชเธฒเธฃ...',
- 'dashboard.docs.category.all': 'เธเธฑเนเธเธซเธกเธ',
- 'dashboard.docs.category.guide': 'เธเธนเนเธกเธทเธญเธเธฒเธฃเธเธฑเธเธเธฒ',
- 'dashboard.docs.category.api': 'เนเธญเธเธชเธฒเธฃเธเธฃเธฐเธเธญเธ API',
- 'dashboard.docs.category.tutorial': 'เธเธเธเนเธงเธขเธชเธญเธ',
- 'dashboard.docs.category.faq': 'เธเธณเธเธฒเธกเธเธตเนเธเธเธเนเธญเธข',
- 'dashboard.docs.featured.title': 'เนเธญเธเธชเธฒเธฃเนเธเธฐเธเธณ',
- 'dashboard.docs.featured.tag': 'เนเธเธฐเธเธณ',
- 'dashboard.docs.list.views': 'เนเธฃเธตเธขเธเธเธน',
- 'dashboard.docs.list.author': 'เธเธนเนเนเธเธตเธขเธ',
- 'dashboard.docs.list.empty': 'เธขเธฑเธเนเธกเนเธกเธตเนเธญเธเธชเธฒเธฃ',
- 'dashboard.docs.list.backToAll': 'เธเธฅเธฑเธเนเธเธเธตเนเนเธญเธเธชเธฒเธฃเธเธฑเนเธเธซเธกเธ',
- 'dashboard.docs.list.total': 'เนเธญเธเธชเธฒเธฃเธเธฑเนเธเธซเธกเธ {count}',
- 'dashboard.docs.detail.back': 'เธเธฅเธฑเธเนเธเธขเธฑเธเธฃเธฒเธขเธเธฒเธฃเนเธญเธเธชเธฒเธฃ',
- 'dashboard.docs.detail.updatedAt': 'เธญเธฑเธเนเธเธเนเธกเธทเนเธญ',
- 'dashboard.docs.detail.related': 'เนเธญเธเธชเธฒเธฃเธเธตเนเนเธเธตเนเธขเธงเธเนเธญเธ',
- 'dashboard.docs.detail.notFound': 'เนเธกเนเธกเธตเนเธญเธเธชเธฒเธฃเธญเธขเธนเน',
- 'dashboard.docs.detail.error': 'เนเธญเธเธชเธฒเธฃเนเธกเนเธกเธตเธญเธขเธนเนเธซเธฃเธทเธญเธเธนเธเธฅเธเนเธเนเธฅเนเธง',
- 'dashboard.docs.search.result': 'เธเธฅเธเธฒเธฃเธเนเธเธซเธฒ',
- 'dashboard.docs.search.keyword': 'เธเธณเธซเธฅเธฑเธ',
- 'community.filter.indicatorType': 'เธเธฃเธฐเนเธ เธเธเธฑเธงเธเนเธเธเธตเน',
- 'community.filter.all': 'เธเธฑเนเธเธซเธกเธ',
- 'community.filter.other': 'เธเธฑเธงเนเธฅเธทเธญเธเธญเธทเนเธเน',
- 'community.filter.pricing': 'เธเธฃเธฐเนเธ เธเธเธฒเธฃเธเธณเธซเธเธเธฃเธฒเธเธฒ',
- 'community.filter.allPricing': 'เธฃเธฒเธเธฒเธเธฑเนเธเธซเธกเธ',
- 'community.filter.sortBy': 'เธเธฑเธเนเธฃเธตเธขเธเธเธฒเธก',
- 'community.filter.search': 'เธเนเธเธซเธฒ',
- 'community.filter.searchPlaceholder': 'เธเนเธเธซเธฒเธเธทเนเธญเนเธกเธเธฃเธดเธ',
- 'community.indicatorType.trend': 'เธเธฃเธฐเนเธ เธเนเธเธฃเธเธเน',
- 'community.indicatorType.momentum': 'เธเธฃเธฐเนเธ เธเนเธกเนเธกเธเธเธฑเธก',
- 'community.indicatorType.volatility': 'เธเธงเธฒเธกเธเธฑเธเธเธงเธ',
- 'community.indicatorType.volume': 'เธเธฃเธดเธกเธฒเธ',
- 'community.indicatorType.custom': 'เธเธฃเธฑเธเนเธเนเธ',
- 'community.pricing.free': 'เธเธฃเธต',
- 'community.pricing.paid': 'เธเนเธฒเธข',
- 'community.sort.downloads': 'เธเธฒเธงเธเนเนเธซเธฅเธ',
- 'community.sort.rating': 'เธเธฐเนเธเธ',
- 'community.sort.newest': 'เธฃเธธเนเธเธฅเนเธฒเธชเธธเธ',
- 'community.pagination.total': 'เธเธฑเธงเธเธตเนเธงเธฑเธเธเธฑเนเธเธซเธกเธ {total}',
- 'community.noDescription': 'เธขเธฑเธเนเธกเนเธกเธตเธเธณเธญเธเธดเธเธฒเธข',
- 'community.detail.type': 'เธเธดเธกเธเน',
- 'community.detail.pricing': 'เธฃเธฒเธเธฒ',
- 'community.detail.rating': 'เธเธฐเนเธเธ',
- 'community.detail.downloads': 'เธเธฒเธงเธเนเนเธซเธฅเธ',
- 'community.detail.author': 'เธเธนเนเนเธเธตเธขเธ',
- 'community.detail.description': 'เธเธฒเธฃเนเธเธฐเธเธณ',
- 'community.detail.detailContent': 'เธเธณเธญเธเธดเธเธฒเธขเนเธเธขเธฅเธฐเนเธญเธตเธขเธ',
- 'community.detail.backtestStats': 'เธชเธเธดเธเธดเธเธฒเธฃเธเธเธชเธญเธเธขเนเธญเธเธซเธฅเธฑเธ',
- 'community.action.purchase': 'เธเธฑเธงเธเนเธเธเธตเนเธเธฒเธฃเธเธทเนเธญ',
- 'community.action.addToMyIndicators': 'เนเธเธดเนเธกเนเธเธขเธฑเธเธเธฑเธงเธเนเธเธเธตเนเธเธญเธเธเธฑเธ',
- 'community.action.favorite': 'เนเธเนเธเธฃเธงเธเธฃเธงเธก',
- 'community.action.unfavorite': 'เธขเธเนเธฅเธดเธเธฃเธฒเธขเธเธฒเธฃเนเธเธฃเธ',
- 'community.action.buyNow': 'เธเธทเนเธญเนเธฅเธข',
- 'community.action.renew': 'เธเนเธญเธญเธฒเธขเธธ',
- 'community.purchase.price': 'เธฃเธฒเธเธฒ',
- 'community.purchase.permanent': 'เธเธฒเธงเธฃ',
- 'community.purchase.monthly': 'เธเธงเธเธเธฑเธเธเธฃเน',
- 'community.purchase.confirmBuy': 'เธขเธทเธเธขเธฑเธเธเธตเนเธเธฐเธเธทเนเธญเธเธฑเธงเธเนเธเธเธตเนเธเธตเน ({price} QDT)?',
- 'community.purchase.confirmRenew': 'เธขเธทเธเธขเธฑเธเธเธตเนเธเธฐเธเนเธญเธญเธฒเธขเธธเธเธฑเธงเธเนเธเธเธตเนเธเธตเน ({price} QDT/เนเธเธทเธญเธ) เธซเธฃเธทเธญเนเธกเน',
- 'community.purchase.confirmFree': 'เธขเธทเธเธขเธฑเธเนเธเธทเนเธญเนเธเธดเนเธกเธเธฑเธงเธเนเธเธเธตเนเธเธฃเธตเธเธตเนเธซเธฃเธทเธญเนเธกเน',
- 'community.purchase.confirmTitle': 'เธขเธทเธเธขเธฑเธเธเธฒเธฃเธเธณเนเธเธดเธเธเธฒเธฃ',
- 'community.purchase.owned': 'เธเธธเธเนเธเนเธเธทเนเธญเธเธฑเธงเธเนเธเธเธตเนเธเธตเน (เนเธเนเนเธเนเธเธฒเธงเธฃ)',
- 'community.purchase.ownIndicator': 'เธเธตเนเธเธทเธญเนเธกเธเธฃเธดเธเธเธตเนเธเธธเธเนเธเธขเนเธเธฃเน',
- 'community.purchase.expired': 'เธเธฒเธฃเธชเธกเธฑเธเธฃเธเธญเธเธเธธเธเธซเธกเธเธญเธฒเธขเธธเนเธฅเนเธง',
- 'community.purchase.expiresOn': 'เนเธงเธฅเธฒเธซเธกเธเธญเธฒเธขเธธ: {date}',
- 'community.tabs.detail': 'เธฃเธฒเธขเธฅเธฐเนเธญเธตเธขเธเธเธฑเธงเธเนเธเธเธตเน',
- 'community.tabs.backtest': 'เธเนเธญเธกเธนเธฅเธเธฒเธฃเธเธเธชเธญเธเธขเนเธญเธเธซเธฅเธฑเธ',
- 'community.tabs.ratings': 'เธเธงเธฒเธกเธเธดเธเนเธซเนเธเธเธญเธเธเธนเนเนเธเน',
- 'community.rating.myRating': 'เธเธฐเนเธเธเธเธญเธเธเธฑเธ',
- 'community.rating.stars': '{count} เธเธฒเธง',
- 'community.rating.commentPlaceholder': 'เนเธเนเธเธเธฑเธเธเธฃเธฐเธชเธเธเธฒเธฃเธเนเธเธญเธเธเธธเธ...',
- 'community.rating.submit': 'เธชเนเธเนเธฃเธเธเธดเนเธ.',
- 'community.rating.modify': 'เธเธฃเธฑเธเธเธฃเธธเธเนเธซเธกเน',
- 'community.rating.saveModify': 'เธเธฑเธเธเธถเธเธเธฒเธฃเนเธเธฅเธตเนเธขเธเนเธเธฅเธ',
- 'community.rating.cancel': 'เธขเธเนเธฅเธดเธ',
- 'community.rating.selectRating': 'เนเธเธฃเธเนเธฅเธทเธญเธเธเธฒเธฃเนเธซเนเธเธฐเนเธเธ',
- 'community.rating.success': 'เนเธฃเธเธเธดเนเธเธชเธณเนเธฃเนเธ',
- 'community.rating.modifySuccess': 'เนเธเนเนเธเธเธฒเธฃเธเธฃเธงเธเธชเธญเธเนเธฃเธตเธขเธเธฃเนเธญเธขเนเธฅเนเธง',
- 'community.rating.failed': 'เธเธฒเธฃเนเธซเนเธเธฐเนเธเธเธฅเนเธกเนเธซเธฅเธง',
- 'community.rating.noRatings': 'เธขเธฑเธเนเธกเนเธกเธตเธเธงเธฒเธกเธเธดเธเนเธซเนเธ',
- 'community.backtest.note': 'เธเนเธญเธกเธนเธฅเธเนเธฒเธเธเนเธเนเธเนเธเธเธฅเธเธฒเธฃเธเธเธชเธญเธเธขเนเธญเธเธเธฅเธฑเธเนเธเธญเธเธตเธเนเธฅเธฐเธกเธตเนเธงเนเนเธเธทเนเธญเธเธฒเธฃเธญเนเธฒเธเธญเธดเธเนเธเนเธฒเธเธฑเนเธ เนเธฅเธฐเนเธกเนเนเธเนเนเธชเธเธเธเธถเธเธฃเธฒเธขเนเธเนเนเธเธญเธเธฒเธเธ',
- 'community.backtest.noData': 'เธขเธฑเธเนเธกเนเธกเธตเธเนเธญเธกเธนเธฅเธขเนเธญเธเธซเธฅเธฑเธ',
- 'community.backtest.uploadHint': 'เธเธนเนเนเธเธตเธขเธเธขเธฑเธเนเธกเนเนเธเนเธญเธฑเธเนเธซเธฅเธเธเนเธญเธกเธนเธฅ backtest',
- 'community.message.loadFailed': 'เนเธกเนเธชเธฒเธกเธฒเธฃเธเนเธซเธฅเธเธฃเธฒเธขเธเธฒเธฃเธเธฑเธงเธเนเธเธเธตเน',
- 'community.message.purchaseProcessing': 'เธเธณเธฅเธฑเธเธเธฃเธฐเธกเธงเธฅเธเธฅเธเธณเธเธญเธเธทเนเธญ...',
- 'community.message.downloadSuccess': 'เนเธเธดเนเธกเนเธกเธเธฃเธดเธเธฅเธเนเธเธฃเธฒเธขเธเธฒเธฃเนเธกเธเธฃเธดเธเธเธญเธเธเธฑเธเนเธฅเนเธง',
- 'community.message.favoriteSuccess': 'เธฃเธงเธเธฃเธงเธกเธชเธณเนเธฃเนเธ',
- 'community.message.unfavoriteSuccess': 'เธขเธเนเธฅเธดเธเธเธฒเธฃเธฃเธงเธเธฃเธงเธกเนเธฃเธตเธขเธเธฃเนเธญเธขเนเธฅเนเธง',
- 'community.message.operationSuccess': 'เธเธฒเธฃเธเธณเนเธเธดเธเธเธฒเธเธเธฃเธฐเธชเธเธเธงเธฒเธกเธชเธณเนเธฃเนเธ',
- 'community.message.operationFailed': 'เธเธฒเธฃเธเธณเนเธเธดเธเธเธฒเธฃเธฅเนเธกเนเธซเธฅเธง',
- 'community.banner.readOnly': 'เธญเนเธฒเธเธญเธขเนเธฒเธเนเธเธตเธขเธง',
- 'community.banner.loginHint': 'เธชเธณเธซเธฃเธฑเธเธเธฒเธฃเนเธเนเธฒเธชเธนเนเธฃเธฐเธเธเธซเธฃเธทเธญเธเธฒเธฃเธฅเธเธเธฐเนเธเธตเธขเธ เธเธฃเธธเธเธฒเธเธฅเธดเธเธเธธเนเธกเนเธเธทเนเธญเนเธเธขเธฑเธเธซเธเนเธฒเธญเธดเธชเธฃเธฐเนเธเธทเนเธญเธซเธฅเธตเธเนเธฅเธตเนเธขเธเธเธฑเธเธซเธฒ CSRF',
- 'community.banner.jumpButton': 'เนเธเธเธตเนเนเธเนเธฒเธชเธนเนเธฃเธฐเธเธ/เธฅเธเธเธฐเนเธเธตเธขเธ',
- 'dashboard.totalEquity': 'เธชเนเธงเธเธเธญเธเธเธนเนเธเธทเธญเธซเธธเนเธเธเธฑเนเธเธซเธกเธ',
- 'dashboard.totalPnL': 'เธเธณเนเธฃเนเธฅเธฐเธเธฒเธเธเธธเธเธเธฑเนเธเธซเธกเธ',
- 'dashboard.aiStrategies': 'เธเธฅเธขเธธเธเธเนเนเธญเนเธญ',
- 'dashboard.indicatorStrategies': 'เธเธฅเธขเธธเธเธเนเธเธฑเธงเธเนเธเธเธตเน',
- 'dashboard.running': 'เธงเธดเนเธ',
- 'dashboard.pnlHistory': 'เธเธณเนเธฃเนเธฅเธฐเธเธฒเธเธเธธเธเนเธเธญเธเธตเธ',
- 'dashboard.strategyPerformance': 'เธญเธฑเธเธฃเธฒเธชเนเธงเธเธเธณเนเธฃเนเธฅเธฐเธเธฒเธเธเธธเธเธเธญเธเธเธฅเธขเธธเธเธเน',
- 'dashboard.recentTrades': 'เธเธฒเธฃเธเธณเธเธธเธฃเธเธฃเธฃเธกเธฅเนเธฒเธชเธธเธ',
- 'dashboard.currentPositions': 'เธเธณเนเธซเธเนเธเธเธฑเธเธเธธเธเธฑเธ',
- 'dashboard.table.time': 'เนเธงเธฅเธฒ',
- 'dashboard.table.strategy': 'เธเธทเนเธญเธเธฃเธกเธเธฃเธฃเธกเน',
- 'dashboard.table.symbol': 'เนเธเนเธฒ',
- 'dashboard.table.type': 'เธเธดเธกเธเน',
- 'dashboard.table.side': 'เธเธดเธจเธเธฒเธ',
- 'dashboard.table.size': 'เนเธเธดเธเธเธญเธเนเธเธตเนเธข',
- 'dashboard.table.entryPrice': 'เธฃเธฒเธเธฒเนเธเธดเธเนเธเธฅเธตเนเธข',
- 'dashboard.table.price': 'เธฃเธฒเธเธฒ',
- 'dashboard.table.amount': 'เธเธฃเธดเธกเธฒเธ',
- 'dashboard.table.profit': 'เธเธณเนเธฃเนเธฅเธฐเธเธฒเธเธเธธเธ',
- 'dashboard.pendingOrders': 'เธเธฑเธเธเธถเธเธเธฒเธฃเธเธณเนเธเธดเธเธเธฒเธฃเธเธณเธชเธฑเนเธเธเธทเนเธญ',
- 'dashboard.totalOrders': 'เธฃเธงเธก {total} เธฃเธฒเธขเธเธฒเธฃ',
- 'dashboard.viewError': 'เธเธนเธเนเธญเธเธดเธเธเธฅเธฒเธ',
- 'dashboard.filled': 'เธเธณเนเธเธดเธเธเธฒเธฃเนเธฅเนเธง',
- 'dashboard.orderTable.time': 'เนเธงเธฅเธฒเธเธตเนเธชเธฃเนเธฒเธ',
- 'dashboard.orderTable.strategy': 'เธเธฅเธขเธธเธเธเน',
- 'dashboard.orderTable.symbol': 'เธเธนเนเนเธเธฃเธ',
- 'dashboard.orderTable.signalType': 'เธเธฃเธฐเนเธ เธเธชเธฑเธเธเธฒเธ',
- 'dashboard.orderTable.amount': 'เธเธณเธเธงเธ',
- 'dashboard.orderTable.price': 'เธฃเธฒเธเธฒเธเธตเนเธเธณเนเธเธดเธเธเธฒเธฃ',
- 'dashboard.orderTable.status': 'เธชเธเธฒเธเธฐ',
- 'dashboard.orderTable.executedAt': 'เนเธงเธฅเธฒเธเธตเนเธเธณเนเธเธดเธเธเธฒเธฃ',
- 'dashboard.signalType.openLong': 'เนเธเธดเธ Long',
- 'dashboard.signalType.openShort': 'เนเธเธดเธ Short',
- 'dashboard.signalType.closeLong': 'เธเธดเธ Long',
- 'dashboard.signalType.closeShort': 'เธเธดเธ Short',
- 'dashboard.signalType.addLong': 'เนเธเธดเนเธก Long',
- 'dashboard.signalType.addShort': 'เนเธเธดเนเธก Short',
- 'dashboard.status.pending': 'เธฃเธญเธเธณเนเธเธดเธเธเธฒเธฃ',
- 'dashboard.status.processing': 'เธเธณเธฅเธฑเธเธเธณเนเธเธดเธเธเธฒเธฃ',
- 'dashboard.status.completed': 'เนเธชเธฃเนเธเธชเธดเนเธ',
- 'dashboard.status.failed': 'เธฅเนเธกเนเธซเธฅเธง',
- 'dashboard.status.cancelled': 'เธขเธเนเธฅเธดเธเนเธฅเนเธง',
- 'dashboard.table.pnl': 'เธเธณเนเธฃเธซเธฃเธทเธญเธเธฒเธเธเธธเธเธเธตเนเธขเธฑเธเนเธกเนเนเธเธดเธเธเธถเนเธเธเธฃเธดเธ',
- 'form.basic-form.basic.title': 'เนเธเธเธเธญเธฃเนเธกเธเธทเนเธเธเธฒเธ',
- 'form.basic-form.basic.description': 'เธซเธเนเธฒเนเธเธเธเธญเธฃเนเธกเนเธเนเนเธเธทเนเธญเธฃเธงเธเธฃเธงเธกเธซเธฃเธทเธญเธเธฃเธงเธเธชเธญเธเธเนเธญเธกเธนเธฅเธเธฒเธเธเธนเนเนเธเน เนเธเธขเธเธฑเนเธงเนเธเธเธฐเนเธเนเนเธเธเธเธญเธฃเนเธกเธเธทเนเธเธเธฒเธเนเธเธชเธเธฒเธเธเธฒเธฃเธเนเธเธณเธฅเธญเธเธเธตเนเธกเธตเธฃเธฒเธขเธเธฒเธฃเธเนเธญเธกเธนเธฅเธเนเธญเธข',
- 'form.basic-form.title.label': 'เธเธทเนเธญ',
- 'form.basic-form.title.placeholder': 'เธเธฑเนเธเธเธทเนเธญเนเธซเนเนเธเนเธฒเธซเธกเธฒเธข',
- 'form.basic-form.title.required': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธทเนเธญ',
- 'form.basic-form.date.label': 'เธงเธฑเธเธเธตเนเนเธฃเธดเนเธกเธเนเธเนเธฅเธฐเธชเธดเนเธเธชเธธเธ',
- 'form.basic-form.placeholder.start': 'เธงเธฑเธเธเธตเนเนเธฃเธดเนเธกเธเนเธ',
- 'form.basic-form.placeholder.end': 'เธงเธฑเธเธเธตเนเธชเธดเนเธเธชเธธเธ',
- 'form.basic-form.date.required': 'เธเธฃเธธเธเธฒเนเธฅเธทเธญเธเธงเธฑเธเธเธตเนเนเธฃเธดเนเธกเธเนเธเนเธฅเธฐเธชเธดเนเธเธชเธธเธ',
- 'form.basic-form.goal.label': 'เธเธณเธญเธเธดเธเธฒเธขเนเธเนเธฒเธซเธกเธฒเธข',
- 'form.basic-form.goal.placeholder': 'เธเธฃเธธเธเธฒเธเนเธญเธเนเธเนเธฒเธซเธกเธฒเธขเธเธฒเธฃเธเธณเธเธฒเธเนเธเธเนเธเนเธเธเธฑเนเธเธเธญเธเธเธญเธเธเธธเธ',
- 'form.basic-form.goal.required': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธณเธญเธเธดเธเธฒเธขเนเธเนเธฒเธซเธกเธฒเธข',
- 'form.basic-form.standard.label': 'เธงเธฑเธ',
- 'form.basic-form.standard.placeholder': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธฑเธงเธเธตเนเธงเธฑเธ',
- 'form.basic-form.standard.required': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธฑเธงเธเธตเนเธงเธฑเธ',
- 'form.basic-form.client.label': 'เธฅเธนเธเธเนเธฒ',
- 'form.basic-form.client.required': 'เนเธเธฃเธเธญเธเธดเธเธฒเธขเธฅเธนเธเธเนเธฒเธเธตเนเธเธธเธเนเธซเนเธเธฃเธดเธเธฒเธฃ',
- 'form.basic-form.label.tooltip': 'เธเธนเนเธฃเธฑเธเธเธฃเธดเธเธฒเธฃเนเธเนเธฒเธซเธกเธฒเธข',
- 'form.basic-form.client.placeholder': 'เนเธเธฃเธเธญเธเธดเธเธฒเธขเธฅเธนเธเธเนเธฒเธเธตเนเธเธธเธเนเธซเนเธเธฃเธดเธเธฒเธฃ เธฅเธนเธเธเนเธฒเธ เธฒเธขเนเธเนเธเธขเธเธฃเธ @เธเธทเนเธญ/เธซเธกเธฒเธขเนเธฅเธเธเธฒเธ',
- 'form.basic-form.invites.label': 'เนเธเธดเธเธเธนเนเธงเธดเธเธฒเธฃเธเน',
- 'form.basic-form.invites.placeholder': 'เธเธฃเธธเธเธฒ @name/เธซเธกเธฒเธขเนเธฅเธเธเธเธฑเธเธเธฒเธ เนเธเธขเธเธฃเธ เธเธธเธเธชเธฒเธกเธฒเธฃเธเนเธเธดเธเนเธเนเธชเธนเธเธชเธธเธ 5 เธเธ',
- 'form.basic-form.weight.label': 'เธเนเธณเธซเธเธฑเธ',
- 'form.basic-form.weight.placeholder': 'เธเธฃเธธเธเธฒเนเธเนเธฒ',
- 'form.basic-form.public.label': 'เธเธณเธซเธเธเนเธเนเธฒเธซเธกเธฒเธขเธชเธฒเธเธฒเธฃเธเธฐ',
- 'form.basic-form.label.help': 'เธฅเธนเธเธเนเธฒเนเธฅเธฐเธเธนเนเธเธฃเธงเธเธชเธญเธเธเธฐเธเธนเธเนเธเธฃเนเนเธเธขเธเนเธฒเนเธฃเธดเนเธกเธเนเธ',
- 'form.basic-form.radio.public': 'เธชเธฒเธเธฒเธฃเธเธฐ',
- 'form.basic-form.radio.partially-public': 'เนเธเธดเธเนเธเธขเธเนเธญเธชเธฒเธเธฒเธฃเธเธฐเธเธฒเธเธชเนเธงเธ',
- 'form.basic-form.radio.private': 'เธชเนเธงเธเธเธฑเธง',
- 'form.basic-form.publicUsers.placeholder': 'เนเธเธดเธเนเธซเน',
- 'form.basic-form.option.A': 'เนเธเธทเนเธญเธเธฃเนเธงเธกเธเธฒเธ 1',
- 'form.basic-form.option.B': 'เนเธเธทเนเธญเธเธฃเนเธงเธกเธเธฒเธ 2',
- 'form.basic-form.option.C': 'เนเธเธทเนเธญเธเธฃเนเธงเธกเธเธฒเธเธชเธฒเธกเธเธ',
- 'form.basic-form.email.required': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธตเนเธญเธขเธนเนเธญเธตเนเธกเธฅเธเธญเธเธเธธเธ!',
- 'form.basic-form.email.wrong-format': 'เธฃเธนเธเนเธเธเธเธตเนเธญเธขเธนเนเธญเธตเนเธกเธฅเนเธกเนเธเธนเธเธเนเธญเธ!',
- 'form.basic-form.userName.required': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธทเนเธญเธเธนเนเนเธเน!',
- 'form.basic-form.password.required': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธฃเธซเธฑเธชเธเนเธฒเธเธเธญเธเธเธธเธ!',
- 'form.basic-form.password.twice': 'เธฃเธซเธฑเธชเธเนเธฒเธเธเธตเนเธเนเธญเธเธชเธญเธเธเธฃเธฑเนเธเนเธกเนเธเธฃเธเธเธฑเธ!',
- 'form.basic-form.strength.msg': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธญเธขเนเธฒเธเธเนเธญเธข 6 เธเธฑเธงเธญเธฑเธเธฉเธฃ เธเธฃเธธเธเธฒเธญเธขเนเธฒเนเธเนเธฃเธซเธฑเธชเธเนเธฒเธเธเธตเนเธเธฒเธเนเธเธฒเนเธเนเธเนเธฒเธข',
- 'form.basic-form.strength.strong': 'เธเธงเธฒเธกเนเธเนเธเนเธเธฃเนเธ: เนเธเนเธเนเธเธฃเนเธ',
- 'form.basic-form.strength.medium': 'เธเธงเธฒเธกเนเธเนเธเนเธเธฃเนเธ: เธเธฒเธเธเธฅเธฒเธ',
- 'form.basic-form.strength.short': 'เธเธงเธฒเธกเนเธฃเธ: เธชเธฑเนเธเนเธเธดเธเนเธ',
- 'form.basic-form.confirm-password.required': 'เธเธฃเธธเธเธฒเธขเธทเธเธขเธฑเธเธฃเธซเธฑเธชเธเนเธฒเธเธเธญเธเธเธธเธ!',
- 'form.basic-form.phone-number.required': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธซเธกเธฒเธขเนเธฅเธเนเธเธฃเธจเธฑเธเธเนเธกเธทเธญเธเธทเธญเธเธญเธเธเธธเธ!',
- 'form.basic-form.phone-number.wrong-format': 'เธฃเธนเธเนเธเธเธซเธกเธฒเธขเนเธฅเธเนเธเธฃเธจเธฑเธเธเนเธกเธทเธญเธเธทเธญเธเธดเธ!',
- 'form.basic-form.verification-code.required': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธฃเธซเธฑเธชเธขเธทเธเธขเธฑเธ!',
- 'form.basic-form.form.get-captcha': 'เธฃเธฑเธเธฃเธซเธฑเธชเธขเธทเธเธขเธฑเธ',
- 'form.basic-form.captcha.second': 'เธเธตเนเธชเธญเธ',
- 'form.basic-form.form.optional': '(เนเธกเนเธเธณเนเธเนเธ)',
- 'form.basic-form.form.submit': 'เธชเนเธ',
- 'form.basic-form.form.save': 'เธเธฑเธเธเธถเธ',
- 'form.basic-form.email.placeholder': 'เธเธเธซเธกเธฒเธข',
- 'form.basic-form.password.placeholder': 'เธฃเธซเธฑเธชเธเนเธฒเธเธญเธขเนเธฒเธเธเนเธญเธข 6 เธเธฑเธงเธญเธฑเธเธฉเธฃ เธเธณเธเธถเธเธเธถเธเธเธฑเธงเธเธดเธกเธเนเนเธฅเนเธเนเธฅเธฐเธเธฑเธงเธเธดเธกเธเนเนเธซเธเน',
- 'form.basic-form.confirm-password.placeholder': 'เธขเธทเธเธขเธฑเธเธฃเธซเธฑเธชเธเนเธฒเธ',
- 'form.basic-form.phone-number.placeholder': 'เธซเธกเธฒเธขเนเธฅเธเนเธเธฃเธจเธฑเธเธเน',
- 'form.basic-form.verification-code.placeholder': 'เธฃเธซเธฑเธชเธขเธทเธเธขเธฑเธ',
- 'result.success.title': 'เธชเนเธเธชเธณเนเธฃเนเธ',
- 'result.success.description': 'เธซเธเนเธฒเธเธฅเธฅเธฑเธเธเนเธเธฒเธฃเธชเนเธเนเธเนเนเธเธทเนเธญเธเธญเธเธเธฅเธฑเธเธเธฅเธเธฒเธฃเธเธฃเธฐเธกเธงเธฅเธเธฅเธเธญเธเธเธธเธเธเธฒเธเธเธฒเธฃเธเธณเนเธเธดเธเธเธฒเธ เธซเธฒเธเนเธเนเธเนเธเธตเธขเธเธเธฒเธฃเธเธณเนเธเธดเธเธเธฒเธฃเธเนเธฒเธขเน เนเธซเนเนเธเนเธเนเธญเธเธงเธฒเธกเธเธญเธเธฃเธฑเธเธเธฃเนเธญเธกเธเนเธเธฑเนเธงเนเธฅเธเธเธทเนเธเธเธตเนเธเนเธญเธเธงเธฒเธกเธเธตเนเธชเธฒเธกเธฒเธฃเธเนเธชเธเธเธเธณเนเธเธฐเธเธณเนเธชเธฃเธดเธกเธเนเธฒเธขเน เธซเธฒเธเธเธณเนเธเนเธเธเนเธญเธเนเธชเธเธ "เนเธญเธเธชเธฒเธฃ" เธเธทเนเธเธเธตเนเธชเธตเนเธเธฒเธเนเธฒเธเธฅเนเธฒเธเธชเธฒเธกเธฒเธฃเธเนเธชเธเธเนเธเธทเนเธญเธซเธฒเธเธตเนเธเธฑเธเธเนเธญเธเธกเธฒเธเธเธถเนเธเนเธเน',
- 'result.success.operate-title': 'เธเธทเนเธญเนเธเธฃเธเธเธฒเธฃ',
- 'result.success.operate-id': 'เธฃเธซเธฑเธชเนเธเธฃเธเธเธฒเธฃ',
- 'result.success.principal': 'เธเธธเธเธเธฅเธเธตเนเธฃเธฑเธเธเธดเธเธเธญเธ',
- 'result.success.operate-time': 'เนเธงเธฅเธฒเธเธตเนเธกเธตเธเธฃเธฐเธชเธดเธเธเธดเธ เธฒเธ',
- 'result.success.step1-title': 'เธชเธฃเนเธฒเธเนเธเธฃเธเธเธฒเธฃ',
- 'result.success.step1-operator': 'เธเธน เธฅเธดเธฅเธตเน',
- 'result.success.step2-title': 'เธเธฒเธฃเธเธเธเธงเธเนเธเธทเนเธญเธเธเนเธเธเธญเธเนเธเธเธ',
- 'result.success.step2-operator': 'เนเธเธง เนเธซเธกเธฒเนเธซเธกเธฒ',
- 'result.success.step2-extra': 'เธเนเธงเธ',
- 'result.success.step3-title': 'เธเธฒเธฃเธเธฃเธงเธเธชเธญเธเธเธฒเธเธเธฒเธฃเนเธเธดเธ',
- 'result.success.step4-title': 'เนเธชเธฃเนเธ',
- 'result.success.btn-return': 'เธเธฅเธฑเธเนเธเธเธตเนเธฃเธฒเธขเธเธฒเธฃ',
- 'result.success.btn-project': 'เธเธนเธฃเธฒเธขเธเธฒเธฃ',
- 'result.success.btn-print': 'เธเธดเธกเธเน',
- 'result.fail.error.title': 'เธเธฒเธฃเธชเนเธเธฅเนเธกเนเธซเธฅเธง',
- 'result.fail.error.description': 'เนเธเธฃเธเธเธฃเธงเธเธชเธญเธเนเธฅเธฐเนเธเนเนเธเธเนเธญเธกเธนเธฅเธเนเธญเนเธเธเธตเนเธเนเธญเธเธเธตเนเธเธฐเธชเนเธเธญเธตเธเธเธฃเธฑเนเธ',
- 'result.fail.error.hint-title': 'เนเธเธทเนเธญเธซเธฒเธเธตเนเธเธธเธเธชเนเธเธกเธตเธเนเธญเธเธดเธเธเธฅเธฒเธเธเนเธญเนเธเธเธตเน:',
- 'result.fail.error.hint-text1': 'เธเธฑเธเธเธตเธเธญเธเธเธธเธเธเธนเธเธฃเธฐเธเธฑเธ',
- 'result.fail.error.hint-btn1': 'เธฅเธฐเธฅเธฒเธขเธเธฑเธเธเธต',
- 'result.fail.error.hint-text2': 'เธเธฑเธเธเธตเธเธญเธเธเธธเธเธขเธฑเธเนเธกเนเธกเธตเธชเธดเธเธเธดเนเธชเธกเธฑเธเธฃ',
- 'result.fail.error.hint-btn2': 'เธญเธฑเธเนเธเธฃเธเธเธญเธเธเธตเน',
- 'result.fail.error.btn-text': 'เธเธฅเธฑเธเนเธเนเธเนเนเธ',
- 'account.settings.menuMap.custom': 'เธเธฒเธฃเธเธฃเธฑเธเนเธเธฅเธตเนเธขเธเนเธเนเธเธเธเธญเธเธเธธเธ',
- 'account.settings.menuMap.binding': 'เธเธฒเธฃเธเธนเธเธเธฑเธเธเธต',
- 'account.settings.basic.avatar': 'เธญเธงเธเธฒเธฃ',
- 'account.settings.basic.change-avatar': 'เนเธเธฅเธตเนเธขเธเธญเธงเธเธฒเธฃ',
- 'account.settings.basic.email': 'เธเธเธซเธกเธฒเธข',
- 'account.settings.basic.email-message': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธญเธตเนเธกเธฅเนเธเธญเธเธเธธเธ!',
- 'account.settings.basic.nickname': 'เธเธทเนเธญเธเธดเธ',
- 'account.settings.basic.nickname-message': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธทเนเธญเนเธฅเนเธเธเธญเธเธเธธเธ!',
- 'account.settings.basic.profile': 'เธเธฃเธฐเธงเธฑเธเธดเนเธเธขเธขเนเธญ',
- 'account.settings.basic.profile-message': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธฃเธฒเธขเธฅเธฐเนเธญเธตเธขเธเธชเนเธงเธเธเธฑเธงเธเธญเธเธเธธเธ!',
- 'account.settings.basic.profile-placeholder': 'เธเธฃเธฐเธงเธฑเธเธดเนเธเธขเธขเนเธญ',
- 'account.settings.basic.country': 'เธเธฃเธฐเนเธเธจ/เธ เธนเธกเธดเธ เธฒเธ',
- 'account.settings.basic.country-message': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธฃเธฐเนเธเธจเธซเธฃเธทเธญเธ เธนเธกเธดเธ เธฒเธเธเธญเธเธเธธเธ!',
- 'account.settings.basic.geographic': 'เธเธฑเธเธซเธงเธฑเธเนเธฅเธฐเนเธกเธทเธญเธ',
- 'account.settings.basic.geographic-message': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธฑเธเธซเธงเธฑเธเนเธฅเธฐเนเธกเธทเธญเธเธเธญเธเธเธธเธ!',
- 'account.settings.basic.address': 'เธเธตเนเธญเธขเธนเนเธเธเธ',
- 'account.settings.basic.address-message': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธตเนเธญเธขเธนเนเธเธญเธเธเธธเธ!',
- 'account.settings.basic.phone': 'เนเธเธญเธฃเนเธเธดเธเธเนเธญ',
- 'account.settings.basic.phone-message': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธซเธกเธฒเธขเนเธฅเธเธเธดเธเธเนเธญเธเธญเธเธเธธเธ!',
- 'account.settings.basic.update': 'เธญเธฑเธเนเธเธเธเนเธญเธกเธนเธฅเธเธทเนเธเธเธฒเธ',
- 'account.settings.basic.update.success': 'เธญเธฑเธเนเธเธเธเนเธญเธกเธนเธฅเธเธทเนเธเธเธฒเธเธชเธณเนเธฃเนเธ',
- 'account.settings.security.strong': 'เธเธฃเธเธเธฅเธฑเธ',
- 'account.settings.security.medium': 'เธเธฅเธฒเธ',
- 'account.settings.security.weak': 'เธญเนเธญเธเนเธญ',
- 'account.settings.security.password': 'เธฃเธซเธฑเธชเธเนเธฒเธเธเธฑเธเธเธต',
- 'account.settings.security.password-description': 'เธเธงเธฒเธกเธขเธฒเธเธเธญเธเธฃเธซเธฑเธชเธเนเธฒเธเธเธฑเธเธเธธเธเธฑเธ:',
- 'account.settings.security.phone': 'เธเธฒเธฃเธฃเธฑเธเธฉเธฒเธเธงเธฒเธกเธเธฅเธญเธเธ เธฑเธขเนเธเธฃเธจเธฑเธเธเนเธกเธทเธญเธเธทเธญ',
- 'account.settings.security.phone-description': 'เนเธเธฃเธจเธฑเธเธเนเธกเธทเธญเธเธทเธญเธเธตเนเธเธนเธเนเธงเนเนเธฅเนเธง:',
- 'account.settings.security.question': 'เธเธฑเธเธซเธฒเธเนเธฒเธเธเธงเธฒเธกเธเธฅเธญเธเธ เธฑเธข',
- 'account.settings.security.question-description': 'เนเธกเนเธกเธตเธเธฒเธฃเธเธฑเนเธเธเนเธฒเธเธณเธเธฒเธกเนเธเธทเนเธญเธเธงเธฒเธกเธเธฅเธญเธเธ เธฑเธข เธเธถเนเธเธชเธฒเธกเธฒเธฃเธเธเธเธเนเธญเธเธเธงเธฒเธกเธเธฅเธญเธเธ เธฑเธขเธเธญเธเธเธฑเธเธเธตเนเธเนเธญเธขเนเธฒเธเธกเธตเธเธฃเธฐเธชเธดเธเธเธดเธ เธฒเธ',
- 'account.settings.security.email': 'เธเธนเธเธญเธตเนเธกเธฅ',
- 'account.settings.security.email-description': 'เธเธตเนเธญเธขเธนเนเธญเธตเนเธกเธฅเธเธตเนเธเธนเธเธเธนเธเนเธงเนเนเธฅเนเธง:',
- 'account.settings.security.mfa': 'เธญเธธเธเธเธฃเธเนเนเธญเนเธกเนเธญเธเนเธญ',
- 'account.settings.security.mfa-description': 'เธญเธธเธเธเธฃเธเน MFA เนเธกเนเนเธเนเธเธนเธเธเธนเธเนเธงเน เธซเธฅเธฑเธเธเธฒเธเธเธนเธเนเธฅเนเธงเธชเธฒเธกเธฒเธฃเธเธขเธทเธเธขเธฑเธเธญเธตเธเธเธฃเธฑเนเธเนเธเน',
- 'account.settings.security.modify': 'เธเธฃเธฑเธเธเธฃเธธเธเนเธซเธกเน',
- 'account.settings.security.set': 'เธเธฑเนเธเธเนเธฒ',
- 'account.settings.security.bind': 'เธเธนเธเธเธฑเธ',
- 'account.settings.binding.taobao': 'เธเธนเธ Taobao',
- 'account.settings.binding.taobao-description': 'เธเธฑเธเธเธต Taobao เนเธกเนเนเธเนเธเธนเธเธเธนเธเนเธงเนเนเธเธเธเธฐเธเธตเน',
- 'account.settings.binding.alipay': 'เธเธนเธเธญเธฒเธฅเธตเนเธเธขเน',
- 'account.settings.binding.alipay-description': 'เธเธฑเธเธเธต Alipay เนเธกเนเนเธเนเธเธนเธเธเธนเธเนเธงเนเนเธเธเธเธฐเธเธตเน',
- 'account.settings.binding.dingding': 'เธเธฒเธฃเธเธนเธเธกเธฑเธ DingTalk',
- 'account.settings.binding.dingding-description': 'เธเธเธฐเธเธตเนเนเธกเนเธกเธตเธเธฑเธเธเธต DingTalk เธเธนเธเธเธนเธเนเธงเน',
- 'account.settings.binding.bind': 'เธเธนเธเธเธฑเธ',
- 'account.settings.notification.password': 'เธฃเธซเธฑเธชเธเนเธฒเธเธเธฑเธเธเธต',
- 'account.settings.notification.password-description': 'เธเนเธญเธเธงเธฒเธกเธเธฒเธเธเธนเนเนเธเนเธฃเธฒเธขเธญเธทเนเธเธเธฐเนเธเนเธฃเธฑเธเนเธเนเธเนเธเธฃเธนเธเนเธเธเธเธญเธเธเนเธญเธเธงเธฒเธกเนเธเธเน',
- 'account.settings.notification.messages': 'เธเนเธญเธเธงเธฒเธกเธเธญเธเธฃเธฐเธเธ',
- 'account.settings.notification.messages-description': 'เธเนเธญเธเธงเธฒเธกเธเธญเธเธฃเธฐเธเธเธเธฐเนเธเนเธฃเธฑเธเนเธเนเธเนเธเธฃเธนเธเนเธเธเธเธญเธเธเนเธญเธเธงเธฒเธกเนเธเธเน',
- 'account.settings.notification.todo': 'เธเธฒเธเธเธตเนเธเนเธญเธเธเธณ',
- 'account.settings.notification.todo-description': 'เธเธฒเธเธเธตเนเธเนเธญเธเธเธณเธเธฐเนเธเนเธฃเธฑเธเนเธเนเธเนเธเธฃเธนเธเนเธเธเธเธญเธเธเนเธญเธเธงเธฒเธกเนเธเนเธเธเน',
- 'account.settings.settings.open': 'เนเธเธดเธ',
- 'account.settings.settings.close': 'เธเธดเธ',
- 'trading-assistant.title': 'เธเธนเนเธเนเธงเธขเธเธฒเธฃเธเธทเนเธญเธเธฒเธข',
- 'trading-assistant.strategyList': 'เธฃเธฒเธขเธเธฒเธฃเธเธฅเธขเธธเธเธเน',
- 'trading-assistant.createStrategy': 'เธชเธฃเนเธฒเธเธเนเธขเธเธฒเธข',
- 'trading-assistant.noStrategy': 'เธขเธฑเธเนเธกเนเธกเธตเธเธฅเธขเธธเธเธเน',
- 'trading-assistant.selectStrategy': 'เนเธเธฃเธเนเธฅเธทเธญเธเธเธฅเธขเธธเธเธเนเธเธฒเธเธเนเธฒเธเธเนเธฒเธขเนเธเธทเนเธญเธเธนเธฃเธฒเธขเธฅเธฐเนเธญเธตเธขเธ',
- 'trading-assistant.startStrategy': 'เธเธฅเธขเธธเธเธเนเธเธฒเธฃเนเธเธดเธเธเธฑเธง',
- 'trading-assistant.stopStrategy': 'เธเธฅเธขเธธเธเธเนเธเธฒเธฃเธซเธขเธธเธ',
- 'trading-assistant.editStrategy': 'เธเธฅเธขเธธเธเธเนเธเนเธฒเธเธเธฃเธฃเธเธฒเธเธดเธเธฒเธฃ',
- 'trading-assistant.deleteStrategy': 'เธฅเธเธเนเธขเธเธฒเธข',
- 'trading-assistant.status.running': 'เธงเธดเนเธ',
- 'trading-assistant.status.stopped': 'เธซเธขเธธเธเนเธฅเนเธง',
- 'trading-assistant.status.error': 'เธเธงเธฒเธกเธเธดเธเธเธฅเธฒเธ',
- 'trading-assistant.strategyType.IndicatorStrategy': 'เธเธฅเธขเธธเธเธเนเธเธฑเธงเธเนเธเธเธตเนเธเธฒเธเนเธเธเธเธดเธ',
- 'trading-assistant.strategyType.PromptBasedStrategy': 'เธเธฅเธขเธธเธเธเนเธเธณเธเธดเธง',
- 'trading-assistant.strategyType.GridStrategy': 'เธเธฅเธขเธธเธเธเนเธเธฃเธดเธ',
- 'trading-assistant.tabs.tradingRecords': 'เธเธฃเธฐเธงเธฑเธเธดเธเธฒเธฃเธเธณเธเธธเธฃเธเธฃเธฃเธก',
- 'trading-assistant.tabs.positions': 'เธเธฑเธเธเธถเธเธเธณเนเธซเธเนเธ',
- 'trading-assistant.tabs.equityCurve': 'เนเธชเนเธเธชเนเธงเธเธเธญเธเธเธนเนเธเธทเธญเธซเธธเนเธ',
- 'trading-assistant.form.step1': 'เนเธฅเธทเธญเธเธเธฑเธงเธเนเธเธเธตเน',
- 'trading-assistant.form.step2': 'เธเธฒเธฃเธเธณเธซเธเธเธเนเธฒเธเธฒเธฃเนเธฅเธเนเธเธฅเธตเนเธขเธ',
- 'trading-assistant.form.step3': 'เธเธฒเธฃเธฒเธกเธดเนเธเธญเธฃเนเธเธฅเธขเธธเธเธเน',
- 'trading-assistant.form.indicator': 'เนเธฅเธทเธญเธเธเธฑเธงเธเนเธเธเธตเน',
- 'trading-assistant.form.indicatorHint': 'เธเธธเธเธชเธฒเธกเธฒเธฃเธเนเธฅเธทเธญเธเนเธเนเนเธเธเธฒเธฐเธเธฑเธงเธเนเธเธเธตเนเธเธฒเธเนเธเธเธเธดเธเธเธตเนเธเธธเธเธเธทเนเธญเธซเธฃเธทเธญเธชเธฃเนเธฒเธเธเธถเนเธเนเธเนเธฒเธเธฑเนเธ',
- 'trading-assistant.form.qdtCostHints': 'เธเธฒเธฃเนเธเนเธเธฅเธขเธธเธเธเนเธเธฐเนเธเน QDT เนเธเธฃเธเธเธฃเธงเธเธชเธญเธเนเธซเนเนเธเนเนเธเธงเนเธฒเธเธฑเธเธเธตเธกเธตเธขเธญเธเธเธเนเธซเธฅเธทเธญ QDT เนเธเธตเธขเธเธเธญ',
- 'trading-assistant.form.indicatorDescription': 'เธเธณเธญเธเธดเธเธฒเธขเธเธฑเธงเธเนเธเธเธตเน',
- 'trading-assistant.form.noDescription': 'เธขเธฑเธเนเธกเนเธกเธตเธเธณเธญเธเธดเธเธฒเธข',
- 'trading-assistant.form.exchange': 'เนเธฅเธทเธญเธเธเธฒเธฃเนเธฅเธเนเธเธฅเธตเนเธขเธ',
- 'trading-assistant.form.apiKey': 'เธเธตเธขเน API',
- 'trading-assistant.form.secretKey': 'เธฃเธซเธฑเธชเธฅเธฑเธ',
- 'trading-assistant.form.passphrase': 'เธเนเธญเธเธงเธฒเธกเธฃเธซเธฑเธชเธเนเธฒเธ',
- 'trading-assistant.form.testConnection': 'เธเธเธชเธญเธเธเธฒเธฃเนเธเธทเนเธญเธกเธเนเธญ',
- 'trading-assistant.form.strategyName': 'เธเธทเนเธญเธเธฃเธกเธเธฃเธฃเธกเน',
- 'trading-assistant.form.symbol': 'เธเธนเนเธเธฒเธฃเธเธทเนเธญเธเธฒเธข',
- 'trading-assistant.form.symbolHint': 'เธเธเธฐเธเธตเนเธฃเธญเธเธฃเธฑเธเนเธเธเธฒเธฐเธเธนเนเธเธฒเธฃเธเธทเนเธญเธเธฒเธขเธชเธเธธเธฅเนเธเธดเธเธเธดเธเธดเธเธฑเธฅเนเธเนเธฒเธเธฑเนเธ',
- 'trading-assistant.form.initialCapital': 'เธเธณเธเธงเธเนเธเธดเธเธฅเธเธเธธเธ',
- 'trading-assistant.form.marketType': 'เธเธฃเธฐเนเธ เธเธเธฅเธฒเธ',
- 'trading-assistant.form.marketTypeFutures': 'เธชเธฑเธเธเธฒ',
- 'trading-assistant.form.marketTypeSpot': 'เธเธธเธเธชเธดเธเธเนเธฒ',
- 'trading-assistant.form.marketTypeHint': 'เธชเธฑเธเธเธฒเธฃเธญเธเธฃเธฑเธเธเธฒเธฃเธเธทเนเธญเธเธฒเธขเธชเธญเธเธเธฒเธเนเธฅเธฐเนเธฅเนเธงเธญเนเธฃเธ เนเธเธเธเธฐเธเธตเนเธชเธเธญเธเธฃเธญเธเธฃเธฑเธเนเธเธเธฒเธฐเธเธณเนเธซเธเนเธเธเธทเนเธญเนเธฅเธฐเนเธฅเนเธงเธญเนเธฃเธเธเธเธเธตเนเธเธตเน 1x',
- 'trading-assistant.form.leverage': 'เนเธเนเธเธฃเธฐเนเธขเธเธเนเธซเธฅเธฒเธขเธญเธขเนเธฒเธ',
- 'trading-assistant.form.leverageHint': 'เธชเธฑเธเธเธฒ: 1-125 เธเธฃเธฑเนเธ, เธเธธเธ: เนเธเนเนเธ 1 เธเธฃเธฑเนเธ',
- 'trading-assistant.form.spotLeverageFixed': 'เนเธฅเนเธงเธญเนเธฃเธเธเธฒเธฃเธเธทเนเธญเธเธฒเธขเธชเธเธญเธเธเธเธเธตเนเธเธตเน 1x',
- 'trading-assistant.form.spotOnlyLongHint': 'เธเธฒเธฃเธเธทเนเธญเธเธฒเธขเนเธเธเธชเธเธญเธเธฃเธญเธเธฃเธฑเธเนเธเธเธฒเธฐเธเธณเนเธซเธเนเธเธเธทเนเธญเนเธเนเธฒเธเธฑเนเธ',
- 'trading-assistant.form.tradeDirection': 'เธเธดเธจเธเธฒเธเธเธฒเธฃเธเธทเนเธญเธเธฒเธข',
- 'trading-assistant.form.tradeDirectionLong': 'เธขเธฒเธงเนเธเนเธฒเธเธฑเนเธ',
- 'trading-assistant.form.tradeDirectionShort': 'เธชเธฑเนเธเนเธเนเธฒเธเธฑเนเธ',
- 'trading-assistant.form.tradeDirectionBoth': 'เธเธธเธฃเธเธฃเธฃเธกเธชเธญเธเธเธฒเธ',
- 'trading-assistant.form.timeframe': 'เธเนเธงเธเนเธงเธฅเธฒ',
- 'trading-assistant.form.klinePeriod': 'เธเนเธงเธเนเธงเธฅเธฒ K-Line',
- 'trading-assistant.form.timeframe1m': '1 เธเธฒเธเธต',
- 'trading-assistant.form.timeframe5m': '5 เธเธฒเธเธต',
- 'trading-assistant.form.timeframe15m': '15 เธเธฒเธเธต',
- 'trading-assistant.form.timeframe30m': '30 เธเธฒเธเธต',
- 'trading-assistant.form.timeframe1H': '1 เธเธฑเนเธงเนเธกเธ',
- 'trading-assistant.form.timeframe4H': '4 เธเธฑเนเธงเนเธกเธ',
- 'trading-assistant.form.timeframe1D': '1 เธงเธฑเธ',
- 'trading-assistant.form.selectStrategyType': 'เนเธฅเธทเธญเธเธเธฃเธฐเนเธ เธเธเธฅเธขเธธเธเธเน',
- 'trading-assistant.form.indicatorStrategy': 'เธเธฅเธขเธธเธเธเนเธเธฑเธงเธเนเธเธเธตเน',
- 'trading-assistant.form.indicatorStrategyDesc': 'เธเธฅเธขเธธเธเธเนเธเธฒเธฃเธเธทเนเธญเธเธฒเธขเธญเธฑเธเนเธเธกเธฑเธเธดเธเธฒเธกเธเธฑเธงเธเนเธเธเธตเนเธเธฒเธเนเธเธเธเธดเธ',
- 'trading-assistant.form.aiStrategy': 'เธเธฅเธขเธธเธเธเน AI',
- 'trading-assistant.form.aiStrategyDesc': 'เธเธฅเธขเธธเธเธเนเธเธฒเธฃเธเธทเนเธญเธเธฒเธขเธญเธฑเธเนเธเธกเธฑเธเธดเธเธฒเธกเธเธฒเธฃเธเธฑเธเธชเธดเธเนเธเธญเธฑเธเธเธฃเธดเธขเธฐเธเธญเธ AI',
- 'trading-assistant.form.enableAiFilter': 'เนเธเธดเธเนเธเนเธเธฒเธเธเธฑเธงเธเธฃเธญเธเธเธฒเธฃเธเธฑเธเธชเธดเธเนเธเธญเธฑเธเธเธฃเธดเธขเธฐ AI',
- 'trading-assistant.form.enableAiFilterHint': 'เนเธกเธทเนเธญเนเธเธดเธเนเธเนเธเธฒเธ เธชเธฑเธเธเธฒเธเธเธฑเธงเธเนเธเธเธตเนเธเธฐเธเธนเธเธเธฃเธญเธเนเธเธข AI เนเธเธทเนเธญเธเธฃเธฑเธเธเธฃเธธเธเธเธธเธเธ เธฒเธเธเธฒเธฃเธเธทเนเธญเธเธฒเธข',
- 'trading-assistant.form.aiFilterPrompt': 'เธเนเธญเธเธงเธฒเธกเนเธเนเธเนเธเธเธเธณเธซเธเธเนเธญเธ',
- 'trading-assistant.form.aiFilterPromptHint': 'เนเธซเนเธเธณเนเธเธฐเธเธณเนเธเธเธเธณเธซเธเธเนเธญเธเธชเธณเธซเธฃเธฑเธเธเธฒเธฃเธเธฃเธญเธ AI เนเธงเนเธเธงเนเธฒเธเนเธงเนเนเธเธทเนเธญเนเธเนเธเนเธฒเนเธฃเธดเนเธกเธเนเธเธเธญเธเธฃเธฐเธเธ',
- 'trading-assistant.validation.strategyTypeRequired': 'เธเธฃเธธเธเธฒเนเธฅเธทเธญเธเธเธฃเธฐเนเธ เธเธเธฅเธขเธธเธเธเน',
- 'trading-assistant.form.advancedSettings': 'เธเธฒเธฃเธเธฑเนเธเธเนเธฒเธเธฑเนเธเธชเธนเธ',
- 'trading-assistant.form.orderMode': 'เนเธซเธกเธเธเธฒเธฃเธชเธฑเนเธเธเธทเนเธญ',
- 'trading-assistant.form.orderModeMaker': 'เธเธนเนเธชเธฃเนเธฒเธ',
- 'trading-assistant.form.orderModeTaker': 'เธฃเธฒเธเธฒเธเธฅเธฒเธ (เนเธเธเนเธเธญเธฃเน)',
- 'trading-assistant.form.orderModeHint': 'เนเธซเธกเธเธเธณเธชเธฑเนเธเธเธทเนเธญเธเธตเนเธฃเธญเธเธณเนเธเธดเธเธเธฒเธฃเนเธเนเธเธณเธชเธฑเนเธเธเธทเนเธญเนเธเธเธเธณเธเธฑเธเนเธฅเธฐเธเนเธฒเธเธฃเธฃเธกเนเธเธตเธขเธกเธเธฒเธฃเธเธฑเธเธเธฒเธฃเธเนเธณเธเธงเนเธฒ เนเธซเธกเธเธฃเธฒเธเธฒเธเธฅเธฒเธเธเธฐเธเธณเนเธเธดเธเธเธฒเธฃเธเธฑเธเธเธตเนเธฅเธฐเธเนเธฒเธเธฃเธฃเธกเนเธเธตเธขเธกเธเธฒเธฃเธเธฑเธเธเธฒเธฃเธเธฐเธชเธนเธเธเธถเนเธ',
- 'trading-assistant.form.makerWaitSec': 'เนเธงเธฅเธฒเธฃเธญเธชเธณเธซเธฃเธฑเธเธเธณเธชเธฑเนเธเธเธทเนเธญเธเธตเนเธฃเธญเธเธณเนเธเธดเธเธเธฒเธฃ (เธงเธดเธเธฒเธเธต)',
- 'trading-assistant.form.makerWaitSecHint': 'เนเธงเธฅเธฒเธเธตเนเธเนเธญเธเธฃเธญเธเธฒเธฃเธเธณเธเธธเธฃเธเธฃเธฃเธกเธซเธฅเธฑเธเธเธฒเธเธเธณเธเธฒเธฃเธชเธฑเนเธเธเธทเนเธญ เธขเธเนเธฅเธดเธเนเธฅเธฐเธฅเธญเธเธญเธตเธเธเธฃเธฑเนเธเธซเธฅเธฑเธเธเธฒเธเธซเธกเธเนเธงเธฅเธฒ',
- 'trading-assistant.form.makerRetries': 'เธเธณเธเธงเธเธเธฒเธฃเธฅเธญเธเนเธซเธกเนเธชเธณเธซเธฃเธฑเธเธเธณเธชเธฑเนเธเธเธทเนเธญเธเธตเนเธฃเธญเธเธณเนเธเธดเธเธเธฒเธฃ',
- 'trading-assistant.form.makerRetriesHint': 'เธเธณเธเธงเธเธเธฃเธฑเนเธเธชเธนเธเธชเธธเธเนเธเธเธฒเธฃเธฅเธญเธเนเธซเธกเนเนเธกเธทเนเธญเนเธกเนเนเธเนเธเธณเนเธเธดเธเธเธฒเธฃเธเธณเธชเธฑเนเธเธเธทเนเธญเธเธตเนเธฃเธญเธเธณเนเธเธดเธเธเธฒเธฃ',
- 'trading-assistant.form.fallbackToMarket': 'เธเธณเธชเธฑเนเธเธเธทเนเธญเธเธตเนเธฃเธญเธเธณเนเธเธดเธเธเธฒเธฃเธฅเนเธกเนเธซเธฅเธงเนเธฅเธฐเธฃเธฒเธเธฒเธเธฅเธฒเธเธเธนเธเธฅเธเธฃเธฐเธเธฑเธเธฅเธ',
- 'trading-assistant.form.fallbackToMarketHint': 'เนเธกเธทเนเธญเธเธฒเธฃเนเธเธดเธ/เธเธดเธเธเธณเธชเธฑเนเธเธเธทเนเธญเธเธตเนเธฃเธญเธเธณเนเธเธดเธเธเธฒเธฃเนเธกเนเนเธชเธฃเนเธเธชเธกเธเธนเธฃเธเน เธเธงเธฃเธเธฒเธงเธเนเนเธเธฃเธเนเธเนเธเธเธณเธชเธฑเนเธเธเธทเนเธญเนเธเธเธฅเธฒเธเนเธเธทเนเธญเนเธซเนเนเธเนเนเธเธงเนเธฒเธเธธเธฃเธเธฃเธฃเธกเธเธฐเนเธชเธฃเนเธเธชเธกเธเธนเธฃเธเนเธซเธฃเธทเธญเนเธกเน',
- 'trading-assistant.form.marginMode': 'เนเธซเธกเธเธฃเธฐเธขเธฐเธเธญเธ',
- 'trading-assistant.form.marginModeCross': 'เนเธเธเธฑเธเนเธเนเธก',
- 'trading-assistant.form.marginModeIsolated': 'เธเธณเนเธซเธเนเธเธเธตเนเนเธเธเนเธเธตเนเธขเธง',
- 'trading-assistant.form.stopLossPct': 'เธญเธฑเธเธฃเธฒเธเธฒเธฃเธชเธนเธเนเธชเธตเธขเธซเธขเธธเธ (%)',
- 'trading-assistant.form.stopLossPctHint': 'เธเธฑเนเธเธเนเธฒเนเธเธญเธฃเนเนเธเนเธเธเนเธเธฒเธฃเธซเธขเธธเธเธเธฒเธฃเธเธฒเธเธเธธเธ 0 เธซเธกเธฒเธขเธเธถเธเนเธกเนเนเธเนเนเธเธดเธเนเธเนเธเธฒเธเธเธฒเธฃเธซเธขเธธเธเธเธฒเธฃเธเธฒเธเธเธธเธ',
- 'trading-assistant.form.takeProfitPct': 'เธญเธฑเธเธฃเธฒเธชเนเธงเธเธเธฒเธฃเธเธณเธเธณเนเธฃ (%)',
- 'trading-assistant.form.takeProfitPctHint': 'เธเธฑเนเธเธเนเธฒเนเธเธญเธฃเนเนเธเนเธเธเนเธเธฒเธฃเธเธณเธเธณเนเธฃ 0 เธซเธกเธฒเธขเธเธถเธเธเธดเธเธเธฒเธฃเนเธเนเธเธฒเธเธเธฒเธฃเธเธณเธเธณเนเธฃ',
- 'trading-assistant.form.signalMode': 'เนเธซเธกเธเธชเธฑเธเธเธฒเธ',
- 'trading-assistant.form.signalModeConfirmed': 'เธขเธทเธเธขเธฑเธเนเธซเธกเธ',
- 'trading-assistant.form.signalModeAggressive': 'เนเธซเธกเธเธเนเธฒเธงเธฃเนเธฒเธง',
- 'trading-assistant.form.signalModeHint': 'เนเธซเธกเธเธเธฒเธฃเธขเธทเธเธขเธฑเธ: เธเธฃเธงเธเธชเธญเธเนเธเธเธฒเธฐเนเธชเนเธ K เธเธตเนเนเธชเธฃเนเธเธชเธกเธเธนเธฃเธเนเนเธเนเธฒเธเธฑเนเธ เนเธซเธกเธเธเนเธฒเธงเธฃเนเธฒเธง: เธเธฃเธงเธเธชเธญเธเธเธฒเธฃเธชเธฃเนเธฒเธเนเธชเนเธ K เธเนเธงเธข',
- 'trading-assistant.form.cancel': 'เธขเธเนเธฅเธดเธ',
- 'trading-assistant.form.prev': 'เธเธฑเนเธเธเธญเธเธเนเธญเธเธซเธเนเธฒ',
- 'trading-assistant.form.next': 'เธเธฑเนเธเธเธญเธเธเนเธญเนเธ',
- 'trading-assistant.form.confirmCreate': 'เธขเธทเธเธขเธฑเธเธเธฒเธฃเธชเธฃเนเธฒเธ',
- 'trading-assistant.form.confirmEdit': 'เธขเธทเธเธขเธฑเธเธเธฒเธฃเนเธเธฅเธตเนเธขเธเนเธเธฅเธ',
- 'trading-assistant.messages.createSuccess': 'เธชเธฃเนเธฒเธเธเธฅเธขเธธเธเธเนเธชเธณเนเธฃเนเธเนเธฅเนเธง',
- 'trading-assistant.messages.createFailed': 'เนเธกเนเธชเธฒเธกเธฒเธฃเธเธชเธฃเนเธฒเธเธเนเธขเธเธฒเธขเนเธเน',
- 'trading-assistant.messages.updateSuccess': 'เธญเธฑเธเนเธเธเธเนเธขเธเธฒเธขเธชเธณเนเธฃเนเธเนเธฅเนเธง',
- 'trading-assistant.messages.updateFailed': 'เธญเธฑเธเนเธเธเธเนเธขเธเธฒเธขเนเธกเนเธชเธณเนเธฃเนเธ',
- 'trading-assistant.messages.deleteSuccess': 'เธฅเธเธเนเธขเธเธฒเธขเธชเธณเนเธฃเนเธเนเธฅเนเธง',
- 'trading-assistant.messages.deleteFailed': 'เธฅเธเธเนเธขเธเธฒเธขเธฅเนเธกเนเธซเธฅเธง',
- 'trading-assistant.messages.startSuccess': 'เธเธฅเธขเธธเธเธเนเนเธฃเธดเนเธกเธเนเธเนเธเนเธชเธณเนเธฃเนเธ',
- 'trading-assistant.messages.startFailed': 'เนเธกเนเธชเธฒเธกเธฒเธฃเธเนเธฃเธดเนเธกเธเนเธขเธเธฒเธขเนเธเน',
- 'trading-assistant.messages.stopSuccess': 'เธเธฅเธขเธธเธเธเนเธซเธขเธธเธเธชเธณเนเธฃเนเธ',
- 'trading-assistant.messages.stopFailed': 'เธเธฅเธขเธธเธเธเนเธซเธขเธธเธเธฅเนเธกเนเธซเธฅเธง',
- 'trading-assistant.messages.loadFailed': 'เนเธกเนเธชเธฒเธกเธฒเธฃเธเธฃเธฑเธเธฃเธฒเธขเธเธฒเธฃเธเนเธขเธเธฒเธข',
- 'trading-assistant.messages.runningWarning': 'เธเธฅเธขเธธเธเธเนเธเธณเธฅเธฑเธเธเธณเธเธฒเธเธญเธขเธนเน เนเธเธฃเธเธซเธขเธธเธเธเธฅเธขเธธเธเธเนเธเนเธญเธเธเธตเนเธเธฐเนเธเนเนเธ',
- 'trading-assistant.messages.deleteConfirmWithName': 'เธเธธเธเนเธเนเนเธเธซเธฃเธทเธญเนเธกเนเธงเนเธฒเธเนเธญเธเธเธฒเธฃเธฅเธเธเนเธขเธเธฒเธข "{name}" เธเธฒเธฃเธเธณเนเธเธดเธเธเธฒเธฃเธเธตเนเนเธกเนเธชเธฒเธกเธฒเธฃเธเธขเนเธญเธเธเธฅเธฑเธเนเธเน',
- 'trading-assistant.messages.deleteConfirm': 'เธเธธเธเนเธเนเนเธเธซเธฃเธทเธญเนเธกเนเธงเนเธฒเธเนเธญเธเธเธฒเธฃเธฅเธเธเนเธขเธเธฒเธขเธเธตเนเธเธฒเธฃเธเธณเนเธเธดเธเธเธฒเธฃเธเธตเนเนเธกเนเธชเธฒเธกเธฒเธฃเธเธขเนเธญเธเธเธฅเธฑเธเนเธเน',
- 'trading-assistant.messages.loadTradesFailed': 'เนเธกเนเธชเธฒเธกเธฒเธฃเธเธฃเธฑเธเธเธฑเธเธเธถเธเธเธธเธฃเธเธฃเธฃเธกเนเธเน',
- 'trading-assistant.messages.loadPositionsFailed': 'เนเธกเนเธชเธฒเธกเธฒเธฃเธเธฃเธฑเธเธเธฑเธเธเธถเธเธเธณเนเธซเธเนเธเนเธเน',
- 'trading-assistant.messages.loadEquityFailed': 'เนเธกเนเธชเธฒเธกเธฒเธฃเธเธฃเธฑเธเนเธชเนเธเนเธเนเธเธชเนเธงเธเธเธญเธเธเธนเนเธเธทเธญเธซเธธเนเธเนเธเน',
- 'trading-assistant.messages.loadIndicatorsFailed': 'เนเธกเนเธชเธฒเธกเธฒเธฃเธเนเธซเธฅเธเธฃเธฒเธขเธเธฒเธฃเธเธฑเธงเธเนเธเธเธตเน เนเธเธฃเธเธฅเธญเธเธญเธตเธเธเธฃเธฑเนเธเนเธเธ เธฒเธขเธซเธฅเธฑเธ',
- 'trading-assistant.messages.spotLimitations': 'เธเธฒเธฃเธเธทเนเธญเธเธฒเธขเนเธเธเธชเธเธญเธเนเธเนเธฃเธฑเธเธเธฒเธฃเธเธฑเนเธเธเนเธฒเนเธเธขเธญเธฑเธเนเธเธกเธฑเธเธดเนเธเนเธเธฃเธฐเธขเธฐเธขเธฒเธงเนเธเนเธฒเธเธฑเนเธ เนเธฅเนเธงเธญเนเธฃเธ 1 เนเธเนเธฒ',
- 'trading-assistant.messages.autoFillApiConfig': 'เธเธฒเธฃเธเธณเธซเธเธเธเนเธฒ API เนเธเธญเธเธตเธเธเธญเธเธเธฒเธฃเนเธฅเธเนเธเธฅเธตเนเธขเธเนเธเนเธฃเธฑเธเธเธฒเธฃเนเธเธดเธกเธเนเธญเธกเธนเธฅเนเธเธขเธญเธฑเธเนเธเธกเธฑเธเธด',
- 'trading-assistant.placeholders.selectIndicator': 'เนเธเธฃเธเนเธฅเธทเธญเธเธเธฑเธงเธเนเธเธเธตเน',
- 'trading-assistant.placeholders.selectExchange': 'เธเธฃเธธเธเธฒเนเธฅเธทเธญเธเธเธฒเธฃเนเธฅเธเนเธเธฅเธตเนเธขเธ',
- 'trading-assistant.placeholders.inputApiKey': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธตเธขเน API',
- 'trading-assistant.placeholders.inputSecretKey': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธฃเธซเธฑเธชเธฅเธฑเธ',
- 'trading-assistant.placeholders.inputPassphrase': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธฃเธซเธฑเธชเธเนเธฒเธ',
- 'trading-assistant.placeholders.inputStrategyName': 'เนเธเธฃเธเธเนเธญเธเธเธทเนเธญเธเนเธขเธเธฒเธข',
- 'trading-assistant.placeholders.selectSymbol': 'เธเธฃเธธเธเธฒเนเธฅเธทเธญเธเธเธนเนเธเธฒเธฃเธเธทเนเธญเธเธฒเธข',
- 'trading-assistant.placeholders.selectTimeframe': 'เนเธเธฃเธเนเธฅเธทเธญเธเธเนเธงเธเนเธงเธฅเธฒ',
- 'trading-assistant.placeholders.selectKlinePeriod': 'เนเธเธฃเธเนเธฅเธทเธญเธเธเนเธงเธเนเธงเธฅเธฒ K-Line',
- 'trading-assistant.placeholders.inputAiFilterPrompt': 'เธเธฃเธธเธเธฒเนเธชเนเธเนเธญเธเธงเธฒเธกเนเธเนเธเนเธเธเธเธณเธซเธเธเนเธญเธ (เนเธกเนเธเธฑเธเธเธฑเธ)',
- 'trading-assistant.validation.indicatorRequired': 'เนเธเธฃเธเนเธฅเธทเธญเธเธเธฑเธงเธเนเธเธเธตเน',
- 'trading-assistant.validation.exchangeRequired': 'เธเธฃเธธเธเธฒเนเธฅเธทเธญเธเธเธฒเธฃเนเธฅเธเนเธเธฅเธตเนเธขเธ',
- 'trading-assistant.validation.apiKeyRequired': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธตเธขเน API',
- 'trading-assistant.validation.secretKeyRequired': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธฃเธซเธฑเธชเธฅเธฑเธ',
- 'trading-assistant.validation.passphraseRequired': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธฃเธซเธฑเธชเธเนเธฒเธ',
- 'trading-assistant.validation.exchangeConfigIncomplete': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเนเธญเธกเธนเธฅเธเธฒเธฃเธเธณเธซเธเธเธเนเธฒเธเธฒเธฃเนเธฅเธเนเธเธฅเธตเนเธขเธเนเธซเนเธเธฃเธเธเนเธงเธ',
- 'trading-assistant.validation.testConnectionRequired': 'เธเธฃเธธเธเธฒเธเธฅเธดเธเธเธธเนเธก "เธเธเธชเธญเธเธเธฒเธฃเนเธเธทเนเธญเธกเธเนเธญ" เนเธฅเธฐเธเธฃเธงเธเธชเธญเธเนเธซเนเนเธเนเนเธเธงเนเธฒเธเธฒเธฃเนเธเธทเนเธญเธกเธเนเธญเธชเธณเนเธฃเนเธ',
- 'trading-assistant.validation.testConnectionFailed': 'เธเธฒเธฃเธเธเธชเธญเธเธเธฒเธฃเนเธเธทเนเธญเธกเธเนเธญเธฅเนเธกเนเธซเธฅเธง เธเธฃเธธเธเธฒเธเธฃเธงเธเธชเธญเธเธเธฒเธฃเธเธณเธซเธเธเธเนเธฒเนเธฅเธฐเธเธเธชเธญเธเธญเธตเธเธเธฃเธฑเนเธ',
- 'trading-assistant.validation.strategyNameRequired': 'เนเธเธฃเธเธเนเธญเธเธเธทเนเธญเธเนเธขเธเธฒเธข',
- 'trading-assistant.validation.symbolRequired': 'เธเธฃเธธเธเธฒเนเธฅเธทเธญเธเธเธนเนเธเธฒเธฃเธเธทเนเธญเธเธฒเธข',
- 'trading-assistant.validation.initialCapitalRequired': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธณเธเธงเธเนเธเธดเธเธฅเธเธเธธเธ',
- 'trading-assistant.validation.leverageRequired': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธญเธฑเธเธฃเธฒเธชเนเธงเธเนเธฅเนเธงเธญเนเธฃเธ',
- 'trading-assistant.table.time': 'เนเธงเธฅเธฒ',
- 'trading-assistant.table.type': 'เธเธดเธกเธเน',
- 'trading-assistant.table.price': 'เธฃเธฒเธเธฒ',
- 'trading-assistant.table.amount': 'เธเธฃเธดเธกเธฒเธ',
- 'trading-assistant.table.value': 'เธเธณเธเธงเธ',
- 'trading-assistant.table.commission': 'เธเนเธฒเธเธฃเธฃเธกเนเธเธตเธขเธกเธเธฒเธฃเธเธฑเธเธเธฒเธฃ',
- 'trading-assistant.table.symbol': 'เธเธนเนเธเธฒเธฃเธเธทเนเธญเธเธฒเธข',
- 'trading-assistant.table.side': 'เธเธดเธจเธเธฒเธ',
- 'trading-assistant.table.size': 'เธเธฃเธดเธกเธฒเธเธเธณเนเธซเธเนเธ',
- 'trading-assistant.table.entryPrice': 'เธฃเธฒเธเธฒเนเธเธดเธ',
- 'trading-assistant.table.currentPrice': 'เธฃเธฒเธเธฒเธเธฑเธเธเธธเธเธฑเธ',
- 'trading-assistant.table.unrealizedPnl': 'เธเธณเนเธฃเธซเธฃเธทเธญเธเธฒเธเธเธธเธเธเธตเนเธขเธฑเธเนเธกเนเนเธเธดเธเธเธถเนเธเธเธฃเธดเธ',
- 'trading-assistant.table.pnlPercent': 'เธญเธฑเธเธฃเธฒเธชเนเธงเธเธเธณเนเธฃเนเธฅเธฐเธเธฒเธเธเธธเธ',
- 'trading-assistant.table.buy': 'เธเธทเนเธญ',
- 'trading-assistant.table.sell': 'เธเธฒเธข',
- 'trading-assistant.table.long': 'เธขเธฒเธงเนเธ',
- 'trading-assistant.table.short': 'เธชเธฑเนเธ',
- 'trading-assistant.table.noPositions': 'เธขเธฑเธเนเธกเนเธกเธตเธเธณเนเธซเธเนเธ',
- 'trading-assistant.detail.title': 'เธฃเธฒเธขเธฅเธฐเนเธญเธตเธขเธเธเธฅเธขเธธเธเธเน',
- 'trading-assistant.detail.strategyName': 'เธเธทเนเธญเธเธฃเธกเธเธฃเธฃเธกเน',
- 'trading-assistant.detail.strategyType': 'เธเธฃเธฐเนเธ เธเธเธฅเธขเธธเธเธเน',
- 'trading-assistant.detail.status': 'เธชเธเธฒเธเธฐ',
- 'trading-assistant.detail.tradingMode': 'เธฃเธนเธเนเธเธเธเธฒเธฃเธเธทเนเธญเธเธฒเธข',
- 'trading-assistant.detail.exchange': 'เนเธฅเธเนเธเธฅเธตเนเธขเธ',
- 'trading-assistant.detail.initialCapital': 'เธเธธเธเนเธฃเธดเนเธกเธเนเธ',
- 'trading-assistant.detail.totalInvestment': 'เธเธณเธเธงเธเนเธเธดเธเธฅเธเธเธธเธเธเธฑเนเธเธซเธกเธ',
- 'trading-assistant.detail.currentEquity': 'เธกเธนเธฅเธเนเธฒเธชเธธเธเธเธดเนเธเธเธฑเธเธเธธเธเธฑเธ',
- 'trading-assistant.detail.totalPnl': 'เธเธณเนเธฃเนเธฅเธฐเธเธฒเธเธเธธเธเธเธฑเนเธเธซเธกเธ',
- 'trading-assistant.detail.indicatorName': 'เธเธทเนเธญเธเธฑเธงเธเนเธเธเธตเน',
- 'trading-assistant.detail.maxLeverage': 'เนเธฅเนเธงเธญเนเธฃเธเธชเธนเธเธชเธธเธ',
- 'trading-assistant.detail.decideInterval': 'เธเนเธงเธเธเธฒเธฃเธเธฑเธเธชเธดเธเนเธ',
- 'trading-assistant.detail.symbols': 'เธงเธฑเธเธเธธเธเธธเธฃเธเธฃเธฃเธก',
- 'trading-assistant.detail.createdAt': 'เนเธงเธฅเธฒเธชเธฃเนเธฒเธ',
- 'trading-assistant.detail.updatedAt': 'เนเธงเธฅเธฒเธญเธฑเธเนเธเธ',
- 'trading-assistant.detail.llmConfig': 'เธเธฒเธฃเธเธณเธซเธเธเธเนเธฒเนเธกเนเธเธฅ AI',
- 'trading-assistant.detail.exchangeConfig': 'เธเธฒเธฃเธเธณเธซเธเธเธเนเธฒเธเธฒเธฃเนเธฅเธเนเธเธฅเธตเนเธขเธ',
- 'trading-assistant.detail.provider': 'เธเธนเนเนเธซเนเธเธฃเธดเธเธฒเธฃ',
- 'trading-assistant.detail.modelId': 'เธฃเธซเธฑเธชเธฃเธธเนเธ',
- 'trading-assistant.detail.close': 'เธเธดเธ',
- 'trading-assistant.detail.loadFailed': 'เนเธกเนเธชเธฒเธกเธฒเธฃเธเธฃเธฑเธเธฃเธฒเธขเธฅเธฐเนเธญเธตเธขเธเธเนเธขเธเธฒเธขเนเธเน',
- 'trading-assistant.equity.noData': 'เธขเธฑเธเนเธกเนเธกเธตเธเนเธญเธกเธนเธฅเธกเธนเธฅเธเนเธฒเธชเธธเธเธเธด',
- 'trading-assistant.equity.equity': 'เธกเธนเธฅเธเนเธฒเธชเธธเธเธเธด',
- 'trading-assistant.exchange.tradingMode': 'เธฃเธนเธเนเธเธเธเธฒเธฃเธเธทเนเธญเธเธฒเธข',
- 'trading-assistant.exchange.virtual': 'เธเธฒเธฃเธเธทเนเธญเธเธฒเธขเธเธณเธฅเธญเธ',
- 'trading-assistant.exchange.live': 'เธเธฒเธฃเธเธณเธเธธเธฃเธเธฃเธฃเธกเธเธฃเธดเธ',
- 'trading-assistant.exchange.selectExchange': 'เนเธฅเธทเธญเธเธเธฒเธฃเนเธฅเธเนเธเธฅเธตเนเธขเธ',
- 'trading-assistant.exchange.walletAddress': 'เธเธตเนเธญเธขเธนเนเธเธฃเธฐเนเธเนเธฒเนเธเธดเธ',
- 'trading-assistant.exchange.walletAddressPlaceholder': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธตเนเธญเธขเธนเนเธเธฃเธฐเนเธเนเธฒเนเธเธดเธเธเธญเธเธเธธเธ (เนเธฃเธดเนเธกเธเนเธเธเนเธงเธข 0x)',
- 'trading-assistant.exchange.privateKey': 'เธฃเธซเธฑเธชเธชเนเธงเธเธเธฑเธง',
- 'trading-assistant.exchange.privateKeyPlaceholder': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธฃเธซเธฑเธชเธชเนเธงเธเธเธฑเธง (64 เธเธฑเธงเธญเธฑเธเธฉเธฃ)',
- 'trading-assistant.exchange.testConnection': 'เธเธเธชเธญเธเธเธฒเธฃเนเธเธทเนเธญเธกเธเนเธญ',
- 'trading-assistant.exchange.connectionSuccess': 'เธเธฒเธฃเนเธเธทเนเธญเธกเธเนเธญเธชเธณเนเธฃเนเธ',
- 'trading-assistant.exchange.connectionFailed': 'เธเธฒเธฃเนเธเธทเนเธญเธกเธเนเธญเธฅเนเธกเนเธซเธฅเธง',
- 'trading-assistant.exchange.testFailed': 'เธเธฒเธฃเธเธเธชเธญเธเธเธฒเธฃเนเธเธทเนเธญเธกเธเนเธญเธฅเนเธกเนเธซเธฅเธง',
- 'trading-assistant.exchange.fillComplete': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเนเธญเธกเธนเธฅเธเธฒเธฃเธเธณเธซเธเธเธเนเธฒเธเธฒเธฃเนเธฅเธเนเธเธฅเธตเนเธขเธเนเธซเนเธเธฃเธเธเนเธงเธ',
- 'trading-assistant.strategyTypeOptions.ai': 'เธเธฅเธขเธธเธเธเนเธเธตเนเธเธฑเธเนเธเธฅเธทเนเธญเธเธเนเธงเธข AI',
- 'trading-assistant.strategyTypeOptions.indicator': 'เธเธฅเธขเธธเธเธเนเธเธฑเธงเธเนเธเธเธตเนเธเธฒเธเนเธเธเธเธดเธ',
- 'trading-assistant.strategyTypeOptions.aiDeveloping': 'เธเธฑเธเธเนเธเธฑเธเธเธฅเธขเธธเธเธเนเธเธตเนเธเธฑเธเนเธเธฅเธทเนเธญเธเธเนเธงเธข AI เธญเธขเธนเนเธฃเธฐเธซเธงเนเธฒเธเธเธฒเธฃเธเธฑเธเธเธฒ เธเธฑเธเธเธฑเนเธเนเธเธฃเธเธเธญเธขเธเธดเธเธเธฒเธก',
- 'trading-assistant.strategyTypeOptions.aiDevelopingWarning': 'เธเธธเธเธชเธกเธเธฑเธเธดเธเธฅเธขเธธเธเธเนเธเธตเนเธเธฑเธเนเธเธฅเธทเนเธญเธเธเนเธงเธข AI เธเธณเธฅเธฑเธเธญเธขเธนเนเนเธเธเธฒเธฃเธเธฑเธเธเธฒ',
- 'trading-assistant.indicatorType.trend': 'เนเธเธงเนเธเนเธก',
- 'trading-assistant.indicatorType.momentum': 'เนเธกเนเธกเธเธเธฑเธก',
- 'trading-assistant.indicatorType.volatility': 'เธเธงเธฒเธกเธเธฑเธเธเธงเธ',
- 'trading-assistant.indicatorType.volume': 'เธเธฃเธดเธกเธฒเธ',
- 'trading-assistant.indicatorType.custom': 'เธเธฃเธฑเธเนเธเนเธ',
- 'trading-assistant.exchangeNames': {
- 'okx': 'เนเธญเนเธเนเธญเนเธเธเน',
- 'binance': 'เนเธเนเธเธเธเน',
- 'hyperliquid': 'เนเธฎเนเธเธญเธฃเนเธฅเธดเธเธงเธดเธ',
- 'blockchaincom': 'Blockchain.com',
- 'coinbaseexchange': 'เธเธญเธขเธเนเนเธเธช',
- 'gate': 'Gate.io',
- 'mexc': 'เนเธกเนเธเธเธดเนเธ',
- 'kraken': 'เธเธฃเธฒเนเธเธ',
- 'bitfinex': 'Bitfinex',
- 'bybit': 'เธเธฒเธขเธเธดเธ',
- 'kucoin': 'เธเธนเธเธญเธขเธเน',
- 'huobi': 'เธซเธฑเนเธงเธเธตเน',
- 'bitget': 'เธเธดเธเนเธเนเธ',
- 'bitmex': 'BitMEX',
- 'deribit': 'เธญเธเธธเธกเธฒเธ',
- 'phemex': 'เธเธตเนเธกเนเธเธเน',
- 'bitmart': 'เธเธดเธเธกเธฒเธฃเนเธ',
- 'bitstamp': 'เธเธดเธเธชเนเธเธกเธเน',
- 'bittrex': 'เธเธดเธเนเธเธฃเนเธเธเน',
- 'poloniex': 'เนเธเนเธฅเธเธตเธเธเน',
- 'gemini': 'เธฃเธฒเธจเธตเนเธกเธเธธเธ',
- 'cryptocom': 'Crypto.com',
- 'bitflyer': 'เธเธดเธเธเธฅเธฒเธขเนเธญเธญเธฃเน',
- 'upbit': 'เธญเธฑเธเธเธดเธ',
- 'bithumb': 'เธเธดเธเธฑเธกเธเน',
- 'coinone': 'เนเธเนเธเนเธเน',
- 'zb': 'เธเธตเธเธต',
- 'lbank': 'เนเธญเธฅเนเธเธเธเน',
- 'bibox': 'เนเธเธเนเธญเธเธเน',
- 'bigone': 'เธเธดเนเธเธงเธฑเธ',
- 'bitrue': 'เธเธดเธเธเธฃเธน',
- 'coinex': 'เธเธญเธขเธเนเนเธญเนเธเธเน',
- 'digifinex': 'DigiFinex',
- 'ftx': 'เนเธญเธเธเธตเนเธญเนเธเธเน',
- 'ftxus': 'FTX เธชเธซเธฃเธฑเธเธญเนเธกเธฃเธดเธเธฒ',
- 'binanceus': 'Binance เธชเธซเธฃเธฑเธเธญเนเธกเธฃเธดเธเธฒ',
- 'binancecoinm': 'Binance COIN-M',
- 'binanceusdm': 'Binance USDโ-M',
- 'deepcoin': 'เธเธตเธเธเธญเธขเธเน'
- },
- 'ai-trading-assistant.title': 'เธเธนเนเธเนเธงเธขเธเธฒเธฃเธเธทเนเธญเธเธฒเธข AI',
- 'ai-trading-assistant.strategyList': 'เธฃเธฒเธขเธเธฒเธฃเธเธฅเธขเธธเธเธเน',
- 'ai-trading-assistant.createStrategy': 'เธชเธฃเนเธฒเธเธเนเธขเธเธฒเธข',
- 'ai-trading-assistant.noStrategy': 'เธขเธฑเธเนเธกเนเธกเธตเธเธฅเธขเธธเธเธเน',
- 'ai-trading-assistant.selectStrategy': 'เนเธเธฃเธเนเธฅเธทเธญเธเธเธฅเธขเธธเธเธเนเธเธฒเธเธเนเธฒเธเธเนเธฒเธขเนเธเธทเนเธญเธเธนเธฃเธฒเธขเธฅเธฐเนเธญเธตเธขเธ',
- 'ai-trading-assistant.startStrategy': 'เธเธฅเธขเธธเธเธเนเธเธฒเธฃเนเธเธดเธเธเธฑเธง',
- 'ai-trading-assistant.stopStrategy': 'เธเธฅเธขเธธเธเธเนเธเธฒเธฃเธซเธขเธธเธ',
- 'ai-trading-assistant.editStrategy': 'เธเธฅเธขเธธเธเธเนเธเนเธฒเธเธเธฃเธฃเธเธฒเธเธดเธเธฒเธฃ',
- 'ai-trading-assistant.deleteStrategy': 'เธฅเธเธเนเธขเธเธฒเธข',
- 'ai-trading-assistant.status.running': 'เธงเธดเนเธ',
- 'ai-trading-assistant.status.stopped': 'เธซเธขเธธเธเนเธฅเนเธง',
- 'ai-trading-assistant.status.error': 'เธเธงเธฒเธกเธเธดเธเธเธฅเธฒเธ',
- 'ai-trading-assistant.tabs.tradingRecords': 'เธเธฃเธฐเธงเธฑเธเธดเธเธฒเธฃเธเธณเธเธธเธฃเธเธฃเธฃเธก',
- 'ai-trading-assistant.tabs.positions': 'เธเธฑเธเธเธถเธเธเธณเนเธซเธเนเธ',
- 'ai-trading-assistant.tabs.aiDecisions': 'เธเธฑเธเธเธถเธเธเธฒเธฃเธเธฑเธเธชเธดเธเนเธเธเธญเธ AI',
- 'ai-trading-assistant.tabs.equityCurve': 'เนเธชเนเธเธชเนเธงเธเธเธญเธเธเธนเนเธเธทเธญเธซเธธเนเธ',
- 'ai-trading-assistant.form.createTitle': 'เธชเธฃเนเธฒเธเธเธฅเธขเธธเธเธเนเธเธฒเธฃเธเธทเนเธญเธเธฒเธขเธเนเธงเธข AI',
- 'ai-trading-assistant.form.editTitle': 'เนเธเนเนเธเธเธฅเธขเธธเธเธเนเธเธฒเธฃเธเธทเนเธญเธเธฒเธข AI',
- 'ai-trading-assistant.form.strategyName': 'เธเธทเนเธญเธเธฃเธกเธเธฃเธฃเธกเน',
- 'ai-trading-assistant.form.modelId': 'เนเธกเนเธเธฅเนเธญเนเธญ',
- 'ai-trading-assistant.form.modelIdHint': 'เนเธเนเธเธฃเธดเธเธฒเธฃเธฃเธฐเธเธ OpenRouter เนเธเธขเนเธกเนเธเนเธญเธเธเธณเธซเธเธเธเนเธฒ API Key',
- 'ai-trading-assistant.form.decideInterval': 'เธเนเธงเธเธเธฒเธฃเธเธฑเธเธชเธดเธเนเธ',
- 'ai-trading-assistant.form.decideInterval5m': '5 เธเธฒเธเธต',
- 'ai-trading-assistant.form.decideInterval10m': '10 เธเธฒเธเธต',
- 'ai-trading-assistant.form.decideInterval30m': '30 เธเธฒเธเธต',
- 'ai-trading-assistant.form.decideInterval1h': '1 เธเธฑเนเธงเนเธกเธ',
- 'ai-trading-assistant.form.decideInterval4h': '4 เธเธฑเนเธงเนเธกเธ',
- 'ai-trading-assistant.form.decideInterval1d': '1 เธงเธฑเธ',
- 'ai-trading-assistant.form.decideInterval1w': '1 เธชเธฑเธเธเธฒเธซเน',
- 'ai-trading-assistant.form.decideIntervalHint': 'เธเนเธงเธเนเธงเธฅเธฒเธเธตเน AI เนเธเธเธฒเธฃเธเธฑเธเธชเธดเธเนเธ',
- 'ai-trading-assistant.form.runPeriod': 'เธงเธดเนเธเธฃเธญเธ',
- 'ai-trading-assistant.form.runPeriodHint': 'เนเธงเธฅเธฒเนเธฃเธดเนเธกเธเนเธเนเธฅเธฐเนเธงเธฅเธฒเธชเธดเนเธเธชเธธเธเธเธญเธเธเธฒเธฃเธเธณเนเธเธดเธเธเธฅเธขเธธเธเธเน',
- 'ai-trading-assistant.form.startDate': 'เธงเธฑเธเธเธตเนเนเธฃเธดเนเธกเธเนเธ',
- 'ai-trading-assistant.form.endDate': 'เธงเธฑเธเธเธตเนเธชเธดเนเธเธชเธธเธ',
- 'ai-trading-assistant.form.qdtCostTitle': 'เธเธณเนเธเธฐเธเธณเธเธฒเธฃเธซเธฑเธเนเธเธดเธเธเธญเธ QDT',
- 'ai-trading-assistant.form.qdtCostHint': 'เธเธฒเธฃเธเธฑเธเธชเธดเธเนเธเธเธญเธ AI เนเธเนเธฅเธฐเธเธฃเธฑเนเธเธเธฐเธเธนเธเธซเธฑเธเธญเธญเธ {cost} QDT เนเธเธฃเธเธเธฃเธงเธเธชเธญเธเนเธซเนเนเธเนเนเธเธงเนเธฒเธเธฑเธเธเธตเธเธญเธเธเธธเธเธกเธตเธขเธญเธเธเธเนเธซเธฅเธทเธญ QDT เนเธเธตเธขเธเธเธญ เนเธเธฃเธฐเธซเธงเนเธฒเธเธเธฒเธฃเธเธณเนเธเธดเธเธเธฒเธฃเธเธฒเธกเธเธฅเธขเธธเธเธเนเธเนเธฒเธเธฃเธฃเธกเนเธเธตเธขเธกเธเธฐเธเธนเธเธซเธฑเธเนเธเธเนเธฃเธตเธขเธฅเนเธเธกเนเธชเธณเธซเธฃเธฑเธเธเธฒเธฃเธเธฑเธเธชเธดเธเนเธเนเธเนเธฅเธฐเธเธฃเธฑเนเธ',
- 'ai-trading-assistant.form.apiKey': 'เธเธตเธขเน API',
- 'ai-trading-assistant.form.exchange': 'เนเธฅเธทเธญเธเธเธฒเธฃเนเธฅเธเนเธเธฅเธตเนเธขเธ',
- 'ai-trading-assistant.form.secretKey': 'เธฃเธซเธฑเธชเธฅเธฑเธ',
- 'ai-trading-assistant.form.passphrase': 'เธเนเธญเธเธงเธฒเธกเธฃเธซเธฑเธชเธเนเธฒเธ',
- 'ai-trading-assistant.form.testConnection': 'เธเธเธชเธญเธเธเธฒเธฃเนเธเธทเนเธญเธกเธเนเธญ',
- 'ai-trading-assistant.form.symbol': 'เธเธนเนเธเธฒเธฃเธเธทเนเธญเธเธฒเธข',
- 'ai-trading-assistant.form.symbolHint': 'เนเธฅเธทเธญเธเธเธนเนเธเธฒเธฃเธเธทเนเธญเธเธฒเธขเธเธตเนเธเธฐเธเธทเนเธญเธเธฒเธข',
- 'ai-trading-assistant.form.initialCapital': 'เธเธณเธเธงเธเนเธเธดเธเธเธตเนเธฅเธเธเธธเธ (เธกเธฒเธฃเนเธเธดเนเธ)',
- 'ai-trading-assistant.form.leverage': 'เนเธเนเธเธฃเธฐเนเธขเธเธเนเธซเธฅเธฒเธขเธญเธขเนเธฒเธ',
- 'ai-trading-assistant.form.timeframe': 'เธเนเธงเธเนเธงเธฅเธฒ',
- 'ai-trading-assistant.form.timeframe1m': '1 เธเธฒเธเธต',
- 'ai-trading-assistant.form.timeframe5m': '5 เธเธฒเธเธต',
- 'ai-trading-assistant.form.timeframe15m': '15 เธเธฒเธเธต',
- 'ai-trading-assistant.form.timeframe30m': '30 เธเธฒเธเธต',
- 'ai-trading-assistant.form.timeframe1H': '1 เธเธฑเนเธงเนเธกเธ',
- 'ai-trading-assistant.form.timeframe4H': '4 เธเธฑเนเธงเนเธกเธ',
- 'ai-trading-assistant.form.timeframe1D': '1 เธงเธฑเธ',
- 'ai-trading-assistant.form.marketType': 'เธเธฃเธฐเนเธ เธเธเธฅเธฒเธ',
- 'ai-trading-assistant.form.marketTypeFutures': 'เธชเธฑเธเธเธฒ',
- 'ai-trading-assistant.form.marketTypeSpot': 'เธเธธเธเธชเธดเธเธเนเธฒ',
- 'ai-trading-assistant.form.totalPnl': 'เธเธณเนเธฃเนเธฅเธฐเธเธฒเธเธเธธเธเธเธฑเนเธเธซเธกเธ',
- 'ai-trading-assistant.form.customPrompt': 'เธเธณเนเธเนเธเธเธตเนเธเธณเธซเธเธเนเธญเธ',
- 'ai-trading-assistant.form.customPromptHint': 'เธเธฑเธงเนเธฅเธทเธญเธเนเธชเธฃเธดเธก เนเธเนเนเธเธทเนเธญเธเธฃเธฑเธเนเธเนเธเธเธฅเธขเธธเธเธเนเธเธฒเธฃเธเธทเนเธญเธเธฒเธข AI เนเธฅเธฐเธเธฃเธฃเธเธฐเนเธเธเธฒเธฃเธเธฑเธเธชเธดเธเนเธ',
- 'ai-trading-assistant.form.cancel': 'เธขเธเนเธฅเธดเธ',
- 'ai-trading-assistant.form.prev': 'เธเธฑเนเธเธเธญเธเธเนเธญเธเธซเธเนเธฒ',
- 'ai-trading-assistant.form.next': 'เธเธฑเนเธเธเธญเธเธเนเธญเนเธ',
- 'ai-trading-assistant.form.confirmCreate': 'เธขเธทเธเธขเธฑเธเธเธฒเธฃเธชเธฃเนเธฒเธ',
- 'ai-trading-assistant.form.confirmEdit': 'เธขเธทเธเธขเธฑเธเธเธฒเธฃเนเธเธฅเธตเนเธขเธเนเธเธฅเธ',
- 'ai-trading-assistant.messages.createSuccess': 'เธชเธฃเนเธฒเธเธเธฅเธขเธธเธเธเนเธชเธณเนเธฃเนเธเนเธฅเนเธง',
- 'ai-trading-assistant.messages.createFailed': 'เนเธกเนเธชเธฒเธกเธฒเธฃเธเธชเธฃเนเธฒเธเธเนเธขเธเธฒเธขเนเธเน',
- 'ai-trading-assistant.messages.updateSuccess': 'เธญเธฑเธเนเธเธเธเนเธขเธเธฒเธขเธชเธณเนเธฃเนเธเนเธฅเนเธง',
- 'ai-trading-assistant.messages.updateFailed': 'เธญเธฑเธเนเธเธเธเนเธขเธเธฒเธขเนเธกเนเธชเธณเนเธฃเนเธ',
- 'ai-trading-assistant.messages.deleteSuccess': 'เธฅเธเธเนเธขเธเธฒเธขเธชเธณเนเธฃเนเธเนเธฅเนเธง',
- 'ai-trading-assistant.messages.deleteFailed': 'เธฅเธเธเนเธขเธเธฒเธขเธฅเนเธกเนเธซเธฅเธง',
- 'ai-trading-assistant.messages.startSuccess': 'เธเธฅเธขเธธเธเธเนเนเธฃเธดเนเธกเธเนเธเนเธเนเธชเธณเนเธฃเนเธ',
- 'ai-trading-assistant.messages.startFailed': 'เนเธกเนเธชเธฒเธกเธฒเธฃเธเนเธฃเธดเนเธกเธเนเธขเธเธฒเธขเนเธเน',
- 'ai-trading-assistant.messages.stopSuccess': 'เธเธฅเธขเธธเธเธเนเธซเธขเธธเธเธชเธณเนเธฃเนเธ',
- 'ai-trading-assistant.messages.stopFailed': 'เธเธฅเธขเธธเธเธเนเธซเธขเธธเธเธฅเนเธกเนเธซเธฅเธง',
- 'ai-trading-assistant.messages.loadFailed': 'เนเธกเนเธชเธฒเธกเธฒเธฃเธเธฃเธฑเธเธฃเธฒเธขเธเธฒเธฃเธเนเธขเธเธฒเธข',
- 'ai-trading-assistant.messages.loadDecisionsFailed': 'เนเธกเนเธชเธฒเธกเธฒเธฃเธเธฃเธฑเธเธเธฑเธเธเธถเธเธเธฒเธฃเธเธฑเธเธชเธดเธเนเธเธเธญเธ AI',
- 'ai-trading-assistant.messages.deleteConfirm': 'เธเธธเธเนเธเนเนเธเธซเธฃเธทเธญเนเธกเนเธงเนเธฒเธเนเธญเธเธเธฒเธฃเธฅเธเธเนเธขเธเธฒเธขเธเธตเนเธเธฒเธฃเธเธณเนเธเธดเธเธเธฒเธฃเธเธตเนเนเธกเนเธชเธฒเธกเธฒเธฃเธเธขเนเธญเธเธเธฅเธฑเธเนเธเน',
- 'ai-trading-assistant.placeholders.inputStrategyName': 'เนเธเธฃเธเธเนเธญเธเธเธทเนเธญเธเนเธขเธเธฒเธข',
- 'ai-trading-assistant.placeholders.selectModelId': 'เนเธเธฃเธเนเธฅเธทเธญเธเนเธกเนเธเธฅ AI',
- 'ai-trading-assistant.placeholders.selectDecideInterval': 'เนเธเธฃเธเนเธฅเธทเธญเธเธเนเธงเธเธเธฒเธฃเธเธฑเธเธชเธดเธเนเธ',
- 'ai-trading-assistant.placeholders.startTime': 'เนเธงเธฅเธฒเนเธฃเธดเนเธกเธเนเธ',
- 'ai-trading-assistant.placeholders.endTime': 'เนเธงเธฅเธฒเธชเธดเนเธเธชเธธเธ',
- 'ai-trading-assistant.placeholders.inputApiKey': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธตเธขเน API',
- 'ai-trading-assistant.placeholders.selectExchange': 'เธเธฃเธธเธเธฒเนเธฅเธทเธญเธเธเธฒเธฃเนเธฅเธเนเธเธฅเธตเนเธขเธ',
- 'ai-trading-assistant.placeholders.inputSecretKey': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธฃเธซเธฑเธชเธฅเธฑเธ',
- 'ai-trading-assistant.placeholders.inputPassphrase': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธฃเธซเธฑเธชเธเนเธฒเธ',
- 'ai-trading-assistant.placeholders.selectSymbol': 'เนเธเธฃเธเนเธฅเธทเธญเธเธเธนเนเธเธฒเธฃเธเธทเนเธญเธเธฒเธข เนเธเนเธ BTC/USDT',
- 'ai-trading-assistant.placeholders.selectTimeframe': 'เนเธเธฃเธเนเธฅเธทเธญเธเธเนเธงเธเนเธงเธฅเธฒ',
- 'ai-trading-assistant.placeholders.inputCustomPrompt': 'เนเธเธฃเธเธเนเธญเธเธเธณเนเธเนเธเธเธตเนเธเธณเธซเธเธเนเธญเธ (เนเธกเนเธเธฑเธเธเธฑเธ)',
- 'ai-trading-assistant.validation.strategyNameRequired': 'เนเธเธฃเธเธเนเธญเธเธเธทเนเธญเธเนเธขเธเธฒเธข',
- 'ai-trading-assistant.validation.modelIdRequired': 'เนเธเธฃเธเนเธฅเธทเธญเธเนเธกเนเธเธฅ AI',
- 'ai-trading-assistant.validation.runPeriodRequired': 'เธเธฃเธธเธเธฒเนเธฅเธทเธญเธเธฃเธญเธเธเธฒเธฃเธเธณเธเธฒเธ',
- 'ai-trading-assistant.validation.apiKeyRequired': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธตเธขเน API',
- 'ai-trading-assistant.validation.exchangeRequired': 'เธเธฃเธธเธเธฒเนเธฅเธทเธญเธเธเธฒเธฃเนเธฅเธเนเธเธฅเธตเนเธขเธ',
- 'ai-trading-assistant.validation.secretKeyRequired': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธฃเธซเธฑเธชเธฅเธฑเธ',
- 'ai-trading-assistant.validation.symbolRequired': 'เธเธฃเธธเธเธฒเนเธฅเธทเธญเธเธเธนเนเธเธฒเธฃเธเธทเนเธญเธเธฒเธข',
- 'ai-trading-assistant.validation.initialCapitalRequired': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธเธณเธเธงเธเนเธเธดเธเธฅเธเธเธธเธ',
- 'ai-trading-assistant.table.time': 'เนเธงเธฅเธฒ',
- 'ai-trading-assistant.table.type': 'เธเธดเธกเธเน',
- 'ai-trading-assistant.table.price': 'เธฃเธฒเธเธฒ',
- 'ai-trading-assistant.table.amount': 'เธเธฃเธดเธกเธฒเธ',
- 'ai-trading-assistant.table.value': 'เธเธณเธเธงเธ',
- 'ai-trading-assistant.table.symbol': 'เธเธนเนเธเธฒเธฃเธเธทเนเธญเธเธฒเธข',
- 'ai-trading-assistant.table.side': 'เธเธดเธจเธเธฒเธ',
- 'ai-trading-assistant.table.size': 'เธเธฃเธดเธกเธฒเธเธเธณเนเธซเธเนเธ',
- 'ai-trading-assistant.table.entryPrice': 'เธฃเธฒเธเธฒเนเธเธดเธ',
- 'ai-trading-assistant.table.currentPrice': 'เธฃเธฒเธเธฒเธเธฑเธเธเธธเธเธฑเธ',
- 'ai-trading-assistant.table.unrealizedPnl': 'เธเธณเนเธฃเธซเธฃเธทเธญเธเธฒเธเธเธธเธเธเธตเนเธขเธฑเธเนเธกเนเนเธเธดเธเธเธถเนเธเธเธฃเธดเธ',
- 'ai-trading-assistant.table.profit': 'เธเธณเนเธฃเนเธฅเธฐเธเธฒเธเธเธธเธ',
- 'ai-trading-assistant.table.openLong': 'เนเธเธดเธเธขเธฒเธงเน',
- 'ai-trading-assistant.table.closeLong': 'เธเธดเธเธเธฑเธง',
- 'ai-trading-assistant.table.openShort': 'เนเธเธดเธเธชเธฑเนเธ',
- 'ai-trading-assistant.table.closeShort': 'เธงเนเธฒเธเนเธเธฅเนเธฒ',
- 'ai-trading-assistant.table.addLong': 'เธเธฒเธเธญเธ',
- 'ai-trading-assistant.table.addShort': 'เนเธเธดเนเธกเธชเธฑเนเธ',
- 'ai-trading-assistant.table.closeShortProfit': 'เธเธฒเธขเธเธณเธเธณเนเธฃเธเธฒเธเธชเธเธฒเธเธฐเธเธฒเธข',
- 'ai-trading-assistant.table.closeShortStop': 'เธซเธขเธธเธเธเธฒเธฃเธชเธนเธเนเธชเธตเธข',
- 'ai-trading-assistant.table.closeLongProfit': 'เธซเธขเธธเธเธขเธฒเธงเนเธฅเธฐเธเธณเธเธณเนเธฃ',
- 'ai-trading-assistant.table.closeLongStop': 'เธซเธขเธธเธเธเธฒเธฃเธชเธนเธเนเธชเธตเธข',
- 'ai-trading-assistant.table.buy': 'เธเธทเนเธญ',
- 'ai-trading-assistant.table.sell': 'เธเธฒเธข',
- 'ai-trading-assistant.table.long': 'เธขเธฒเธงเนเธ',
- 'ai-trading-assistant.table.short': 'เธชเธฑเนเธ',
- 'ai-trading-assistant.table.hold': 'เธเธทเธญ',
- 'ai-trading-assistant.table.reasoning': 'เนเธซเธเธธเธเธฅเนเธเธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเน',
- 'ai-trading-assistant.table.decisions': 'เธเธฒเธฃเธเธฑเธเธชเธดเธเนเธ',
- 'ai-trading-assistant.table.riskAssessment': 'เธเธฒเธฃเธเธฃเธฐเนเธกเธดเธเธเธงเธฒเธกเนเธชเธตเนเธขเธ',
- 'ai-trading-assistant.table.confidence': 'เธเธงเธฒเธกเธกเธฑเนเธเนเธ',
- 'ai-trading-assistant.table.totalRecords': 'เธฃเธงเธก {total} เธเธฑเธเธเธถเธ',
- 'ai-trading-assistant.table.noPositions': 'เธขเธฑเธเนเธกเนเธกเธตเธเธณเนเธซเธเนเธ',
- 'ai-trading-assistant.detail.title': 'เธฃเธฒเธขเธฅเธฐเนเธญเธตเธขเธเธเธฅเธขเธธเธเธเน',
- 'ai-trading-assistant.equity.noData': 'เธขเธฑเธเนเธกเนเธกเธตเธเนเธญเธกเธนเธฅเธกเธนเธฅเธเนเธฒเธชเธธเธเธเธด',
- 'ai-trading-assistant.equity.equity': 'เธกเธนเธฅเธเนเธฒเธชเธธเธเธเธด',
- 'ai-trading-assistant.exchange.testFailed': 'เธเธฒเธฃเธเธเธชเธญเธเธเธฒเธฃเนเธเธทเนเธญเธกเธเนเธญเธฅเนเธกเนเธซเธฅเธง',
- 'ai-trading-assistant.exchange.connectionSuccess': 'เธเธฒเธฃเนเธเธทเนเธญเธกเธเนเธญเธชเธณเนเธฃเนเธ',
- 'ai-trading-assistant.exchange.connectionFailed': 'เธเธฒเธฃเนเธเธทเนเธญเธกเธเนเธญเธฅเนเธกเนเธซเธฅเธง',
- 'ai-trading-assistant.form.advancedSettings': 'เธเธฒเธฃเธเธฑเนเธเธเนเธฒเธเธฑเนเธเธชเธนเธ',
- 'ai-trading-assistant.form.orderMode': 'เนเธซเธกเธเธเธฒเธฃเธชเธฑเนเธเธเธทเนเธญ',
- 'ai-trading-assistant.form.orderModeMaker': 'เธเธนเนเธชเธฃเนเธฒเธ',
- 'ai-trading-assistant.form.orderModeTaker': 'เธฃเธฒเธเธฒเธเธฅเธฒเธ (เนเธเธเนเธเธญเธฃเน)',
- 'ai-trading-assistant.form.orderModeHint': 'เนเธซเธกเธเธเธณเธชเธฑเนเธเธเธทเนเธญเธเธตเนเธฃเธญเธเธณเนเธเธดเธเธเธฒเธฃเนเธเนเธเธณเธชเธฑเนเธเธเธทเนเธญเนเธเธเธเธณเธเธฑเธเนเธฅเธฐเธเนเธฒเธเธฃเธฃเธกเนเธเธตเธขเธกเธเธฒเธฃเธเธฑเธเธเธฒเธฃเธเนเธณเธเธงเนเธฒ เนเธซเธกเธเธฃเธฒเธเธฒเธเธฅเธฒเธเธเธฐเธเธณเนเธเธดเธเธเธฒเธฃเธเธฑเธเธเธตเนเธฅเธฐเธเนเธฒเธเธฃเธฃเธกเนเธเธตเธขเธกเธเธฒเธฃเธเธฑเธเธเธฒเธฃเธเธฐเธชเธนเธเธเธถเนเธ',
- 'ai-trading-assistant.form.makerWaitSec': 'เนเธงเธฅเธฒเธฃเธญเธชเธณเธซเธฃเธฑเธเธเธณเธชเธฑเนเธเธเธทเนเธญเธเธตเนเธฃเธญเธเธณเนเธเธดเธเธเธฒเธฃ (เธงเธดเธเธฒเธเธต)',
- 'ai-trading-assistant.form.makerWaitSecHint': 'เนเธงเธฅเธฒเธเธตเนเธเนเธญเธเธฃเธญเธเธฒเธฃเธเธณเธเธธเธฃเธเธฃเธฃเธกเธซเธฅเธฑเธเธเธฒเธเธเธณเธเธฒเธฃเธชเธฑเนเธเธเธทเนเธญ เธขเธเนเธฅเธดเธเนเธฅเธฐเธฅเธญเธเธญเธตเธเธเธฃเธฑเนเธเธซเธฅเธฑเธเธเธฒเธเธซเธกเธเนเธงเธฅเธฒ',
- 'ai-trading-assistant.form.makerRetries': 'เธเธณเธเธงเธเธเธฒเธฃเธฅเธญเธเนเธซเธกเนเธชเธณเธซเธฃเธฑเธเธเธณเธชเธฑเนเธเธเธทเนเธญเธเธตเนเธฃเธญเธเธณเนเธเธดเธเธเธฒเธฃ',
- 'ai-trading-assistant.form.makerRetriesHint': 'เธเธณเธเธงเธเธเธฃเธฑเนเธเธชเธนเธเธชเธธเธเนเธเธเธฒเธฃเธฅเธญเธเนเธซเธกเนเนเธกเธทเนเธญเนเธกเนเนเธเนเธเธณเนเธเธดเธเธเธฒเธฃเธเธณเธชเธฑเนเธเธเธทเนเธญเธเธตเนเธฃเธญเธเธณเนเธเธดเธเธเธฒเธฃ',
- 'ai-trading-assistant.form.fallbackToMarket': 'เธเธณเธชเธฑเนเธเธเธทเนเธญเธเธตเนเธฃเธญเธเธณเนเธเธดเธเธเธฒเธฃเธฅเนเธกเนเธซเธฅเธงเนเธฅเธฐเธฃเธฒเธเธฒเธเธฅเธฒเธเธเธนเธเธฅเธเธฃเธฐเธเธฑเธเธฅเธ',
- 'ai-trading-assistant.form.fallbackToMarketHint': 'เนเธกเธทเนเธญเธเธฒเธฃเนเธเธดเธ/เธเธดเธเธเธณเธชเธฑเนเธเธเธทเนเธญเธเธตเนเธฃเธญเธเธณเนเธเธดเธเธเธฒเธฃเนเธกเนเนเธชเธฃเนเธเธชเธกเธเธนเธฃเธเน เธเธงเธฃเธเธฒเธงเธเนเนเธเธฃเธเนเธเนเธเธเธณเธชเธฑเนเธเธเธทเนเธญเนเธเธเธฅเธฒเธเนเธเธทเนเธญเนเธซเนเนเธเนเนเธเธงเนเธฒเธเธธเธฃเธเธฃเธฃเธกเธเธฐเนเธชเธฃเนเธเธชเธกเธเธนเธฃเธเนเธซเธฃเธทเธญเนเธกเน',
- 'ai-trading-assistant.form.marginMode': 'เนเธซเธกเธเธฃเธฐเธขเธฐเธเธญเธ',
- 'ai-trading-assistant.form.marginModeCross': 'เนเธเธเธฑเธเนเธเนเธก',
- 'ai-trading-assistant.form.marginModeIsolated': 'เธเธณเนเธซเธเนเธเธเธตเนเนเธเธเนเธเธตเนเธขเธง',
- 'ai-analysis.title': 'เนเธเธฃเธทเนเธญเธเธกเธทเธญเธเธฒเธฃเธเธทเนเธญเธเธฒเธขเธเธงเธญเธเธเธฑเธก',
- 'ai-analysis.system.online': 'เธญเธญเธเนเธฅเธเน',
- 'ai-analysis.system.agents': 'เธเธฑเธงเนเธเธ',
- 'ai-analysis.system.active': 'เธเธฅเนเธญเธเนเธเธฅเนเธง',
- 'ai-analysis.system.stage': 'เนเธงเธเธต',
- 'ai-analysis.panel.roster': 'เธฃเธฒเธขเธเธทเนเธญเธเธฑเธงเนเธเธ',
- 'ai-analysis.panel.thinking': 'เธเธณเธฅเธฑเธเธเธดเธ...',
- 'ai-analysis.panel.done': 'เนเธชเธฃเนเธ',
- 'ai-analysis.panel.standby': 'เธชเนเธเธเธเนเธเธฒเธข',
- 'ai-analysis.input.title': 'เนเธเธฃเธทเนเธญเธเธกเธทเธญเธเธฒเธฃเธเธทเนเธญเธเธฒเธขเธเธงเธญเธเธเธฑเธก',
- 'ai-analysis.input.placeholder': 'เนเธฅเธทเธญเธเธชเธดเธเธเธฃเธฑเธเธขเนเนเธเนเธฒเธซเธกเธฒเธข (เนเธเนเธ BTC/USDT)',
- 'ai-analysis.input.watchlist': 'เธซเธธเนเธเธเธฒเธเนเธฅเธทเธญเธ',
- 'ai-analysis.input.start': 'เนเธฃเธดเนเธกเธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเน',
- 'ai-analysis.input.recent': 'เธเธฒเธเธฅเนเธฒเธชเธธเธ:',
- 'ai-analysis.vis.stage': 'เนเธงเธเธต',
- 'ai-analysis.vis.processing': 'เธเธณเธฅเธฑเธเธเธฃเธฐเธกเธงเธฅเธเธฅ',
- 'ai-analysis.result.complete': 'เธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเนเธชเธฃเนเธเธชเธกเธเธนเธฃเธเน',
- 'ai-analysis.result.signal': 'เธชเธฑเธเธเธฒเธเธชเธธเธเธเนเธฒเธข',
- 'ai-analysis.result.confidence': 'เธเธงเธฒเธกเธกเธฑเนเธเนเธ:',
- 'ai-analysis.result.new': 'เธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเนเธซเธกเน',
- 'ai-analysis.result.full': 'เธเธนเธฃเธฒเธขเธเธฒเธเธเธเธฑเธเนเธเนเธก',
- 'ai-analysis.logs.title': 'เธเธฑเธเธเธถเธเธเธญเธเธฃเธฐเธเธ',
- 'ai-analysis.modal.title': 'เธฃเธฒเธขเธเธฒเธเธเธตเนเนเธเนเธเธเธงเธฒเธกเธฅเธฑเธ',
- 'ai-analysis.modal.fundamental': 'เธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเธทเนเธเธเธฒเธ',
- 'ai-analysis.modal.technical': 'เธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเธฒเธเนเธเธเธเธดเธ',
- 'ai-analysis.modal.sentiment': 'เธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเธญเธฒเธฃเธกเธเน',
- 'ai-analysis.modal.risk': 'เธเธฒเธฃเธเธฃเธฐเนเธกเธดเธเธเธงเธฒเธกเนเธชเธตเนเธขเธ',
- 'ai-analysis.stage.idle': 'เธชเนเธเธเธเนเธเธฒเธข',
- 'ai-analysis.stage.1': 'เธฃเธฐเธขเธฐเธเธตเนเธซเธเธถเนเธ: เธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเธซเธฅเธฒเธขเธกเธดเธเธด',
- 'ai-analysis.stage.2': 'เธฃเธฐเธขเธฐเธเธตเนเธชเธญเธ: เธเธฒเธฃเธญเธ เธดเธเธฃเธฒเธขเธฃเธฐเธขเธฐเธขเธฒเธง-เธฃเธฐเธขเธฐเธชเธฑเนเธ',
- 'ai-analysis.stage.3': 'เธฃเธฐเธขเธฐเธเธตเนเธชเธฒเธก: เธเธฒเธฃเธงเธฒเธเนเธเธเนเธเธดเธเธเธฅเธขเธธเธเธเน',
- 'ai-analysis.stage.4': 'เธเธฑเนเธเธเธญเธเธเธตเนเธชเธตเน: เธเธฒเธฃเธเธเธเธงเธเธเธฒเธฃเธเธงเธเธเธธเธกเธเธงเธฒเธกเนเธชเธตเนเธขเธ',
- 'ai-analysis.stage.complete': 'เนเธชเธฃเนเธ',
- 'ai-analysis.agent.investment_director': 'เธเธนเนเธญเธณเธเธงเธขเธเธฒเธฃเธเนเธฒเธขเธเธฒเธฃเธฅเธเธเธธเธ',
- 'ai-analysis.agent.role.investment_director': 'เธเธฒเธฃเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเธตเนเธเธฃเธญเธเธเธฅเธธเธกเนเธฅเธฐเธเนเธญเธชเธฃเธธเธเธเธฑเนเธเธชเธธเธเธเนเธฒเธข',
- 'ai-analysis.agent.market': 'เธเธฑเธเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเธฅเธฒเธ',
- 'ai-analysis.agent.role.market': 'เนเธเธเนเธเนเธฅเธขเธตเนเธฅเธฐเธเนเธญเธกเธนเธฅเธเธฒเธฃเธเธฅเธฒเธ',
- 'ai-analysis.agent.fundamental': 'เธเธฑเธเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเธทเนเธเธเธฒเธ',
- 'ai-analysis.agent.role.fundamental': 'เธเธฒเธฃเนเธเธดเธเนเธฅเธฐเธเธฒเธฃเธเธฃเธฐเนเธกเธดเธเธเนเธฒ',
- 'ai-analysis.agent.technical': 'เธเธฑเธเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเธฒเธเนเธเธเธเธดเธ',
- 'ai-analysis.agent.role.technical': 'เธเธฑเธงเธเธตเนเธงเธฑเธเนเธฅเธฐเนเธเธเธ เธนเธกเธดเธเธฒเธเนเธเธเธเธดเธ',
- 'ai-analysis.agent.news': 'เธเธฑเธเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเนเธฒเธง',
- 'ai-analysis.agent.role.news': 'เธเธฑเธงเธเธฃเธญเธเธเนเธฒเธงเธเธฑเนเธงเนเธฅเธ',
- 'ai-analysis.agent.sentiment': 'เธเธฑเธเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเธงเธฒเธกเธฃเธนเนเธชเธถเธ',
- 'ai-analysis.agent.role.sentiment': 'เธชเธฑเธเธเธกเนเธฅเธฐเธญเธฒเธฃเธกเธเน',
- 'ai-analysis.agent.risk': 'เธเธฑเธเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเธงเธฒเธกเนเธชเธตเนเธขเธ',
- 'ai-analysis.agent.role.risk': 'เธเธฒเธฃเธเธฃเธงเธเธชเธญเธเธเธงเธฒเธกเนเธชเธตเนเธขเธเนเธเธทเนเธญเธเธเนเธ',
- 'ai-analysis.agent.bull': 'เธเธฑเธเธงเธดเธเธฑเธขเธฃเธฑเนเธ',
- 'ai-analysis.agent.role.bull': 'เธเธฒเธฃเธเธธเธเธเธฑเธงเนเธฃเนเธเธเธเธดเธเธดเธฃเธดเธขเธฒเธเธฒเธฃเนเธเธดเธเนเธ',
- 'ai-analysis.agent.bear': 'เธเธฑเธเธงเธดเธเธฑเธขเธเธฒเธฅเธ',
- 'ai-analysis.agent.role.bear': 'เธเธฒเธฃเธเธธเธเธเธงเธฒเธกเนเธชเธตเนเธขเธเนเธฅเธฐเธเนเธญเธเธเธเธฃเนเธญเธ',
- 'ai-analysis.agent.manager': 'เธเธนเนเธเธฑเธเธเธฒเธฃเธเนเธฒเธขเธงเธดเธเธฑเธข',
- 'ai-analysis.agent.role.manager': 'เธเธนเนเธเธนเนเธฅเธเธฒเธฃเธญเธ เธดเธเธฃเธฒเธข',
- 'ai-analysis.agent.trader': 'เธเนเธญเธเนเธฒ',
- 'ai-analysis.agent.role.trader': 'เธเธฑเธเธขเธธเธเธเธจเธฒเธชเธเธฃเนเธเธฃเธดเธซเธฒเธฃ',
- 'ai-analysis.agent.risky': 'เธเธฑเธเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเธดเธเธเธฃเธฃเธก',
- 'ai-analysis.agent.role.risky': 'เธเธฅเธขเธธเธเธเนเนเธเธดเธเธฃเธธเธ',
- 'ai-analysis.agent.neutral': 'เธเธฑเธเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเธงเธฒเธกเธชเธกเธเธธเธฅ',
- 'ai-analysis.agent.role.neutral': 'เธเธฅเธขเธธเธเธเนเธเธฒเธฃเธชเธฃเนเธฒเธเธชเธกเธเธธเธฅ',
- 'ai-analysis.agent.safe': 'เธเธฑเธเธงเธดเนเธเธฃเธฒเธฐเธซเนเธญเธเธธเธฃเธฑเธเธฉเนเธเธดเธขเธก',
- 'ai-analysis.agent.role.safe': 'เธเธฅเธขเธธเธเธเนเธญเธเธธเธฃเธฑเธเธฉเนเธเธดเธขเธก',
- 'ai-analysis.agent.cro': 'เธเธนเนเธเธฑเธเธเธฒเธฃเธเนเธฒเธขเธเธงเธเธเธธเธกเธเธงเธฒเธกเนเธชเธตเนเธขเธ (CRO)',
- 'ai-analysis.agent.role.cro': 'เธญเธณเธเธฒเธเนเธเธเธฒเธฃเธเธฑเธเธชเธดเธเนเธเธเธฑเนเธเธชเธธเธเธเนเธฒเธข',
- 'ai-analysis.script.market': 'เธเธณเธฅเธฑเธเธเธถเธเธเนเธญเธกเธนเธฅ OHLCV เธเธฒเธเธเธฒเธฃเนเธฅเธเนเธเธฅเธตเนเธขเธเธซเธฅเธฑเธ...',
- 'ai-analysis.script.fundamental': 'เธเธณเธฅเธฑเธเธเธถเธเธฃเธฒเธขเธเธฒเธเธเธฒเธเธเธฒเธฃเนเธเธดเธเธฃเธฒเธขเนเธเธฃเธกเธฒเธช...',
- 'ai-analysis.script.technical': 'เธเธณเธฅเธฑเธเธงเธดเนเธเธฃเธฒเธฐเธซเนเธเธฑเธงเธเธตเนเธงเธฑเธเธเธฒเธเนเธเธเธเธดเธเนเธฅเธฐเธฃเธนเธเนเธเธเธเธฃเธฒเธ...',
- 'ai-analysis.script.news': 'เธเธณเธฅเธฑเธเธชเนเธเธเธเนเธฒเธงเธเธฒเธฃเนเธเธดเธเธเธฑเนเธงเนเธฅเธ...',
- 'ai-analysis.script.sentiment': 'เธงเธดเนเธเธฃเธฒเธฐเธซเนเนเธเธฃเธเธเนเนเธเนเธเธตเธขเธฅเธกเธตเนเธเธตเธข...',
- 'ai-analysis.script.risk': 'เธเธณเธฅเธฑเธเธเธณเธเธงเธเธเธงเธฒเธกเธเธฑเธเธเธงเธเนเธเธญเธเธตเธ...',
- 'invite.inviteLink': 'เธฅเธดเธเธเนเธเธณเนเธเธดเธ',
- 'invite.copy': 'เธเธฑเธเธฅเธญเธเธฅเธดเธเธเน',
- 'invite.copySuccess': 'เธเธฑเธเธฅเธญเธเธชเธณเนเธฃเนเธ!',
- 'invite.copyFailed': 'เธเธฒเธฃเธเธฑเธเธฅเธญเธเธฅเนเธกเนเธซเธฅเธง เนเธเธฃเธเธเธฑเธเธฅเธญเธเธเนเธงเธขเธเธเนเธญเธ',
- 'invite.noInviteLink': 'เนเธกเนเนเธเนเธชเธฃเนเธฒเธเธฅเธดเธเธเนเธเธณเนเธเธดเธ',
- 'invite.totalInvites': 'เธเธณเนเธเธดเธเธชเธฐเธชเธก',
- 'invite.totalReward': 'เธฃเธฒเธเธงเธฑเธฅเธชเธฐเธชเธก',
- 'invite.rules': 'เธเธเธเธฒเธฃเนเธเธดเธเธเธงเธ',
- 'invite.rule1': 'เธเธธเธเธเธฃเธฑเนเธเธเธตเนเธเธธเธเนเธเธดเธเนเธเธทเนเธญเธเธกเธฒเธฅเธเธเธฐเนเธเธตเธขเธเธชเธณเนเธฃเนเธ เธเธธเธเธเธฐเนเธเนเธฃเธฑเธเธฃเธฒเธเธงเธฑเธฅ',
- 'invite.rule2': 'เธซเธฒเธเนเธเธทเนเธญเธเธเธตเนเนเธเนเธฃเธฑเธเนเธเธดเธเธเธณเธเธธเธฃเธเธฃเธฃเธกเธเธฃเธฑเนเธเนเธฃเธเธชเธณเนเธฃเนเธ เธเธธเธเธเธฐเนเธเนเธฃเธฑเธเธฃเธฒเธเธงเธฑเธฅเนเธเธดเนเธกเนเธเธดเธก',
- 'invite.rule3': 'เธฃเธฒเธเธงเธฑเธฅเธเธณเนเธเธดเธเธเธฐเธเธนเธเธชเนเธเนเธเธขเธฑเธเธเธฑเธเธเธตเธเธญเธเธเธธเธเนเธเธขเธเธฃเธ',
- 'invite.inviteList': 'เธฃเธฒเธขเธเธฒเธฃเนเธเธดเธ',
- 'invite.tasks': 'เธจเธนเธเธขเนเธ เธฒเธฃเธเธดเธ',
- 'invite.inviteeName': 'เธเธนเนเนเธเนเธฃเธฑเธเนเธเธดเธ',
- 'invite.inviteTime': 'เนเธงเธฅเธฒเนเธเธดเธ',
- 'invite.status': 'เธชเธเธฒเธเธฐ',
- 'invite.reward': 'เธฃเธฒเธเธงเธฑเธฅ',
- 'invite.active': 'เธเธฅเนเธญเธเนเธเธฅเนเธง',
- 'invite.inactive': 'เนเธกเนเนเธเนเนเธเธดเธเนเธเนเธเธฒเธ',
- 'invite.completed': 'เธชเธกเธเธนเธฃเธเน',
- 'invite.claimed': 'เนเธเนเธฃเธฑเธ',
- 'invite.pending': 'เนเธซเนเนเธฅเนเธงเนเธชเธฃเนเธ',
- 'invite.goToTask': 'เนเธเธทเนเธญเนเธซเนเนเธชเธฃเนเธเธชเธกเธเธนเธฃเธเน',
- 'invite.claimReward': 'เธฃเธฑเธเธฃเธฒเธเธงเธฑเธฅ',
- 'invite.verify': 'เธเธฒเธฃเธขเธทเธเธขเธฑเธเนเธชเธฃเนเธเธชเธกเธเธนเธฃเธเน',
- 'invite.verifySuccess': 'เธเธฒเธฃเธขเธทเธเธขเธฑเธเธชเธณเนเธฃเนเธ!เธเธฒเธเนเธชเธฃเนเธเธชเธกเธเธนเธฃเธเน',
- 'invite.verifyNotCompleted': 'เธเธฒเธเธขเธฑเธเนเธกเนเนเธชเธฃเนเธเธชเธกเธเธนเธฃเธเน เธเธฃเธธเธเธฒเธเธณเธเธฒเธเนเธซเนเนเธชเธฃเนเธเธเนเธญเธ',
- 'invite.verifyFailed': 'เธเธฒเธฃเธขเธทเธเธขเธฑเธเธฅเนเธกเนเธซเธฅเธง เนเธเธฃเธเธฅเธญเธเธญเธตเธเธเธฃเธฑเนเธเนเธเธ เธฒเธขเธซเธฅเธฑเธ',
- 'invite.claimSuccess': 'เธฃเธฑเธ {reward} QDT เธชเธณเนเธฃเนเธเนเธฅเนเธง!',
- 'invite.claimFailed': 'เนเธกเนเธชเธฒเธกเธฒเธฃเธเธฃเธงเธเธฃเธงเธกเนเธเน เนเธเธฃเธเธฅเธญเธเธญเธตเธเธเธฃเธฑเนเธเนเธเธ เธฒเธขเธซเธฅเธฑเธ',
- 'invite.totalRecords': 'เธฃเธงเธก {total} เธเธฑเธเธเธถเธ',
- 'invite.task.twitter.title': 'เธฃเธตเธเธงเธตเธเนเธเธเธตเน X (Twitter)',
- 'invite.task.twitter.desc': 'เนเธเนเธเธเธฑเธเธเธงเธตเธเธญเธขเนเธฒเธเนเธเนเธเธเธฒเธเธเธฒเธฃเธเธญเธเนเธฃเธฒเนเธเธขเธฑเธเธเธฑเธเธเธต X (Twitter) เธเธญเธเธเธธเธ',
- 'invite.task.youtube.title': 'เธเธดเธเธเธฒเธกเธเนเธญเธ YouTube เธเธญเธเนเธฃเธฒ',
- 'invite.task.youtube.desc': 'เธชเธกเธฑเธเธฃเธชเธกเธฒเธเธดเธเนเธฅเธฐเธเธดเธเธเธฒเธกเธเนเธญเธ YouTube เธญเธขเนเธฒเธเนเธเนเธเธเธฒเธเธเธฒเธฃเธเธญเธเนเธฃเธฒ',
- 'invite.task.telegram.title': 'เนเธเนเธฒเธฃเนเธงเธกเธเธฅเธธเนเธกเนเธเธฃเนเธฅเธ',
- 'invite.task.telegram.desc': 'เนเธเนเธฒเธฃเนเธงเธกเธเธฅเธธเนเธกเธเธธเธกเธเธเนเธเธฃเนเธฅเธเธญเธขเนเธฒเธเนเธเนเธเธเธฒเธเธเธฒเธฃเธเธญเธเนเธฃเธฒ',
- 'invite.task.discord.title': 'เนเธเนเธฒเธฃเนเธงเธกเนเธเธดเธฃเนเธเนเธงเธญเธฃเน Discord',
- 'invite.task.discord.desc': 'เนเธเนเธฒเธฃเนเธงเธกเนเธเธดเธฃเนเธเนเธงเธญเธฃเนเธเธธเธกเธเธ Discord เธเธญเธเนเธฃเธฒ',
- 'message': '-',
- 'layouts.usermenu.dialog.title': 'เธเนเธญเธกเธนเธฅ',
- 'layouts.usermenu.dialog.content': 'เธเธธเธเนเธเนเนเธเธซเธฃเธทเธญเนเธกเนเธงเนเธฒเธเนเธญเธเธเธฒเธฃเธญเธญเธเธเธฒเธเธฃเธฐเธเธ?',
- 'layouts.userLayout.title': 'เธเนเธเธซเธฒเธเธงเธฒเธกเธเธฃเธดเธเนเธเธเธงเธฒเธกเนเธกเนเนเธเนเธเธญเธ',
- // Auto-filled missing keys from en-US (fallback to English)
- 'dashboard.indicator.boundary.message': 'Note: The indicator script only computes plots + buy/sell signals. Position sizing, risk, scaling, fees/slippage belong to execution config.',
- 'dashboard.indicator.boundary.indicatorRule': "Keep the script to buy/sell only (and set df['buy']/df['sell']). Do NOT implement position management, TP/SL, scaling in the script.",
- 'dashboard.indicator.boundary.backtestRule': 'Rule: If a bar has a main signal (buy/sell โ open/close/reverse), scaling in/out is skipped on the same bar.',
- 'dashboard.indicator.guide.title': 'Python Indicator & Strategy Development Guide',
- 'dashboard.indicator.guide.intro': 'This platform supports writing custom technical indicators and trading signals using Python. The system includes built-in pandas and numpy data analysis libraries. You can use standard DataFrame operations to process K-line data and draw charts or mark buy/sell signals.',
- 'dashboard.indicator.guide.section1.title': '1. Runtime Environment & Predefined Variables',
- 'dashboard.indicator.guide.section1.env': 'Your code runs in a browser-based Python environment (Pyodide).',
- 'dashboard.indicator.guide.section1.libs': 'Pre-installed Libraries',
- 'dashboard.indicator.guide.section1.libsDesc': 'The following libraries are imported by default, no need to import again:',
- 'dashboard.indicator.guide.section1.libsList': 'pandas (pd), numpy (np), math, json',
- 'dashboard.indicator.guide.section1.data': 'Input Data: df',
- 'dashboard.indicator.guide.section1.dataDesc': 'The system automatically converts current K-line data into a Pandas DataFrame object, variable name is df.',
- 'dashboard.indicator.guide.section1.dataColumns': 'df contains the following columns (all float type):',
- 'dashboard.indicator.guide.section1.dataColumnsList': 'time (timestamp, seconds), open, high, low, close, volume',
- 'dashboard.indicator.guide.section1.dataNote': 'Data index is arranged from old to new (0 is the earliest data, last row is the latest data).',
- 'dashboard.indicator.guide.section1.dataIndex': 'Important: df index is timestamp (DatetimeIndex), please preserve the index, avoid using .values which loses the index.',
- 'dashboard.indicator.guide.section2.title': '2. Parameter Definition',
- 'dashboard.indicator.guide.section2.desc': 'You can define variables as parameters at the beginning of your code. The system will try to parse statements like variable = value as adjustable parameters.',
- 'dashboard.indicator.guide.section2.example': 'Parameter Example',
- 'dashboard.indicator.guide.section2.exampleCode': 'span = 20 or multiplier = 2.0',
- 'dashboard.indicator.guide.section3.title': '3. Backtest Signal Setup (Important!)',
- 'dashboard.indicator.guide.section3.desc': 'If you want your indicator to support backtesting, you must set the following two columns in your code:',
- 'dashboard.indicator.guide.section3.backtestRequired': 'Required for Backtesting:',
- 'dashboard.indicator.guide.section3.backtestBuySignal': "df['buy_signal'] - Boolean Series, True indicates buy signal",
- 'dashboard.indicator.guide.section3.backtestSellSignal': "df['sell_signal'] - Boolean Series, True indicates sell signal",
- 'dashboard.indicator.guide.section3.backtestExample': 'Example:',
- 'dashboard.indicator.guide.section3.backtestExampleCode': "df['buy_signal'] = condition_buydf['sell_signal'] = condition_sell",
- 'dashboard.indicator.guide.section3.backtestNote': 'Note: Even if you only set output.signals for chart display, you must set these two columns to enable backtesting.',
- 'dashboard.indicator.guide.section4.title': '4. Output Requirements: output',
- 'dashboard.indicator.guide.section4.desc': 'At the end of code execution, you must define a dictionary named output to tell the chart how to display results.',
- 'dashboard.indicator.guide.section4.fields': 'The output dictionary contains the following fields:',
- 'dashboard.indicator.guide.section4.plots': 'plots - For drawing lines (e.g., moving averages, RSI)',
- 'dashboard.indicator.guide.section4.signals': 'signals - For marking buy/sell signals (e.g., arrows, labels)',
- 'dashboard.indicator.guide.section4.name': 'name - Indicator name (optional)',
- 'dashboard.indicator.guide.section4.calculatedVars': 'calculatedVars - Calculated variables (optional, for displaying additional information)',
- 'dashboard.indicator.guide.section5.title': '5. Plot Configuration (Plots)',
- 'dashboard.indicator.guide.section5.desc': 'Each object in the plots list represents a line.',
- 'dashboard.indicator.guide.section5.table.field': 'Field',
- 'dashboard.indicator.guide.section5.table.type': 'Type',
- 'dashboard.indicator.guide.section5.table.required': 'Required',
- 'dashboard.indicator.guide.section5.table.requiredYes': 'Yes',
- 'dashboard.indicator.guide.section5.table.requiredNo': 'No',
- 'dashboard.indicator.guide.section5.table.desc': 'Description',
- 'dashboard.indicator.guide.section5.table.name': 'The name of the indicator line, displayed in the legend',
- 'dashboard.indicator.guide.section5.table.data': 'Data list, length must match the number of rows in df. Recommended to use series.tolist()',
- 'dashboard.indicator.guide.section5.table.color': "Line color (Hex format, e.g. '#ff0000'). If not filled, the system will automatically assign",
- 'dashboard.indicator.guide.section5.table.typeDesc': "Chart type, default is 'line'",
- 'dashboard.indicator.guide.section5.table.overlay': 'Important. True means display on main chart (with K-line), False means display on sub-chart (independent area)',
- 'dashboard.indicator.guide.section5.example': 'Example: Draw Simple Moving Average (SMA)',
- 'dashboard.indicator.guide.section5.exampleCalc': 'Calculate SMA',
- 'dashboard.indicator.guide.section5.exampleOutput': 'Construct Output',
- 'dashboard.indicator.guide.section5.exampleOverlay': 'Display on main chart',
- 'dashboard.indicator.guide.section6.title': '6. Signal Markers (Signals)',
- 'dashboard.indicator.guide.section6.desc': "signals are used to mark buy/sell points on specific K-lines through icons or text. Note: This is only for chart display. The backtest system uses df['buy_signal'] and df['sell_signal'].",
- 'dashboard.indicator.guide.section6.table.type': "Signal type: 'buy' (buy, marked below K-line) or 'sell' (sell, marked above K-line)",
- 'dashboard.indicator.guide.section6.table.data': 'Signal data list. Fill price value at signal positions, fill None (or np.nan) at non-signal positions',
- 'dashboard.indicator.guide.section6.table.text': 'Text displayed on the label (e.g. "B", "S", "Buy", "Sell")',
- 'dashboard.indicator.guide.section6.table.color': 'Marker color',
- 'dashboard.indicator.guide.section6.hint': 'The system automatically handles positioning.',
- 'dashboard.indicator.guide.section6.buy': 'Markers will be automatically positioned below the Low of the current K-line',
- 'dashboard.indicator.guide.section6.sell': 'Markers will be automatically positioned above the High of the current K-line',
- 'dashboard.indicator.guide.section6.example': 'Example: Draw Buy/Sell Signals',
- 'dashboard.indicator.guide.section6.exampleInit': 'Initialize signal list, fill all with None',
- 'dashboard.indicator.guide.section6.exampleLogic': 'Simple logic: mark buy when close price is greater than open price',
- 'dashboard.indicator.guide.section6.exampleNote': 'In actual logic, please use loops or vectorized operations',
- 'dashboard.indicator.guide.section6.examplePrice': 'Record price',
- 'dashboard.indicator.guide.section6.exampleText': 'Buy',
- 'dashboard.indicator.guide.section7.title': '7. Complete Code Examples',
- 'dashboard.indicator.guide.section7.exampleA': 'Example A: Dual EMA Strategy (Supports Backtesting)',
- 'dashboard.indicator.guide.section7.exampleACode': "# 1. Calculate indicatorsdf['open_long'], df['close_long'], df['open_short'], df['close_short'] (boolean). Even if you set output.signals for chart display, you must set these columns to enable backtesting.",
- 'dashboard.indicator.guide.section8.q2': 'Q: Data length mismatch?',
- 'dashboard.indicator.guide.section8.a2': "A: The data list in plots and signals must have exactly the same length as the K-line data. If you use df['xxx'].tolist(), there is usually no problem.",
- 'dashboard.indicator.guide.section8.q3': 'Q: How to handle NaN (empty values)?',
- 'dashboard.indicator.guide.section8.a3': "A: Pandas calculations (such as rolling mean) will produce NaN at the beginning. The system will automatically convert NaN to null for chart rendering. You don't need to manually clean it, but if you need specific logic, you can use df.fillna(0) or other methods.",
- 'dashboard.indicator.guide.section8.q4': 'Q: Index mismatch causing all signals to be NaN?',
- 'dashboard.indicator.guide.section8.a4': "A: Please ensure you preserve the original df index (timestamp). Avoid using .values to create new Series. Use columns directly like df['close'] for operations.",
- 'dashboard.indicator.guide.section8.q5': 'Q: Can I use third-party network libraries?',
- 'dashboard.indicator.guide.section8.a5': 'A: No. The runtime environment is a browser sandbox and cannot use libraries like requests to request external APIs, nor can it install additional pip packages. Limited to built-in libraries such as pandas, numpy, math, json.',
- 'dashboard.indicator.guide.section8.q6': 'Q: How to debug code?',
- 'dashboard.indicator.guide.section8.a6': 'A: If the chart does not display indicators, it is usually because the Python code has an error. Please check for syntax errors or array index out of bounds. It is recommended to debug the algorithm logic in a local Python environment first, then copy it in.',
- 'dashboard.indicator.guide.section8.q7': 'Q: Backtest shows 0 signals?',
- 'dashboard.indicator.guide.section8.a7': "A: Please check the data type of df['open_long']/df['close_long']/df['open_short']/df['close_short']. They should be boolean (True/False), not numeric. Use condition.fillna(False).astype(bool) to ensure correct type.",
- 'dashboard.indicator.backtest.commissionHint': 'Charged on notional value (incl. leverage) per trade; both entry & exit are deducted from balance.',
- 'dashboard.indicator.backtest.historyTitle': 'Backtest History',
- 'dashboard.indicator.backtest.historyRefresh': 'Refresh',
- 'dashboard.indicator.backtest.historyView': 'View',
- 'dashboard.indicator.backtest.historyNoData': 'No backtest history',
- 'dashboard.indicator.backtest.historyUseCurrent': 'Only current symbol/timeframe',
- 'dashboard.indicator.backtest.historyFilterSymbol': 'Symbol',
- 'dashboard.indicator.backtest.historyFilterTimeframe': 'Timeframe',
- 'dashboard.indicator.backtest.historyApply': 'Apply filters',
- 'dashboard.indicator.backtest.historyAIAnalyze': 'AI Analyze',
- 'dashboard.indicator.backtest.historyAIAnalyzeTitle': 'AI Suggestions',
- 'dashboard.indicator.backtest.historyNoAIResult': 'No AI analysis result',
- 'dashboard.indicator.backtest.historyRunId': 'Run ID',
- 'dashboard.indicator.backtest.historyCreatedAt': 'Time',
- 'dashboard.indicator.backtest.historyRange': 'Range',
- 'dashboard.indicator.backtest.historyStatus': 'Status',
- 'dashboard.indicator.backtest.historyStatusSuccess': 'Success',
- 'dashboard.indicator.backtest.historyStatusFailed': 'Failed',
- 'dashboard.indicator.backtest.historyActions': 'Actions',
- 'trading-assistant.exchange.ipWhitelistTip': 'Please add the following IPs to the whitelist in your exchange API settings:',
- 'signal-robot.title': 'Signal Robot Console',
- 'signal-robot.createBot': 'Create New Bot',
- 'signal-robot.search.nameOrSymbol': 'Name/Symbol',
- 'signal-robot.search.placeholder': 'Search bot name or symbol',
- 'signal-robot.search.status': 'Status',
- 'signal-robot.search.statusAll': 'All',
- 'signal-robot.search.statusRunning': 'Running',
- 'signal-robot.search.statusPaused': 'Paused',
- 'signal-robot.search.query': 'Query',
- 'signal-robot.search.reset': 'Reset',
- 'signal-robot.table.botName': 'Bot Name',
- 'signal-robot.table.symbolTimeframe': 'Symbol/Timeframe',
- 'signal-robot.table.triggerStrategy': 'Trigger Strategy',
- 'signal-robot.table.notificationChannels': 'Notification Channels',
- 'signal-robot.table.status': 'Status',
- 'signal-robot.table.action': 'Action',
- 'signal-robot.table.triggerConditions': '{count} trigger conditions',
- 'signal-robot.table.monitoring': 'Monitoring',
- 'signal-robot.table.paused': 'Paused',
- 'signal-robot.table.edit': 'Edit',
- 'signal-robot.table.pause': 'Pause',
- 'signal-robot.table.start': 'Start',
- 'signal-robot.table.delete': 'Delete',
- 'signal-robot.table.deleteConfirm': 'Are you sure you want to delete this bot?',
- 'signal-robot.table.deleteSuccess': 'Deleted successfully',
- 'signal-robot.table.startSuccess': 'Bot started',
- 'signal-robot.table.pauseSuccess': 'Bot paused',
- 'signal-robot.channel.telegram': 'Telegram',
- 'signal-robot.channel.discord': 'Discord',
- 'signal-robot.channel.email': 'Email',
- 'signal-robot.channel.webhook': 'Webhook',
- 'signal-robot.channel.browser': 'Browser Push',
- 'signal-robot.modal.createTitle': 'Create New Signal Robot',
- 'signal-robot.modal.editTitle': 'Edit Signal Robot',
- 'signal-robot.modal.step.basic': 'Basic Settings',
- 'signal-robot.modal.step.entry': 'Entry Strategy',
- 'signal-robot.modal.step.position': 'Position Management',
- 'signal-robot.modal.step.risk': 'Risk Control',
- 'signal-robot.modal.step.notify': 'Notification Config',
- 'signal-robot.modal.prev': 'Previous',
- 'signal-robot.modal.next': 'Next',
- 'signal-robot.modal.preview': 'Preview Backtest',
- 'signal-robot.modal.complete': 'Complete & Run',
- 'signal-robot.modal.saveSuccess': 'Saved successfully',
- 'signal-robot.modal.previewDeveloping': 'Preview feature is under development...',
- 'signal-robot.modal.basicInfoRequired': 'Please complete basic information',
- 'signal-robot.basic.alert': 'Set basic information for the bot',
- 'signal-robot.basic.title': 'Basic Information',
- 'signal-robot.basic.botName': 'Bot Name',
- 'signal-robot.basic.botNamePlaceholder': 'e.g.: BTC SuperTrend Strategy',
- 'signal-robot.basic.symbol': 'Trading Pair',
- 'signal-robot.basic.symbolPlaceholder': 'Select from watchlist',
- 'signal-robot.basic.noWatchlist': 'No watchlist items, please add in market page first',
- 'signal-robot.basic.timeframe': 'K-Line Period',
- 'signal-robot.basic.timeframe15m': '15 Minutes',
- 'signal-robot.basic.timeframe30m': '30 Minutes',
- 'signal-robot.basic.timeframe1h': '1 Hour',
- 'signal-robot.basic.timeframe4h': '4 Hours',
- 'signal-robot.basic.timeframe1d': '1 Day',
- 'signal-robot.basic.autoNameSuggestion': '{symbol} Signal Robot',
- 'signal-robot.entry.alert': 'Trigger entry signal when all conditions below are met',
- 'signal-robot.entry.condition': 'Condition {index}',
- 'signal-robot.entry.indicator': 'Indicator',
- 'signal-robot.entry.indicatorSupertrend': 'SuperTrend',
- 'signal-robot.entry.indicatorEma': 'EMA (Exponential Moving Average)',
- 'signal-robot.entry.indicatorRsi': 'RSI (Relative Strength Index)',
- 'signal-robot.entry.indicatorMacd': 'MACD',
- 'signal-robot.entry.indicatorBollinger': 'Bollinger Bands',
- 'signal-robot.entry.atrPeriod': 'ATR Period',
- 'signal-robot.entry.multiplier': 'Multiplier',
- 'signal-robot.entry.triggerSignal': 'Trigger Signal',
- 'signal-robot.entry.signalTrendBullish': 'Trend Bullish',
- 'signal-robot.entry.signalTrendBearish': 'Trend Bearish',
- 'signal-robot.entry.signalIsUptrend': 'Is Uptrend',
- 'signal-robot.entry.signalIsDowntrend': 'Is Downtrend',
- 'signal-robot.entry.period': 'Period',
- 'signal-robot.entry.compareCondition': 'Compare Condition',
- 'signal-robot.entry.priceAbove': 'Price > EMA (Price Above)',
- 'signal-robot.entry.priceBelow': 'Price < EMA (Price Below)',
- 'signal-robot.entry.crossUp': 'Price Crosses Above EMA (Golden Cross)',
- 'signal-robot.entry.crossDown': 'Price Crosses Below EMA (Death Cross)',
- 'signal-robot.entry.compare': 'Compare',
- 'signal-robot.entry.greaterThan': 'Greater Than',
- 'signal-robot.entry.lessThan': 'Less Than',
- 'signal-robot.entry.crossUpShort': 'Cross Up',
- 'signal-robot.entry.crossDownShort': 'Cross Down',
- 'signal-robot.entry.threshold': 'Threshold',
- 'signal-robot.entry.selectIndicator': 'Please select an indicator to configure parameters',
- 'signal-robot.entry.addCondition': 'Add Condition',
- 'signal-robot.position.alert': 'Configure initial position size, leverage and pyramiding rules',
- 'signal-robot.position.basicTitle': 'Basic Position Management',
- 'signal-robot.position.initialSize': 'Initial Size (Capital %)',
- 'signal-robot.position.initialSizeHint': 'Recommended 5% - 20%',
- 'signal-robot.position.leverage': 'Leverage',
- 'signal-robot.position.leverageHint': 'Please ensure your exchange account supports this leverage',
- 'signal-robot.position.maxPyramiding': 'Max Pyramiding Times',
- 'signal-robot.position.maxPyramidingHint': '0 means no pyramiding',
- 'signal-robot.position.pyramidingTitle': 'Pyramiding Rules',
- 'signal-robot.position.pyramidingEnabled': 'Enabled',
- 'signal-robot.position.pyramidingDisabled': 'Disabled',
- 'signal-robot.position.pyramidingCondition': 'Pyramiding Trigger Condition',
- 'signal-robot.position.priceRisePct': 'Price Rises (Long) / Falls (Short)',
- 'signal-robot.position.profitPct': 'Profit Reaches',
- 'signal-robot.position.triggerThreshold': 'Trigger Threshold (%)',
- 'signal-robot.position.triggerThresholdHint': 'e.g. 3%: add position once every 3% rise',
- 'signal-robot.position.addSize': 'Single Add Size (Capital %)',
- 'signal-robot.position.pyramidingDisabledHint': 'Pyramiding disabled, only initial position will be executed',
- 'signal-robot.risk.alert': 'Configure take profit, stop loss and exit rules',
- 'signal-robot.risk.stopLossTitle': 'Stop Loss',
- 'signal-robot.risk.stopLossEnabled': 'Enabled',
- 'signal-robot.risk.stopLossDisabled': 'Disabled',
- 'signal-robot.risk.stopLossType': 'Stop Loss Type',
- 'signal-robot.risk.stopLossFixedPct': 'Fixed Percentage',
- 'signal-robot.risk.stopLossAtrMultiplier': 'ATR Multiplier',
- 'signal-robot.risk.stopLossValue': 'Value',
- 'signal-robot.risk.stopLossFixedHint': 'e.g. 2%: stop loss when loss reaches 2%',
- 'signal-robot.risk.stopLossAtrHint': 'e.g. 2.0: stop loss when price touches ATR*2.0',
- 'signal-robot.risk.stopLossDisabledHint': 'Stop loss disabled (high risk)',
- 'signal-robot.risk.trailingStopTitle': 'Trailing Stop',
- 'signal-robot.risk.activationProfit': 'Activation Profit (%)',
- 'signal-robot.risk.activationProfitHint': 'Start trailing when profit reaches this level',
- 'signal-robot.risk.callbackPct': 'Callback (%)',
- 'signal-robot.risk.callbackPctHint': 'Trigger take profit when price falls from peak by this percentage',
- 'signal-robot.risk.trailingStopDisabledHint': 'Trailing stop disabled',
- 'signal-robot.risk.otherExitTitle': 'Other Exit Rules',
- 'signal-robot.risk.signalExit': 'Allow Signal Exit',
- 'signal-robot.risk.signalExitHint': 'Close position immediately when reverse signal appears (e.g. close long when short signal appears)',
- 'signal-robot.notify.alert': 'Configure notification methods when signal is triggered',
- 'signal-robot.notify.channelTitle': 'Notification Channels',
- 'signal-robot.notify.discordWebhook': 'Discord Webhook',
- 'signal-robot.notify.genericWebhook': 'Generic Webhook',
- 'signal-robot.notify.webhookUrl': 'Webhook URL',
- 'signal-robot.notify.webhookUrlPlaceholder': 'https://example.com/webhook',
- 'signal-robot.notify.discordUrl': 'Discord URL',
- 'signal-robot.notify.discordUrlPlaceholder': 'https://discord.com/api/webhooks/...',
- 'signal-robot.operator.greaterThan': 'Greater Than',
- 'signal-robot.operator.lessThan': 'Less Than',
- 'signal-robot.operator.equal': 'Equal',
- 'signal-robot.operator.goldenCross': 'Golden Cross',
- 'signal-robot.operator.deathCross': 'Death Cross',
- 'signal-robot.operator.increaseBy': 'Increase By',
- 'signal-robot.operator.decreaseBy': 'Decrease By',
- 'signal-robot.indicator.price': 'Price',
- 'signal-robot.indicator.rsi': 'RSI',
- 'signal-robot.indicator.kdjK': 'KDJ(K)',
- 'signal-robot.indicator.kdjJ': 'KDJ(J)',
- 'signal-robot.indicator.macd': 'MACD',
- 'signal-robot.indicator.macdHist': 'MACD Histogram',
- 'signal-robot.indicator.bollingerUp': 'Bollinger Upper',
- 'signal-robot.indicator.bollingerLow': 'Bollinger Lower',
- 'signal-robot.indicator.volume': 'Volume',
- 'signal-robot.indicator.changePct1h': '1H Change %',
- 'signal-robot.indicator.changePct24h': '24H Change %',
- 'signal-robot.indicator.signalLine': 'Signal Line',
-
- // Settings (Memory/Reflection)
- 'settings.group.agent_memory': 'เธซเธเนเธงเธขเธเธงเธฒเธกเธเธณ/เธเธฒเธฃเธชเธฐเธเนเธญเธ',
- 'settings.group.reflection_worker': 'เธเธฑเธงเธเธณเธเธฒเธเธเธฃเธงเธเธชเธญเธเธเธฒเธฃเธชเธฐเธเนเธญเธเธญเธฑเธเนเธเธกเธฑเธเธด',
- 'settings.field.ENABLE_AGENT_MEMORY': 'เนเธเธดเธเนเธเนเธซเธเนเธงเธขเธเธงเธฒเธกเธเธณเนเธญเนเธเธเธเน',
- 'settings.field.AGENT_MEMORY_ENABLE_VECTOR': 'เนเธเธดเธเนเธเนเธเธฒเธฃเธเนเธเธซเธฒเนเธงเธเนเธเธญเธฃเน (เนเธเนเธเธฃเธทเนเธญเธ)',
- 'settings.field.AGENT_MEMORY_EMBEDDING_DIM': 'เธกเธดเธเธด Embedding',
- 'settings.field.AGENT_MEMORY_TOP_K': 'เธเธณเธเธงเธเธเธถเธเธเนเธญเธกเธนเธฅ Top-K',
- 'settings.field.AGENT_MEMORY_CANDIDATE_LIMIT': 'เธเธเธฒเธเธซเธเนเธฒเธเนเธฒเธเธเธนเนเธชเธกเธฑเธเธฃ',
- 'settings.field.AGENT_MEMORY_HALF_LIFE_DAYS': 'เธเธฃเธถเนเธเธเธตเธงเธดเธเธเธฒเธฃเธฅเธเธเธญเธเธเธฒเธกเนเธงเธฅเธฒ (เธงเธฑเธ)',
- 'settings.field.AGENT_MEMORY_W_SIM': 'เธเนเธฒเธเนเธณเธซเธเธฑเธเธเธงเธฒเธกเธเธฅเนเธฒเธข',
- 'settings.field.AGENT_MEMORY_W_RECENCY': 'เธเนเธฒเธเนเธณเธซเธเธฑเธเนเธงเธฅเธฒ',
- 'settings.field.AGENT_MEMORY_W_RETURNS': 'เธเนเธฒเธเนเธณเธซเธเธฑเธเธเธฅเธเธญเธเนเธเธ',
- 'settings.field.ENABLE_REFLECTION_WORKER': 'เนเธเธดเธเนเธเนเธเธฒเธฃเธเธฃเธงเธเธชเธญเธเธญเธฑเธเนเธเธกเธฑเธเธด',
- 'settings.field.REFLECTION_WORKER_INTERVAL_SEC': 'เธเนเธงเธเนเธงเธฅเธฒเธเธฃเธงเธเธชเธญเธ (เธงเธดเธเธฒเธเธต)',
-
- // Profile - Notification Settings (เธเธฒเธฃเธเธฑเนเธเธเนเธฒเธเธฒเธฃเนเธเนเธเนเธเธทเธญเธ)
- 'profile.notifications.title': 'เธเธฒเธฃเธเธฑเนเธเธเนเธฒเธเธฒเธฃเนเธเนเธเนเธเธทเธญเธ',
- 'profile.notifications.hint': 'เธเธณเธซเธเธเธเนเธฒเธงเธดเธเธตเธเธฒเธฃเนเธเนเธเนเธเธทเธญเธเนเธฃเธดเนเธกเธเนเธ เธเธฐเธเธนเธเนเธเนเนเธเธขเธญเธฑเธเนเธเธกเธฑเธเธดเนเธกเธทเนเธญเธชเธฃเนเธฒเธเธเธฒเธฃเธเธดเธเธเธฒเธกเธชเธดเธเธเธฃเธฑเธเธขเนเนเธฅเธฐเธเธฒเธฃเนเธเนเธเนเธเธทเธญเธ',
- 'profile.notifications.defaultChannels': 'เธเนเธญเธเธเธฒเธเนเธเนเธเนเธเธทเธญเธเนเธฃเธดเนเธกเธเนเธ',
- 'profile.notifications.browser': 'เธเธฒเธฃเนเธเนเธเนเธเธทเธญเธเนเธเนเธญเธ',
- 'profile.notifications.email': 'เธญเธตเนเธกเธฅ',
- 'profile.notifications.phone': 'SMS',
- 'profile.notifications.telegramBotToken': 'Telegram Bot Token',
- 'profile.notifications.telegramBotTokenPlaceholder': 'เธเธฃเธญเธ Telegram Bot Token เธเธญเธเธเธธเธ',
- 'profile.notifications.telegramBotTokenHint': 'เธชเธฃเนเธฒเธเธเธญเธเธเนเธฒเธ @BotFather เนเธเธทเนเธญเธฃเธฑเธ Token',
- 'profile.notifications.telegramChatId': 'Telegram Chat ID',
- 'profile.notifications.telegramPlaceholder': 'เธเธฃเธญเธ Telegram Chat ID เธเธญเธเธเธธเธ (เนเธเนเธ 123456789)',
- 'profile.notifications.telegramHint': 'เธชเนเธ /start เนเธเธเธตเน @userinfobot เนเธเธทเนเธญเธฃเธฑเธ Chat ID',
- 'profile.notifications.notifyEmail': 'เธญเธตเนเธกเธฅเนเธเนเธเนเธเธทเธญเธ',
- 'profile.notifications.emailPlaceholder': 'เธเธตเนเธญเธขเธนเนเธญเธตเนเธกเธฅเธชเธณเธซเธฃเธฑเธเธฃเธฑเธเธเธฒเธฃเนเธเนเธเนเธเธทเธญเธ',
- 'profile.notifications.emailHint': 'เนเธเนเธญเธตเนเธกเธฅเธเธฑเธเธเธตเนเธเนเธเธเนเธฒเนเธฃเธดเนเธกเธเนเธ เธชเธฒเธกเธฒเธฃเธเธเธฑเนเธเธเนเธฒเธญเธตเนเธกเธฅเธญเธทเนเธเนเธเน',
- 'profile.notifications.phonePlaceholder': 'เธเธฃเธญเธเธซเธกเธฒเธขเนเธฅเธเนเธเธฃเธจเธฑเธเธเน (เนเธเนเธ +66812345678)',
- 'profile.notifications.phoneHint': 'เธเธนเนเธเธนเนเธฅเธฃเธฐเธเธเธเนเธญเธเธเธณเธซเธเธเธเนเธฒเธเธฃเธดเธเธฒเธฃ Twilio',
- 'profile.notifications.discordWebhook': 'Discord Webhook',
- 'profile.notifications.discordPlaceholder': 'https://discord.com/api/webhooks/...',
- 'profile.notifications.discordHint': 'เธชเธฃเนเธฒเธ Webhook เนเธเธเธฒเธฃเธเธฑเนเธเธเนเธฒเนเธเธดเธฃเนเธเนเธงเธญเธฃเน Discord',
- 'profile.notifications.webhookUrl': 'Webhook URL',
- 'profile.notifications.webhookPlaceholder': 'https://your-server.com/webhook',
- 'profile.notifications.webhookHint': 'URL Webhook เนเธเธเธเธณเธซเธเธเนเธญเธ เธชเนเธเธเธฒเธฃเนเธเนเธเนเธเธทเธญเธเธเนเธฒเธ POST JSON',
- 'profile.notifications.webhookToken': 'Webhook Token (เนเธกเนเธเธฑเธเธเธฑเธ)',
- 'profile.notifications.webhookTokenPlaceholder': 'Bearer Token เธชเธณเธซเธฃเธฑเธเธขเธทเธเธขเธฑเธเธเธฑเธงเธเธเธเธณเธเธญ',
- 'profile.notifications.webhookTokenHint': 'เธชเนเธเนเธเนเธ Authorization: Bearer Token เนเธเธขเธฑเธ Webhook',
- 'profile.notifications.testBtn': 'เธชเนเธเธเธฒเธฃเนเธเนเธเนเธเธทเธญเธเธเธเธชเธญเธ',
- 'profile.notifications.saveSuccess': 'เธเธฑเธเธเธถเธเธเธฒเธฃเธเธฑเนเธเธเนเธฒเธเธฒเธฃเนเธเนเธเนเธเธทเธญเธเธชเธณเนเธฃเนเธ',
- 'profile.notifications.selectChannel': 'เธเธฃเธธเธเธฒเนเธฅเธทเธญเธเธญเธขเนเธฒเธเธเนเธญเธขเธซเธเธถเนเธเธเนเธญเธเธเธฒเธเนเธเนเธเนเธเธทเธญเธ',
- 'profile.notifications.fillTelegramToken': 'เธเธฃเธธเธเธฒเธเธฃเธญเธ Telegram Bot Token',
- 'profile.notifications.fillTelegram': 'เธเธฃเธธเธเธฒเธเธฃเธญเธ Telegram Chat ID',
- 'profile.notifications.fillEmail': 'เธเธฃเธธเธเธฒเธเธฃเธญเธเธญเธตเนเธกเธฅเนเธเนเธเนเธเธทเธญเธ',
- 'profile.notifications.testSent': 'เธชเนเธเธเธฒเธฃเนเธเนเธเนเธเธทเธญเธเธเธเธชเธญเธเนเธฅเนเธง เธเธฃเธธเธเธฒเธเธฃเธงเธเธชเธญเธเธเนเธญเธเธเธฒเธเนเธเนเธเนเธเธทเธญเธเธเธญเธเธเธธเธ'
-}
-
-export default {
- ...components,
- ...locale
-}
diff --git a/quantdinger_vue/src/locales/lang/vi-VN.js b/quantdinger_vue/src/locales/lang/vi-VN.js
deleted file mode 100644
index 41110ee..0000000
--- a/quantdinger_vue/src/locales/lang/vi-VN.js
+++ /dev/null
@@ -1,2953 +0,0 @@
-import antdViVN from 'ant-design-vue/es/locale-provider/vi_VN'
-import momentVI from 'moment/locale/vi'
-
-const components = {
- antLocale: antdViVN,
- momentName: 'vi',
- momentLocale: momentVI
-}
-
-const locale = {
-
- 'submit': 'Gแปญi',
-
- 'save': 'Lฦฐu',
-
- 'submit.ok': 'Gแปญi thร nh cรดng',
-
- 'save.ok': 'Lฦฐu thร nh cรดng',
-
- 'menu.welcome': 'Chร o mแปซng',
-
- 'menu.home': 'Trang chแปง',
-
- 'menu.dashboard': 'Bแบฃng ฤiแปu khiแปn',
-
- 'menu.dashboard.indicator': 'Phรขn tรญch chแป bรกo',
-
- 'menu.dashboard.community': 'Cแปng ฤแปng chแป bรกo',
-
- 'menu.dashboard.analysis': 'Phรขn tรญch AI',
-
- 'menu.dashboard.tradingAssistant': 'Trแปฃ lรฝ giao dแปch',
-
- 'menu.dashboard.aiTradingAssistant': 'Trแปฃ lรฝ giao dแปch AI',
- 'menu.dashboard.signalRobot': 'Robot tรญn hiแปu',
- 'menu.dashboard.monitor': 'Giรกm sรกt Trang',
-
- 'menu.dashboard.workplace': 'Nฦกi lร m viแปc',
-
- 'menu.form': 'Trang biแปu mแบซu',
-
- 'menu.form.basic-form': 'Biแปu mแบซu cฦก bแบฃn',
-
- 'menu.form.step-form': 'Biแปu mแบซu tแปซng bฦฐแปc',
-
- 'menu.form.step-form.info': 'Biแปu mแบซu tแปซng bฦฐแปc (ฤiแปn thรดng tin chuyแปn khoแบฃn)',
-
- 'menu.form.step-form.confirm': 'Biแปu mแบซu tแปซng bฦฐแปc (Xรกc nhแบญn thรดng tin chuyแปn khoแบฃn)',
-
- 'menu.form.step-form.result': 'Biแปu mแบซu tแปซng bฦฐแปc (Hoร n tแบฅt)',
-
- 'menu.form.advanced-form': 'Biแปu mแบซu nรขng cao',
-
- 'menu.list': 'Trang danh sรกch',
-
- 'menu.list.table-list': 'Bแบฃng truy vแบฅn',
-
- 'menu.list.basic-list': 'Tiรชu chuแบฉn Menu.list',
-
- 'menu.list.card-list': 'Danh sรกch thแบป',
-
- 'menu.list.search-list': 'Tรฌm kiแบฟm danh sรกch',
-
- 'menu.list.search-list.articles': 'Tรฌm kiแบฟm danh sรกch (Bร i viแบฟt)',
-
- 'menu.list.search-list.projects': 'Tรฌm kiแบฟm danh sรกch (Dแปฑ รกn)',
-
- 'menu.list.search-list.applications': 'Tรฌm kiแบฟm danh sรกch (แปจng dแปฅng)',
-
- 'menu.profile': 'Trang chi tiแบฟt',
-
- 'menu.profile.basic': 'Trang chi tiแบฟt cฦก bแบฃn',
-
- 'menu.profile.advanced': 'Trang chi tiแบฟt nรขng cao',
-
- 'menu.result': 'Trang kแบฟt quแบฃ',
-
- 'menu.result.success': 'Trang thร nh cรดng',
-
- 'menu.result.fail': 'Trang thแบฅt bแบกi',
-
- 'menu.exception': 'Ngoแบกi lแป Trang',
-
- 'menu.exception.not-permission': '403',
-
- 'menu.exception.not-find': '404',
-
- 'menu.exception.server-error': '500',
-
- 'menu.exception.trigger': 'ฤang gรขy ra lแปi',
-
- 'menu.account': 'Trang cรก nhรขn',
-
- 'menu.account.center': 'Trung tรขm cรก nhรขn',
-
- 'menu.account.settings': 'Cร i ฤแบทt cรก nhรขn',
-
- 'menu.account.trigger': 'ฤang gรขy ra lแปi',
-
- 'menu.account.logout': 'ฤฤng xuแบฅt',
-
- 'menu.wallet': 'Vรญ cแปงa tรดi',
-
- 'menu.docs': 'Trung tรขm tร i liแปu',
-
- 'menu.docs.detail': 'Chi tiแบฟt tร i liแปu',
-
- 'menu.header.refreshPage': 'Lร m mแปi Trang',
-
- 'menu.invite.friends': 'Mแปi bแบกn bรจ',
-
- 'app.setting.pagestyle': 'Cร i ฤแบทt kiแปu tแปng thแป',
-
- 'app.setting.pagestyle.light': 'Kiแปu menu sรกng',
-
- 'app.setting.pagestyle.dark': 'Kiแปu menu tแปi',
-
- 'app.setting.pagestyle.realdark': 'Chแบฟ ฤแป tแปi',
-
- 'app.setting.themecolor': 'Mร u chแปง ฤแป',
-
- 'app.setting.navigationmode': 'Chแบฟ ฤแป ฤiแปu hฦฐแปng',
-
- 'app.setting.sidemenu.nav': 'ฤiแปu hฦฐแปng thanh bรชn',
-
- 'app.setting.topmenu.nav': 'ฤiแปu hฦฐแปng trรชn cรนng',
-
- 'app.setting.content-width': 'Chiแปu rแปng vรนng nแปi dung',
-
- 'app.setting.content-width.tooltip': 'Cร i ฤแบทt nร y chแป cรณ hiแปu lแปฑc khi [ฤiแปu hฦฐแปng trรชn cรนng] ฤฦฐแปฃc bแบญt',
-
- 'app.setting.content-width.fixed': 'Cแป ฤแปnh',
-
- 'app.setting.content-width.fluid': 'Linh hoแบกt',
-
- 'app.setting.fixedheader': 'Tiรชu ฤแป cแป ฤแปnh',
-
- 'app.setting.fixedheader.tooltip': 'Cรณ thแป cแบฅu hรฌnh khi tiรชu ฤแป cแป ฤแปnh',
-
- 'app.setting.autoHideHeader': 'แบจn tiรชu ฤแป khi vuแปt xuแปng',
-
- 'app.setting.fixedsidebar': 'Menu thanh bรชn cแป ฤแปnh',
-
- 'app.setting.sidemenu': 'Bแป cแปฅc menu thanh bรชn',
-
- 'app.setting.topmenu': 'Bแป cแปฅc menu trรชn cรนng',
-
- 'app.setting.othersettings': 'Cรกc cร i ฤแบทt khรกc',
-
- 'app.setting.weakmode': 'Chแบฟ ฤแป mร u yแบฟu',
-
- 'app.setting.multitab': 'Chแบฟ ฤแป nhiแปu tab',
-
- 'app.setting.copy': 'Sao chรฉp cร i ฤแบทt',
-
- 'app.setting.loading': 'ฤang tแบฃi theme',
-
- 'app.setting.copyinfo': 'ฤรฃ sao chรฉp cร i ฤแบทt thร nh cรดng src/config/defaultSettings.js',
-
- 'app.setting.copy.success': 'Sao chรฉp hoร n tแบฅt',
-
- 'app.setting.copy.fail': 'Sao chรฉp thแบฅt bแบกi',
-
- 'app.setting.theme.switching': 'ฤang chuyแปn ฤแปi giao diแปn!',
-
- 'app.setting.production.hint': 'Thanh cแบฅu hรฌnh chแป dรนng ฤแป xem trฦฐแปc trong mรดi trฦฐแปng phรกt triแปn vร sแบฝ khรดng hiแปn thแป trong mรดi trฦฐแปng sแบฃn xuแบฅt. Vui lรฒng sao chรฉp vร chแปnh sแปญa thแปง cรดng tแปp cแบฅu hรฌnh.',
-
- 'app.setting.themecolor.daybreak': 'Xanh dฦฐฦกng bรฌnh minh (mแบทc ฤแปnh)',
-
- 'app.setting.themecolor.dust': 'Hoร ng hรดn',
-
- 'app.setting.themecolor.volcano': 'Nรบi lแปญa',
-
- 'app.setting.themecolor.sunset': 'Hoร ng hรดn',
-
- 'app.setting.themecolor.cyan': 'Xanh lam sรกng',
-
- 'app.setting.themecolor.green': 'Xanh lแปฅc cแปฑc quang',
-
- 'app.setting.themecolor.geekblue': 'Xanh dฦฐฦกng cรดng nghแป',
-
- 'app.setting.themecolor.purple': 'Tรญm',
-
- 'app.setting.tooltip': 'Cร i ฤแบทt trang',
-
- 'user.login.userName': 'Tรชn ngฦฐแปi dรนng',
-
- 'user.login.password': 'Mแบญt khแบฉu',
-
- 'user.login.username.placeholder': 'Tร i khoแบฃn: admin',
-
- 'user.login.password.placeholder': 'Mแบญt khแบฉu: admin hoแบทc ant.design',
-
- 'user.login.message-invalid-credentials': 'ฤฤng nhแบญp thแบฅt bแบกi, vui lรฒng kiแปm tra email vร mรฃ xรกc minh cแปงa bแบกn',
-
- 'user.login.message-invalid-verification-code': 'Mรฃ xรกc minh khรดng chรญnh xรกc',
-
- 'user.login.tab-login-credentials': 'ฤฤng nhแบญp bแบฑng tร i khoแบฃn vร mแบญt khแบฉu',
-
- 'user.login.tab-login-email': 'ฤฤng nhแบญp bแบฑng email',
-
- 'user.login.tab-login-mobile': 'ฤฤng nhแบญp bแบฑng sแป ฤiแปn thoแบกi',
-
- 'user.login.captcha.placeholder': 'Vui lรฒng nhแบญp mรฃ xรกc minh hรฌnh แบฃnh',
-
- 'user.login.mobile.placeholder': 'Sแป ฤiแปn thoแบกi Sแป ฤiแปn thoแบกi',
-
- 'user.login.mobile.verification-code.placeholder': 'Mรฃ xรกc thแปฑc',
-
- 'user.login.email.placeholder': 'Vui lรฒng nhแบญp ฤแปa chแป email',
-
- 'user.login.email.verification-code.placeholder': 'Vui lรฒng nhแบญp mรฃ xรกc thแปฑc',
-
- 'user.login.email.sending': 'ฤang gแปญi mรฃ xรกc thแปฑc...',
-
- 'user.login.email.send-success-title': 'Thรดng bรกo',
-
- 'user.login.email.send-success': 'Mรฃ xรกc thแปฑc ฤรฃ ฤฦฐแปฃc gแปญi thร nh cรดng, vui lรฒng kiแปm tra email cแปงa bแบกn',
-
- 'user.login.sms.send-success': 'Mรฃ xรกc thแปฑc ฤรฃ ฤฦฐแปฃc gแปญi thร nh cรดng, vui lรฒng kiแปm tra tin nhแบฏn SMS cแปงa bแบกn',
-
- 'user.login.remember-me': 'Tแปฑ ฤแปng ฤฤng nhแบญp',
-
- 'user.login.forgot-password': 'Quรชn mแบญt khแบฉu Mแบญt khแบฉu',
-
- 'user.login.sign-in-with': 'Cรกc phฦฐฦกng thแปฉc ฤฤng nhแบญp khรกc',
-
- 'user.login.signup': 'ฤฤng kรฝ tร i khoแบฃn',
-
- 'user.login.login': 'ฤฤng nhแบญp',
-
- 'user.register.register': 'ฤฤng kรฝ',
-
- 'user.register.email.placeholder': 'Email',
-
- 'user.register.password.placeholder': 'Vui lรฒng nhแบญp รญt nhแบฅt 6 kรฝ tแปฑ. Vui lรฒng khรดng sแปญ dแปฅng mแบญt khแบฉu dแป
ฤoรกn.',
-
- 'user.register.password.popover-message': 'Vui lรฒng nhแบญp รญt nhแบฅt 6 kรฝ tแปฑ. Vui lรฒng khรดng sแปญ dแปฅng mแบญt khแบฉu dแป
ฤoรกn.',
-
- 'user.register.confirm-password.placeholder': 'Xรกc nhแบญn mแบญt khแบฉu',
-
- 'user.register.get-verification-code': 'Lแบฅy mรฃ xรกc minh',
-
- 'user.register.sign-in': 'ฤฤng nhแบญp bแบฑng tร i khoแบฃn hiแปn cรณ',
-
- 'user.register-result.msg': 'Tร i khoแบฃn cแปงa bแบกn: {email} ฤรฃ ฤฦฐแปฃc ฤฤng kรฝ thร nh cรดng',
-
- 'user.register-result.activation-email': 'Email kรญch hoแบกt ฤรฃ ฤฦฐแปฃc gแปญi ฤแบฟn hแปp thฦฐ ฤแบฟn cแปงa bแบกn. Email cรณ hiแปu lแปฑc trong 24 giแป. Vui lรฒng ฤฤng nhแบญp vร o email cแปงa bแบกn vร nhแบฅp vร o liรชn kแบฟt trong email ฤแป kรญch hoแบกt tร i khoแบฃn.',
-
- 'user.register-result.back-home': 'Quay lแบกi trang chแปง',
-
- 'user.register-result.view-mailbox': 'Xem email',
-
- 'user.email.required': 'Vui lรฒng nhแบญp ฤแปa chแป email cแปงa bแบกn!',
-
- 'user.email.wrong-format': 'ฤแปnh dแบกng ฤแปa chแป email khรดng chรญnh xรกc!',
-
- 'user.userName.required': 'Vui lรฒng nhแบญp tรชn ngฦฐแปi dรนng hoแบทc ฤแปa chแป email cแปงa bแบกn',
-
-'user.password.required': 'Vui lรฒng nhแบญp mแบญt khแบฉu cแปงa bแบกn!',
-
-'user.password.twice.msg': 'Hai mแบญt khแบฉu khรดng khแปp!',
-
-'user.password.strength.msg': 'Mแบญt khแบฉu khรดng ฤแปง mแบกnh',
-
-'user.password.strength.strong': 'ฤแป mแบกnh: Mแบกnh',
-
-'user.password.strength.medium': 'ฤแป mแบกnh: Trung bรฌnh',
-
-'user.password.strength.low': 'ฤแป mแบกnh: Yแบฟu',
-
-'user.password.strength.short': 'ฤแป mแบกnh: Quรก ngแบฏn',
-
-'user.confirm-password.required': 'Vui lรฒng xรกc nhแบญn mแบญt khแบฉu cแปงa bแบกn!',
-
-'user.phone-number.required': 'Vui lรฒng nhแบญp sแป ฤiแปn thoแบกi hแปฃp lแป',
-
-'user.phone-number.wrong-format': 'ฤแปnh dแบกng sแป ฤiแปn thoแบกi khรดng chรญnh xรกc!',
-
-'user.verification-code.required': 'Vui lรฒng nhแบญp mรฃ xรกc minh!',
-
-'user.captcha.required': 'Vui lรฒng nhแบญp mรฃ xรกc minh hรฌnh แบฃnh!',
-
-'user.login.infos': 'QuantDinger lร cรดng cแปฅ phรขn tรญch cแป phiแบฟu ฤa tรกc nhรขn AI vร khรดng cรณ chแปฉng chแป tฦฐ vแบฅn ฤแบงu tฦฐ chแปฉng khoรกn. Tแบฅt cแบฃ kแบฟt quแบฃ phรขn tรญch, xแบฟp hแบกng vร รฝ kiแบฟn โโtham khแบฃo trรชn nแปn tแบฃng ฤแปu ฤฦฐแปฃc AI tแปฑ ฤแปng tแบกo ra dแปฑa trรชn dแปฏ liแปu lแปch sแปญ vร chแป dร nh cho mแปฅc ฤรญch hแปc tแบญp, nghiรชn cแปฉu vร trao ฤแปi kแปน thuแบญt. Chรบng khรดng cแบฅu thร nh bแบฅt kแปณ lแปi khuyรชn ฤแบงu tฦฐ hoแบทc cฦก sแป ra quyแบฟt ฤแปnh nร o. ฤแบงu tฦฐ cแป phiแบฟu tiแปm แบฉn nhiแปu rแปงi ro nhฦฐ rแปงi ro thแป trฦฐแปng, rแปงi ro thanh khoแบฃn vร rแปงi ro chรญnh sรกch, cรณ thแป dแบซn ฤแบฟn mแบฅt vแปn gแปc. Ngฦฐแปi dรนng nรชn ฤฦฐa ra quyแบฟt ฤแปnh ฤแปc lแบญp dแปฑa trรชn khแบฃ nฤng chแบฅp nhแบญn rแปงi ro cแปงa mรฌnh, vร mแปi hร nh vi ฤแบงu tฦฐ vร hแบญu quแบฃ phรกt sinh tแปซ viแปc sแปญ dแปฅng cรดng cแปฅ nร y ฤแปu do ngฦฐแปi dรนng chแปu trรกch nhiแปm. Thแป trฦฐแปng ฤแบงy rแปงi ro, vร ฤแบงu tฦฐ cแบงn thแบญn trแปng.',
-
-'user.login.tab-login-web3': 'ฤฤng nhแบญp Web3',
-
-'user.login.web3.tip': 'ฤฤng nhแบญp bแบฑng vรญ ฤแป xรกc thแปฑc chแปฏ kรฝ',
-
-'user.login.web3.connect': 'Kแบฟt nแปi vรญ vร ฤฤng nhแบญp',
-
-'user.login.web3.no-wallet': 'Khรดng phรกt hiแปn vรญ',
-
-'user.login.web3.no-address': 'Khรดng lแบฅy ฤฦฐแปฃc ฤแปa chแป vรญ',
-
-'user.login.web3.nonce-failed': 'Khรดng thแป lแบฅy sแป ngแบซu nhiรชn',
-
-'user.login.web3.verify-failed': 'Xรกc thแปฑc chแปฏ kรฝ thแบฅt bแบกi',
-
-'user.login.web3.success': 'ฤฤng nhแบญp thร nh cรดng',
-
-'user.login.web3.failed': 'ฤฤng nhแบญp vรญ thแบฅt bแบกi',
-
-'nav.no_wallet': 'Vรญ khรดng ฤฦฐแปฃc tรฌm thแบฅy ฤรฃ phรกt hiแปn',
-
-'nav.copy': 'Sao chรฉp',
-
-'nav.copy_success': 'Sao chรฉp thร nh cรดng',
-
-'user.login.oauth.google': 'ฤฤng nhแบญp bแบฑng Google',
-
-'user.login.oauth.github': 'ฤฤng nhแบญp bแบฑng GitHub',
-
-'user.login.oauth.loading': 'ฤang chuyแปn hฦฐแปng ฤแบฟn trang xรกc thแปฑc...',
-
-'user.login.oauth.failed': 'ฤฤng nhแบญp OAuth thแบฅt bแบกi',
-
-'user.login.oauth.get-url-failed': 'Khรดng thแป lแบฅy liรชn kแบฟt xรกc thแปฑc',
-
-'user.login.subtitle': 'Thรดng tin chi tiแบฟt ฤแปnh lฦฐแปฃng vแป thแป trฦฐแปng toร n cแบงu',
-
-'user.login.legal.title': 'Tuyรชn bแป phรกp lรฝ',
-
-'user.login.legal.view': 'Xem tuyรชn bแป phรกp lรฝ',
-
-'user.login.legal.collapse': 'Thu gแปn Tuyรชn bแป phรกp lรฝ',
-
-'user.login.legal.agree': 'Tรดi ฤรฃ ฤแปc vร ฤแปng รฝ vแปi tuyรชn bแป phรกp lรฝ',
-
-'user.login.legal.required': 'Vui lรฒng ฤแปc vร kiแปm tra tuyรชn bแป phรกp lรฝ trฦฐแปc',
-
-'user.login.legal.content': 'QuantDinger lร cรดng cแปฅ phรขn tรญch cแป phiแบฟu ฤa tรกc nhรขn AI vร khรดng cรณ bแบฑng cแบฅp tฦฐ vแบฅn ฤแบงu tฦฐ chแปฉng khoรกn. Tแบฅt cแบฃ kแบฟt quแบฃ phรขn tรญch, xแบฟp hแบกng vร รฝ kiแบฟn โโtham khแบฃo trรชn nแปn tแบฃng ฤแปu ฤฦฐแปฃc AI tแปฑ ฤแปng tแบกo ra dแปฑa trรชn dแปฏ liแปu lแปch sแปญ vร chแป dร nh cho mแปฅc ฤรญch hแปc tแบญp, nghiรชn cแปฉu vร trao ฤแปi kแปน thuแบญt, vร khรดng cแบฅu thร nh bแบฅt kแปณ lแปi khuyรชn ฤแบงu tฦฐ hoแบทc cฦก sแป ra quyแบฟt ฤแปnh nร o. ฤแบงu tฦฐ cแป phiแบฟu tiแปm แบฉn nhiแปu rแปงi ro nhฦฐ rแปงi ro thแป trฦฐแปng, rแปงi ro thanh khoแบฃn vร rแปงi ro chรญnh sรกch, cรณ thแป dแบซn ฤแบฟn mแบฅt vแปn gแปc. Ngฦฐแปi dรนng nรชn ฤฦฐa ra quyแบฟt ฤแปnh ฤแปc lแบญp dแปฑa trรชn khแบฃ nฤng chแบฅp nhแบญn rแปงi ro cแปงa mรฌnh, vร mแปi hร nh vi ฤแบงu tฦฐ vร hแบญu quแบฃ phรกt sinh tแปซ viแปc sแปญ dแปฅng cรดng cแปฅ nร y sแบฝ do ngฦฐแปi dรนng chแปu trรกch nhiแปm. Thแป trฦฐแปng ฤแบงy rแปงi ro, vร ฤแบงu tฦฐ cแบงn thแบญn trแปng.',
-
-'user.login.privacy.title': 'ฤiแปu khoแบฃn Quyแปn riรชng tฦฐ Ngฦฐแปi dรนng',
-
-'user.login.privacy.view': 'Xem ฤiแปu khoแบฃn Quyแปn riรชng tฦฐ Ngฦฐแปi dรนng',
-
-'user.login.privacy.collapse': 'Thu gแปn ฤiแปu khoแบฃn Quyแปn riรชng tฦฐ Ngฦฐแปi dรนng',
-
-'user.login.privacy.content': 'Chรบng tรดi coi trแปng quyแปn riรชng tฦฐ vร viแปc bแบฃo vแป dแปฏ liแปu cแปงa bแบกn. 1) Phแบกm vi Thu thแบญp: Chรบng tรดi chแป thu thแบญp thรดng tin cแบงn thiแบฟt ฤแป thแปฑc hiแปn cรกc chแปฉc nฤng (chแบณng hแบกn nhฦฐ email, sแป ฤiแปn thoแบกi di ฤแปng, mรฃ vรนng, ฤแปa chแป vรญ Web3) vร nhแบญt kรฝ cแบงn thiแบฟt cลฉng nhฦฐ thรดng tin thiแบฟt bแป. 2) Mแปฅc ฤรญch Sแปญ dแปฅng: ฤแป ฤฤng nhแบญp tร i khoแบฃn vร xรกc minh bแบฃo mแบญt, cung cแบฅp chแปฉc nฤng dแปch vแปฅ, khแบฏc phแปฅc sแปฑ cแป vร tuรขn thแปง cรกc yรชu cแบงu. 3) Lฦฐu trแปฏ vร Bแบฃo mแบญt: Dแปฏ liแปu ฤฦฐแปฃc lฦฐu trแปฏ mรฃ hรณa vร cรกc biแปn phรกp kiแปm soรกt quyแปn vร truy cแบญp cแบงn thiแบฟt ฤฦฐแปฃc thแปฑc hiแปn ฤแป ngฤn chแบทn truy cแบญp trรกi phรฉp, tiแบฟt lแป hoแบทc mแบฅt mรกt. 4) Chia sแบป vร Bรชn thแปฉ ba: Ngoแบกi trแปซ trฦฐแปng hแปฃp ฤฦฐแปฃc yรชu cแบงu bแปi luแบญt vร quy ฤแปnh hoแบทc cแบงn thiแบฟt ฤแป thแปฑc hiแปn dแปch vแปฅ, chรบng tรดi sแบฝ khรดng chia sแบป thรดng tin cรก nhรขn cแปงa bแบกn vแปi bรชn thแปฉ ba; Nแบฟu cรณ sแปฑ tham gia cแปงa cรกc dแปch vแปฅ bรชn thแปฉ ba (chแบณng hแบกn nhฦฐ vรญ ฤiแปn tแปญ, nhร cung cแบฅp dแปch vแปฅ SMS), dแปฏ liแปu sแบฝ chแป ฤฦฐแปฃc xแปญ lรฝ แป mแปฉc tแปi thiแปu cแบงn thiแบฟt ฤแป thแปฑc hiแปn cรกc chแปฉc nฤng. 5) Cookie/Bแป nhแป cแปฅc bแป: ฤฦฐแปฃc sแปญ dแปฅng ฤแป xรกc thแปฑc trแบกng thรกi ฤฤng nhแบญp vร duy trรฌ phiรชn lร m viแปc cแบงn thiแบฟt (chแบณng hแบกn nhฦฐ mรฃ thรดng bรกo, PHPSESSID). Bแบกn cรณ thแป xรณa hoแบทc hแบกn chแบฟ chรบng trong trรฌnh duyแปt cแปงa mรฌnh. 6) Quyแปn cรก nhรขn: Bแบกn cรณ thแป thแปฑc hiแปn cรกc quyแปn cแปงa mรฌnh ฤแป yรชu cแบงu, sแปญa ฤแปi, xรณa vร rรบt lแบกi sแปฑ ฤแปng รฝ theo luแบญt vร quy ฤแปnh hiแปn hร nh. 7) Thay ฤแปi vร Thรดng bรกo: Cรกc bแบฃn cแบญp nhแบญt cho cรกc ฤiแปu khoแบฃn nร y sแบฝ ฤฦฐแปฃc hiแปn thแป rรต rร ng trรชn trang. Viแปc tiแบฟp tแปฅc sแปญ dแปฅng dแปch vแปฅ nร y cho thแบฅy bแบกn ฤรฃ ฤแปc vร ฤแปng รฝ vแปi nแปi dung ฤฦฐแปฃc cแบญp nhแบญt. Nแบฟu bแบกn khรดng ฤแปng รฝ vแปi cรกc ฤiแปu khoแบฃn nร y hoแบทc bแบฅt kแปณ bแบฃn cแบญp nhแบญt nร o trong ฤรณ, vui lรฒng ngแปซng sแปญ dแปฅng dแปch vแปฅ nร y vร liรชn hแป vแปi chรบng tรดi. ',
-
-'account.basicInfo': 'Thรดng tin cฦก bแบฃn',
-
-'account.id': 'ID ngฦฐแปi dรนng',
-
-'account.username': 'Tรชn ngฦฐแปi dรนng',
-
-'account.nickname': 'Biแปt danh',
-
-'account.email': 'Email',
-
-'account.mobile': 'Sแป ฤiแปn thoแบกi',
-
-'account.web3address': 'ฤแปa chแป vรญ',
-
-'account.pid': 'ID ngฦฐแปi giแปi thiแปu',
-
-'account.level': 'Cแบฅp ฤแป ngฦฐแปi dรนng',
-
-'account.money': 'Sแป dฦฐ',
-
-'account.qdtBalance': 'Sแป dฦฐ QDT',
-
-'account.score': 'ฤiแปm',
-
-'account.createtime': 'Thแปi gian ฤฤng kรฝ',
-
-'account.inviteLink': 'Liรชn kแบฟt mแปi',
-
-'account.recharge': 'Nแบกp tiแปn',
-
-'account.rechargeTip': 'Mรฃ QR bรชn dฦฐแปi ฤแป nแบกp tiแปn bแบฑng WeChat hoแบทc Alipay',
-
-'account.qrCodePlaceholder': 'Mรฃ QR giแบฃ lแบญp',
-
-'account.rechargeAmount': 'Sแป tiแปn cแบงn nแบกp',
-
-'account.enterAmount': 'Vui lรฒng nhแบญp sแป tiแปn cแบงn nแบกp',
-
-'account.rechargeHint': 'Sแป tiแปn nแบกp tแปi thiแปu: 1 QDT',
-
-'account.confirmRecharge': 'Xรกc nhแบญn nแบกp tiแปn',
-
-'account.enterValidAmount': 'Vui lรฒng nhแบญp sแป tiแปn hแปฃp lแป',
-
-'account.rechargeSuccess': 'Nแบกp tiแปn thร nh cรดng! Sแป tiแปn {amount} QDT ฤรฃ ฤฦฐแปฃc nแบกp',
-
-'account.settings.menuMap.basic': 'Cร i ฤแบทt cฦก bแบฃn',
-
-'account.settings.menuMap.security': 'Cร i ฤแบทt bแบฃo mแบญt',
-
-'account.settings.menuMap.notification': 'Thรดng bรกo tin nhแบฏn mแปi',
-
-'account.settings.menuMap.moneyLog': 'Chi tiแบฟt quแปน',
-
-'account.moneyLog.empty': 'Khรดng cรณ chi tiแบฟt quแปน',
-
-'account.moneyLog.total': 'Tแปng sแป {total} giao dแปch',
-
-'account.moneyLog.type.purchase': 'Hแบกn mแปฉc mua hร ng',
-
-'account.moneyLog.type.recharge': 'Nแบกp tiแปn',
-
-'account.moneyLog.type.refund': 'Hoร n tiแปn',
-
-'account.moneyLog.type.reward': 'Thฦฐแปng',
-
-'account.moneyLog.type.income': 'Thu nhแบญp Cรกc chแป bรกo',
-
-'account.moneyLog.type.commission': 'Phรญ nแปn tแบฃng',
-
-'wallet.balance': 'Sแป dฦฐ QDT',
-
-'wallet.recharge': 'Nแบกp tiแปn',
-
-'wallet.withdraw': 'Rรบt tiแปn',
-
-'wallet.filter': 'Lแปc',
-
-'wallet.reset': 'ฤแบทt lแบกi',
-
-'wallet.totalRecharge': 'Tแปng sแป tiแปn nแบกp',
-
-'wallet.totalWithdraw': 'Tแปng sแป tiแปn rรบt',
-
-'wallet.totalIncome': 'Tแปng sแป tiแปn thu nhแบญp',
-
-'wallet.records': 'Lแปch sแปญ giao dแปch vร chi tiแบฟt quแปน',
-
-'wallet.tradingRecords': 'Lแปch sแปญ giao dแปch',
-
-'wallet.moneyLog': 'Chi tiแบฟt quแปน',
-
-'wallet.rechargeTip': 'Vui lรฒng quรฉt mรฃ QR bรชn dฦฐแปi bแบฑng WeChat hoแบทc Alipay ฤแป nแบกp tiแปn',
-
-'wallet.qrCodePlaceholder': 'Mรฃ QR (mรด phแปng)',
-
-'wallet.rechargeAmount': 'Sแป tiแปn cแบงn nแบกp',
-
-'wallet.enterAmount': 'Vui lรฒng nhแบญp sแป tiแปn cแบงn nแบกp',
-
-'wallet.rechargeHint': 'Sแป tiแปn nแบกp tแปi thiแปu: 1 QDT',
-
-'wallet.confirmRecharge': 'Xรกc nhแบญn nแบกp tiแปn',
-
-'wallet.enterValidAmount': 'Vui lรฒng nhแบญp sแป tiแปn hแปฃp lแป',
-
-'wallet.rechargeSuccess': 'Nแบกp tiแปn thร nh cรดng! ฤรฃ thanh toรกn {amount} QDT',
-
-'wallet.rechargeFailed': 'Giao dแปch thแบฅt bแบกi',
-
-'wallet.withdrawTip': 'Vui lรฒng nhแบญp sแป tiแปn rรบt vร ฤแปa chแป rรบt tiแปn',
-
-'wallet.withdrawAmount': 'Sแป tiแปn rรบt',
-
-'wallet.enterWithdrawAmount': 'Vui lรฒng nhแบญp sแป tiแปn rรบt',
-
-'wallet.withdrawHint': 'Sแป tiแปn rรบt tแปi thiแปu: 1 QDT',
-
-'wallet.withdrawAddress': 'ฤแปa chแป rรบt tiแปn (tรนy chแปn)',
-
-'wallet.enterWithdrawAddress': 'Vui lรฒng nhแบญp ฤแปa chแป rรบt tiแปn',
-
-'wallet.confirmWithdraw': 'Xรกc nhแบญn rรบt tiแปn',
-
-'wallet.enterValidWithdrawAmount': 'Vui lรฒng nhแบญp sแป tiแปn rรบt hแปฃp lแป',
-
-'wallet.insufficientBalance': 'Sแป dฦฐ khรดng ฤแปง',
-
-'wallet.withdrawSuccess': 'Rรบt tiแปn thร nh cรดng! Sแป tiแปn {amount} QDT ฤรฃ rรบt',
-
-'wallet.withdrawFailed': 'Giao dแปch rรบt tiแปn thแบฅt bแบกi',
-
-'wallet.noTradingRecords': 'Khรดng cรณ bแบฃn ghi giao dแปch nร o',
-
-'wallet.noMoneyLog': 'Khรดng cรณ chi tiแบฟt giao dแปch',
-
-'wallet.loadTradingRecordsFailed': 'Khรดng thแป tแบฃi bแบฃn ghi giao dแปch',
-
-'wallet.loadMoneyLogFailed': 'Khรดng thแป tแบฃi chi tiแบฟt giao dแปch',
-
-'wallet.moneyLogTotal': 'Tแปng sแป {total} bแบฃn ghi',
-
-'wallet.moneyLogTypeTitle': 'Loแบกi',
-
-'wallet.moneyLogType.all': 'Tแบฅt cแบฃ cรกc loแบกi',
-
-'wallet.table.time': 'Thแปi gian',
-
-'wallet.table.type': 'Loแบกi',
-
-'wallet.table.price': 'Giรก',
-
-'wallet.table.amount': 'Sแป lฦฐแปฃng',
-
-'wallet.table.money': 'Sแป tiแปn',
-
-'wallet.table.balance': 'Sแป dฦฐ',
-
-'wallet.table.memo': 'Ghi chรบ',
-
-'wallet.table.value': 'Giรก trแป',
-
-'wallet.table.profit': 'Lแปฃi nhuแบญn/Thua lแป',
-
-'wallet.table.commission': 'Hoa hแปng',
-
-'wallet.table.total': 'Tแปng sแป {total} bแบฃn ghi',
-
-'wallet.tradeType.buy': 'Mua',
-
-'wallet.tradeType.sell': 'Bรกn',
-
-'wallet.tradeType.liquidation': 'Thanh lรฝ',
-
-'wallet.tradeType.openLong': 'Mแป lแปnh mua',
-
-'wallet.tradeType.addLong': 'Thรชm lแปnh mua',
-
-'wallet.tradeType.closeLong': 'ฤรณng lแปnh mua',
-
-'wallet.tradeType.closeLongStop': 'ฤรณng lแปnh mua vร cแบฏt lแป',
-
-'wallet.tradeType.closeLongProfit': 'Chแปt lแปi vร ฤรณng lแปnh mua',
-'wallet.tradeType.openShort': 'Mแป vแป thแบฟ bรกn khแปng',
-
-'wallet.tradeType.addShort': 'Thรชm vแป thแบฟ bรกn khแปng',
-
-'wallet.tradeType.closeShort': 'ฤรณng vแป thแบฟ bรกn khแปng',
-
-'wallet.tradeType.closeShortStop': 'ฤรณng vแป thแบฟ bรกn khแปng vแปi lแปnh dแปซng lแป',
-
-'wallet.tradeType.closeShortProfit': 'Chแปt lแปi vร ฤรณng vแป thแบฟ bรกn khแปng',
-
-'wallet.moneyLogType.purchase': 'Chแป bรกo mua',
-
-'wallet.moneyLogType.recharge': 'Nแบกp tiแปn',
-
-'wallet.moneyLogType.withdraw': 'Rรบt tiแปn mแบทt',
-
-'wallet.moneyLogType.refund': 'Hoร n tiแปn',
-
-'wallet.moneyLogType.reward': 'Thฦฐแปng',
-
-'wallet.moneyLogType.income': 'Thu nhแบญp',
-
-'wallet.moneyLogType.commission': 'Phรญ giao dแปch',
-
-'wallet.web3Address.required': 'Vui lรฒng nhแบญp ฤแปa chแป vรญ Web3 cแปงa bแบกn trฦฐแปc',
-
-'wallet.web3Address.requiredDescription': 'Bแบกn cแบงn liรชn kแบฟt ฤแปa chแป vรญ Web3 cแปงa mรฌnh trฦฐแปc khi gแปญi tiแปn ฤแป nhแบญn tiแปn gแปญi',
-
-'wallet.web3Address.placeholder': 'Vui lรฒng nhแบญp ฤแปa chแป vรญ Web3 cแปงa bแบกn (bแบฏt ฤแบงu bแบฑng 0x)',
-
-'wallet.web3Address.save': 'Lฦฐu ฤแปa chแป vรญ',
-
-'wallet.web3Address.saveSuccess': 'ฤแปa chแป vรญ ฤรฃ ฤฦฐแปฃc lฦฐu thร nh cรดng',
-
-'wallet.web3Address.saveFailed': 'Khรดng thแป lฦฐu ฤแปa chแป vรญ',
-
-'wallet.web3Address.invalidFormat': 'Vui lรฒng nhแบญp ฤแปa chแป vรญ Web3 hแปฃp lแป (ฤแปnh dแบกng Ethereum: 42 kรฝ tแปฑ bแบฏt ฤแบงu bแบฑng 0x, hoแบทc TRC20) ฤแปnh dแบกng: 34 kรฝ tแปฑ bแบฏt ฤแบงu bแบฑng T)',
-
-'wallet.selectCoin': 'Chแปn loแบกi tiแปn ฤiแปn tแปญ',
-
-'wallet.selectChain': 'Chแปn chuแปi khแปi',
-
-'wallet.chain.eth': 'ETH (ERC20)',
-
-'wallet.chain.trc20': 'TRC20',
-
-'wallet.chain.bsc': 'BSC',
-
-'wallet.targetQdtAmount': 'Sแป lฦฐแปฃng QDT bแบกn muแปn ฤแปi (tรนy chแปn)',
-
-'wallet.targetQdtAmount.placeholder': 'Vui lรฒng nhแบญp sแป lฦฐแปฃng QDT bแบกn muแปn ฤแปi, giรก QDT hiแปn tแบกi: {price} USDT',
-
-'wallet.targetQdtAmount.requiredUsdt': 'Sแป tiแปn cแบงn nแบกp: {amount} USDT',
-
-'wallet.rechargeAddress': 'ฤแปa chแป nแบกp tiแปn',
-
-'wallet.copyAddress': 'Sao chรฉp',
-
-'wallet.copySuccess': 'Sao chรฉp thร nh cรดng!',
-
-'wallet.copyFailed': 'Sao chรฉp thแบฅt bแบกi, vui lรฒng sao chรฉp thแปง cรดng',
-
-'wallet.rechargeAddressHint': 'Vui lรฒng ฤแบฃm bแบฃo bแบกn sแปญ dแปฅng chuแปi {chain} ฤแป gแปญi {coin} vร o ฤแปa chแป nร y',
-
-'wallet.qdtPrice.loading': 'ฤang tแบฃi...',
-
-'wallet.rechargeTip.new': 'Vui lรฒng chแปn loแบกi tiแปn tแป vร chuแปi, sau ฤรณ quรฉt mรฃ QR bรชn dฦฐแปi ฤแป gแปญi tiแปn',
-
-'wallet.exchangeRate': '1 QDT โ {rate} USDT',
-
-'wallet.withdrawableAmount': 'Sแป tiแปn cรณ thแป rรบt',
-
-'wallet.totalBalance': 'Tแปng sแป dฦฐ',
-
-'wallet.insufficientWithdrawable': 'Sแป tiแปn cรณ thแป rรบt khรดng ฤแปง, hiแปn tแบกi chแป cรณ thแป rรบt: {amount} QDT',
-
-'wallet.withdrawAddressRequired': 'Vui lรฒng nhแบญp ฤแปa chแป rรบt tiแปn ฤแปa chแป',
-'wallet.withdrawAddressHint': 'Vui lรฒng ฤแบฃm bแบฃo ฤแปa chแป chรญnh xรกc; khรดng thแป hแปงy bแป giao dแปch rรบt tiแปn sau khi ฤรฃ gแปญi',
-
-'wallet.withdrawSubmitSuccess': 'Yรชu cแบงu rรบt tiแปn ฤรฃ ฤฦฐแปฃc gแปญi thร nh cรดng; Vui lรฒng chแป xem xรฉt',
-
-'menu.footer.contactUs': 'Liรชn hแป vแปi chรบng tรดi',
-
-'menu.footer.getSupport': 'Nhแบญn hแป trแปฃ',
-
-'menu.footer.socialAccounts': 'Tร i khoแบฃn mแบกng xรฃ hแปi',
-
-'menu.footer.userAgreement': 'Thแปa thuแบญn ngฦฐแปi dรนng',
-
-'menu.footer.privacyPolicy': 'Chรญnh sรกch bแบฃo mแบญt',
-
-'menu.footer.support': 'Hแป trแปฃ',
-
-'menu.footer.featureRequest': 'Yรชu cแบงu tรญnh nฤng',
-
-'menu.footer.email': 'Email',
-
-'menu.footer.liveChat': 'Trรฒ chuyแปn trแปฑc tuyแบฟn 24/7',
-
-'dashboard.analysis.title': 'Phรขn tรญch ฤa chiแปu',
-
-'dashboard.analysis.subtitle': 'Phรขn tรญch tร i chรญnh toร n diแปn dแปฑa trรชn AI Nแปn tแบฃng',
-
-'dashboard.analysis.selectSymbol': 'Chแปn hoแบทc nhแบญp mรฃ chแปฉng khoรกn',
-
-'dashboard.analysis.selectModel': 'Chแปn mรด hรฌnh',
-
-'dashboard.analysis.startAnalysis': 'Bแบฏt โโฤแบงu phรขn tรญch',
-
-'dashboard.analysis.history': 'Lแปch sแปญ',
-
-'dashboard.analysis.tab.overview': 'Phรขn tรญch toร n diแปn',
-
-'dashboard.analysis.tab.fundamental': 'Cรกc yแบฟu tแป cฦก bแบฃn',
-
-'dashboard.analysis.tab.technical': 'Phรขn tรญch kแปน thuแบญt',
-
-'dashboard.analysis.tab.news': 'Tin tแปฉc',
-
-'dashboard.analysis.tab.sentiment': 'Tรขm lรฝ thแป trฦฐแปng',
-
-'dashboard.analysis.tab.risk': 'Rแปงi ro',
-
-'dashboard.analysis.tab.debate': 'Tฤng/Giแบฃm giรก',
-'dashboard.analysis.tab.decision': 'Quyแบฟt ฤแปnh cuแปi cรนng',
-
-'dashboard.analysis.empty.selectSymbol': 'Chแปn mแปฅc tiรชu ฤแป bแบฏt ฤแบงu phรขn tรญch',
-
-'dashboard.analysis.empty.selectSymbolDesc': 'Chแปn mแปฅc tiรชu tแปซ danh sรกch theo dรตi cแปงa bแบกn hoแบทc nhแบญp mรฃ cแปงa nรณ ฤแป nhแบญn bรกo cรกo phรขn tรญch AI ฤa chiแปu',
-
-'dashboard.analysis.empty.startAnalysis': 'Nhแบฅp vร o nรบt "Bแบฏt ฤแบงu phรขn tรญch" ฤแป phรขn tรญch ฤa chiแปu',
-
-'dashboard.analysis.empty.startAnalysisDesc': 'Chรบng tรดi sแบฝ cung cแบฅp cho bแบกn phรขn tรญch toร n diแปn tแปซ nhiแปu khรญa cแบกnh bao gแปm cฦก bแบฃn, kแปน thuแบญt, tin tแปฉc, tรขm lรฝ vร rแปงi ro',
-
-'dashboard.analysis.empty.noData': 'Khรดng cรณ dแปฏ liแปu phรขn tรญch cho {type}, vui lรฒng thแปฑc hiแปn phรขn tรญch toร n diแปn trฦฐแปc',
-
-'dashboard.analysis.empty.noWatchlist': 'Khรดng cรณ danh sรกch theo dรตi cรณ sแบตn',
-
-'dashboard.analysis.empty.noHistory': 'Khรดng cรณ dแปฏ liแปu lแปch sแปญ',
-
-'dashboard.analysis.empty.watchlistHint': 'Khรดng cรณ danh sรกch theo dรตi, vui lรฒng thแปฑc hiแปn phรขn tรญch toร n diแปn trฦฐแปc',
-
-'dashboard.analysis.empty.noDebateData': 'Khรดng cรณ dแปฏ liแปu tranh luแบญn',
-
-'dashboard.analysis.empty.noDecisionData': 'Khรดng cรณ dแปฏ liแปu quyแบฟt ฤแปnh',
-
-'dashboard.analysis.empty.selectAgent': 'Vui lรฒng chแปn mแปt ฤแบกi lรฝ ฤแป xem kแบฟt quแบฃ phรขn tรญch',
-
-'dashboard.analysis.loading.analyzing': 'ฤang phรขn tรญch, vui lรฒng chแป...',
-
-'dashboard.analysis.loading.fundamental': 'ฤang phรขn tรญch dแปฏ liแปu cฦก bแบฃn...',
-
-'dashboard.analysis.loading.technical': 'ฤang phรขn tรญch cรกc chแป bรกo kแปน thuแบญt...',
-
-'dashboard.analysis.loading.news': 'ฤang phรขn tรญch dแปฏ liแปu tin tแปฉc...',
-
-'dashboard.analysis.loading.sentiment': 'Phรขn tรญch tรขm lรฝ thแป trฦฐแปng...',
-
-'dashboard.analysis.loading.risk': 'ฤรกnh giรก rแปงi ro...',
-
-'dashboard.analysis.loading.debate': 'Cuแปc tranh luแบญn ฤang diแป
n ra giแปฏa phe tฤng giรก vร phe giแบฃm giรก...',
-
-'dashboard.analysis.loading.decision': 'ฤฦฐa ra quyแบฟt ฤแปnh cuแปi cรนng...',
-
-'dashboard.analysis.score.overall': 'ฤiแปm tแปng thแป',
-
-'dashboard.analysis.score.recommendation': 'Lแปi khuyรชn ฤแบงu tฦฐ',
-
-'dashboard.analysis.score.confidence': 'Mแปฉc ฤแป tin cแบญy',
-
-'dashboard.analysis.dimension.fundamental': 'cรกc yแบฟu tแป cฦก bแบฃn',
-
-'dashboard.analysis.dimension.technical': 'cรกc yแบฟu tแป kแปน thuแบญt',
-
-'dashboard.analysis.dimension.news': 'tin tแปฉc',
-
-'dashboard.analysis.dimension.sentiment': 'tรขm lรฝ',
-
-'dashboard.analysis.dimension.risk': 'rแปงi ro',
-
-'dashboard.analysis.card.dimensionScores': 'ฤiแปm sแป cho tแปซng yแบฟu tแป',
-
-'dashboard.analysis.card.overviewReport': 'bรกo cรกo tแปng quan',
-
-'dashboard.analysis.card.financialMetrics': 'cรกc chแป sแป tร i chรญnh',
-
-'dashboard.analysis.card.fundamentalReport': 'bรกo cรกo phรขn tรญch cฦก bแบฃn',
-
-'dashboard.analysis.card.technicalIndicators': 'Cรกc chแป sแป kแปน thuแบญt Cรกc chแป bรกo',
-
-'dashboard.analysis.card.technicalReport': 'Bรกo cรกo phรขn tรญch kแปน thuแบญt',
-
-'dashboard.analysis.card.newsList': 'Tin tแปฉc liรชn quan',
-
-'dashboard.analysis.card.newsReport': 'Bรกo cรกo phรขn tรญch tin tแปฉc',
-
-'dashboard.analysis.card.sentimentIndicators': 'Cรกc chแป bรกo tรขm lรฝ',
-
-'dashboard.analysis.card.sentimentReport': 'Bรกo cรกo phรขn tรญch tรขm lรฝ',
-
-'dashboard.analysis.card.riskMetrics': 'Cรกc chแป bรกo rแปงi ro',
-
-'dashboard.analysis.card.riskReport': 'Bรกo cรกo ฤรกnh giรก rแปงi ro',
-
-'dashboard.analysis.card.bullView': 'Quan ฤiแปm lแบกc quan',
-
-'dashboard.analysis.card.bearView': 'Quan ฤiแปm bi quan',
-
-'dashboard.analysis.card.researchConclusion': 'Kแบฟt luแบญn cแปงa nhร nghiรชn cแปฉu',
-
-'dashboard.analysis.card.traderPlan': 'Kแบฟ hoแบกch giao dแปch',
-
-'dashboard.analysis.card.riskDebate': 'Thแบฃo luแบญn cแปงa แปฆy ban Rแปงi ro',
-
-'dashboard.analysis.card.finalDecision': 'Quyแบฟt ฤแปnh cuแปi cรนng',
-
-'dashboard.analysis.card.tradePlanDetail': 'Chi tiแบฟt kแบฟ hoแบกch giao dแปch',
-
-'dashboard.analysis.tradingPlan.entry_price': 'Giรก vร o lแปnh',
-
-'dashboard.analysis.tradingPlan.position_size': 'Quy mรด vแป thแบฟ',
-
-'dashboard.analysis.tradingPlan.stop_loss': 'Cแบฏt lแป',
-
-'dashboard.analysis.tradingPlan.take_profit': 'Chแปt lแปi',
-
-'dashboard.analysis.label.confidence': 'Mแปฉc ฤแป tแปฑ tin Mแปฉc ฤแป',
-
-'dashboard.analysis.label.keyPoints': 'ฤiแปm chรญnh',
-
-'dashboard.analysis.label.riskWarning': 'Cแบฃnh bรกo rแปงi ro',
-
-'dashboard.analysis.risk.risky': 'Quan ฤiแปm rแปงi ro',
-
-'dashboard.analysis.risk.neutral': 'Quan ฤiแปm trung lแบญp',
-
-'dashboard.analysis.risk.safe': 'Quan ฤiแปm an toร n',
-
-'dashboard.analysis.risk.conclusion': 'Kแบฟt luแบญn',
-
-'dashboard.analysis.feature.fundamental': 'Phรขn tรญch cฦก bแบฃn',
-
-'dashboard.analysis.feature.technical': 'Phรขn tรญch kแปน thuแบญt',
-
-'dashboard.analysis.feature.news': 'Phรขn tรญch tin tแปฉc',
-
-'dashboard.analysis.feature.sentiment': 'Phรขn tรญch cแบฃm xรบc',
-
-'dashboard.analysis.feature.risk': 'Rแปงi ro ฤรกnh giรก',
-
-'dashboard.analysis.watchlist.title': 'Danh sรกch theo dรตi cแปงa tรดi',
-
-'dashboard.analysis.watchlist.add': 'Thรชm',
-
-'dashboard.analysis.watchlist.addStock': 'Thรชm cแป phiแบฟu',
-
-'dashboard.analysis.modal.addStock.title': 'Thรชm vร o danh sรกch theo dรตi',
-
-'dashboard.analysis.modal.addStock.confirm': 'Xรกc nhแบญn',
-
-'dashboard.analysis.modal.addStock.cancel': 'Hแปงy',
-
-'dashboard.analysis.modal.addStock.market': 'Loแบกi thแป trฦฐแปng',
-
-'dashboard.analysis.modal.addStock.marketPlaceholder': 'Vui lรฒng chแปn thแป trฦฐแปng',
-
-'dashboard.analysis.modal.addStock.marketRequired': 'Vui lรฒng chแปn loแบกi thแป trฦฐแปng',
-
-'dashboard.analysis.modal.addStock.symbol': 'Mรฃ chแปฉng khoรกn',
-
-'dashboard.analysis.modal.addStock.symbolPlaceholder': 'Vรญ dแปฅ: AAPL, TSLA, GOOGL, 000001, BTC',
-
-'dashboard.analysis.modal.addStock.symbolRequired': 'Vui lรฒng nhแบญp mรฃ chแปฉng khoรกn',
-
-'dashboard.analysis.modal.addStock.searchPlaceholder': 'Tรฌm kiแบฟm mรฃ chแปฉng khoรกn hoแบทc tรชn cแป phiแบฟu',
-
-'dashboard.analysis.modal.addStock.searchOrInputPlaceholder': 'Tรฌm kiแบฟm hoแบทc nhแบญp mรฃ chแปฉng khoรกn (vรญ dแปฅ: AAPL, BTC/USDT, EUR/USD)',
-
-'dashboard.analysis.modal.addStock.searchOrInputHint': 'Hแป trแปฃ tรฌm kiแบฟm cแป phiแบฟu trong cฦก sแป dแปฏ liแปu hoแบทc nhแบญp trแปฑc tiแบฟp mรฃ (hแป thแปng sแบฝ tแปฑ ฤแปng truy xuแบฅt tรชn)',
-
-'dashboard.analysis.modal.addStock.search': 'Tรฌm kiแบฟm',
-
-'dashboard.analysis.modal.addStock.searchResults': 'Kแบฟt quแบฃ tรฌm kiแบฟm',
-
-'dashboard.analysis.modal.addStock.hotSymbols': 'Cแป phiแบฟu nรณng',
-
-'dashboard.analysis.modal.addStock.noHotSymbols': 'Khรดng cรณ cแป phiแบฟu nรณng',
-
-'dashboard.analysis.modal.addStock.selectedSymbol': 'Cแป phiแบฟu ฤรฃ chแปn',
-
-'dashboard.analysis.modal.addStock.pleaseSelectSymbol': 'Vui lรฒng chแปn cแป phiแบฟu trฦฐแปc',
-
-'dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol': 'Vui lรฒng chแปn cแป phiแบฟu hoแบทc nhแบญp mรฃ cแป phiแบฟu',
-
-'dashboard.analysis.modal.addStock.pleaseEnterSymbol': 'Vui lรฒng nhแบญp mรฃ cแป phiแบฟu',
-
-'dashboard.analysis.modal.addStock.pleaseSelectMarket': 'Vui lรฒng chแปn loแบกi thแป trฦฐแปng',
-
-'dashboard.analysis.modal.addStock.searchFailed': 'Tรฌm kiแบฟm thแบฅt bแบกi, vui lรฒng thแปญ lแบกi sau',
-
-'dashboard.analysis.modal.addStock.noSearchResults': 'Khรดng tรฌm thแบฅy cแป phiแบฟu phรน hแปฃp',
-
-'dashboard.analysis.modal.addStock.willAutoFetchName': 'Hแป thแปng sแบฝ tแปฑ ฤแปng lแบฅy tรชn',
-
-'dashboard.analysis.modal.addStock.addDirectly': 'Thรชm trแปฑc tiแบฟp',
-
-'dashboard.analysis.modal.addStock.nameWillBeFetched': 'Tรชn sแบฝ ฤฦฐแปฃc tแปฑ ฤแปng lแบฅy khi thรชm',
-
-'dashboard.analysis.market.USStock': 'Cแป phiแบฟu Mแปน',
-
-'dashboard.analysis.market.Crypto': 'Tiแปn ฤiแปn tแปญ',
-
-'dashboard.analysis.market.Forex': 'Ngoแบกi hแปi',
-
-'dashboard.analysis.market.Futures': 'Hแปฃp ฤแปng tฦฐฦกng lai',
-
-'dashboard.analysis.modal.history.title': 'Lแปch sแปญ phรขn tรญch',
-
-'dashboard.analysis.modal.history.viewResult': 'Xem kแบฟt quแบฃ',
-
-'dashboard.analysis.modal.history.completeTime': 'Thแปi gian hoร n thร nh',
-
-'dashboard.analysis.modal.history.error': 'Lแปi',
-
-'dashboard.analysis.status.pending': 'ฤang chแป xแปญ lรฝ',
-
-'dashboard.analysis.status.processing': 'ฤang xแปญ lรฝ',
-
-'dashboard.analysis.status.completed': 'Hoร n thร nh',
-
-'dashboard.analysis.status.failed': 'Thแบฅt bแบกi',
-
-'dashboard.analysis.message.selectSymbol': 'Vui lรฒng chแปn mแปฅc tiรชu trฦฐแปc',
-
-'dashboard.analysis.message.taskCreated': 'Tรกc vแปฅ phรขn tรญch ฤรฃ ฤฦฐแปฃc tแบกo, ฤang thแปฑc thi trong nแปn...',
-
-'dashboard.analysis.message.analysisComplete': 'Phรขn tรญch ฤรฃ hoร n tแบฅt',
-
-'dashboard.analysis.message.analysisCompleteCache': 'Phรขn tรญch ฤรฃ hoร n tแบฅt (sแปญ dแปฅng dแปฏ liแปu ฤฦฐแปฃc lฦฐu trong bแป nhแป cache)',
-
-'dashboard.analysis.message.analysisFailed': 'Phรขn tรญch thแบฅt bแบกi, vui lรฒng thแปญ lแบกi sau',
-
-'dashboard.analysis.message.addStockSuccess': 'ฤรฃ thรชm thร nh cรดng',
-
-'dashboard.analysis.message.addStockFailed': 'Thรชm thแบฅt bแบกi',
-
-'dashboard.analysis.message.removeStockSuccess': 'ฤรฃ xรณa thร nh cรดng',
-
-'dashboard.analysis.message.removeStockFailed': 'Xรณa thแบฅt bแบกi',
-
-'dashboard.analysis.message.resumingAnalysis': 'ฤang tiแบฟp tแปฅc tรกc vแปฅ phรขn tรญch...',
-
-'dashboard.analysis.message.deleteSuccess': 'ฤรฃ xรณa thร nh cรดng',
-
-'dashboard.analysis.message.deleteFailed': 'Xรณa thแบฅt bแบกi',
-
-'dashboard.analysis.modal.history.delete': 'Xรณa',
-
-'dashboard.analysis.modal.history.deleteConfirm': 'Bแบกn cรณ chแบฏc chแบฏn muแปn xรณa bแบฃn ghi phรขn tรญch nร y khรดng?',
-
-'dashboard.analysis.test': 'Cแปญa hร ng ฤฦฐแปng Gongzhuan {khรดng}',
-
-'dashboard.analysis.introduce': 'Mรด tแบฃ chแป bรกo',
-
-'dashboard.analysis.total-sales': 'Tแปng doanh thu',
-
-'dashboard.analysis.day-sales': 'Doanh thu trung bรฌnh hร ng ngร y',
-
-'dashboard.analysis.visits': 'Lฦฐแปฃt truy cแบญp',
-
-'dashboard.analysis.visits-trend': 'Lฦฐแปฃt truy cแบญp xu hฦฐแปng',
-
-'dashboard.analysis.visits-ranking': 'Xแบฟp hแบกng lฦฐแปฃt truy cแบญp cแปญa hร ng',
-
-'dashboard.analysis.day-visits': 'Lฦฐแปฃt truy cแบญp hร ng ngร y',
-
-'dashboard.analysis.week': 'Lฦฐแปฃt truy cแบญp hร ng tuแบงn so vแปi cรนng kแปณ nฤm trฦฐแปc',
-
-'dashboard.analysis.day': 'Lฦฐแปฃt truy cแบญp hร ng ngร y so vแปi cรนng kแปณ nฤm trฦฐแปc',
-
-'dashboard.analysis.payments': 'Sแป lฦฐแปฃng thanh toรกn',
-
-'dashboard.analysis.conversion-rate': 'Tแปท lแป chuyแปn ฤแปi',
-
-'dashboard.analysis.operational-effect': 'Hiแปu quแบฃ hoแบกt ฤแปng',
-
-'dashboard.analysis.sales-trend': 'Xu hฦฐแปng doanh sแป',
-
-'dashboard.analysis.sales-ranking': 'Xแบฟp hแบกng doanh sแป cแปญa hร ng',
-
-'dashboard.analysis.all-year': 'Quanh nฤm',
-
-'dashboard.analysis.all-month': 'Thรกng nร y',
-
-'dashboard.analysis.all-week': 'Tuแบงn nร y',
-
-'dashboard.analysis.all-day': 'Hรดm nay',
-
-'dashboard.analysis.search-users': 'Sแป lฦฐแปฃng ngฦฐแปi dรนng tรฌm kiแบฟm',
-
-'dashboard.analysis.per-capita-search': 'Sแป lฦฐแปฃt tรฌm kiแบฟm trung bรฌnh trรชn ฤแบงu ngฦฐแปi',
-
-'dashboard.analysis.online-top-search': 'Cรกc tแปซ khรณa tรฌm kiแบฟm trแปฑc tuyแบฟn phแป biแบฟn',
-
-'dashboard.analysis.the-proportion-of-sales': 'Doanh sแป theo danh mแปฅc',
-
-'dashboard.analysis.dropdown-option-one': 'Phฦฐฦกng รกn mแปt',
-
-'dashboard.analysis.dropdown-option-two': 'Phฦฐฦกng รกn hai',
-
-'dashboard.analysis.channel.all': 'Tแบฅt cแบฃ Kรชnh',
-
-'dashboard.analysis.channel.online': 'Trแปฑc tuyแบฟn',
-
-'dashboard.analysis.channel.stores': 'Cแปญa hร ng',
-
-'dashboard.analysis.sales': 'Doanh thu bรกn hร ng',
-
-'dashboard.analysis.traffic': 'Lฦฐu lฦฐแปฃng truy cแบญp',
-
-'dashboard.analysis.table.rank': 'Xแบฟp hแบกng',
-
-'dashboard.analysis.table.search-keyword': 'Tแปซ khรณa tรฌm kiแบฟm',
-
-'dashboard.analysis.table.users': 'Sแป lฦฐแปฃng ngฦฐแปi dรนng',
-
-'dashboard.analysis.table.weekly-range': 'Tฤng trฦฐแปng hร ng tuแบงn',
-
-'dashboard.indicator.selectSymbol': 'Chแปn hoแบทc nhแบญp mรฃ cแป phiแบฟu',
-
-'dashboard.indicator.emptyWatchlistHint': 'Hiแปn khรดng cรณ cแป phiแบฟu nร o trong danh sรกch theo dรตi, vui lรฒng thรชm vร o, ฤแบงu tiรชn',
-
-'dashboard.indicator.hint.selectSymbol': 'Vui lรฒng chแปn cแป phiแบฟu ฤแป bแบฏt ฤแบงu phรขn tรญch',
-
-'dashboard.indicator.hint.selectSymbolDesc': 'Chแปn hoแบทc nhแบญp mรฃ cแป phiแบฟu vร o รด tรฌm kiแบฟm phรญa trรชn ฤแป xem biแปu ฤแป nแบฟn vร cรกc chแป bรกo kแปน thuแบญt',
-
-'dashboard.indicator.retry': 'Thแปญ lแบกi',
-
-'dashboard.indicator.panel.title': 'Cรกc chแป bรกo kแปน thuแบญt',
-
-'dashboard.indicator.panel.realtimeOn': 'Tแบฏt cแบญp nhแบญt thแปi gian thแปฑc',
-
-'dashboard.indicator.panel.realtimeOff': 'Bแบญt cแบญp nhแบญt thแปi gian thแปฑc',
-
-'dashboard.indicator.panel.themeLight': 'Chuyแปn sang chแปง ฤแป tแปi',
-
-'dashboard.indicator.panel.themeDark': 'Chuyแปn sang chแปง ฤแป sรกng theme',
-
-'dashboard.indicator.section.enabled': 'ฤรฃ bแบญt',
-
-'dashboard.indicator.section.added': 'Cรกc chแป bรกo tรดi ฤรฃ thรชm',
-
-'dashboard.indicator.section.custom': 'Chแป bรกo do tรดi tแปฑ tแบกo',
-
-'dashboard.indicator.section.bought': 'Cรกc chแป bรกo tรดi ฤรฃ mua',
-
-'dashboard.indicator.section.myCreated': 'Cรกc chแป bรกo tรดi ฤรฃ tแบกo',
-
-'dashboard.indicator.empty': 'Chฦฐa cรณ chแป bรกo nร o, vui lรฒng thรชm hoแบทc tแบกo chแป bรกo trฦฐแปc',
-
-'dashboard.indicator.buy': 'Mua chแป bรกo',
-
-'dashboard.indicator.action.start': 'Bแบฏt โโฤแบงu',
-
-'dashboard.indicator.action.stop': 'Dแปซng',
-
-'dashboard.indicator.action.edit': 'Chแปnh sแปญa',
-
-'dashboard.indicator.action.delete': 'Xรณa',
-
-'dashboard.indicator.action.backtest': 'Kiแปm tra lแบกi',
-
-'dashboard.indicator.status.normal': 'Bรฌnh thฦฐแปng',
-
-'dashboard.indicator.status.normalPermanent': 'Bรฌnh thฦฐแปng (Cรณ hiแปu lแปฑc vฤฉnh viแป
n)',
-
-'dashboard.indicator.status.expired': 'ฤรฃ hแบฟt hแบกn',
-
-'dashboard.indicator.expiry.permanent': 'Cรณ hiแปu lแปฑc vฤฉnh viแป
n',
-
-'dashboard.indicator.expiry.noExpiry': 'Khรดng cรณ ngร y hแบฟt hแบกn',
-
-'dashboard.indicator.expiry.expired': 'ฤรฃ hแบฟt hแบกn: {date}',
-
-'dashboard.indicator.expiry.expiresOn': 'Ngร y hแบฟt hแบกn: {date}',
-
-'dashboard.indicator.delete.confirmTitle': 'Xรกc nhแบญn xรณa',
-
-'dashboard.indicator.delete.confirmContent': 'Bแบกn cรณ chแบฏc chแบฏn muแปn xรณa chแป bรกo "{name}" khรดng? Thao tรกc nร y khรดng thแป ฤแบฃo ngฦฐแปฃc.',
-
-'dashboard.indicator.delete.confirmOk': 'Xรณa',
-
-'dashboard.indicator.delete.confirmCancel': 'Hแปงy',
-
-'dashboard.indicator.delete.success': 'Xรณa thร nh cรดng',
-
-'dashboard.indicator.delete.failed': 'Xรณa thแบฅt bแบกi',
-
-'dashboard.indicator.save.success': 'Lฦฐu thร nh cรดng',
-
-'dashboard.indicator.save.failed': 'Lฦฐu thแบฅt bแบกi',
-
-'dashboard.indicator.error.loadWatchlistFailed': 'Khรดng thแป tแบฃi danh sรกch theo dรตi',
-
-'dashboard.indicator.error.chartNotReady': 'Thร nh phแบงn biแปu ฤแป chฦฐa ฤฦฐแปฃc khแปi tแบกo, vui lรฒng chแปn mแปฅc tiรชu vร ฤแปฃi biแปu ฤแป tแบฃi xong , load',
-'dashboard.indicator.error.chartMethodNotReady': 'Phฦฐฦกng thแปฉc cแปงa thร nh phแบงn biแปu ฤแป chฦฐa sแบตn sร ng, vui lรฒng thแปญ lแบกi sau',
-
-'dashboard.indicator.error.chartExecuteNotReady': 'Phฦฐฦกng thแปฉc thแปฑc thi cแปงa thร nh phแบงn biแปu ฤแป chฦฐa sแบตn sร ng, vui lรฒng thแปญ lแบกi sau',
-
-'dashboard.indicator.error.parseFailed': 'Khรดng thแป phรขn tรญch cรบ phรกp mรฃ Python',
-
-'dashboard.indicator.error.parseFailedCheck': 'Khรดng thแป phรขn tรญch cรบ phรกp mรฃ Python, vui lรฒng kiแปm tra ฤแปnh dแบกng mรฃ',
-
-'dashboard.indicator.error.addIndicatorFailed': 'Khรดng thแป thรชm chแป bรกo',
-
-'dashboard.indicator.error.runIndicatorFailed': 'Khรดng thแป chแบกy chแป bรกo',
-
-'dashboard.indicator.error.pleaseLogin': 'Vui lรฒng ฤฤng nhแบญp trฦฐแปc',
-
-'dashboard.indicator.error.loadDataFailed': 'Tแบฃi dแปฏ liแปu thแบฅt bแบกi',
-
-'dashboard.indicator.error.loadDataFailedDesc': 'Vui lรฒng kiแปm tra kแบฟt nแปi mแบกng cแปงa bแบกn',
-
-'dashboard.indicator.error.pythonEngineFailed': 'Khรดng thแป tแบฃi cรดng cแปฅ Python; chแปฉc nฤng chแป bรกo cรณ thแป khรดng khแบฃ dแปฅng',
-
-'dashboard.indicator.error.chartInitFailed': 'Khแปi tแบกo biแปu ฤแป thแบฅt bแบกi',
-
-'dashboard.indicator.warning.enterCode': 'Vui lรฒng nhแบญp mรฃ chแป bรกo trฦฐแปc',
-
-'dashboard.indicator.warning.pyodideLoadFailed': 'Khรดng thแป tแบฃi cรดng cแปฅ Python',
-
-'dashboard.indicator.warning.pyodideLoadFailedDesc': 'Tรญnh nฤng nร y khรดng khแบฃ dแปฅng trong khu vแปฑc hoแบทc mรดi trฦฐแปng mแบกng hiแปn tแบกi cแปงa bแบกn',
-
-'dashboard.indicator.warning.chartNotInitialized': 'Biแปu ฤแป chฦฐa ฤฦฐแปฃc khแปi tแบกo; Cรดng cแปฅ vแบฝ khรดng khแบฃ dแปฅng',
-
-'dashboard.indicator.success.runIndicator': 'Chแป bรกo ฤรฃ chแบกy thร nh cรดng',
-
-'dashboard.indicator.success.clearDrawings': 'ฤรฃ xรณa tแบฅt cแบฃ cรกc ฤฦฐแปng',
-
-'dashboard.indicator.sma': 'SMA (Trung bรฌnh ฤแปng ngแบฏn hแบกn)',
-
-'dashboard.indicator.ema': 'EMA (Trung bรฌnh ฤแปng hร m mลฉ)',
-
-'dashboard.indicator.rsi': 'RSI (Chแป sแป sแปฉc mแบกnh tฦฐฦกng ฤแปi)',
-
-'dashboard.indicator.macd': 'MACD',
-
-'dashboard.indicator.bb': 'Dแบฃi Bollinger (...Dแบฃi Bollinger)',
-
-'dashboard.indicator.atr': 'ATR (Chแป sแป phแบกm vi trung bรฌnh thแปฑc)',
-
-'dashboard.indicator.cci': 'CCI (Chแป sแป kรชnh hร ng hรณa)',
-
-'dashboard.indicator.williams': 'Williams %R (Chแป sแป Williams %R)',
-
-'dashboard.indicator.mfi': 'MFI (Chแป sแป dรฒng tiแปn)',
-
-'dashboard.indicator.adx': 'ADX (Chแป sแป hฦฐแปng trung bรฌnh)',
-
-'dashboard.indicator.obv': 'OBV (Chแป sแป khแปi lฦฐแปฃng cรขn bแบฑng)',
-
-'dashboard.indicator.adosc': 'ADOSC (Chแป bรกo dao ฤแปng tรญch lลฉy/phรขn phแปi)',
-
-'dashboard.indicator.ad': 'AD (Chแป bรกo ฤฦฐแปng tรญch lลฉy/phรขn phแปi)',
-
-'dashboard.indicator.kdj': 'KDJ (Chแป bรกo ngแบซu nhiรชn)',
-'dashboard.indicator.signal.buy': 'MUA',
-
-'dashboard.indicator.signal.sell': 'BรN',
-
-'dashboard.indicator.signal.supertrendBuy': 'Mua theo xu hฦฐแปng siรชu mแบกnh',
-
-'dashboard.indicator.signal.supertrendSell': 'Bรกn theo xu hฦฐแปng siรชu mแบกnh',
-
-'dashboard.indicator.chart.kline': 'ฤฦฐแปng K',
-
-'dashboard.indicator.chart.volume': 'Khแปi lฦฐแปฃng',
-
-'dashboard.indicator.chart.uptrend': 'Xu hฦฐแปng tฤng',
-
-'dashboard.indicator.chart.downtrend': 'Xu hฦฐแปng giแบฃm',
-
-'dashboard.indicator.tooltip.time': 'Thแปi gian',
-'dashboard.indicator.tooltip.open': 'Mแป',
-
-'dashboard.indicator.tooltip.close': 'ฤรณng',
-
-'dashboard.indicator.tooltip.high': 'Cao',
-
-'dashboard.indicator.tooltip.low': 'Thแบฅp',
-
-'dashboard.indicator.tooltip.volume': 'Khแปi lฦฐแปฃng',
-
-'dashboard.indicator.drawing.line': 'ฤoแบกn thแบณng',
-
-'dashboard.indicator.drawing.horizontalLine': 'ฤฦฐแปng ngang',
-
-'dashboard.indicator.drawing.verticalLine': 'ฤฦฐแปng thแบณng ฤแปฉng',
-
-'dashboard.indicator.drawing.ray': 'Tia',
-
-'dashboard.indicator.drawing.straightLine': 'ฤฦฐแปng thแบณng',
-
-'dashboard.indicator.drawing.parallelLine': 'ฤฦฐแปng song song',
-
-'dashboard.indicator.drawing.priceLine': 'Giรก',
-'dashboard.indicator.drawing.priceChannel': 'kรชnh giรก',
-
-'dashboard.indicator.drawing.fibonacciLine': 'ฤฦฐแปng Fibonacci',
-
-'dashboard.indicator.drawing.clearAll': 'xรณa tแบฅt cแบฃ cรกc ฤฦฐแปng ฤรฃ vแบฝ',
-
-'dashboard.indicator.market.USStock': 'cแป phiแบฟu Mแปน',
-
-'dashboard.indicator.market.Crypto': 'tiแปn ฤiแปn tแปญ',
-
-'dashboard.indicator.market.Forex': 'ngoแบกi hแปi',
-
-'dashboard.indicator.market.Futures': 'hแปฃp ฤแปng tฦฐฦกng lai',
-
-'dashboard.indicator.create': 'Tแบกo Indicator',
-
-'dashboard.indicator.editor.title': 'Tแบกo/Chแปnh sแปญa chแป bรกo',
-
-'dashboard.indicator.editor.name': 'Tรชn chแป bรกo',
-
-'dashboard.indicator.editor.nameRequired': 'Vui lรฒng nhแบญp tรชn chแป bรกo',
-
-'dashboard.indicator.editor.namePlaceholder': 'Vui lรฒng nhแบญp tรชn chแป bรกo',
-
-'dashboard.indicator.editor.description': 'Mรด tแบฃ chแป bรกo',
-
-'dashboard.indicator.editor.descriptionPlaceholder': 'Vui lรฒng nhแบญp mรด tแบฃ chแป bรกo (tรนy chแปn)',
-
-'dashboard.indicator.editor.code': 'Mรฃ Python',
-
-'dashboard.indicator.editor.codeRequired': 'Vui lรฒng nhแบญp mรฃ chแป bรกo',
-
-'dashboard.indicator.editor.codePlaceholder': 'Vui lรฒng nhแบญp mรฃ Python code',
-
-'dashboard.indicator.editor.run': 'Chแบกy',
-
-'dashboard.indicator.editor.runHint': 'Nhแบฅp vร o nรบt chแบกy ฤแป xem trฦฐแปc hiแปu แปฉng cแปงa chแป bรกo trรชn biแปu ฤแป nแบฟn',
-
-'dashboard.indicator.editor.guide': 'Hฦฐแปng dแบซn phรกt triแปn',
-
-'dashboard.indicator.editor.guideTitle': 'Hฦฐแปng dแบซn phรกt triแปn chแป bรกo Python',
-
-'dashboard.indicator.editor.save': 'Lฦฐu',
-
-'dashboard.indicator.editor.cancel': 'Hแปงy',
-
-'dashboard.indicator.editor.unnamed': 'Chแป bรกo chฦฐa ฤฦฐแปฃc ฤแบทt tรชn',
-
-'dashboard.indicator.editor.publishToCommunity': 'Chia sแบป lรชn cแปng ฤแปng',
-
-'dashboard.indicator.editor.publishToCommunityHint': 'Sau khi chia sแบป, ngฦฐแปi dรนng khรกc cรณ thแป xem vร sแปญ dแปฅng cรกc chแป sแป cแปงa bแบกn, trong cแปng ฤแปng',
-
-'dashboard.indicator.editor.indicatorType': 'Loแบกi chแป bรกo',
-
-'dashboard.indicator.editor.indicatorTypeRequired': 'Vui lรฒng chแปn loแบกi chแป bรกo',
-
-'dashboard.indicator.editor.indicatorTypePlaceholder': 'Vui lรฒng chแปn loแบกi chแป bรกo',
-
-'dashboard.indicator.editor.previewImage': 'Hรฌnh แบฃnh xem trฦฐแปc',
-
-'dashboard.indicator.editor.uploadImage': 'Tแบฃi lรชn hรฌnh แบฃnh',
-
-'dashboard.indicator.editor.previewImageHint': 'Kรญch thฦฐแปc ฤแป xuแบฅt: 800x400, kรญch thฦฐแปc khรดng vฦฐแปฃt quรก 2MB',
-
-'dashboard.indicator.editor.pricing': 'Giรก (QDT)',
-
-'dashboard.indicator.editor.pricingType.free': 'Miแป
n phรญ',
-
-'dashboard.indicator.editor.pricingType.permanent': 'Vฤฉnh viแป
n',
-
-'dashboard.indicator.editor.pricingType.monthly': 'Hร ng thรกng',
-
-'dashboard.indicator.editor.price': 'Giรก',
-
-'dashboard.indicator.editor.priceRequired': 'Vui lรฒng nhแบญp giรก',
-
-'dashboard.indicator.editor.pricePlaceholder': 'Vui lรฒng nhแบญp giรก',
-
-'dashboard.indicator.editor.pricingHint': 'Mแบทc dรน chแป bรกo miแป
n phรญ cรณ giรก 0, nแปn tแบฃng sแบฝ thฦฐแปng cho bแบกn dแปฑa trรชn viแปc sแปญ dแปฅng chแป bรกo vร tแปท lแป ฤรกnh giรก tรญch cแปฑc (QDT)',
-
-'dashboard.indicator.editor.aiGenerate': 'Tแบกo thรดng minh',
-
-'dashboard.indicator.editor.aiPromptPlaceholder': 'Hรฃy cho tรดi biแบฟt รฝ tฦฐแปng cแปงa bแบกn, vร Tรดi sแบฝ tแบกo mรฃ chแป bรกo Python cho bแบกn',
-
-'dashboard.indicator.editor.aiGenerateBtn': 'Mรฃ ฤฦฐแปฃc tแบกo bแปi AI',
-
-'dashboard.indicator.editor.aiPromptRequired': 'Vui lรฒng nhแบญp รฝ tฦฐแปng cแปงa bแบกn',
-
-'dashboard.indicator.editor.aiGenerateSuccess': 'Tแบกo mรฃ thร nh cรดng',
-
-'dashboard.indicator.editor.aiGenerateError': 'Tแบกo mรฃ thแบฅt bแบกi, vui lรฒng thแปญ lแบกi sau',
-
-'dashboard.indicator.backtest.title': 'Kiแปm thแปญ ngฦฐแปฃc chแป bรกo',
-
-'dashboard.indicator.backtest.config': 'Tham sแป kiแปm thแปญ ngฦฐแปฃc',
-
-'dashboard.indicator.backtest.startDate': 'Ngร y bแบฏt ฤแบงu',
-
-'dashboard.indicator.backtest.endDate': 'Ngร y kแบฟt thรบc Ngร y',
-
-'dashboard.indicator.backtest.selectStartDate': 'Chแปn ngร y bแบฏt ฤแบงu',
-
-'dashboard.indicator.backtest.selectEndDate': 'Chแปn ngร y kแบฟt thรบc',
-
-'dashboard.indicator.backtest.startDateRequired': 'Vui lรฒng chแปn ngร y bแบฏt ฤแบงu',
-
-'dashboard.indicator.backtest.endDateRequired': 'Vui lรฒng chแปn ngร y kแบฟt thรบc',
-
-'dashboard.indicator.backtest.initialCapital': 'Vแปn ban ฤแบงu',
-
-'dashboard.indicator.backtest.initialCapitalRequired': 'Vui lรฒng nhแบญp vแปn ban ฤแบงu',
-
-'dashboard.indicator.backtest.commission': 'Tแปท lแป hoa hแปng',
-
-'dashboard.indicator.backtest.leverage': 'Tแปท lแป ฤรฒn bแบฉy',
-
-'dashboard.indicator.backtest.tradeDirection': 'Hฦฐแปng giao dแปch Hฦฐแปng',
-
-'dashboard.indicator.backtest.longOnly': 'Mua',
-
-'dashboard.indicator.backtest.shortOnly': 'Bรกn',
-
-'dashboard.indicator.backtest.both': 'Cแบฃ hai chiแปu',
-'dashboard.indicator.backtest.run': 'Bแบฏt โโฤแบงu kiแปm thแปญ ngฦฐแปฃc',
-
-'dashboard.indicator.backtest.rerun': 'Chแบกy lแบกi kiแปm thแปญ ngฦฐแปฃc',
-
-'dashboard.indicator.backtest.close': 'ฤรณng',
-
-'dashboard.indicator.backtest.running': 'ฤang tiแบฟn hร nh kiแปm thแปญ ngฦฐแปฃc...',
-
-'dashboard.indicator.backtest.results': 'Kแบฟt quแบฃ kiแปm thแปญ ngฦฐแปฃc',
-
-'dashboard.indicator.backtest.totalReturn': 'Tแปng lแปฃi nhuแบญn',
-
-'dashboard.indicator.backtest.annualReturn': 'Lแปฃi nhuแบญn hร ng nฤm',
-
-'dashboard.indicator.backtest.maxDrawdown': 'Mแปฉc giแบฃm tแปi ฤa',
-
-'dashboard.indicator.backtest.sharpeRatio': 'Tแปท lแป Sharpe ratio',
-
-'dashboard.indicator.backtest.winRate': 'Tแปท lแป thแบฏng',
-
-'dashboard.indicator.backtest.profitFactor': 'Tแปท lแป lรฃi/lแป',
-
-'dashboard.indicator.backtest.totalTrades': 'Sแป lฦฐแปฃng giao dแปch',
-
-'dashboard.indicator.totalReturn': 'Tแปng lแปฃi nhuแบญn',
-
-'dashboard.indicator.annualReturn': 'Lแปฃi nhuแบญn hร ng nฤm',
-
-'dashboard.indicator.maxDrawdown': 'Mแปฉc giแบฃm tแปi ฤa',
-
-'dashboard.indicator.sharpeRatio': 'Tแปท lแป Sharpe',
-
-'dashboard.indicator.winRate': 'Tแปท lแป thแบฏng',
-
-'dashboard.indicator.profitFactor': 'Tแปท lแป lรฃi/lแป Tแปท lแป',
-
-'dashboard.indicator.totalTrades': 'Tแปng sแป giao dแปch',
-
-'dashboard.indicator.backtest.totalCommission': 'Tแปng phรญ hoa hแปng',
-
-'dashboard.indicator.backtest.equityCurve': 'ฤฦฐแปng cong vแปn chแปง sแป hแปฏu',
-
-'dashboard.indicator.backtest.strategy': 'Lแปฃi nhuแบญn cแปงa chแป bรกo',
-
-'dashboard.indicator.backtest.benchmark': 'Lแปฃi nhuแบญn chuแบฉn',
-
-'dashboard.indicator.backtest.tradeHistory': 'Lแปch sแปญ giao dแปch',
-
-'dashboard.indicator.backtest.tradeTime': 'Thแปi gian',
-
-'dashboard.indicator.backtest.tradeType': 'Loแบกi giao dแปch',
-
-'dashboard.indicator.backtest.buy': 'Mua',
-
-'dashboard.indicator.backtest.sell': 'Bรกn',
-
-'dashboard.indicator.backtest.liquidation': 'Tร i khoแบฃn ฤรฃ bแป thanh lรฝ',
-
-'dashboard.indicator.backtest.openLong': 'Mแป lแปnh mua',
-
-'dashboard.indicator.backtest.closeLong': 'ฤรณng lแปnh mua',
-
-'dashboard.indicator.backtest.closeLongStop': 'ฤรณng lแปnh mua (Cแบฏt lแป)',
-
-'dashboard.indicator.backtest.closeLongProfit': 'ฤรณng lแปnh mua (Chแปt lแปi)',
-
-'dashboard.indicator.backtest.addLong': 'Thรชm lแปnh mua',
-
-'dashboard.indicator.backtest.openShort': 'Mแป lแปnh bรกn',
-
-'dashboard.indicator.backtest.closeShort': 'ฤรณng lแปnh bรกn',
-
-'dashboard.indicator.backtest.closeShortStop': 'ฤรณng lแปnh bรกn (Dแปซng lแป) Lแป',
-
-'dashboard.indicator.backtest.closeShortProfit': 'ฤรณng vแป thแบฟ bรกn khแปng (chแปt lแปi)',
-
-'dashboard.indicator.backtest.addShort': 'Thรชm vแป thแบฟ bรกn khแปng',
-
-'dashboard.indicator.backtest.price': 'Giรก',
-
-'dashboard.indicator.backtest.amount': 'Sแป lฦฐแปฃng',
-
-'dashboard.indicator.backtest.balance': 'Sแป dฦฐ tร i khoแบฃn',
-
-'dashboard.indicator.backtest.profit': 'Lรฃi/Lแป',
-
-'dashboard.indicator.backtest.success': 'Kiแปm thแปญ ngฦฐแปฃc thร nh cรดng',
-
-'dashboard.indicator.backtest.failed': 'Kiแปm thแปญ ngฦฐแปฃc thแบฅt bแบกi, vui lรฒng thแปญ lแบกi sau',
-
-'dashboard.indicator.backtest.noIndicatorCode': 'Khรดng cรณ mรฃ nร o ฤแป kiแปm thแปญ ngฦฐแปฃc nร y',
-'dashboard.indicator.backtest.noSymbol': 'Vui lรฒng chแปn cรดng cแปฅ giao dแปch trฦฐแปc',
-
-'dashboard.indicator.backtest.dateRangeExceeded': 'Thแปi gian kiแปm thแปญ ngฦฐแปฃc vฦฐแปฃt quรก giแปi hแบกn: chแป cรณ thแป kiแปm thแปญ ngฦฐแปฃc trong khoแบฃng thแปi gian {timeframe} lร {maxRange}',
-'dashboard.indicator.backtest.dateRangeExceededDays': 'Backtest range exceeds limit: {timeframe} max {maxRange} ({maxDays} days)',
-'dashboard.indicator.backtest.hint.entryPctMax': 'Max entry: {maxPct}% (reserve budget for future scale-ins)',
-'dashboard.indicator.backtest.metaLine': 'Symbol: {symbol} | Market: {market} | Timeframe: {timeframe}',
-'dashboard.indicator.backtest.savedRunId': 'Backtest saved. Run ID: {id}',
-'dashboard.indicator.backtest.prev': 'Previous',
-'dashboard.indicator.backtest.next': 'Next',
-'dashboard.indicator.backtest.steps.strategy.title': 'Strategy',
-'dashboard.indicator.backtest.steps.strategy.desc': 'Position sizing & risk controls',
-'dashboard.indicator.backtest.steps.trading.title': 'Trading settings',
-'dashboard.indicator.backtest.steps.trading.desc': 'Time range, capital, fees, leverage',
-'dashboard.indicator.backtest.steps.results.title': 'Results',
-'dashboard.indicator.backtest.steps.results.desc': 'Backtest output',
-'dashboard.indicator.backtest.panel.risk': 'Risk management (SL/TP/Trailing)',
-'dashboard.indicator.backtest.panel.scale': 'Scale in / DCA (trend & mean-reversion)',
-'dashboard.indicator.backtest.panel.reduce': 'Reduce position (trend & adverse)',
-'dashboard.indicator.backtest.panel.position': 'Position sizing',
-'dashboard.indicator.backtest.field.stopLossPct': 'Stop Loss (%)',
-'dashboard.indicator.backtest.field.takeProfitPct': 'Take Profit (%)',
-'dashboard.indicator.backtest.field.trailingEnabled': 'Trailing stop / take profit',
-'dashboard.indicator.backtest.field.trailingStopPct': 'Trailing drawdown (%)',
-'dashboard.indicator.backtest.field.trailingActivationPct': 'Trailing activation (%)',
-'dashboard.indicator.backtest.field.slippage': 'Slippage (%)',
-'dashboard.indicator.backtest.field.trendAddEnabled': 'Trend-following scale-in',
-'dashboard.indicator.backtest.field.dcaAddEnabled': 'Mean-reversion DCA',
-'dashboard.indicator.backtest.field.trendAddStepPct': 'Scale-in trigger (%)',
-'dashboard.indicator.backtest.field.dcaAddStepPct': 'DCA trigger (%)',
-'dashboard.indicator.backtest.field.trendAddSizePct': 'Scale-in size (% of capital)',
-'dashboard.indicator.backtest.field.dcaAddSizePct': 'DCA size (% of capital)',
-'dashboard.indicator.backtest.field.trendAddMaxTimes': 'Max scale-in times',
-'dashboard.indicator.backtest.field.dcaAddMaxTimes': 'Max DCA times',
-'dashboard.indicator.backtest.field.trendReduceEnabled': 'Trend reduce',
-'dashboard.indicator.backtest.field.adverseReduceEnabled': 'Adverse reduce',
-'dashboard.indicator.backtest.field.trendReduceStepPct': 'Trend trigger (%)',
-'dashboard.indicator.backtest.field.adverseReduceStepPct': 'Adverse trigger (%)',
-'dashboard.indicator.backtest.field.trendReduceSizePct': 'Reduce size (% of position)',
-'dashboard.indicator.backtest.field.adverseReduceSizePct': 'Adverse reduce size (% of position)',
-'dashboard.indicator.backtest.field.trendReduceMaxTimes': 'Max trend reduce times',
-'dashboard.indicator.backtest.field.adverseReduceMaxTimes': 'Max adverse reduce times',
-'dashboard.indicator.backtest.field.entryPct': 'Entry size (% of capital)',
-'dashboard.indicator.backtest.field.minOrderPct': 'Min order size (% of capital) (optional)',
-'dashboard.indicator.backtest.closeLongTrailing': 'Close Long (Trailing)',
-'dashboard.indicator.backtest.reduceLong': 'Reduce Long',
-'dashboard.indicator.backtest.closeShortTrailing': 'Close Short (Trailing)',
-'dashboard.indicator.backtest.reduceShort': 'Reduce Short',
-
-'dashboard.docs.title': 'Trung tรขm Tร i liแปu',
-
-'dashboard.docs.search.placeholder': 'Tรฌm kiแบฟm Tร i liแปu...',
-
-'dashboard.docs.category.all': 'Tแบฅt cแบฃ',
-
-'dashboard.docs.category.guide': 'Hฦฐแปng dแบซn dร nh cho nhร phรกt triแปn',
-
-'dashboard.docs.category.api': 'Tร i liแปu API',
-
-'dashboard.docs.category.tutorial': 'Hฦฐแปng dแบซn',
-
-'dashboard.docs.category.faq': 'Cรขu hแปi thฦฐแปng gแบทp Cรขu hแปi',
-
-'dashboard.docs.featured.title': 'Tร i liแปu ฤฦฐแปฃc ฤแป xuแบฅt',
-
-'dashboard.docs.featured.tag': 'ฤฦฐแปฃc ฤแป xuแบฅt',
-
-'dashboard.docs.list.views': 'Lฦฐแปฃt xem',
-
-'dashboard.docs.list.author': 'Tรกc giแบฃ',
-
-'dashboard.docs.list.empty': 'Khรดng cรณ tร i liแปu nร o',
-
-'dashboard.docs.list.backToAll': 'Trแบฃ vแป tแบฅt cแบฃ tร i liแปu',
-
-'dashboard.docs.list.total': 'Tแปng sแป {count} tร i liแปu',
-
-'dashboard.docs.detail.back': 'Trแบฃ vแป danh sรกch tร i liแปu',
-
-'dashboard.docs.detail.updatedAt': 'Cแบญp nhแบญt lรบc',
-
-'dashboard.docs.detail.related': 'Tร i liแปu liรชn quan',
-
-'dashboard.docs.detail.notFound': 'Khรดng tรฌm thแบฅy tร i liแปu tแปn tแบกi',
-
-'dashboard.docs.detail.error': 'Tร i liแปu khรดng tแปn tแบกi hoแบทc ฤรฃ bแป xรณa',
-
-'dashboard.docs.search.result': 'Kแบฟt quแบฃ tรฌm kiแบฟm',
-
-'dashboard.docs.search.keyword': 'Tแปซ khรณa',
-
-'community.filter.indicatorType': 'Loแบกi chแป bรกo',
-
-'community.filter.all': 'Tแบฅt cแบฃ',
-
-'community.filter.other': 'Cรกc tรนy chแปn khรกc',
-
-'community.filter.pricing': 'Loแบกi giรก',
-
-'community.filter.allPricing': 'Tแบฅt cแบฃ giรก',
-
-'community.filter.sortBy': 'Phฦฐฦกng thแปฉc sแบฏp xแบฟp',
-
-'community.filter.search': 'Tรฌm kiแบฟm',
-
-'community.filter.searchPlaceholder': 'Tรชn chแป bรกo tรฌm kiแบฟm',
-
-'community.indicatorType.trend': 'ฤแปnh hฦฐแปng theo xu hฦฐแปng',
-
-'community.indicatorType.momentum': 'ฤแปng lฦฐแปฃng',
-
-'community.indicatorType.volatility': 'Biแบฟn ฤแปng',
-
-'community.indicatorType.volume': 'Khแปi lฦฐแปฃng',
-
-'community.indicatorType.custom': 'Tรนy chแปnh',
-
-'community.pricing.free': 'Miแป
n phรญ',
-
-'community.pricing.paid': 'Trแบฃ phรญ',
-
-'community.sort.downloads': 'Lฦฐแปฃt tแบฃi xuแปng',
-
-'community.sort.rating': 'Xแบฟp hแบกng',
-
-'community.sort.newest': 'Phiรชn bแบฃn mแปi nhแบฅt',
-
-'community.pagination.total': 'Tแปng sแป {total} chแป bรกo',
-
-'community.noDescription': 'Khรดng cรณ mรด tแบฃ',
-
-'community.detail.type': 'Loแบกi',
-
-'community.detail.pricing': 'Giรก cแบฃ',
-
-'community.detail.rating': 'Xแบฟp hแบกng',
-
-'community.detail.downloads': 'Lฦฐแปฃt tแบฃi xuแปng',
-
-'community.detail.author': 'Tรกc giแบฃ',
-
-'community.detail.description': 'Mรด tแบฃ',
-
-'community.detail.detailContent': 'Mรด tแบฃ chi tiแบฟt',
-
-'community.detail.backtestStats': 'Thแปng kรช kiแปm thแปญ ngฦฐแปฃc',
-
-'community.action.purchase': 'Sแป liแปu mua hร ng',
-
-'community.action.addToMyIndicators': 'Thรชm vร o chแป bรกo cแปงa tรดi',
-
-'community.action.favorite': 'Yรชu thรญch',
-
-'community.action.unfavorite': 'Bแป yรชu thรญch',
-
-'community.action.buyNow': 'Mua ngay Ngay bรขy giแป',
-
-'community.action.renew': 'Gia hแบกn',
-
-'community.purchase.price': 'Giรก',
-
-'community.purchase.permanent': 'Vฤฉnh viแป
n',
-
-'community.purchase.monthly': 'Hร ng thรกng',
-
-'community.purchase.confirmBuy': 'Xรกc nhแบญn mua chแป sแป nร y ({price} QDT)?',
-
-'community.purchase.confirmRenew': 'Xรกc nhแบญn gia hแบกn chแป sแป nร y ({price} QDT/thรกng)?',
-
-'community.purchase.confirmFree': 'Xรกc nhแบญn thรชm chแป sแป miแป
n phรญ nร y?',
-'community.purchase.confirmTitle': 'Xรกc nhแบญn thao tรกc',
-
-'community.purchase.owned': 'Bแบกn ฤรฃ mua chแป sแป nร y (cรณ hiแปu lแปฑc vฤฉnh viแป
n)',
-
-'community.purchase.ownIndicator': 'ฤรขy lร chแป sแป bแบกn ฤรฃ cรดng bแป',
-
-'community.purchase.expired': 'Gรณi ฤฤng kรฝ cแปงa bแบกn ฤรฃ hแบฟt hแบกn',
-
-'community.purchase.expiresOn': 'Ngร y hแบฟt hแบกn: {date}',
-
-'community.tabs.detail': 'Chi tiแบฟt chแป sแป',
-
-'community.tabs.backtest': 'Dแปฏ liแปu kiแปm thแปญ ngฦฐแปฃc',
-
-'community.tabs.ratings': 'Xแบฟp hแบกng ngฦฐแปi dรนng',
-
-'community.rating.myRating': 'Xแบฟp hแบกng cแปงa tรดi',
-
-'community.rating.stars': '{count} Stars',
-
-'community.rating.commentPlaceholder': 'Chia sแบป trแบฃi nghiแปm ngฦฐแปi dรนng cแปงa bแบกn...',
-
-'community.rating.submit': 'Gแปญi ฤรกnh giรก',
-
-'community.rating.modify': 'Sแปญa ฤแปi',
-
-'community.rating.saveModify': 'Lฦฐu thay ฤแปi',
-
-'community.rating.cancel': 'Hแปงy',
-
-'community.rating.selectRating': 'Vui lรฒng chแปn ฤรกnh giรก',
-
-'community.rating.success': 'ฤรกnh giรก thร nh cรดng',
-
-'community.rating.modifySuccess': 'ฤรกnh giรก ฤฦฐแปฃc sแปญa ฤแปi thร nh cรดng',
-
-'community.rating.failed': 'ฤรกnh giรก thแบฅt bแบกi',
-
-'community.rating.noRatings': 'Chฦฐa cรณ ฤรกnh giรก nร o',
-
-'community.backtest.note': 'Dแปฏ liแปu trรชn lร kแบฟt quแบฃ kiแปm thแปญ ngฦฐแปฃc trong quรก khแปฉ, chแป ฤแป tham khแบฃo vร khรดng ฤแบกi diแปn cho hiแปu suแบฅt trong tฦฐฦกng lai',
-'community.backtest.noData': 'Khรดng cรณ dแปฏ liแปu kiแปm thแปญ ngฦฐแปฃc',
-
-'community.backtest.uploadHint': 'Tรกc giแบฃ chฦฐa tแบฃi lรชn dแปฏ liแปu kiแปm thแปญ ngฦฐแปฃc',
-
-'community.message.loadFailed': 'Khรดng thแป tแบฃi danh sรกch chแป bรกo',
-
-'community.message.purchaseProcessing': 'ฤang xแปญ lรฝ yรชu cแบงu mua hร ng...',
-
-'community.message.downloadSuccess': 'Chแป bรกo ฤรฃ ฤฦฐแปฃc thรชm vร o danh sรกch chแป bรกo cแปงa tรดi',
-
-'community.message.favoriteSuccess': 'ฤรฃ thรชm vร o mแปฅc yรชu thรญch thร nh cรดng',
-
-'community.message.unfavoriteSuccess': 'ฤรฃ xรณa khแปi mแปฅc yรชu thรญch thร nh cรดng',
-
-'community.message.operationSuccess': 'Thao tรกc thร nh cรดng',
-
-'community.message.operationFailed': 'Thao tรกc thแบฅt bแบกi thแบฅt bแบกi',
-'community.banner.readOnly': 'Chแป xem',
-'community.banner.loginHint': 'ฤแป ฤฤng nhแบญp hoแบทc ฤฤng kรฝ, vui lรฒng nhแบฅp vร o nรบt ฤแป chuyแปn ฤแบฟn trang ฤแปc lแบญp nhแบฑm trรกnh cรกc vแบฅn ฤแป CSRF',
-'community.banner.jumpButton': 'ฤi ฤแบฟn ฤฤng nhแบญp/ฤฤng kรฝ',
-
-'dashboard.totalEquity': 'Tแปng vแปn chแปง sแป hแปฏu',
-
-'dashboard.totalPnL': 'Tแปng lแปฃi nhuแบญn/thua lแป',
-
-'dashboard.aiStrategies': 'Chiแบฟn lฦฐแปฃc AI',
-
-'dashboard.indicatorStrategies': 'Chiแบฟn lฦฐแปฃc chแป bรกo',
-
-'dashboard.running': 'ฤang chแบกy',
-
-'dashboard.pnlHistory': 'Lแปch sแปญ lแปฃi nhuแบญn/thua lแป',
-
-'dashboard.strategyPerformance': 'Tแปท lแป lแปฃi nhuแบญn/thua lแป cแปงa chiแบฟn lฦฐแปฃc',
-
-'dashboard.recentTrades': 'Cรกc giao dแปch gแบงn ฤรขy',
-
-'dashboard.currentPositions': 'Vแป thแบฟ hiแปn tแบกi',
-
-'dashboard.table.time': 'Thแปi gian',
-
-'dashboard.table.strategy': 'Chiแบฟn lฦฐแปฃc Name',
-
-'dashboard.table.symbol': 'Tร i sแบฃn cฦก sแป',
-
-'dashboard.table.type': 'Loแบกi',
-
-'dashboard.table.side': 'Hฦฐแปng',
-
-'dashboard.table.size': 'Sแป lฦฐแปฃng',
-
-'dashboard.table.entryPrice': 'Giรก mแป cแปญa trung bรฌnh',
-
-'dashboard.table.price': 'Giรก',
-
-'dashboard.table.amount': 'Sแป lฦฐแปฃng',
-
-'dashboard.table.profit': 'Lแปฃi nhuแบญn/Thua lแป',
-
-'dashboard.pendingOrders': 'Lแปch sแปญ thแปฑc hiแปn lแปnh',
-
-'dashboard.totalOrders': 'Tแปng {total} lแปnh',
-
-'dashboard.viewError': 'Xem lแปi',
-
-'dashboard.filled': 'ฤรฃ khแปp',
-
-'dashboard.orderTable.time': 'Thแปi gian tแบกo',
-
-'dashboard.orderTable.strategy': 'Chiแบฟn lฦฐแปฃc',
-
-'dashboard.orderTable.symbol': 'Cแบทp giao dแปch',
-
-'dashboard.orderTable.signalType': 'Loแบกi tรญn hiแปu',
-
-'dashboard.orderTable.amount': 'Sแป lฦฐแปฃng',
-
-'dashboard.orderTable.price': 'Giรก khแปp',
-
-'dashboard.orderTable.status': 'Trแบกng thรกi',
-
-'dashboard.orderTable.executedAt': 'Thแปi gian thแปฑc hiแปn',
-
-'dashboard.signalType.openLong': 'Mแป Long',
-
-'dashboard.signalType.openShort': 'Mแป Short',
-
-'dashboard.signalType.closeLong': 'ฤรณng Long',
-
-'dashboard.signalType.closeShort': 'ฤรณng Short',
-
-'dashboard.signalType.addLong': 'Thรชm Long',
-
-'dashboard.signalType.addShort': 'Thรชm Short',
-
-'dashboard.status.pending': 'ฤang chแป',
-
-'dashboard.status.processing': 'ฤang xแปญ lรฝ',
-
-'dashboard.status.completed': 'Hoร n thร nh',
-
-'dashboard.status.failed': 'Thแบฅt bแบกi',
-
-'dashboard.status.cancelled': 'ฤรฃ hแปงy',
-
-'dashboard.table.pnl': 'Lแปฃi nhuแบญn/Thua lแป chฦฐa thแปฑc hiแปn',
-
-'form.basic-form.basic.title': 'Biแปu mแบซu cฦก bแบฃn',
-
-'form.basic-form.basic.description': 'Cรกc trang biแปu mแบซu ฤฦฐแปฃc sแปญ dแปฅng ฤแป thu thแบญp hoแบทc xรกc minh thรดng tin tแปซ ngฦฐแปi dรนng. Biแปu mแบซu cฦก bแบฃn thฦฐแปng phแป biแบฟn trong cรกc trฦฐแปng hแปฃp cรณ รญt mแปฅc dแปฏ liแปu.',
-
-'form.basic-form.title.label': 'Tiรชu ฤแป',
-
-'form.basic-form.title.placeholder': 'ฤแบทt tรชn cho mแปฅc tiรชu',
-
-'form.basic-form.title.required': 'Vui lรฒng nhแบญp tiรชu ฤแป',
-
-'form.basic-form.date.label': 'Ngร y bแบฏt ฤแบงu vร ngร y kแบฟt thรบc',
-
-'form.basic-form.placeholder.start': 'Ngร y bแบฏt ฤแบงu',
-
-'form.basic-form.placeholder.end': 'Ngร y kแบฟt thรบc',
-
-'form.basic-form.date.required': 'Vui lรฒng chแปn ngร y bแบฏt ฤแบงu vร ngร y kแบฟt thรบc',
-
-'form.basic-form.goal.label': 'Mรด tแบฃ mแปฅc tiรชu',
-
-'form.basic-form.goal.placeholder': 'Vui lรฒng nhแบญp mแปฅc tiรชu cรดng viแปc theo tแปซng giai ฤoแบกn',
-
-'form.basic-form.goal.required': 'Vui lรฒng nhแบญp mแปฅc tiรชu Mรด tแบฃ',
-'form.basic-form.standard.label': 'Sแป liแปu',
-
-'form.basic-form.standard.placeholder': 'Vui lรฒng nhแบญp sแป liแปu',
-
-'form.basic-form.standard.required': 'Vui lรฒng nhแบญp sแป liแปu',
-
-'form.basic-form.client.label': 'Khรกch hร ng',
-
-'form.basic-form.client.required': 'Vui lรฒng mรด tแบฃ khรกch hร ng bแบกn ฤang phแปฅc vแปฅ',
-
-'form.basic-form.label.tooltip': 'ฤแปi tฦฐแปฃng mแปฅc tiรชu',
-
-'form.basic-form.client.placeholder': 'Vui lรฒng mรด tแบฃ khรกch hร ng bแบกn ฤang phแปฅc vแปฅ; khรกch hร ng nแปi bแป cรณ thแป trแปฑc tiแบฟp lร @tรชn/ID nhรขn viรชn',
-
-'form.basic-form.invites.label': 'Ngฦฐแปi mแปi',
-
-'form.basic-form.invites.placeholder': 'Vui lรฒng trแปฑc tiแบฟp lร @tรชn/ID nhรขn viรชn; Cรณ thแป mแปi tแปi ฤa 5 ngฦฐแปi',
-'form.basic-form.weight.label': 'Trแปng lฦฐแปฃng',
-
-'form.basic-form.weight.placeholder': 'Vui lรฒng nhแบญp',
-
-'form.basic-form.public.label': 'Mแปฅc tiรชu cรดng khai',
-
-'form.basic-form.label.help': 'Khรกch hร ng vร ngฦฐแปi ฤรกnh giรก ฤฦฐแปฃc chia sแบป theo mแบทc ฤแปnh',
-
-'form.basic-form.radio.public': 'Cรดng khai',
-
-'form.basic-form.radio.partially-public': 'Cรดng khai mแปt phแบงn',
-
-'form.basic-form.radio.private': 'Khรดng cรดng khai',
-
-'form.basic-form.publicUsers.placeholder': 'Cรดng khai cho',
-
-'form.basic-form.option.A': 'ฤแปng nghiแปp 1',
-
-'form.basic-form.option.B': 'ฤแปng nghiแปp 2',
-
-'form.basic-form.option.C': 'ฤแปng nghiแปp sแป Ba',
-
-'form.basic-form.email.required': 'Vui lรฒng nhแบญp ฤแปa chแป email cแปงa bแบกn!',
-
-'form.basic-form.email.wrong-format': 'ฤแปnh dแบกng ฤแปa chแป email khรดng chรญnh xรกc!',
-
-'form.basic-form.userName.required': 'Vui lรฒng nhแบญp tรชn ngฦฐแปi dรนng cแปงa bแบกn!',
-
-'form.basic-form.password.required': 'Vui lรฒng nhแบญp mแบญt khแบฉu cแปงa bแบกn!',
-
-'form.basic-form.password.twice': 'Hai mแบญt khแบฉu khรดng khแปp!',
-
-'form.basic-form.strength.msg': 'Vui lรฒng nhแบญp รญt nhแบฅt 6 kรฝ tแปฑ. Vui lรฒng khรดng sแปญ dแปฅng mแบญt khแบฉu dแป
ฤoรกn.',
-
-'form.basic-form.strength.strong': 'ฤแป mแบกnh: Mแบกnh',
-
-'form.basic-form.strength.medium': 'ฤแป mแบกnh: Trung bรฌnh',
-
-'form.basic-form.strength.short': 'ฤแป mแบกnh: Quรก ngแบฏn',
-
-'form.basic-form.confirm-password.required': 'Vui lรฒng xรกc nhแบญn mแบญt khแบฉu!',
-
-'form.basic-form.phone-number.required': 'Vui lรฒng nhแบญp sแป ฤiแปn thoแบกi cแปงa bแบกn!',
-
-'form.basic-form.phone-number.wrong-format': 'ฤแปnh dแบกng sแป ฤiแปn thoแบกi khรดng chรญnh xรกc!',
-
-'form.basic-form.verification-code.required': 'Vui lรฒng nhแบญp mรฃ xรกc minh!',
-
-'form.basic-form.form.get-captcha': 'Lแบฅy mรฃ xรกc minh mรฃ',
-
-'form.basic-form.captcha.second': 'giรขy',
-
-'form.basic-form.form.optional': '(Tรนy chแปn)',
-
-'form.basic-form.form.submit': 'Gแปญi',
-
-'form.basic-form.form.save': 'Lฦฐu',
-
-'form.basic-form.email.placeholder': 'Email',
-
-'form.basic-form.password.placeholder': 'Mแบญt khแบฉu phแบฃi cรณ รญt nhแบฅt 6 kรฝ tแปฑ, phรขn biแปt chแปฏ hoa chแปฏ thฦฐแปng',
-
-'form.basic-form.confirm-password.placeholder': 'Xรกc nhแบญn mแบญt khแบฉu',
-
-'form.basic-form.phone-number.placeholder': 'Sแป ฤiแปn thoแบกi',
-
-'form.basic-form.verification-code.placeholder': 'Mรฃ xรกc minh',
-
-'result.success.title': 'ฤรฃ gแปญi Thร nh cรดng',
-
-'result.success.description': 'Trang kแบฟt quแบฃ nแปp bร i ฤฦฐแปฃc sแปญ dแปฅng ฤแป cung cแบฅp phแบฃn hแปi vแป kแบฟt quแบฃ xแปญ lรฝ cแปงa mแปt loแบกt cรกc tรกc vแปฅ vแบญn hร nh. Nแบฟu chแป lร mแปt thao tรกc ฤฦกn giแบฃn, thรดng bรกo Tin nhแบฏn toร n cแปฅc lร ฤแปง. Vรนng vฤn bแบฃn nร y cรณ thแป hiแปn thแป cรกc giแบฃi thรญch bแป sung ฤฦกn giแบฃn. Nแบฟu cแบงn hiแปn thแป nแปi dung nhฦฐ mแปt "tร i liแปu", vรนng mร u xรกm bรชn dฦฐแปi cรณ thแป hiแปn thแป nแปi dung phแปฉc tแบกp hฦกn.',
-
-'result.success.operate-title': 'Tรชn dแปฑ รกn',
-
-'result.success.operate-id': 'ID dแปฑ รกn',
-
-'result.success.principal': 'Ngฦฐแปi phแปฅ trรกch',
-
-'result.success.operate-time': 'Thแปi gian hiแปu quแบฃ',
-
-'result.success.step1-title': 'Tแบกo dแปฑ รกn',
-
-'result.success.step1-operator': 'Qu Lili',
-
-'result.success.step2-title': 'ฤรกnh giรก ban ฤแบงu cแปงa phรฒng ban',
-
-'result.success.step2-operator': 'Zhou Maomao',
-
-'result.success.step2-extra': 'Theo dรตi',
-
-'result.success.step3-title': 'ฤรกnh giรก tร i chรญnh',
-
-'result.success.step4-title': 'Hoร n thร nh',
-
-'result.success.btn-return': 'Quay lแบกi danh sรกch',
-
-'result.success.btn-project': 'Xem dแปฑ รกn',
-
-'result.success.btn-print': 'In',
-
-'result.fail.error.title': 'Gแปญi bร i khรดng thร nh cรดng',
-
-'result.fail.error.description': 'Vui lรฒng kiแปm tra vร chแปnh sแปญa thรดng tin sau trฦฐแปc khi gแปญi lแบกi.',
-
-'result.fail.error.hint-title': 'Nแปi dung bแบกn ฤรฃ gแปญi cรณ cรกc lแปi sau:',
-
-'result.fail.error.hint-text1': 'Tร i khoแบฃn cแปงa bแบกn ฤรฃ bแป ฤรณng bฤng',
-
-'result.fail.error.hint-btn1': 'Mแป khรณa ngay lแบญp tแปฉc',
-
-'result.fail.error.hint-text2': 'Tร i khoแบฃn cแปงa bแบกn chฦฐa ฤแปง ฤiแปu kiแปn ฤแป ฤฤng kรฝ',
-
-'result.fail.error.hint-btn2': 'Nรขng cแบฅp ngay lแบญp tแปฉc',
-
-'result.fail.error.btn-text': 'Quay lแบกi chแปnh sแปญa',
-
-'account.settings.menuMap.custom': 'Cรก nhรขn hรณa',
-
-'account.settings.menuMap.binding': 'Liรชn kแบฟt tร i khoแบฃn',
-
-'account.settings.basic.avatar': 'Avatar',
-
-'account.settings.basic.change-avatar': 'Thay ฤแปi แบฃnh ฤแบกi diแปn',
-
-'account.settings.basic.email': 'ฤแปa chแป email',
-
-'account.settings.basic.email-message': 'Vui lรฒng nhแบญp ฤแปa chแป email cแปงa bแบกn!',
-
-'account.settings.basic.nickname': 'Biแปt danh',
-
-'account.settings.basic.nickname-message': 'Vui lรฒng nhแบญp biแปt danh cแปงa bแบกn!',
-
-'account.settings.basic.profile': 'Hแป sฦก',
-
-'account.settings.basic.profile-message': 'Vui lรฒng nhแบญp thรดng tin hแป sฦก cแปงa bแบกn!',
-
-'account.settings.basic.profile-placeholder': 'Hแป sฦก',
-
-'account.settings.basic.country': 'Quแปc gia/Vรนng',
-
-'account.settings.basic.country-message': 'Vui lรฒng nhแบญp quแปc gia cแปงa bแบกn hoแบทc khu vแปฑc!',
-
-'account.settings.basic.geographic': 'Tแปnh vร Thร nh phแป',
-
-'account.settings.basic.geographic-message': 'Vui lรฒng nhแบญp tแปnh vร thร nh phแป cแปงa bแบกn!',
-
-'account.settings.basic.address': 'ฤแปa chแป ฤฦฐแปng phแป',
-
-'account.settings.basic.address-message': 'Vui lรฒng nhแบญp ฤแปa chแป ฤฦฐแปng phแป cแปงa bแบกn!',
-
-'account.settings.basic.phone': 'Sแป ฤiแปn thoแบกi',
-
-'account.settings.basic.phone-message': 'Vui lรฒng nhแบญp sแป ฤiแปn thoแบกi cแปงa bแบกn!',
-
-'account.settings.basic.update': 'Cแบญp nhแบญt thรดng tin cฦก bแบฃn',
-
-'account.settings.basic.update.success': 'ฤรฃ cแบญp nhแบญt thรดng tin cฦก bแบฃn thร nh cรดng',
-
-'account.settings.security.strong': 'Mแบกnh',
-
-'account.settings.security.medium': 'Trung bรฌnh',
-
-'account.settings.security.weak': 'Yแบฟu',
-
-'account.settings.security.password': 'Mแบญt khแบฉu tร i khoแบฃn',
-
-'account.settings.security.password-description': 'ฤแป mแบกnh mแบญt khแบฉu hiแปn tแบกi:',
-
-'account.settings.security.phone': 'Sแป ฤiแปn thoแบกi bแบฃo mแบญt',
-
-'account.settings.security.phone-description': 'Sแป ฤiแปn thoแบกi liรชn kแบฟt:',
-
-'account.settings.security.question': 'Cรขu hแปi bแบฃo mแบญt',
-
-'account.settings.security.question-description': 'Chฦฐa thiแบฟt lแบญp cรขu hแปi bแบฃo mแบญt nร o. Cรขu hแปi bแบฃo mแบญt cรณ thแป bแบฃo vแป hiแปu quแบฃ tรญnh bแบฃo mแบญt cแปงa tร i khoแบฃn',
-
-'account.settings.security.email': 'Email liรชn kแบฟt',
-
-'account.settings.security.email-description': 'Sแป email liรชn kแบฟt:',
-
-'account.settings.security.mfa': 'Thiแบฟt bแป MFA',
-
-'account.settings.security.mfa-description': 'Thiแบฟt bแป MFA chฦฐa liรชn kแบฟt. Viแปc liรชn kแบฟt sแบฝ cho phรฉp xรกc nhแบญn thแปฉ cแบฅp',
-
-'account.settings.security.modify': 'Sแปญa ฤแปi',
-
-'account.settings.security.set': 'Cร i ฤแบทt',
-
-'account.settings.security.bind': 'Liรชn kแบฟt',
-
-'account.settings.binding.taobao': 'Liรชn kแบฟt Taobao',
-
-'account.settings.binding.taobao-description': 'Hiแปn chฦฐa ฤฦฐแปฃc liรชn kแบฟt vแปi tร i khoแบฃn Taobao',
-
-'account.settings.binding.alipay': 'Liรชn kแบฟt Alipay',
-
-'account.settings.binding.alipay-description': 'Hiแปn chฦฐa ฤฦฐแปฃc liรชn kแบฟt vแปi tร i khoแบฃn Alipay',
-
-'account.settings.binding.dingding': 'Liรชn kแบฟt DingTalk',
-
-'account.settings.binding.dingding-description': 'Hiแปn chฦฐa ฤฦฐแปฃc liรชn kแบฟt vแปi tร i khoแบฃn DingTalk',
-
-'account.settings.binding.bind': 'Liรชn kแบฟt',
-
-'account.settings.notification.password': 'Mแบญt khแบฉu tร i khoแบฃn',
-
-'account.settings.notification.password-description': 'Tin nhแบฏn tแปซ ngฦฐแปi dรนng khรกc sแบฝ ฤฦฐแปฃc gแปญi qua thรดng bรกo trong แปฉng dแปฅng',
-
-'account.settings.notification.messages': 'Tin nhแบฏn hแป thแปng',
-
-'account.settings.notification.messages-description': 'Tin nhแบฏn hแป thแปng sแบฝ ฤฦฐแปฃc gแปญi qua thรดng bรกo trong แปฉng dแปฅng',
-
-'account.settings.notification.todo': 'Viแปc cแบงn lร m',
-
-'account.settings.notification.todo-description': 'Viแปc cแบงn lร m sแบฝ ฤฦฐแปฃc gแปญi qua thรดng bรกo trong แปฉng dแปฅng',
-
-'account.settings.settings.open': 'Bแบญt',
-
-'account.settings.settings.close': 'Tแบฏt',
-
-'trading-assistant.title': 'Trแปฃ lรฝ giao dแปch',
-
-'trading-assistant.strategyList': 'Chiแบฟn lฦฐแปฃc Danh sรกch',
-
-'trading-assistant.createStrategy': 'Tแบกo chiแบฟn lฦฐแปฃc',
-
-'trading-assistant.noStrategy': 'Khรดng cรณ chiแบฟn lฦฐแปฃc nร o',
-
-'trading-assistant.selectStrategy': 'Chแปn mแปt chiแบฟn lฦฐแปฃc tแปซ bรชn trรกi ฤแป xem chi tiแบฟt',
-
-'trading-assistant.startStrategy': 'Bแบฏt โโฤแบงu chiแบฟn lฦฐแปฃc',
-
-'trading-assistant.stopStrategy': 'Dแปซng chiแบฟn lฦฐแปฃc',
-
-'trading-assistant.editStrategy': 'Chแปnh sแปญa chiแบฟn lฦฐแปฃc',
-
-'trading-assistant.deleteStrategy': 'Xรณa chiแบฟn lฦฐแปฃc',
-
-'trading-assistant.status.running': 'ฤang chแบกy',
-
-'trading-assistant.status.stopped': 'ฤรฃ dแปซng',
-
-'trading-assistant.status.error': 'Lแปi',
-
-'trading-assistant.strategyType.IndicatorStrategy': 'Chแป bรกo kแปน thuแบญt Chiแบฟn lฦฐแปฃc',
-
-'trading-assistant.strategyType.PromptBasedStrategy': 'Chiแบฟn lฦฐแปฃc dแปฑa trรชn lแปi nhแบฏc',
-
-'trading-assistant.strategyType.GridStrategy': 'Chiแบฟn lฦฐแปฃc lฦฐแปi',
-
-'trading-assistant.tabs.tradingRecords': 'Hแป sฦก giao dแปch',
-
-'trading-assistant.tabs.positions': 'Vแป thแบฟ',
-
-'trading-assistant.tabs.equityCurve': 'ฤฦฐแปng cong vแปn chแปง sแป hแปฏu',
-
-'trading-assistant.form.step1': 'Chแปn chแป bรกo',
-
-'trading-assistant.form.step2': 'Cแบฅu hรฌnh sร n giao dแปch',
-
-'trading-assistant.form.step3': 'Tham sแป chiแบฟn lฦฐแปฃc',
-
-'trading-assistant.form.indicator': 'Chแปn chแป bรกo',
-
-'trading-assistant.form.indicatorHint': 'Chแป chแปn cรกc chแป bรกo kแปน thuแบญt bแบกn muแปn ฤรฃ mua hoแบทc tแบกo',
-
-'trading-assistant.form.qdtCostHints': 'Viแปc sแปญ dแปฅng chiแบฟn lฦฐแปฃc nร y sแบฝ tiรชu tแปn QDT; vui lรฒng ฤแบฃm bแบฃo tร i khoแบฃn cแปงa bแบกn cรณ ฤแปง sแป dฦฐ QDT',
-
-'trading-assistant.form.indicatorDescription': 'Mรด tแบฃ chแป bรกo',
-
-'trading-assistant.form.noDescription': 'Khรดng cรณ mรด tแบฃ',
-
-'trading-assistant.form.exchange': 'Chแปn sร n giao dแปch',
-
-'trading-assistant.form.apiKey': 'Khรณa API',
-
-'trading-assistant.form.secretKey': 'Khรณa bรญ mแบญt',
-
-'trading-assistant.form.passphrase': 'Mแบญt khแบฉu',
-
-'trading-assistant.form.testConnection': 'Kiแปm tra kแบฟt nแปi',
-
-'trading-assistant.form.strategyName': 'Tรชn chiแบฟn lฦฐแปฃc',
-
-'trading-assistant.form.symbol': 'Cแบทp giao dแปch',
-
-'trading-assistant.form.symbolHint': 'Hiแปn tแบกi chแป hแป trแปฃ cรกc cแบทp giao dแปch tiแปn ฤiแปn tแปญ',
-
-'trading-assistant.form.initialCapital': 'Vแปn ban ฤแบงu',
-
-'trading-assistant.form.marketType': 'Loแบกi thแป trฦฐแปng',
-
-'trading-assistant.form.marketTypeFutures': 'Hแปฃp ฤแปng tฦฐฦกng lai',
-
-'trading-assistant.form.marketTypeSpot': 'Giao dแปch giao ngay',
-
-'trading-assistant.form.marketTypeHint': 'Hแปฃp ฤแปng hแป trแปฃ giao dแปch hai chiแปu vร ฤรฒn bแบฉy; Giao dแปch giao ngay chแป hแป trแปฃ vแป thแบฟ mua vแปi ฤรฒn bแบฉy cแป ฤแปnh lร 1x',
-
-'trading-assistant.form.leverage': 'Tแปท lแป ฤรฒn bแบฉy',
-
-'trading-assistant.form.leverageHint': 'Hแปฃp ฤแปng: 1-125x, Giao ngay: Cแป ฤแปnh 1x',
-
-'trading-assistant.form.spotLeverageFixed': 'ฤรฒn bแบฉy giao dแปch giao ngay ฤฦฐแปฃc cแป ฤแปnh แป mแปฉc 1x',
-
-'trading-assistant.form.spotOnlyLongHint': 'Giao dแปch giao ngay chแป hแป trแปฃ vแป thแบฟ mua',
-
-'trading-assistant.form.tradeDirection': 'Hฦฐแปng giao dแปch',
-
-'trading-assistant.form.tradeDirectionLong': 'Chแป mua',
-
-'trading-assistant.form.tradeDirectionShort': 'Chแป bรกn',
-
-'trading-assistant.form.tradeDirectionBoth': 'Hai chiแปu giao dแปch',
-
-'trading-assistant.form.timeframe': 'Khung thแปi gian',
-
-'trading-assistant.form.klinePeriod': 'Chu kแปณ K-Line',
-
-'trading-assistant.form.timeframe1m': '1 phรบt',
-
-'trading-assistant.form.timeframe5m': '5 phรบt',
-
-'trading-assistant.form.timeframe15m': '15 phรบt',
-
-'trading-assistant.form.timeframe30m': '30 phรบt',
-
-'trading-assistant.form.timeframe1H': '1 giแป',
-
-'trading-assistant.form.timeframe4H': '4 giแป',
-
-'trading-assistant.form.timeframe1D': '1 ngร y',
-
-'trading-assistant.form.selectStrategyType': 'Chแปn loแบกi chiแบฟn lฦฐแปฃc',
-
-'trading-assistant.form.indicatorStrategy': 'Chiแบฟn lฦฐแปฃc chแป bรกo',
-
-'trading-assistant.form.indicatorStrategyDesc': 'Chiแบฟn lฦฐแปฃc giao dแปch tแปฑ ฤแปng dแปฑa trรชn chแป bรกo kแปน thuแบญt',
-
-'trading-assistant.form.aiStrategy': 'Chiแบฟn lฦฐแปฃc AI',
-
-'trading-assistant.form.aiStrategyDesc': 'Chiแบฟn lฦฐแปฃc giao dแปch tแปฑ ฤแปng dแปฑa trรชn quyแบฟt ฤแปnh thรดng minh AI',
-
-'trading-assistant.form.enableAiFilter': 'Bแบญt bแป lแปc quyแบฟt ฤแปnh thรดng minh AI',
-
-'trading-assistant.form.enableAiFilterHint': 'Khi bแบญt, tรญn hiแปu chแป bรกo sแบฝ ฤฦฐแปฃc lแปc bแปi AI ฤแป cแบฃi thiแปn chแบฅt lฦฐแปฃng giao dแปch',
-
-'trading-assistant.form.aiFilterPrompt': 'Lแปi nhแบฏc tรนy chแปnh',
-
-'trading-assistant.form.aiFilterPromptHint': 'Cung cแบฅp hฦฐแปng dแบซn tรนy chแปnh cho bแป lแปc AI, ฤแป trแปng ฤแป sแปญ dแปฅng mแบทc ฤแปnh hแป thแปng',
-
-'trading-assistant.validation.strategyTypeRequired': 'Vui lรฒng chแปn loแบกi chiแบฟn lฦฐแปฃc',
-
-'trading-assistant.form.advancedSettings': 'Cร i ฤแบทt nรขng cao',
-
-'trading-assistant.form.orderMode': 'Chแบฟ ฤแป ฤแบทt lแปnh',
-
-'trading-assistant.form.orderModeMaker': 'Maker',
-
-'trading-assistant.form.orderModeTaker': 'Giรก thแป trฦฐแปng',
-
-'trading-assistant.form.orderModeHint': 'Chแบฟ ฤแป Maker sแปญ dแปฅng lแปnh giแปi hแบกn, phรญ thแบฅp hฦกn; chแบฟ ฤแป Market thแปฑc hiแปn ngay lแบญp tแปฉc, phรญ cao hฦกn',
-
-'trading-assistant.form.makerWaitSec': 'Thแปi gian chแป cแปงa Maker (giรขy)',
-
-'trading-assistant.form.makerWaitSecHint': 'Thแปi gian chแป sau khi ฤแบทt lแปnh; ',
-'trading-assistant.form.makerRetries': 'Sแป lแบงn thแปญ lแบกi cho lแปnh maker',
-
-'trading-assistant.form.makerRetriesHint': 'Sแป lแบงn thแปญ lแบกi tแปi ฤa nแบฟu lแปnh maker khรดng ฤฦฐแปฃc khแปp',
-
-'trading-assistant.form.fallbackToMarket': 'Hแบก cแบฅp lแปnh maker thแบฅt bแบกi xuแปng giรก thแป trฦฐแปng',
-
-'trading-assistant.form.fallbackToMarketHint': 'Cรณ nรชn hแบก cแบฅp cรกc lแปnh mแป/ฤรณng ฤang chแป xแปญ lรฝ thร nh lแปnh thแป trฦฐแปng ฤแป ฤแบฃm bแบฃo thแปฑc hiแปn khi chรบng khรดng ฤฦฐแปฃc khแปp hay khรดng',
-
-'trading-assistant.form.marginMode': 'Chแบฟ ฤแป kรฝ quแปน',
-
-'trading-assistant.form.marginModeCross': 'Kรฝ quแปน chรฉo',
-
-'trading-assistant.form.marginModeIsolated': 'Kรฝ quแปน riรชng biแปt Kรฝ quแปน',
-
-'trading-assistant.form.stopLossPct': 'Tแปท lแป cแบฏt lแป (%)',
-
-'trading-assistant.form.stopLossPctHint': 'Thiแบฟt lแบญp tแปท lแป cแบฏt lแป; 0 cho biแบฟt lแปnh dแปซng lแป khรดng ฤฦฐแปฃc bแบญt',
-
-'trading-assistant.form.takeProfitPct': 'Tแปท lแป chแปt lแปi (%)',
-
-'trading-assistant.form.takeProfitPctHint': 'Thiแบฟt lแบญp tแปท lแป chแปt lแปi, 0 cho biแบฟt lแปnh chแปt lแปi khรดng ฤฦฐแปฃc bแบญt',
-
-'trading-assistant.form.signalMode': 'Chแบฟ ฤแป tรญn hiแปu',
-
-'trading-assistant.form.signalModeConfirmed': 'Chแบฟ ฤแป xรกc nhแบญn',
-
-'trading-assistant.form.signalModeAggressive': 'Chแบฟ ฤแป giao dแปch tรญch cแปฑc',
-
-'trading-assistant.form.signalModeHint': 'Chแบฟ ฤแป xรกc nhแบญn: Chแป kiแปm tra cรกc nแบฟn ฤรฃ hoร n thร nh; Chแบฟ ฤแป giao dแปch tรญch cแปฑc: Kiแปm tra cแบฃ viแปc hรฌnh thร nh nแบฟn',
-
-'trading-assistant.form.cancel': 'Hแปงy',
-
-'trading-assistant.form.prev': 'Bฦฐแปc trฦฐแปc',
-
-'trading-assistant.form.next': 'Bฦฐแปc tiแบฟp theo',
-
-'trading-assistant.form.confirmCreate': 'Xรกc nhแบญn tแบกo',
-
-'trading-assistant.form.confirmEdit': 'Xรกc nhแบญn chแปnh sแปญa',
-
-'trading-assistant.messages.createSuccess': 'Tแบกo chiแบฟn lฦฐแปฃc thร nh cรดng',
-
-'trading-assistant.messages.createFailed': 'Tแบกo chiแบฟn lฦฐแปฃc thแบฅt bแบกi',
-
-'trading-assistant.messages.updateSuccess': 'Cแบญp nhแบญt chiแบฟn lฦฐแปฃc thร nh cรดng',
-
-'trading-assistant.messages.updateFailed': 'Cแบญp nhแบญt chiแบฟn lฦฐแปฃc thแบฅt bแบกi',
-'trading-assistant.messages.deleteSuccess': 'Xรณa chiแบฟn lฦฐแปฃc thร nh cรดng',
-
-'trading-assistant.messages.deleteFailed': 'Xรณa chiแบฟn lฦฐแปฃc thแบฅt bแบกi',
-
-'trading-assistant.messages.startSuccess': 'Khแปi ฤแปng chiแบฟn lฦฐแปฃc thร nh cรดng',
-
-'trading-assistant.messages.startFailed': 'Khแปi ฤแปng chiแบฟn lฦฐแปฃc thแบฅt bแบกi',
-
-'trading-assistant.messages.stopSuccess': 'Chรญnh sรกch ฤรฃ dแปซng thร nh cรดng',
-
-'trading-assistant.messages.stopFailed': 'Dแปซng chรญnh sรกch thแบฅt bแบกi',
-
-'trading-assistant.messages.loadFailed': 'Khรดng thแป tแบฃi danh sรกch chรญnh sรกch',
-
-'trading-assistant.messages.runningWarning': 'Chรญnh sรกch ฤang chแบกy, vui lรฒng dแปซng chรญnh sรกch trฦฐแปc khi sแปญa ฤแปi',
-'trading-assistant.messages.deleteConfirmWithName': 'Bแบกn cรณ chแบฏc chแบฏn muแปn xรณa chรญnh sรกch "{name}" khรดng? Thao tรกc nร y khรดng thแป ฤแบฃo ngฦฐแปฃc.',
-
-'trading-assistant.messages.deleteConfirm': 'Bแบกn cรณ chแบฏc chแบฏn muแปn xรณa chรญnh sรกch nร y khรดng? Thao tรกc nร y khรดng thแป ฤแบฃo ngฦฐแปฃc.',
-
-'trading-assistant.messages.loadTradesFailed': 'Khรดng thแป truy xuแบฅt hแป sฦก giao dแปch',
-
-'trading-assistant.messages.loadPositionsFailed': 'Khรดng thแป truy xuแบฅt hแป sฦก vแป thแบฟ',
-
-'trading-assistant.messages.loadEquityFailed': 'Khรดng thแป truy xuแบฅt ฤฦฐแปng cong vแปn chแปง sแป hแปฏu',
-
-'trading-assistant.messages.loadIndicatorsFailed': 'Khรดng thแป tแบฃi danh sรกch chแป bรกo, vui lรฒng thแปญ lแบกi sau',
-
-'trading-assistant.messages.spotLimitations': 'Giao dแปch giao ngay ฤรฃ ฤฦฐแปฃc tแปฑ ฤแปng thiแบฟt lแบญp chแป mua, ฤรฒn bแบฉy 1x',
-
-'trading-assistant.messages.autoFillApiConfig': 'Cแบฅu hรฌnh API lแปch sแปญ cho sร n giao dแปch nร y ฤรฃ ฤฦฐแปฃc tแปฑ ฤแปng ฤiแปn',
-
-'trading-assistant.placeholders.selectIndicator': 'Vui lรฒng chแปn mแปt chแป bรกo indicator',
-'trading-assistant.placeholders.selectExchange': 'Vui lรฒng chแปn mแปt sร n giao dแปch',
-
-'trading-assistant.placeholders.inputApiKey': 'Vui lรฒng nhแบญp Khรณa API',
-
-'trading-assistant.placeholders.inputSecretKey': 'Vui lรฒng nhแบญp Khรณa bรญ mแบญt',
-
-'trading-assistant.placeholders.inputPassphrase': 'Vui lรฒng nhแบญp Mแบญt khแบฉu',
-
-'trading-assistant.placeholders.inputStrategyName': 'Vui lรฒng nhแบญp tรชn chiแบฟn lฦฐแปฃc',
-
-'trading-assistant.placeholders.selectSymbol': 'Vui lรฒng chแปn mแปt cแบทp giao dแปch',
-
-'trading-assistant.placeholders.selectTimeframe': 'Vui lรฒng chแปn mแปt khung thแปi gian',
-
-'trading-assistant.placeholders.selectKlinePeriod': 'Vui lรฒng chแปn chu kแปณ K-Line',
-
-'trading-assistant.placeholders.inputAiFilterPrompt': 'Vui lรฒng nhแบญp lแปi nhแบฏc tรนy chแปnh (tรนy chแปn)',
-
-'trading-assistant.validation.indicatorRequired': 'Vui lรฒng chแปn mแปt chแป bรกo',
-
-'trading-assistant.validation.exchangeRequired': 'Vui lรฒng chแปn mแปt sร n giao dแปch',
-'trading-assistant.validation.apiKeyRequired': 'Vui lรฒng nhแบญp Khรณa API',
-
-'trading-assistant.validation.secretKeyRequired': 'Vui lรฒng nhแบญp Khรณa bรญ mแบญt',
-
-'trading-assistant.validation.passphraseRequired': 'Vui lรฒng nhแบญp Mแบญt khแบฉu',
-
-'trading-assistant.validation.exchangeConfigIncomplete': 'Vui lรฒng ฤiแปn ฤแบงy ฤแปง thรดng tin cแบฅu hรฌnh sร n giao dแปch',
-'trading-assistant.validation.testConnectionRequired': 'Vui lรฒng nhแบฅp vร o nรบt "Kiแปm tra kแบฟt nแปi" vร ฤแบฃm bแบฃo kแบฟt nแปi thร nh cรดng',
-'trading-assistant.validation.testConnectionFailed': 'Kiแปm tra kแบฟt nแปi thแบฅt bแบกi, vui lรฒng kiแปm tra cแบฅu hรฌnh vร thแปญ lแบกi',
-
-'trading-assistant.validation.strategyNameRequired': 'Vui lรฒng nhแบญp tรชn chiแบฟn lฦฐแปฃc',
-
-'trading-assistant.validation.symbolRequired': 'Vui lรฒng chแปn mแปt cแบทp giao dแปch ...apiKeyRequired',
-
-'trading-assistant.apiKeyRequired': 'Vui lรฒng Nhแบญp khรณa API',
-
-'trading-assistant.validation.initialCapitalRequired': 'Vui lรฒng nhแบญp vแปn ban ฤแบงu',
-
-'trading-assistant.validation.leverageRequired': 'Vui lรฒng nhแบญp tแปท lแป ฤรฒn bแบฉy',
-
-'trading-assistant.table.time': 'Thแปi gian',
-
-'trading-assistant.table.type': 'Loแบกi',
-
-'trading-assistant.table.price': 'Giรก',
-
-'trading-assistant.table.amount': 'Sแป tiแปn',
-
-'trading-assistant.table.value': 'Sแป tiแปn',
-
-'trading-assistant.table.commission': 'Phรญ hoa hแปng',
-
-'trading-assistant.table.symbol': 'Cแบทp giao dแปch',
-
-'trading-assistant.table.side': 'Hฦฐแปng',
-
-'trading-assistant.table.size': 'Vแป thแบฟ kรญch thฦฐแปc',
-
-'trading-assistant.table.entryPrice': 'Giรก vร o lแปnh',
-
-'trading-assistant.table.currentPrice': 'Giรก hiแปn tแบกi',
-
-'trading-assistant.table.unrealizedPnl': 'Lแปฃi nhuแบญn/Thua lแป chฦฐa thแปฑc hiแปn',
-
-'trading-assistant.table.pnlPercent': 'Tแปท lแป lแปฃi nhuแบญn/thua lแป',
-
-'trading-assistant.table.buy': 'Mua',
-
-'trading-assistant.table.sell': 'Bรกn',
-
-'trading-assistant.table.long': 'Mua',
-
-'trading-assistant.table.short': 'Bรกn',
-
-'trading-assistant.table.noPositions': 'Khรดng cรณ vแป thแบฟ',
-
-'trading-assistant.detail.title': 'Chi tiแบฟt chiแบฟn lฦฐแปฃc',
-
-'trading-assistant.detail.strategyName': 'Chiแบฟn lฦฐแปฃc Tรชn',
-
-'trading-assistant.detail.strategyType': 'Loแบกi chiแบฟn lฦฐแปฃc',
-
-'trading-assistant.detail.status': 'Trแบกng thรกi',
-
-'trading-assistant.detail.tradingMode': 'Chแบฟ ฤแป giao dแปch',
-
-'trading-assistant.detail.exchange': 'Sร n giao dแปch',
-
-'trading-assistant.detail.initialCapital': 'Vแปn ban ฤแบงu',
-
-'trading-assistant.detail.totalInvestment': 'Tแปng vแปn ฤแบงu tฦฐ',
-
-'trading-assistant.detail.currentEquity': 'Vแปn chแปง sแป hแปฏu hiแปn tแบกi',
-
-'trading-assistant.detail.totalPnl': 'Tแปng lแปฃi nhuแบญn/thua lแป',
-
-'trading-assistant.detail.indicatorName': 'Tรชn chแป bรกo',
-
-'trading-assistant.detail.maxLeverage': 'ฤรฒn bแบฉy tแปi ฤa ฤรฒn bแบฉy',
-
-'trading-assistant.detail.decideInterval': 'Khoแบฃng thแปi gian quyแบฟt ฤแปnh',
-
-'trading-assistant.detail.symbols': 'Cรดng cแปฅ giao dแปch',
-
-'trading-assistant.detail.createdAt': 'Thแปi gian tแบกo',
-
-'trading-assistant.detail.updatedAt': 'Thแปi gian cแบญp nhแบญt',
-
-'trading-assistant.detail.llmConfig': 'Cแบฅu hรฌnh mรด hรฌnh AI',
-
-'trading-assistant.detail.exchangeConfig': 'Cแบฅu hรฌnh sร n giao dแปch',
-
-'trading-assistant.detail.provider': 'Nhร cung cแบฅp',
-
-'trading-assistant.detail.modelId': 'ID mรด hรฌnh',
-
-'trading-assistant.detail.close': 'ฤรณng',
-
-'trading-assistant.detail.loadFailed': 'Khรดng thแป truy xuแบฅt chiแบฟn lฦฐแปฃc chi tiแบฟt',
-
-'trading-assistant.equity.noData': 'Khรดng cรณ dแปฏ liแปu giรก trแป tร i sแบฃn rรฒng',
-
-'trading-assistant.equity.equity': 'Giรก trแป tร i sแบฃn rรฒng',
-
-'trading-assistant.exchange.tradingMode': 'Chแบฟ ฤแป giao dแปch',
-
-'trading-assistant.exchange.virtual': 'Giao dแปch thแปญ nghiแปm',
-
-'trading-assistant.exchange.live': 'Giao dแปch trแปฑc tiแบฟp',
-
-'trading-assistant.exchange.selectExchange': 'Chแปn sร n giao dแปch',
-
-'trading-assistant.exchange.walletAddress': 'ฤแปa chแป vรญ',
-
-'trading-assistant.exchange.walletAddressPlaceholder': 'Vui lรฒng nhแบญp ฤแปa chแป vรญ cแปงa bแบกn (bแบฏt ฤแบงu bแบฑng 0x)',
-
-'trading-assistant.exchange.privateKey': 'Khรณa riรชng tฦฐ',
-
-'trading-assistant.exchange.privateKeyPlaceholder': 'Vui lรฒng nhแบญp khรณa riรชng tฦฐ cแปงa bแบกn (64 kรฝ tแปฑ)',
-
-'trading-assistant.exchange.testConnection': 'Kiแปm tra kแบฟt nแปi',
-
-'trading-assistant.exchange.connectionSuccess': 'Kแบฟt nแปi thร nh cรดng',
-
-'trading-assistant.exchange.connectionFailed': 'Kแบฟt nแปi thแบฅt bแบกi',
-
-'trading-assistant.exchange.testFailed': 'Kiแปm tra kแบฟt nแปi thแบฅt bแบกi',
-
-'trading-assistant.exchange.fillComplete': 'Vui lรฒng ฤiแปn ฤแบงy ฤแปง thรดng tin cแบฅu hรฌnh sร n giao dแปch',
-
-'trading-assistant.strategyTypeOptions.ai': 'Chiแบฟn lฦฐแปฃc dแปฑa trรชn AI',
-
-'trading-assistant.strategyTypeOptions.indicator': 'Chiแบฟn lฦฐแปฃc chแป bรกo kแปน thuแบญt',
-
-'trading-assistant.strategyTypeOptions.aiDeveloping': 'Chแปฉc nฤng chiแบฟn lฦฐแปฃc dแปฑa trรชn AI ฤang ฤฦฐแปฃc phรกt triแปn, hรฃy theo dรตi',
-
-'trading-assistant.strategyTypeOptions.aiDevelopingWarning': 'Chแปฉc nฤng chiแบฟn lฦฐแปฃc dแปฑa trรชn AI ฤang ฤฦฐแปฃc phรกt triแปn',
-
-'trading-assistant.indicatorType.trend': 'Xu hฦฐแปng',
-
-'trading-assistant.indicatorType.momentum': 'ฤแปng lฦฐแปฃng',
-
-'trading-assistant.indicatorType.volatility': 'Biแบฟn ฤแปng',
-
-'trading-assistant.indicatorType.volume': 'Khแปi lฦฐแปฃng',
-
-'trading-assistant.indicatorType.custom': 'Tรนy chแปnh',
-
-'trading-assistant.exchangeNames': {
-
-'okx': 'OKX',
-
-'binance': 'Binance',
-
-'hyperliquid': 'Hyperliquid',
-
-'blockchaincom': 'Blockchain.com',
-
-'coinbaseexchange': 'Coinbase',
-
-'gate': 'Gate.io',
-
-'mexc': 'MEXC',
-
-'kraken': 'Kraken',
-'bitfinex': 'Bitfinex',
-'bybit': 'Bybit',
-'kucoin': 'KuCoin',
-'huobi': 'Huobi',
-'bitget': 'Bitget',
-'bitmex': 'BitMEX',
-'gแบกch tแปซ': 'Dแปฑa trรชn',
-'phemex': 'Phemex',
-'bitmart': 'BitMart',
-'bitstamp': 'Bitstamp',
-'bittrex': 'Bittrex',
-'poloniex': 'Poloniex',
-'song tแปญ': 'song tแปญ',
-'tiแปn ฤiแปn tแปญ': 'Crypto.com',
-'bitflyer': 'bitFlyer',
-'upbit': 'Upbit',
-'bithumb': 'Bithumb',
-'coinone': 'Coinone',
-'zb': 'ZB',
-'ngรขn hร ng': 'LBank',
-
-'bibox': 'Bibox',
-
-'bigone': 'BigONE',
-
-'bitrue': 'Bitrue',
-
-'coinex': 'CoinEx',
-
-'digifinex': 'DigiFinex',
-
-'ftx': 'FTX',
-
-'ftxus': 'FTX US',
-
-'binanceus': 'Binance US',
-
-'binancecoinm': 'Binance COIN-M',
-
-'binanceusdm': 'Binance USDโ-M',
-
-'deepcoin': 'Deepcoin'
-
-},
-
-'ai-trading-assistant.title': 'Trแปฃ lรฝ giao dแปch AI',
-
-'ai-trading-assistant.strategyList': 'Danh sรกch chiแบฟn lฦฐแปฃc',
-
-'ai-trading-assistant.createStrategy': 'Tแบกo chiแบฟn lฦฐแปฃc',
-
-'ai-trading-assistant.noStrategy': 'Khรดng cรณ chiแบฟn lฦฐแปฃc Cรณ sแบตn',
-
-'ai-trading-assistant.selectStrategy': 'Chแปn chiแบฟn lฦฐแปฃc tแปซ bรชn trรกi ฤแป xem chi tiแบฟt',
-
-'ai-trading-assistant.startStrategy': 'Bแบฏt โโฤแบงu chiแบฟn lฦฐแปฃc',
-
-'ai-trading-assistant.stopStrategy': 'Dแปซng chiแบฟn lฦฐแปฃc',
-
-'ai-trading-assistant.editStrategy': 'Chแปnh sแปญa chiแบฟn lฦฐแปฃc',
-
-'ai-trading-assistant.deleteStrategy': 'Xรณa chiแบฟn lฦฐแปฃc',
-
-'ai-trading-assistant.status.running': 'ฤang chแบกy',
-
-'ai-trading-assistant.status.stopped': 'ฤรฃ dแปซng',
-
-'ai-trading-assistant.status.error': 'Lแปi',
-
-'ai-trading-assistant.tabs.tradingRecords': 'Hแป sฦก giao dแปch',
-
-'ai-trading-assistant.tabs.positions': 'Vแป thแบฟ',
-
-'ai-trading-assistant.tabs.aiDecisions': 'Bแบฃn ghi quyแบฟt ฤแปnh cแปงa AI',
-
-'ai-trading-assistant.tabs.equityCurve': 'ฤฦฐแปng cong vแปn chแปง sแป hแปฏu',
-
-'ai-trading-assistant.form.createTitle': 'Tแบกo chiแบฟn lฦฐแปฃc giao dแปch AI',
-
-'ai-trading-assistant.form.editTitle': 'Chแปnh sแปญa chiแบฟn lฦฐแปฃc giao dแปch AI',
-
-'ai-trading-assistant.form.strategyName': 'Tรชn chiแบฟn lฦฐแปฃc',
-
-'ai-trading-assistant.form.modelId': 'Mรด hรฌnh AI',
-
-'ai-trading-assistant.form.modelIdHint': 'Sแปญ dแปฅng dแปch vแปฅ OpenRouter cแปงa hแป thแปng; Khรดng cแบงn cแบฅu hรฌnh khรณa API',
-
-'ai-trading-assistant.form.decideInterval': 'Khoแบฃng thแปi gian quyแบฟt ฤแปnh',
-
-'ai-trading-assistant.form.decideInterval5m': '5 phรบt',
-
-'ai-trading-assistant.form.decideInterval10m': '10 phรบt',
-
-'ai-trading-assistant.form.decideInterval30m': '30 phรบt',
-
-'ai-trading-assistant.form.decideInterval1h': '1 giแป',
-
-'ai-trading-assistant.form.decideInterval4h': '4 giแป',
-
-'ai-trading-assistant.form.decideInterval1d': '1 ngร y',
-
-'ai-trading-assistant.form.decideInterval1w': '1 tuแบงn',
-
-'ai-trading-assistant.form.decideIntervalHint': 'Khoแบฃng thแปi gian cho AI ฤแป ฤฦฐa ra quyแบฟt ฤแปnh',
-
-'ai-trading-assistant.form.runPeriod': 'Thแปi gian chแบกy',
-
-'ai-trading-assistant.form.runPeriodHint': 'Thแปi gian bแบฏt ฤแบงu vร kแบฟt thรบc cแปงa chiแบฟn lฦฐแปฃc',
-
-'ai-trading-assistant.form.startDate': 'Ngร y bแบฏt ฤแบงu',
-
-'ai-trading-assistant.form.endDate': 'Ngร y kแบฟt thรบc',
-
-'ai-trading-assistant.form.qdtCostTitle': 'Mรด tแบฃ chi phรญ QDT',
-
-'ai-trading-assistant.form.qdtCostHint': 'Mแปi quyแบฟt ฤแปnh cแปงa AI sแบฝ cรณ giรก {cost} QDT. Vui lรฒng ฤแบฃm bแบฃo tร i khoแบฃn cแปงa bแบกn cรณ ฤแปง sแป dฦฐ QDT. Chi phรญ sแบฝ ฤฦฐแปฃc trแปซ theo thแปi gian thแปฑc cho mแปi quyแบฟt ฤแปnh trong quรก trรฌnh chแบกy chiแบฟn lฦฐแปฃc.',
-
-'ai-trading-assistant.form.apiKey': 'Khรณa API',
-
-'ai-trading-assistant.form.exchange': 'Chแปn sร n giao dแปch',
-
-'ai-trading-assistant.form.secretKey': 'Khรณa bรญ mแบญt',
-
-'ai-trading-assistant.form.passphrase': 'Mแบญt khแบฉu',
-
-'ai-trading-assistant.form.testConnection': 'Kiแปm tra kแบฟt nแปi',
-
-'ai-trading-assistant.form.symbol': 'Cแบทp giao dแปch',
-
-'ai-trading-assistant.form.symbolHint': 'Chแปn cแบทp giao dแปch',
-
-'ai-trading-assistant.form.initialCapital': 'Sแป vแปn ฤแบงu tฦฐ (Kรฝ quแปน)',
-
-'ai-trading-assistant.form.leverage': 'Tแปท lแป ฤรฒn bแบฉy',
-
-'ai-trading-assistant.form.timeframe': 'Khung thแปi gian',
-
-'ai-trading-assistant.form.timeframe1m': '1 phรบt',
-
-'ai-trading-assistant.form.timeframe5m': '5 phรบt',
-
-'ai-trading-assistant.form.timeframe15m': '15 phรบt',
-
-'ai-trading-assistant.form.timeframe30m': '30 phรบt',
-
-'ai-trading-assistant.form.timeframe1H': '1 giแป',
-
-'ai-trading-assistant.form.timeframe4H': '4 giแป',
-
-'ai-trading-assistant.form.timeframe1D': '1 ngร y',
-
-'ai-trading-assistant.form.marketType': 'Loแบกi thแป trฦฐแปng',
-
-'ai-trading-assistant.form.marketTypeFutures': 'Hแปฃp ฤแปng',
-
-'ai-trading-assistant.form.marketTypeSpot': 'Giao dแปch tแปฉc thแปi',
-
-'ai-trading-assistant.form.totalPnl': 'Tแปng lแปฃi nhuแบญn/thua lแป',
-
-'ai-trading-assistant.form.customPrompt': 'Lแปi nhแบฏc tรนy chแปnh',
-
-'ai-trading-assistant.form.customPromptHint': 'Tรนy chแปn, ฤแป tรนy chแปnh chiแบฟn lฦฐแปฃc giao dแปch vร logic quyแบฟt ฤแปnh cแปงa AI',
-
-'ai-trading-assistant.form.cancel': 'Hแปงy',
-
-'ai-trading-assistant.form.prev': 'Bฦฐแปc trฦฐแปc',
-
-'ai-trading-assistant.form.next': 'Bฦฐแปc tiแบฟp theo',
-
-'ai-trading-assistant.form.confirmCreate': 'Xรกc nhแบญn tแบกo',
-
-'ai-trading-assistant.form.confirmEdit': 'Xรกc nhแบญn chแปnh sแปญa',
-
-'ai-trading-assistant.messages.createSuccess': 'Tแบกo chiแบฟn lฦฐแปฃc thร nh cรดng',
-
-'ai-trading-assistant.messages.createFailed': 'Tแบกo chiแบฟn lฦฐแปฃc thแบฅt bแบกi',
-
-'ai-trading-assistant.messages.updateSuccess': 'Cแบญp nhแบญt chiแบฟn lฦฐแปฃc thร nh cรดng',
-
-'ai-trading-assistant.messages.updateFailed': 'Cแบญp nhแบญt chiแบฟn lฦฐแปฃc thแบฅt bแบกi',
-
-'ai-trading-assistant.messages.deleteSuccess': 'Xรณa chiแบฟn lฦฐแปฃc thร nh cรดng',
-
-'ai-trading-assistant.messages.deleteFailed': 'Xรณa chiแบฟn lฦฐแปฃc thแบฅt bแบกi',
-
-'ai-trading-assistant.messages.startSuccess': 'Khแปi ฤแปng chiแบฟn lฦฐแปฃc thร nh cรดng',
-
-'ai-trading-assistant.messages.startFailed': 'Khรดng thแป khแปi ฤแปng chรญnh sรกch',
-
-'ai-trading-assistant.messages.stopSuccess': 'ฤรฃ dแปซng thร nh cรดng chรญnh sรกch',
-
-'ai-trading-assistant.messages.stopFailed': 'Khรดng thแป dแปซng chรญnh sรกch',
-
-'ai-trading-assistant.messages.loadFailed': 'Khรดng thแป truy xuแบฅt danh sรกch chรญnh sรกch',
-
-'ai-trading-assistant.messages.loadDecisionsFailed': 'Khรดng thแป truy xuแบฅt bแบฃn ghi quyแบฟt ฤแปnh cแปงa AI',
-
-'ai-trading-assistant.messages.deleteConfirm': 'Bแบกn cรณ chแบฏc chแบฏn muแปn xรณa chรญnh sรกch nร y khรดng? Thao tรกc nร y khรดng thแป ฤแบฃo ngฦฐแปฃc.',
-
-'ai-trading-assistant.placeholders.inputStrategyName': 'Vui lรฒng nhแบญp tรชn chiแบฟn lฦฐแปฃc',
-
-'ai-trading-assistant.placeholders.selectModelId': 'Vui lรฒng chแปn mรด hรฌnh AI',
-
-'ai-trading-assistant.placeholders.selectDecideInterval': 'Vui lรฒng chแปn khoแบฃng thแปi gian quyแบฟt ฤแปnh',
-
-'ai-trading-assistant.placeholders.startTime': 'Thแปi gian bแบฏt ฤแบงu',
-
-'ai-trading-assistant.placeholders.endTime': 'Thแปi gian kแบฟt thรบc',
-
-'ai-trading-assistant.placeholders.inputApiKey': 'Vui lรฒng nhแบญp khรณa API',
-
-'ai-trading-assistant.placeholders.selectExchange': 'Vui lรฒng chแปn sร n giao dแปch',
-
-'ai-trading-assistant.placeholders.inputSecretKey': 'Vui lรฒng nhแบญp mรฃ bรญ mแบญt Key',
-
-'ai-trading-assistant.placeholders.inputPassphrase': 'Vui lรฒng nhแบญp mแบญt khแบฉu cแปงa bแบกn',
-
-'ai-trading-assistant.placeholders.selectSymbol': 'Vui lรฒng chแปn mแปt cแบทp giao dแปch, vรญ dแปฅ nhฦฐ BTC/USDT',
-
-'ai-trading-assistant.placeholders.selectTimeframe': 'Vui lรฒng chแปn khung thแปi gian',
-
-'ai-trading-assistant.placeholders.inputCustomPrompt': 'Vui lรฒng nhแบญp lแปi nhแบฏc tรนy chแปnh (tรนy chแปn)',
-
-'ai-trading-assistant.validation.strategyNameRequired': 'Vui lรฒng nhแบญp tรชn chiแบฟn lฦฐแปฃc',
-
-'ai-trading-assistant.validation.modelIdRequired': 'Vui lรฒng chแปn mแปt mรด hรฌnh AI',
-
-'ai-trading-assistant.validation.runPeriodRequired': 'Vui lรฒng chแปn khoแบฃng thแปi gian chแบกy',
-
-'ai-trading-assistant.validation.apiKeyRequired': 'Vui lรฒng nhแบญp API Key',
-
-'ai-trading-assistant.validation.exchangeRequired': 'Vui lรฒng chแปn sร n giao dแปch',
-
-'ai-trading-assistant.validation.secretKeyRequired': 'Vui lรฒng nhแบญp Khรณa bรญ mแบญt',
-
-'ai-trading-assistant.validation.symbolRequired': 'Vui lรฒng chแปn cแบทp giao dแปch',
-
-'ai-trading-assistant.validation.initialCapitalRequired': 'Vui lรฒng nhแบญp sแป vแปn ฤแบงu tฦฐ',
-
-'ai-trading-assistant.table.time': 'Thแปi gian',
-
-'ai-trading-assistant.table.type': 'Loแบกi',
-
-'ai-trading-assistant.table.price': 'Giรก',
-
-'ai-trading-assistant.table.amount': 'Sแป lฦฐแปฃng',
-
-'ai-trading-assistant.table.value': 'Giรก trแป',
-
-'ai-trading-assistant.table.symbol': 'Cแบทp giao dแปch',
-
-'ai-trading-assistant.table.side': 'Hฦฐแปng',
-
-'ai-trading-assistant.table.size': 'Sแป lฦฐแปฃng vแป thแบฟ',
-
-'ai-trading-assistant.table.entryPrice': 'Giรก vร o lแปnh',
-
-'ai-trading-assistant.table.currentPrice': 'Giรก hiแปn tแบกi',
-
-'ai-trading-assistant.table.unrealizedPnl': 'Lแปฃi nhuแบญn/Thua lแป chฦฐa thแปฑc hiแปn',
-
-'ai-trading-assistant.table.profit': 'Lแปฃi nhuแบญn/Thua lแป',
-
-'ai-trading-assistant.table.openLong': 'Mแป lแปnh mua',
-
-'ai-trading-assistant.table.closeLong': 'ฤรณng lแปnh Long',
-
-'ai-trading-assistant.table.openShort': 'Mแป lแปnh bรกn',
-
-'ai-trading-assistant.table.closeShort': 'ฤรณng lแปnh bรกn',
-
-'ai-trading-assistant.table.addLong': 'Thรชm lแปnh mua',
-
-'ai-trading-assistant.table.addShort': 'Thรชm lแปnh bรกn',
-
-'ai-trading-assistant.table.closeShortProfit': 'ฤรณng lแปnh bรกn cรณ lรฃi',
-
-'ai-trading-assistant.table.closeShortStop': 'ฤรณng lแปnh cแบฏt lแป lแปnh bรกn',
-
-'ai-trading-assistant.table.closeLongProfit': 'ฤรณng lแปnh mua cรณ lรฃi',
-
-'ai-trading-assistant.table.closeLongStop': 'ฤรณng lแปnh cแบฏt lแป lแปnh mua',
-
-'ai-trading-assistant.table.buy': 'Mua',
-
-'ai-trading-assistant.table.sell': 'ๅฎ',
-
-'ai-trading-assistant.table.long': 'ๅผ้ฟ',
-
-'ai-trading-assistant.table.short': 'ๅผ็ญ',
-
-'ai-trading-assistant.table.hold': 'ๆง่ก',
-
-'ai-trading-assistant.table.reasoning': 'ๅๆ็็',
-
-'ai-trading-assistant.table.decisions': 'ๅณๅฎ',
-
-'ai-trading-assistant.table.riskAssessment': '้ฃ้ฉ่ๆ ธ',
-
-'ai-trading-assistant.table.trust': 'ไฟกไฟกๅบฆ',
-
-'ai-trading-assistant.table.totalRecords': '{total} Khรดng cรณ bแบฃn ghi',
-'ai-trading-assistant.table.noPositions': 'Khรดng cรณ vแป thแบฟ',
-
-'ai-trading-assistant.detail.title': 'Chi tiแบฟt chiแบฟn lฦฐแปฃc',
-
-'ai-trading-assistant.equity.noData': 'Khรดng cรณ dแปฏ liแปu giรก trแป tร i sแบฃn rรฒng',
-
-'ai-trading-assistant.equity.equity': 'Giรก trแป tร i sแบฃn rรฒng',
-
-'ai-trading-assistant.exchange.testFailed': 'Kiแปm tra kแบฟt nแปi thแบฅt bแบกi',
-
-'ai-trading-assistant.exchange.connectionSuccess': 'Kแบฟt nแปi thร nh cรดng',
-
-'ai-trading-assistant.exchange.connectionFailed': 'Kแบฟt nแปi thแบฅt bแบกi',
-
-'ai-trading-assistant.form.advancedSettings': 'Cร i ฤแบทt nรขng cao',
-
-'ai-trading-assistant.form.orderMode': 'Lแปnh Mode',
-
-'ai-trading-assistant.form.orderModeMaker': 'Lแปnh chแป (Ngฦฐแปi tแบกo lแปnh)',
-
-'ai-trading-assistant.form.orderModeTaker': 'Lแปnh thแป trฦฐแปng (Ngฦฐแปi nhแบญn lแปnh)',
-
-'ai-trading-assistant.form.orderModeHint': 'Chแบฟ ฤแป lแปnh chแป sแปญ dแปฅng lแปnh giแปi hแบกn, phรญ thแบฅp hฦกn; chแบฟ ฤแป lแปnh thแป trฦฐแปng thแปฑc hiแปn ngay lแบญp tแปฉc, phรญ cao hฦกn',
-
-'ai-trading-assistant.form.makerWaitSec': 'Thแปi gian chแป lแปnh (giรขy)',
-
-'ai-trading-assistant.form.makerWaitSecHint': 'Thแปi gian chแป sau khi ฤแบทt lแปnh;',
-'ai-trading-assistant.form.makerRetries': 'Sแป lแบงn thแปญ lแบกi cho lแปnh ฤang chแป',
-
-'ai-trading-assistant.form.makerRetriesHint': 'Sแป lแบงn thแปญ lแบกi tแปi ฤa khi lแปnh ฤang chแป khรดng ฤฦฐแปฃc khแปp',
-
-'ai-trading-assistant.form.fallbackToMarket': 'Hแบก cแบฅp lแปnh ฤang chแป thแบฅt bแบกi thร nh lแปnh thแป trฦฐแปng',
-
-'ai-trading-assistant.form.fallbackToMarketHint': 'Cรณ nรชn hแบก cแบฅp lแปnh ฤang chแป mแป/ฤรณng thร nh lแปnh thแป trฦฐแปng ฤแป ฤแบฃm bแบฃo thแปฑc hiแปn khi chรบng khรดng ฤฦฐแปฃc khแปp hay khรดng',
-
-'ai-trading-assistant.form.marginMode': 'Chแบฟ ฤแป kรฝ quแปน',
-
-'ai-trading-assistant.form.marginModeCross': 'Kรฝ quแปน chรฉo',
-
-'ai-trading-assistant.form.marginModeIsolated': 'Kรฝ quแปน riรชng biแปt Margin',
-
-'ai-analysis.title': 'Hแป thแปng giao dแปch lฦฐแปฃng tแปญ',
-
-'ai-analysis.system.online': 'Trแปฑc tuyแบฟn',
-
-'ai-analysis.system.agents': 'Nhรขn viรชn',
-
-'ai-analysis.system.active': 'Hoแบกt ฤแปng',
-
-'ai-analysis.system.stage': 'Giai ฤoแบกn',
-
-'ai-analysis.panel.roster': 'Danh sรกch nhรขn viรชn',
-
-'ai-analysis.panel.thinking': 'ฤang suy nghฤฉ...',
-
-'ai-analysis.panel.done': 'Hoร n tแบฅt',
-
-'ai-analysis.panel.standby': 'Chแป',
-
-'ai-analysis.input.title': 'Hแป thแปng giao dแปch lฦฐแปฃng tแปญ',
-
-'ai-analysis.input.placeholder': 'Chแปn tร i sแบฃn mแปฅc tiรชu (vรญ dแปฅ: BTC/USDT)',
-
-'ai-analysis.input.watchlist': 'Danh sรกch theo dรตi',
-
-'ai-analysis.input.start': 'Bแบฏt โโฤแบงu phรขn tรญch',
-
-'ai-analysis.input.recent': 'Cรกc tรกc vแปฅ gแบงn ฤรขy:',
-
-'ai-analysis.vis.stage': 'Giai ฤoแบกn',
-
-'ai-analysis.vis.processing': 'ฤang xแปญ lรฝ',
-
-'ai-analysis.result.complete': 'Phรขn tรญch hoร n tแบฅt',
-
-'ai-analysis.result.signal': 'Tรญn hiแปu cuแปi cรนng',
-
-'ai-analysis.result.confidence': 'Mแปฉc ฤแป tin cแบญy:',
-
-'ai-analysis.result.new': 'Phรขn tรญch mแปi',
-
-'ai-analysis.result.full': 'Xem bรกo cรกo ฤแบงy ฤแปง',
-
-'ai-analysis.logs.title': 'Nhแบญt kรฝ hแป thแปng',
-
-'ai-analysis.modal.title': 'Bรกo cรกo bแบฃo mแบญt',
-
-'ai-analysis.modal.fundamental': 'Phรขn tรญch cฦก bแบฃn',
-
-'ai-analysis.modal.technical': 'Phรขn tรญch kแปน thuแบญt',
-
-'ai-analysis.modal.sentiment': 'Phรขn tรญch tรขm lรฝ',
-
-'ai-analysis.modal.risk': 'ฤรกnh giรก rแปงi ro',
-
-'ai-analysis.stage.idle': 'Chแบฟ ฤแป chแป',
-
-'ai-analysis.stage.1': 'Giai ฤoแบกn 1: Phรขn tรญch ฤa chiแปu',
-
-'ai-analysis.stage.2': 'Giai ฤoแบกn 2: Thแบฃo luแบญn vแป xu hฦฐแปng tฤng/giแบฃm',
-
-'ai-analysis.stage.3': 'Giai ฤoแบกn 3: Lแบญp kแบฟ hoแบกch chiแบฟn lฦฐแปฃc',
-
-'ai-analysis.stage.4': 'Giai ฤoแบกn 4: Xem xรฉt kiแปm soรกt rแปงi ro',
-
-'ai-analysis.stage.complete': 'ฤรฃ hoร n thร nh',
-
-'ai-analysis.agent.investment_director': 'Giรกm ฤแปc ฤแบงu tฦฐ Giรกm ฤแปc',
-
-'ai-analysis.agent.role.investment_director': 'Phรขn tรญch toร n diแปn & Kแบฟt luแบญn cuแปi cรนng',
-
-'ai-analysis.agent.market': 'Nhร phรขn tรญch thแป trฦฐแปng',
-
-'ai-analysis.agent.role.market': 'Dแปฏ liแปu kแปน thuแบญt & thแป trฦฐแปng',
-
-'ai-analysis.agent.fundamental': 'Nhร phรขn tรญch cฦก bแบฃn',
-
-'ai-analysis.agent.role.fundamental': 'Tร i chรญnh & ฤแปnh giรก',
-
-'ai-analysis.agent.technical': 'Nhร phรขn tรญch kแปน thuแบญt',
-
-'ai-analysis.agent.role.technical': 'Cรกc chแป bรกo & biแปu ฤแป kแปน thuแบญt',
-
-'ai-analysis.agent.news': 'Nhร phรขn tรญch tin tแปฉc',
-
-'ai-analysis.agent.role.news': 'Bแป lแปc tin tแปฉc toร n cแบงu',
-
-'ai-analysis.agent.sentiment': 'Tรขm lรฝ thแป trฦฐแปng Nhร phรขn tรญch',
-
-'ai-analysis.agent.role.sentiment': 'Phรขn tรญch xรฃ hแปi & cแบฃm xรบc',
-
-'ai-analysis.agent.risk': 'Nhร phรขn tรญch rแปงi ro',
-
-'ai-analysis.agent.role.risk': 'Kiแปm tra rแปงi ro cฦก bแบฃn',
-
-'ai-analysis.agent.bull': 'Nhร phรขn tรญch lแบกc quan',
-
-'ai-analysis.agent.role.bull': 'Khรกm phรก ฤแปng lแปฑc tฤng trฦฐแปng',
-
-'ai-analysis.agent.bear': 'Nhร phรขn tรญch bi quan',
-
-'ai-analysis.agent.role.bear': 'Khรกm phรก rแปงi ro & ฤiแปm yแบฟu',
-
-'ai-analysis.agent.manager': 'Quแบฃn lรฝ nghiรชn cแปฉu',
-
-'ai-analysis.agent.role.manager': 'Ngฦฐแปi ฤiแปu phแปi tranh luแบญn',
-
-'ai-analysis.agent.trader': 'Nhร giao dแปch',
-
-'ai-analysis.agent.role.trader': 'Chiแบฟn lฦฐแปฃc gia ฤiแปu hร nh',
-
-'ai-analysis.agent.risky': 'Nhร phรขn tรญch nฤng ฤแปng',
-
-'ai-analysis.agent.role.risky': 'Chiแบฟn lฦฐแปฃc nฤng ฤแปng',
-
-'ai-analysis.agent.neutral': 'Nhร phรขn tรญch cรขn bแบฑng',
-
-'ai-analysis.agent.role.neutral': 'Chiแบฟn lฦฐแปฃc cรขn bแบฑng',
-
-'ai-analysis.agent.safe': 'Nhร phรขn tรญch thแบญn trแปng',
-
-'ai-analysis.agent.role.safe': 'Chiแบฟn lฦฐแปฃc thแบญn trแปng',
-
-'ai-analysis.agent.cro': 'Cรขn nhแบฏc Quแบฃn lรฝ rแปงi ro (CRO)',
-
-'ai-analysis.agent.role.cro': 'Ngฦฐแปi cรณ thแบฉm quyแปn quyแบฟt ฤแปnh cuแปi cรนng',
-
-'ai-analysis.script.market': 'ฤang truy xuแบฅt dแปฏ liแปu OHLCV tแปซ cรกc sร n giao dแปch lแปn...',
-
-'ai-analysis.script.fundamental': 'ฤang truy xuแบฅt bรกo cรกo tร i chรญnh hร ng quรฝ...',
-
-'ai-analysis.script.technical': 'Phรขn tรญch cรกc chแป bรกo kแปน thuแบญt vร mรด hรฌnh biแปu ฤแป...',
-
-'ai-analysis.script.news': 'ฤang quรฉt tin tแปฉc tร i chรญnh toร n cแบงu...',
-
-'ai-analysis.script.sentiment': 'Phรขn tรญch xu hฦฐแปng mแบกng xรฃ hแปi...',
-
-'ai-analysis.script.risk': 'ฤang tรญnh toรกn biแบฟn ฤแปng lแปch sแปญ...',
-
-'invite.inviteLink': 'Liรชn kแบฟt mแปi',
-
-'invite.copy': 'Sao chรฉp liรชn kแบฟt',
-
-'invite.copySuccess': 'Sao chรฉp thร nh cรดng!',
-
-'invite.copyFailed': 'Sao chรฉp thแบฅt bแบกi, vui lรฒng sao chรฉp thแปง cรดng',
-
-'invite.noInviteLink': 'Khรดng tแบกo ฤฦฐแปฃc liรชn kแบฟt mแปi',
-
-'invite.totalInvites': 'Tแปng sแป lแปi mแปi',
-
-'invite.totalReward': 'Tแปng sแป phแบงn thฦฐแปng',
-
-'invite.rules': 'Quy tแบฏc mแปi',
-
-'invite.rule1': 'Bแบกn sแบฝ nhแบญn ฤฦฐแปฃc phแบงn thฦฐแปng cho mแปi ngฦฐแปi bแบกn mแปi ฤฤng kรฝ thร nh cรดng',
-
-'invite.rule2': 'Bแบกn sแบฝ nhแบญn ฤฦฐแปฃc phแบงn thฦฐแปng bแป sung khi ngฦฐแปi bแบกn ฤฦฐแปฃc mแปi hoร n tแบฅt giao dแปch ฤแบงu tiรชn',
-
-'invite.rule3': 'Phแบงn thฦฐแปng mแปi sแบฝ ฤฦฐแปฃc cแปng trแปฑc tiแบฟp vร o tร i khoแบฃn cแปงa bแบกn',
-
-'invite.inviteList': 'Danh sรกch ngฦฐแปi ฤฦฐแปฃc mแปi',
-
-'invite.tasks': 'Trung tรขm nhiแปm vแปฅ',
-
-'invite.inviteeName': 'Ngฦฐแปi ฤฦฐแปฃc mแปi',
-
-'invite.inviteTime': 'Thแปi gian mแปi',
-
-'invite.status': 'Trแบกng thรกi',
-
-'invite.reward': 'Phแบงn thฦฐแปng',
-
-'invite.active': 'ฤang hoแบกt ฤแปng',
-
-'invite.inactive': 'Khรดng hoแบกt ฤแปng',
-
-'invite.completed': 'ฤรฃ hoร n thร nh',
-
-'invite.claimed': 'ฤรฃ nhแบญn',
-
-'invite.pending': 'ฤang chแป hoร n thร nh',
-
-'invite.goToTask': 'Chuyแปn ฤแบฟn hoร n thร nh',
-
-'invite.claimReward': 'Nhแบญn phแบงn thฦฐแปng',
-
-'invite.verify': 'Xรกc minh hoร n tแบฅt',
-
-'invite.verifySuccess': 'Xรกc minh thร nh cรดng Nhiแปm vแปฅ hoร n thร nh',
-
-'invite.verifyNotCompleted': 'Nhiแปm vแปฅ chฦฐa hoร n thร nh, vui lรฒng hoร n thร nh nhiแปm vแปฅ trฦฐแปc',
-
-'invite.verifyFailed': 'Xรกc minh thแบฅt bแบกi, vui lรฒng thแปญ lแบกi sau',
-
-'invite.claimSuccess': 'ฤรฃ nhแบญn thร nh cรดng {reward} QDT!',
-
-'invite.claimFailed': 'Khรดng thแป xรกc nhแบญn, vui lรฒng thแปญ lแบกi sau',
-
-'invite.totalRecords': 'Tแปng sแป {total} bแบฃn ghi',
-
-'invite.task.twitter.title': 'Chia sแบป lแบกi bร i ฤฤng trรชn Twitter cแปงa chรบng tรดi lรชn X (Twitter)',
-
-'invite.task.twitter.desc': 'Chia sแบป bร i ฤฤng chรญnh thแปฉc cแปงa chรบng tรดi lรชn tร i khoแบฃn Twitter cแปงa bแบกn (X)',
-
-'invite.task.youtube.title': 'ฤฤng kรฝ kรชnh YouTube cแปงa chรบng tรดi',
-
-'invite.task.youtube.desc': 'ฤฤng kรฝ vร theo dรตi kรชnh YouTube chรญnh thแปฉc cแปงa chรบng tรดi',
-
-'invite.task.telegram.title': 'Tham gia nhรณm Telegram cแปงa chรบng tรดi',
-
-'invite.task.telegram.desc': 'Tham gia nhรณm cแปng ฤแปng Telegram chรญnh thแปฉc cแปงa chรบng tรดi',
-
-'invite.task.discord.title': 'Tham gia Discord Mรกy chแปง',
-
-'invite.task.discord.desc': 'Tham gia mรกy chแปง cแปng ฤแปng Discord cแปงa chรบng tรดi',
-
-'message': '-',
-
-'layouts.usermenu.dialog.title': 'Thรดng tin',
-
-'layouts.usermenu.dialog.content': 'Bแบกn cรณ chแบฏc chแบฏn muแปn ฤฤng xuแบฅt khรดng?',
-
-'layouts.userLayout.title': 'Tรฌm kiแบฟm sแปฑ thแบญt trong sแปฑ khรดng chแบฏc chแบฏn',
-
-// Settings (Memory/Reflection)
-'settings.group.agent_memory': 'Bแป nhแป/Phแบฃn tฦฐ',
-'settings.group.reflection_worker': 'Worker xรกc minh phแบฃn tฦฐ tแปฑ ฤแปng',
-'settings.field.ENABLE_AGENT_MEMORY': 'Bแบญt bแป nhแป tรกc nhรขn',
-'settings.field.AGENT_MEMORY_ENABLE_VECTOR': 'Bแบญt truy vแบฅn vector (cแปฅc bแป)',
-'settings.field.AGENT_MEMORY_EMBEDDING_DIM': 'Kรญch thฦฐแปc embedding',
-'settings.field.AGENT_MEMORY_TOP_K': 'Sแป lฦฐแปฃng Top-K',
-'settings.field.AGENT_MEMORY_CANDIDATE_LIMIT': 'Kรญch thฦฐแปc cแปญa sแป แปฉng viรชn',
-'settings.field.AGENT_MEMORY_HALF_LIFE_DAYS': 'Chu kแปณ bรกn rรฃ theo thแปi gian (ngร y)',
-'settings.field.AGENT_MEMORY_W_SIM': 'Trแปng sแป tฦฐฦกng ฤแปng',
-'settings.field.AGENT_MEMORY_W_RECENCY': 'Trแปng sแป thแปi gian',
-'settings.field.AGENT_MEMORY_W_RETURNS': 'Trแปng sแป lแปฃi nhuแบญn',
-'settings.field.ENABLE_REFLECTION_WORKER': 'Bแบญt xรกc minh tแปฑ ฤแปng',
-'settings.field.REFLECTION_WORKER_INTERVAL_SEC': 'Khoแบฃng thแปi gian xรกc minh (giรขy)',
-
-// Profile - Notification Settings (Cร i ฤแบทt thรดng bรกo)
-'profile.notifications.title': 'Cร i ฤแบทt thรดng bรกo',
-'profile.notifications.hint': 'Cแบฅu hรฌnh phฦฐฦกng thแปฉc thรดng bรกo mแบทc ฤแปnh, sแบฝ ฤฦฐแปฃc sแปญ dแปฅng tแปฑ ฤแปng khi tแบกo giรกm sรกt tร i sแบฃn vร cแบฃnh bรกo',
-'profile.notifications.defaultChannels': 'Kรชnh thรดng bรกo mแบทc ฤแปnh',
-'profile.notifications.browser': 'Thรดng bรกo trong แปฉng dแปฅng',
-'profile.notifications.email': 'Email',
-'profile.notifications.phone': 'SMS',
-'profile.notifications.telegramBotToken': 'Telegram Bot Token',
-'profile.notifications.telegramBotTokenPlaceholder': 'Nhแบญp Telegram Bot Token cแปงa bแบกn',
-'profile.notifications.telegramBotTokenHint': 'Tแบกo bot qua @BotFather ฤแป lแบฅy Token',
-'profile.notifications.telegramChatId': 'Telegram Chat ID',
-'profile.notifications.telegramPlaceholder': 'Nhแบญp Telegram Chat ID cแปงa bแบกn (vรญ dแปฅ: 123456789)',
-'profile.notifications.telegramHint': 'Gแปญi /start cho @userinfobot ฤแป lแบฅy Chat ID',
-'profile.notifications.notifyEmail': 'Email thรดng bรกo',
-'profile.notifications.emailPlaceholder': 'ฤแปa chแป email nhแบญn thรดng bรกo',
-'profile.notifications.emailHint': 'Mแบทc ฤแปnh sแปญ dแปฅng email tร i khoแบฃn, cรณ thแป ฤแบทt email khรกc',
-'profile.notifications.phonePlaceholder': 'Nhแบญp sแป ฤiแปn thoแบกi (vรญ dแปฅ: +84123456789)',
-'profile.notifications.phoneHint': 'Cแบงn quแบฃn trแป viรชn cแบฅu hรฌnh dแปch vแปฅ Twilio',
-'profile.notifications.discordWebhook': 'Discord Webhook',
-'profile.notifications.discordPlaceholder': 'https://discord.com/api/webhooks/...',
-'profile.notifications.discordHint': 'Tแบกo Webhook trong cร i ฤแบทt mรกy chแปง Discord',
-'profile.notifications.webhookUrl': 'Webhook URL',
-'profile.notifications.webhookPlaceholder': 'https://your-server.com/webhook',
-'profile.notifications.webhookHint': 'URL Webhook tรนy chแปnh, gแปญi thรดng bรกo qua POST JSON',
-'profile.notifications.webhookToken': 'Webhook Token (Tรนy chแปn)',
-'profile.notifications.webhookTokenPlaceholder': 'Bearer Token ฤแป xรกc thแปฑc yรชu cแบงu',
-'profile.notifications.webhookTokenHint': 'Gแปญi dฦฐแปi dแบกng Authorization: Bearer Token ฤแบฟn Webhook',
-'profile.notifications.testBtn': 'Gแปญi thรดng bรกo thแปญ nghiแปm',
-'profile.notifications.saveSuccess': 'ฤรฃ lฦฐu cร i ฤแบทt thรดng bรกo thร nh cรดng',
-'profile.notifications.selectChannel': 'Vui lรฒng chแปn รญt nhแบฅt mแปt kรชnh thรดng bรกo',
-'profile.notifications.fillTelegramToken': 'Vui lรฒng ฤiแปn Telegram Bot Token',
-'profile.notifications.fillTelegram': 'Vui lรฒng ฤiแปn Telegram Chat ID',
-'profile.notifications.fillEmail': 'Vui lรฒng ฤiแปn email thรดng bรกo',
-'profile.notifications.testSent': 'ฤรฃ gแปญi thรดng bรกo thแปญ nghiแปm, vui lรฒng kiแปm tra cรกc kรชnh thรดng bรกo'
-
-}
-export default {
- ...components,
- ...locale
-}
diff --git a/quantdinger_vue/src/locales/lang/zh-CN.js b/quantdinger_vue/src/locales/lang/zh-CN.js
deleted file mode 100644
index 574a19c..0000000
--- a/quantdinger_vue/src/locales/lang/zh-CN.js
+++ /dev/null
@@ -1,2970 +0,0 @@
-import antd from 'ant-design-vue/es/locale-provider/zh_CN'
-import momentCN from 'moment/locale/zh-cn'
-
-const components = {
- antLocale: antd,
- momentName: 'zh-cn',
- momentLocale: momentCN
-}
-
-const locale = {
- // ้็จ
- 'common.confirm': '็กฎๅฎ',
- 'common.cancel': 'ๅๆถ',
- 'common.save': 'ไฟๅญ',
- 'common.delete': 'ๅ ้ค',
- 'common.edit': '็ผ่พ',
- 'common.add': 'ๆทปๅ ',
- 'common.close': 'ๅ
ณ้ญ',
- 'common.ok': '็กฎๅฎ',
- 'common.loading': 'ๅ ่ฝฝไธญ...',
- 'common.noData': 'ๆๆ ๆฐๆฎ',
- 'submit': 'ๆไบค',
- 'save': 'ไฟๅญ',
- 'submit.ok': 'ๆไบคๆๅ',
- 'save.ok': 'ไฟๅญๆๅ',
- 'menu.welcome': 'ๆฌข่ฟ',
- 'menu.home': 'ไธป้กต',
- 'menu.dashboard': 'ไปช่กจ็',
- 'menu.dashboard.indicator': 'ๆๆ ๅๆ',
- 'menu.dashboard.community': 'ๆๆ ๅธๅบ',
- 'menu.dashboard.analysis': 'AI ๅๆ',
- 'menu.dashboard.aiAssetAnalysis': 'AI่ตไบงๅๆ',
- 'menu.dashboard.aiQuant': 'AI ้ๅ',
- 'menu.dashboard.tradingAssistant': 'ไบคๆๅฉๆ',
- 'menu.dashboard.portfolio': '่ตไบง็ๆต',
- 'menu.dashboard.globalMarket': 'ๅ
จ็้่',
- 'menu.settings': '็ณป็ป่ฎพ็ฝฎ',
- 'menu.dashboard.aiTradingAssistant': 'AIไบคๆๅฉๆ',
- 'menu.dashboard.signalRobot': 'ไฟกๅทๆบๅจไบบ',
- 'menu.dashboard.monitor': '็ๆง้กต',
- 'menu.dashboard.workplace': 'ๅทฅไฝๅฐ',
- 'aiAssetAnalysis.title': 'AI่ตไบงๅๆ',
- 'aiAssetAnalysis.subtitle': 'ๆ่ตไบง็ๆตใๅณๆถๅๆใๅฎๆถไปปๅกๆพๅฐไธไธชๅทฅไฝๆต้๏ผๆไฝๆด็ด่งใๅ้ฆๆดๅๆถใ',
- 'aiAssetAnalysis.actions.quickAnalysis': '็ซๅณๅผๅงๅๆ',
- 'aiAssetAnalysis.actions.monitorTasks': '็ฎก็็ๆงไปปๅก',
- 'aiAssetAnalysis.actions.openStandalone': 'ๅจ็ฌ็ซ้กต้ขๆๅผ',
- 'aiAssetAnalysis.quickBar.title': 'ๅฟซๆทๅๆ',
- 'aiAssetAnalysis.quickBar.placeholder': 'ไป่ตไบงๆฑ ้ๆฉๆ ็',
- 'aiAssetAnalysis.quickBar.useInQuick': 'ๅธฆๅ
ฅๅณๆถๅๆ',
- 'aiAssetAnalysis.quickBar.runNow': 'ไธ้ฎๅๆ',
- 'aiAssetAnalysis.history.title': 'ๆ่ฟๅๆ',
- 'aiAssetAnalysis.history.empty': 'ๆๆ ๅๆ่ฎฐๅฝ',
- 'aiAssetAnalysis.actions.enterQuick': '่ฟๅ
ฅๅณๆถๅๆ',
- 'aiAssetAnalysis.actions.enterMonitor': '่ฟๅ
ฅๅฎๆถไปปๅกไธ่ตไบงๆฑ ',
- 'aiAssetAnalysis.flow.poolTitle': 'ๆๅปบ่ตไบงๆฑ ',
- 'aiAssetAnalysis.flow.poolDesc': 'ๅ
ๆทปๅ ๆไปไธๅ
ณๆณจๆ ็๏ผๅฝขๆ็ปไธๅๆๅฏน่ฑกๆฑ ใ',
- 'aiAssetAnalysis.flow.poolAction': 'ๅป็ฎก็่ตไบงๆฑ ',
- 'aiAssetAnalysis.flow.quickTitle': 'ๅณๆถๅๆ',
- 'aiAssetAnalysis.flow.quickDesc': 'ๅฏนไปปๆๆ ็ไธ้ฎๅ่ตท AI ๅๆ๏ผๅฟซ้ๆฟๅฐๅณ็ญๅปบ่ฎฎใ',
- 'aiAssetAnalysis.flow.quickAction': 'ๅปๅณๆถๅๆ',
- 'aiAssetAnalysis.flow.autoTitle': 'ๅฎๆถ็ๆง',
- 'aiAssetAnalysis.flow.autoDesc': '้
็ฝฎๅฎๆถไปปๅก่ชๅจ่ฟ่ก AI ๅๆ๏ผๅนถๆจ้ๆฅๅๅฐ้็ฅๆธ ้ใ',
- 'aiAssetAnalysis.flow.autoAction': 'ๅป้
็ฝฎไปปๅก',
- 'aiAssetAnalysis.tabs.quick': 'ๅณๆถๅๆ',
- 'aiAssetAnalysis.tabs.monitor': '่ตไบงๆฑ ไธๅฎๆถไปปๅก',
- 'aiAssetAnalysis.tabLead.quick': '้ๅไธดๆถๅคๆญ๏ผ้ๆฉๆ ็ๅ็ซๅปๅๆๅนถๆฅ็ๅๅฒ็ปๆใ',
- 'aiAssetAnalysis.tabLead.monitor': '้ๅๆ็ปญ่ท่ธช๏ผ็ปดๆคๆไปใ่ฎพ็ฝฎ็ๆง่ๅดไธๆง่ก้ข็ใ',
- // AI่ตไบงๅๆ - ๅ็กฎ็็ๆฟ
- 'aiAssetAnalysis.stats.totalAnalyses': 'ๅๆๆปๆฐ',
- 'aiAssetAnalysis.stats.accuracy': 'ๅ็กฎ็',
- 'aiAssetAnalysis.stats.avgReturn': 'ๅนณๅๅๆฅ',
- 'aiAssetAnalysis.stats.satisfaction': '็จๆทๆปกๆๅบฆ',
- 'aiAssetAnalysis.stats.decisions': 'ๅณ็ญๅๅธ',
- // AI่ตไบงๅๆ - ไบคๆๆบไผ
- 'aiAssetAnalysis.opportunities.title': 'AI ไบคๆๆบไผ้ท่พพ',
- 'aiAssetAnalysis.opportunities.empty': 'ๆๆ ไบคๆๆบไผ',
- 'aiAssetAnalysis.opportunities.analyze': 'ๅๆ',
- 'aiAssetAnalysis.opportunities.updateHint': 'ๆฏๅฐๆถๆดๆฐ',
- 'aiAssetAnalysis.opportunities.signal.overbought': '่ถ
ไนฐ',
- 'aiAssetAnalysis.opportunities.signal.oversold': '่ถ
ๅ',
- 'aiAssetAnalysis.opportunities.signal.bullish_momentum': '็ๆถจ',
- 'aiAssetAnalysis.opportunities.signal.bearish_momentum': '็่ท',
- 'aiAssetAnalysis.opportunities.market.Crypto': '๐ช ๅ ๅฏ',
- 'aiAssetAnalysis.opportunities.market.USStock': '๐ ็พ่ก',
- 'aiAssetAnalysis.opportunities.market.Forex': '๐ฑ ๅคๆฑ',
- 'aiAssetAnalysis.opportunities.reason.crypto.overbought': '24hๆถจๅน
{change}%๏ผ7ๆฅๆถจๅน
{change7d}%๏ผ็ญๆ่ถ
ไนฐ้ฃ้ฉ',
- 'aiAssetAnalysis.opportunities.reason.crypto.bullish_momentum': '24hๆถจๅน
{change}%๏ผไธๆถจๅจ่ฝๅผบๅฒ',
- 'aiAssetAnalysis.opportunities.reason.crypto.oversold': '24h่ทๅน
{change}%๏ผๅฏ่ฝ่ถ
ๅๅๅผน',
- 'aiAssetAnalysis.opportunities.reason.crypto.bearish_momentum': '24h่ทๅน
{change}%๏ผไธ่ท่ถๅฟๆๆพ',
- 'aiAssetAnalysis.opportunities.reason.usstock.overbought': 'ๆฅๆถจๅน
{change}%๏ผ็ญๆๆถจๅน
่พๅคง๏ผๆณจๆๅ่ฐ้ฃ้ฉ',
- 'aiAssetAnalysis.opportunities.reason.usstock.bullish_momentum': 'ๆฅๆถจๅน
{change}%๏ผไธๆถจๅจ่ฝๅผบๅฒ',
- 'aiAssetAnalysis.opportunities.reason.usstock.oversold': 'ๆฅ่ทๅน
{change}%๏ผๅฏ่ฝ่ถ
ๅๅๅผน',
- 'aiAssetAnalysis.opportunities.reason.usstock.bearish_momentum': 'ๆฅ่ทๅน
{change}%๏ผไธ่ท่ถๅฟๆๆพ',
- 'aiAssetAnalysis.opportunities.reason.forex.overbought': 'ๆฅๆถจๅน
{change}%๏ผๆฑ็ๆณขๅจๅง็๏ผๆณจๆๅ่ฐ',
- 'aiAssetAnalysis.opportunities.reason.forex.bullish_momentum': 'ๆฅๆถจๅน
{change}%๏ผไธๆถจๅจ่ฝ่พๅผบ',
- 'aiAssetAnalysis.opportunities.reason.forex.oversold': 'ๆฅ่ทๅน
{change}%๏ผๆฑ็ๆณขๅจๅง็๏ผๅฏ่ฝๅๅผน',
- 'aiAssetAnalysis.opportunities.reason.forex.bearish_momentum': 'ๆฅ่ทๅน
{change}%๏ผไธ่ท่ถๅฟๆๆพ',
- // AI่ตไบงๅๆ - ไธ้ฎ็ปๅไฝๆฃ
- 'aiAssetAnalysis.checkup.title': '็ปๅไฝๆฃ',
- 'aiAssetAnalysis.checkup.btn': '็ปๅไฝๆฃ',
- 'aiAssetAnalysis.checkup.desc': 'ไธ้ฎๅฏนๆจ่ตไบงๆฑ ไธญ็ๆๆๆไป่ฟ่ก AI ๅๆ๏ผๅฟซ้ไบ่งฃๆฏไธชๆ ็็ๅฝๅ็ถๆๅๆไฝๅปบ่ฎฎใ',
- 'aiAssetAnalysis.checkup.start': 'ๅผๅงไฝๆฃ',
- 'aiAssetAnalysis.checkup.progress': 'ๆญฃๅจๅๆ {current}/{total}...',
- 'aiAssetAnalysis.checkup.noPositions': '่ตไบงๆฑ ไธญๆๆ ๆไป๏ผ่ฏทๅ
ๆทปๅ ่ตไบงใ',
- 'aiAssetAnalysis.checkup.complete': 'ไฝๆฃๅฎๆ',
- 'aiAssetAnalysis.checkup.failed': 'ๅๆๅคฑ่ดฅ',
- 'aiAssetAnalysis.checkup.rerun': '้ๆฐไฝๆฃ',
- // AI่ตไบงๅๆ - ๅ
จๅฑๆ็ดข
- 'aiAssetAnalysis.search.hint': 'ๆ็ดข',
- 'aiAssetAnalysis.search.placeholder': 'ๆ็ดขไปปๆๆ ็... (Ctrl+K)',
- 'aiAssetAnalysis.search.noResults': 'ๆชๆพๅฐๅน้
็ปๆ๏ผ่ฏทๅฐ่ฏๅ
ถไปๅ
ณ้ฎ่ฏ',
- 'menu.form': '่กจๅ้กต',
- 'menu.form.basic-form': 'ๅบ็ก่กจๅ',
- 'menu.form.step-form': 'ๅๆญฅ่กจๅ',
- 'menu.form.step-form.info': 'ๅๆญฅ่กจๅ๏ผๅกซๅ่ฝฌ่ดฆไฟกๆฏ๏ผ',
- 'menu.form.step-form.confirm': 'ๅๆญฅ่กจๅ๏ผ็กฎ่ฎค่ฝฌ่ดฆไฟกๆฏ๏ผ',
- 'menu.form.step-form.result': 'ๅๆญฅ่กจๅ๏ผๅฎๆ๏ผ',
- 'menu.form.advanced-form': '้ซ็บง่กจๅ',
- 'menu.list': 'ๅ่กจ้กต',
- 'menu.list.table-list': 'ๆฅ่ฏข่กจๆ ผ',
- 'menu.list.basic-list': 'ๆ ๅๅ่กจ',
- 'menu.list.card-list': 'ๅก็ๅ่กจ',
- 'menu.list.search-list': 'ๆ็ดขๅ่กจ',
- 'menu.list.search-list.articles': 'ๆ็ดขๅ่กจ๏ผๆ็ซ ๏ผ',
- 'menu.list.search-list.projects': 'ๆ็ดขๅ่กจ๏ผ้กน็ฎ๏ผ',
- 'menu.list.search-list.applications': 'ๆ็ดขๅ่กจ๏ผๅบ็จ๏ผ',
- 'menu.profile': '่ฏฆๆ
้กต',
- 'menu.profile.basic': 'ๅบ็ก่ฏฆๆ
้กต',
- 'menu.profile.advanced': '้ซ็บง่ฏฆๆ
้กต',
- 'menu.result': '็ปๆ้กต',
- 'menu.result.success': 'ๆๅ้กต',
- 'menu.result.fail': 'ๅคฑ่ดฅ้กต',
- 'menu.exception': 'ๅผๅธธ้กต',
- 'menu.exception.not-permission': '403',
- 'menu.exception.not-find': '404',
- 'menu.exception.server-error': '500',
- 'menu.exception.trigger': '่งฆๅ้่ฏฏ',
- 'menu.account': 'ไธชไบบ้กต',
- 'menu.account.center': 'ไธชไบบไธญๅฟ',
- 'menu.account.settings': 'ไธชไบบ่ฎพ็ฝฎ',
- 'menu.account.trigger': '่งฆๅๆฅ้',
- 'menu.account.logout': '้ๅบ็ปๅฝ',
- 'menu.wallet': 'ๆ็้ฑๅ
',
- 'menu.docs': 'ๆๆกฃไธญๅฟ',
- 'menu.docs.detail': 'ๆๆกฃ่ฏฆๆ
',
- 'menu.header.refreshPage': 'ๅทๆฐ้กต้ข',
- 'menu.invite.friends': '้่ฏทๅฅฝๅ',
- 'app.setting.pagestyle': 'ๆดไฝ้ฃๆ ผ่ฎพ็ฝฎ',
- 'app.setting.pagestyle.light': 'ไบฎ่ฒ่ๅ้ฃๆ ผ',
- 'app.setting.pagestyle.dark': 'ๆ่ฒ่ๅ้ฃๆ ผ',
- 'app.setting.pagestyle.realdark': 'ๆ้ปๆจกๅผ',
- 'app.setting.themecolor': 'ไธป้ข่ฒ',
- 'app.setting.navigationmode': 'ๅฏผ่ชๆจกๅผ',
- 'app.setting.sidemenu.nav': 'ไพง่พนๆ ๅฏผ่ช',
- 'app.setting.topmenu.nav': '้กถ้จๆ ๅฏผ่ช',
- 'app.setting.content-width': 'ๅ
ๅฎนๅบๅๅฎฝๅบฆ',
- 'app.setting.content-width.tooltip': '่ฏฅ่ฎพๅฎไป
[้กถ้จๆ ๅฏผ่ช] ๆถๆๆ',
- 'app.setting.content-width.fixed': 'ๅบๅฎ',
- 'app.setting.content-width.fluid': 'ๆตๅผ',
- 'app.setting.fixedheader': 'ๅบๅฎ Header',
- 'app.setting.fixedheader.tooltip': 'ๅบๅฎ Header ๆถๅฏ้
็ฝฎ',
- 'app.setting.autoHideHeader': 'ไธๆปๆถ้่ Header',
- 'app.setting.fixedsidebar': 'ๅบๅฎไพง่พน่ๅ',
- 'app.setting.sidemenu': 'ไพง่พน่ๅๅธๅฑ',
- 'app.setting.topmenu': '้กถ้จ่ๅๅธๅฑ',
- 'app.setting.othersettings': 'ๅ
ถไป่ฎพ็ฝฎ',
- 'app.setting.weakmode': '่ฒๅผฑๆจกๅผ',
- 'app.setting.multitab': 'ๅค้กต็ญพๆจกๅผ',
- 'app.setting.copy': 'ๆท่ด่ฎพ็ฝฎ',
- 'app.setting.loading': 'ๅ ่ฝฝไธป้ขไธญ',
- 'app.setting.copyinfo': 'ๆท่ด่ฎพ็ฝฎๆๅ src/config/defaultSettings.js',
- 'app.setting.copy.success': 'ๅคๅถๅฎๆฏ',
- 'app.setting.copy.fail': 'ๅคๅถๅคฑ่ดฅ',
- 'app.setting.theme.switching': 'ๆญฃๅจๅๆขไธป้ข๏ผ',
- 'app.setting.production.hint': '้
็ฝฎๆ ๅชๅจๅผๅ็ฏๅข็จไบ้ข่ง๏ผ็ไบง็ฏๅขไธไผๅฑ็ฐ๏ผ่ฏทๆท่ดๅๆๅจไฟฎๆน้
็ฝฎๆไปถ',
- 'app.setting.themecolor.daybreak': 'ๆๆ่๏ผ้ป่ฎค๏ผ',
- 'app.setting.themecolor.dust': '่ๆฎ',
- 'app.setting.themecolor.volcano': '็ซๅฑฑ',
- 'app.setting.themecolor.sunset': 'ๆฅๆฎ',
- 'app.setting.themecolor.cyan': 'ๆ้',
- 'app.setting.themecolor.green': 'ๆๅ
็ปฟ',
- 'app.setting.themecolor.geekblue': 'ๆๅฎข่',
- 'app.setting.themecolor.purple': '้
ฑ็ดซ',
- 'app.setting.tooltip': '้กต้ข่ฎพ็ฝฎ',
-
- // ้็ฅไธญๅฟ
- 'notice.title': '้็ฅไธญๅฟ',
- 'notice.empty': 'ๆๆ ้็ฅ',
- 'notice.markAllRead': 'ๅ
จ้จๅทฒ่ฏป',
- 'notice.clear': 'ๆธ
็ฉบ้็ฅ',
- 'notice.close': 'ๅ
ณ้ญ',
- 'notice.justNow': 'ๅๅ',
- 'notice.minutesAgo': 'ๅ้ๅ',
- 'notice.hoursAgo': 'ๅฐๆถๅ',
- 'notice.daysAgo': 'ๅคฉๅ',
- 'notice.detailInfo': '่ฏฆ็ปไฟกๆฏ',
- 'notice.aiDecision': 'AIๅณ็ญ',
- 'notice.confidence': '็ฝฎไฟกๅบฆ',
- 'notice.reasoning': 'ๅๆ็็ฑ',
- 'notice.symbol': 'ๆ ็ไปฃ็ ',
- 'notice.currentPrice': 'ๅฝๅไปทๆ ผ',
- 'notice.triggerPrice': '่งฆๅไปทๆ ผ',
- 'notice.action': 'ๆไฝ',
- 'notice.quantity': 'ๆฐ้',
- 'notice.viewPortfolio': 'ๆฅ็ๆไป',
- 'notice.type.aiMonitor': 'AI็ๆง',
- 'notice.type.priceAlert': 'ไปทๆ ผๆ้',
- 'notice.type.signal': 'ไบคๆไฟกๅท',
- 'notice.type.buy': 'ไนฐๅ
ฅไฟกๅท',
- 'notice.type.sell': 'ๅๅบไฟกๅท',
- 'notice.type.hold': 'ๆๆๅปบ่ฎฎ',
- 'notice.type.trade': 'ไบคๆๆง่ก',
- 'notice.type.notification': '็ณป็ป้็ฅ',
-
- 'user.login.userName': '็จๆทๅ',
- 'user.login.password': 'ๅฏ็ ',
- 'user.login.username.placeholder': '่ดฆๆท: admin',
- 'user.login.password.placeholder': 'ๅฏ็ : admin or ant.design',
- 'user.login.message-invalid-credentials': '็ปๅฝๅคฑ่ดฅ๏ผ่ฏทๆฃๆฅ้ฎ็ฎฑๅ้ช่ฏ็ ',
- 'user.login.message-invalid-verification-code': '้ช่ฏ็ ้่ฏฏ',
- 'user.login.tab-login-credentials': '่ดฆๆทๅฏ็ ็ปๅฝ',
- 'user.login.tab-login-email': '้ฎ็ฎฑ็ปๅฝ',
- 'user.login.tab-login-mobile': 'ๆๆบๅท็ปๅฝ',
- 'user.login.captcha.placeholder': '่ฏท่พๅ
ฅๅพๅฝข้ช่ฏ็ ',
- 'user.login.mobile.placeholder': 'ๆๆบๅท',
- 'user.login.mobile.verification-code.placeholder': '้ช่ฏ็ ',
- 'user.login.email.placeholder': '่ฏท่พๅ
ฅ้ฎ็ฎฑๅฐๅ',
- 'user.login.email.verification-code.placeholder': '่ฏท่พๅ
ฅ้ช่ฏ็ ',
- 'user.login.email.sending': '้ช่ฏ็ ๅ้ไธญ...',
- 'user.login.email.send-success-title': 'ๆ็คบ',
- 'user.login.email.send-success': '้ช่ฏ็ ๅ้ๆๅ๏ผ่ฏทๆฅๆถ้ฎไปถ',
- 'user.login.sms.send-success': '้ช่ฏ็ ๅ้ๆๅ๏ผ่ฏทๆฅๆถ็ญไฟก',
- 'user.login.remember-me': '่ชๅจ็ปๅฝ',
- 'user.login.forgot-password': 'ๅฟ่ฎฐๅฏ็ ',
- 'user.login.sign-in-with': 'ๅ
ถไป็ปๅฝๆนๅผ',
- 'user.login.signup': 'ๆณจๅ่ดฆๆท',
- 'user.login.login': '็ปๅฝ',
- 'user.register.register': 'ๆณจๅ',
- 'user.register.email.placeholder': '้ฎ็ฎฑ',
- 'user.register.password.placeholder': '่ฏท่ณๅฐ่พๅ
ฅ 6 ไธชๅญ็ฌฆใ่ฏทไธ่ฆไฝฟ็จๅฎนๆ่ขซ็ๅฐ็ๅฏ็ ใ',
- 'user.register.password.popover-message': '่ฏท่ณๅฐ่พๅ
ฅ 6 ไธชๅญ็ฌฆใ่ฏทไธ่ฆไฝฟ็จๅฎนๆ่ขซ็ๅฐ็ๅฏ็ ใ',
- 'user.register.confirm-password.placeholder': '็กฎ่ฎคๅฏ็ ',
- 'user.register.get-verification-code': '่ทๅ้ช่ฏ็ ',
- 'user.register.sign-in': 'ไฝฟ็จๅทฒๆ่ดฆๆท็ปๅฝ',
- 'user.register-result.msg': 'ไฝ ็่ดฆๆท๏ผ{email} ๆณจๅๆๅ',
- 'user.register-result.activation-email': 'ๆฟๆดป้ฎไปถๅทฒๅ้ๅฐไฝ ็้ฎ็ฎฑไธญ๏ผ้ฎไปถๆๆๆไธบ24ๅฐๆถใ่ฏทๅๆถ็ปๅฝ้ฎ็ฎฑ๏ผ็นๅป้ฎไปถไธญ็้พๆฅๆฟๆดป่ดฆๆทใ',
- 'user.register-result.back-home': '่ฟๅ้ฆ้กต',
- 'user.register-result.view-mailbox': 'ๆฅ็้ฎ็ฎฑ',
- 'user.email.required': '่ฏท่พๅ
ฅ้ฎ็ฎฑๅฐๅ๏ผ',
- 'user.email.wrong-format': '้ฎ็ฎฑๅฐๅๆ ผๅผ้่ฏฏ๏ผ',
- 'user.userName.required': '่ฏท่พๅ
ฅ่ดฆๆทๅๆ้ฎ็ฎฑๅฐๅ',
- 'user.password.required': '่ฏท่พๅ
ฅๅฏ็ ๏ผ',
- 'user.password.twice.msg': 'ไธคๆฌก่พๅ
ฅ็ๅฏ็ ไธๅน้
!',
- 'user.password.strength.msg': 'ๅฏ็ ๅผบๅบฆไธๅค ',
- 'user.password.strength.strong': 'ๅผบๅบฆ๏ผๅผบ',
- 'user.password.strength.medium': 'ๅผบๅบฆ๏ผไธญ',
- 'user.password.strength.low': 'ๅผบๅบฆ๏ผไฝ',
- 'user.password.strength.short': 'ๅผบๅบฆ๏ผๅคช็ญ',
- 'user.confirm-password.required': '่ฏท็กฎ่ฎคๅฏ็ ๏ผ',
- 'user.phone-number.required': '่ฏท่พๅ
ฅๆญฃ็กฎ็ๆๆบๅท',
- 'user.phone-number.wrong-format': 'ๆๆบๅทๆ ผๅผ้่ฏฏ๏ผ',
- 'user.verification-code.required': '่ฏท่พๅ
ฅ้ช่ฏ็ ๏ผ',
- 'user.captcha.required': '่ฏท่พๅ
ฅๅพๅฝข้ช่ฏ็ ๏ผ',
- 'user.login.infos': 'QuantDinger ๆฏไธไธช AI ๅคๆบ่ฝไฝ่ก็ฅจๅๆ่พ
ๅฉๅทฅๅ
ท๏ผไธๅ
ทๅค่ฏๅธๆ่ตๅจ่ฏข่ต่ดจใๅนณๅฐไธญ็ๆๆๅๆ็ปๆใ่ฏๅใๅ่ๆ่งๅ็ฑ AI ๅบไบๅๅฒๆฐๆฎ่ชๅจ็ๆ๏ผไป
ไพๅญฆไน ใ็ ็ฉถไธๆๆฏไบคๆตไฝฟ็จ,ไธๆๆไปปไฝๆ่ตๅปบ่ฎฎๆๅณ็ญไพๆฎใ่ก็ฅจๆ่ตๅญๅจๅธๅบ้ฃ้ฉใๆตๅจๆง้ฃ้ฉใๆฟ็ญ้ฃ้ฉ็ญๅค็ง้ฃ้ฉ๏ผๅฏ่ฝๅฏผ่ดๆฌ้ๆๅคฑใ็จๆทๅบๅบไบ่ช่บซ้ฃ้ฉๆฟๅ่ฝๅ็ฌ็ซๅณ็ญ๏ผไฝฟ็จๆฌๅทฅๅ
ทไบง็็ไปปไฝๆ่ต่กไธบๅๅ
ถๅๆ็ฑ็จๆท่ช่กๆฟๆ
ใๅธๅบๆ้ฃ้ฉ๏ผๆ่ต้่ฐจๆ
ใ',
- 'user.login.tab-login-web3': 'Web3 ็ปๅฝ',
- 'user.login.web3.tip': 'ไฝฟ็จ้ฑๅ
่ฟ่ก็ญพๅ็ปๅฝ',
- 'user.login.web3.connect': '่ฟๆฅ้ฑๅ
ๅนถ็ปๅฝ',
- 'user.login.web3.no-wallet': 'ๆชๆฃๆตๅฐ้ฑๅ
',
- 'user.login.web3.no-address': 'ๆช่ทๅๅฐ้ฑๅ
ๅฐๅ',
- 'user.login.web3.nonce-failed': '่ทๅ้ๆบๆฐๅคฑ่ดฅ',
- 'user.login.web3.verify-failed': '็ญพๅ้ช่ฏๅคฑ่ดฅ',
- 'user.login.web3.success': '็ปๅฝๆๅ',
- 'user.login.web3.failed': '้ฑๅ
็ปๅฝๅคฑ่ดฅ',
- 'nav.no_wallet': 'ๆชๆฃๆตๅฐ้ฑๅ
',
- 'nav.copy': 'ๅคๅถ',
- 'nav.copy_success': 'ๅคๅถๆๅ',
- 'user.login.oauth.google': 'ไฝฟ็จ Google ็ปๅฝ',
- 'user.login.oauth.github': 'ไฝฟ็จ GitHub ็ปๅฝ',
- 'user.login.oauth.loading': 'ๆญฃๅจ่ทณ่ฝฌๅฐๆๆ้กต้ข...',
- 'user.login.oauth.failed': 'OAuth ็ปๅฝๅคฑ่ดฅ',
- 'user.login.oauth.get-url-failed': '่ทๅๆๆ้พๆฅๅคฑ่ดฅ',
- 'user.login.subtitle': '้ฉฑๅจ็ๅ
จ็ๅธๅบ้ๅๆดๅฏ',
- 'user.login.legal.title': 'ๆณๅพๅ
่ดฃๅฃฐๆ',
- 'user.login.legal.view': 'ๆฅ็ๆณๅพๅ
่ดฃๅฃฐๆ',
- 'user.login.legal.collapse': 'ๆถ่ตทๆณๅพๅ
่ดฃๅฃฐๆ',
- 'user.login.legal.agree': 'ๆๅทฒ้
่ฏปๅนถๅๆๆณๅพๅ
่ดฃๅฃฐๆ',
- 'user.login.legal.required': '่ฏทๅ
้
่ฏปๅนถๅพ้ๆณๅพๅ
่ดฃๅฃฐๆ',
- 'user.login.legal.content': 'QuantDinger ๆฏไธไธช AI ๅคๆบ่ฝไฝ่ก็ฅจๅๆ่พ
ๅฉๅทฅๅ
ท๏ผไธๅ
ทๅค่ฏๅธๆ่ตๅจ่ฏข่ต่ดจใๅนณๅฐไธญ็ๆๆๅๆ็ปๆใ่ฏๅใๅ่ๆ่งๅ็ฑ AI ๅบไบๅๅฒๆฐๆฎ่ชๅจ็ๆ๏ผไป
ไพๅญฆไน ใ็ ็ฉถไธๆๆฏไบคๆตไฝฟ็จ๏ผไธๆๆไปปไฝๆ่ตๅปบ่ฎฎๆๅณ็ญไพๆฎใ่ก็ฅจๆ่ตๅญๅจๅธๅบ้ฃ้ฉใๆตๅจๆง้ฃ้ฉใๆฟ็ญ้ฃ้ฉ็ญๅค็ง้ฃ้ฉ๏ผๅฏ่ฝๅฏผ่ดๆฌ้ๆๅคฑใ็จๆทๅบๅบไบ่ช่บซ้ฃ้ฉๆฟๅ่ฝๅ็ฌ็ซๅณ็ญ๏ผไฝฟ็จๆฌๅทฅๅ
ทไบง็็ไปปไฝๆ่ต่กไธบๅๅ
ถๅๆ็ฑ็จๆท่ช่กๆฟๆ
ใๅธๅบๆ้ฃ้ฉ๏ผๆ่ต้่ฐจๆ
ใ',
- 'user.login.privacy.title': '็จๆท้็งๆกๆฌพ',
- 'user.login.privacy.view': 'ๆฅ็็จๆท้็งๆกๆฌพ',
- 'user.login.privacy.collapse': 'ๆถ่ตท็จๆท้็งๆกๆฌพ',
- 'user.login.privacy.content': 'ๆไปฌ้่งๆจ็้็งไธๆฐๆฎไฟๆคใ1) ๆถ้่ๅด๏ผไป
ๆถ้ๅฎ็ฐๅ่ฝๆ้็ไฟกๆฏ๏ผๅฆ้ฎ็ฎฑใๆๆบๅทใๅบๅทใWeb3 ้ฑๅ
ๅฐๅ๏ผไปฅๅๅฟ
่ฆ็ๆฅๅฟไธ่ฎพๅคไฟกๆฏใ2) ไฝฟ็จ็ฎ็๏ผ็จไบ่ดฆๆท็ปๅฝไธๅฎๅ
จๆ ก้ชใๆๅกๅ่ฝๆไพใ้ฎ้ขๆๆฅไธๅ่ง่ฆๆฑใ3) ๅญๅจไธๅฎๅ
จ๏ผๆฐๆฎๅ ๅฏๅญๅจ๏ผๅนถ้ๅๅฟ
่ฆ็ๆ้ไธ่ฎฟ้ฎๆงๅถๆชๆฝ๏ผๅฐฝๅ้ฒๆญขๆช็ปๆๆ็่ฎฟ้ฎใๆซ้ฒๆไธขๅคฑใ4) ๅ
ฑไบซไธ็ฌฌไธๆน๏ผ้คๆณๅพๆณ่ง่ฆๆฑๆๅฑฅ่กๆๅกๆๅฟ
้ๅค๏ผไธไผไธ็ฌฌไธๆนๅ
ฑไบซๆจ็ไธชไบบไฟกๆฏ๏ผ่ฅๆถๅ็ฌฌไธๆนๆๅก๏ผๅฆ้ฑๅ
ใ็ญไฟกๆๅกๅ๏ผ๏ผไป
ๅจๅฎ็ฐๅ่ฝๆ้็ๆๅฐ่ๅดๅ
ๅค็ใ5) Cookies/ๆฌๅฐๅญๅจ๏ผ็จไบ็ปๅฝๆไธๅฟ
่ฆ็ไผ่ฏ็ปดๆ๏ผๅฆไปค็ใPHPSESSID๏ผ๏ผๆจๅฏๅจๆต่งๅจไธญ่ฟ่กๆธ
็ๆ้ๅถใ6) ไธชไบบๆๅฉ๏ผๆจๅฏๆ นๆฎๆณๅพๆณ่ง่กไฝฟๆฅ่ฏขใๆดๆญฃใๅ ้คใๆคๅๅๆ็ญๆๅฉใ7) ๅๆดไธ้็ฅ๏ผๆฌๆกๆฌพๆดๆฐๅๅฐๅจ้กต้ขๆพ่ไฝ็ฝฎๆ็คบใ็ปง็ปญไฝฟ็จๆฌๆๅกๅณ่กจ็คบๆจๅทฒ้
่ฏปๅนถๅๆๆดๆฐๅ
ๅฎนใ่ฅๆจไธๅๆๆฌๆกๆฌพๆๅ
ถไธญไปปไฝๆดๆฐ๏ผ่ฏทๅๆญขไฝฟ็จๆฌๆๅกๅนถ่็ณปๆไปฌใ',
-
- // Login page additions
- 'user.login.username': '็จๆทๅ',
- 'user.login.usernameRequired': '่ฏท่พๅ
ฅ็จๆทๅ',
- 'user.login.passwordRequired': '่ฏท่พๅ
ฅๅฏ็ ',
- 'user.login.tab': '็ปๅฝ',
- 'user.login.submit': '็ปๅฝ',
- 'user.login.register': 'ๆณจๅ่ดฆๆท',
- 'user.login.forgotPassword': 'ๅฟ่ฎฐๅฏ็ ?',
- 'user.login.orLoginWith': 'ๆไฝฟ็จไปฅไธๆนๅผ็ปๅฝ',
- 'user.login.methodPassword': 'ๅฏ็ ็ปๅฝ',
- 'user.login.methodCode': '้ช่ฏ็ ็ปๅฝ',
- 'user.login.email': '้ฎ็ฎฑ',
- 'user.login.emailRequired': '่ฏท่พๅ
ฅ้ฎ็ฎฑ',
- 'user.login.emailInvalid': '้ฎ็ฎฑๆ ผๅผไธๆญฃ็กฎ',
- 'user.login.verificationCode': '้ช่ฏ็ ',
- 'user.login.codeRequired': '่ฏท่พๅ
ฅ้ช่ฏ็ ',
- 'user.login.sendCode': 'ๅ้',
- 'user.login.codeSent': '้ช่ฏ็ ๅทฒๅ้',
- 'user.login.codeLoginHint': 'ๆฐ็จๆทๅฐ่ชๅจๆณจๅ',
- 'user.login.welcomeNew': 'ๆฌข่ฟ!',
- 'user.login.accountCreated': 'ๆจ็่ดฆๆทๅทฒๅๅปบๆๅ',
-
- // OAuth
- 'user.oauth.processing': 'ๆญฃๅจๅค็็ปๅฝ...',
- 'user.oauth.error.missing_params': '็ผบๅฐๅฟ
่ฆๅๆฐ',
- 'user.oauth.error.invalid_state': 'ๆ ๆ็็ถๆๅๆฐ',
- 'user.oauth.error.user_creation_failed': 'ๅๅปบ็จๆทๅคฑ่ดฅ',
- 'user.oauth.error.server_error': 'ๆๅกๅจ้่ฏฏ',
-
- // Register page
- 'user.register.tab': 'ๆณจๅ',
- 'user.register.title': 'ๅๅปบ่ดฆๆท',
- 'user.register.email': '้ฎ็ฎฑ',
- 'user.register.emailRequired': '่ฏท่พๅ
ฅ้ฎ็ฎฑ',
- 'user.register.emailInvalid': '้ฎ็ฎฑๆ ผๅผไธๆญฃ็กฎ',
- 'user.register.verificationCode': '้ช่ฏ็ ',
- 'user.register.codeRequired': '่ฏท่พๅ
ฅ้ช่ฏ็ ',
- 'user.register.sendCode': 'ๅ้้ช่ฏ็ ',
- 'user.register.codeSent': '้ช่ฏ็ ๅทฒๅ้',
- 'user.register.username': '็จๆทๅ',
- 'user.register.usernameRequired': '่ฏท่พๅ
ฅ็จๆทๅ',
- 'user.register.usernameLength': '็จๆทๅ้่ฆ3-30ไธชๅญ็ฌฆ',
- 'user.register.usernamePattern': 'ไปฅๅญๆฏๅผๅคด๏ผๅช่ฝๅ
ๅซๅญๆฏใๆฐๅญๅไธๅ็บฟ',
- 'user.register.password': 'ๅฏ็ ',
- 'user.register.passwordRequired': '่ฏท่พๅ
ฅๅฏ็ ',
- 'user.register.confirmPassword': '็กฎ่ฎคๅฏ็ ',
- 'user.register.confirmPasswordRequired': '่ฏท็กฎ่ฎคๅฏ็ ',
- 'user.register.passwordMismatch': 'ไธคๆฌก่พๅ
ฅ็ๅฏ็ ไธไธ่ด',
- 'user.register.submit': 'ๅๅปบ่ดฆๆท',
- 'user.register.haveAccount': 'ๅทฒๆ่ดฆๆท?',
- 'user.register.login': '็ปๅฝ',
- 'user.register.success': 'ๆณจๅๆๅ',
- 'user.register.pleaseLogin': '่ฏทไฝฟ็จๆฐ่ดฆๆท็ปๅฝ',
- 'user.register.pwdMinLength': '่ณๅฐ8ไธชๅญ็ฌฆ',
- 'user.register.pwdUppercase': '่ณๅฐๅ
ๅซไธไธชๅคงๅๅญๆฏ',
- 'user.register.pwdLowercase': '่ณๅฐๅ
ๅซไธไธชๅฐๅๅญๆฏ',
- 'user.register.pwdNumber': '่ณๅฐๅ
ๅซไธไธชๆฐๅญ',
-
- // Reset password page
- 'user.resetPassword.title': '้็ฝฎๅฏ็ ',
- 'user.resetPassword.email': '้ฎ็ฎฑ',
- 'user.resetPassword.emailRequired': '่ฏท่พๅ
ฅ้ฎ็ฎฑ',
- 'user.resetPassword.emailInvalid': '้ฎ็ฎฑๆ ผๅผไธๆญฃ็กฎ',
- 'user.resetPassword.verificationCode': '้ช่ฏ็ ',
- 'user.resetPassword.codeRequired': '่ฏท่พๅ
ฅ้ช่ฏ็ ',
- 'user.resetPassword.sendCode': 'ๅ้้ช่ฏ็ ',
- 'user.resetPassword.codeSent': '้ช่ฏ็ ๅทฒๅ้',
- 'user.resetPassword.next': 'ไธไธๆญฅ',
- 'user.resetPassword.backToLogin': '่ฟๅ็ปๅฝ',
- 'user.resetPassword.resettingFor': 'ๆญฃๅจไธบไปฅไธ้ฎ็ฎฑ้็ฝฎๅฏ็ ',
- 'user.resetPassword.newPassword': 'ๆฐๅฏ็ ',
- 'user.resetPassword.passwordRequired': '่ฏท่พๅ
ฅๆฐๅฏ็ ',
- 'user.resetPassword.confirmPassword': '็กฎ่ฎคๆฐๅฏ็ ',
- 'user.resetPassword.confirmPasswordRequired': '่ฏท็กฎ่ฎคๆฐๅฏ็ ',
- 'user.resetPassword.submit': '้็ฝฎๅฏ็ ',
- 'user.resetPassword.back': '่ฟๅ',
- 'user.resetPassword.successTitle': 'ๅฏ็ ้็ฝฎๆๅ',
- 'user.resetPassword.successSubtitle': 'ๆจ็ฐๅจๅฏไปฅไฝฟ็จๆฐๅฏ็ ็ปๅฝไบ',
- 'user.resetPassword.goToLogin': 'ๅๅพ็ปๅฝ',
-
- // Security
- 'user.security.retry': '้่ฏ',
-
- // Profile - change password
- 'profile.passwordHintNew': 'ไธบไบๅฎๅ
จ๏ผไฟฎๆนๅฏ็ ้่ฆ้ฎ็ฎฑ้ช่ฏใๅฏ็ ่ณๅฐ8ไธชๅญ็ฌฆ๏ผๅ
ๅซๅคงๅฐๅๅญๆฏๅๆฐๅญใ',
- 'profile.verificationCode': '้ช่ฏ็ ',
- 'profile.codeRequired': '่ฏท่พๅ
ฅ้ช่ฏ็ ',
- 'profile.codePlaceholder': '่พๅ
ฅ้ช่ฏ็ ',
- 'profile.sendCode': 'ๅ้้ช่ฏ็ ',
- 'profile.codeSent': '้ช่ฏ็ ๅทฒๅ้',
- 'profile.codeWillSendTo': '้ช่ฏ็ ๅฐๅ้่ณ',
- 'profile.noEmailWarning': '่ฏทๅ
ๅจๅบๆฌไฟกๆฏไธญ่ฎพ็ฝฎ้ฎ็ฎฑ',
-
- 'account.basicInfo': 'ๅบ็กไฟกๆฏ',
- 'account.id': '็จๆทID',
- 'account.username': '็จๆทๅ',
- 'account.nickname': 'ๆต็งฐ',
- 'account.email': '้ฎ็ฎฑ',
- 'account.mobile': 'ๆๆบๅท',
- 'account.web3address': '้ฑๅ
ๅฐๅ',
- 'account.pid': 'ๆจ่ไบบID',
- 'account.level': '็จๆท็ญ็บง',
- 'account.money': 'ไฝ้ข',
- 'account.qdtBalance': 'QDT ไฝ้ข',
- 'account.score': '็งฏๅ',
- 'account.createtime': 'ๆณจๅๆถ้ด',
- 'account.inviteLink': '้่ฏท้พๆฅ',
- 'account.recharge': 'ๅ
ๅผ',
- 'account.rechargeTip': '่ฏทไฝฟ็จๅพฎไฟกๆๆฏไปๅฎๆซๆไธๆนไบ็ปด็ ่ฟ่กๅ
ๅผ',
- 'account.qrCodePlaceholder': 'ไบ็ปด็ ๅ ไฝ็ฌฆ๏ผๆจกๆ๏ผ',
- 'account.rechargeAmount': 'ๅ
ๅผ้้ข',
- 'account.enterAmount': '่ฏท่พๅ
ฅๅ
ๅผ้้ข',
- 'account.rechargeHint': 'ๆๅฐๅ
ๅผ้้ข๏ผ1 QDT',
- 'account.confirmRecharge': '็กฎ่ฎคๅ
ๅผ',
- 'account.enterValidAmount': '่ฏท่พๅ
ฅๆๆ็ๅ
ๅผ้้ข',
- 'account.rechargeSuccess': 'ๅ
ๅผๆๅ๏ผๅทฒๅ
ๅผ {amount} QDT',
- 'account.settings.menuMap.basic': 'ๅบๆฌ่ฎพ็ฝฎ',
- 'account.settings.menuMap.security': 'ๅฎๅ
จ่ฎพ็ฝฎ',
- 'account.settings.menuMap.notification': 'ๆฐๆถๆฏ้็ฅ',
- 'account.settings.menuMap.moneyLog': '่ต้ๆ็ป',
- 'account.moneyLog.empty': 'ๆๆ ่ต้ๆ็ป',
- 'account.moneyLog.total': 'ๅ
ฑ {total} ๆก่ฎฐๅฝ',
- 'account.moneyLog.type.purchase': '่ดญไนฐๆๆ ',
- 'account.moneyLog.type.recharge': 'ๅ
ๅผ',
- 'account.moneyLog.type.refund': '้ๆฌพ',
- 'account.moneyLog.type.reward': 'ๅฅๅฑ',
- 'account.moneyLog.type.income': 'ๆๆ ๆถๅ
ฅ',
- 'account.moneyLog.type.commission': 'ๅนณๅฐๆ็ปญ่ดน',
- 'wallet.balance': 'QDT ไฝ้ข',
- 'wallet.recharge': 'ๅ
ๅผ',
- 'wallet.withdraw': 'ๆ็ฐ',
- 'wallet.filter': '็ญ้',
- 'wallet.reset': '้็ฝฎ',
- 'wallet.totalRecharge': '็ดฏ่ฎกๅ
ๅผ',
- 'wallet.totalWithdraw': '็ดฏ่ฎกๆ็ฐ',
- 'wallet.totalIncome': '็ดฏ่ฎกๆถๅ
ฅ',
- 'wallet.records': 'ไบคๆ่ฎฐๅฝไธ่ต้ๆ็ป',
- 'wallet.tradingRecords': 'ไบคๆ่ฎฐๅฝ',
- 'wallet.moneyLog': '่ต้ๆ็ป',
- 'wallet.rechargeTip': '่ฏทไฝฟ็จๅพฎไฟกๆๆฏไปๅฎๆซๆไธๆนไบ็ปด็ ่ฟ่กๅ
ๅผ',
- 'wallet.qrCodePlaceholder': 'ไบ็ปด็ ๅ ไฝ็ฌฆ๏ผๆจกๆ๏ผ',
- 'wallet.rechargeAmount': 'ๅ
ๅผ้้ข',
- 'wallet.enterAmount': '่ฏท่พๅ
ฅๅ
ๅผ้้ข',
- 'wallet.rechargeHint': 'ๆๅฐๅ
ๅผ้้ข๏ผ1 QDT',
- 'wallet.confirmRecharge': '็กฎ่ฎคๅ
ๅผ',
- 'wallet.enterValidAmount': '่ฏท่พๅ
ฅๆๆ็ๅ
ๅผ้้ข',
- 'wallet.rechargeSuccess': 'ๅ
ๅผๆๅ๏ผๅทฒๅ
ๅผ {amount} QDT',
- 'wallet.rechargeFailed': 'ๅ
ๅผๅคฑ่ดฅ',
- 'wallet.withdrawTip': '่ฏท่พๅ
ฅๆ็ฐ้้ขๅๆ็ฐๅฐๅ',
- 'wallet.withdrawAmount': 'ๆ็ฐ้้ข',
- 'wallet.enterWithdrawAmount': '่ฏท่พๅ
ฅๆ็ฐ้้ข',
- 'wallet.withdrawHint': 'ๆๅฐๆ็ฐ้้ข๏ผ1 QDT',
- 'wallet.withdrawAddress': 'ๆ็ฐๅฐๅ๏ผๅฏ้๏ผ',
- 'wallet.enterWithdrawAddress': '่ฏท่พๅ
ฅๆ็ฐๅฐๅ',
- 'wallet.confirmWithdraw': '็กฎ่ฎคๆ็ฐ',
- 'wallet.enterValidWithdrawAmount': '่ฏท่พๅ
ฅๆๆ็ๆ็ฐ้้ข',
- 'wallet.insufficientBalance': 'ไฝ้ขไธ่ถณ',
- 'wallet.withdrawSuccess': 'ๆ็ฐๆๅ๏ผๅทฒๆ็ฐ {amount} QDT',
- 'wallet.withdrawFailed': 'ๆ็ฐๅคฑ่ดฅ',
- 'wallet.noTradingRecords': 'ๆๆ ไบคๆ่ฎฐๅฝ',
- 'wallet.noMoneyLog': 'ๆๆ ่ต้ๆ็ป',
- 'wallet.loadTradingRecordsFailed': 'ๅ ่ฝฝไบคๆ่ฎฐๅฝๅคฑ่ดฅ',
- 'wallet.loadMoneyLogFailed': 'ๅ ่ฝฝ่ต้ๆ็ปๅคฑ่ดฅ',
- 'wallet.moneyLogTotal': 'ๅ
ฑ {total} ๆก่ฎฐๅฝ',
- 'wallet.moneyLogTypeTitle': '็ฑปๅ',
- 'wallet.moneyLogType.all': 'ๅ
จ้จ็ฑปๅ',
- 'wallet.table.time': 'ๆถ้ด',
- 'wallet.table.type': '็ฑปๅ',
- 'wallet.table.price': 'ไปทๆ ผ',
- 'wallet.table.amount': 'ๆฐ้',
- 'wallet.table.money': '้้ข',
- 'wallet.table.balance': 'ไฝ้ข',
- 'wallet.table.memo': 'ๅคๆณจ',
- 'wallet.table.value': 'ไปทๅผ',
- 'wallet.table.profit': '็ไบ',
- 'wallet.table.commission': 'ๆ็ปญ่ดน',
- 'wallet.table.total': 'ๅ
ฑ {total} ๆก่ฎฐๅฝ',
- 'wallet.tradeType.buy': 'ไนฐๅ
ฅ',
- 'wallet.tradeType.sell': 'ๅๅบ',
- 'wallet.tradeType.liquidation': 'ๅผบๅนณ',
- 'wallet.tradeType.openLong': 'ๅผๅค',
- 'wallet.tradeType.addLong': 'ๅ ๅค',
- 'wallet.tradeType.closeLong': 'ๅนณๅค',
- 'wallet.tradeType.closeLongStop': 'ๆญขๆๅนณๅค',
- 'wallet.tradeType.closeLongProfit': 'ๆญข็ๅนณๅค',
- 'wallet.tradeType.openShort': 'ๅผ็ฉบ',
- 'wallet.tradeType.addShort': 'ๅ ็ฉบ',
- 'wallet.tradeType.closeShort': 'ๅนณ็ฉบ',
- 'wallet.tradeType.closeShortStop': 'ๆญขๆๅนณ็ฉบ',
- 'wallet.tradeType.closeShortProfit': 'ๆญข็ๅนณ็ฉบ',
- 'wallet.moneyLogType.purchase': '่ดญไนฐๆๆ ',
- 'wallet.moneyLogType.recharge': 'ๅ
ๅผ',
- 'wallet.moneyLogType.withdraw': 'ๆ็ฐ',
- 'wallet.moneyLogType.refund': '้ๆฌพ',
- 'wallet.moneyLogType.reward': 'ๅฅๅฑ',
- 'wallet.moneyLogType.income': 'ๆถๅ
ฅ',
- 'wallet.moneyLogType.commission': 'ๆ็ปญ่ดน',
- 'wallet.web3Address.required': '่ฏทๅ
ๅกซๅWeb3้ฑๅ
ๅฐๅ',
- 'wallet.web3Address.requiredDescription': 'ๅ
ๅผๅ้่ฆๅ
็ปๅฎๆจ็Web3้ฑๅ
ๅฐๅ๏ผ็จไบๆฅๆถๅ
ๅผ',
- 'wallet.web3Address.placeholder': '่ฏท่พๅ
ฅๆจ็Web3้ฑๅ
ๅฐๅ๏ผ0xๅผๅคด๏ผ',
- 'wallet.web3Address.save': 'ไฟๅญ้ฑๅ
ๅฐๅ',
- 'wallet.web3Address.saveSuccess': '้ฑๅ
ๅฐๅไฟๅญๆๅ',
- 'wallet.web3Address.saveFailed': 'ไฟๅญ้ฑๅ
ๅฐๅๅคฑ่ดฅ',
- 'wallet.web3Address.invalidFormat': '่ฏท่พๅ
ฅๆๆ็Web3้ฑๅ
ๅฐๅ๏ผไปฅๅคชๅๆ ผๅผ๏ผ0xๅผๅคด42ไฝๅญ็ฌฆ๏ผๆTRC20ๆ ผๅผ๏ผTๅผๅคด34ไฝๅญ็ฌฆ๏ผ',
- 'wallet.selectCoin': '้ๆฉๅธ็ง',
- 'wallet.selectChain': '้ๆฉ้พ',
- 'wallet.chain.eth': 'ETH(ERC20)',
- 'wallet.chain.trc20': 'TRC20',
- 'wallet.chain.bsc': 'BSC',
- 'wallet.targetQdtAmount': 'ๆณ่ฆๅ
ๆข็QDTๆฐ้๏ผๅฏ้๏ผ',
- 'wallet.targetQdtAmount.placeholder': '่ฏท่พๅ
ฅๆณ่ฆๅ
ๆข็QDTๆฐ้๏ผๅฝๅQDTไปทๆ ผ๏ผ{price} USDT',
- 'wallet.targetQdtAmount.requiredUsdt': '้่ฆๅ
ๅผ๏ผ{amount} USDT',
- 'wallet.rechargeAddress': 'ๅ
ๅผๅฐๅ',
- 'wallet.copyAddress': 'ๅคๅถ',
- 'wallet.copySuccess': 'ๅคๅถๆๅ๏ผ',
- 'wallet.copyFailed': 'ๅคๅถๅคฑ่ดฅ๏ผ่ฏทๆๅจๅคๅถ',
- 'wallet.rechargeAddressHint': '่ฏท็กฎไฟไฝฟ็จ{chain}้พๅๆญคๅฐๅๅ
ๅผ{coin}',
- 'wallet.qdtPrice.loading': 'ๅ ่ฝฝไธญ...',
- 'wallet.rechargeTip.new': '่ฏท้ๆฉๅธ็งๅ้พ๏ผ็ถๅๆซๆไธๆนไบ็ปด็ ่ฟ่กๅ
ๅผ',
- 'wallet.exchangeRate': '1 QDT โ {rate} USDT',
- 'wallet.withdrawableAmount': 'ๅฏๆ็ฐ้้ข',
- 'wallet.totalBalance': 'ๆปไฝ้ข',
- 'wallet.insufficientWithdrawable': 'ๅฏๆ็ฐ้้ขไธ่ถณ๏ผๅฝๅๅฏๆ็ฐ๏ผ{amount} QDT',
- 'wallet.withdrawAddressRequired': '่ฏท่พๅ
ฅๆ็ฐๅฐๅ',
- 'wallet.withdrawAddressHint': '่ฏท็กฎไฟๅฐๅๆญฃ็กฎ๏ผๆ็ฐๅๆ ๆณๆค้',
- 'wallet.withdrawSubmitSuccess': 'ๆ็ฐ็ณ่ฏทๆไบคๆๅ๏ผ่ฏท็ญๅพ
ๅฎกๆ ธ',
- 'menu.footer.contactUs': '่็ณปๆไปฌ',
- 'menu.footer.getSupport': '่ทๅๆฏๆ',
- 'menu.footer.socialAccounts': '็คพไบค่ดฆๆท',
- 'menu.footer.userAgreement': '็จๆทๅ่ฎฎ',
- 'menu.footer.privacyPolicy': '้็งๆกไพ',
- 'menu.footer.support': 'Support',
- 'menu.footer.featureRequest': 'Feature request',
- 'menu.footer.email': 'Email',
- 'menu.footer.liveChat': '24/7 live chat',
- 'dashboard.analysis.title': 'Multi-Dimensional Analysis',
- 'dashboard.analysis.subtitle': 'AI้ฉฑๅจ็็ปผๅ้่ๅๆๅนณๅฐ',
- 'dashboard.analysis.selectSymbol': '้ๆฉๆ่พๅ
ฅๆ ็ไปฃ็ ',
- 'dashboard.analysis.selectModel': '้ๆฉๆจกๅ',
- 'dashboard.analysis.startAnalysis': 'ๅผๅงๅๆ',
- 'dashboard.analysis.history': 'ๅๅฒ่ฎฐๅฝ',
- 'dashboard.analysis.tab.overview': '็ปผๅๅๆ',
- 'dashboard.analysis.tab.fundamental': 'ๅบๆฌ้ข',
- 'dashboard.analysis.tab.technical': 'ๆๆฏ',
- 'dashboard.analysis.tab.news': 'ๆฐ้ป',
- 'dashboard.analysis.tab.sentiment': 'ๆ
็ปช',
- 'dashboard.analysis.tab.risk': '้ฃ้ฉ',
- 'dashboard.analysis.tab.debate': 'ๅค็ฉบ่พฉ่ฎบ',
- 'dashboard.analysis.tab.decision': 'ๆ็ปๅณ็ญ',
- 'dashboard.analysis.empty.selectSymbol': '้ๆฉๆ ็ๅผๅงๅๆ',
- 'dashboard.analysis.empty.selectSymbolDesc': 'ไป่ช้่กๅ่กจไธญ้ๆฉๆ่พๅ
ฅๆ ็ไปฃ็ ๏ผ่ทๅๅค็ปดๅบฆAIๅๆๆฅๅ',
- 'dashboard.analysis.empty.startAnalysis': '็นๅป"ๅผๅงๅๆ"ๆ้ฎ่ฟ่กๅค็ปดๅบฆๅๆ',
- 'dashboard.analysis.empty.startAnalysisDesc': 'ๆไปฌๅฐไปๅบๆฌ้ขใๆๆฏใๆฐ้ปใๆ
็ปชๅ้ฃ้ฉ็ญๅคไธช็ปดๅบฆไธบๆจๆไพๅ
จ้ข็ๅๆ',
- 'dashboard.analysis.empty.noData': 'ๆๆ {type}ๅๆๆฐๆฎ๏ผ่ฏทๅ
่ฟ่ก็ปผๅๅๆ',
- 'dashboard.analysis.empty.noWatchlist': 'ๆๆ ่ช้่ก',
- 'dashboard.analysis.empty.noHistory': 'ๆๆ ๅๅฒ่ฎฐๅฝ',
- 'dashboard.analysis.empty.watchlistHint': 'ๆๆ ่ช้่ก๏ผ่ฏทๅ
',
- 'dashboard.analysis.empty.noDebateData': 'ๆๆ ่พฉ่ฎบๆฐๆฎ',
- 'dashboard.analysis.empty.noDecisionData': 'ๆๆ ๅณ็ญๆฐๆฎ',
- 'dashboard.analysis.empty.selectAgent': '่ฏท้ๆฉไธไธช Agent ๆฅ็ๅๆ็ปๆ',
- 'dashboard.analysis.loading.analyzing': 'ๆญฃๅจๅๆไธญ๏ผ่ฏท็จๅ...',
- 'dashboard.analysis.loading.fundamental': 'ๆญฃๅจๅๆๅบๆฌ้ขๆฐๆฎ...',
- 'dashboard.analysis.loading.technical': 'ๆญฃๅจๅๆๆๆฏๆๆ ...',
- 'dashboard.analysis.loading.news': 'ๆญฃๅจๅๆๆฐ้ปๆฐๆฎ...',
- 'dashboard.analysis.loading.sentiment': 'ๆญฃๅจๅๆๅธๅบๆ
็ปช...',
- 'dashboard.analysis.loading.risk': 'ๆญฃๅจ่ฏไผฐ้ฃ้ฉ...',
- 'dashboard.analysis.loading.debate': 'ๆญฃๅจ่ฟ่กๅค็ฉบ่พฉ่ฎบ...',
- 'dashboard.analysis.loading.decision': 'ๆญฃๅจ็ๆๆ็ปๅณ็ญ...',
- 'dashboard.analysis.score.overall': '็ปผๅ่ฏๅ',
- 'dashboard.analysis.score.recommendation': 'ๆ่ตๅปบ่ฎฎ',
- 'dashboard.analysis.score.confidence': '็ฝฎไฟกๅบฆ',
- 'dashboard.analysis.dimension.fundamental': 'ๅบๆฌ้ข',
- 'dashboard.analysis.dimension.technical': 'ๆๆฏ',
- 'dashboard.analysis.dimension.news': 'ๆฐ้ป',
- 'dashboard.analysis.dimension.sentiment': 'ๆ
็ปช',
- 'dashboard.analysis.dimension.risk': '้ฃ้ฉ',
- 'dashboard.analysis.card.dimensionScores': 'ๅ็ปดๅบฆ่ฏๅ',
- 'dashboard.analysis.card.overviewReport': '็ปผๅๅๆๆฅๅ',
- 'dashboard.analysis.card.financialMetrics': '่ดขๅกๆๆ ',
- 'dashboard.analysis.card.fundamentalReport': 'ๅบๆฌ้ขๅๆๆฅๅ',
- 'dashboard.analysis.card.technicalIndicators': 'ๆๆฏๆๆ ',
- 'dashboard.analysis.card.technicalReport': 'ๆๆฏๅๆๆฅๅ',
- 'dashboard.analysis.card.newsList': '็ธๅ
ณๆฐ้ป',
- 'dashboard.analysis.card.newsReport': 'ๆฐ้ปๅๆๆฅๅ',
- 'dashboard.analysis.card.sentimentIndicators': 'ๆ
็ปชๆๆ ',
- 'dashboard.analysis.card.sentimentReport': 'ๆ
็ปชๅๆๆฅๅ',
- 'dashboard.analysis.card.riskMetrics': '้ฃ้ฉๆๆ ',
- 'dashboard.analysis.card.riskReport': '้ฃ้ฉ่ฏไผฐๆฅๅ',
- 'dashboard.analysis.card.bullView': '็ๆถจ่ง็น (Bull)',
- 'dashboard.analysis.card.bearView': '็่ท่ง็น (Bear)',
- 'dashboard.analysis.card.researchConclusion': '็ ็ฉถๅ็ป่ฎบ',
- 'dashboard.analysis.card.traderPlan': 'ไบคๆๅ่ฎกๅ',
- 'dashboard.analysis.card.riskDebate': '้ฃ้ฉๅงๅไผ่พฉ่ฎบ',
- 'dashboard.analysis.card.finalDecision': 'ๆ็ปๅณ็ญ (Final Decision)',
- 'dashboard.analysis.card.tradePlanDetail': 'ไบคๆ่ฎกๅ่ฏฆๆ
',
- 'dashboard.analysis.tradingPlan.entry_price': 'ๅ
ฅๅบไปทๆ ผ',
- 'dashboard.analysis.tradingPlan.position_size': 'ไปไฝๅคงๅฐ',
- 'dashboard.analysis.tradingPlan.stop_loss': 'ๆญขๆ',
- 'dashboard.analysis.tradingPlan.take_profit': 'ๆญข็',
- 'dashboard.analysis.label.confidence': '็ฝฎไฟกๅบฆ',
- 'dashboard.analysis.label.keyPoints': 'ๆ ธๅฟ่ฆ็น',
- 'dashboard.analysis.label.riskWarning': '้ฃ้ฉๆ็คบ',
- 'dashboard.analysis.risk.risky': 'ๆฟ่ฟๆดพ่ง็น (Risky)',
- 'dashboard.analysis.risk.neutral': 'ไธญ็ซๆดพ่ง็น (Neutral)',
- 'dashboard.analysis.risk.safe': 'ไฟๅฎๆดพ่ง็น (Safe)',
- 'dashboard.analysis.risk.conclusion': '็ป่ฎบ',
- 'dashboard.analysis.feature.fundamental': 'ๅบๆฌ้ขๅๆ',
- 'dashboard.analysis.feature.technical': 'ๆๆฏๅๆ',
- 'dashboard.analysis.feature.news': 'ๆฐ้ปๅๆ',
- 'dashboard.analysis.feature.sentiment': 'ๆ
็ปชๅๆ',
- 'dashboard.analysis.feature.risk': '้ฃ้ฉ่ฏไผฐ',
- 'dashboard.analysis.watchlist.title': 'ๆ็่ช้่ก',
- 'dashboard.analysis.watchlist.add': 'ๆทปๅ ',
- 'dashboard.analysis.watchlist.addStock': 'ๆทปๅ ่ก็ฅจ',
- 'dashboard.analysis.modal.addStock.title': 'ๆทปๅ ่ช้่ก',
- 'dashboard.analysis.modal.addStock.confirm': '็กฎๅฎ',
- 'dashboard.analysis.modal.addStock.cancel': 'ๅๆถ',
- 'dashboard.analysis.modal.addStock.market': 'ๅธๅบ็ฑปๅ',
- 'dashboard.analysis.modal.addStock.marketPlaceholder': '่ฏท้ๆฉๅธๅบ',
- 'dashboard.analysis.modal.addStock.marketRequired': '่ฏท้ๆฉๅธๅบ็ฑปๅ',
- 'dashboard.analysis.modal.addStock.symbol': '่ก็ฅจไปฃ็ ',
- 'dashboard.analysis.modal.addStock.symbolPlaceholder': 'ไพๅฆ: AAPL, TSLA, GOOGL, 000001, BTC',
- 'dashboard.analysis.modal.addStock.symbolRequired': '่ฏท่พๅ
ฅ่ก็ฅจไปฃ็ ',
- 'dashboard.analysis.modal.addStock.searchPlaceholder': 'ๆ็ดขๆ ็ไปฃ็ ๆๅ็งฐ',
- 'dashboard.analysis.modal.addStock.searchOrInputPlaceholder': 'ๆ็ดขๆ่พๅ
ฅๆ ็ไปฃ็ ๏ผๅฆ๏ผAAPLใBTC/USDTใEUR/USD๏ผ',
- 'dashboard.analysis.modal.addStock.searchOrInputHint': 'ๆฏๆๆ็ดขๆฐๆฎๅบไธญ็ๆ ็๏ผๆ็ดๆฅ่พๅ
ฅไปฃ็ ๏ผ็ณป็ปๅฐ่ชๅจ่ทๅๅ็งฐ๏ผ',
- 'dashboard.analysis.modal.addStock.search': 'ๆ็ดข',
- 'dashboard.analysis.modal.addStock.searchResults': 'ๆ็ดข็ปๆ',
- 'dashboard.analysis.modal.addStock.hotSymbols': '็ญ้จๆ ็',
- 'dashboard.analysis.modal.addStock.noHotSymbols': 'ๆๆ ็ญ้จๆ ็',
- 'dashboard.analysis.modal.addStock.selectedSymbol': 'ๅทฒ้ๆ ็',
- 'dashboard.analysis.modal.addStock.pleaseSelectSymbol': '่ฏทๅ
้ๆฉไธไธชๆ ็',
- 'dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol': '่ฏทๅ
้ๆฉไธไธชๆ ็ๆ่พๅ
ฅๆ ็ไปฃ็ ',
- 'dashboard.analysis.modal.addStock.pleaseEnterSymbol': '่ฏท่พๅ
ฅๆ ็ไปฃ็ ',
- 'dashboard.analysis.modal.addStock.pleaseSelectMarket': '่ฏทๅ
้ๆฉๅธๅบ็ฑปๅ',
- 'dashboard.analysis.modal.addStock.searchFailed': 'ๆ็ดขๅคฑ่ดฅ๏ผ่ฏท็จๅ้่ฏ',
- 'dashboard.analysis.modal.addStock.noSearchResults': 'ๆชๆพๅฐๅน้
็ๆ ็',
- 'dashboard.analysis.modal.addStock.willAutoFetchName': '็ณป็ปๅฐ่ชๅจ่ทๅๅ็งฐ',
- 'dashboard.analysis.modal.addStock.addDirectly': '็ดๆฅๆทปๅ ',
- 'dashboard.analysis.modal.addStock.nameWillBeFetched': 'ๅ็งฐๅฐๅจๆทปๅ ๆถ่ชๅจ่ทๅ',
- 'dashboard.analysis.market.USStock': '็พ่ก',
- 'dashboard.analysis.market.Crypto': 'ๅ ๅฏ่ดงๅธ',
- 'dashboard.analysis.market.Forex': 'ๅคๆฑ',
- 'dashboard.analysis.market.Futures': 'ๆ่ดง',
- 'dashboard.analysis.modal.history.title': 'ๅๅฒๅๆ่ฎฐๅฝ',
- 'dashboard.analysis.modal.history.viewResult': 'ๆฅ็็ปๆ',
- 'dashboard.analysis.modal.history.completeTime': 'ๅฎๆๆถ้ด',
- 'dashboard.analysis.modal.history.error': '้่ฏฏ',
- 'dashboard.analysis.status.pending': 'ๅพ
ๅค็',
- 'dashboard.analysis.status.processing': 'ๅค็ไธญ',
- 'dashboard.analysis.status.completed': 'ๅทฒๅฎๆ',
- 'dashboard.analysis.status.failed': 'ๅคฑ่ดฅ',
- 'dashboard.analysis.message.selectSymbol': '่ฏทๅ
้ๆฉๆ ็',
- 'dashboard.analysis.message.taskCreated': 'ๅๆไปปๅกๅทฒๅๅปบ๏ผๆญฃๅจๅๅฐๆง่ก...',
- 'dashboard.analysis.message.analysisComplete': 'ๅๆๅฎๆ',
- 'dashboard.analysis.message.analysisCompleteCache': 'ๅๆๅฎๆ๏ผไฝฟ็จ็ผๅญๆฐๆฎ๏ผ',
- 'dashboard.analysis.message.analysisFailed': 'ๅๆๅคฑ่ดฅ๏ผ่ฏท็จๅ้่ฏ',
- 'dashboard.analysis.message.addStockSuccess': 'ๆทปๅ ๆๅ',
- 'dashboard.analysis.message.addStockFailed': 'ๆทปๅ ๅคฑ่ดฅ',
- 'dashboard.analysis.message.removeStockSuccess': '็งป้คๆๅ',
- 'dashboard.analysis.message.removeStockFailed': '็งป้คๅคฑ่ดฅ',
- 'dashboard.analysis.message.resumingAnalysis': 'ๆญฃๅจๆขๅคๅๆไปปๅก...',
- 'dashboard.analysis.message.deleteSuccess': 'ๅ ้คๆๅ',
- 'dashboard.analysis.message.deleteFailed': 'ๅ ้คๅคฑ่ดฅ',
- 'dashboard.analysis.modal.history.delete': 'ๅ ้ค',
- 'dashboard.analysis.modal.history.deleteConfirm': '็กฎๅฎ่ฆๅ ้ค่ฟๆกๅๆ่ฎฐๅฝๅ๏ผ',
- 'dashboard.analysis.test': 'ๅทฅไธ่ทฏ {no} ๅทๅบ',
- 'dashboard.analysis.introduce': 'ๆๆ ่ฏดๆ',
- 'dashboard.analysis.total-sales': 'ๆป้ๅฎ้ข',
- 'dashboard.analysis.day-sales': 'ๆฅๅ้ๅฎ้ข๏ฟฅ',
- 'dashboard.analysis.visits': '่ฎฟ้ฎ้',
- 'dashboard.analysis.visits-trend': '่ฎฟ้ฎ้่ถๅฟ',
- 'dashboard.analysis.visits-ranking': '้จๅบ่ฎฟ้ฎ้ๆๅ',
- 'dashboard.analysis.day-visits': 'ๆฅ่ฎฟ้ฎ้',
- 'dashboard.analysis.week': 'ๅจๅๆฏ',
- 'dashboard.analysis.day': 'ๆฅๅๆฏ',
- 'dashboard.analysis.payments': 'ๆฏไป็ฌๆฐ',
- 'dashboard.analysis.conversion-rate': '่ฝฌๅ็',
- 'dashboard.analysis.operational-effect': '่ฟ่ฅๆดปๅจๆๆ',
- 'dashboard.analysis.sales-trend': '้ๅฎ่ถๅฟ',
- 'dashboard.analysis.sales-ranking': '้จๅบ้ๅฎ้ขๆๅ',
- 'dashboard.analysis.all-year': 'ๅ
จๅนด',
- 'dashboard.analysis.all-month': 'ๆฌๆ',
- 'dashboard.analysis.all-week': 'ๆฌๅจ',
- 'dashboard.analysis.all-day': 'ไปๆฅ',
- 'dashboard.analysis.search-users': 'ๆ็ดข็จๆทๆฐ',
- 'dashboard.analysis.per-capita-search': 'ไบบๅๆ็ดขๆฌกๆฐ',
- 'dashboard.analysis.online-top-search': '็บฟไธ็ญ้จๆ็ดข',
- 'dashboard.analysis.the-proportion-of-sales': '้ๅฎ้ข็ฑปๅซๅ ๆฏ',
- 'dashboard.analysis.dropdown-option-one': 'ๆไฝไธ',
- 'dashboard.analysis.dropdown-option-two': 'ๆไฝไบ',
- 'dashboard.analysis.channel.all': 'ๅ
จ้จๆธ ้',
- 'dashboard.analysis.channel.online': '็บฟไธ',
- 'dashboard.analysis.channel.stores': '้จๅบ',
- 'dashboard.analysis.sales': '้ๅฎ้ข',
- 'dashboard.analysis.traffic': 'ๅฎขๆต้',
- 'dashboard.analysis.table.rank': 'ๆๅ',
- 'dashboard.analysis.table.search-keyword': 'ๆ็ดขๅ
ณ้ฎ่ฏ',
- 'dashboard.analysis.table.users': '็จๆทๆฐ',
- 'dashboard.analysis.table.weekly-range': 'ๅจๆถจๅน
',
- 'dashboard.indicator.selectSymbol': '้ๆฉๆ่พๅ
ฅๆ ็ไปฃ็ ',
- 'dashboard.indicator.emptyWatchlistHint': 'ๆๆ ่ช้่ก๏ผ่ฏทๅ
ๆทปๅ ',
- 'dashboard.indicator.hint.selectSymbol': '่ฏท้ๆฉๆ ็ๅผๅงๅๆ',
- 'dashboard.indicator.hint.selectSymbolDesc': 'ๅจไธๆนๆ็ดขๆกไธญ้ๆฉๆ่พๅ
ฅ่ก็ฅจไปฃ็ ๏ผๆฅ็K็บฟๅพ่กจๅๆๆฏๆๆ ',
- 'dashboard.indicator.retry': '้่ฏ',
- 'dashboard.indicator.panel.title': 'ๆๆฏๆๆ ',
- 'dashboard.indicator.panel.realtimeOn': 'ๅ
ณ้ญๅฎๆถๆดๆฐ',
- 'dashboard.indicator.panel.realtimeOff': 'ๅผๅฏๅฎๆถๆดๆฐ',
- 'dashboard.indicator.panel.themeLight': 'ๅๆขๅฐๆทฑ่ฒไธป้ข',
- 'dashboard.indicator.panel.themeDark': 'ๅๆขๅฐๆต
่ฒไธป้ข',
- 'dashboard.indicator.section.enabled': 'ๅทฒๅฏ็จ',
- 'dashboard.indicator.section.added': 'ๆๆทปๅ ็ๆๆ ',
- 'dashboard.indicator.section.custom': '่ชๅทฑๅๅปบ็ๆๆ ',
- 'dashboard.indicator.section.bought': 'ๆ้่ดญ็ๆๆ ',
- 'dashboard.indicator.section.myCreated': 'ๆๅๅปบ็ๆๆ ',
- 'dashboard.indicator.section.purchased': 'ๆ่ดญไนฐ็ๆๆ ',
- 'dashboard.indicator.empty': 'ๆๆ ๆๆ ๏ผ่ฏทๅ
ๆทปๅ ๆๅๅปบๆๆ ',
- 'dashboard.indicator.emptyPurchased': 'ๆๆ ่ดญไนฐ็ๆๆ ๏ผๅปๆๆ ๅธๅบ็็',
- 'dashboard.indicator.buy': '่ดญไนฐๆๆ ',
- 'dashboard.indicator.action.start': 'ๅฏๅจ',
- 'dashboard.indicator.action.stop': 'ๅ
ณ้ญ',
- 'dashboard.indicator.action.edit': '็ผ่พ',
- 'dashboard.indicator.action.delete': 'ๅ ้ค',
- 'dashboard.indicator.action.backtest': 'ๅๆต',
- 'dashboard.indicator.action.publish': 'ๅๅธๅฐ็คพๅบ',
- 'dashboard.indicator.action.unpublish': 'ๅทฒๅๅธ๏ผ็นๅป็ฎก็๏ผ',
- 'dashboard.indicator.status.normal': 'ๆญฃๅธธ',
- 'dashboard.indicator.status.normalPermanent': 'ๆญฃๅธธ๏ผๆฐธไน
ๆๆ๏ผ',
- 'dashboard.indicator.status.expired': 'ๅทฒ่ฟๆ',
- 'dashboard.indicator.expiry.permanent': 'ๆฐธไน
ๆๆ',
- 'dashboard.indicator.expiry.noExpiry': 'ๆ ๅฐๆๆถ้ด',
- 'dashboard.indicator.expiry.expired': 'ๅทฒ่ฟๆ๏ผ{date}',
- 'dashboard.indicator.expiry.expiresOn': 'ๅฐๆๆถ้ด๏ผ{date}',
- 'dashboard.indicator.delete.confirmTitle': '็กฎ่ฎคๅ ้ค',
- 'dashboard.indicator.delete.confirmContent': '็กฎๅฎ่ฆๅ ้คๆๆ "{name}"ๅ๏ผๆญคๆไฝไธๅฏๆขๅคใ',
- 'dashboard.indicator.delete.confirmOk': 'ๅ ้ค',
- 'dashboard.indicator.delete.confirmCancel': 'ๅๆถ',
- 'dashboard.indicator.delete.success': 'ๅ ้คๆๅ',
- 'dashboard.indicator.delete.failed': 'ๅ ้คๅคฑ่ดฅ',
- 'dashboard.indicator.save.success': 'ไฟๅญๆๅ',
- 'dashboard.indicator.save.failed': 'ไฟๅญๅคฑ่ดฅ',
- 'dashboard.indicator.publish.title': 'ๅๅธๅฐ็คพๅบ',
- 'dashboard.indicator.publish.editTitle': '็ฎก็ๅๅธ',
- 'dashboard.indicator.publish.hint': 'ๅๅธๅ๏ผๅ
ถไป็จๆทๅฏไปฅๅจ"ๆๆ ็คพๅบ"ไธญ็ๅฐๅนถ่ดญไนฐๆจ็ๆๆ ',
- 'dashboard.indicator.publish.pricingType': 'ๅฎไปทๆนๅผ',
- 'dashboard.indicator.publish.free': 'ๅ
่ดน',
- 'dashboard.indicator.publish.paid': 'ไป่ดน',
- 'dashboard.indicator.publish.price': 'ไปทๆ ผ',
- 'dashboard.indicator.publish.description': 'ๆๆ ๆ่ฟฐ',
- 'dashboard.indicator.publish.descriptionPlaceholder': '่ฏท่พๅ
ฅๆๆ ็่ฏฆ็ปๆ่ฟฐ๏ผๅธฎๅฉๅ
ถไป็จๆทไบ่งฃๆๆ ๅ่ฝ...',
- 'dashboard.indicator.publish.confirm': '็กฎ่ฎคๅๅธ',
- 'dashboard.indicator.publish.update': 'ๆดๆฐๅๅธ',
- 'dashboard.indicator.publish.unpublish': 'ๅๆถๅๅธ',
- 'dashboard.indicator.publish.success': 'ๅๅธๆๅ',
- 'dashboard.indicator.publish.failed': 'ๅๅธๅคฑ่ดฅ',
- 'dashboard.indicator.publish.unpublishSuccess': 'ๅทฒๅๆถๅๅธ',
- 'dashboard.indicator.publish.unpublishFailed': 'ๅๆถๅๅธๅคฑ่ดฅ',
- 'dashboard.indicator.error.loadWatchlistFailed': 'ๅ ่ฝฝ่ช้่กๅคฑ่ดฅ',
- 'dashboard.indicator.error.chartNotReady': 'ๅพ่กจ็ปไปถๆชๅๅงๅ๏ผ่ฏทๅ
้ๆฉๆ ็ๅนถ็ญๅพ
ๅพ่กจๅ ่ฝฝๅฎๆ',
- 'dashboard.indicator.error.chartMethodNotReady': 'ๅพ่กจ็ปไปถๆนๆณๆชๅฐฑ็ปช๏ผ่ฏท็จๅ้่ฏ',
- 'dashboard.indicator.error.chartExecuteNotReady': 'ๅพ่กจ็ปไปถๆง่กๆนๆณๆชๅฐฑ็ปช๏ผ่ฏท็จๅ้่ฏ',
- 'dashboard.indicator.error.parseFailed': 'ๆ ๆณ่งฃๆPythonไปฃ็ ',
- 'dashboard.indicator.error.parseFailedCheck': 'ๆ ๆณ่งฃๆPythonไปฃ็ ๏ผ่ฏทๆฃๆฅไปฃ็ ๆ ผๅผ',
- 'dashboard.indicator.error.addIndicatorFailed': 'ๆทปๅ ๆๆ ๅคฑ่ดฅ',
- 'dashboard.indicator.error.runIndicatorFailed': '่ฟ่กๆๆ ๅคฑ่ดฅ',
- 'dashboard.indicator.error.pleaseLogin': '่ฏทๅ
็ปๅฝ',
- 'dashboard.indicator.error.loadDataFailed': 'ๆฐๆฎๅ ่ฝฝๅคฑ่ดฅ',
- 'dashboard.indicator.error.loadDataFailedDesc': '่ฏทๆฃๆฅ็ฝ็ป่ฟๆฅ',
- 'dashboard.indicator.error.tiingoSubscription': 'ๅคๆฑ1ๅ้ๆฐๆฎ้่ฆ Tiingo ไป่ดน่ฎข้
๏ผ่ฏทไฝฟ็จๅ
ถไปๆถ้ดๅจๆๆๅ็บง่ฎข้
',
- 'dashboard.indicator.error.pythonEngineFailed': 'Python ๅผๆๅ ่ฝฝๅคฑ่ดฅ๏ผๆๆ ๅ่ฝๅฏ่ฝๆ ๆณไฝฟ็จ',
- 'dashboard.indicator.error.chartInitFailed': 'ๅพ่กจๅๅงๅๅคฑ่ดฅ',
- 'dashboard.indicator.warning.enterCode': '่ฏทๅ
่พๅ
ฅๆๆ ไปฃ็ ',
- 'dashboard.indicator.warning.pyodideLoadFailed': 'Python ๅผๆๅ ่ฝฝๅคฑ่ดฅ',
- 'dashboard.indicator.warning.pyodideLoadFailedDesc': 'ๆจๅฝๅๆๅจๅบๅๆ็ฝ็ป็ฏๅขๆ ๆณไฝฟ็จ่ฏฅๅ่ฝ',
- 'dashboard.indicator.warning.chartNotInitialized': 'ๅพ่กจๆชๅๅงๅ๏ผๆ ๆณไฝฟ็จ็ป็บฟๅทฅๅ
ท',
- 'dashboard.indicator.success.runIndicator': 'ๆๆ ่ฟ่กๆๅ',
- 'dashboard.indicator.success.clearDrawings': 'ๅทฒๆธ
้คๆๆ็ป็บฟ',
- 'dashboard.indicator.sma': 'SMA (ๅ็บฟ็ปๅ)',
- 'dashboard.indicator.ema': 'EMA (ๆๆฐๅ็บฟ็ปๅ)',
- 'dashboard.indicator.rsi': 'RSI (็ธๅฏนๅผบๅผฑ)',
- 'dashboard.indicator.macd': 'MACD',
- 'dashboard.indicator.bb': 'ๅธๆๅธฆ (Bollinger Bands)',
- 'dashboard.indicator.atr': 'ATR (ๅนณๅ็ๅฎๆณขๅน
)',
- 'dashboard.indicator.cci': 'CCI (ๅๅ้้ๆๆฐ)',
- 'dashboard.indicator.williams': 'Williams %R (ๅจๅปๆๆ )',
- 'dashboard.indicator.mfi': 'MFI (่ต้ๆต้ๆๆ )',
- 'dashboard.indicator.adx': 'ADX (ๅนณๅ่ถๅๆๆฐ)',
- 'dashboard.indicator.obv': 'OBV (่ฝ้ๆฝฎ)',
- 'dashboard.indicator.adosc': 'ADOSC (็งฏ็ดฏ/ๆดพๅๆฏ่กๅจ)',
- 'dashboard.indicator.ad': 'AD (็งฏ็ดฏ/ๆดพๅ็บฟ)',
- 'dashboard.indicator.kdj': 'KDJ (้ๆบๆๆ )',
- 'dashboard.indicator.signal.buy': 'BUY',
- 'dashboard.indicator.signal.sell': 'SELL',
- 'dashboard.indicator.signal.supertrendBuy': 'SuperTrend Buy',
- 'dashboard.indicator.signal.supertrendSell': 'SuperTrend Sell',
- 'dashboard.indicator.chart.kline': 'K็บฟ',
- 'dashboard.indicator.chart.volume': 'ๆไบค้',
- 'dashboard.indicator.chart.uptrend': 'Up Trend',
- 'dashboard.indicator.chart.downtrend': 'Down Trend',
- 'dashboard.indicator.tooltip.time': 'ๆถ้ด',
- 'dashboard.indicator.tooltip.open': 'ๅผ',
- 'dashboard.indicator.tooltip.close': 'ๆถ',
- 'dashboard.indicator.tooltip.high': '้ซ',
- 'dashboard.indicator.tooltip.low': 'ไฝ',
- 'dashboard.indicator.tooltip.volume': 'ๆไบค้',
- 'dashboard.indicator.drawing.line': '็บฟๆฎต',
- 'dashboard.indicator.drawing.horizontalLine': 'ๆฐดๅนณ็บฟ',
- 'dashboard.indicator.drawing.verticalLine': 'ๅ็ด็บฟ',
- 'dashboard.indicator.drawing.ray': 'ๅฐ็บฟ',
- 'dashboard.indicator.drawing.straightLine': '็ด็บฟ',
- 'dashboard.indicator.drawing.parallelLine': 'ๅนณ่ก็บฟ',
- 'dashboard.indicator.drawing.priceLine': 'ไปทๆ ผ็บฟ',
- 'dashboard.indicator.drawing.priceChannel': 'ไปทๆ ผ้้',
- 'dashboard.indicator.drawing.fibonacciLine': 'ๆๆณข้ฃๅฅ็บฟ',
- 'dashboard.indicator.drawing.clearAll': 'ๆธ
้คๆๆ็ป็บฟ',
- 'dashboard.indicator.market.USStock': '็พ่ก',
- 'dashboard.indicator.market.Crypto': 'ๅ ๅฏ่ดงๅธ',
- 'dashboard.indicator.market.Forex': 'ๅคๆฑ',
- 'dashboard.indicator.market.Futures': 'ๆ่ดง',
- 'dashboard.indicator.create': 'ๅๅปบๆๆ ',
- 'dashboard.indicator.editor.title': 'ๅๅปบ/็ผ่พๆๆ ',
- 'dashboard.indicator.editor.name': 'ๆๆ ๅ็งฐ',
- 'dashboard.indicator.editor.nameRequired': '่ฏท่พๅ
ฅๆๆ ๅ็งฐ',
- 'dashboard.indicator.editor.namePlaceholder': '่ฏท่พๅ
ฅๆๆ ๅ็งฐ',
- 'dashboard.indicator.editor.description': 'ๆๆ ๆ่ฟฐ',
- 'dashboard.indicator.editor.descriptionPlaceholder': '่ฏท่พๅ
ฅๆๆ ๆ่ฟฐ๏ผๅฏ้๏ผ',
- 'dashboard.indicator.editor.code': 'ๆๆ ่ๆฌ๏ผPython๏ผ',
- 'dashboard.indicator.editor.codeRequired': '่ฏท่พๅ
ฅๆๆ ไปฃ็ ',
- 'dashboard.indicator.editor.codePlaceholder': '่ฏท่พๅ
ฅPythonไปฃ็ ',
- 'dashboard.indicator.editor.run': '่ฟ่ก',
- 'dashboard.indicator.editor.runHint': '็นๅป่ฟ่กๆ้ฎๅฏไปฅๅจK็บฟๅพไธ้ข่งๆๆ ๆๆ',
- 'dashboard.indicator.editor.guide': 'ๅผๅๆๅ',
- 'dashboard.indicator.editor.guideTitle': 'Python ๆๆ ๅผๅๆๅ',
- 'dashboard.indicator.editor.save': 'ไฟๅญ',
- 'dashboard.indicator.editor.cancel': 'ๅๆถ',
- 'dashboard.indicator.editor.unnamed': 'ๆชๅฝๅๆๆ ',
- 'dashboard.indicator.editor.publishToCommunity': 'ๅๅธๅฐ็คพๅบ',
- 'dashboard.indicator.editor.publishToCommunityHint': 'ๅๅธๅ๏ผๅ
ถไป็จๆทๅฏไปฅๅจ็คพๅบไธญๆฅ็ๅไฝฟ็จๆจ็ๆๆ ',
- 'dashboard.indicator.editor.indicatorType': 'ๆๆ ็ฑปๅ',
- 'dashboard.indicator.editor.indicatorTypeRequired': '่ฏท้ๆฉๆๆ ็ฑปๅ',
- 'dashboard.indicator.editor.indicatorTypePlaceholder': '่ฏท้ๆฉๆๆ ็ฑปๅ',
- 'dashboard.indicator.editor.previewImage': '้ข่งๅพ',
- 'dashboard.indicator.editor.uploadImage': 'ไธไผ ๅพ็',
- 'dashboard.indicator.editor.previewImageHint': 'ๅปบ่ฎฎๅฐบๅฏธ๏ผ800x400๏ผๅคงๅฐไธ่ถ
่ฟ2MB',
- 'dashboard.indicator.editor.pricing': 'ๅฎไปท๏ผQDT๏ผ',
- 'dashboard.indicator.editor.pricingType.free': 'ๅ
่ดน',
- 'dashboard.indicator.editor.pricingType.permanent': 'ๆฐธไน
',
- 'dashboard.indicator.editor.pricingType.monthly': 'ๆไป',
- 'dashboard.indicator.editor.price': 'ไปทๆ ผ',
- 'dashboard.indicator.editor.priceRequired': '่ฏท่พๅ
ฅไปทๆ ผ',
- 'dashboard.indicator.editor.pricePlaceholder': '่ฏท่พๅ
ฅไปทๆ ผ',
- 'dashboard.indicator.editor.pricingHint': 'ๅ
่ดนๆๆ ่ฝ็ถไปทๆ ผไธบ0๏ผไฝๅนณๅฐไผๆ นๆฎๆจ็ๆๆ ไฝฟ็จ้ๅๅฅฝ่ฏ็็ปไบๅฅๅฑ๏ผQDT๏ผ',
- 'dashboard.indicator.editor.aiGenerate': 'ๆบ่ฝ็ๆ',
- 'dashboard.indicator.editor.aiPromptPlaceholder': '่ฏทๆ่ฟฐไฝ ็ไฟกๅท้ป่พ๏ผๅช่พๅบ buy/sell๏ผไธ็ปๅพ๏ผplots๏ผใไปไฝ/้ฃๆง/ๅ ๅไป่ฏทๅจๅๆต้
็ฝฎไธญ่ฎพๅฎใ',
- 'dashboard.indicator.editor.aiGenerateBtn': 'AI็ๆไปฃ็ ',
- 'dashboard.indicator.editor.aiPromptRequired': '่ฏท่พๅ
ฅๆจ็ๆณๆณ',
- 'dashboard.indicator.editor.aiGenerateSuccess': 'ไปฃ็ ็ๆๆๅ',
- 'dashboard.indicator.editor.aiGenerateError': 'ไปฃ็ ็ๆๅคฑ่ดฅ๏ผ่ฏท็จๅ้่ฏ',
- 'dashboard.indicator.editor.verifyCode': 'ไปฃ็ ๆฃๆฅ',
- 'dashboard.indicator.editor.verifyCodeSuccess': 'ไปฃ็ ๆฃๆฅ้่ฟ',
- 'dashboard.indicator.editor.verifyCodeFailed': 'ไปฃ็ ๆฃๆฅๆช้่ฟ',
- 'dashboard.indicator.editor.verifyCodeEmpty': 'ไปฃ็ ไธ่ฝไธบ็ฉบ',
- 'dashboard.indicator.boundary.message': 'ๆ็คบ๏ผๆๆ ่ๆฌๅช่ด่ดฃโ่ฎก็ฎ + ็ปๅพ + buy/sell ไฟกๅทโ๏ผไปไฝใ้ฃๆงใๅ ๅไปใๆ็ปญ่ดน/ๆป็นๅฑไบ็ญ็ฅๆง่ก้
็ฝฎใ',
- 'dashboard.indicator.boundary.indicatorRule': "ๆๆ ่ๆฌ่ฏทๅช่พๅบ buy/sell๏ผๅนถ่ฎพๅฎ df['buy']/df['sell']๏ผใไธ่ฆๅจ่ๆฌๅ
ๆฐๅไปไฝ็ฎก็ใๆญข็ๆญขๆใๅ ๅไปใ",
- 'dashboard.indicator.boundary.backtestRule': '่งๅ๏ผๅไธๆ นK็บฟ่ฅๅบ็ฐไธปไฟกๅท๏ผbuy/sellโๅผ/ๅนณไป/ๅๆ๏ผ๏ผๆฌK็บฟๅฐ่ทณ่ฟๆๆๅ ไปไธๅไปใ',
- 'dashboard.indicator.paramsConfig.title': 'ๆๆ ๅๆฐ้
็ฝฎ',
- 'dashboard.indicator.paramsConfig.noParams': '่ฏฅๆๆ ๆฒกๆๅฏ้
็ฝฎ็ๅๆฐ',
- 'dashboard.indicator.paramsConfig.hint': '่ฎพ็ฝฎๅๆฐๅ็นๅป็กฎๅฎ่ฟ่กๆๆ ',
- 'dashboard.indicator.backtest.title': 'ๆๆ ๅๆต',
- 'dashboard.indicator.backtest.config': 'ๅๆตๅๆฐ',
- 'dashboard.indicator.backtest.startDate': 'ๅผๅงๆฅๆ',
- 'dashboard.indicator.backtest.endDate': '็ปๆๆฅๆ',
- 'dashboard.indicator.backtest.selectStartDate': '้ๆฉๅผๅงๆฅๆ',
- 'dashboard.indicator.backtest.selectEndDate': '้ๆฉ็ปๆๆฅๆ',
- 'dashboard.indicator.backtest.startDateRequired': '่ฏท้ๆฉๅผๅงๆฅๆ',
- 'dashboard.indicator.backtest.endDateRequired': '่ฏท้ๆฉ็ปๆๆฅๆ',
- 'dashboard.indicator.backtest.initialCapital': 'ๅๅง่ต้',
- 'dashboard.indicator.backtest.initialCapitalRequired': '่ฏท่พๅ
ฅๅๅง่ต้',
- 'dashboard.indicator.backtest.commission': 'ๆ็ปญ่ดน็๏ผ%๏ผ',
- 'dashboard.indicator.backtest.commissionHint': 'ๆๅไนไปทๅผ๏ผๅซๆ ๆ๏ผๆถๅ๏ผๆฏ็ฌๆไบค๏ผๅผ/ๅนณไป๏ผ้ฝไผไปไฝ้ขๆฃ้คใ',
- 'dashboard.indicator.backtest.leverage': 'ๆ ๆๅ็',
- 'dashboard.indicator.backtest.timeframe': 'K็บฟๅจๆ',
- 'dashboard.indicator.backtest.tradeDirection': 'ไบคๆๆนๅ',
- 'dashboard.indicator.backtest.longOnly': 'ๅๅค',
- 'dashboard.indicator.backtest.shortOnly': 'ๅ็ฉบ',
- 'dashboard.indicator.backtest.both': 'ๅๅ',
- 'dashboard.indicator.backtest.run': 'ๅผๅงๅๆต',
- 'dashboard.indicator.backtest.rerun': '้ๆฐๅๆต',
- 'dashboard.indicator.backtest.close': 'ๅ
ณ้ญ',
- 'dashboard.indicator.backtest.running': 'ๆญฃๅจ่ฟ่กๆๆ ๅๆต...',
- 'dashboard.indicator.backtest.loadingTip1': 'ๆญฃๅจ่ทๅๅๅฒK็บฟๆฐๆฎ...',
- 'dashboard.indicator.backtest.loadingTip2': 'ๆญฃๅจๆง่ก็ญ็ฅไฟกๅท่ฎก็ฎ...',
- 'dashboard.indicator.backtest.loadingTip3': 'ๆญฃๅจๆจกๆไบคๆๆง่ก...',
- 'dashboard.indicator.backtest.loadingTip4': 'ๆญฃๅจ่ฎก็ฎๅๆตๆๆ ...',
- 'dashboard.indicator.backtest.loadingTip5': 'ๅณๅฐๅฎๆ๏ผ่ฏท็จๅ...',
- 'dashboard.indicator.backtest.results': 'ๅๆต็ปๆ',
- 'dashboard.indicator.backtest.totalReturn': 'ๆปๆถ็็',
- 'dashboard.indicator.backtest.annualReturn': 'ๅนดๅๆถ็',
- 'dashboard.indicator.backtest.maxDrawdown': 'ๆๅคงๅๆค',
- 'dashboard.indicator.backtest.sharpeRatio': 'ๅคๆฎๆฏ็',
- 'dashboard.indicator.backtest.winRate': '่็',
- 'dashboard.indicator.backtest.profitFactor': '็ไบๆฏ',
- 'dashboard.indicator.backtest.totalTrades': 'ไบคๆๆฌกๆฐ',
- 'dashboard.indicator.totalReturn': 'ๆปๆถ็็',
- 'dashboard.indicator.annualReturn': 'ๅนดๅๆถ็็',
- 'dashboard.indicator.maxDrawdown': 'ๆๅคงๅๆค',
- 'dashboard.indicator.sharpeRatio': 'ๅคๆฎๆฏ็',
- 'dashboard.indicator.winRate': '่็',
- 'dashboard.indicator.profitFactor': '็ไบๆฏ',
- 'dashboard.indicator.totalTrades': 'ๆปไบคๆๆฌกๆฐ',
- 'dashboard.indicator.backtest.totalCommission': 'ๆปๆ็ปญ่ดน',
- 'dashboard.indicator.backtest.equityCurve': 'ๆถ็ๆฒ็บฟ',
- 'dashboard.indicator.backtest.strategy': 'ๆๆ ๆถ็',
- 'dashboard.indicator.backtest.benchmark': 'ๅบๅๆถ็',
- 'dashboard.indicator.backtest.tradeHistory': 'ไบคๆ่ฎฐๅฝ',
- 'dashboard.indicator.backtest.tradeTime': 'ๆถ้ด',
- 'dashboard.indicator.backtest.tradeType': '็ฑปๅ',
- 'dashboard.indicator.backtest.buy': 'ไนฐๅ
ฅ',
- 'dashboard.indicator.backtest.sell': 'ๅๅบ',
- 'dashboard.indicator.backtest.liquidation': '็ไป',
- 'dashboard.indicator.backtest.openLong': 'ๅผๅค',
- 'dashboard.indicator.backtest.closeLong': 'ๅนณๅค',
- 'dashboard.indicator.backtest.closeLongStop': 'ๅนณๅค(ๆญขๆ)',
- 'dashboard.indicator.backtest.closeLongProfit': 'ๅนณๅค(ๆญข็)',
- 'dashboard.indicator.backtest.addLong': 'ๅ ๅคไป',
- 'dashboard.indicator.backtest.openShort': 'ๅผ็ฉบ',
- 'dashboard.indicator.backtest.closeShort': 'ๅนณ็ฉบ',
- 'dashboard.indicator.backtest.closeShortStop': 'ๅนณ็ฉบ(ๆญขๆ)',
- 'dashboard.indicator.backtest.closeShortProfit': 'ๅนณ็ฉบ(ๆญข็)',
- 'dashboard.indicator.backtest.addShort': 'ๅ ็ฉบไป',
- 'dashboard.indicator.backtest.price': 'ไปทๆ ผ',
- 'dashboard.indicator.backtest.amount': 'ๆฐ้',
- 'dashboard.indicator.backtest.balance': '่ดฆๆทไฝ้ข',
- 'dashboard.indicator.backtest.profit': '็ไบ',
- 'dashboard.indicator.backtest.success': 'ๅๆตๅฎๆ',
- 'dashboard.indicator.backtest.failed': 'ๅๆตๅคฑ่ดฅ๏ผ่ฏท็จๅ้่ฏ',
- 'dashboard.indicator.backtest.quickSelect': 'ๅฟซ้้ๆฉ',
- // ๅคๆถ้ดๆกๆถๅๆต็ฒพๅบฆๆ็คบ
- 'dashboard.indicator.backtest.precisionMode': 'ๅๆต็ฒพๅบฆๆจกๅผ',
- 'dashboard.indicator.backtest.estimatedCandles': '้ข่ฎกๅค็็บฆ {count} ๆ นK็บฟ',
- 'dashboard.indicator.backtest.highPrecisionDesc': 'ไฝฟ็จ1ๅ้็บงๅซK็บฟ่ฟ่ก้ซ็ฒพๅบฆๅๆต๏ผๆญขๆๆญข็่งฆๅๆด็ฒพ็กฎ',
- 'dashboard.indicator.backtest.mediumPrecisionDesc': 'ๅๆตๅบ้ด่ถ
่ฟ30ๅคฉ๏ผไฝฟ็จ5ๅ้็บงๅซK็บฟไปฅๅนณ่กก็ฒพๅบฆไธๆง่ฝ',
- 'dashboard.indicator.backtest.standardModeWarning': 'ไฝฟ็จๆ ๅๅๆตๆจกๅผ',
- 'dashboard.indicator.backtest.standardModeDesc': 'ๅฝๅ้
็ฝฎไธๆฏๆ้ซ็ฒพๅบฆๅๆต๏ผๅฐไฝฟ็จ็ญ็ฅK็บฟ่ฟ่กๅๆต',
- 'dashboard.indicator.backtest.onlyCryptoSupported': '้ซ็ฒพๅบฆๅๆตไป
ๆฏๆๅ ๅฏ่ดงๅธๅธๅบ',
- 'dashboard.indicator.backtest.noIndicatorCode': '่ฏฅๆๆ ๆฒกๆๅฏๅๆต็ไปฃ็ ',
- 'dashboard.indicator.backtest.noSymbol': '่ฏทๅ
้ๆฉไบคๆๆ ็',
- 'dashboard.indicator.backtest.dateRangeExceeded': 'ๅๆตๆถ้ด่ๅด่ถ
ๅบ้ๅถ๏ผ{timeframe}ๅจๆๆๅคๅฏๅๆต{maxRange}',
- 'dashboard.indicator.backtest.dateRangeExceededDays': 'ๅๆตๆถ้ด่ๅด่ถ
ๅบ้ๅถ๏ผ{timeframe}ๅจๆๆๅคๅฏๅๆต{maxRange}๏ผ{maxDays}ๅคฉ๏ผ',
- 'dashboard.indicator.backtest.metaLine': 'ๆ ็๏ผ{symbol} | ๅธๅบ๏ผ{market} | ๅจๆ๏ผ{timeframe}',
- 'dashboard.indicator.backtest.savedRunId': 'ๅๆตๅทฒไฟๅญ๏ผ่ฎฐๅฝID๏ผ{id}',
- 'dashboard.indicator.backtest.historyTitle': 'ๅๆต่ฎฐๅฝ',
- 'dashboard.indicator.backtest.historyRefresh': 'ๅทๆฐ',
- 'dashboard.indicator.backtest.historyView': 'ๆฅ็',
- 'dashboard.indicator.backtest.historyNoData': 'ๆๆ ๅๆต่ฎฐๅฝ',
- 'dashboard.indicator.backtest.historyUseCurrent': 'ไป
็ฎๅๅธ็ง/ๅจๆ',
- 'dashboard.indicator.backtest.historyFilterSymbol': 'ๅธ็ง๏ผSymbol๏ผ',
- 'dashboard.indicator.backtest.historyFilterTimeframe': 'ๅจๆ๏ผTimeframe๏ผ',
- 'dashboard.indicator.backtest.historyApply': 'ๅบ็จ็ญ้',
- 'dashboard.indicator.backtest.historyAIAnalyze': 'AIๅๆ',
- 'dashboard.indicator.backtest.historyAIAnalyzeTitle': 'AI ๅๆๅปบ่ฎฎ',
- 'dashboard.indicator.backtest.historyNoAIResult': 'ๆๆ AI ๅๆ็ปๆ',
- 'dashboard.indicator.backtest.historyRunId': '่ฎฐๅฝID',
- 'dashboard.indicator.backtest.historyCreatedAt': 'ๆถ้ด',
- 'dashboard.indicator.backtest.historyRange': 'ๅบ้ด',
- 'dashboard.indicator.backtest.historyStatus': '็ถๆ',
- 'dashboard.indicator.backtest.historyStatusSuccess': 'ๆๅ',
- 'dashboard.indicator.backtest.historyStatusFailed': 'ๅคฑ่ดฅ',
- 'dashboard.indicator.backtest.historyActions': 'ๆไฝ',
- 'dashboard.indicator.backtest.prev': 'ไธไธๆญฅ',
- 'dashboard.indicator.backtest.next': 'ไธไธๆญฅ',
- 'dashboard.indicator.backtest.steps.strategy.title': 'ๆง่ก้
็ฝฎ',
- 'dashboard.indicator.backtest.steps.strategy.desc': 'ไปไฝ/้ฃๆง/ๅ ๅไป๏ผ็ญ็ฅๅฑ๏ผ',
- 'dashboard.indicator.backtest.steps.trading.title': 'ๅๆต็ฏๅข',
- 'dashboard.indicator.backtest.steps.trading.desc': 'ๆถ้ด/่ต้/่ดน็/ๆ ๆ/ๆป็น',
- 'dashboard.indicator.backtest.steps.results.title': '็ปๆ',
- 'dashboard.indicator.backtest.steps.results.desc': '็ป่ฎกไธไบคๆๆ็ป',
- 'dashboard.indicator.backtest.panel.risk': 'ๆง่ก้
็ฝฎ๏ผ้ฃๆง๏ผๆญขๆ/็งปๅจๆญข็๏ผ',
- 'dashboard.indicator.backtest.panel.scale': 'ๆง่ก้
็ฝฎ๏ผๅ ไป๏ผ้กบๅฟ/้ๅฟ๏ผ',
- 'dashboard.indicator.backtest.panel.reduce': 'ๆง่ก้
็ฝฎ๏ผๅไป๏ผ้กบๅฟ/้ๅฟ๏ผ',
- 'dashboard.indicator.backtest.panel.position': 'ๆง่ก้
็ฝฎ๏ผๅผไปไปไฝ',
- 'dashboard.indicator.backtest.field.stopLossPct': 'ๆญขๆ๏ผ%๏ผ',
- 'dashboard.indicator.backtest.field.takeProfitPct': 'ๆญข็๏ผ%๏ผ',
- 'dashboard.indicator.backtest.field.trailingEnabled': '็งปๅจๆญข็',
- 'dashboard.indicator.backtest.field.trailingStopPct': '็งปๅจๅๆค๏ผ%๏ผ',
- 'dashboard.indicator.backtest.field.trailingActivationPct': '็งปๅจๆญข็ๆฟๆดป๏ผ%๏ผ',
- 'dashboard.indicator.backtest.field.slippage': 'ๆป็น๏ผ%๏ผ',
- 'dashboard.indicator.backtest.field.trendAddEnabled': '้กบๅฟๅ ไป',
- 'dashboard.indicator.backtest.field.dcaAddEnabled': '้ๅฟๅ ไป',
- 'dashboard.indicator.backtest.field.trendAddStepPct': 'ๅ ไป่งฆๅ๏ผ%๏ผ',
- 'dashboard.indicator.backtest.field.dcaAddStepPct': 'ๅ ไป่งฆๅ๏ผ%๏ผ',
- 'dashboard.indicator.backtest.field.trendAddSizePct': 'ๆฏๆฌกๅ ไป่ต้ๅ ๆฏ๏ผ%๏ผ',
- 'dashboard.indicator.backtest.field.dcaAddSizePct': 'ๆฏๆฌกๅ ไป่ต้ๅ ๆฏ๏ผ%๏ผ',
- 'dashboard.indicator.backtest.field.trendAddMaxTimes': 'ๆๅคๅ ไปๆฌกๆฐ',
- 'dashboard.indicator.backtest.field.dcaAddMaxTimes': 'ๆๅคๅ ไปๆฌกๆฐ',
- 'dashboard.indicator.backtest.field.trendReduceEnabled': '้กบๅฟๅไป',
- 'dashboard.indicator.backtest.field.adverseReduceEnabled': '้ๅฟๅไป',
- 'dashboard.indicator.backtest.field.trendReduceStepPct': '้กบๅฟ่งฆๅ๏ผ%๏ผ',
- 'dashboard.indicator.backtest.field.adverseReduceStepPct': '้ๅฟ่งฆๅ๏ผ%๏ผ',
- 'dashboard.indicator.backtest.field.trendReduceSizePct': 'ๆฏๆฌกๅไปๆฏไพ๏ผ%๏ผ',
- 'dashboard.indicator.backtest.field.adverseReduceSizePct': 'ๆฏๆฌก้ๅฟๅไปๆฏไพ๏ผ%๏ผ',
- 'dashboard.indicator.backtest.field.trendReduceMaxTimes': 'ๆๅค้กบๅฟๅไปๆฌกๆฐ',
- 'dashboard.indicator.backtest.field.adverseReduceMaxTimes': 'ๆๅค้ๅฟๅไปๆฌกๆฐ',
- 'dashboard.indicator.backtest.field.entryPct': 'ๅผไป่ต้ๅ ๆฏ๏ผ%๏ผ',
- 'dashboard.indicator.backtest.field.minOrderPct': 'ๅๆฌกๆๅฐ่ต้ๅ ๆฏ๏ผ%๏ผ๏ผๅฏ้๏ผ',
- 'dashboard.indicator.backtest.hint.entryPctMax': 'ๆๅคงๅฏๅผไป๏ผ{maxPct}%๏ผไธบๅ็ปญๅ ไป้ข็่ต้๏ผ',
- 'dashboard.indicator.backtest.closeLongTrailing': 'ๅนณๅค(็งปๅจๆญขๆ/ๆญข็)',
- 'dashboard.indicator.backtest.reduceLong': 'ๅคๅคดๅไป',
- 'dashboard.indicator.backtest.closeShortTrailing': 'ๅนณ็ฉบ(็งปๅจๆญขๆ/ๆญข็)',
- 'dashboard.indicator.backtest.reduceShort': '็ฉบๅคดๅไป',
- 'dashboard.docs.title': 'ๆๆกฃไธญๅฟ',
- 'dashboard.docs.search.placeholder': 'ๆ็ดขๆๆกฃ...',
- 'dashboard.docs.category.all': 'ๅ
จ้จ',
- 'dashboard.docs.category.guide': 'ๅผๅๆๅ',
- 'dashboard.docs.category.api': 'APIๆๆกฃ',
- 'dashboard.docs.category.tutorial': 'ๆ็จ',
- 'dashboard.docs.category.faq': 'ๅธธ่ง้ฎ้ข',
- 'dashboard.docs.featured.title': 'ๆจ่ๆๆกฃ',
- 'dashboard.docs.featured.tag': 'ๆจ่',
- 'dashboard.docs.list.views': 'ๆต่ง',
- 'dashboard.docs.list.author': 'ไฝ่
',
- 'dashboard.docs.list.empty': 'ๆๆ ๆๆกฃ',
- 'dashboard.docs.list.backToAll': '่ฟๅๅ
จ้จๆๆกฃ',
- 'dashboard.docs.list.total': 'ๅ
ฑ {count} ็ฏๆๆกฃ',
- 'dashboard.docs.detail.back': '่ฟๅๆๆกฃๅ่กจ',
- 'dashboard.docs.detail.updatedAt': 'ๆดๆฐไบ',
- 'dashboard.docs.detail.related': '็ธๅ
ณๆๆกฃ',
- 'dashboard.docs.detail.notFound': 'ๆๆกฃไธๅญๅจ',
- 'dashboard.docs.detail.error': 'ๆๆกฃไธๅญๅจๆๅทฒ่ขซๅ ้ค',
- 'dashboard.docs.search.result': 'ๆ็ดข็ปๆ',
- 'dashboard.docs.search.keyword': 'ๅ
ณ้ฎ่ฏ',
- 'dashboard.totalEquity': 'ๆปๆ็',
- 'dashboard.totalPnL': 'ๆป็ไบ',
- 'dashboard.aiStrategies': 'AI ็ญ็ฅ',
- 'dashboard.indicatorStrategies': 'ๆๆ ็ญ็ฅ',
- 'dashboard.running': '่ฟ่กไธญ',
- 'dashboard.enabled': 'ๅทฒๅฏ็จ',
- 'dashboard.pnlHistory': 'ๅๅฒ็ไบ',
- 'dashboard.strategyPerformance': '็ญ็ฅ็ไบๅ ๆฏ',
- 'dashboard.drawdown': 'ๅๆคๆฒ็บฟ',
- 'dashboard.strategyRanking': '็ญ็ฅๆ่กๆฆ',
- // New KPI labels
- 'dashboard.winRate': '่็',
- 'dashboard.profitFactor': '็ไบๆฏ',
- 'dashboard.maxDrawdown': 'ๆๅคงๅๆค',
- 'dashboard.totalTrades': 'ๆปไบคๆ',
- 'dashboard.runningStrategies': '่ฟ่กไธญ็ญ็ฅ',
- 'dashboard.equityCurve': 'ๆ็ๆฒ็บฟ',
- 'dashboard.strategyAllocation': '็ญ็ฅๅๅธ',
- 'dashboard.drawdownCurve': 'ๅๆคๆฒ็บฟ',
- 'dashboard.hourlyDistribution': 'ไบคๆๆถๆฎต',
- // Chart labels
- 'dashboard.dailyPnl': 'ๆฅ็ไบ',
- 'dashboard.cumulativePnl': '็ดฏ่ฎก็ไบ',
- 'dashboard.tradeCount': 'ไบคๆๆฌกๆฐ',
- 'dashboard.profit': '็ไบ',
- 'dashboard.noData': 'ๆๆ ๆฐๆฎ',
- 'dashboard.noStrategyData': 'ๆๆ ็ญ็ฅๆฐๆฎ',
- // Ranking labels
- 'dashboard.ranking.totalProfit': 'ๆปๆถ็',
- 'dashboard.ranking.roi': 'ๆถ็็',
- 'dashboard.ranking.trades': 'ไบคๆๆฐ',
- // Units and labels
- 'dashboard.unit.trades': '็ฌ',
- 'dashboard.unit.strategies': 'ไธช',
- 'dashboard.label.avgDaily': 'ๆฅๅ',
- 'dashboard.label.avgProfit': 'ๅนณๅ็ๅฉ',
- 'dashboard.label.win': '่',
- 'dashboard.label.lose': '่ด',
- 'dashboard.label.trade': 'ไบคๆ',
- 'dashboard.label.indicator': 'ๆๆ ',
- 'dashboard.label.totalPnl': 'ๆป็ไบ',
- 'dashboard.label.maxDrawdownPoint': 'ๆๅคงๅๆค',
- 'dashboard.profitCalendar': 'ๆถ็ๆฅๅ',
- 'dashboard.recentTrades': 'ๆ่ฟไบคๆ',
- 'dashboard.currentPositions': 'ๅฝๅๆไป',
- 'dashboard.table.time': 'ๆถ้ด',
- 'dashboard.table.strategy': '็ญ็ฅๅ็งฐ',
- 'dashboard.table.symbol': 'ๆ ็',
- 'dashboard.table.type': '็ฑปๅ',
- 'dashboard.table.side': 'ๆนๅ',
- 'dashboard.table.size': 'ๆไป้',
- 'dashboard.table.entryPrice': 'ๅผไปๅไปท',
- 'dashboard.table.price': 'ไปทๆ ผ',
- 'dashboard.table.amount': 'ๆฐ้',
- 'dashboard.table.profit': '็ไบ',
- 'dashboard.pendingOrders': '่ฎขๅๆง่ก่ฎฐๅฝ',
- 'dashboard.totalOrders': 'ๅ
ฑ {total} ๆก',
- 'dashboard.viewError': 'ๆฅ็้่ฏฏ',
- 'dashboard.filled': 'ๅทฒๆไบค',
- 'dashboard.orderTable.time': 'ๅๅปบๆถ้ด',
- 'dashboard.orderTable.strategy': '็ญ็ฅ',
- 'dashboard.orderTable.symbol': 'ไบคๆๅฏน',
- 'dashboard.orderTable.signalType': 'ไฟกๅท็ฑปๅ',
- 'dashboard.orderTable.amount': 'ๆฐ้',
- 'dashboard.orderTable.price': 'ๆไบคไปท',
- 'dashboard.orderTable.status': '็ถๆ',
- 'dashboard.orderTable.timeInfo': 'ๆถ้ด',
- 'dashboard.orderTable.executedAt': 'ๆง่กๆถ้ด',
- 'dashboard.orderTable.exchange': 'ไบคๆๆ',
- 'dashboard.orderTable.notify': '้็ฅๆนๅผ',
- 'dashboard.orderTable.actions': 'ๆไฝ',
- 'dashboard.orderTable.delete': 'ๅ ้ค',
- 'dashboard.orderTable.deleteConfirm': '็กฎ่ฎคๅ ้ค่ฟๆก่ฎฐๅฝ๏ผ',
- 'dashboard.orderTable.deleteSuccess': 'ๅ ้คๆๅ',
- 'dashboard.orderTable.deleteFailed': 'ๅ ้คๅคฑ่ดฅ',
- 'dashboard.newOrderNotify': 'ๆฐ่ฎขๅๆ้',
- 'dashboard.newOrderDesc': 'ๆๆฐ็่ฎขๅๆง่ก่ฎฐๅฝ',
- 'dashboard.soundEnabled': 'ๅฃฐ้ณๆ้ๅทฒๅผๅฏ',
- 'dashboard.soundDisabled': 'ๅฃฐ้ณๆ้ๅทฒๅ
ณ้ญ',
- 'dashboard.clickToMute': '็นๅปๅ
ณ้ญๅฃฐ้ณๆ้',
- 'dashboard.clickToUnmute': '็นๅปๅผๅฏๅฃฐ้ณๆ้',
- 'dashboard.signalType.openLong': 'ๅผๅค',
- 'dashboard.signalType.openShort': 'ๅผ็ฉบ',
- 'dashboard.signalType.closeLong': 'ๅนณๅค',
- 'dashboard.signalType.closeShort': 'ๅนณ็ฉบ',
- 'dashboard.signalType.addLong': 'ๅ ๅค',
- 'dashboard.signalType.addShort': 'ๅ ็ฉบ',
- 'dashboard.status.pending': 'ๅพ
ๅค็',
- 'dashboard.status.processing': 'ๅค็ไธญ',
- 'dashboard.status.completed': 'ๅทฒๅฎๆ',
- 'dashboard.status.failed': 'ๅคฑ่ดฅ',
- 'dashboard.status.cancelled': 'ๅทฒๅๆถ',
- 'dashboard.table.pnl': 'ๆชๅฎ็ฐ็ไบ',
- 'form.basic-form.basic.title': 'ๅบ็ก่กจๅ',
- 'form.basic-form.basic.description': '่กจๅ้กต็จไบๅ็จๆทๆถ้ๆ้ช่ฏไฟกๆฏ๏ผๅบ็ก่กจๅๅธธ่งไบๆฐๆฎ้กน่พๅฐ็่กจๅๅบๆฏใ',
- 'form.basic-form.title.label': 'ๆ ้ข',
- 'form.basic-form.title.placeholder': '็ป็ฎๆ ่ตทไธชๅๅญ',
- 'form.basic-form.title.required': '่ฏท่พๅ
ฅๆ ้ข',
- 'form.basic-form.date.label': '่ตทๆญขๆฅๆ',
- 'form.basic-form.placeholder.start': 'ๅผๅงๆฅๆ',
- 'form.basic-form.placeholder.end': '็ปๆๆฅๆ',
- 'form.basic-form.date.required': '่ฏท้ๆฉ่ตทๆญขๆฅๆ',
- 'form.basic-form.goal.label': '็ฎๆ ๆ่ฟฐ',
- 'form.basic-form.goal.placeholder': '่ฏท่พๅ
ฅไฝ ็้ถๆฎตๆงๅทฅไฝ็ฎๆ ',
- 'form.basic-form.goal.required': '่ฏท่พๅ
ฅ็ฎๆ ๆ่ฟฐ',
- 'form.basic-form.standard.label': '่กก้ๆ ๅ',
- 'form.basic-form.standard.placeholder': '่ฏท่พๅ
ฅ่กก้ๆ ๅ',
- 'form.basic-form.standard.required': '่ฏท่พๅ
ฅ่กก้ๆ ๅ',
- 'form.basic-form.client.label': 'ๅฎขๆท',
- 'form.basic-form.client.required': '่ฏทๆ่ฟฐไฝ ๆๅก็ๅฎขๆท',
- 'form.basic-form.label.tooltip': '็ฎๆ ็ๆๅกๅฏน่ฑก',
- 'form.basic-form.client.placeholder': '่ฏทๆ่ฟฐไฝ ๆๅก็ๅฎขๆท๏ผๅ
้จๅฎขๆท็ดๆฅ @ๅงๅ๏ผๅทฅๅท',
- 'form.basic-form.invites.label': '้่ฏไบบ',
- 'form.basic-form.invites.placeholder': '่ฏท็ดๆฅ @ๅงๅ๏ผๅทฅๅท๏ผๆๅคๅฏ้่ฏท 5 ไบบ',
- 'form.basic-form.weight.label': 'ๆ้',
- 'form.basic-form.weight.placeholder': '่ฏท่พๅ
ฅ',
- 'form.basic-form.public.label': '็ฎๆ ๅ
ฌๅผ',
- 'form.basic-form.label.help': 'ๅฎขๆทใ้่ฏไบบ้ป่ฎค่ขซๅไบซ',
- 'form.basic-form.radio.public': 'ๅ
ฌๅผ',
- 'form.basic-form.radio.partially-public': '้จๅๅ
ฌๅผ',
- 'form.basic-form.radio.private': 'ไธๅ
ฌๅผ',
- 'form.basic-form.publicUsers.placeholder': 'ๅ
ฌๅผ็ป',
- 'form.basic-form.option.A': 'ๅไบไธ',
- 'form.basic-form.option.B': 'ๅไบไบ',
- 'form.basic-form.option.C': 'ๅไบไธ',
- 'form.basic-form.email.required': '่ฏท่พๅ
ฅ้ฎ็ฎฑๅฐๅ๏ผ',
- 'form.basic-form.email.wrong-format': '้ฎ็ฎฑๅฐๅๆ ผๅผ้่ฏฏ๏ผ',
- 'form.basic-form.userName.required': '่ฏท่พๅ
ฅ็จๆทๅ!',
- 'form.basic-form.password.required': '่ฏท่พๅ
ฅๅฏ็ ๏ผ',
- 'form.basic-form.password.twice': 'ไธคๆฌก่พๅ
ฅ็ๅฏ็ ไธๅน้
!',
- 'form.basic-form.strength.msg': '่ฏท่ณๅฐ่พๅ
ฅ 6 ไธชๅญ็ฌฆใ่ฏทไธ่ฆไฝฟ็จๅฎนๆ่ขซ็ๅฐ็ๅฏ็ ใ',
- 'form.basic-form.strength.strong': 'ๅผบๅบฆ๏ผๅผบ',
- 'form.basic-form.strength.medium': 'ๅผบๅบฆ๏ผไธญ',
- 'form.basic-form.strength.short': 'ๅผบๅบฆ๏ผๅคช็ญ',
- 'form.basic-form.confirm-password.required': '่ฏท็กฎ่ฎคๅฏ็ ๏ผ',
- 'form.basic-form.phone-number.required': '่ฏท่พๅ
ฅๆๆบๅท๏ผ',
- 'form.basic-form.phone-number.wrong-format': 'ๆๆบๅทๆ ผๅผ้่ฏฏ๏ผ',
- 'form.basic-form.verification-code.required': '่ฏท่พๅ
ฅ้ช่ฏ็ ๏ผ',
- 'form.basic-form.form.get-captcha': '่ทๅ้ช่ฏ็ ',
- 'form.basic-form.captcha.second': '็ง',
- 'form.basic-form.form.optional': '๏ผ้ๅกซ๏ผ',
- 'form.basic-form.form.submit': 'ๆไบค',
- 'form.basic-form.form.save': 'ไฟๅญ',
- 'form.basic-form.email.placeholder': '้ฎ็ฎฑ',
- 'form.basic-form.password.placeholder': '่ณๅฐ6ไฝๅฏ็ ๏ผๅบๅๅคงๅฐๅ',
- 'form.basic-form.confirm-password.placeholder': '็กฎ่ฎคๅฏ็ ',
- 'form.basic-form.phone-number.placeholder': 'ๆๆบๅท',
- 'form.basic-form.verification-code.placeholder': '้ช่ฏ็ ',
- 'result.success.title': 'ๆไบคๆๅ',
- 'result.success.description': 'ๆไบค็ปๆ้กต็จไบๅ้ฆไธ็ณปๅๆไฝไปปๅก็ๅค็็ปๆ๏ผ ๅฆๆไป
ๆฏ็ฎๅๆไฝ๏ผไฝฟ็จ Message ๅ
จๅฑๆ็คบๅ้ฆๅณๅฏใ ๆฌๆๅญๅบๅๅฏไปฅๅฑ็คบ็ฎๅ็่กฅๅ
่ฏดๆ๏ผๅฆๆๆ็ฑปไผผๅฑ็คบ โๅๆฎโ็้ๆฑ๏ผไธ้ข่ฟไธช็ฐ่ฒๅบๅๅฏไปฅๅ็ฐๆฏ่พๅคๆ็ๅ
ๅฎนใ',
- 'result.success.operate-title': '้กน็ฎๅ็งฐ',
- 'result.success.operate-id': '้กน็ฎ ID',
- 'result.success.principal': '่ด่ดฃไบบ',
- 'result.success.operate-time': '็ๆๆถ้ด',
- 'result.success.step1-title': 'ๅๅปบ้กน็ฎ',
- 'result.success.step1-operator': 'ๆฒไธฝไธฝ',
- 'result.success.step2-title': '้จ้จๅๅฎก',
- 'result.success.step2-operator': 'ๅจๆฏๆฏ',
- 'result.success.step2-extra': 'ๅฌไธไธ',
- 'result.success.step3-title': '่ดขๅกๅคๆ ธ',
- 'result.success.step4-title': 'ๅฎๆ',
- 'result.success.btn-return': '่ฟๅๅ่กจ',
- 'result.success.btn-project': 'ๆฅ็้กน็ฎ',
- 'result.success.btn-print': 'ๆๅฐ',
- 'result.fail.error.title': 'ๆไบคๅคฑ่ดฅ',
- 'result.fail.error.description': '่ฏทๆ ธๅฏนๅนถไฟฎๆนไปฅไธไฟกๆฏๅ๏ผๅ้ๆฐๆไบคใ',
- 'result.fail.error.hint-title': 'ๆจๆไบค็ๅ
ๅฎนๆๅฆไธ้่ฏฏ๏ผ',
- 'result.fail.error.hint-text1': 'ๆจ็่ดฆๆทๅทฒ่ขซๅป็ป',
- 'result.fail.error.hint-btn1': '็ซๅณ่งฃๅป',
- 'result.fail.error.hint-text2': 'ๆจ็่ดฆๆท่ฟไธๅ
ทๅค็ณ่ฏท่ตๆ ผ',
- 'result.fail.error.hint-btn2': '็ซๅณๅ็บง',
- 'result.fail.error.btn-text': '่ฟๅไฟฎๆน',
- 'account.settings.menuMap.custom': 'ไธชๆงๅ',
- 'account.settings.menuMap.binding': '่ดฆๅท็ปๅฎ',
- 'account.settings.basic.avatar': 'ๅคดๅ',
- 'account.settings.basic.change-avatar': 'ๆดๆขๅคดๅ',
- 'account.settings.basic.email': '้ฎ็ฎฑ',
- 'account.settings.basic.email-message': '่ฏท่พๅ
ฅๆจ็้ฎ็ฎฑ!',
- 'account.settings.basic.nickname': 'ๆต็งฐ',
- 'account.settings.basic.nickname-message': '่ฏท่พๅ
ฅๆจ็ๆต็งฐ!',
- 'account.settings.basic.profile': 'ไธชไบบ็ฎไป',
- 'account.settings.basic.profile-message': '่ฏท่พๅ
ฅไธชไบบ็ฎไป!',
- 'account.settings.basic.profile-placeholder': 'ไธชไบบ็ฎไป',
- 'account.settings.basic.country': 'ๅฝๅฎถ/ๅฐๅบ',
- 'account.settings.basic.country-message': '่ฏท่พๅ
ฅๆจ็ๅฝๅฎถๆๅฐๅบ!',
- 'account.settings.basic.geographic': 'ๆๅจ็ๅธ',
- 'account.settings.basic.geographic-message': '่ฏท่พๅ
ฅๆจ็ๆๅจ็ๅธ!',
- 'account.settings.basic.address': '่ก้ๅฐๅ',
- 'account.settings.basic.address-message': '่ฏท่พๅ
ฅๆจ็่ก้ๅฐๅ!',
- 'account.settings.basic.phone': '่็ณป็ต่ฏ',
- 'account.settings.basic.phone-message': '่ฏท่พๅ
ฅๆจ็่็ณป็ต่ฏ!',
- 'account.settings.basic.update': 'ๆดๆฐๅบๆฌไฟกๆฏ',
- 'account.settings.basic.update.success': 'ๆดๆฐๅบๆฌไฟกๆฏๆๅ',
- 'account.settings.security.strong': 'ๅผบ',
- 'account.settings.security.medium': 'ไธญ',
- 'account.settings.security.weak': 'ๅผฑ',
- 'account.settings.security.password': '่ดฆๆทๅฏ็ ',
- 'account.settings.security.password-description': 'ๅฝๅๅฏ็ ๅผบๅบฆ๏ผ',
- 'account.settings.security.phone': 'ๅฏไฟๆๆบ',
- 'account.settings.security.phone-description': 'ๅทฒ็ปๅฎๆๆบ๏ผ',
- 'account.settings.security.question': 'ๅฏไฟ้ฎ้ข',
- 'account.settings.security.question-description': 'ๆช่ฎพ็ฝฎๅฏไฟ้ฎ้ข๏ผๅฏไฟ้ฎ้ขๅฏๆๆไฟๆค่ดฆๆทๅฎๅ
จ',
- 'account.settings.security.email': '็ปๅฎ้ฎ็ฎฑ',
- 'account.settings.security.email-description': 'ๅทฒ็ปๅฎ้ฎ็ฎฑ๏ผ',
- 'account.settings.security.mfa': 'MFA ่ฎพๅค',
- 'account.settings.security.mfa-description': 'ๆช็ปๅฎ MFA ่ฎพๅค๏ผ็ปๅฎๅ๏ผๅฏไปฅ่ฟ่กไบๆฌก็กฎ่ฎค',
- 'account.settings.security.modify': 'ไฟฎๆน',
- 'account.settings.security.set': '่ฎพ็ฝฎ',
- 'account.settings.security.bind': '็ปๅฎ',
- 'account.settings.binding.taobao': '็ปๅฎๆทๅฎ',
- 'account.settings.binding.taobao-description': 'ๅฝๅๆช็ปๅฎๆทๅฎ่ดฆๅท',
- 'account.settings.binding.alipay': '็ปๅฎๆฏไปๅฎ',
- 'account.settings.binding.alipay-description': 'ๅฝๅๆช็ปๅฎๆฏไปๅฎ่ดฆๅท',
- 'account.settings.binding.dingding': '็ปๅฎ้้',
- 'account.settings.binding.dingding-description': 'ๅฝๅๆช็ปๅฎ้้่ดฆๅท',
- 'account.settings.binding.bind': '็ปๅฎ',
- 'account.settings.notification.password': '่ดฆๆทๅฏ็ ',
- 'account.settings.notification.password-description': 'ๅ
ถไป็จๆท็ๆถๆฏๅฐไปฅ็ซๅ
ไฟก็ๅฝขๅผ้็ฅ',
- 'account.settings.notification.messages': '็ณป็ปๆถๆฏ',
- 'account.settings.notification.messages-description': '็ณป็ปๆถๆฏๅฐไปฅ็ซๅ
ไฟก็ๅฝขๅผ้็ฅ',
- 'account.settings.notification.todo': 'ๅพ
ๅไปปๅก',
- 'account.settings.notification.todo-description': 'ๅพ
ๅไปปๅกๅฐไปฅ็ซๅ
ไฟก็ๅฝขๅผ้็ฅ',
- 'account.settings.settings.open': 'ๅผ',
- 'account.settings.settings.close': 'ๅ
ณ',
- 'trading-assistant.title': 'ไบคๆๅฉๆ',
- 'trading-assistant.strategyList': '็ญ็ฅๅ่กจ',
- 'trading-assistant.createStrategy': 'ๅๅปบ็ญ็ฅ',
- 'trading-assistant.noStrategy': 'ๆๆ ็ญ็ฅ',
- 'trading-assistant.selectStrategy': '่ฏทไปๅทฆไพง้ๆฉไธไธช็ญ็ฅๆฅ็่ฏฆๆ
',
- 'trading-assistant.startStrategy': 'ๅฏๅจ็ญ็ฅ',
- 'trading-assistant.stopStrategy': 'ๅๆญข็ญ็ฅ',
- 'trading-assistant.editStrategy': '็ผ่พ็ญ็ฅ',
- 'trading-assistant.deleteStrategy': 'ๅ ้ค็ญ็ฅ',
- 'trading-assistant.startAll': 'ๅ
จ้จๅฏๅจ',
- 'trading-assistant.stopAll': 'ๅ
จ้จๅๆญข',
- 'trading-assistant.deleteAll': 'ๅ
จ้จๅ ้ค',
- 'trading-assistant.symbolCount': 'ไธชๅธ็ง',
- 'trading-assistant.strategyCount': 'ไธช็ญ็ฅ',
- 'trading-assistant.groupBy': 'ๅ็ปๆนๅผ',
- 'trading-assistant.groupByStrategy': 'ๆ็ญ็ฅ',
- 'trading-assistant.groupBySymbol': 'ๆๆ ็',
- 'trading-assistant.timeframe': 'ๅจๆ',
- 'trading-assistant.indicator': 'ๆๆ ',
- 'trading-assistant.status.running': '่ฟ่กไธญ',
- 'trading-assistant.status.stopped': 'ๅทฒๅๆญข',
- 'trading-assistant.status.error': '้่ฏฏ',
- 'trading-assistant.strategyType.IndicatorStrategy': 'ๆๆฏๆๆ ็ญ็ฅ',
- 'trading-assistant.strategyType.PromptBasedStrategy': 'ๆ็คบ่ฏ็ญ็ฅ',
- 'trading-assistant.strategyType.GridStrategy': '็ฝๆ ผ็ญ็ฅ',
- 'trading-assistant.tabs.tradingRecords': 'ไบคๆ่ฎฐๅฝ',
- 'trading-assistant.tabs.positions': 'ๆไป่ฎฐๅฝ',
- 'trading-assistant.tabs.equityCurve': 'ๅๅผๆฒ็บฟ',
- 'trading-assistant.form.step1': '้ๆฉๆๆ ',
- 'trading-assistant.form.step2': 'ไบคๆๆ้
็ฝฎ',
- 'trading-assistant.form.step3': '็ญ็ฅๅๆฐ',
- 'trading-assistant.form.step2Params': '็ญ็ฅๅๆฐ',
- 'trading-assistant.form.step3Signal': 'ไฟกๅท้็ฅ',
- 'trading-assistant.form.simpleMode': '็ฎๆๆจกๅผ',
- 'trading-assistant.form.advancedMode': '้ซ็บงๆจกๅผ',
- 'trading-assistant.form.simpleModeHint': 'ๅฟซ้ๅๅปบ็ญ็ฅ๏ผไฝฟ็จๆจ่้ป่ฎคๅๆฐ',
- 'trading-assistant.form.advancedModeHint': '่ชๅฎไนๅ
จ้จๅๆฐ๏ผ้ๅไธไธ็จๆท',
- 'trading-assistant.form.simpleStep1': '้ๆฉๆๆ & ไบคๆๅฏน',
- 'trading-assistant.form.simpleStep2': 'ๅฏๅจๆนๅผ',
- 'trading-assistant.form.simpleDefaultsHint': '้ป่ฎคๅๆฐ๏ผๅฏๅฑๅผไฟฎๆน๏ผ',
- 'trading-assistant.form.showAdvancedSettings': 'ๅฑๅผ้ซ็บง่ฎพ็ฝฎ',
- 'trading-assistant.form.hideAdvancedSettings': 'ๆถ่ตท้ซ็บง่ฎพ็ฝฎ',
- 'trading-assistant.form.indicator': '้ๆฉๆๆ ',
- 'trading-assistant.form.indicatorHint': 'ๅช่ฝ้ๆฉๆจๅทฒ่ดญไนฐๆๅๅปบ็ๆๆฏๆๆ ',
- 'trading-assistant.form.qdtCostHints': 'ไฝฟ็จ็ญ็ฅๅฐๆถ่QDT๏ผ่ฏท็กฎไฟ่ดฆๆทๆ่ถณๅค็QDTไฝ้ข',
- 'trading-assistant.form.indicatorDescription': 'ๆๆ ๆ่ฟฐ',
- 'trading-assistant.form.noDescription': 'ๆๆ ๆ่ฟฐ',
- 'trading-assistant.form.indicatorParams': 'ๆๆ ๅๆฐ',
- 'trading-assistant.form.indicatorParamsHint': '่ฟไบๅๆฐไผไผ ้็ปๆๆ ไปฃ็ ๏ผไธๅ็ญ็ฅๅฏไปฅไฝฟ็จไธๅ็ๅๆฐๅผ',
- 'trading-assistant.form.exchange': '้ๆฉไบคๆๆ',
- 'trading-assistant.form.apiKey': 'API Key',
- 'trading-assistant.form.secretKey': 'Secret Key',
- 'trading-assistant.form.passphrase': 'Passphrase',
- 'trading-assistant.form.testConnection': 'ๆต่ฏ่ฟๆฅ',
- 'trading-assistant.form.strategyName': '็ญ็ฅๅ็งฐ',
- 'trading-assistant.form.symbol': 'ไบคๆๅฏน',
- 'trading-assistant.form.symbols': 'ไบคๆๅฏน๏ผๅค้๏ผ',
- 'trading-assistant.form.symbolHint': '็ฎๅไป
ๆฏๆๅ ๅฏ่ดงๅธไบคๆๅฏน',
- 'trading-assistant.form.symbolHintCrypto': 'ๅ ๅฏ่ดงๅธ๏ผไฝฟ็จBTC/USDT็ญไบคๆๅฏนๆ ผๅผ',
- 'trading-assistant.form.symbolsHint': '้ๆฉๅคไธชไบคๆๅฏน๏ผๅฐ่ชๅจๅๅปบๅคไธช็ญ็ฅ',
- 'trading-assistant.form.strategyType': '็ญ็ฅ็ฑปๅ',
- 'trading-assistant.form.strategyTypeSingle': 'ๅๆ ็็ญ็ฅ',
- 'trading-assistant.form.strategyTypeCrossSectional': 'ๆช้ข็ญ็ฅ',
- 'trading-assistant.form.strategyTypeHint': 'ๅๆ ็็ญ็ฅ๏ผ้ๅฏนๅไธชๆ ็่ฟ่กไบคๆ๏ผๆช้ข็ญ็ฅ๏ผๅๆถ็ฎก็ๅคไธชๆ ็็็ปๅ',
- 'trading-assistant.form.symbolList': 'ๆ ็ๅ่กจ',
- 'trading-assistant.form.symbolListHint': '้ๆฉๅคไธชๆ ็๏ผ็ญ็ฅๅฐๆ นๆฎๆๆ ่ฏๅ่ฟ่กๆๅบๅ่ฐไป',
- 'trading-assistant.form.portfolioSize': 'ๆไป็ปๅๅคงๅฐ',
- 'trading-assistant.form.portfolioSizeHint': '็ญ็ฅๅๆถๆๆ็ๆ ็ๆฐ้',
- 'trading-assistant.form.longRatio': 'ๅๅคๆฏไพ',
- 'trading-assistant.form.longRatioHint': 'ๆไปไธญๅๅคๆ ็็ๆฏไพ๏ผ0-1๏ผ๏ผไพๅฆ0.5่กจ็คบ50%ๅๅค๏ผ50%ๅ็ฉบ',
- 'trading-assistant.form.rebalanceFrequency': '่ฐไป้ข็',
- 'trading-assistant.form.rebalanceDaily': 'ๆฏๆฅ',
- 'trading-assistant.form.rebalanceWeekly': 'ๆฏๅจ',
- 'trading-assistant.form.rebalanceMonthly': 'ๆฏๆ',
- 'trading-assistant.form.rebalanceFrequencyHint': '็ญ็ฅ้ๆฐ่ฐๆดๆไป็ปๅ็้ข็',
- 'trading-assistant.form.addSymbol': 'ๆทปๅ ไบคๆๅฏน',
- 'trading-assistant.form.addSymbolTitle': 'ๆทปๅ ไบคๆๅฏนๅฐ่ช้ๅ่กจ',
- 'trading-assistant.form.searchSymbolPlaceholder': '่พๅ
ฅไปฃ็ ๆ็ดข๏ผๅฆ BTCใAAPL',
- 'trading-assistant.form.noSymbolFound': 'ๆชๆพๅฐๅน้
็ไบคๆๅฏน',
- 'trading-assistant.form.canDirectAdd': 'ๅฏไปฅ็ดๆฅ่พๅ
ฅไปฃ็ ๆทปๅ ',
- 'trading-assistant.form.searchSymbolHint': '่พๅ
ฅไปฃ็ ๆ็ดขไบคๆๅฏน',
- 'trading-assistant.form.confirmAdd': '็กฎ่ฎคๆทปๅ ',
- 'trading-assistant.form.addSymbolSuccess': 'ไบคๆๅฏนๆทปๅ ๆๅ',
- 'trading-assistant.form.addSymbolFailed': 'ๆทปๅ ๅคฑ่ดฅ๏ผ่ฏท้่ฏ',
- 'trading-assistant.form.pleaseSelectSymbol': '่ฏท้ๆฉๆ่พๅ
ฅไบคๆๅฏน',
- 'trading-assistant.form.initialCapital': 'ๆๅ
ฅ้้ข',
- 'trading-assistant.form.marketType': 'ๅธๅบ็ฑปๅ',
- 'trading-assistant.form.marketTypeFutures': 'ๅ็บฆ',
- 'trading-assistant.form.marketTypeSpot': '็ฐ่ดง',
- 'trading-assistant.form.marketTypeHint': 'ๅ็บฆๆฏๆๅๅไบคๆๅๆ ๆ๏ผ็ฐ่ดงไป
ๆฏๆๅๅคไธๆ ๆๅบๅฎไธบ1ๅ',
- 'trading-assistant.form.leverage': 'ๆ ๆๅๆฐ',
- 'trading-assistant.form.leverageHint': 'ๅ็บฆ๏ผ1-125ๅ๏ผ็ฐ่ดง๏ผๅบๅฎ1ๅ',
- 'trading-assistant.form.spotLeverageFixed': '็ฐ่ดงไบคๆๆ ๆๅบๅฎไธบ1ๅ',
- 'trading-assistant.form.spotOnlyLongHint': '็ฐ่ดงไบคๆไป
ๆฏๆๅๅค',
- 'trading-assistant.form.tradeDirection': 'ไบคๆๆนๅ',
- 'trading-assistant.form.tradeDirectionLong': 'ไป
ๅๅค',
- 'trading-assistant.form.tradeDirectionShort': 'ไป
ๅ็ฉบ',
- 'trading-assistant.form.tradeDirectionBoth': 'ๅๅไบคๆ',
- 'trading-assistant.form.timeframe': 'ๆถ้ดๅจๆ',
- 'trading-assistant.form.klinePeriod': 'K็บฟๅจๆ',
- 'trading-assistant.form.timeframe1m': '1ๅ้',
- 'trading-assistant.form.timeframe5m': '5ๅ้',
- 'trading-assistant.form.timeframe15m': '15ๅ้',
- 'trading-assistant.form.timeframe30m': '30ๅ้',
- 'trading-assistant.form.timeframe1H': '1ๅฐๆถ',
- 'trading-assistant.form.timeframe4H': '4ๅฐๆถ',
- 'trading-assistant.form.timeframe1D': '1ๅคฉ',
- 'trading-assistant.form.selectStrategyType': '้ๆฉ็ญ็ฅ็ฑปๅ',
- 'trading-assistant.form.indicatorStrategy': 'ๆๆ ็ญ็ฅ',
- 'trading-assistant.form.indicatorStrategyDesc': 'ๅบไบๆๆฏๆๆ ็่ชๅจๅไบคๆ็ญ็ฅ',
- 'trading-assistant.form.aiStrategy': 'AI็ญ็ฅ',
- 'trading-assistant.form.aiStrategyDesc': 'ๅบไบAIๆบ่ฝๅณ็ญ็่ชๅจๅไบคๆ็ญ็ฅ',
- 'trading-assistant.form.enableAiFilter': 'ๅฏ็จAIๆบ่ฝๅณ็ญ่ฟๆปค',
- 'trading-assistant.form.enableAiFilterHint': 'ๅฏ็จๅ๏ผๆๆ ไฟกๅทๅฐ็ป่ฟAIๆบ่ฝ่ฟๆปค๏ผๆ้ซไบคๆ่ดจ้',
- 'trading-assistant.form.aiFilterPrompt': '่ชๅฎไนๆ็คบ่ฏ',
- 'trading-assistant.form.aiFilterPromptHint': 'ไธบAI่ฟๆปคๆไพ่ชๅฎไนๆไปค๏ผ็็ฉบๅไฝฟ็จ็ณป็ป้ป่ฎค',
- 'trading-assistant.form.executionMode': 'ๆง่กๆจกๅผ',
- 'trading-assistant.form.executionModeSignal': 'ไป
ไฟกๅท้็ฅ',
- 'trading-assistant.form.executionModeLive': 'ๅฎ็่ชๅจไบคๆ',
- 'trading-assistant.form.liveTradingCryptoOnlyHint': 'ๅฎ็ไบคๆๅ่ฝไป
ๆฏๆๅ ๅฏ่ดงๅธๅธๅบ',
- 'trading-assistant.form.liveTradingNotSupportedHint': 'ๅฝๅๅธๅบไธๆฏๆๅฎ็ไบคๆ',
- 'trading-assistant.form.broker': 'ๅธๅ',
- 'trading-assistant.form.localDeploymentRequired': 'โ ๏ธ ้่ฆๆฌๅฐ้จ็ฝฒ่ฟ่ก',
- 'trading-assistant.form.localDeploymentHint': 'IBKR ๅ MT5 ๅฑไบๅคๆ็ฑปๅฎ็ๆฅๅฃ๏ผ้่ฆๆฌๅฐ้จ็ฝฒ่ฟ่ก QuantDinger๏ผไธๆฏๆไบ็ซฏ SaaS ๆจกๅผใ่ฏท็กฎไฟๆจๅทฒๅจๆฌๅฐๅฎ่ฃ
ๅนถ้
็ฝฎ็ธๅ
ณไบคๆ่ฝฏไปถ๏ผTWS/IB Gateway ๆ MT5 ็ป็ซฏ๏ผใ',
- 'trading-assistant.form.ibkrConnectionTitle': '็้่ฏๅธ่ฟๆฅ้
็ฝฎ',
- 'trading-assistant.form.ibkrConnectionHint': '่ฏท็กฎไฟ TWS ๆ IB Gateway ๅทฒๅฏๅจๅนถๅฏ็จ API ่ฟๆฅ',
- 'trading-assistant.validation.brokerRequired': '่ฏท้ๆฉๅธๅ',
- 'trading-assistant.placeholders.selectBroker': '้ๆฉๅธๅ',
- 'trading-assistant.brokerNames': {
- 'ibkr': '็้่ฏๅธ (Interactive Brokers)',
- 'mt5': 'MetaTrader 5 (MT5)',
- 'mt4': 'MetaTrader 4 (MT4)',
- 'futu': 'ๅฏ้่ฏๅธ (Futu)',
- 'tiger': '่่่ฏๅธ (Tiger Brokers)',
- 'td': 'TD Ameritrade',
- 'schwab': 'Charles Schwab'
- },
- 'trading-assistant.form.ibkrHost': 'ไธปๆบๅฐๅ',
- 'trading-assistant.form.ibkrPort': '็ซฏๅฃ',
- 'trading-assistant.form.ibkrPortHint': 'TWSๅฎ็:7497, TWSๆจกๆ:7496, Gatewayๅฎ็:4001, Gatewayๆจกๆ:4002',
- 'trading-assistant.form.ibkrClientId': 'ๅฎขๆท็ซฏID',
- 'trading-assistant.form.ibkrAccount': '่ดฆๆทๅท',
- 'trading-assistant.form.ibkrAccountHint': '็็ฉบ่ชๅจ้ๆฉ็ฌฌไธไธช่ดฆๆท๏ผๅค่ดฆๆท็จๆทๅฏๆๅฎ่ดฆๆทๅท',
- 'trading-assistant.placeholders.ibkrAccount': 'ๅฏ้๏ผๅฆ U1234567',
- 'trading-assistant.exchange.ibkrConnectionSuccess': '็้่ฏๅธ่ฟๆฅๆๅ',
- 'trading-assistant.exchange.ibkrConnectionFailed': '็้่ฏๅธ่ฟๆฅๅคฑ่ดฅ๏ผ่ฏทๆฃๆฅ TWS/Gateway ๆฏๅฆ่ฟ่ก',
- 'trading-assistant.exchange.checkLocalDeployment': '่ฏท็กฎ่ฎคๆจๅทฒๅจๆฌๅฐ้จ็ฝฒ่ฟ่ก๏ผไบ็ซฏ SaaS ไธๆฏๆๆญค็ฑปๅคๆๅฎ็',
- // MT5/Forex ้
็ฝฎ
- 'trading-assistant.form.forexBroker': 'ๅคๆฑๅธๅ',
- 'trading-assistant.form.mt5ConnectionTitle': 'MetaTrader 5 ่ฟๆฅ้
็ฝฎ',
- 'trading-assistant.form.mt5ConnectionHint': '่ฏท็กฎไฟ MT5 ็ป็ซฏๅทฒๅฏๅจๅนถ็ปๅฝ๏ผไป
ๆฏๆ Windows๏ผ',
- 'trading-assistant.form.mt5Server': 'ๆๅกๅจ',
- 'trading-assistant.form.mt5ServerHint': 'ๅธๅๆๅกๅจๅ็งฐ๏ผๅฆ๏ผICMarkets-Demo๏ผ',
- 'trading-assistant.form.mt5Login': '่ดฆๆทๅท',
- 'trading-assistant.form.mt5Password': 'ๅฏ็ ',
- 'trading-assistant.form.mt5TerminalPath': 'MT5 ็ป็ซฏ่ทฏๅพ๏ผๅฏ้๏ผ',
- 'trading-assistant.form.mt5TerminalPathHint': 'ๅฆๆ MT5 ็ป็ซฏๆชๅฎ่ฃ
ๅจ้ป่ฎคไฝ็ฝฎ๏ผ่ฏทๆๅฎ terminal64.exe ็ๅฎๆด่ทฏๅพ๏ผไพๅฆ๏ผC:\\Program Files\\MetaTrader 5\\terminal64.exe๏ผ',
- 'trading-assistant.placeholders.mt5Server': 'ไพๅฆ๏ผICMarkets-Demo',
- 'trading-assistant.placeholders.mt5Login': 'ไพๅฆ๏ผ12345678',
- 'trading-assistant.placeholders.mt5Password': 'ๆจ็ MT5 ๅฏ็ ',
- 'trading-assistant.placeholders.mt5TerminalPath': 'ไพๅฆ๏ผC:\\Program Files\\MetaTrader 5\\terminal64.exe',
- 'trading-assistant.validation.mt5ServerRequired': '่ฏท่พๅ
ฅ MT5 ๆๅกๅจ',
- 'trading-assistant.validation.mt5LoginRequired': '่ฏท่พๅ
ฅ MT5 ่ดฆๆทๅท',
- 'trading-assistant.validation.mt5PasswordRequired': '่ฏท่พๅ
ฅ MT5 ๅฏ็ ',
- 'trading-assistant.validation.portfolioSizeRequired': '่ฏท่พๅ
ฅๆไป็ปๅๅคงๅฐ',
- 'trading-assistant.validation.longRatioRequired': '่ฏท่พๅ
ฅๅๅคๆฏไพ',
- 'trading-assistant.exchange.mt5ConnectionSuccess': 'MT5 ่ฟๆฅๆๅ',
- 'trading-assistant.exchange.mt5ConnectionFailed': 'MT5 ่ฟๆฅๅคฑ่ดฅ๏ผ่ฏทๆฃๆฅ็ป็ซฏๆฏๅฆ่ฟ่ก',
- 'trading-assistant.form.notifyChannels': '้็ฅๆธ ้',
- 'trading-assistant.form.notifyChannelsHint': '้ๆฉไฟกๅท่งฆๅๆถ็้็ฅๆนๅผ',
- 'trading-assistant.form.notifyEmail': '้ฎ็ฎฑๅฐๅ',
- 'trading-assistant.form.notifyPhone': 'ๆๆบๅท็ ',
- 'trading-assistant.form.notifyTelegram': 'Telegram ID',
- 'trading-assistant.form.notifyDiscord': 'Discord Webhook',
- 'trading-assistant.form.notifyWebhook': 'Webhook ๅฐๅ',
- 'trading-assistant.form.liveTradingConfigTitle': 'ๅฎ็ไบคๆ้
็ฝฎ',
- 'trading-assistant.form.liveTradingConfigHint': '่ฏทๅกซๅไบคๆๆAPIไฟกๆฏ๏ผๅฎ็ไบคๆๅฐไฝฟ็จๆจ็API่ฟ่ก็ๅฎไบคๆ',
- 'trading-assistant.form.savedCredential': 'ๅทฒไฟๅญ็ๅญ่ฏ',
- 'trading-assistant.form.savedCredentialHint': '้ๆฉๅทฒไฟๅญ็ไบคๆๆๅญ่ฏ๏ผ่ชๅจๅกซๅ
API้
็ฝฎ',
- 'trading-assistant.form.saveCredential': 'ไฟๅญๆญคๅญ่ฏไปฅไพฟไธๆฌกไฝฟ็จ',
- 'trading-assistant.form.credentialName': 'ๅญ่ฏๅ็งฐ',
- 'trading-assistant.validation.strategyTypeRequired': '่ฏท้ๆฉ็ญ็ฅ็ฑปๅ',
- 'trading-assistant.form.advancedSettings': '้ซ็บง่ฎพ็ฝฎ',
- 'trading-assistant.form.orderMode': 'ไธๅๆจกๅผ',
- 'trading-assistant.form.orderModeMaker': 'ๆๅ๏ผMaker๏ผ',
- 'trading-assistant.form.orderModeTaker': 'ๅธไปท๏ผTaker๏ผ',
- 'trading-assistant.form.orderModeHint': 'ๆๅๆจกๅผไฝฟ็จ้ไปทๅ๏ผๆ็ปญ่ดนๆดไฝ๏ผๅธไปทๆจกๅผ็ซๅณๆไบค๏ผๆ็ปญ่ดน่พ้ซ',
- 'trading-assistant.form.makerWaitSec': 'ๆๅ็ญๅพ
ๆถ้ด๏ผ็ง๏ผ',
- 'trading-assistant.form.makerWaitSecHint': 'ๆๅๅ็ญๅพ
ๆไบค็ๆถ้ด๏ผ่ถ
ๆถๅๅๆถๅนถ้่ฏ',
- 'trading-assistant.form.makerRetries': 'ๆๅ้่ฏๆฌกๆฐ',
- 'trading-assistant.form.makerRetriesHint': 'ๆๅๆชๆไบคๆถ็ๆๅคง้่ฏๆฌกๆฐ',
- 'trading-assistant.form.fallbackToMarket': 'ๆๅๅคฑ่ดฅ้็บงๅธไปท',
- 'trading-assistant.form.fallbackToMarketHint': 'ๅผ/ๅนณไปๆๅๆชๆไบคๆถ๏ผๆฏๅฆ้็บงไธบๅธไปทๅไปฅ็กฎไฟๆไบค',
- 'trading-assistant.form.marginMode': 'ไฟ่ฏ้ๆจกๅผ',
- 'trading-assistant.form.marginModeCross': 'ๅ
จไป',
- 'trading-assistant.form.marginModeIsolated': '้ไป',
- 'trading-assistant.form.stopLossPct': 'ๆญขๆๆฏไพ๏ผ%๏ผ',
- 'trading-assistant.form.stopLossPctHint': '่ฎพ็ฝฎๆญขๆ็พๅๆฏ๏ผ0่กจ็คบไธๅฏ็จๆญขๆ',
- 'trading-assistant.form.takeProfitPct': 'ๆญข็ๆฏไพ๏ผ%๏ผ',
- 'trading-assistant.form.takeProfitPctHint': '่ฎพ็ฝฎๆญข็็พๅๆฏ๏ผ0่กจ็คบไธๅฏ็จๆญข็',
- 'trading-assistant.form.signalMode': 'ไฟกๅทๆจกๅผ',
- 'trading-assistant.form.signalModeConfirmed': '็กฎ่ฎคๆจกๅผ',
- 'trading-assistant.form.signalModeAggressive': 'ๆฟ่ฟๆจกๅผ',
- 'trading-assistant.form.signalModeHint': '็กฎ่ฎคๆจกๅผ๏ผไป
ๆฃๆฅๅทฒๅฎๆ็K็บฟ๏ผๆฟ่ฟๆจกๅผ๏ผไนๆฃๆฅๆญฃๅจๅฝขๆ็K็บฟ',
- 'trading-assistant.form.cancel': 'ๅๆถ',
- 'trading-assistant.form.prev': 'ไธไธๆญฅ',
- 'trading-assistant.form.next': 'ไธไธๆญฅ',
- 'trading-assistant.form.confirmCreate': '็กฎ่ฎคๅๅปบ',
- 'trading-assistant.form.confirmEdit': '็กฎ่ฎคไฟฎๆน',
- 'trading-assistant.messages.createSuccess': '็ญ็ฅๅๅปบๆๅ',
- 'trading-assistant.messages.createFailed': 'ๅๅปบ็ญ็ฅๅคฑ่ดฅ',
- 'trading-assistant.messages.updateSuccess': '็ญ็ฅๆดๆฐๆๅ',
- 'trading-assistant.messages.updateFailed': 'ๆดๆฐ็ญ็ฅๅคฑ่ดฅ',
- 'trading-assistant.messages.deleteSuccess': '็ญ็ฅๅ ้คๆๅ',
- 'trading-assistant.messages.deleteFailed': 'ๅ ้ค็ญ็ฅๅคฑ่ดฅ',
- 'trading-assistant.messages.startSuccess': '็ญ็ฅๅฏๅจๆๅ',
- 'trading-assistant.messages.startFailed': 'ๅฏๅจ็ญ็ฅๅคฑ่ดฅ',
- 'trading-assistant.messages.stopSuccess': '็ญ็ฅๅๆญขๆๅ',
- 'trading-assistant.messages.stopFailed': 'ๅๆญข็ญ็ฅๅคฑ่ดฅ',
- 'trading-assistant.messages.loadFailed': '่ทๅ็ญ็ฅๅ่กจๅคฑ่ดฅ',
- 'trading-assistant.messages.runningWarning': '็ญ็ฅ่ฟ่กไธญ๏ผ่ฏทๅ
ๅๆญข็ญ็ฅๅๅไฟฎๆน',
- 'trading-assistant.messages.deleteConfirmWithName': '็กฎๅฎ่ฆๅ ้ค็ญ็ฅโ{name}โๅ๏ผๆญคๆไฝไธๅฏๆขๅคใ',
- 'trading-assistant.messages.deleteConfirm': '็กฎๅฎ่ฆๅ ้ค่ฏฅ็ญ็ฅๅ๏ผๆญคๆไฝไธๅฏๆขๅคใ',
- 'trading-assistant.messages.loadTradesFailed': '่ทๅไบคๆ่ฎฐๅฝๅคฑ่ดฅ',
- 'trading-assistant.messages.loadPositionsFailed': '่ทๅๆไป่ฎฐๅฝๅคฑ่ดฅ',
- 'trading-assistant.messages.loadEquityFailed': '่ทๅๅๅผๆฒ็บฟๅคฑ่ดฅ',
- 'trading-assistant.messages.loadIndicatorsFailed': 'ๅ ่ฝฝๆๆ ๅ่กจๅคฑ่ดฅ๏ผ่ฏท็จๅ้่ฏ',
- 'trading-assistant.messages.spotLimitations': '็ฐ่ดงไบคๆๅทฒ่ชๅจ่ฎพ็ฝฎไธบไป
ๅๅคใ1ๅๆ ๆ',
- 'trading-assistant.messages.autoFillApiConfig': 'ๅทฒ่ชๅจๅกซๅ
่ฏฅไบคๆๆ็ๅๅฒAPI้
็ฝฎ',
- 'trading-assistant.messages.batchCreateSuccess': 'ๆๅๅๅปบ {count} ไธช็ญ็ฅ',
- 'trading-assistant.messages.batchStartSuccess': 'ๆๅๅฏๅจ {count} ไธช็ญ็ฅ',
- 'trading-assistant.messages.batchStartFailed': 'ๆน้ๅฏๅจ็ญ็ฅๅคฑ่ดฅ',
- 'trading-assistant.messages.batchStopSuccess': 'ๆๅๅๆญข {count} ไธช็ญ็ฅ',
- 'trading-assistant.messages.batchStopFailed': 'ๆน้ๅๆญข็ญ็ฅๅคฑ่ดฅ',
- 'trading-assistant.messages.batchDeleteSuccess': 'ๆๅๅ ้ค {count} ไธช็ญ็ฅ',
- 'trading-assistant.messages.batchDeleteFailed': 'ๆน้ๅ ้ค็ญ็ฅๅคฑ่ดฅ',
- 'trading-assistant.messages.batchDeleteConfirm': '็กฎๅฎ่ฆๅ ้ค็ญ็ฅ็ป"{name}"ไธ็ {count} ไธช็ญ็ฅๅ๏ผๆญคๆไฝไธๅฏๆขๅคใ',
- 'trading-assistant.notify.browser': 'ๆต่งๅจ้็ฅ',
- 'trading-assistant.notify.email': '้ฎ็ฎฑ',
- 'trading-assistant.notify.phone': '็ญไฟก',
- 'trading-assistant.notify.telegram': 'Telegram',
- 'trading-assistant.notify.discord': 'Discord',
- 'trading-assistant.notify.webhook': 'Webhook',
- 'trading-assistant.placeholders.selectIndicator': '่ฏท้ๆฉๆๆ ',
- 'trading-assistant.placeholders.selectExchange': '่ฏท้ๆฉไบคๆๆ',
- 'trading-assistant.placeholders.inputApiKey': '่ฏท่พๅ
ฅAPI Key',
- 'trading-assistant.placeholders.inputSecretKey': '่ฏท่พๅ
ฅSecret Key',
- 'trading-assistant.placeholders.inputPassphrase': '่ฏท่พๅ
ฅPassphrase',
- 'trading-assistant.placeholders.inputStrategyName': '่ฏท่พๅ
ฅ็ญ็ฅๅ็งฐ',
- 'trading-assistant.placeholders.selectSymbol': '่ฏท้ๆฉไบคๆๅฏน',
- 'trading-assistant.placeholders.selectSymbols': '่ฏท้ๆฉไบคๆๅฏน๏ผๆฏๆๅค้๏ผ',
- 'trading-assistant.placeholders.selectTimeframe': '่ฏท้ๆฉๆถ้ดๅจๆ',
- 'trading-assistant.placeholders.selectKlinePeriod': '่ฏท้ๆฉK็บฟๅจๆ',
- 'trading-assistant.placeholders.inputAiFilterPrompt': '่ฏท่พๅ
ฅ่ชๅฎไนๆ็คบ่ฏ๏ผๅฏ้๏ผ',
- 'trading-assistant.placeholders.selectSavedCredential': '่ฏท้ๆฉๅทฒไฟๅญ็ๅญ่ฏ',
- 'trading-assistant.placeholders.inputEmail': '่ฏท่พๅ
ฅ้ฎ็ฎฑๅฐๅ',
- 'trading-assistant.placeholders.inputPhone': '่ฏท่พๅ
ฅๆๆบๅท็ ',
- 'trading-assistant.placeholders.inputTelegram': '่ฏท่พๅ
ฅTelegram IDๆChat ID',
- 'trading-assistant.placeholders.inputDiscord': '่ฏท่พๅ
ฅDiscord Webhookๅฐๅ',
- 'trading-assistant.placeholders.inputWebhook': '่ฏท่พๅ
ฅWebhookๅฐๅ',
- 'trading-assistant.placeholders.inputCredentialName': '่ฏท่พๅ
ฅๅญ่ฏๅ็งฐ๏ผๅฆ๏ผๆ็OKX่ดฆๆท๏ผ',
- 'trading-assistant.validation.indicatorRequired': '่ฏท้ๆฉๆๆ ',
- 'trading-assistant.validation.exchangeRequired': '่ฏท้ๆฉไบคๆๆ',
- 'trading-assistant.validation.apiKeyRequired': '่ฏท่พๅ
ฅAPI Key',
- 'trading-assistant.validation.secretKeyRequired': '่ฏท่พๅ
ฅSecret Key',
- 'trading-assistant.validation.passphraseRequired': '่ฏท่พๅ
ฅPassphrase',
- 'trading-assistant.validation.exchangeConfigIncomplete': '่ฏทๅกซๅๅฎๆด็ไบคๆๆ้
็ฝฎไฟกๆฏ',
- 'trading-assistant.validation.testConnectionRequired': '่ฏทๅ
็นๅป"ๆต่ฏ่ฟๆฅ"ๆ้ฎๅนถ็กฎไฟ่ฟๆฅๆๅ',
- 'trading-assistant.validation.testConnectionFailed': '่ฟๆฅๆต่ฏๅคฑ่ดฅ๏ผ่ฏทๆฃๆฅ้
็ฝฎๅ้ๆฐๆต่ฏ',
- 'trading-assistant.validation.strategyNameRequired': '่ฏท่พๅ
ฅ็ญ็ฅๅ็งฐ',
- 'trading-assistant.validation.symbolRequired': '่ฏท้ๆฉไบคๆๅฏน',
- 'trading-assistant.validation.symbolsRequired': '่ฏท่ณๅฐ้ๆฉไธไธชไบคๆๅฏน',
- 'trading-assistant.validation.emailInvalid': '่ฏท่พๅ
ฅๆๆ็้ฎ็ฎฑๅฐๅ',
- 'trading-assistant.validation.notifyChannelRequired': '่ฏท่ณๅฐ้ๆฉไธไธช้็ฅๆธ ้',
- 'trading-assistant.validation.initialCapitalRequired': '่ฏท่พๅ
ฅๆๅ
ฅ้้ข',
- 'trading-assistant.validation.leverageRequired': '่ฏท่พๅ
ฅๆ ๆๅๆฐ',
- 'trading-assistant.table.time': 'ๆถ้ด',
- 'trading-assistant.table.type': '็ฑปๅ',
- 'trading-assistant.table.price': 'ไปทๆ ผ',
- 'trading-assistant.table.amount': 'ๆฐ้',
- 'trading-assistant.table.value': '้้ข',
- 'trading-assistant.table.commission': 'ๆ็ปญ่ดน',
- 'trading-assistant.table.symbol': 'ไบคๆๅฏน',
- 'trading-assistant.table.side': 'ๆนๅ',
- 'trading-assistant.table.size': 'ๆไปๆฐ้',
- 'trading-assistant.table.entryPrice': 'ๅผไปไปทๆ ผ',
- 'trading-assistant.table.currentPrice': 'ๅฝๅไปทๆ ผ',
- 'trading-assistant.table.unrealizedPnl': 'ๆชๅฎ็ฐ็ไบ',
- 'trading-assistant.table.pnlPercent': '็ไบๆฏไพ',
- 'trading-assistant.table.buy': 'ไนฐๅ
ฅ',
- 'trading-assistant.table.sell': 'ๅๅบ',
- 'trading-assistant.table.long': 'ๅๅค',
- 'trading-assistant.table.short': 'ๅ็ฉบ',
- 'trading-assistant.table.noPositions': 'ๆๆ ๆไป',
- 'trading-assistant.detail.title': '็ญ็ฅ่ฏฆๆ
',
- 'trading-assistant.detail.strategyName': '็ญ็ฅๅ็งฐ',
- 'trading-assistant.detail.strategyType': '็ญ็ฅ็ฑปๅ',
- 'trading-assistant.detail.status': '็ถๆ',
- 'trading-assistant.detail.tradingMode': 'ไบคๆๆจกๅผ',
- 'trading-assistant.detail.exchange': 'ไบคๆๆ',
- 'trading-assistant.detail.initialCapital': 'ๅๅง่ต้',
- 'trading-assistant.detail.totalInvestment': 'ๆปๆๅ
ฅ้้ข',
- 'trading-assistant.detail.currentEquity': 'ๅฝๅๅๅผ',
- 'trading-assistant.detail.totalPnl': 'ๆป็ไบ',
- 'trading-assistant.detail.indicatorName': 'ๆๆ ๅ็งฐ',
- 'trading-assistant.detail.maxLeverage': 'ๆๅคงๆ ๆ',
- 'trading-assistant.detail.decideInterval': 'ๅณ็ญ้ด้',
- 'trading-assistant.detail.symbols': 'ไบคๆๆ ็',
- 'trading-assistant.detail.createdAt': 'ๅๅปบๆถ้ด',
- 'trading-assistant.detail.updatedAt': 'ๆดๆฐๆถ้ด',
- 'trading-assistant.detail.llmConfig': 'AIๆจกๅ้
็ฝฎ',
- 'trading-assistant.detail.exchangeConfig': 'ไบคๆๆ้
็ฝฎ',
- 'trading-assistant.detail.provider': 'ๆไพๅ',
- 'trading-assistant.detail.modelId': 'ๆจกๅID',
- 'trading-assistant.detail.close': 'ๅ
ณ้ญ',
- 'trading-assistant.detail.loadFailed': '่ทๅ็ญ็ฅ่ฏฆๆ
ๅคฑ่ดฅ',
- 'trading-assistant.equity.noData': 'ๆๆ ๅๅผๆฐๆฎ',
- 'trading-assistant.equity.equity': 'ๅๅผ',
- 'trading-assistant.exchange.tradingMode': 'ไบคๆๆจกๅผ',
- 'trading-assistant.exchange.virtual': 'ๆจกๆไบคๆ',
- 'trading-assistant.exchange.live': 'ๅฎ็ไบคๆ',
- 'trading-assistant.exchange.selectExchange': '้ๆฉไบคๆๆ',
- 'trading-assistant.exchange.walletAddress': '้ฑๅ
ๅฐๅ',
- 'trading-assistant.exchange.walletAddressPlaceholder': '่ฏท่พๅ
ฅ้ฑๅ
ๅฐๅ๏ผไปฅ0xๅผๅคด๏ผ',
- 'trading-assistant.exchange.privateKey': '็ง้ฅ',
- 'trading-assistant.exchange.privateKeyPlaceholder': '่ฏท่พๅ
ฅ็ง้ฅ๏ผ64ๅญ็ฌฆ๏ผ',
- 'trading-assistant.exchange.testConnection': 'ๆต่ฏ่ฟๆฅ',
- 'trading-assistant.exchange.connectionSuccess': '่ฟๆฅๆๅ',
- 'trading-assistant.exchange.connectionFailed': '่ฟๆฅๅคฑ่ดฅ',
- 'trading-assistant.exchange.testFailed': '่ฟๆฅๆต่ฏๅคฑ่ดฅ',
- 'trading-assistant.exchange.fillComplete': '่ฏทๅกซๅๅฎๆด็ไบคๆๆ้
็ฝฎไฟกๆฏ',
- 'trading-assistant.exchange.ipWhitelistTip': '่ฏทๅจไบคๆๆAPI่ฎพ็ฝฎไธญๅฐไปฅไธIPๆทปๅ ๅฐ็ฝๅๅ๏ผ',
- 'trading-assistant.strategyTypeOptions.ai': 'AI้ฉฑๅจ็ญ็ฅ',
- 'trading-assistant.strategyTypeOptions.indicator': 'ๆๆฏๆๆ ็ญ็ฅ',
- 'trading-assistant.strategyTypeOptions.aiDeveloping': 'AI้ฉฑๅจ็ญ็ฅๅ่ฝๅผๅไธญ๏ผๆฌ่ฏทๆๅพ
',
- 'trading-assistant.strategyTypeOptions.aiDevelopingWarning': 'AI้ฉฑๅจ็ญ็ฅๅ่ฝๆญฃๅจๅผๅไธญ',
- 'trading-assistant.indicatorType.trend': '่ถๅฟ',
- 'trading-assistant.indicatorType.momentum': 'ๅจ้',
- 'trading-assistant.indicatorType.volatility': 'ๆณขๅจ',
- 'trading-assistant.indicatorType.volume': 'ๆไบค้',
- 'trading-assistant.indicatorType.custom': '่ชๅฎไน',
- 'trading-assistant.exchangeNames': {
- 'okx': 'OKX',
- 'binance': 'ๅธๅฎ',
- 'hyperliquid': 'Hyperliquid',
- 'blockchaincom': 'Blockchain.com',
- 'coinbaseexchange': 'Coinbase',
- 'gate': 'Gate.io',
- 'mexc': 'MEXC',
- 'kraken': 'Kraken',
- 'bitfinex': 'Bitfinex',
- 'bybit': 'Bybit',
- 'kucoin': 'KuCoin',
- 'huobi': '็ซๅธ',
- 'bitget': 'Bitget',
- 'bitmex': 'BitMEX',
- 'deribit': 'Deribit',
- 'phemex': 'Phemex',
- 'bitmart': 'BitMart',
- 'bitstamp': 'Bitstamp',
- 'bittrex': 'Bittrex',
- 'poloniex': 'Poloniex',
- 'gemini': 'Gemini',
- 'cryptocom': 'Crypto.com',
- 'bitflyer': 'bitFlyer',
- 'upbit': 'Upbit',
- 'bithumb': 'Bithumb',
- 'coinone': 'Coinone',
- 'zb': 'ZB',
- 'lbank': 'LBank',
- 'bibox': 'Bibox',
- 'bigone': 'BigONE',
- 'bitrue': 'Bitrue',
- 'coinex': 'CoinEx',
- 'digifinex': 'DigiFinex',
- 'ftx': 'FTX',
- 'ftxus': 'FTX US',
- 'binanceus': 'Binance US',
- 'binancecoinm': 'Binance COIN-M',
- 'binanceusdm': 'Binance USDโ-M',
- 'ibkr': '็้่ฏๅธ (IBKR)',
- 'deepcoin': 'Deepcoin'
- },
- 'ai-trading-assistant.title': 'AIไบคๆๅฉๆ',
- 'ai-trading-assistant.strategyList': '็ญ็ฅๅ่กจ',
- 'ai-trading-assistant.createStrategy': 'ๅๅปบ็ญ็ฅ',
- 'ai-trading-assistant.noStrategy': 'ๆๆ ็ญ็ฅ',
- 'ai-trading-assistant.selectStrategy': '่ฏทไปๅทฆไพง้ๆฉไธไธช็ญ็ฅๆฅ็่ฏฆๆ
',
- 'ai-trading-assistant.startStrategy': 'ๅฏๅจ็ญ็ฅ',
- 'ai-trading-assistant.stopStrategy': 'ๅๆญข็ญ็ฅ',
- 'ai-trading-assistant.editStrategy': '็ผ่พ็ญ็ฅ',
- 'ai-trading-assistant.deleteStrategy': 'ๅ ้ค็ญ็ฅ',
- 'ai-trading-assistant.status.running': '่ฟ่กไธญ',
- 'ai-trading-assistant.status.stopped': 'ๅทฒๅๆญข',
- 'ai-trading-assistant.status.error': '้่ฏฏ',
- 'ai-trading-assistant.tabs.tradingRecords': 'ไบคๆ่ฎฐๅฝ',
- 'ai-trading-assistant.tabs.positions': 'ๆไป่ฎฐๅฝ',
- 'ai-trading-assistant.tabs.aiDecisions': 'AIๅณ็ญ่ฎฐๅฝ',
- 'ai-trading-assistant.tabs.equityCurve': 'ๅๅผๆฒ็บฟ',
- 'ai-trading-assistant.form.createTitle': 'ๅๅปบAIไบคๆ็ญ็ฅ',
- 'ai-trading-assistant.form.editTitle': '็ผ่พAIไบคๆ็ญ็ฅ',
- 'ai-trading-assistant.form.strategyName': '็ญ็ฅๅ็งฐ',
- 'ai-trading-assistant.form.modelId': 'AIๆจกๅ',
- 'ai-trading-assistant.form.modelIdHint': 'ไฝฟ็จ็ณป็ปOpenRouterๆๅก๏ผๆ ้้
็ฝฎAPI Key',
- 'ai-trading-assistant.form.decideInterval': 'ๅณ็ญ้ด้',
- 'ai-trading-assistant.form.decideInterval5m': '5ๅ้',
- 'ai-trading-assistant.form.decideInterval10m': '10ๅ้',
- 'ai-trading-assistant.form.decideInterval30m': '30ๅ้',
- 'ai-trading-assistant.form.decideInterval1h': '1ๅฐๆถ',
- 'ai-trading-assistant.form.decideInterval4h': '4ๅฐๆถ',
- 'ai-trading-assistant.form.decideInterval1d': '1ๅคฉ',
- 'ai-trading-assistant.form.decideInterval1w': '1ๅจ',
- 'ai-trading-assistant.form.decideIntervalHint': 'AIๅๅณ็ญ็ๆถ้ด้ด้',
- 'ai-trading-assistant.form.runPeriod': '่ฟ่กๅจๆ',
- 'ai-trading-assistant.form.runPeriodHint': '็ญ็ฅ่ฟ่ก็ๅผๅงๆถ้ดๅ็ปๆๆถ้ด',
- 'ai-trading-assistant.form.startDate': 'ๅผๅงๆฅๆ',
- 'ai-trading-assistant.form.endDate': '็ปๆๆฅๆ',
- 'ai-trading-assistant.form.qdtCostTitle': 'QDTๆฃ่ดน่ฏดๆ',
- 'ai-trading-assistant.form.qdtCostHint': 'ๆฏๆฌกAIๅณ็ญๅฐๆฃ่ดน {cost} ไธชQDT๏ผ่ฏท็กฎไฟ่ดฆๆทๆ่ถณๅค็QDTไฝ้ขใ็ญ็ฅ่ฟ่กๆ้ด๏ผๆฏๆฌกๅณ็ญ้ฝไผๅฎๆถๆฃ่ดนใ',
- 'ai-trading-assistant.form.apiKey': 'API Key',
- 'ai-trading-assistant.form.exchange': '้ๆฉไบคๆๆ',
- 'ai-trading-assistant.form.secretKey': 'Secret Key',
- 'ai-trading-assistant.form.passphrase': 'Passphrase',
- 'ai-trading-assistant.form.testConnection': 'ๆต่ฏ่ฟๆฅ',
- 'ai-trading-assistant.form.symbol': 'ไบคๆๅฏน',
- 'ai-trading-assistant.form.symbolHint': '้ๆฉ่ฆไบคๆ็ไบคๆๅฏน',
- 'ai-trading-assistant.form.initialCapital': 'ๆๅ
ฅ้้ข๏ผไฟ่ฏ้๏ผ',
- 'ai-trading-assistant.form.leverage': 'ๆ ๆๅๆฐ',
- 'ai-trading-assistant.form.timeframe': 'ๆถ้ดๅจๆ',
- 'ai-trading-assistant.form.timeframe1m': '1ๅ้',
- 'ai-trading-assistant.form.timeframe5m': '5ๅ้',
- 'ai-trading-assistant.form.timeframe15m': '15ๅ้',
- 'ai-trading-assistant.form.timeframe30m': '30ๅ้',
- 'ai-trading-assistant.form.timeframe1H': '1ๅฐๆถ',
- 'ai-trading-assistant.form.timeframe4H': '4ๅฐๆถ',
- 'ai-trading-assistant.form.timeframe1D': '1ๅคฉ',
- 'ai-trading-assistant.form.marketType': 'ๅธๅบ็ฑปๅ',
- 'ai-trading-assistant.form.marketTypeFutures': 'ๅ็บฆ',
- 'ai-trading-assistant.form.marketTypeSpot': '็ฐ่ดง',
- 'ai-trading-assistant.form.totalPnl': 'ๆป็ไบ',
- 'ai-trading-assistant.form.customPrompt': '่ชๅฎไนๆ็คบ่ฏ',
- 'ai-trading-assistant.form.customPromptHint': 'ๅฏ้๏ผ็จไบ่ชๅฎไนAI็ไบคๆ็ญ็ฅๅๅณ็ญ้ป่พ',
- 'ai-trading-assistant.form.cancel': 'ๅๆถ',
- 'ai-trading-assistant.form.prev': 'ไธไธๆญฅ',
- 'ai-trading-assistant.form.next': 'ไธไธๆญฅ',
- 'ai-trading-assistant.form.confirmCreate': '็กฎ่ฎคๅๅปบ',
- 'ai-trading-assistant.form.confirmEdit': '็กฎ่ฎคไฟฎๆน',
- 'ai-trading-assistant.messages.createSuccess': '็ญ็ฅๅๅปบๆๅ',
- 'ai-trading-assistant.messages.createFailed': 'ๅๅปบ็ญ็ฅๅคฑ่ดฅ',
- 'ai-trading-assistant.messages.updateSuccess': '็ญ็ฅๆดๆฐๆๅ',
- 'ai-trading-assistant.messages.updateFailed': 'ๆดๆฐ็ญ็ฅๅคฑ่ดฅ',
- 'ai-trading-assistant.messages.deleteSuccess': '็ญ็ฅๅ ้คๆๅ',
- 'ai-trading-assistant.messages.deleteFailed': 'ๅ ้ค็ญ็ฅๅคฑ่ดฅ',
- 'ai-trading-assistant.messages.startSuccess': '็ญ็ฅๅฏๅจๆๅ',
- 'ai-trading-assistant.messages.startFailed': 'ๅฏๅจ็ญ็ฅๅคฑ่ดฅ',
- 'ai-trading-assistant.messages.stopSuccess': '็ญ็ฅๅๆญขๆๅ',
- 'ai-trading-assistant.messages.stopFailed': 'ๅๆญข็ญ็ฅๅคฑ่ดฅ',
- 'ai-trading-assistant.messages.loadFailed': '่ทๅ็ญ็ฅๅ่กจๅคฑ่ดฅ',
- 'ai-trading-assistant.messages.loadDecisionsFailed': '่ทๅAIๅณ็ญ่ฎฐๅฝๅคฑ่ดฅ',
- 'ai-trading-assistant.messages.deleteConfirm': '็กฎๅฎ่ฆๅ ้ค่ฏฅ็ญ็ฅๅ๏ผๆญคๆไฝไธๅฏๆขๅคใ',
- 'ai-trading-assistant.placeholders.inputStrategyName': '่ฏท่พๅ
ฅ็ญ็ฅๅ็งฐ',
- 'ai-trading-assistant.placeholders.selectModelId': '่ฏท้ๆฉAIๆจกๅ',
- 'ai-trading-assistant.placeholders.selectDecideInterval': '่ฏท้ๆฉๅณ็ญ้ด้',
- 'ai-trading-assistant.placeholders.startTime': 'ๅผๅงๆถ้ด',
- 'ai-trading-assistant.placeholders.endTime': '็ปๆๆถ้ด',
- 'ai-trading-assistant.placeholders.inputApiKey': '่ฏท่พๅ
ฅAPI Key',
- 'ai-trading-assistant.placeholders.selectExchange': '่ฏท้ๆฉไบคๆๆ',
- 'ai-trading-assistant.placeholders.inputSecretKey': '่ฏท่พๅ
ฅSecret Key',
- 'ai-trading-assistant.placeholders.inputPassphrase': '่ฏท่พๅ
ฅPassphrase',
- 'ai-trading-assistant.placeholders.selectSymbol': '่ฏท้ๆฉไบคๆๅฏน๏ผๅฆ๏ผBTC/USDT',
- 'ai-trading-assistant.placeholders.selectTimeframe': '่ฏท้ๆฉๆถ้ดๅจๆ',
- 'ai-trading-assistant.placeholders.inputCustomPrompt': '่ฏท่พๅ
ฅ่ชๅฎไนๆ็คบ่ฏ๏ผๅฏ้๏ผ',
- 'ai-trading-assistant.validation.strategyNameRequired': '่ฏท่พๅ
ฅ็ญ็ฅๅ็งฐ',
- 'ai-trading-assistant.validation.modelIdRequired': '่ฏท้ๆฉAIๆจกๅ',
- 'ai-trading-assistant.validation.runPeriodRequired': '่ฏท้ๆฉ่ฟ่กๅจๆ',
- 'ai-trading-assistant.validation.apiKeyRequired': '่ฏท่พๅ
ฅAPI Key',
- 'ai-trading-assistant.validation.exchangeRequired': '่ฏท้ๆฉไบคๆๆ',
- 'ai-trading-assistant.validation.secretKeyRequired': '่ฏท่พๅ
ฅSecret Key',
- 'ai-trading-assistant.validation.symbolRequired': '่ฏท้ๆฉไบคๆๅฏน',
- 'ai-trading-assistant.validation.initialCapitalRequired': '่ฏท่พๅ
ฅๆๅ
ฅ้้ข',
- 'ai-trading-assistant.table.time': 'ๆถ้ด',
- 'ai-trading-assistant.table.type': '็ฑปๅ',
- 'ai-trading-assistant.table.price': 'ไปทๆ ผ',
- 'ai-trading-assistant.table.amount': 'ๆฐ้',
- 'ai-trading-assistant.table.value': '้้ข',
- 'ai-trading-assistant.table.symbol': 'ไบคๆๅฏน',
- 'ai-trading-assistant.table.side': 'ๆนๅ',
- 'ai-trading-assistant.table.size': 'ๆไปๆฐ้',
- 'ai-trading-assistant.table.entryPrice': 'ๅผไปไปทๆ ผ',
- 'ai-trading-assistant.table.currentPrice': 'ๅฝๅไปทๆ ผ',
- 'ai-trading-assistant.table.unrealizedPnl': 'ๆชๅฎ็ฐ็ไบ',
- 'ai-trading-assistant.table.profit': '็ไบ',
- 'ai-trading-assistant.table.openLong': 'ๅผๅค',
- 'ai-trading-assistant.table.closeLong': 'ๅนณๅค',
- 'ai-trading-assistant.table.openShort': 'ๅผ็ฉบ',
- 'ai-trading-assistant.table.closeShort': 'ๅนณ็ฉบ',
- 'ai-trading-assistant.table.addLong': 'ๅ ๅค',
- 'ai-trading-assistant.table.addShort': 'ๅ ็ฉบ',
- 'ai-trading-assistant.table.closeShortProfit': 'ๅนณ็ฉบๆญข็',
- 'ai-trading-assistant.table.closeShortStop': 'ๅนณ็ฉบๆญขๆ',
- 'ai-trading-assistant.table.closeLongProfit': 'ๅนณๅคๆญข็',
- 'ai-trading-assistant.table.closeLongStop': 'ๅนณๅคๆญขๆ',
- 'ai-trading-assistant.table.buy': 'ไนฐๅ
ฅ',
- 'ai-trading-assistant.table.sell': 'ๅๅบ',
- 'ai-trading-assistant.table.long': 'ๅๅค',
- 'ai-trading-assistant.table.short': 'ๅ็ฉบ',
- 'ai-trading-assistant.table.hold': 'ๆๆ',
- 'ai-trading-assistant.table.reasoning': 'ๅๆ็็ฑ',
- 'ai-trading-assistant.table.decisions': 'ๅณ็ญ',
- 'ai-trading-assistant.table.riskAssessment': '้ฃ้ฉ่ฏไผฐ',
- 'ai-trading-assistant.table.confidence': '็ฝฎไฟกๅบฆ',
- 'ai-trading-assistant.table.totalRecords': 'ๅ
ฑ {total} ๆก่ฎฐๅฝ',
- 'ai-trading-assistant.table.noPositions': 'ๆๆ ๆไป',
- 'ai-trading-assistant.detail.title': '็ญ็ฅ่ฏฆๆ
',
- 'ai-trading-assistant.equity.noData': 'ๆๆ ๅๅผๆฐๆฎ',
- 'ai-trading-assistant.equity.equity': 'ๅๅผ',
- 'ai-trading-assistant.exchange.testFailed': '่ฟๆฅๆต่ฏๅคฑ่ดฅ',
- 'ai-trading-assistant.exchange.connectionSuccess': '่ฟๆฅๆๅ',
- 'ai-trading-assistant.exchange.connectionFailed': '่ฟๆฅๅคฑ่ดฅ',
- 'ai-trading-assistant.form.advancedSettings': '้ซ็บง่ฎพ็ฝฎ',
- 'ai-trading-assistant.form.orderMode': 'ไธๅๆจกๅผ',
- 'ai-trading-assistant.form.orderModeMaker': 'ๆๅ๏ผMaker๏ผ',
- 'ai-trading-assistant.form.orderModeTaker': 'ๅธไปท๏ผTaker๏ผ',
- 'ai-trading-assistant.form.orderModeHint': 'ๆๅๆจกๅผไฝฟ็จ้ไปทๅ๏ผๆ็ปญ่ดนๆดไฝ๏ผๅธไปทๆจกๅผ็ซๅณๆไบค๏ผๆ็ปญ่ดน่พ้ซ',
- 'ai-trading-assistant.form.makerWaitSec': 'ๆๅ็ญๅพ
ๆถ้ด๏ผ็ง๏ผ',
- 'ai-trading-assistant.form.makerWaitSecHint': 'ๆๅๅ็ญๅพ
ๆไบค็ๆถ้ด๏ผ่ถ
ๆถๅๅๆถๅนถ้่ฏ',
- 'ai-trading-assistant.form.makerRetries': 'ๆๅ้่ฏๆฌกๆฐ',
- 'ai-trading-assistant.form.makerRetriesHint': 'ๆๅๆชๆไบคๆถ็ๆๅคง้่ฏๆฌกๆฐ',
- 'ai-trading-assistant.form.fallbackToMarket': 'ๆๅๅคฑ่ดฅ้็บงๅธไปท',
- 'ai-trading-assistant.form.fallbackToMarketHint': 'ๅผ/ๅนณไปๆๅๆชๆไบคๆถ๏ผๆฏๅฆ้็บงไธบๅธไปทๅไปฅ็กฎไฟๆไบค',
- 'ai-trading-assistant.form.marginMode': 'ไฟ่ฏ้ๆจกๅผ',
- 'ai-trading-assistant.form.marginModeCross': 'ๅ
จไป',
- 'ai-trading-assistant.form.marginModeIsolated': '้ไป',
- 'ai-analysis.title': '้ๅญไบคๆๅผๆ',
- 'ai-analysis.system.online': 'ๅจ็บฟ',
- 'ai-analysis.system.agents': 'ๆบ่ฝไฝ',
- 'ai-analysis.system.active': 'ๆดป่ท',
- 'ai-analysis.system.stage': '้ถๆฎต',
- 'ai-analysis.panel.roster': 'ๆบ่ฝไฝ้ตๅฎน',
- 'ai-analysis.panel.thinking': 'ๆ่ไธญ...',
- 'ai-analysis.panel.done': 'ๅฎๆ',
- 'ai-analysis.panel.standby': 'ๅพ
ๆบ',
- 'ai-analysis.input.title': '้ๅญไบคๆๅผๆ',
- 'ai-analysis.input.placeholder': '้ๆฉ็ฎๆ ่ตไบง (ๅฆ BTC/USDT)',
- 'ai-analysis.input.watchlist': '่ช้่ก',
- 'ai-analysis.input.start': 'ๅผๅงๅๆ',
- 'ai-analysis.input.recent': 'ๆ่ฟไปปๅก:',
- 'ai-analysis.vis.stage': '้ถๆฎต',
- 'ai-analysis.vis.processing': 'ๅค็ไธญ',
- 'ai-analysis.result.complete': 'ๅๆๅฎๆ',
- 'ai-analysis.result.signal': 'ๆ็ปไฟกๅท',
- 'ai-analysis.result.confidence': '็ฝฎไฟกๅบฆ:',
- 'ai-analysis.result.new': 'ๆฐๅๆ',
- 'ai-analysis.result.full': 'ๆฅ็ๅฎๆดๆฅๅ',
- 'ai-analysis.logs.title': '็ณป็ปๆฅๅฟ',
- 'ai-analysis.modal.title': 'ๆบๅฏๆฅๅ',
- 'ai-analysis.modal.fundamental': 'ๅบๆฌ้ขๅๆ',
- 'ai-analysis.modal.technical': 'ๆๆฏ้ขๅๆ',
- 'ai-analysis.modal.sentiment': 'ๆ
็ปช้ขๅๆ',
- 'ai-analysis.modal.risk': '้ฃ้ฉ่ฏไผฐ',
- 'ai-analysis.stage.idle': 'ๅพ
ๆบ',
- 'ai-analysis.stage.1': '็ฌฌไธ้ถๆฎต๏ผๅค็ปดๅๆ',
- 'ai-analysis.stage.2': '็ฌฌไบ้ถๆฎต๏ผๅค็ฉบ่พฉ่ฎบ',
- 'ai-analysis.stage.3': '็ฌฌไธ้ถๆฎต๏ผๆ็ฅ่งๅ',
- 'ai-analysis.stage.4': '็ฌฌๅ้ถๆฎต๏ผ้ฃๆงๅฎกๆฅ',
- 'ai-analysis.stage.complete': 'ๅฎๆ',
- 'ai-analysis.agent.investment_director': 'ๆ่ตๆป็',
- 'ai-analysis.agent.role.investment_director': '็ปผๅๅๆ & ๆ็ป็ป่ฎบ',
- 'ai-analysis.agent.market': 'ๅธๅบๅๆๅธ',
- 'ai-analysis.agent.role.market': 'ๆๆฏ & ๅธๅบๆฐๆฎ',
- 'ai-analysis.agent.fundamental': 'ๅบๆฌ้ขๅๆๅธ',
- 'ai-analysis.agent.role.fundamental': '่ดขๅก & ไผฐๅผ',
- 'ai-analysis.agent.technical': 'ๆๆฏๅๆๅธ',
- 'ai-analysis.agent.role.technical': 'ๆๆฏๆๆ & ๅพ่กจ',
- 'ai-analysis.agent.news': 'ๆฐ้ปๅๆๅธ',
- 'ai-analysis.agent.role.news': 'ๅ
จ็ๆฐ้ป่ฟๆปค',
- 'ai-analysis.agent.sentiment': 'ๆ
็ปชๅๆๅธ',
- 'ai-analysis.agent.role.sentiment': '็คพไบค & ๆ
็ปช',
- 'ai-analysis.agent.risk': '้ฃ้ฉๅๆๅธ',
- 'ai-analysis.agent.role.risk': 'ๅบ็ก้ฃ้ฉๆฃๆฅ',
- 'ai-analysis.agent.bull': '็ๆถจ็ ็ฉถๅ',
- 'ai-analysis.agent.role.bull': 'ๅข้ฟๅฌๅๅๆๆ',
- 'ai-analysis.agent.bear': '็่ท็ ็ฉถๅ',
- 'ai-analysis.agent.role.bear': '้ฃ้ฉ & ็ผบ้ทๆๆ',
- 'ai-analysis.agent.manager': '็ ็ฉถ็ป็',
- 'ai-analysis.agent.role.manager': '่พฉ่ฎบไธปๆไบบ',
- 'ai-analysis.agent.trader': 'ไบคๆๅ',
- 'ai-analysis.agent.role.trader': 'ๆง่ก็ญ็ฅๅธ',
- 'ai-analysis.agent.risky': 'ๆฟ่ฟๅๆๅธ',
- 'ai-analysis.agent.role.risky': 'ๆฟ่ฟ็ญ็ฅ',
- 'ai-analysis.agent.neutral': 'ๅนณ่กกๅๆๅธ',
- 'ai-analysis.agent.role.neutral': 'ๅนณ่กก็ญ็ฅ',
- 'ai-analysis.agent.safe': 'ไฟๅฎๅๆๅธ',
- 'ai-analysis.agent.role.safe': 'ไฟๅฎ็ญ็ฅ',
- 'ai-analysis.agent.cro': '้ฃๆง็ป็ (CRO)',
- 'ai-analysis.agent.role.cro': 'ๆ็ปๅณ็ญๆๅจ',
- 'ai-analysis.script.market': 'ๆญฃๅจไปไธป่ฆไบคๆๆ่ทๅ OHLCV ๆฐๆฎ...',
- 'ai-analysis.script.fundamental': 'ๆญฃๅจๆฃ็ดขๅญฃๅบฆ่ดขๅกๆฅๅ...',
- 'ai-analysis.script.technical': 'ๆญฃๅจๅๆๆๆฏๆๆ ๅๅพ่กจๅฝขๆ...',
- 'ai-analysis.script.news': 'ๆญฃๅจๆซๆๅ
จ็่ดข็ปๆฐ้ป...',
- 'ai-analysis.script.sentiment': 'ๆญฃๅจๅๆ็คพไบคๅชไฝ่ถๅฟ...',
- 'ai-analysis.script.risk': 'ๆญฃๅจ่ฎก็ฎๅๅฒๆณขๅจ็...',
- 'invite.inviteLink': '้่ฏท้พๆฅ',
- 'invite.copy': 'ๅคๅถ้พๆฅ',
- 'invite.copySuccess': 'ๅคๅถๆๅ๏ผ',
- 'invite.copyFailed': 'ๅคๅถๅคฑ่ดฅ๏ผ่ฏทๆๅจๅคๅถ',
- 'invite.noInviteLink': '้่ฏท้พๆฅๆช็ๆ',
- 'invite.totalInvites': '็ดฏ่ฎก้่ฏท',
- 'invite.totalReward': '็ดฏ่ฎกๅฅๅฑ',
- 'invite.rules': '้่ฏท่งๅ',
- 'invite.rule1': 'ๆฏๆๅ้่ฏทไธไฝๅฅฝๅๆณจๅ๏ผๆจๅฐ่ทๅพๅฅๅฑ',
- 'invite.rule2': '่ขซ้่ฏท็ๅฅฝๅๅฎๆ้ฆๆฌกไบคๆ๏ผๆจๅฐ่ทๅพ้ขๅคๅฅๅฑ',
- 'invite.rule3': '้่ฏทๅฅๅฑๅฐ็ดๆฅๅๆพๅฐๆจ็่ดฆๆท',
- 'invite.inviteList': '้่ฏทๅ่กจ',
- 'invite.tasks': 'ไปปๅกไธญๅฟ',
- 'invite.inviteeName': '่ขซ้่ฏทไบบ',
- 'invite.inviteTime': '้่ฏทๆถ้ด',
- 'invite.status': '็ถๆ',
- 'invite.reward': 'ๅฅๅฑ',
- 'invite.active': 'ๆดป่ท',
- 'invite.inactive': 'ๆชๆฟๆดป',
- 'invite.completed': 'ๅทฒๅฎๆ',
- 'invite.claimed': 'ๅทฒ้ขๅ',
- 'invite.pending': 'ๅพ
ๅฎๆ',
- 'invite.goToTask': 'ๅปๅฎๆ',
- 'invite.claimReward': '้ขๅๅฅๅฑ',
- 'invite.verify': '้ช่ฏๅฎๆ',
- 'invite.verifySuccess': '้ช่ฏๆๅ๏ผไปปๅกๅทฒๅฎๆ',
- 'invite.verifyNotCompleted': 'ไปปๅกๅฐๆชๅฎๆ๏ผ่ฏทๅ
ๅฎๆไปปๅก',
- 'invite.verifyFailed': '้ช่ฏๅคฑ่ดฅ๏ผ่ฏท็จๅ้่ฏ',
- 'invite.claimSuccess': 'ๆๅ้ขๅ {reward} QDT๏ผ',
- 'invite.claimFailed': '้ขๅๅคฑ่ดฅ๏ผ่ฏท็จๅ้่ฏ',
- 'invite.totalRecords': 'ๅ
ฑ {total} ๆก่ฎฐๅฝ',
- 'invite.task.twitter.title': '่ฝฌๅๆจๆๅฐ X (Twitter)',
- 'invite.task.twitter.desc': 'ๅไบซๆไปฌ็ๅฎๆนๆจๆๅฐๆจ็ X (Twitter) ่ดฆๅท',
- 'invite.task.youtube.title': 'ๅ
ณๆณจๆไปฌ็ YouTube ้ข้',
- 'invite.task.youtube.desc': '่ฎข้
ๅนถๅ
ณๆณจๆไปฌ็ YouTube ๅฎๆน้ข้',
- 'invite.task.telegram.title': 'ๅ ๅ
ฅ Telegram ็พค็ป',
- 'invite.task.telegram.desc': 'ๅ ๅ
ฅๆไปฌ็ๅฎๆน Telegram ็คพๅบ็พค็ป',
- 'invite.task.discord.title': 'ๅ ๅ
ฅ Discord ๆๅกๅจ',
- 'invite.task.discord.desc': 'ๅ ๅ
ฅๆไปฌ็ Discord ็คพๅบๆๅกๅจ',
- 'message': '-',
- 'layouts.usermenu.dialog.title': 'ไฟกๆฏ',
- 'layouts.usermenu.dialog.content': 'ๆจ็กฎๅฎ่ฆๆณจ้ๅ๏ผ',
- 'layouts.userLayout.title': 'ไบไธ็กฎๅฎไธญ๏ผๅฏป่ง็็',
-
- // Settings
- 'settings.title': '็ณป็ป่ฎพ็ฝฎ',
- 'settings.description': '้
็ฝฎๅบ็จ่ฎพ็ฝฎใAPIๅฏ้ฅๅ็ณป็ปๅๅฅฝ',
- 'settings.save': 'ไฟๅญ่ฎพ็ฝฎ',
- 'settings.reset': '้็ฝฎ',
- 'settings.saveSuccess': '่ฎพ็ฝฎไฟๅญๆๅ',
- 'settings.saveFailed': 'ไฟๅญ่ฎพ็ฝฎๅคฑ่ดฅ',
- 'settings.loadFailed': 'ๅ ่ฝฝ้
็ฝฎๅคฑ่ดฅ',
- 'settings.openrouterBalance': 'OpenRouter ่ดฆๆทไฝ้ข',
- 'settings.queryBalance': 'ๆฅ่ฏขไฝ้ข',
- 'settings.balanceUsage': 'ๅทฒไฝฟ็จ',
- 'settings.balanceRemaining': 'ๅฉไฝ้ขๅบฆ',
- 'settings.balanceLimit': 'ๆป้้ข',
- 'settings.balanceQuerySuccess': 'ไฝ้ขๆฅ่ฏขๆๅ',
- 'settings.balanceQueryFailed': 'ไฝ้ขๆฅ่ฏขๅคฑ่ดฅ',
- 'settings.balanceNotQueried': '็นๅป"ๆฅ่ฏขไฝ้ข"่ทๅ่ดฆๆทไฟกๆฏ',
- 'settings.default': '้ป่ฎค',
- 'settings.pleaseSelect': '่ฏท้ๆฉ',
- 'settings.inputApiKey': '่ฏท่พๅ
ฅๅฏ้ฅ',
- 'settings.getApi': '่ทๅAPI',
- // Settings link texts
- 'settings.link.getApi': '่ทๅAPI',
- 'settings.link.getApiKey': '่ทๅAPI Key',
- 'settings.link.getToken': '่ทๅToken',
- 'settings.link.createBot': 'ๅๅปบBot',
- 'settings.link.viewModels': 'ๆฅ็ๆจกๅๅ่กจ',
- 'settings.link.freeRegister': 'ๅ
่ดนๆณจๅ',
- 'settings.link.supportedExchanges': 'ๆฏๆ็ไบคๆๆ',
- 'settings.link.applyApi': '็ณ่ฏทAPI',
- 'settings.link.createSearchEngine': 'ๅๅปบๆ็ดขๅผๆ',
- 'settings.link.getTurnstileKey': '่ทๅTurnstileๅฏ้ฅ',
- 'settings.link.getGoogleCredentials': '่ทๅGoogleๅญๆฎ',
- 'settings.link.getGithubCredentials': '่ทๅGitHubๅญๆฎ',
- 'settings.restartRequired': '้
็ฝฎๅทฒไฟๅญ๏ผ้จๅ้
็ฝฎ้่ฆ้ๅฏPythonๆๅกๆ่ฝ็ๆ',
- 'settings.copyRestartCmd': 'ๅคๅถ้ๅฏๅฝไปค',
- 'settings.copySuccess': 'ๅคๅถๆๅ',
- 'settings.copyFailed': 'ๅคๅถๅคฑ่ดฅ',
- // Settings groups (ๆๅ็ซฏ order ๆๅบ)
- 'settings.group.server': 'ๆๅก้
็ฝฎ',
- 'settings.group.auth': 'ๅฎๅ
จ่ฎค่ฏ',
- 'settings.group.ai': 'AI/LLM้
็ฝฎ',
- 'settings.group.trading': 'ๅฎ็ไบคๆ',
- 'settings.group.strategy': '็ญ็ฅๆง่ก',
- 'settings.group.data_source': 'ๆฐๆฎๆบ',
- 'settings.group.notification': '้็ฅๆจ้',
- 'settings.group.email': '้ฎไปถ้
็ฝฎ',
- 'settings.group.sms': '็ญไฟก้
็ฝฎ',
- 'settings.group.agent': 'AI Agent',
- 'settings.group.network': '็ฝ็ปไปฃ็',
- 'settings.group.search': 'ๆ็ดข้
็ฝฎ',
- 'settings.group.security': 'ๆณจๅไธๅฎๅ
จ',
- 'settings.group.app': 'ๅบ็จ้
็ฝฎ',
- // Settings fields - Auth
- 'settings.field.SECRET_KEY': 'Secret Key',
- 'settings.field.ADMIN_USER': '็ฎก็ๅ็จๆทๅ',
- 'settings.field.ADMIN_PASSWORD': '็ฎก็ๅๅฏ็ ',
- 'settings.field.ADMIN_EMAIL': '็ฎก็ๅ้ฎ็ฎฑ',
- // Settings fields - Security
- 'settings.field.ENABLE_REGISTRATION': 'ๅ
่ฎธๆณจๅ',
- 'settings.field.TURNSTILE_SITE_KEY': 'Turnstile Site Key',
- 'settings.field.TURNSTILE_SECRET_KEY': 'Turnstile Secret Key',
- 'settings.field.FRONTEND_URL': 'ๅ็ซฏURL',
- 'settings.field.GOOGLE_CLIENT_ID': 'Google Client ID',
- 'settings.field.GOOGLE_CLIENT_SECRET': 'Google Client Secret',
- 'settings.field.GOOGLE_REDIRECT_URI': 'Googleๅ่ฐURL',
- 'settings.field.GITHUB_CLIENT_ID': 'GitHub Client ID',
- 'settings.field.GITHUB_CLIENT_SECRET': 'GitHub Client Secret',
- 'settings.field.GITHUB_REDIRECT_URI': 'GitHubๅ่ฐURL',
- 'settings.field.SECURITY_IP_MAX_ATTEMPTS': 'IPๆๅคงๅคฑ่ดฅๆฌกๆฐ',
- 'settings.field.SECURITY_IP_WINDOW_MINUTES': 'IP็ป่ฎก็ชๅฃ(ๅ้)',
- 'settings.field.SECURITY_IP_BLOCK_MINUTES': 'IPๅฐ็ฆๆถ้ฟ(ๅ้)',
- 'settings.field.SECURITY_ACCOUNT_MAX_ATTEMPTS': '่ดฆๆทๆๅคงๅคฑ่ดฅๆฌกๆฐ',
- 'settings.field.SECURITY_ACCOUNT_WINDOW_MINUTES': '่ดฆๆท็ป่ฎก็ชๅฃ(ๅ้)',
- 'settings.field.SECURITY_ACCOUNT_BLOCK_MINUTES': '่ดฆๆท้ๅฎๆถ้ฟ(ๅ้)',
- 'settings.field.VERIFICATION_CODE_EXPIRE_MINUTES': '้ช่ฏ็ ๆๆๆ(ๅ้)',
- 'settings.field.VERIFICATION_CODE_RATE_LIMIT': '้ช่ฏ็ ๅ้้ด้(็ง)',
- 'settings.field.VERIFICATION_CODE_IP_HOURLY_LIMIT': 'IPๆฏๅฐๆถ้ช่ฏ็ ไธ้',
- 'settings.field.VERIFICATION_CODE_MAX_ATTEMPTS': '้ช่ฏ็ ๆๅคงๅฐ่ฏๆฌกๆฐ',
- 'settings.field.VERIFICATION_CODE_LOCK_MINUTES': '้ช่ฏ็ ้ๅฎๆถ้ฟ(ๅ้)',
- // Settings fields - Server
- 'settings.field.PYTHON_API_HOST': '็ๅฌๅฐๅ',
- 'settings.field.PYTHON_API_PORT': '็ซฏๅฃ',
- 'settings.field.PYTHON_API_DEBUG': '่ฐ่ฏๆจกๅผ',
- // Settings fields - Worker
- 'settings.field.ENABLE_PENDING_ORDER_WORKER': 'ๅฏ็จ่ฎขๅๅค็Worker',
- 'settings.field.PENDING_ORDER_STALE_SEC': '่ฎขๅ่ถ
ๆถๆถ้ด(็ง)',
- // Settings fields - Trading
- 'settings.field.ORDER_MODE': 'ไธๅๆจกๅผ',
- 'settings.field.MAKER_WAIT_SEC': '้ไปทๅ็ญๅพ
ๆถ้ด(็ง)',
- 'settings.field.MAKER_OFFSET_BPS': '้ไปทๅไปทๆ ผๅ็งป(ๅบ็น)',
- // Settings fields - Notification
- 'settings.field.SIGNAL_WEBHOOK_URL': 'Webhook URL',
- 'settings.field.SIGNAL_WEBHOOK_TOKEN': 'Webhook Token',
- 'settings.field.SIGNAL_NOTIFY_TIMEOUT_SEC': '้็ฅ่ถ
ๆถ(็ง)',
- 'settings.field.TELEGRAM_BOT_TOKEN': 'Telegram Bot Token',
- // Settings fields - SMTP
- 'settings.field.SMTP_HOST': 'SMTPๆๅกๅจ',
- 'settings.field.SMTP_PORT': 'SMTP็ซฏๅฃ',
- 'settings.field.SMTP_USER': 'SMTP็จๆทๅ',
- 'settings.field.SMTP_PASSWORD': 'SMTPๅฏ็ ',
- 'settings.field.SMTP_FROM': 'ๅไปถไบบๅฐๅ',
- 'settings.field.SMTP_USE_TLS': 'ไฝฟ็จTLS',
- 'settings.field.SMTP_USE_SSL': 'ไฝฟ็จSSL',
- // Settings fields - Twilio
- 'settings.field.TWILIO_ACCOUNT_SID': 'Account SID',
- 'settings.field.TWILIO_AUTH_TOKEN': 'Auth Token',
- 'settings.field.TWILIO_FROM_NUMBER': 'ๅ้ๅท็ ',
- // Settings fields - Strategy
- 'settings.field.DISABLE_RESTORE_RUNNING_STRATEGIES': '็ฆ็จ่ชๅจๆขๅค็ญ็ฅ',
- 'settings.field.STRATEGY_TICK_INTERVAL_SEC': '็ญ็ฅTick้ด้(็ง)',
- 'settings.field.PRICE_CACHE_TTL_SEC': 'ไปทๆ ผ็ผๅญTTL(็ง)',
- // Settings fields - Proxy
- 'settings.field.PROXY_PORT': 'ไปฃ็็ซฏๅฃ',
- 'settings.field.PROXY_HOST': 'ไปฃ็ไธปๆบ',
- 'settings.field.PROXY_SCHEME': 'ไปฃ็ๅ่ฎฎ',
- 'settings.field.PROXY_URL': 'ๅฎๆดไปฃ็URL',
- // Settings fields - App
- 'settings.field.CORS_ORIGINS': 'CORSๆฅๆบ',
- 'settings.field.RATE_LIMIT': '้็้ๅถ(ๆฏๅ้)',
- 'settings.field.ENABLE_CACHE': 'ๅฏ็จ็ผๅญ',
- 'settings.field.ENABLE_REQUEST_LOG': 'ๅฏ็จ่ฏทๆฑๆฅๅฟ',
- 'settings.field.ENABLE_AI_ANALYSIS': 'ๅฏ็จAIๅๆ',
- // Settings fields - ่ฎฐๅฟ/ๅๆ
- 'settings.field.ENABLE_AGENT_MEMORY': 'ๅฏ็จAgent่ฎฐๅฟ',
- 'settings.field.AGENT_MEMORY_ENABLE_VECTOR': 'ๅฏ็จๅ้ๆฃ็ดข(ๆฌๅฐ)',
- 'settings.field.AGENT_MEMORY_EMBEDDING_DIM': 'Embedding็ปดๅบฆ',
- 'settings.field.AGENT_MEMORY_TOP_K': 'ๅฌๅๆฐ้TopK',
- 'settings.field.AGENT_MEMORY_CANDIDATE_LIMIT': 'ๅ้็ชๅฃๅคงๅฐ',
- 'settings.field.AGENT_MEMORY_HALF_LIFE_DAYS': 'ๆถ้ด่กฐๅๅ่กฐๆ(ๅคฉ)',
- 'settings.field.AGENT_MEMORY_W_SIM': '็ธไผผๅบฆๆ้',
- 'settings.field.AGENT_MEMORY_W_RECENCY': 'ๆถ้ดๆ้',
- 'settings.field.AGENT_MEMORY_W_RETURNS': 'ๆถ็ๆ้',
- // Settings fields - ่ชๅจๅๆ้ช่ฏWorker
- 'settings.field.ENABLE_REFLECTION_WORKER': 'ๅฏ็จ่ชๅจ้ช่ฏ',
- 'settings.field.REFLECTION_WORKER_INTERVAL_SEC': '้ช่ฏๅจๆ้ด้(็ง)',
- // Settings fields - AI
- 'settings.field.OPENROUTER_API_KEY': 'OpenRouter API Key',
- 'settings.field.OPENROUTER_API_URL': 'OpenRouter API URL',
- 'settings.field.OPENROUTER_MODEL': '้ป่ฎคๆจกๅ',
- 'settings.field.OPENROUTER_TEMPERATURE': 'Temperature',
- 'settings.field.OPENROUTER_MAX_TOKENS': 'Max Tokens',
- 'settings.field.OPENROUTER_TIMEOUT': '่ถ
ๆถๆถ้ด(็ง)',
- 'settings.field.OPENROUTER_CONNECT_TIMEOUT': '่ฟๆฅ่ถ
ๆถ(็ง)',
- 'settings.field.AI_MODELS_JSON': 'ๆจกๅๅ่กจ(JSON)',
- // Settings fields - Market
- 'settings.field.MARKET_TYPES_JSON': 'ๅธๅบ็ฑปๅ(JSON)',
- 'settings.field.TRADING_SUPPORTED_SYMBOLS_JSON': 'ๆฏๆ็ไบคๆๅฏน(JSON)',
- // Settings fields - Data Source
- 'settings.field.DATA_SOURCE_TIMEOUT': 'ๆฐๆฎๆบ่ถ
ๆถ(็ง)',
- 'settings.field.DATA_SOURCE_RETRY': '้่ฏๆฌกๆฐ',
- 'settings.field.DATA_SOURCE_RETRY_BACKOFF': '้่ฏ้้ฟ(็ง)',
- 'settings.field.FINNHUB_API_KEY': 'Finnhub API Key',
- 'settings.field.FINNHUB_TIMEOUT': 'Finnhub่ถ
ๆถ(็ง)',
- 'settings.field.FINNHUB_RATE_LIMIT': 'Finnhub้็้ๅถ',
- 'settings.field.CCXT_DEFAULT_EXCHANGE': 'CCXT้ป่ฎคไบคๆๆ',
- 'settings.field.CCXT_TIMEOUT': 'CCXT่ถ
ๆถ(ms)',
- 'settings.field.CCXT_PROXY': 'CCXTไปฃ็',
- 'settings.field.AKSHARE_TIMEOUT': 'Akshare่ถ
ๆถ(็ง)',
- 'settings.field.YFINANCE_TIMEOUT': 'YFinance่ถ
ๆถ(็ง)',
- 'settings.field.TIINGO_API_KEY': 'Tiingo API Key',
- 'settings.field.TIINGO_TIMEOUT': 'Tiingo่ถ
ๆถ(็ง)',
- // Settings fields - Search
- 'settings.field.SEARCH_PROVIDER': 'ๆ็ดขๆไพๅ',
- 'settings.field.SEARCH_MAX_RESULTS': 'ๆๅคง็ปๆๆฐ',
- 'settings.field.TAVILY_API_KEYS': 'Tavily API Keys',
- 'settings.field.BOCHA_API_KEYS': 'ๅๆฅ API Keys',
- 'settings.field.SERPAPI_KEYS': 'SerpAPI Keys',
- 'settings.field.SEARCH_GOOGLE_API_KEY': 'Google API Key',
- 'settings.field.SEARCH_GOOGLE_CX': 'Google CX',
- 'settings.field.SEARCH_BING_API_KEY': 'Bing API Key',
- 'settings.field.INTERNAL_API_KEY': 'ๅ
้จAPI Key',
-
- // Settings descriptions (้
็ฝฎ้กน่ฏดๆ)
- 'settings.desc.PYTHON_API_HOST': 'ๆๅก็ๅฌๅฐๅใ0.0.0.0 ๅ
่ฎธๅค้จ่ฎฟ้ฎ๏ผ127.0.0.1 ไป
ๆฌๅฐ่ฎฟ้ฎ',
- 'settings.desc.PYTHON_API_PORT': 'ๆๅก็ๅฌ็ซฏๅฃ๏ผ้ป่ฎค5000',
- 'settings.desc.PYTHON_API_DEBUG': 'ๅฏ็จ่ฐ่ฏๆจกๅผ๏ผๅผๅๆถไฝฟ็จใ็ไบง็ฏๅข่ฏทๅ
ณ้ญ',
- 'settings.desc.SECRET_KEY': 'JWT็ญพๅๅฏ้ฅใ็ไบง็ฏๅขๅฟ
้กปไฟฎๆนไปฅ็กฎไฟๅฎๅ
จ',
- 'settings.desc.ADMIN_USER': '็ฎก็ๅ็ปๅฝ็จๆทๅ',
- 'settings.desc.ADMIN_PASSWORD': '็ฎก็ๅ็ปๅฝๅฏ็ ใ็ไบง็ฏๅขๅฟ
้กปไฟฎๆน',
- 'settings.desc.OPENROUTER_API_KEY': 'OpenRouter APIๅฏ้ฅ๏ผ็จไบ่ฎฟ้ฎๅค็งAIๆจกๅ',
- 'settings.desc.OPENROUTER_API_URL': 'OpenRouter API็ซฏ็นๅฐๅ',
- 'settings.desc.OPENROUTER_MODEL': '้ป่ฎคไฝฟ็จ็AIๆจกๅ๏ผๅฆ openai/gpt-4o, anthropic/claude-3.5-sonnet',
- 'settings.desc.OPENROUTER_TEMPERATURE': 'ๆจกๅๅ้ ๆง(0-1)ใ่ถไฝ่ถ็กฎๅฎๆง๏ผ่ถ้ซ่ถๆๅๆ',
- 'settings.desc.OPENROUTER_MAX_TOKENS': 'ๆฏๆฌก่ฏทๆฑๆๅคง่พๅบtokenๆฐ',
- 'settings.desc.OPENROUTER_TIMEOUT': 'API่ฏทๆฑ่ถ
ๆถๆถ้ด๏ผ็ง๏ผ',
- 'settings.desc.OPENROUTER_CONNECT_TIMEOUT': '่ฟๆฅๅปบ็ซ่ถ
ๆถๆถ้ด๏ผ็ง๏ผ',
- 'settings.desc.AI_MODELS_JSON': '่ชๅฎไนๆจกๅๅ่กจ๏ผJSONๆ ผๅผ๏ผ็จไบๆจกๅ้ๆฉๅจ',
- 'settings.desc.ENABLE_PENDING_ORDER_WORKER': 'ๅฏ็จๅๅฐ่ฎขๅๅค็Worker๏ผๅฎ็ไบคๆๅฟ
้',
- 'settings.desc.PENDING_ORDER_STALE_SEC': '็ญๅพ
่ฎขๅ่ถ
ๆถๆถ้ด๏ผ่ถ
ๆถๅๆ ่ฎฐไธบ่ฟๆ',
- 'settings.desc.ORDER_MODE': 'maker: ้ไปทๅไผๅ
(ๆ็ปญ่ดนไฝ)๏ผmarket: ๅธไปทๅ(็ซๅณๆไบค)',
- 'settings.desc.MAKER_WAIT_SEC': '้ไปทๅ็ญๅพ
ๆไบคๆถ้ด๏ผ่ถ
ๆถๅ่ชๅจๅๆขไธบๅธไปทๅ',
- 'settings.desc.MAKER_OFFSET_BPS': '้ไปทๅไปทๆ ผๅ็งป(ๅบ็น)ใไนฐๅ
ฅไปท=ๅธไปท*(1-ๅ็งป)๏ผๅๅบไปท=ๅธไปท*(1+ๅ็งป)',
- 'settings.desc.DISABLE_RESTORE_RUNNING_STRATEGIES': '็ฆๆญขๆๅก้ๅฏๆถ่ชๅจๆขๅค่ฟ่กไธญ็็ญ็ฅ',
- 'settings.desc.STRATEGY_TICK_INTERVAL_SEC': '็ญ็ฅไธปๅพช็ฏๆฃๆฅ้ด้๏ผ็ง๏ผ',
- 'settings.desc.PRICE_CACHE_TTL_SEC': 'ไปทๆ ผๆฐๆฎ็ผๅญๆๆๆ๏ผ็ง๏ผ',
- 'settings.desc.MARKET_TYPES_JSON': '่ชๅฎไนๅธๅบ็ฑปๅ้
็ฝฎ๏ผJSONๆ ผๅผ',
- 'settings.desc.TRADING_SUPPORTED_SYMBOLS_JSON': 'ๆฏๆ็ไบคๆๅฏนๅ่กจ๏ผJSONๆ ผๅผ',
- 'settings.desc.DATA_SOURCE_TIMEOUT': 'ๆฐๆฎๆบ่ฏทๆฑ้ป่ฎค่ถ
ๆถๆถ้ด',
- 'settings.desc.DATA_SOURCE_RETRY': 'ๆฐๆฎๆบ่ฏทๆฑๅคฑ่ดฅๆถ็้่ฏๆฌกๆฐ',
- 'settings.desc.DATA_SOURCE_RETRY_BACKOFF': '้่ฏ้ด้ๆถ้ด๏ผ็ง๏ผ',
- 'settings.desc.CCXT_DEFAULT_EXCHANGE': 'CCXT้ป่ฎคไบคๆๆ๏ผbinance, coinbase, okx็ญ๏ผ',
- 'settings.desc.CCXT_TIMEOUT': 'CCXT่ฏทๆฑ่ถ
ๆถๆถ้ด๏ผๆฏซ็ง๏ผ',
- 'settings.desc.CCXT_PROXY': 'CCXT่ฏทๆฑไปฃ็ๅฐๅ๏ผๅฆ socks5h://127.0.0.1:1080๏ผ',
- 'settings.desc.FINNHUB_API_KEY': 'Finnhub APIๅฏ้ฅ๏ผ็จไบ็พ่กๆฐๆฎ๏ผๆๅ
่ดน้ขๅบฆ๏ผ',
- 'settings.desc.FINNHUB_TIMEOUT': 'Finnhub API่ฏทๆฑ่ถ
ๆถๆถ้ด',
- 'settings.desc.FINNHUB_RATE_LIMIT': 'Finnhub API้็้ๅถ๏ผๆฏๅ้่ฏทๆฑๆฐ๏ผ',
- 'settings.desc.TIINGO_API_KEY': 'Tiingo APIๅฏ้ฅ๏ผ็จไบๅคๆฑ/่ดต้ๅฑๆฐๆฎ๏ผๅ
่ดน็ไธๆฏๆ1ๅ้ๆฐๆฎ๏ผ',
- 'settings.desc.TIINGO_TIMEOUT': 'Tiingo API่ฏทๆฑ่ถ
ๆถๆถ้ด',
- 'settings.desc.AKSHARE_TIMEOUT': 'Akshare API่ถ
ๆถๆถ้ด๏ผ็จไบA่กๆฐๆฎ',
- 'settings.desc.YFINANCE_TIMEOUT': 'Yahoo Finance API่ถ
ๆถๆถ้ด',
- 'settings.desc.SIGNAL_WEBHOOK_URL': 'ไฟกๅท้็ฅWebhookๅฐๅ๏ผPOST JSON๏ผ',
- 'settings.desc.SIGNAL_WEBHOOK_TOKEN': 'Webhook่ฎค่ฏไปค็๏ผ้่ฟ่ฏทๆฑๅคดๅ้',
- 'settings.desc.SIGNAL_NOTIFY_TIMEOUT_SEC': '้็ฅ่ฏทๆฑ่ถ
ๆถๆถ้ด',
- 'settings.desc.TELEGRAM_BOT_TOKEN': 'TelegramๆบๅจไบบToken๏ผไป@BotFather่ทๅ',
- 'settings.desc.SMTP_HOST': 'SMTP้ฎไปถๆๅกๅจๅฐๅ๏ผๅฆ smtp.gmail.com๏ผ',
- 'settings.desc.SMTP_PORT': 'SMTP็ซฏๅฃ๏ผTLS็จ587๏ผSSL็จ465๏ผๆๆ็จ25๏ผ',
- 'settings.desc.SMTP_USER': 'SMTP่ฎค่ฏ็จๆทๅ๏ผ้ๅธธๆฏ้ฎ็ฎฑๅฐๅ๏ผ',
- 'settings.desc.SMTP_PASSWORD': 'SMTP่ฎค่ฏๅฏ็ ๆๅบ็จไธ็จๅฏ็ ',
- 'settings.desc.SMTP_FROM': '้ฎไปถๅไปถไบบๅฐๅ',
- 'settings.desc.SMTP_USE_TLS': 'ๅฏ็จSTARTTLSๅ ๅฏ๏ผๆจ่็ซฏๅฃ587๏ผ',
- 'settings.desc.SMTP_USE_SSL': 'ๅฏ็จSSLๅ ๅฏ๏ผ็ซฏๅฃ465๏ผ',
- 'settings.desc.TWILIO_ACCOUNT_SID': 'Twilio่ดฆๆทSID๏ผไปๆงๅถๅฐ่ทๅ',
- 'settings.desc.TWILIO_AUTH_TOKEN': 'Twilio่ฎค่ฏToken๏ผไปๆงๅถๅฐ่ทๅ',
- 'settings.desc.TWILIO_FROM_NUMBER': 'Twilioๅ้็ญไฟก็ๅท็ ๏ผๅฆ +1234567890๏ผ',
- 'settings.desc.ENABLE_AGENT_MEMORY': 'ๅฏ็จAI Agent่ฎฐๅฟๅ่ฝ๏ผ็จไบๅญฆไน ๅๅฒไบคๆ',
- 'settings.desc.AGENT_MEMORY_ENABLE_VECTOR': 'ๅฏ็จๆฌๅฐๅ้็ธไผผๅบฆๆ็ดข่ฟ่ก่ฎฐๅฟๆฃ็ดข',
- 'settings.desc.AGENT_MEMORY_EMBEDDING_DIM': '่ฎฐๅฟๅ้ๅตๅ
ฅ็ปดๅบฆ',
- 'settings.desc.AGENT_MEMORY_TOP_K': 'ๆฃ็ดขๆถ่ฟๅ็็ธไผผ่ฎฐๅฟๆฐ้',
- 'settings.desc.AGENT_MEMORY_CANDIDATE_LIMIT': '็ธไผผๅบฆๆ็ดข็ๅ้่ฎฐๅฟไธ้',
- 'settings.desc.AGENT_MEMORY_HALF_LIFE_DAYS': '่ฎฐๅฟๆถ้ด่กฐๅ็ๅ่กฐๆ๏ผๅคฉ๏ผ',
- 'settings.desc.AGENT_MEMORY_W_SIM': '่ฎฐๅฟๆๅบไธญ็ธไผผๅบฆๅๆฐ็ๆ้(0-1)',
- 'settings.desc.AGENT_MEMORY_W_RECENCY': '่ฎฐๅฟๆๅบไธญๆถ้ดๆฐ่ฟๅบฆ็ๆ้(0-1)',
- 'settings.desc.AGENT_MEMORY_W_RETURNS': '่ฎฐๅฟๆๅบไธญๆถ็่กจ็ฐ็ๆ้(0-1)',
- 'settings.desc.ENABLE_REFLECTION_WORKER': 'ๅฏ็จๅๅฐ่ชๅจไบคๆๅๆWorker',
- 'settings.desc.REFLECTION_WORKER_INTERVAL_SEC': '่ชๅจๅๆ่ฟ่ก้ด้๏ผ้ป่ฎค24ๅฐๆถ๏ผ',
- 'settings.desc.PROXY_HOST': 'ไปฃ็ๆๅกๅจไธปๆบๅๆIP',
- 'settings.desc.PROXY_PORT': 'ไปฃ็ๆๅกๅจ็ซฏๅฃ๏ผ็็ฉบๅ็ฆ็จไปฃ็๏ผ',
- 'settings.desc.PROXY_SCHEME': 'ไปฃ็ๅ่ฎฎ็ฑปๅใsocks5h ่กจ็คบDNSไน่ตฐไปฃ็',
- 'settings.desc.PROXY_URL': 'ๅฎๆดไปฃ็URL๏ผ่ฎพ็ฝฎๅ่ฆ็ไธ้ข็้
็ฝฎ๏ผ',
- 'settings.desc.SEARCH_PROVIDER': '็ฝ้กตๆ็ดขๆไพๅ๏ผ็จไบAI็ ็ฉถๅ่ฝใๅๆฅ(Bocha)ๆจ่็จไบA่กๆฐ้ป',
- 'settings.desc.SEARCH_MAX_RESULTS': 'ๆ็ดข่ฟๅ็ๆๅคง็ปๆๆฐ',
- 'settings.desc.TAVILY_API_KEYS': 'Tavilyๆ็ดขAPIๅฏ้ฅ๏ผๅคไธช็จ้ๅทๅ้ๅฏ่ฝฎๆขใๅ
่ดน1000ๆฌก/ๆ',
- 'settings.desc.BOCHA_API_KEYS': 'ๅๆฅๆ็ดขAPIๅฏ้ฅ๏ผๅคไธช็จ้ๅทๅ้ๅฏ่ฝฎๆขใA่กๆฐ้ปๆ็ดขๆๆๆไฝณ',
- 'settings.desc.SERPAPI_KEYS': 'SerpAPIๅฏ้ฅ๏ผ็จไบGoogle/Bingๆ็ดข๏ผๅคไธช็จ้ๅทๅ้ๅฏ่ฝฎๆข',
- 'settings.desc.SEARCH_GOOGLE_API_KEY': 'Google่ชๅฎไนๆ็ดขAPIๅฏ้ฅ',
- 'settings.desc.SEARCH_GOOGLE_CX': 'Googleๅฏ็ผ็จๆ็ดขๅผๆID (CX)',
- 'settings.desc.SEARCH_BING_API_KEY': 'Microsoft Bing็ฝ้กตๆ็ดขAPIๅฏ้ฅ',
- 'settings.desc.INTERNAL_API_KEY': 'ๅ
้จAPI่ฎค่ฏๅฏ้ฅ๏ผ็จไบๆๅก้ด่ฐ็จ',
- 'settings.desc.CORS_ORIGINS': 'ๅ
่ฎธ็CORSๆฅๆบ๏ผ* ่กจ็คบๅ
จ้จ๏ผๆ้ๅทๅ้็ๅ่กจ๏ผ',
- 'settings.desc.RATE_LIMIT': 'ๆฏIPๆฏๅ้็API่ฏทๆฑ้ๅถ',
- 'settings.desc.ENABLE_CACHE': 'ๅฏ็จๅๅบ็ผๅญไปฅๆ้ซๆง่ฝ',
- 'settings.desc.ENABLE_REQUEST_LOG': '่ฎฐๅฝๆๆAPI่ฏทๆฑๆฅๅฟ๏ผ็จไบ่ฐ่ฏ',
- 'settings.desc.ENABLE_AI_ANALYSIS': 'ๅฏ็จAI้ฉฑๅจ็ๅธๅบๅๆๅ่ฝ',
-
- // Portfolio - ่ตไบง็ๆต
- 'portfolio.summary.totalValue': 'ๆปๅธๅผ',
- 'portfolio.summary.totalCost': 'ๆปๆๆฌ',
- 'portfolio.summary.totalPnl': 'ๆป็ไบ',
- 'portfolio.summary.positionCount': 'ๆไปๆฐ้',
- 'portfolio.summary.profitLossRatio': '็ๅฉ/ไบๆ',
- 'portfolio.summary.today': 'ไปๆฅ',
- 'portfolio.summary.todayPnl': 'ไปๆฅ็ไบ',
- 'portfolio.summary.bestPerformer': 'ๆไฝณ่กจ็ฐ',
- 'portfolio.summary.worstPerformer': 'ๆๅทฎ่กจ็ฐ',
- 'portfolio.summary.priceSync': 'ไปทๆ ผๅๆญฅ',
- 'portfolio.summary.syncInterval': 'ๅทๆฐ้ด้',
- 'portfolio.summary.justNow': 'ๅๅ',
- 'portfolio.summary.ago': 'ๅ',
- 'portfolio.positions.title': 'ๆ็ๆไป',
- 'portfolio.positions.add': 'ๆทปๅ ๆไป',
- 'portfolio.positions.addFirst': 'ๆทปๅ ็ฌฌไธ็ฌๆไป',
- 'portfolio.positions.empty': 'ๆๆ ๆไป่ฎฐๅฝ',
- 'portfolio.positions.deleteConfirm': '็กฎๅฎๅ ้ค่ฟ็ฌๆไปๅ๏ผ',
- 'portfolio.positions.currentPrice': '็ฐไปท',
- 'portfolio.positions.entryPrice': 'ไนฐๅ
ฅไปท',
- 'portfolio.positions.quantity': 'ๆฐ้',
- 'portfolio.positions.side': 'ๆนๅ',
- 'portfolio.positions.long': 'ๅๅค',
- 'portfolio.positions.short': 'ๅ็ฉบ',
- 'portfolio.positions.marketValue': 'ๅธๅผ',
- 'portfolio.positions.pnl': '็ไบ',
- 'portfolio.positions.items': 'ไธชๆไป',
- 'portfolio.monitors.title': 'AI ็ๆง',
- 'portfolio.monitors.add': 'ๆทปๅ ็ๆง',
- 'portfolio.monitors.addFirst': 'ๆทปๅ AI ็ๆง',
- 'portfolio.monitors.empty': 'ๆๆ ็ๆงไปปๅก',
- 'portfolio.monitors.deleteConfirm': '็กฎๅฎๅ ้ค่ฟไธช็ๆงไปปๅกๅ๏ผ',
- 'portfolio.monitors.interval': 'ๆง่ก้ด้',
- 'portfolio.monitors.lastRun': 'ไธๆฌกๆง่ก',
- 'portfolio.monitors.nextRun': 'ไธๆฌกๆง่ก',
- 'portfolio.monitors.channels': '้็ฅๆธ ้',
- 'portfolio.monitors.runNow': '็ซๅณๆง่ก',
- 'portfolio.monitors.analysisResult': 'AI ๅๆ็ปๆ',
- 'portfolio.monitors.runningTitle': 'AI ๅๆๅทฒๅฏๅจ',
- 'portfolio.monitors.runningDesc': 'ๅๆๆญฃๅจๅๅฐ่ฟ่ก๏ผๅฎๆๅไผ้่ฟ้็ฅๆจ้็ปๆใๅๆๅคไธชๆไปๅฏ่ฝ้่ฆๅ ๅ้ๆถ้ดใ',
- 'portfolio.monitors.timeoutTitle': '่ฏทๆฑ่ถ
ๆถ',
- 'portfolio.monitors.timeoutDesc': 'ๅๆๅฏ่ฝๆญฃๅจๅๅฐ่ฟ่กไธญ๏ผ่ฏท็จๅๆฅ็้็ฅ่ทๅ็ปๆใๅฆๆ้ฟๆถ้ดๆฒกๆๆถๅฐ้็ฅ๏ผ่ฏท้่ฏใ',
- 'portfolio.modal.addPosition': 'ๆทปๅ ๆไป',
- 'portfolio.modal.editPosition': '็ผ่พๆไป',
- 'portfolio.modal.addMonitor': 'ๆทปๅ ็ๆง',
- 'portfolio.modal.editMonitor': '็ผ่พ็ๆง',
- 'portfolio.form.market': 'ๅธๅบ',
- 'portfolio.form.marketRequired': '่ฏท้ๆฉๅธๅบ',
- 'portfolio.form.selectMarket': '้ๆฉๅธๅบ',
- 'portfolio.form.symbol': 'ๆ ็ไปฃ็ ',
- 'portfolio.form.symbolRequired': '่ฏท่พๅ
ฅๆ ็ไปฃ็ ',
- 'portfolio.form.searchSymbol': 'ๆ็ดขๆ่พๅ
ฅๆ ็ไปฃ็ ',
- 'portfolio.form.useAsSymbol': 'ไฝฟ็จ',
- 'portfolio.form.asSymbolCode': 'ไฝไธบๆ ็ไปฃ็ ',
- 'portfolio.form.symbolHint': 'ๅฏๆ็ดขๆ ็ๅบ๏ผๆ็ดๆฅ่พๅ
ฅไปปๆไปฃ็ ',
- 'portfolio.form.side': 'ๆนๅ',
- 'portfolio.form.quantity': 'ๆฐ้',
- 'portfolio.form.quantityRequired': '่ฏท่พๅ
ฅๆฐ้',
- 'portfolio.form.enterQuantity': '่พๅ
ฅๆไปๆฐ้',
- 'portfolio.form.entryPrice': 'ไนฐๅ
ฅไปท',
- 'portfolio.form.entryPriceRequired': '่ฏท่พๅ
ฅไนฐๅ
ฅไปท',
- 'portfolio.form.enterEntryPrice': '่พๅ
ฅไนฐๅ
ฅไปทๆ ผ',
- 'portfolio.form.notes': 'ๅคๆณจ',
- 'portfolio.form.enterNotes': 'ๅฏ้๏ผๆทปๅ ๅคๆณจ',
- 'portfolio.form.monitorName': '็ๆงๅ็งฐ',
- 'portfolio.form.monitorNameRequired': '่ฏท่พๅ
ฅ็ๆงๅ็งฐ',
- 'portfolio.form.enterMonitorName': 'ไพๅฆ๏ผๆฏๆฅ็ปๅๅๆ',
- 'portfolio.form.interval': 'ๆง่ก้ด้',
- 'portfolio.form.minutes': 'ๅ้',
- 'portfolio.form.hour': 'ๅฐๆถ',
- 'portfolio.form.hours': 'ๅฐๆถ',
- 'portfolio.form.notifyChannels': '้็ฅๆธ ้',
- 'portfolio.form.browser': 'ๆต่งๅจ้็ฅ',
- 'portfolio.form.email': '้ฎไปถ',
- 'portfolio.form.telegramChatId': 'Telegram Chat ID',
- 'portfolio.form.enterTelegramChatId': '่พๅ
ฅ Telegram Chat ID',
- 'portfolio.form.telegramRequired': '่ฏท่พๅ
ฅ Telegram Chat ID',
- 'portfolio.form.emailAddress': '้ฎ็ฎฑๅฐๅ',
- 'portfolio.form.enterEmail': '่พๅ
ฅ้ฎ็ฎฑๅฐๅ',
- 'portfolio.form.emailRequired': '่ฏท่พๅ
ฅ้ฎ็ฎฑๅฐๅ',
- 'portfolio.form.emailInvalid': '่ฏท่พๅ
ฅๆๆ็้ฎ็ฎฑๅฐๅ',
- 'portfolio.form.customPrompt': '่ชๅฎไนๆ็คบ',
- 'portfolio.form.customPromptPlaceholder': 'ๅฏ้๏ผๆทปๅ ็นๅซๅ
ณๆณจ็น๏ผไพๅฆ"้็นๅ
ณๆณจ็งๆ่ก้ฃ้ฉ"',
- 'portfolio.form.monitorScope': '็ๆง่ๅด',
- 'portfolio.form.allPositions': 'ๅ
จ้จๆไป',
- 'portfolio.form.selectedPositions': 'ๆๅฎๆไป',
- 'portfolio.form.selectPositions': '้ๆฉๆไป',
- 'portfolio.form.selectAll': 'ๅ
จ้',
- 'portfolio.form.deselectAll': 'ๅ
จไธ้',
- 'portfolio.form.selectedCount': 'ๅทฒ้ {count}/{total}',
- 'portfolio.form.pleaseSelectPositions': '่ฏท่ณๅฐ้ๆฉไธไธชๆไป่ฟ่ก็ๆง',
- 'portfolio.form.notificationFromProfile': '้็ฅๅฐๅ้ๅฐๆจๅจไธชไบบไธญๅฟ้
็ฝฎ็ๅฐๅ',
- 'portfolio.form.goToProfile': 'ๅๅพ้
็ฝฎ',
- 'portfolio.message.loadFailed': 'ๅ ่ฝฝๆฐๆฎๅคฑ่ดฅ',
- 'portfolio.message.saveSuccess': 'ไฟๅญๆๅ',
- 'portfolio.message.saveFailed': 'ไฟๅญๅคฑ่ดฅ',
- 'portfolio.message.deleteSuccess': 'ๅ ้คๆๅ',
- 'portfolio.message.deleteFailed': 'ๅ ้คๅคฑ่ดฅ',
- 'portfolio.message.updateFailed': 'ๆดๆฐๅคฑ่ดฅ',
- 'portfolio.message.monitorEnabled': '็ๆงๅทฒๅฏ็จ',
- 'portfolio.message.monitorDisabled': '็ๆงๅทฒๆๅ',
- 'portfolio.message.monitorRunSuccess': 'ๅๆๅฎๆ',
- 'portfolio.message.monitorRunFailed': 'ๅๆๅคฑ่ดฅ',
- 'portfolio.message.monitorRunning': 'AI ๅๆๅทฒๅฏๅจ๏ผ่ฏท็ญๅพ
้็ฅ',
- // Portfolio - ๅ็ป
- 'portfolio.groups.all': 'ๅ
จ้จๆไป',
- 'portfolio.groups.ungrouped': 'ๆชๅ็ป',
- 'portfolio.form.group': 'ๅ็ป',
- 'portfolio.form.enterGroup': '่พๅ
ฅๆ้ๆฉๅ็ป',
- // Portfolio - ้ข่ญฆ
- 'portfolio.alerts.title': 'ไปทๆ ผ/็ไบ้ข่ญฆ',
- 'portfolio.alerts.addAlert': 'ๆทปๅ ้ข่ญฆ',
- 'portfolio.alerts.editAlert': '็ผ่พ้ข่ญฆ',
- 'portfolio.alerts.alertType': '้ข่ญฆ็ฑปๅ',
- 'portfolio.alerts.priceAbove': 'ไปทๆ ผ้ซไบ',
- 'portfolio.alerts.priceBelow': 'ไปทๆ ผไฝไบ',
- 'portfolio.alerts.pnlAbove': '็ๅฉ้ซไบ (%)',
- 'portfolio.alerts.pnlBelow': 'ไบๆไฝไบ (%)',
- 'portfolio.alerts.threshold': '้ๅผ',
- 'portfolio.alerts.thresholdRequired': '่ฏท่พๅ
ฅ้ๅผ',
- 'portfolio.alerts.enterPrice': '่พๅ
ฅไปทๆ ผ',
- 'portfolio.alerts.enterPercent': '่พๅ
ฅ็พๅๆฏ',
- 'portfolio.alerts.currentPrice': 'ๅฝๅไปทๆ ผ',
- 'portfolio.alerts.currentPriceHint': 'ๅฝๅไปทๆ ผ',
- 'portfolio.alerts.repeatInterval': '้ๅคๆ้',
- 'portfolio.alerts.noRepeat': 'ไธ้ๅค (่งฆๅไธๆฌก)',
- 'portfolio.alerts.every5min': 'ๆฏ 5 ๅ้',
- 'portfolio.alerts.every15min': 'ๆฏ 15 ๅ้',
- 'portfolio.alerts.every30min': 'ๆฏ 30 ๅ้',
- 'portfolio.alerts.every1hour': 'ๆฏ 1 ๅฐๆถ',
- 'portfolio.alerts.every4hours': 'ๆฏ 4 ๅฐๆถ',
- 'portfolio.alerts.onceDaily': 'ๆฏๅคฉไธๆฌก',
- 'portfolio.alerts.enabled': 'ๅฏ็จ้ข่ญฆ',
- 'portfolio.alerts.enabledDesc': 'ๅผๅฏๅๅฐ่ชๅจ็ๆตๅนถ่งฆๅ้็ฅ',
- 'portfolio.alerts.delete': 'ๅ ้ค',
- 'portfolio.alerts.deleteConfirm': '็กฎๅฎ่ฆๅ ้คๆญค้ข่ญฆๅ๏ผ',
- 'portfolio.modal.addAlert': 'ๆทปๅ ้ข่ญฆ',
- 'portfolio.modal.editAlert': '็ผ่พ้ข่ญฆ',
-
- // User Management
- 'menu.userManage': '็จๆท็ฎก็',
- 'menu.myProfile': 'ไธชไบบไธญๅฟ',
- 'common.actions': 'ๆไฝ',
- 'common.refresh': 'ๅทๆฐ',
-
- 'userManage.title': '็จๆท็ฎก็',
- 'userManage.searchPlaceholder': 'ๆ็ดข็จๆทๅ/้ฎ็ฎฑ/ๆต็งฐ',
- 'userManage.description': '็ฎก็็ณป็ป็จๆทใ่ง่ฒๅๆ้',
- 'userManage.createUser': 'ๅๅปบ็จๆท',
- 'userManage.editUser': '็ผ่พ็จๆท',
- 'userManage.username': '็จๆทๅ',
- 'userManage.password': 'ๅฏ็ ',
- 'userManage.nickname': 'ๆต็งฐ',
- 'userManage.email': '้ฎ็ฎฑ',
- 'userManage.role': '่ง่ฒ',
- 'userManage.status': '็ถๆ',
- 'userManage.lastLogin': 'ๆๅ็ปๅฝ',
- 'userManage.active': 'ๅฏ็จ',
- 'userManage.disabled': '็ฆ็จ',
- 'userManage.neverLogin': 'ไปๆช็ปๅฝ',
- 'userManage.usernameRequired': '่ฏท่พๅ
ฅ็จๆทๅ',
- 'userManage.usernamePlaceholder': '่พๅ
ฅ็จๆทๅ',
- 'userManage.passwordRequired': '่ฏท่พๅ
ฅๅฏ็ ',
- 'userManage.passwordPlaceholder': '่พๅ
ฅๅฏ็ ๏ผ่ณๅฐ6ไฝ๏ผ',
- 'userManage.passwordMin': 'ๅฏ็ ่ณๅฐ6ไธชๅญ็ฌฆ',
- 'userManage.nicknamePlaceholder': '่พๅ
ฅๆต็งฐ',
- 'userManage.emailPlaceholder': '่พๅ
ฅ้ฎ็ฎฑ',
- 'userManage.emailInvalid': '้ฎ็ฎฑๆ ผๅผไธๆญฃ็กฎ',
- 'userManage.rolePlaceholder': '้ๆฉ่ง่ฒ',
- 'userManage.statusPlaceholder': '้ๆฉ็ถๆ',
- 'userManage.resetPassword': '้็ฝฎๅฏ็ ',
- 'userManage.resetPasswordWarning': 'ๆญคๆไฝๅฐ้็ฝฎ็จๆทๅฏ็ ',
- 'userManage.newPassword': 'ๆฐๅฏ็ ',
- 'userManage.newPasswordPlaceholder': '่พๅ
ฅๆฐๅฏ็ ',
- 'userManage.confirmDelete': '็กฎๅฎ่ฆๅ ้คๆญค็จๆทๅ๏ผ',
- 'userManage.roleAdmin': '็ฎก็ๅ',
- 'userManage.roleManager': '็ป็',
- 'userManage.roleUser': 'ๆฎ้็จๆท',
- 'userManage.roleViewer': '่ฎฟๅฎข',
-
- // Profile
- 'profile.title': 'ไธชไบบไธญๅฟ',
- 'profile.description': '็ฎก็ๆจ็่ดฆๆท่ฎพ็ฝฎๅๅๅฅฝ',
- 'profile.basicInfo': 'ๅบๆฌไฟกๆฏ',
- 'profile.changePassword': 'ไฟฎๆนๅฏ็ ',
- 'profile.username': '็จๆทๅ',
- 'profile.nickname': 'ๆต็งฐ',
- 'profile.email': '้ฎ็ฎฑ',
- 'profile.lastLogin': 'ๆๅ็ปๅฝ',
- 'profile.nicknamePlaceholder': '่พๅ
ฅๆจ็ๆต็งฐ',
- 'profile.emailPlaceholder': '่พๅ
ฅๆจ็้ฎ็ฎฑ',
- 'profile.emailInvalid': '้ฎ็ฎฑๆ ผๅผไธๆญฃ็กฎ',
- 'profile.emailCannotChange': 'ๆณจๅๅ้ฎ็ฎฑไธๅฏไฟฎๆน',
- 'profile.passwordHint': 'ๅฏ็ ่ณๅฐ้่ฆ6ไธชๅญ็ฌฆ',
- 'profile.oldPassword': 'ๅฝๅๅฏ็ ',
- 'profile.newPassword': 'ๆฐๅฏ็ ',
- 'profile.confirmPassword': '็กฎ่ฎคๅฏ็ ',
- 'profile.oldPasswordRequired': '่ฏท่พๅ
ฅๅฝๅๅฏ็ ',
- 'profile.oldPasswordPlaceholder': '่พๅ
ฅๅฝๅๅฏ็ ',
- 'profile.newPasswordRequired': '่ฏท่พๅ
ฅๆฐๅฏ็ ',
- 'profile.newPasswordPlaceholder': '่พๅ
ฅๆฐๅฏ็ ',
- 'profile.confirmPasswordRequired': '่ฏท็กฎ่ฎคๆฐๅฏ็ ',
- 'profile.confirmPasswordPlaceholder': 'ๅๆฌก่พๅ
ฅๆฐๅฏ็ ',
- 'profile.passwordMin': 'ๅฏ็ ่ณๅฐ6ไธชๅญ็ฌฆ',
- 'profile.passwordMismatch': 'ไธคๆฌก่พๅ
ฅ็ๅฏ็ ไธไธ่ด',
-
- // Profile - Credits
- 'profile.credits.title': 'ๆ็็งฏๅ',
- 'profile.credits.unit': '็งฏๅ',
- 'profile.credits.recharge': 'ๅผ้/ๅ
ๅผ',
- 'profile.credits.vipExpires': 'VIPๆๆๆ่ณ',
- 'profile.credits.vipExpired': 'VIPๅทฒ่ฟๆ',
- 'profile.credits.noVip': '้VIP็จๆท',
- 'profile.credits.hint': 'ไฝฟ็จAIๅๆ/ๅๆต/็ๆง็ญๅ่ฝไผๆถ่็งฏๅ๏ผVIPไป
ๅฏๅ
่ดนไฝฟ็จVIPๅ
่ดนๆๆ ใ',
-
- // Profile - Credits Log (ๆถ่ดน่ฎฐๅฝ)
- 'profile.creditsLog': 'ๆถ่ดน่ฎฐๅฝ',
- 'profile.creditsLog.time': 'ๆถ้ด',
- 'profile.creditsLog.action': '็ฑปๅ',
- 'profile.creditsLog.amount': 'ๅๅจ',
- 'profile.creditsLog.balance': 'ไฝ้ข',
- 'profile.creditsLog.remark': 'ๅคๆณจ',
- 'profile.creditsLog.actionConsume': 'ๆถ่ดน',
- 'profile.creditsLog.actionRecharge': 'ๅ
ๅผ',
- 'profile.creditsLog.actionAdjust': '่ฐๆด',
- 'profile.creditsLog.actionRefund': '้ๆฌพ',
- 'profile.creditsLog.actionVipGrant': 'VIPๆไบ',
- 'profile.creditsLog.actionVipRevoke': 'VIPๅๆถ',
- 'profile.creditsLog.actionRegisterBonus': 'ๆณจๅๅฅๅฑ',
- 'profile.creditsLog.actionReferralBonus': '้่ฏทๅฅๅฑ',
- 'profile.creditsLog.actionIndicatorPurchase': '่ดญไนฐๆๆ ',
- 'profile.creditsLog.actionIndicatorSale': 'ๅบๅฎๆๆ ',
-
- // Profile - Referral (้่ฏท)
- 'profile.referral.title': '้่ฏทๅฅฝๅ',
- 'profile.referral.listTab': '้่ฏทๅ่กจ',
- 'profile.referral.totalInvited': 'ๅทฒ้่ฏท',
- 'profile.referral.bonusPerInvite': 'ๆฏ้่ฏท่ทๅพ',
- 'profile.referral.yourLink': 'ๆจ็้่ฏท้พๆฅ',
- 'profile.referral.copyLink': 'ๅคๅถ้พๆฅ',
- 'profile.referral.linkCopied': '้่ฏท้พๆฅๅทฒๅคๅถ',
- 'profile.referral.newUserBonus': 'ๆฐ็จๆทๆณจๅ่ทๅพ',
- 'profile.referral.user': '็จๆท',
- 'profile.referral.registerTime': 'ๆณจๅๆถ้ด',
- 'profile.referral.noReferrals': 'ๆๆ ้่ฏท่ฎฐๅฝ',
- 'profile.referral.shareNow': '็ซๅณๅไบซ้่ฏท',
-
- // Profile - Notification Settings (้็ฅ่ฎพ็ฝฎ)
- 'profile.notifications.title': '้็ฅ่ฎพ็ฝฎ',
- 'profile.notifications.hint': '้
็ฝฎๆจ็้ป่ฎค้็ฅๆนๅผ๏ผๅจๅๅปบ่ตไบง็ๆงๅ้ข่ญฆๆถๅฐ่ชๅจไฝฟ็จ่ฟไบ่ฎพ็ฝฎ',
- 'profile.notifications.defaultChannels': '้ป่ฎค้็ฅๆธ ้',
- 'profile.notifications.browser': '็ซๅ
้็ฅ',
- 'profile.notifications.email': '้ฎไปถ',
- 'profile.notifications.phone': '็ญไฟก',
- 'profile.notifications.telegramBotToken': 'Telegram Bot Token',
- 'profile.notifications.telegramBotTokenPlaceholder': '่ฏท่พๅ
ฅๆจ็ Telegram Bot Token',
- 'profile.notifications.telegramBotTokenHint': '้่ฟ @BotFather ๅๅปบๆบๅจไบบ่ทๅ Token',
- 'profile.notifications.telegramChatId': 'Telegram Chat ID',
- 'profile.notifications.telegramPlaceholder': '่ฏท่พๅ
ฅๆจ็ Telegram Chat ID๏ผๅฆ 123456789๏ผ',
- 'profile.notifications.telegramHint': 'ๅ้ /start ็ป @userinfobot ๅฏ่ทๅๆจ็ Chat ID',
- 'profile.notifications.notifyEmail': '้็ฅ้ฎ็ฎฑ',
- 'profile.notifications.emailPlaceholder': 'ๆฅๆถ้็ฅ็้ฎ็ฎฑๅฐๅ',
- 'profile.notifications.emailHint': '้ป่ฎคไฝฟ็จ่ดฆๆท้ฎ็ฎฑ๏ผๅฏ่ฎพ็ฝฎๅ
ถไป้ฎ็ฎฑๆฅๆถ้็ฅ',
- 'profile.notifications.phonePlaceholder': '่ฏท่พๅ
ฅๆๆบๅท๏ผๅฆ +8613800138000๏ผ',
- 'profile.notifications.phoneHint': '้่ฆ็ฎก็ๅ้
็ฝฎ Twilio ๆๅกๅๆ่ฝไฝฟ็จ็ญไฟก้็ฅ',
- 'profile.notifications.discordWebhook': 'Discord Webhook',
- 'profile.notifications.discordPlaceholder': 'https://discord.com/api/webhooks/...',
- 'profile.notifications.discordHint': 'ๅจ Discord ๆๅกๅจ่ฎพ็ฝฎไธญๅๅปบ Webhook',
- 'profile.notifications.webhookUrl': 'Webhook URL',
- 'profile.notifications.webhookPlaceholder': 'https://your-server.com/webhook',
- 'profile.notifications.webhookHint': '่ชๅฎไน Webhook ๅฐๅ๏ผๅฐไปฅ POST JSON ๆนๅผๆจ้้็ฅ',
- 'profile.notifications.webhookToken': 'Webhook Token๏ผๅฏ้๏ผ',
- 'profile.notifications.webhookTokenPlaceholder': '็จไบ้ช่ฏ่ฏทๆฑ็ Bearer Token',
- 'profile.notifications.webhookTokenHint': 'ๅฐไฝไธบ Authorization: Bearer Token ๅ้ๅฐ Webhook',
- 'profile.notifications.testBtn': 'ๅ้ๆต่ฏ้็ฅ',
- 'profile.notifications.saveSuccess': '้็ฅ่ฎพ็ฝฎไฟๅญๆๅ',
- 'profile.notifications.selectChannel': '่ฏท่ณๅฐ้ๆฉไธไธช้็ฅๆธ ้',
- 'profile.notifications.fillTelegramToken': '่ฏทๅกซๅ Telegram Bot Token',
- 'profile.notifications.fillTelegram': '่ฏทๅกซๅ Telegram Chat ID',
- 'profile.notifications.fillEmail': '่ฏทๅกซๅ้็ฅ้ฎ็ฎฑ',
- 'profile.notifications.testSent': 'ๆต่ฏ้็ฅๅทฒๅ้๏ผ่ฏทๆฃๆฅๆจ็้็ฅๆธ ้',
-
- // User Manage - Credits & VIP
- 'userManage.credits': '็งฏๅ',
- 'userManage.adjustCredits': '่ฐๆด็งฏๅ',
- 'userManage.setVip': '่ฎพ็ฝฎVIP',
- 'userManage.currentCredits': 'ๅฝๅ็งฏๅ',
- 'userManage.newCredits': 'ๆฐ็งฏๅ',
- 'userManage.enterCredits': '่พๅ
ฅๆฐ็็งฏๅๆฐ้',
- 'userManage.creditsNonNegative': '็งฏๅไธ่ฝไธบ่ดๆฐ',
- 'userManage.currentVip': 'ๅฝๅVIP็ถๆ',
- 'userManage.vipActive': 'ๆๆ',
- 'userManage.vipExpired': 'ๅทฒ่ฟๆ',
- 'userManage.vipDays': 'VIPๅคฉๆฐ',
- 'userManage.vipExpiresAt': 'VIP่ฟๆๆถ้ด',
- 'userManage.cancelVip': 'ๅๆถVIP',
- 'userManage.days': 'ๅคฉ',
- 'userManage.customDate': '่ชๅฎไนๆฅๆ',
- 'userManage.selectDate': '่ฏท้ๆฉๆฅๆ',
- 'userManage.remark': 'ๅคๆณจ',
- 'userManage.remarkPlaceholder': 'ๅฏ้ๅคๆณจ',
- 'userManage.tabUsers': '็จๆท็ฎก็',
-
- // System Overview (Admin)
- 'systemOverview.tabTitle': '็ณป็ปๆป่ง',
- 'systemOverview.totalStrategies': '็ญ็ฅๆปๆฐ',
- 'systemOverview.runningStrategies': '่ฟ่กไธญ',
- 'systemOverview.totalCapital': 'ๆป่ต้',
- 'systemOverview.totalPnl': 'ๆป็ไบ',
- 'systemOverview.filterAll': 'ๅ
จ้จ็ถๆ',
- 'systemOverview.filterRunning': '่ฟ่กไธญ',
- 'systemOverview.filterStopped': 'ๅทฒๅๆญข',
- 'systemOverview.searchPlaceholder': 'ๆ็ดข็ญ็ฅๅ/ไบคๆๅฏน/็จๆทๅ',
- 'systemOverview.running': '่ฟ่กไธญ',
- 'systemOverview.stopped': 'ๅทฒๅๆญข',
- 'systemOverview.colUser': '็จๆท',
- 'systemOverview.colStrategy': '็ญ็ฅๅ็งฐ',
- 'systemOverview.colStatus': '็ถๆ',
- 'systemOverview.colSymbol': 'ไบคๆๅฏน',
- 'systemOverview.colCapital': '่ต้',
- 'systemOverview.colPnl': '็ไบ / ROI',
- 'systemOverview.colPositions': 'ๆไป',
- 'systemOverview.colTrades': 'ไบคๆๆฌกๆฐ',
- 'systemOverview.colIndicator': 'ๆๆ ',
- 'systemOverview.colExchange': 'ไบคๆๆ',
- 'systemOverview.colTimeframe': 'ๅจๆ',
- 'systemOverview.colLeverage': 'ๆ ๆ',
- 'systemOverview.colCreatedAt': 'ๅๅปบๆถ้ด',
- 'systemOverview.realized': 'ๅทฒๅฎ็ฐ',
- 'systemOverview.unrealized': 'ๆชๅฎ็ฐ',
- 'systemOverview.symbols': 'ไธชไบคๆๅฏน',
- 'systemOverview.live': 'ๅฎ็',
- 'systemOverview.signal': 'ไป
้็ฅ',
-
- // Settings - Billing
- 'settings.group.billing': '่ฎก่ดน้
็ฝฎ',
- 'settings.field.BILLING_ENABLED': 'ๅฏ็จ่ฎก่ดน',
- 'settings.field.BILLING_VIP_BYPASS': 'VIPๆ่ทฏ๏ผๆง๏ผ',
- 'settings.field.BILLING_COST_AI_ANALYSIS': 'AIๅๆๆถ่',
- 'settings.field.BILLING_COST_STRATEGY_RUN': '็ญ็ฅ่ฟ่กๆถ่',
- 'settings.field.BILLING_COST_BACKTEST': 'ๅๆตๆถ่',
- 'settings.field.BILLING_COST_PORTFOLIO_MONITOR': 'Portfolio็ๆงๆถ่',
- 'settings.field.CREDITS_REGISTER_BONUS': 'ๆณจๅๅฅๅฑ',
- 'settings.field.CREDITS_REFERRAL_BONUS': '้่ฏทๅฅๅฑ',
- 'settings.field.RECHARGE_TELEGRAM_URL': 'ๅ
ๅผTelegram้พๆฅ',
- 'settings.field.MEMBERSHIP_MONTHLY_PRICE_USD': 'ๅ
ๆไผๅไปทๆ ผ๏ผUSD๏ผ',
- 'settings.field.MEMBERSHIP_MONTHLY_CREDITS': 'ๅ
ๆไผๅ่ต ้็งฏๅ',
- 'settings.field.MEMBERSHIP_YEARLY_PRICE_USD': 'ๅ
ๅนดไผๅไปทๆ ผ๏ผUSD๏ผ',
- 'settings.field.MEMBERSHIP_YEARLY_CREDITS': 'ๅ
ๅนดไผๅ่ต ้็งฏๅ',
- 'settings.field.MEMBERSHIP_LIFETIME_PRICE_USD': 'ๆฐธไน
ไผๅไปทๆ ผ๏ผUSD๏ผ',
- 'settings.field.MEMBERSHIP_LIFETIME_MONTHLY_CREDITS': 'ๆฐธไน
ไผๅๆฏๆ่ต ้็งฏๅ',
- 'settings.field.USDT_PAY_ENABLED': 'ๅฏ็จUSDTๆถๆฌพ',
- 'settings.field.USDT_PAY_CHAIN': 'USDT็ฝ็ป',
- 'settings.field.USDT_TRC20_XPUB': 'TRC20 XPUB๏ผไป
่งๅฏ๏ผ',
- 'settings.field.USDT_TRC20_CONTRACT': 'USDT TRC20 ๅ็บฆๅฐๅ',
- 'settings.field.TRONGRID_BASE_URL': 'TronGrid Base URL',
- 'settings.field.TRONGRID_API_KEY': 'TronGrid API Key',
- 'settings.field.USDT_PAY_CONFIRM_SECONDS': '็กฎ่ฎคๅปถ่ฟ๏ผ็ง๏ผ',
- 'settings.field.USDT_PAY_EXPIRE_MINUTES': '่ฎขๅ่ฟๆ๏ผๅ้๏ผ',
- 'settings.desc.BILLING_ENABLED': 'ๅฏ็จ่ฎก่ดน็ณป็ปใๅฏ็จๅ๏ผ็จๆทไฝฟ็จๆไบๅ่ฝ้่ฆๆถ่็งฏๅ',
- 'settings.desc.BILLING_VIP_BYPASS': 'ๆงๅผๅ
ณ๏ผๅผๅฏๅVIPๅฐๆ่ทฏๆๆๅ่ฝๆฃ็งฏๅ๏ผไธๆจ่๏ผใๅปบ่ฎฎๅ
ณ้ญ๏ผVIPไป
็จไบโVIPๅ
่ดนๆๆ โใ',
- 'settings.desc.BILLING_COST_AI_ANALYSIS': 'ๆฏๆฌกAIๅๆๆถ่็็งฏๅๆฐ',
- 'settings.desc.BILLING_COST_STRATEGY_RUN': 'ๅฏๅจ็ญ็ฅๆถๆถ่็็งฏๅๆฐ',
- 'settings.desc.BILLING_COST_BACKTEST': 'ๆฏๆฌกๅๆตๆถ่็็งฏๅๆฐ',
- 'settings.desc.BILLING_COST_PORTFOLIO_MONITOR': 'ๆฏๆฌกPortfolio AI็ๆงๆถ่็็งฏๅๆฐ',
- 'settings.desc.CREDITS_REGISTER_BONUS': 'ๆฐ็จๆทๆณจๅๆถ่ทๅพ็็งฏๅๅฅๅฑ',
- 'settings.desc.CREDITS_REFERRAL_BONUS': '็จๆท้่ฟ้่ฏท้พๆฅๆๅ้่ฏทๆฐ็จๆทๆถ๏ผ้่ฏทไบบ่ทๅพ็็งฏๅๅฅๅฑ',
- 'settings.desc.VERIFICATION_CODE_MAX_ATTEMPTS': '้ช่ฏ็ ้ช่ฏๅคฑ่ดฅ็ๆๅคงๅฐ่ฏๆฌกๆฐ๏ผ่ถ
่ฟๅๅฐ้ๅฎ',
- 'settings.desc.VERIFICATION_CODE_LOCK_MINUTES': '้ช่ฏ็ ้ช่ฏๅคฑ่ดฅๆฌกๆฐ่ถ
่ฟ้ๅถๅ็้ๅฎๆถ้ฟ๏ผๅ้๏ผ',
- 'settings.desc.RECHARGE_TELEGRAM_URL': '็จๆท็นๅปๅ
ๅผๆถ่ทณ่ฝฌ็Telegramๅฎขๆ้พๆฅ',
- 'settings.desc.MEMBERSHIP_MONTHLY_PRICE_USD': 'ๅ
ๆไผๅ็ไปทๆ ผ๏ผUSD๏ผใๅฝๅไธบๆจกๆๆฏไป๏ผๅ็ปญๅฏๆฅๅ
ฅ็ๅฎๆฏไป็ฝๅ
ณใ',
- 'settings.desc.MEMBERSHIP_MONTHLY_CREDITS': '่ดญไนฐๅ
ๆไผๅๅ็ซๅณ่ต ้ๅฐ่ดฆๅท็็งฏๅๆฐ้ใ',
- 'settings.desc.MEMBERSHIP_YEARLY_PRICE_USD': 'ๅ
ๅนดไผๅ็ไปทๆ ผ๏ผUSD๏ผใๅฝๅไธบๆจกๆๆฏไป๏ผๅ็ปญๅฏๆฅๅ
ฅ็ๅฎๆฏไป็ฝๅ
ณใ',
- 'settings.desc.MEMBERSHIP_YEARLY_CREDITS': '่ดญไนฐๅ
ๅนดไผๅๅ็ซๅณ่ต ้ๅฐ่ดฆๅท็็งฏๅๆฐ้ใ',
- 'settings.desc.MEMBERSHIP_LIFETIME_PRICE_USD': 'ๆฐธไน
ไผๅ็ไปทๆ ผ๏ผUSD๏ผใๅฝๅไธบๆจกๆๆฏไป๏ผๅ็ปญๅฏๆฅๅ
ฅ็ๅฎๆฏไป็ฝๅ
ณใ',
- 'settings.desc.MEMBERSHIP_LIFETIME_MONTHLY_CREDITS': 'ๆฐธไน
ไผๅๆฏ30ๅคฉ่ชๅจๅๆพไธๆฌก็็งฏๅๆฐ้๏ผ้ฆๆฌก่ดญไนฐไผ็ซๅปๅๆพไธๆฌก๏ผใ',
- 'settings.desc.USDT_PAY_ENABLED': 'ๅผๅฏๅ๏ผไผๅ่ดญไนฐ้กตไผๆไพ USDT ๆซ็ ๆฏไป๏ผๆฏๅ็ฌ็ซๅฐๅ + ่ชๅจๅฏน่ดฆ๏ผใ',
- 'settings.desc.USDT_PAY_CHAIN': 'ๅฝๅ็ๆฌไป
ๆฏๆ TRC20ใ',
- 'settings.desc.USDT_TRC20_XPUB': 'ไป
่งๅฏ xpub๏ผ็จไบๆดพ็ๆฏไธช่ฎขๅ็ๆถๆฌพๅฐๅใไธ่ฆๅกซๅ็ง้ฅ/ๅฉ่ฎฐ่ฏใ',
- 'settings.desc.USDT_TRC20_CONTRACT': 'TRON ้พไธ USDT ๅ็บฆๅฐๅ๏ผ้ป่ฎคๅทฒๅกซๅ๏ผใ',
- 'settings.desc.TRONGRID_BASE_URL': 'TronGrid API ๅบ็กๅฐๅ๏ผ้ป่ฎคๅณๅฏ๏ผใ',
- 'settings.desc.TRONGRID_API_KEY': 'ๅฏ้ใ็จไบๆ้ซ TronGrid ่ฐ็จ้ขๅบฆ/็จณๅฎๆงใ',
- 'settings.desc.USDT_PAY_CONFIRM_SECONDS': 'ๆฃๆตๅฐๅฐ่ดฆๅ๏ผ็ญๅพ
ๆๅฎ็งๆฐๅๆ ่ฎฐโ็กฎ่ฎคโ๏ผ้ไฝๆ็ซฏๅๆป้ฃ้ฉใ',
- 'settings.desc.USDT_PAY_EXPIRE_MINUTES': '็จๆทๆซ็ ๆฏไป็่ฎขๅๆๆๆ๏ผ่ฟๆๅ้้ๆฐ็ๆ่ฎขๅใ',
-
- // Global Market
- 'globalMarket.title': 'ๅ
จ็้่้ขๆฟ',
- 'globalMarket.fearGreedShort': 'ๆ่ดช',
- 'globalMarket.calendar': '่ดข็ปๆฅๅ',
- 'globalMarket.lastUpdate': 'ๆๅๆดๆฐ',
- 'globalMarket.refresh': 'ๅทๆฐๆฐๆฎ',
- 'globalMarket.name': 'ๅ็งฐ',
- 'globalMarket.price': 'ไปทๆ ผ',
- 'globalMarket.change': 'ๆถจ่ท',
- 'globalMarket.trend': '่ตฐๅฟ',
- 'globalMarket.pair': '่ดงๅธๅฏน',
- 'globalMarket.unit': 'ๅไฝ',
- 'globalMarket.refreshSuccess': 'ๆฐๆฎๅทๆฐๆๅ',
- 'globalMarket.refreshError': 'ๆฐๆฎๅทๆฐๅคฑ่ดฅ',
- 'globalMarket.fetchError': '่ทๅๆฐๆฎๅคฑ่ดฅ',
- 'globalMarket.loading': 'ๅ ่ฝฝไธญ...',
- 'globalMarket.fearGreedIndex': 'ๆๆง่ดชๅฉชๆๆฐ',
- 'globalMarket.fearGreedTip': 'ๆๆง่ดชๅฉชๆๆฐ่กก้ๅธๅบๆ
็ปช๏ผ0่กจ็คบๆๅบฆๆๆง๏ผ100่กจ็คบๆๅบฆ่ดชๅฉช',
- 'globalMarket.volatilityIndex': 'ๆณขๅจ็ๆๆฐ',
- 'globalMarket.dollarIndex': '็พๅ
ๆๆฐ',
- 'globalMarket.majorIndices': 'ไธป่ฆๆๆฐ',
- 'globalMarket.vixTitle': 'VIX ๆณขๅจ็ๆๆฐ',
- 'globalMarket.vixTip': 'VIXๆๆฐ่กก้ๅธๅบ้ขๆๆณขๅจ็๏ผๆฐๅผ่ถ้ซ่กจ็คบๅธๅบ่ถๆๆ
',
- 'globalMarket.extremeFear': 'ๆๅบฆๆๆง',
- 'globalMarket.fear': 'ๆๆง',
- 'globalMarket.neutral': 'ไธญๆง',
- 'globalMarket.greed': '่ดชๅฉช',
- 'globalMarket.extremeGreed': 'ๆๅบฆ่ดชๅฉช',
- 'globalMarket.marketOverview': 'ๅ
จ็ๅธๅบๆฆ่ง',
- 'globalMarket.indices': 'ไธป่ฆๆๆฐ',
- 'globalMarket.forex': 'ๅคๆฑๅธๅบ',
- 'globalMarket.crypto': 'ๅ ๅฏ่ดงๅธ',
- 'globalMarket.commodities': 'ๅคงๅฎๅๅ',
- 'globalMarket.heatmap': 'ๅธๅบ็ญๅๅพ',
- 'globalMarket.cryptoHeatmap': 'ๅ ๅฏ่ดงๅธ',
- 'globalMarket.commoditiesHeatmap': 'ๅคงๅฎๅๅ',
- 'globalMarket.sectorHeatmap': 'ๆฟๅ',
- 'globalMarket.forexHeatmap': 'ๅคๆฑ',
- 'globalMarket.opportunities': 'ไบคๆๆบไผ',
- 'globalMarket.noOpportunities': 'ๆๆ ๆๆพไบคๆๆบไผ',
- 'globalMarket.financialNews': '่ดข็ป่ต่ฎฏ',
- 'globalMarket.noNews': 'ๆๆ ๆฐ้ป',
- 'globalMarket.economicCalendar': '่ดข็ปๆฅๅ',
- 'globalMarket.noEvents': 'ๆๆ ไบไปถ',
- 'globalMarket.actual': 'ๅฎ้
',
- 'globalMarket.forecast': '้ขๆ',
- 'globalMarket.previous': 'ๅๅผ',
- 'globalMarket.signal.bullish': '็ๆถจ่ถๅฟ',
- 'globalMarket.signal.bearish': '็่ท่ถๅฟ',
- 'globalMarket.signal.overbought': '่ถ
ไนฐ่ญฆๅ',
- 'globalMarket.signal.oversold': '่ถ
ๅๆบไผ',
- 'globalMarket.worldMap': 'ๅ
จ็ๅธๅบๅฐๅพ',
- 'globalMarket.rising': 'ไธๆถจ',
- 'globalMarket.falling': 'ไธ่ท',
- 'globalMarket.bullish': 'ๅฉๅค',
- 'globalMarket.bearish': 'ๅฉ็ฉบ',
- 'globalMarket.expectedImpact': '้ขๆๅฝฑๅ',
- 'globalMarket.aboveForecast': '้ซไบ้ขๆ',
- 'globalMarket.belowForecast': 'ไฝไบ้ขๆ',
- 'globalMarket.upcomingEvents': 'ๅณๅฐๅ
ฌๅธ',
- 'globalMarket.releasedEvents': 'ๅทฒๅ
ฌๅธๆฐๆฎ',
-
- // Trading Assistant
- 'trading-assistant.form.notificationFromProfile': '้็ฅๅฐๅ้ๅฐๆจๅจไธชไบบไธญๅฟ้
็ฝฎ็ๅฐๅใ',
- 'trading-assistant.form.notificationConfigMissing': 'ๆจ้ไธญ็ๆธ ้่ฟๆช้
็ฝฎๅๆฐ๏ผ{channels}๏ผ๏ผๅฐๆ ๆณๆฅๆถ้็ฅใ่ฏทๅๅพไธชไบบไธญๅฟ่ฟ่ก้
็ฝฎใ',
- 'trading-assistant.form.goToProfile': 'ๅๅพ้
็ฝฎ',
-
- // Indicator Community
- 'community.title': 'ๆๆ ๅธๅบ',
- 'community.searchPlaceholder': 'ๆ็ดขๆๆ ๅ็งฐๆๆ่ฟฐ...',
- 'community.all': 'ๅ
จ้จ',
- 'community.freeOnly': 'ๅ
่ดน',
- 'community.paidOnly': 'ไป่ดน',
- 'community.sortNewest': 'ๆๆฐๅๅธ',
- 'community.sortHot': 'ๆ็ญ้จ',
- 'community.sortRating': '่ฏๅๆ้ซ',
- 'community.sortPriceLow': 'ไปทๆ ผไปไฝๅฐ้ซ',
- 'community.sortPriceHigh': 'ไปทๆ ผไป้ซๅฐไฝ',
- 'community.myPurchases': 'ๆ็่ดญไนฐ',
- 'community.noIndicators': 'ๆๆ ๆๆ ',
- 'community.createFirst': 'ๅๅธ็ฌฌไธไธชๆๆ ',
- 'community.total': 'ๅ
ฑ',
- 'community.items': 'ไธช',
- 'community.free': 'ๅ
่ดน',
- 'community.credits': '็งฏๅ',
- 'community.myIndicator': 'ๆ็ๆๆ ',
- 'community.purchased': 'ๅทฒ่ดญไนฐ',
- 'community.noDescription': 'ๆๆ ๆ่ฟฐ',
- 'community.loadFailed': 'ๅ ่ฝฝๅคฑ่ดฅ',
- 'community.publishedAt': 'ๅๅธไบ',
- 'community.downloads': '่ทๅ',
- 'community.rating': '่ฏๅ',
- 'community.views': 'ๆต่ง',
- 'community.description': 'ๆๆ ่ฏดๆ',
- 'community.performance': 'ๅฎ็่กจ็ฐ',
- 'community.strategyCount': 'ไฝฟ็จ็ญ็ฅๆฐ',
- 'community.tradeCount': 'ไบคๆๆฌกๆฐ',
- 'community.winRate': '่็',
- 'community.totalProfit': 'ๆปๆถ็',
- 'community.reviews': '็จๆท่ฏไปท',
- 'community.useNow': '็ซๅณไฝฟ็จ',
- 'community.getFree': 'ๅ
่ดน่ทๅ',
- 'community.buyNow': '็ซๅณ่ดญไนฐ',
- 'community.purchaseSuccess': '่ดญไนฐๆๅ๏ผๆๆ ๅทฒๆทปๅ ๅฐๆจ็ๆๆ ๅ่กจ',
- 'community.purchaseFailed': '่ดญไนฐๅคฑ่ดฅ',
- 'community.indicator_not_found': 'ๆๆ ไธๅญๅจๆๅทฒไธๆถ',
- 'community.cannot_buy_own': 'ไธ่ฝ่ดญไนฐ่ชๅทฑ็ๆๆ ',
- 'community.already_purchased': 'ๆจๅทฒ่ดญไนฐ่ฟๆญคๆๆ ',
- 'community.insufficient_credits': '็งฏๅไธ่ถณ',
- 'community.commentSuccess': '่ฏ่ฎบๆๅ',
- 'community.commentFailed': '่ฏ่ฎบๅคฑ่ดฅ',
- 'community.commentUpdateSuccess': '่ฏ่ฎบไฟฎๆนๆๅ',
- 'community.commentUpdateFailed': '่ฏ่ฎบไฟฎๆนๅคฑ่ดฅ๏ผ่ฏท้่ฏ',
- 'community.editComment': '็ผ่พ่ฏ่ฎบ',
- 'community.cancelEdit': 'ๅๆถ',
- 'community.updateComment': 'ๆดๆฐ่ฏ่ฎบ',
- 'community.alreadyCommented': 'ๆจๅทฒ่ฏ่ฎบๆญคๆๆ ',
- 'community.editMyComment': 'ไฟฎๆน่ฏ่ฎบ',
- 'community.me': 'ๆ',
- 'community.edited': 'ๅทฒ็ผ่พ',
- 'community.not_purchased': '่ฏทๅ
่ดญไนฐ/่ทๅๆๆ ๆ่ฝ่ฏ่ฎบ',
- 'community.cannot_comment_own': 'ไธ่ฝ่ฏ่ฎบ่ชๅทฑ็ๆๆ ',
- 'community.already_commented': 'ๆจๅทฒ็ป่ฏ่ฎบ่ฟๆญคๆๆ ',
- 'community.noComments': 'ๆๆ ่ฏ่ฎบ',
- 'community.yourRating': 'ๆจ็่ฏๅ',
- 'community.commentPlaceholder': 'ๅไบซๆจ็ไฝฟ็จไฝ้ช...',
- 'community.submitComment': 'ๆไบค่ฏ่ฎบ',
- 'community.pleaseRate': '่ฏทๅ
้ๆฉ่ฏๅ',
- 'community.loadMore': 'ๅ ่ฝฝๆดๅค',
- 'community.justNow': 'ๅๅ',
- 'community.minutesAgo': 'ๅ้ๅ',
- 'community.hoursAgo': 'ๅฐๆถๅ',
- 'community.daysAgo': 'ๅคฉๅ',
- 'community.noPurchases': 'ๆๆ ่ดญไนฐ่ฎฐๅฝ',
- 'community.purchasedFrom': 'ๅๅฎถ',
- 'community.purchaseTime': '่ดญไนฐๆถ้ด',
-
- // ็ฎก็ๅๅฎกๆ ธๅ่ฝ
- 'community.admin.reviewTab': 'ๅฎกๆ ธ็ฎก็',
- 'community.admin.pending': 'ๅพ
ๅฎกๆ ธ',
- 'community.admin.approved': 'ๅทฒ้่ฟ',
- 'community.admin.rejected': 'ๅทฒๆ็ป',
- 'community.admin.noItems': 'ๆๆ ่ฎฐๅฝ',
- 'community.admin.noDescription': 'ๆ ๆ่ฟฐ',
- 'community.admin.viewCode': 'ๆฅ็ไปฃ็ ',
- 'community.admin.note': 'ๅฎกๆ ธๅคๆณจ',
- 'community.admin.approve': '้่ฟ',
- 'community.admin.reject': 'ๆ็ป',
- 'community.admin.unpublish': 'ไธๆถ',
- 'community.admin.delete': 'ๅ ้ค',
- 'community.admin.deleteConfirm': '็กฎๅฎ่ฆๅ ้คๆญคๆๆ ๅ๏ผๆญคๆไฝไธๅฏๆค้ใ',
- 'community.admin.unpublishConfirm': '็กฎๅฎ่ฆไธๆถๆญคๆๆ ๅ๏ผ',
- 'community.admin.unpublishHint': 'ไธๆถๅ่ฏฅๆๆ ๅฐไธๅๅจๅธๅบๆพ็คบ',
- 'community.admin.confirm': '็กฎๅฎ',
- 'community.admin.cancel': 'ๅๆถ',
- 'community.admin.approveTitle': '้่ฟๅฎกๆ ธ',
- 'community.admin.rejectTitle': 'ๆ็ปๅฎกๆ ธ',
- 'community.admin.noteLabel': 'ๅฎกๆ ธๅคๆณจ๏ผๅฏ้๏ผ',
- 'community.admin.notePlaceholder': '่ฏท่พๅ
ฅๅฎกๆ ธๅคๆณจ...',
- 'community.admin.loadFailed': 'ๅ ่ฝฝๅคฑ่ดฅ',
- 'community.admin.reviewSuccess': 'ๅฎกๆ ธๆๅ',
- 'community.admin.reviewFailed': 'ๅฎกๆ ธๅคฑ่ดฅ',
- 'community.admin.unpublishSuccess': 'ไธๆถๆๅ',
- 'community.admin.unpublishFailed': 'ไธๆถๅคฑ่ดฅ',
- 'community.admin.deleteSuccess': 'ๅ ้คๆๅ',
- 'community.admin.deleteFailed': 'ๅ ้คๅคฑ่ดฅ',
-
- // Fast Analysis (ๅฟซ้AIๅๆ)
- 'fastAnalysis.aiAnalysis': 'AI ๆบ่ฝๅๆ',
- 'fastAnalysis.analyzing': 'AI ๆญฃๅจๅๆไธญ...',
- 'fastAnalysis.pleaseWait': '่ฏท็จๅ๏ผๆญฃๅจ่ทๅๅฎๆถๆฐๆฎๅนถ็ๆไธไธๆฅๅ',
- 'fastAnalysis.error': 'ๅๆๅคฑ่ดฅ',
- 'fastAnalysis.retry': '้่ฏ',
- 'fastAnalysis.selectSymbol': '้ๆฉๆ ็ๅผๅงๅๆ',
- 'fastAnalysis.selectHint': 'ไปๅทฆไพง่ช้ๅ่กจ้ๆฉๆๆทปๅ ๆฐๆ ็',
- 'fastAnalysis.confidence': '็ฝฎไฟกๅบฆ',
- 'fastAnalysis.currentPrice': 'ๅฝๅไปทๆ ผ',
- 'fastAnalysis.entryPrice': 'ๅปบ่ฎฎๅ
ฅๅบ',
- 'fastAnalysis.stopLoss': 'ๆญขๆไปท',
- 'fastAnalysis.takeProfit': 'ๆญข็็ฎๆ ',
- 'fastAnalysis.stopLossHint': 'ๅบไบ2ๅATRๅๆฏๆไฝ่ฎก็ฎ',
- 'fastAnalysis.takeProfitHint': 'ๅบไบ3ๅATRๅ้ปๅไฝ่ฎก็ฎ',
- 'fastAnalysis.atrBased': 'ๅบไบATRๆณขๅจ็',
- 'fastAnalysis.riskReward': '้ฃ้ฉๅๆฅๆฏ',
- 'fastAnalysis.technical': 'ๆๆฏ้ข',
- 'fastAnalysis.fundamental': 'ๅบๆฌ้ข',
- 'fastAnalysis.sentiment': 'ๆ
็ปช้ข',
- 'fastAnalysis.overall': '็ปผๅ่ฏๅ',
- 'fastAnalysis.keyReasons': 'ๆ ธๅฟ็็ฑ',
- 'fastAnalysis.risks': '้ฃ้ฉๆ็คบ',
- 'fastAnalysis.indicators': 'ๆๆฏๆๆ ',
- 'fastAnalysis.maTrend': 'ๅ็บฟ่ถๅฟ',
- 'fastAnalysis.support': 'ๆฏๆไฝ',
- 'fastAnalysis.resistance': '้ปๅไฝ',
- 'fastAnalysis.volatility': 'ๆณขๅจๆง',
- 'fastAnalysis.wasHelpful': '่ฟๆฌกๅๆๅฏนๆจๆๅธฎๅฉๅ๏ผ',
- 'fastAnalysis.helpful': 'ๆๅธฎๅฉ',
- 'fastAnalysis.notHelpful': '้ๆน่ฟ',
- 'fastAnalysis.feedbackThanks': 'ๆ่ฐขๆจ็ๅ้ฆ๏ผ',
- 'fastAnalysis.feedbackFailed': 'ๅ้ฆๆไบคๅคฑ่ดฅ',
- 'fastAnalysis.feedbackUnavailable': 'ๅ้ฆๅ่ฝๆไธๅฏ็จ๏ผ่ฏท้ๆฐๅๆๅ้่ฏ',
- 'fastAnalysis.analysisTime': 'ๅๆ่ๆถ',
- 'fastAnalysis.startAnalysis': 'ๅผๅงๅๆ',
- 'fastAnalysis.history': 'ๅๅฒ่ฎฐๅฝ',
- 'fastAnalysis.systemTitle': 'QUANTDINGER AI',
- 'fastAnalysis.systemOnline': '็ณป็ปๅจ็บฟ',
- 'fastAnalysis.version': 'ๅฟซ้็',
- 'fastAnalysis.preparing': 'ๅๅคไธญ...',
- 'fastAnalysis.step1': '่ทๅๅฎๆถๆฐๆฎ',
- 'fastAnalysis.step2': '่ฎก็ฎๆๆฏๆๆ ',
- 'fastAnalysis.step3': 'AIๆทฑๅบฆๅๆ',
- 'fastAnalysis.step4': '็ๆไธไธๆฅๅ',
-
- // ่ฏฆ็ปๅๆๆ ้ข
- 'fastAnalysis.technicalAnalysis': 'ๆๆฏ้ขๅๆ',
- 'fastAnalysis.fundamentalAnalysis': 'ๅบๆฌ้ขๅๆ',
- 'fastAnalysis.sentimentAnalysis': 'ๅธๅบๆ
็ปชๅๆ',
-
- // ๆๆฏๆๆ ไฟกๅท็ฟป่ฏ
- 'fastAnalysis.signal.bullish': '็ๆถจ',
- 'fastAnalysis.signal.bearish': '็่ท',
- 'fastAnalysis.signal.neutral': 'ไธญๆง',
- 'fastAnalysis.signal.overbought': '่ถ
ไนฐ',
- 'fastAnalysis.signal.oversold': '่ถ
ๅ',
- 'fastAnalysis.signal.strong_bullish': 'ๅผบ็็ๆถจ',
- 'fastAnalysis.signal.strong_bearish': 'ๅผบ็็่ท',
-
- // ่ถๅฟ็ฟป่ฏ
- 'fastAnalysis.trend.uptrend': 'ไธๅ่ถๅฟ',
- 'fastAnalysis.trend.downtrend': 'ไธ้่ถๅฟ',
- 'fastAnalysis.trend.sideways': 'ๆจช็ๆด็',
- 'fastAnalysis.trend.consolidating': '็ๆด',
- 'fastAnalysis.trend.golden_cross': '้ๅ',
- 'fastAnalysis.trend.death_cross': 'ๆญปๅ',
- 'fastAnalysis.trend.strong_uptrend': 'ๅผบๅฟไธๆถจ',
- 'fastAnalysis.trend.strong_downtrend': 'ๅผบๅฟไธ่ท',
-
- // ๆณขๅจๆง็ฟป่ฏ
- 'fastAnalysis.volatilityLevel.high': '้ซ',
- 'fastAnalysis.volatilityLevel.medium': 'ไธญ',
- 'fastAnalysis.volatilityLevel.low': 'ไฝ',
- 'fastAnalysis.volatilityLevel.unknown': 'ๆช็ฅ',
-
- // ๅธๅบๆฆ่ง
- 'fastAnalysis.marketOverview': 'ๅธๅบๆฆ่ง',
- 'fastAnalysis.selectTip': '้ๆฉ่ช้ๅ่กจไธญ็ๆ ็๏ผๅผๅง AI ๆบ่ฝๅๆ',
-
- // ==================== AI ้ๅ ====================
- 'aiQuant.title': 'AI ้ๅ',
- 'aiQuant.strategyList': '็ญ็ฅๅ่กจ',
- 'aiQuant.create': 'ๅๅปบ',
- 'aiQuant.edit': '็ผ่พ',
- 'aiQuant.delete': 'ๅ ้ค',
- 'aiQuant.start': 'ๅฏๅจ',
- 'aiQuant.stop': 'ๅๆญข',
- 'aiQuant.analyze': '็ซๅณๅๆ',
- 'aiQuant.noStrategy': 'ๆๆ ็ญ็ฅ๏ผ็นๅปๅๅปบๅผๅง',
- 'aiQuant.selectStrategy': '่ฏทไปๅทฆไพง้ๆฉไธไธช็ญ็ฅ',
- 'aiQuant.createFirst': 'ๅๅปบ็ฌฌไธไธช็ญ็ฅ',
- 'aiQuant.createStrategy': 'ๅๅปบ็ญ็ฅ',
- 'aiQuant.editStrategy': '็ผ่พ็ญ็ฅ',
- 'aiQuant.confirmDelete': '็กฎๅฎ่ฆๅ ้คๆญค็ญ็ฅๅ๏ผ',
- 'aiQuant.latestAnalysis': 'ๆๆฐๅๆ็ปๆ',
- 'aiQuant.analysisHistory': 'ๅๆๅๅฒ',
- 'aiQuant.decision': 'ๅณ็ญ',
- 'aiQuant.confidence': '็ฝฎไฟกๅบฆ',
- 'aiQuant.currentPrice': 'ๅฝๅไปทๆ ผ',
- 'aiQuant.entryPrice': 'ๅปบ่ฎฎๅ
ฅๅบ',
- 'aiQuant.stopLoss': 'ๆญขๆไปท',
- 'aiQuant.takeProfit': 'ๆญข็ไปท',
- 'aiQuant.reason': '็็ฑ',
- 'aiQuant.analyzedAt': 'ๅๆๆถ้ด',
- 'aiQuant.tradeSettings': 'ไบคๆ่ฎพ็ฝฎ',
- 'aiQuant.minutes': 'ๅ้',
- 'aiQuant.hour': 'ๅฐๆถ',
- 'aiQuant.hours': 'ๅฐๆถ',
-
- // AI้ๅ็ป่ฎก
- 'aiQuant.stats.totalStrategies': '็ญ็ฅๆปๆฐ',
- 'aiQuant.stats.runningStrategies': '่ฟ่กไธญ',
- 'aiQuant.stats.totalAnalyses': 'ๅๆๆฌกๆฐ',
- 'aiQuant.stats.totalPnl': 'ๆป็ไบ',
-
- // AI้ๅ็ถๆ
- 'aiQuant.status.running': '่ฟ่กไธญ',
- 'aiQuant.status.stopped': 'ๅทฒๅๆญข',
- 'aiQuant.status.paused': 'ๅทฒๆๅ',
-
- // AI้ๅๆง่กๆจกๅผ
- 'aiQuant.executionMode.signal': 'ไป
ไฟกๅท',
- 'aiQuant.executionMode.live': 'ๅฎ็ไบคๆ',
-
- // AI้ๅๅธๅบ็ฑปๅ
- 'aiQuant.marketType.spot': '็ฐ่ดง',
- 'aiQuant.marketType.futures': 'ๅ็บฆ',
-
- // AI้ๅๅญๆฎต
- 'aiQuant.field.strategyName': '็ญ็ฅๅ็งฐ',
- 'aiQuant.field.market': 'ๅธๅบ',
- 'aiQuant.field.symbol': 'ไบคๆๅฏน',
- 'aiQuant.field.marketType': 'ๅธๅบ็ฑปๅ',
- 'aiQuant.field.aiModel': 'AI ๆจกๅ',
- 'aiQuant.field.interval': 'ๅๆ้ด้',
- 'aiQuant.field.aiPrompt': 'AI ๆ็คบ่ฏ',
- 'aiQuant.field.executionMode': 'ๆง่กๆจกๅผ',
- 'aiQuant.field.positionSize': 'ไปไฝๅคงๅฐ',
- 'aiQuant.field.stopLoss': 'ๆญขๆๆฏไพ',
- 'aiQuant.field.takeProfit': 'ๆญข็ๆฏไพ',
- 'aiQuant.field.totalAnalyses': 'ๅๆๆฌกๆฐ',
- 'aiQuant.field.totalTrades': 'ไบคๆๆฌกๆฐ',
- 'aiQuant.field.totalPnl': 'ๆป็ไบ',
-
- // AI้ๅๅ ไฝ็ฌฆ
- 'aiQuant.placeholder.strategyName': '่ฏท่พๅ
ฅ็ญ็ฅๅ็งฐ',
- 'aiQuant.placeholder.market': '่ฏท้ๆฉๅธๅบ',
- 'aiQuant.placeholder.symbol': 'ไพๅฆ: BTC/USDT',
- 'aiQuant.placeholder.aiModel': '้ป่ฎคไฝฟ็จ็ณป็ป้
็ฝฎ',
- 'aiQuant.placeholder.aiPrompt': '่พๅ
ฅๆจ็ไบคๆ็ญ็ฅๆ็คบ่ฏ๏ผไพๅฆ๏ผๅฝRSIไฝไบ30ๆถ่่ไนฐๅ
ฅ...',
-
- // AI้ๅ้ช่ฏๆถๆฏ
- 'aiQuant.validation.strategyName': '่ฏท่พๅ
ฅ็ญ็ฅๅ็งฐ',
- 'aiQuant.validation.market': '่ฏท้ๆฉๅธๅบ',
- 'aiQuant.validation.symbol': '่ฏท่พๅ
ฅไบคๆๅฏน',
-
- // AI้ๅ่กจๆ ผๅ
- 'aiQuant.table.decision': 'ๅณ็ญ',
- 'aiQuant.table.confidence': '็ฝฎไฟกๅบฆ',
- 'aiQuant.table.entryPrice': 'ๅ
ฅๅบไปท',
- 'aiQuant.table.stopLoss': 'ๆญขๆไปท',
- 'aiQuant.table.takeProfit': 'ๆญข็ไปท',
- 'aiQuant.table.time': 'ๆถ้ด',
-
- // AI้ๅๆถๆฏ
- 'aiQuant.msg.createSuccess': '็ญ็ฅๅๅปบๆๅ',
- 'aiQuant.msg.updateSuccess': '็ญ็ฅๆดๆฐๆๅ',
- 'aiQuant.msg.deleteSuccess': '็ญ็ฅๅ ้คๆๅ',
- 'aiQuant.msg.startSuccess': '็ญ็ฅๅทฒๅฏๅจ',
- 'aiQuant.msg.stopSuccess': '็ญ็ฅๅทฒๅๆญข',
- 'aiQuant.msg.analyzeSuccess': 'ๅๆๅฎๆ',
-
- // AI้ๅๆฐๅขๅญๆฎต
- 'aiQuant.field.initialCapital': 'ๆๅ
ฅ่ต้',
- 'aiQuant.field.leverage': 'ๆ ๆๅๆฐ',
- 'aiQuant.field.tradeDirection': 'ไบคๆๆนๅ',
- 'aiQuant.field.trailingStop': '็งปๅจๆญขๆ',
- 'aiQuant.field.trailingStopPct': '็งปๅจๆญขๆๆฏไพ',
- 'aiQuant.direction.long': 'ๅๅค',
- 'aiQuant.direction.short': 'ๅ็ฉบ',
- 'aiQuant.direction.both': 'ๅๅ',
- 'aiQuant.riskControl': '้ฃๆง่ฎพ็ฝฎ',
- 'aiQuant.aiSettings': 'AI่ฎพ็ฝฎ',
- 'aiQuant.systemDefault': '็ณป็ป้ป่ฎค',
- 'aiQuant.placeholder.selectSymbol': 'ไป่ช้ๅ่กจ้ๆฉไบคๆๅฏน',
- 'aiQuant.hint.symbolFromWatchlist': 'ไปๆจ็่ช้ๅ่กจไธญ้ๆฉ๏ผ็ณป็ป่ชๅจ่ฏๅซๅธๅบ็ฑปๅ',
- 'aiQuant.hint.spotLeverageFixed': '็ฐ่ดงๅธๅบๆ ๆๅบๅฎไธบ1x',
- 'aiQuant.hint.stopLossEnforced': 'ๅผบๅถๆญขๆ๏ผAIไธๅฏไฟฎๆน',
- 'aiQuant.hint.takeProfitEnforced': 'ๅผบๅถๆญข็๏ผAIไธๅฏไฟฎๆน',
- 'aiQuant.hint.aiPromptOnly': 'AIไป
ๆ นๆฎๆ็คบ่ฏๅคๆญๆนๅ๏ผไธไผไฟฎๆนๆจ่ฎพ็ฝฎ็้ฃๆงๅๆฐ',
- 'aiQuant.aiLimitWarning': 'AIๆ้้ๅถ',
- 'aiQuant.aiLimitDescription': 'AIๅช่ฝๅคๆญไบคๆๆนๅ(ไนฐๅ
ฅ/ๅๅบ/ๆๆ)๏ผๆ ๆๅๆฐใไธๅ้้ขใๆญข็ๆญขๆ็ญ้ฃๆงๅๆฐ็ฑๆจๅฎๅ
จๆงๅถ๏ผAIๆ ๆณไฟฎๆนใ',
- 'aiQuant.userStopLoss': 'ๆจ็ๆญขๆ',
- 'aiQuant.userTakeProfit': 'ๆจ็ๆญข็',
- 'aiQuant.userLeverage': 'ๆจ็ๆ ๆ',
- 'aiQuant.validation.initialCapital': '่ฏท่พๅ
ฅๆๅ
ฅ่ต้',
- 'aiQuant.table.currentPrice': 'ๅฝๅไปทๆ ผ',
-
- // AI้ๅๆ็คบ่ฏๆจกๆฟ
- 'aiQuant.field.promptTemplate': '็ญ็ฅๆจกๆฟ',
- 'aiQuant.placeholder.selectTemplate': '้ๆฉ้ข่ฎพ็ญ็ฅๆจกๆฟ',
- 'aiQuant.template.default': '๐ ็ปผๅๅๆ๏ผๆจ่๏ผ',
- 'aiQuant.template.trend': '๐ ่ถๅฟ่ท่ธช',
- 'aiQuant.template.swing': '๐ ๆณขๆฎตไบคๆ',
- 'aiQuant.template.news': '๐ฐ ๆฐ้ป้ฉฑๅจ',
- 'aiQuant.template.custom': 'โ๏ธ ่ชๅฎไน',
- 'aiQuant.hint.dataProvided': '็ณป็ป่ชๅจๆไพ๏ผๅฎๆถไปทๆ ผใๆๆฏๆๆ (RSI/MACD/ๅ็บฟ)ใๆ่ฟๆฐ้ปใๅฎ่งๆฐๆฎใAIๅฐๅบไบ่ฟไบๆฐๆฎๅๆจ็ๆ็คบ่ฏๅคๆญๆนๅใ',
- 'aiQuant.hint.liveWarning': 'ๅฎ็ๆจกๅผๅฐไฝฟ็จ็ๅฎ่ต้ไบคๆ๏ผ่ฏท็กฎไฟๅทฒ้
็ฝฎไบคๆๆAPIๅนถๅ
ๅไบ่งฃ้ฃ้ฉ๏ผ',
-
- // ไบคๆๅฉๆ - ๅฎ็ๅ
่ดฃๅฃฐๆ
- 'trading-assistant.liveDisclaimer.title': 'ๅฎ็ไบคๆๅ
่ดฃๅฃฐๆ',
- 'trading-assistant.liveDisclaimer.content': 'ๅฎ็ไบคๆๅญๅจ่พ้ซ้ฃ้ฉ๏ผๅฏ่ฝๅฏผ่ด้จๅๆๅ
จ้จ่ต้ๆๅคฑใๅนณๅฐไธไฟ่ฏๆถ็ใไธๆฟ่ฏบ็ๅฉใไฝ ้่ช่ก่ฏไผฐ้ฃ้ฉๅนถๅฏนไบคๆ็ปๆๆฟๆ
ๅ
จ้จ่ดฃไปปใ',
- 'trading-assistant.liveDisclaimer.agree': 'ๆๅทฒ้
่ฏปๅนถ็่งฃไธ่ฟฐๅ
่ดฃๅฃฐๆ๏ผไป้ๆฉๅผๅฏๅฎ็ไบคๆ',
- 'trading-assistant.liveDisclaimer.required': 'ๅผๅฏๅฎ็ๅ่ฏทๅ
ๅพ้ๅ
่ดฃๅฃฐๆ็กฎ่ฎค',
- 'trading-assistant.liveDisclaimer.blockTitle': '่ฏทๅ
็กฎ่ฎคๅ
่ดฃๅฃฐๆ',
- 'trading-assistant.liveDisclaimer.blockDesc': 'ๅพ้ๅ
่ดฃๅฃฐๆๅๆๅฏ็ปง็ปญ้
็ฝฎๅฎ็่ฟๆฅไธไธๅๅๆฐใ',
-
- // Billing / Membership
- 'menu.billing': 'ไผๅๅ
ๅผ',
- 'billing.title': 'ๅผ้ไผๅ / ๅ
ๅผ็งฏๅ',
- 'billing.desc': '้ๆฉ้ๅไฝ ็ไผๅๅฅ้ค๏ผๅผ้ๅไผ่ต ้็งฏๅใ',
- 'billing.snapshot.credits': 'ๅฝๅ็งฏๅ',
- 'billing.snapshot.vip': 'VIP ็ถๆ',
- 'billing.snapshot.notVip': '้VIP',
- 'billing.snapshot.expires': 'ๅฐๆๆถ้ด',
- 'billing.vipRule.title': 'VIP ๆ็่ฏดๆ',
- 'billing.vipRule.desc': 'VIP ไป
ๆฅๆไธไธช็นๆฎๆ้๏ผๅฏๅ
่ดนไฝฟ็จใVIPๅ
่ดนๆๆ ใใๅ
ถๅฎไป่ดนๅ่ฝ/ๆๆ ไปไผๆญฃๅธธๆฃ็งฏๅใ',
- 'billing.plan.monthly': 'ๅ
ๆไผๅ',
- 'billing.plan.yearly': 'ๅ
ๅนดไผๅ',
- 'billing.plan.lifetime': 'ๆฐธไน
ไผๅ',
- 'billing.perMonth': 'ๆ',
- 'billing.perYear': 'ๅนด',
- 'billing.once': 'ไธๆฌกๆง',
- 'billing.credits': '็งฏๅ',
- 'billing.lifetimeMonthly': 'ๆฏๆ่ต ้',
- 'billing.buyNow': '็ซๅณ่ดญไนฐ',
- 'billing.purchaseSuccess': '่ดญไนฐๆๅ',
- 'billing.purchaseFailed': '่ดญไนฐๅคฑ่ดฅ',
- 'billing.usdt.title': 'USDT ๆซ็ ๆฏไป',
- 'billing.usdt.hintTitle': '่ฏทไฝฟ็จ้ฑๅ
ๆซ็ ๅนถๅฎๆ่ฝฌ่ดฆ',
- 'billing.usdt.hintDesc': '่ฏท็กฎไฟ็ฝ็ปไธ้้ขๆญฃ็กฎ๏ผๅฝๅไป
ๆฏๆ TRC20๏ผใๆฏไปๅฐ่ดฆๅ็ณป็ปไผ่ชๅจๅผ้ไผๅๅนถๅๆพ็งฏๅใ',
- 'billing.usdt.chain': '็ฝ็ป',
- 'billing.usdt.amount': '้้ข',
- 'billing.usdt.address': 'ๆถๆฌพๅฐๅ',
- 'billing.usdt.copyAddress': 'ๅคๅถๅฐๅ',
- 'billing.usdt.copyAmount': 'ๅคๅถ้้ข',
- 'billing.usdt.refresh': 'ๅทๆฐ็ถๆ',
- 'billing.usdt.expires': '่ฟๆๆถ้ด',
- 'billing.usdt.paidSuccess': 'ๆฏไป็กฎ่ฎคๆๅ๏ผๅทฒๅผ้ไผๅ',
- 'billing.usdt.status.pending': '็ญๅพ
ๆฏไป',
- 'billing.usdt.status.paid': 'ๅทฒๆฃๆตๅฐ่ดฆ',
- 'billing.usdt.status.confirmed': 'ๅทฒ็กฎ่ฎค',
- 'billing.usdt.status.expired': 'ๅทฒ่ฟๆ',
- 'billing.usdt.status.cancelled': 'ๅทฒๅๆถ',
- 'billing.usdt.status.failed': 'ๅคฑ่ดฅ',
-
- // Community
- 'community.vipFree': 'VIPๅ
่ดน',
-
- // Indicator publish
- 'dashboard.indicator.publish.vipFree': 'VIPๅ
่ดน',
- 'dashboard.indicator.publish.vipFreeHint': 'ๅผๅฏๅ๏ผVIP็จๆทๅฏๅ
่ดนไฝฟ็จ่ฏฅๆๆ ๏ผ้VIPไป้่ดญไนฐ๏ผใ'
-}
-
-export default {
- ...components,
- ...locale
-}
diff --git a/quantdinger_vue/src/locales/lang/zh-TW.js b/quantdinger_vue/src/locales/lang/zh-TW.js
deleted file mode 100644
index ca38656..0000000
--- a/quantdinger_vue/src/locales/lang/zh-TW.js
+++ /dev/null
@@ -1,2250 +0,0 @@
-import antd from 'ant-design-vue/es/locale-provider/zh_TW'
-import momentTW from 'moment/locale/zh-tw'
-
-const components = {
- antLocale: antd,
- momentName: 'zh-tw',
- momentLocale: momentTW
-}
-
-const locale = {
- // ้็จ
- 'common.confirm': '็ขบๅฎ',
- 'common.cancel': 'ๅๆถ',
- 'common.save': 'ไฟๅญ',
- 'common.delete': 'ๅช้ค',
- 'common.edit': '็ทจ่ผฏ',
- 'common.add': 'ๆทปๅ ',
- 'common.close': '้้',
- 'common.ok': '็ขบๅฎ',
- 'common.actions': 'ๆไฝ',
- 'common.refresh': 'ๅทๆฐ',
- 'submit': 'ๆไบค',
- 'save': 'ไฟๅญ',
- 'submit.ok': 'ๆไบคๆๅ',
- 'save.ok': 'ไฟๅญๆๅ',
- 'menu.welcome': 'ๆญก่ฟ',
- 'menu.home': 'ไธป้ ',
- 'menu.dashboard': 'ๅ่กจ็ค',
- 'menu.dashboard.indicator': 'ๆๆจๅๆ',
- 'menu.dashboard.community': 'ๆๆจ็คพๅ',
- 'menu.dashboard.analysis': 'AI ๅๆ',
- 'menu.dashboard.tradingAssistant': 'ไบคๆๅฉๆ',
- 'menu.dashboard.portfolio': '่ณ็ข็ฃๆธฌ',
- 'menu.settings': '็ณป็ตฑ่จญ็ฝฎ',
- 'menu.dashboard.aiTradingAssistant': 'AIไบคๆๅฉๆ',
- 'menu.dashboard.signalRobot': 'ไฟก่ๆฉๅจไบบ',
- 'menu.dashboard.monitor': '็ฃๆง้ ',
- 'menu.dashboard.workplace': 'ๅทฅไฝ่บ',
- 'menu.form': '่กจๅฎ้ ',
- 'menu.form.basic-form': 'ๅบ็ค่กจๅฎ',
- 'menu.form.step-form': 'ๅๆญฅ่กจๅฎ',
- 'menu.form.step-form.info': 'ๅๆญฅ่กจๅฎ๏ผๅกซๅฏซ่ฝ่ณฌไฟกๆฏ๏ผ',
- 'menu.form.step-form.confirm': 'ๅๆญฅ่กจๅฎ๏ผ็ขบ่ช่ฝ่ณฌไฟกๆฏ๏ผ',
- 'menu.form.step-form.result': 'ๅๆญฅ่กจๅฎ๏ผๅฎๆ๏ผ',
- 'menu.form.advanced-form': '้ซ็ด่กจๅฎ',
- 'menu.list': 'ๅ่กจ้ ',
- 'menu.list.table-list': 'ๆฅ่ฉข่กจๆ ผ',
- 'menu.list.basic-list': 'ๆจๆบๅ่กจ',
- 'menu.list.card-list': 'ๅก็ๅ่กจ',
- 'menu.list.search-list': 'ๆ็ดขๅ่กจ',
- 'menu.list.search-list.articles': 'ๆ็ดขๅ่กจ๏ผๆ็ซ ๏ผ',
- 'menu.list.search-list.projects': 'ๆ็ดขๅ่กจ๏ผ้
็ฎ๏ผ',
- 'menu.list.search-list.applications': 'ๆ็ดขๅ่กจ๏ผๆ็จ๏ผ',
- 'menu.profile': '่ฉณๆ
้ ',
- 'menu.profile.basic': 'ๅบ็ค่ฉณๆ
้ ',
- 'menu.profile.advanced': '้ซ็ด่ฉณๆ
้ ',
- 'menu.result': '็ตๆ้ ',
- 'menu.result.success': 'ๆๅ้ ',
- 'menu.result.fail': 'ๅคฑๆ้ ',
- 'menu.exception': '็ฐๅธธ้ ',
- 'menu.exception.not-permission': '403',
- 'menu.exception.not-find': '404',
- 'menu.exception.server-error': '500',
- 'menu.exception.trigger': '่งธ็ผ้ฏ่ชค',
- 'menu.account': 'ๅไบบ้ ',
- 'menu.account.center': 'ๅไบบไธญๅฟ',
- 'menu.account.settings': 'ๅไบบ่จญ็ฝฎ',
- 'menu.account.trigger': '่งธ็ผๅ ฑ้ฏ',
- 'menu.account.logout': '้ๅบ็ป้',
- 'menu.wallet': 'ๆ็้ขๅ
',
- 'menu.docs': 'ๆๆชไธญๅฟ',
- 'menu.docs.detail': 'ๆๆช่ฉณๆ
',
- 'menu.header.refreshPage': 'ๅทๆฐ้ ้ข',
- 'menu.invite.friends': '้่ซๅฅฝๅ',
- 'app.setting.pagestyle': 'ๆด้ซ้ขจๆ ผ่จญ็ฝฎ',
- 'app.setting.pagestyle.light': 'ไบฎ่ฒ่ๅฎ้ขจๆ ผ',
- 'app.setting.pagestyle.dark': 'ๆ่ฒ่ๅฎ้ขจๆ ผ',
- 'app.setting.pagestyle.realdark': 'ๆ้ปๆจกๅผ',
- 'app.setting.themecolor': 'ไธป้ก่ฒ',
- 'app.setting.navigationmode': 'ๅฐ่ชๆจกๅผ',
- 'app.setting.sidemenu.nav': 'ๅด้ๆฌๅฐ่ช',
- 'app.setting.topmenu.nav': '้ ้จๆฌๅฐ่ช',
- 'app.setting.content-width': 'ๅ
งๅฎนๅๅๅฏฌๅบฆ',
- 'app.setting.content-width.tooltip': '่ฉฒ่จญๅฎๅ
[้ ้จๆฌๅฐ่ช] ๆๆๆ',
- 'app.setting.content-width.fixed': 'ๅบๅฎ',
- 'app.setting.content-width.fluid': 'ๆตๅผ',
- 'app.setting.fixedheader': 'ๅบๅฎ Header',
- 'app.setting.fixedheader.tooltip': 'ๅบๅฎ Header ๆๅฏ้
็ฝฎ',
- 'app.setting.autoHideHeader': 'ไธๆปๆ้ฑ่ Header',
- 'app.setting.fixedsidebar': 'ๅบๅฎๅด้่ๅฎ',
- 'app.setting.sidemenu': 'ๅด้่ๅฎๅธๅฑ',
- 'app.setting.topmenu': '้ ้จ่ๅฎๅธๅฑ',
- 'app.setting.othersettings': 'ๅ
ถไป่จญ็ฝฎ',
- 'app.setting.weakmode': '่ฒๅผฑๆจกๅผ',
- 'app.setting.multitab': 'ๅค้ ็ฑคๆจกๅผ',
- 'app.setting.copy': 'ๆท่ฒ่จญ็ฝฎ',
- 'app.setting.loading': 'ๅ ่ผไธป้กไธญ',
- 'app.setting.copyinfo': 'ๆท่ฒ่จญ็ฝฎๆๅ src/config/defaultSettings.js',
- 'app.setting.copy.success': 'ๅพฉๅถๅฎ็ข',
- 'app.setting.copy.fail': 'ๅพฉๅถๅคฑๆ',
- 'app.setting.theme.switching': 'ๆญฃๅจๅๆไธป้ก๏ผ',
- 'app.setting.production.hint': '้
็ฝฎๆฌๅชๅจ้็ผ็ฐๅข็จๆผ้ ่ฆฝ๏ผ็็ข็ฐๅขไธๆๅฑ็พ๏ผ่ซๆท่ฒๅพๆๅไฟฎๆน้
็ฝฎๆไปถ',
- 'app.setting.themecolor.daybreak': 'ๆๆ่๏ผ้ป่ช๏ผ',
- 'app.setting.themecolor.dust': '่ๆฎ',
- 'app.setting.themecolor.volcano': '็ซๅฑฑ',
- 'app.setting.themecolor.sunset': 'ๆฅๆฎ',
- 'app.setting.themecolor.cyan': 'ๆ้',
- 'app.setting.themecolor.green': 'ๆฅตๅ
็ถ ',
- 'app.setting.themecolor.geekblue': 'ๆฅตๅฎข่',
- 'app.setting.themecolor.purple': '้ฌ็ดซ',
- 'app.setting.tooltip': '้ ้ข่จญ็ฝฎ',
-
- // ้็ฅไธญๅฟ
- 'notice.title': '้็ฅไธญๅฟ',
- 'notice.empty': 'ๆซ็ก้็ฅ',
- 'notice.markAllRead': 'ๅ
จ้จๅทฒ่ฎ',
- 'notice.clear': 'ๆธ
็ฉบ้็ฅ',
- 'notice.close': '้้',
- 'notice.justNow': 'ๅๅ',
- 'notice.minutesAgo': 'ๅ้ๅ',
- 'notice.hoursAgo': 'ๅฐๆๅ',
- 'notice.daysAgo': 'ๅคฉๅ',
- 'notice.detailInfo': '่ฉณ็ดฐไฟกๆฏ',
- 'notice.aiDecision': 'AIๆฑบ็ญ',
- 'notice.confidence': '็ฝฎไฟกๅบฆ',
- 'notice.reasoning': 'ๅๆ็็ฑ',
- 'notice.symbol': 'ๆจ็ไปฃ็ขผ',
- 'notice.currentPrice': '็ถๅๅนๆ ผ',
- 'notice.triggerPrice': '่งธ็ผๅนๆ ผ',
- 'notice.action': 'ๆไฝ',
- 'notice.quantity': 'ๆธ้',
- 'notice.viewPortfolio': 'ๆฅ็ๆๅ',
- 'notice.type.aiMonitor': 'AI็ฃๆง',
- 'notice.type.priceAlert': 'ๅนๆ ผๆ้',
- 'notice.type.signal': 'ไบคๆไฟก่',
- 'notice.type.buy': '่ฒทๅ
ฅไฟก่',
- 'notice.type.sell': '่ณฃๅบไฟก่',
- 'notice.type.hold': 'ๆๆๅปบ่ญฐ',
- 'notice.type.trade': 'ไบคๆๅท่ก',
- 'notice.type.notification': '็ณป็ตฑ้็ฅ',
-
- 'user.login.userName': '็จๆถๅ',
- 'user.login.password': 'ๅฏ็ขผ',
- 'user.login.username.placeholder': '่ณฌๆถ: admin',
- 'user.login.password.placeholder': 'ๅฏ็ขผ: admin or ant.design',
- 'user.login.message-invalid-credentials': '็ป้ๅคฑๆ๏ผ่ซๆชขๆฅ้ต็ฎฑๅ้ฉ่ญ็ขผ',
- 'user.login.message-invalid-verification-code': '้ฉ่ญ็ขผ้ฏ่ชค',
- 'user.login.tab-login-credentials': '่ณฌๆถๅฏ็ขผ็ป้',
- 'user.login.tab-login-email': '้ต็ฎฑ็ป้',
- 'user.login.tab-login-mobile': 'ๆๆฉ่็ป้',
- 'user.login.captcha.placeholder': '่ซ่ผธๅ
ฅๅๅฝข้ฉ่ญ็ขผ',
- 'user.login.mobile.placeholder': 'ๆๆฉ่',
- 'user.login.mobile.verification-code.placeholder': '้ฉ่ญ็ขผ',
- 'user.login.email.placeholder': '่ซ่ผธๅ
ฅ้ต็ฎฑๅฐๅ',
- 'user.login.email.verification-code.placeholder': '่ซ่ผธๅ
ฅ้ฉ่ญ็ขผ',
- 'user.login.email.sending': '้ฉ่ญ็ขผ็ผ้ไธญ...',
- 'user.login.email.send-success-title': 'ๆ็คบ',
- 'user.login.email.send-success': '้ฉ่ญ็ขผ็ผ้ๆๅ๏ผ่ซๆฅๆถ้ตไปถ',
- 'user.login.sms.send-success': '้ฉ่ญ็ขผ็ผ้ๆๅ๏ผ่ซๆฅๆถ็ญไฟก',
- 'user.login.remember-me': '่ชๅ็ป้',
- 'user.login.forgot-password': 'ๅฟ่จๅฏ็ขผ',
- 'user.login.sign-in-with': 'ๅ
ถไป็ป้ๆนๅผ',
- 'user.login.signup': 'ๆณจๅ่ณฌๆถ',
- 'user.login.login': '็ป้',
- 'user.register.register': 'ๆณจๅ',
- 'user.register.email.placeholder': '้ต็ฎฑ',
- 'user.register.password.placeholder': '่ซ่ณๅฐ่ผธๅ
ฅ 6 ๅๅญ็ฌฆใ่ซไธ่ฆไฝฟ็จๅฎนๆ่ขซ็ๅฐ็ๅฏ็ขผใ',
- 'user.register.password.popover-message': '่ซ่ณๅฐ่ผธๅ
ฅ 6 ๅๅญ็ฌฆใ่ซไธ่ฆไฝฟ็จๅฎนๆ่ขซ็ๅฐ็ๅฏ็ขผใ',
- 'user.register.confirm-password.placeholder': '็ขบ่ชๅฏ็ขผ',
- 'user.register.get-verification-code': '็ฒๅ้ฉ่ญ็ขผ',
- 'user.register.sign-in': 'ไฝฟ็จๅทฒๆ่ณฌๆถ็ป้',
- 'user.register-result.msg': 'ไฝ ็่ณฌๆถ๏ผ{email} ๆณจๅๆๅ',
- 'user.register-result.activation-email': 'ๆฟๆดป้ตไปถๅทฒ็ผ้ๅฐไฝ ็้ต็ฎฑไธญ๏ผ้ตไปถๆๆๆ็ฒ24ๅฐๆใ่ซๅๆ็ป้้ต็ฎฑ๏ผ้ปๆ้ตไปถไธญ็้ๆฅๆฟๆดปๅธณๆถใ',
- 'user.register-result.back-home': '่ฟๅ้ฆ้ ',
- 'user.register-result.view-mailbox': 'ๆฅ็้ต็ฎฑ',
- 'user.email.required': '่ซ่ผธๅ
ฅ้ต็ฎฑๅฐๅ๏ผ',
- 'user.email.wrong-format': '้ต็ฎฑๅฐๅๆ ผๅผ้ฏ่ชค๏ผ',
- 'user.userName.required': '่ซ่ผธๅ
ฅๅธณๆถๅๆ้ต็ฎฑๅฐๅ',
- 'user.password.required': '่ซ่ผธๅ
ฅๅฏ็ขผ๏ผ',
- 'user.password.twice.msg': 'ๅ
ฉๆฌก่ผธๅ
ฅ็ๅฏ็ขผไธๅน้
!',
- 'user.password.strength.msg': 'ๅฏ็ขผๅผทๅบฆไธๅค ',
- 'user.password.strength.strong': 'ๅผทๅบฆ๏ผๅผท',
- 'user.password.strength.medium': 'ๅผทๅบฆ๏ผไธญ',
- 'user.password.strength.low': 'ๅผทๅบฆ๏ผไฝ',
- 'user.password.strength.short': 'ๅผทๅบฆ๏ผๅคช็ญ',
- 'user.confirm-password.required': '่ซ็ขบ่ชๅฏ็ขผ๏ผ',
- 'user.phone-number.required': '่ซ่ผธๅ
ฅๆญฃ็ขบ็ๆๆฉ่',
- 'user.phone-number.wrong-format': 'ๆๆฉ่ๆ ผๅผ้ฏ่ชค๏ผ',
- 'user.verification-code.required': '่ซ่ผธๅ
ฅ้ฉ่ญ็ขผ๏ผ',
- 'user.captcha.required': '่ซ่ผธๅ
ฅๅๅฝข้ฉ่ญ็ขผ๏ผ',
- 'user.login.infos': 'QuantDinger ๆฏไธๅ AI ๅคๆบ่ฝ้ซ่ก็ฅจๅๆ่ผๅฉๅทฅๅ
ท๏ผไธๅ
ทๅ่ญๅธๆ่ณ่ซฎ่ฉข่ณ่ณชใๅนณ่บไธญ็ๆๆๅๆ็ตๆใ่ฉๅใๅ่ๆ่ฆๅ็ฑ AI ๅบๆผๆญทๅฒๆธๆ่ชๅ็ๆ๏ผๅ
ไพๅญธ็ฟใ็ ็ฉถ่ๆ่กไบคๆตไฝฟ็จ,ไธๆงๆไปปไฝๆ่ณๅปบ่ญฐๆๆฑบ็ญไพๆใ่ก็ฅจๆ่ณๅญๅจๅธๅ ด้ขจ้ชใๆตๅๆง้ขจ้ชใๆฟ็ญ้ขจ้ช็ญๅค็จฎ้ขจ้ช๏ผๅฏ่ฝๅฐ่ดๆฌ้ๆๅคฑใ็จๆถๆๅบๆผ่ช่บซ้ขจ้ชๆฟๅ่ฝๅ็จ็ซๆฑบ็ญ๏ผไฝฟ็จๆฌๅทฅๅ
ท็ข็็ไปปไฝๆ่ณ่ก็ฒๅๅ
ถๅพๆ็ฑ็จๆถ่ช่กๆฟๆใๅธๅ ดๆ้ขจ้ช๏ผๆ่ณ้่ฌนๆ
ใ',
- 'user.login.tab-login-web3': 'Web3 ็ป้',
- 'user.login.web3.tip': 'ไฝฟ็จ้ขๅ
้ฒ่ก็ฑคๅ็ป้',
- 'user.login.web3.connect': '้ฃๆฅ้ขๅ
ไธฆ็ป้',
- 'user.login.web3.no-wallet': 'ๆชๆชขๆธฌๅฐ้ขๅ
',
- 'user.login.web3.no-address': 'ๆช็ฒๅๅฐ้ขๅ
ๅฐๅ',
- 'user.login.web3.nonce-failed': '็ฒๅ้จๆฉๆธๅคฑๆ',
- 'user.login.web3.verify-failed': '็ฑคๅ้ฉ่ญๅคฑๆ',
- 'user.login.web3.success': '็ป้ๆๅ',
- 'user.login.web3.failed': '้ขๅ
็ป้ๅคฑๆ',
- 'nav.no_wallet': 'ๆชๆชขๆธฌๅฐ้ขๅ
',
- 'nav.copy': 'ๅพฉๅถ',
- 'nav.copy_success': 'ๅพฉๅถๆๅ',
- 'user.login.oauth.google': 'ไฝฟ็จ Google ็ป้',
- 'user.login.oauth.github': 'ไฝฟ็จ GitHub ็ป้',
- 'user.login.oauth.loading': 'ๆญฃๅจ่ทณ่ฝๅฐๆๆฌ้ ้ข...',
- 'user.login.oauth.failed': 'OAuth ็ป้ๅคฑๆ',
- 'user.login.oauth.get-url-failed': '็ฒๅๆๆฌ้ๆฅๅคฑๆ',
- 'user.login.subtitle': '้ฉ
ๅ็ๅ
จ็ๅธๅ ด้ๅๆดๅฏ',
- 'user.login.legal.title': 'ๆณๅพๅ
่ฒฌ่ฒๆ',
- 'user.login.legal.view': 'ๆฅ็ๆณๅพๅ
่ฒฌ่ฒๆ',
- 'user.login.legal.collapse': 'ๆถ่ตทๆณๅพๅ
่ฒฌ่ฒๆ',
- 'user.login.legal.agree': 'ๆๅทฒ้ฑ่ฎไธฆๅๆๆณๅพๅ
่ฒฌ่ฒๆ',
- 'user.login.legal.required': '่ซๅ
้ฑ่ฎไธฆๅพ้ธๆณๅพๅ
่ฒฌ่ฒๆ',
- 'user.login.legal.content': 'QuantDinger ๆฏไธๅ AI ๅคๆบ่ฝ้ซ่ก็ฅจๅๆ่ผๅฉๅทฅๅ
ท๏ผไธๅ
ทๅ่ญๅธๆ่ณ่ซฎ่ฉข่ณ่ณชใๅนณ่บไธญ็ๆๆๅๆ็ตๆใ่ฉๅใๅ่ๆ่ฆๅ็ฑ AI ๅบๆผๆญทๅฒๆธๆ่ชๅ็ๆ๏ผๅ
ไพๅญธ็ฟใ็ ็ฉถ่ๆ่กไบคๆตไฝฟ็จ๏ผไธๆงๆไปปไฝๆ่ณๅปบ่ญฐๆๆฑบ็ญไพๆใ่ก็ฅจๆ่ณๅญๅจๅธๅ ด้ขจ้ชใๆตๅๆง้ขจ้ชใๆฟ็ญ้ขจ้ช็ญๅค็จฎ้ขจ้ช๏ผๅฏ่ฝๅฐ่ดๆฌ้ๆๅคฑใ็จๆถๆๅบๆผ่ช่บซ้ขจ้ชๆฟๅ่ฝๅ็จ็ซๆฑบ็ญ๏ผไฝฟ็จๆฌๅทฅๅ
ท็ข็็ไปปไฝๆ่ณ่ก็ฒๅๅ
ถๅพๆ็ฑ็จๆถ่ช่กๆฟๆใๅธๅ ดๆ้ขจ้ช๏ผๆ่ณ้่ฌนๆ
ใ',
- 'user.login.privacy.title': '็จๆถ้ฑ็งๆขๆฌพ',
- 'user.login.privacy.view': 'ๆฅ็็จๆถ้ฑ็งๆขๆฌพ',
- 'user.login.privacy.collapse': 'ๆถ่ตท็จๆถ้ฑ็งๆขๆฌพ',
- 'user.login.privacy.content': 'ๆๅ้่ฆๆจ็้ฑ็ง่ๆธๆไฟ่ญทใ1) ๆถ้็ฏๅ๏ผๅ
ๆถ้ๅฏฆ็พๅ่ฝๆ้็ไฟกๆฏ๏ผๅฆ้ต็ฎฑใๆๆฉ่ใๅ่ใWeb3 ้ขๅ
ๅฐๅ๏ผไปฅๅๅฟ
่ฆ็ๆฅๅฟ่่จญๅไฟกๆฏใ2) ไฝฟ็จ็ฎ็๏ผ็จๆผ่ณฌๆถ็ป้่ๅฎๅ
จๆ ก้ฉใๆๅๅ่ฝๆไพใๅ้กๆๆฅ่ๅ่ฆ่ฆๆฑใ3) ๅญๅฒ่ๅฎๅ
จ๏ผๆธๆๅ ๅฏๅญๅฒ๏ผไธฆๆกๅๅฟ
่ฆ็ๆฌ้่่จชๅๆงๅถๆชๆฝ๏ผ็กๅ้ฒๆญขๆช็ถๆๆฌ็่จชๅใๆซ้ฒๆไธๅคฑใ4) ๅ
ฑไบซ่็ฌฌไธๆน๏ผ้คๆณๅพๆณ่ฆ่ฆๆฑๆๅฑฅ่กๆๅๆๅฟ
้ๅค๏ผไธๆ่็ฌฌไธๆนๅ
ฑไบซๆจ็ๅไบบไฟกๆฏ๏ผ่ฅๆถๅ็ฌฌไธๆนๆๅ๏ผๅฆ้ขๅ
ใ็ญไฟกๆๅๅ๏ผ๏ผๅ
ๅจๅฏฆ็พๅ่ฝๆ้็ๆๅฐ็ฏๅๅ
ง่็ใ5) Cookies/ๆฌๅฐๅญๅฒ๏ผ็จๆผ็ป้ๆ
่ๅฟ
่ฆ็ๆ่ฉฑ็ถญๆ๏ผๅฆไปค็ใPHPSESSID๏ผ๏ผๆจๅฏๅจ็่ฆฝๅจไธญ้ฒ่กๆธ
็ๆ้ๅถใ6) ๅไบบๆฌๅฉ๏ผๆจๅฏๆ นๆๆณๅพๆณ่ฆ่กไฝฟๆฅ่ฉขใๆดๆญฃใๅช้คใๆคๅๅๆ็ญๆฌๅฉใ7) ่ฎๆด่้็ฅ๏ผๆฌๆขๆฌพๆดๆฐๅพๅฐๅจ้ ้ข้กฏ่ไฝ็ฝฎๆ็คบใ็นผ็บไฝฟ็จๆฌๆๅๅณ่กจ็คบๆจๅทฒ้ฑ่ฎไธฆๅๆๆดๆฐๅ
งๅฎนใ่ฅๆจไธๅๆๆฌๆขๆฌพๆๅ
ถไธญไปปไฝๆดๆฐ๏ผ่ซๅๆญขไฝฟ็จๆฌๆๅไธฆ่ฏ็ณปๆๅใ',
- 'account.basicInfo': 'ๅบ็คไฟกๆฏ',
- 'account.id': '็จๆถID',
- 'account.username': '็จๆถๅ',
- 'account.nickname': 'ๆฑ็จฑ',
- 'account.email': '้ต็ฎฑ',
- 'account.mobile': 'ๆๆฉ่',
- 'account.web3address': '้ขๅ
ๅฐๅ',
- 'account.pid': 'ๆจ่ฆไบบID',
- 'account.level': '็จๆถ็ญ็ด',
- 'account.money': '้ค้ก',
- 'account.qdtBalance': 'QDT ้ค้ก',
- 'account.score': '็ฉๅ',
- 'account.createtime': 'ๆณจๅๆ้',
- 'account.inviteLink': '้่ซ้ๆฅ',
- 'account.recharge': 'ๅ
ๅผ',
- 'account.rechargeTip': '่ซไฝฟ็จๅพฎไฟกๆๆฏไปๅฏถๆๆไธๆนไบ็ถญ็ขผ้ฒ่กๅ
ๅผ',
- 'account.qrCodePlaceholder': 'ไบ็ถญ็ขผไฝไฝ็ฌฆ๏ผๆจกๆฌ๏ผ',
- 'account.rechargeAmount': 'ๅ
ๅผ้้ก',
- 'account.enterAmount': '่ซ่ผธๅ
ฅๅ
ๅผ้้ก',
- 'account.rechargeHint': 'ๆๅฐๅ
ๅผ้้ก๏ผ1 QDT',
- 'account.confirmRecharge': '็ขบ่ชๅ
ๅผ',
- 'account.enterValidAmount': '่ซ่ผธๅ
ฅๆๆ็ๅ
ๅผ้้ก',
- 'account.rechargeSuccess': 'ๅ
ๅผๆๅ๏ผๅทฒๅ
ๅผ {amount} QDT',
- 'account.settings.menuMap.basic': 'ๅบๆฌ่จญ็ฝฎ',
- 'account.settings.menuMap.security': 'ๅฎๅ
จ่จญ็ฝฎ',
- 'account.settings.menuMap.notification': 'ๆฐๆถๆฏ้็ฅ',
- 'account.settings.menuMap.moneyLog': '่ณ้ๆ็ดฐ',
- 'account.moneyLog.empty': 'ๆซ็ก่ณ้ๆ็ดฐ',
- 'account.moneyLog.total': 'ๅ
ฑ {total} ๆข่จ้',
- 'account.moneyLog.type.purchase': '่ณผ่ฒทๆๆจ',
- 'account.moneyLog.type.recharge': 'ๅ
ๅผ',
- 'account.moneyLog.type.refund': '้ๆฌพ',
- 'account.moneyLog.type.reward': '็ๅต',
- 'account.moneyLog.type.income': 'ๆๆจๆถๅ
ฅ',
- 'account.moneyLog.type.commission': 'ๅนณ่บๆ็บ่ฒป',
- 'wallet.balance': 'QDT ้ค้ก',
- 'wallet.recharge': 'ๅ
ๅผ',
- 'wallet.withdraw': 'ๆ็พ',
- 'wallet.filter': '็ฏฉ้ธ',
- 'wallet.reset': '้็ฝฎ',
- 'wallet.totalRecharge': '็ดฏ่จๅ
ๅผ',
- 'wallet.totalWithdraw': '็ดฏ่จๆ็พ',
- 'wallet.totalIncome': '็ดฏ่จๆถๅ
ฅ',
- 'wallet.records': 'ไบคๆ่จ้่่ณ้ๆ็ดฐ',
- 'wallet.tradingRecords': 'ไบคๆ่จ้',
- 'wallet.moneyLog': '่ณ้ๆ็ดฐ',
- 'wallet.rechargeTip': '่ซไฝฟ็จๅพฎไฟกๆๆฏไปๅฏถๆๆไธๆนไบ็ถญ็ขผ้ฒ่กๅ
ๅผ',
- 'wallet.qrCodePlaceholder': 'ไบ็ถญ็ขผไฝไฝ็ฌฆ๏ผๆจกๆฌ๏ผ',
- 'wallet.rechargeAmount': 'ๅ
ๅผ้้ก',
- 'wallet.enterAmount': '่ซ่ผธๅ
ฅๅ
ๅผ้้ก',
- 'wallet.rechargeHint': 'ๆๅฐๅ
ๅผ้้ก๏ผ1 QDT',
- 'wallet.confirmRecharge': '็ขบ่ชๅ
ๅผ',
- 'wallet.enterValidAmount': '่ซ่ผธๅ
ฅๆๆ็ๅ
ๅผ้้ก',
- 'wallet.rechargeSuccess': 'ๅ
ๅผๆๅ๏ผๅทฒๅ
ๅผ {amount} QDT',
- 'wallet.rechargeFailed': 'ๅ
ๅผๅคฑๆ',
- 'wallet.withdrawTip': '่ซ่ผธๅ
ฅๆ็พ้้กๅๆ็พๅฐๅ',
- 'wallet.withdrawAmount': 'ๆ็พ้้ก',
- 'wallet.enterWithdrawAmount': '่ซ่ผธๅ
ฅๆ็พ้้ก',
- 'wallet.withdrawHint': 'ๆๅฐๆ็พ้้ก๏ผ1 QDT',
- 'wallet.withdrawAddress': 'ๆ็พๅฐๅ๏ผๅฏ้ธ๏ผ',
- 'wallet.enterWithdrawAddress': '่ซ่ผธๅ
ฅๆ็พๅฐๅ',
- 'wallet.confirmWithdraw': '็ขบ่ชๆ็พ',
- 'wallet.enterValidWithdrawAmount': '่ซ่ผธๅ
ฅๆๆ็ๆ็พ้้ก',
- 'wallet.insufficientBalance': '้ค้กไธ่ถณ',
- 'wallet.withdrawSuccess': 'ๆ็พๆๅ๏ผๅทฒๆ็พ {amount} QDT',
- 'wallet.withdrawFailed': 'ๆ็พๅคฑๆ',
- 'wallet.noTradingRecords': 'ๆซ็กไบคๆ่จ้',
- 'wallet.noMoneyLog': 'ๆซ็ก่ณ้ๆ็ดฐ',
- 'wallet.loadTradingRecordsFailed': 'ๅ ่ผไบคๆ่จ้ๅคฑๆ',
- 'wallet.loadMoneyLogFailed': 'ๅ ่ผ่ณ้ๆ็ดฐๅคฑๆ',
- 'wallet.moneyLogTotal': 'ๅ
ฑ {total} ๆข่จ้',
- 'wallet.moneyLogTypeTitle': '้กๅ',
- 'wallet.moneyLogType.all': 'ๅ
จ้จ้กๅ',
- 'wallet.table.time': 'ๆ้',
- 'wallet.table.type': '้กๅ',
- 'wallet.table.price': 'ๅนๆ ผ',
- 'wallet.table.amount': 'ๆธ้',
- 'wallet.table.money': '้้ก',
- 'wallet.table.balance': '้ค้ก',
- 'wallet.table.memo': 'ๅๆณจ',
- 'wallet.table.value': 'ๅนๅผ',
- 'wallet.table.profit': '็่ง',
- 'wallet.table.commission': 'ๆ็บ่ฒป',
- 'wallet.table.total': 'ๅ
ฑ {total} ๆข่จ้',
- 'wallet.tradeType.buy': '่ฒทๅ
ฅ',
- 'wallet.tradeType.sell': '่ณฃๅบ',
- 'wallet.tradeType.liquidation': 'ๅผทๅนณ',
- 'wallet.tradeType.openLong': '้ๅค',
- 'wallet.tradeType.addLong': 'ๅ ๅค',
- 'wallet.tradeType.closeLong': 'ๅนณๅค',
- 'wallet.tradeType.closeLongStop': 'ๆญขๆๅนณๅค',
- 'wallet.tradeType.closeLongProfit': 'ๆญข็ๅนณๅค',
- 'wallet.tradeType.openShort': '้็ฉบ',
- 'wallet.tradeType.addShort': 'ๅ ็ฉบ',
- 'wallet.tradeType.closeShort': 'ๅนณ็ฉบ',
- 'wallet.tradeType.closeShortStop': 'ๆญขๆๅนณ็ฉบ',
- 'wallet.tradeType.closeShortProfit': 'ๆญข็ๅนณ็ฉบ',
- 'wallet.moneyLogType.purchase': '่ณผ่ฒทๆๆจ',
- 'wallet.moneyLogType.recharge': 'ๅ
ๅผ',
- 'wallet.moneyLogType.withdraw': 'ๆ็พ',
- 'wallet.moneyLogType.refund': '้ๆฌพ',
- 'wallet.moneyLogType.reward': '็ๅต',
- 'wallet.moneyLogType.income': 'ๆถๅ
ฅ',
- 'wallet.moneyLogType.commission': 'ๆ็บ่ฒป',
- 'wallet.web3Address.required': '่ซๅ
ๅกซๅฏซWeb3้ขๅ
ๅฐๅ',
- 'wallet.web3Address.requiredDescription': 'ๅ
ๅผๅ้่ฆๅ
็ถๅฎๆจ็Web3้ขๅ
ๅฐๅ๏ผ็จๆผๆฅๆถๅ
ๅผ',
- 'wallet.web3Address.placeholder': '่ซ่ผธๅ
ฅๆจ็Web3้ขๅ
ๅฐๅ๏ผ0x้้ ญ๏ผ',
- 'wallet.web3Address.save': 'ไฟๅญ้ขๅ
ๅฐๅ',
- 'wallet.web3Address.saveSuccess': '้ขๅ
ๅฐๅไฟๅญๆๅ',
- 'wallet.web3Address.saveFailed': 'ไฟๅญ้ขๅ
ๅฐๅๅคฑๆ',
- 'wallet.web3Address.invalidFormat': '่ซ่ผธๅ
ฅๆๆ็Web3้ขๅ
ๅฐๅ๏ผไปฅๅคชๅๆ ผๅผ๏ผ0x้้ ญ42ไฝๅญ็ฌฆ๏ผๆTRC20ๆ ผๅผ๏ผT้้ ญ34ไฝๅญ็ฌฆ๏ผ',
- 'wallet.selectCoin': '้ธๆๅนฃ็จฎ',
- 'wallet.selectChain': '้ธๆ้',
- 'wallet.chain.eth': 'ETH(ERC20)',
- 'wallet.chain.trc20': 'TRC20',
- 'wallet.chain.bsc': 'BSC',
- 'wallet.targetQdtAmount': 'ๆณ่ฆๅ
ๆ็QDTๆธ้๏ผๅฏ้ธ๏ผ',
- 'wallet.targetQdtAmount.placeholder': '่ซ่ผธๅ
ฅๆณ่ฆๅ
ๆ็QDTๆธ้๏ผ็ถๅQDTๅนๆ ผ๏ผ{price} USDT',
- 'wallet.targetQdtAmount.requiredUsdt': '้่ฆๅ
ๅผ๏ผ{amount} USDT',
- 'wallet.rechargeAddress': 'ๅ
ๅผๅฐๅ',
- 'wallet.copyAddress': 'ๅพฉๅถ',
- 'wallet.copySuccess': 'ๅพฉๅถๆๅ๏ผ',
- 'wallet.copyFailed': 'ๅพฉๅถๅคฑๆ๏ผ่ซๆๅๅพฉๅถ',
- 'wallet.rechargeAddressHint': '่ซ็ขบไฟไฝฟ็จ{chain}้ๅๆญคๅฐๅๅ
ๅผ{coin}',
- 'wallet.qdtPrice.loading': 'ๅ ่ผไธญ...',
- 'wallet.rechargeTip.new': '่ซ้ธๆๅนฃ็จฎๅ้๏ผ็ถๅพๆๆไธๆนไบ็ถญ็ขผ้ฒ่กๅ
ๅผ',
- 'wallet.exchangeRate': '1 QDT โ {rate} USDT',
- 'wallet.withdrawableAmount': 'ๅฏๆ็พ้้ก',
- 'wallet.totalBalance': '็ธฝ้ค้ก',
- 'wallet.insufficientWithdrawable': 'ๅฏๆ็พ้้กไธ่ถณ๏ผ็ถๅๅฏๆ็พ๏ผ{amount} QDT',
- 'wallet.withdrawAddressRequired': '่ซ่ผธๅ
ฅๆ็พๅฐๅ',
- 'wallet.withdrawAddressHint': '่ซ็ขบไฟๅฐๅๆญฃ็ขบ๏ผๆ็พๅพ็กๆณๆค้ท',
- 'wallet.withdrawSubmitSuccess': 'ๆ็พ็ณ่ซๆไบคๆๅ๏ผ่ซ็ญๅพ
ๅฏฉๆ ธ',
- 'menu.footer.contactUs': '่ฏ็ณปๆๅ',
- 'menu.footer.getSupport': '็ฒๅๆฏๆ',
- 'menu.footer.socialAccounts': '็คพไบค่ณฌๆถ',
- 'menu.footer.userAgreement': '็จๆถๅ่ญฐ',
- 'menu.footer.privacyPolicy': '้ฑ็งๆขไพ',
- 'menu.footer.support': 'Support',
- 'menu.footer.featureRequest': 'Feature request',
- 'menu.footer.email': 'Email',
- 'menu.footer.liveChat': '24/7 live chat',
- 'dashboard.analysis.title': 'Multi-Dimensional Analysis',
- 'dashboard.analysis.subtitle': 'AI้ฉ
ๅ็็ถๅ้่ๅๆๅนณ่บ',
- 'dashboard.analysis.selectSymbol': '้ธๆๆ่ผธๅ
ฅๆจ็ไปฃ็ขผ',
- 'dashboard.analysis.selectModel': '้ธๆๆจกๅ',
- 'dashboard.analysis.startAnalysis': '้ๅงๅๆ',
- 'dashboard.analysis.history': 'ๆญทๅฒ่จ้',
- 'dashboard.analysis.tab.overview': '็ถๅๅๆ',
- 'dashboard.analysis.tab.fundamental': 'ๅบๆฌ้ข',
- 'dashboard.analysis.tab.technical': 'ๆ่ก',
- 'dashboard.analysis.tab.news': 'ๆฐ่',
- 'dashboard.analysis.tab.sentiment': 'ๆ
็ท',
- 'dashboard.analysis.tab.risk': '้ขจ้ช',
- 'dashboard.analysis.tab.debate': 'ๅค็ฉบ่พฏ่ซ',
- 'dashboard.analysis.tab.decision': 'ๆ็ตๆฑบ็ญ',
- 'dashboard.analysis.empty.selectSymbol': '้ธๆๆจ็้ๅงๅๆ',
- 'dashboard.analysis.empty.selectSymbolDesc': 'ๅพ่ช้ธ่กๅ่กจไธญ้ธๆๆ่ผธๅ
ฅๆจ็ไปฃ็ขผ๏ผ็ฒๅๅค็ถญๅบฆAIๅๆๅ ฑๅ',
- 'dashboard.analysis.empty.startAnalysis': '้ปๆ"้ๅงๅๆ"ๆ้้ฒ่กๅค็ถญๅบฆๅๆ',
- 'dashboard.analysis.empty.startAnalysisDesc': 'ๆๅๅฐๅพๅบๆฌ้ขใๆ่กใๆฐ่ใๆ
็ทๅ้ขจ้ช็ญๅคๅ็ถญๅบฆ็ฒๆจๆไพๅ
จ้ข็ๅๆ',
- 'dashboard.analysis.empty.noData': 'ๆซ็ก{type}ๅๆๆธๆ๏ผ่ซๅ
้ฒ่ก็ถๅๅๆ',
- 'dashboard.analysis.empty.noWatchlist': 'ๆซ็ก่ช้ธ่ก',
- 'dashboard.analysis.empty.noHistory': 'ๆซ็กๆญทๅฒ่จ้',
- 'dashboard.analysis.empty.watchlistHint': 'ๆซ็ก่ช้ธ่ก๏ผ่ซๅ
',
- 'dashboard.analysis.empty.noDebateData': 'ๆซ็ก่พฏ่ซๆธๆ',
- 'dashboard.analysis.empty.noDecisionData': 'ๆซ็กๆฑบ็ญๆธๆ',
- 'dashboard.analysis.empty.selectAgent': '่ซ้ธๆไธๅ Agent ๆฅ็ๅๆ็ตๆ',
- 'dashboard.analysis.loading.analyzing': 'ๆญฃๅจๅๆไธญ๏ผ่ซ็จๅ...',
- 'dashboard.analysis.loading.fundamental': 'ๆญฃๅจๅๆๅบๆฌ้ขๆธๆ...',
- 'dashboard.analysis.loading.technical': 'ๆญฃๅจๅๆๆ่กๆๆจ...',
- 'dashboard.analysis.loading.news': 'ๆญฃๅจๅๆๆฐ่ๆธๆ...',
- 'dashboard.analysis.loading.sentiment': 'ๆญฃๅจๅๆๅธๅ ดๆ
็ท...',
- 'dashboard.analysis.loading.risk': 'ๆญฃๅจ่ฉไผฐ้ขจ้ช...',
- 'dashboard.analysis.loading.debate': 'ๆญฃๅจ้ฒ่กๅค็ฉบ่พฏ่ซ...',
- 'dashboard.analysis.loading.decision': 'ๆญฃๅจ็ๆๆ็ตๆฑบ็ญ...',
- 'dashboard.analysis.score.overall': '็ถๅ่ฉๅ',
- 'dashboard.analysis.score.recommendation': 'ๆ่ณๅปบ่ญฐ',
- 'dashboard.analysis.score.confidence': '็ฝฎไฟกๅบฆ',
- 'dashboard.analysis.dimension.fundamental': 'ๅบๆฌ้ข',
- 'dashboard.analysis.dimension.technical': 'ๆ่ก',
- 'dashboard.analysis.dimension.news': 'ๆฐ่',
- 'dashboard.analysis.dimension.sentiment': 'ๆ
็ท',
- 'dashboard.analysis.dimension.risk': '้ขจ้ช',
- 'dashboard.analysis.card.dimensionScores': 'ๅ็ถญๅบฆ่ฉๅ',
- 'dashboard.analysis.card.overviewReport': '็ถๅๅๆๅ ฑๅ',
- 'dashboard.analysis.card.financialMetrics': '่ฒกๅๆๆจ',
- 'dashboard.analysis.card.fundamentalReport': 'ๅบๆฌ้ขๅๆๅ ฑๅ',
- 'dashboard.analysis.card.technicalIndicators': 'ๆ่กๆๆจ',
- 'dashboard.analysis.card.technicalReport': 'ๆ่กๅๆๅ ฑๅ',
- 'dashboard.analysis.card.newsList': '็ธ้ๆฐ่',
- 'dashboard.analysis.card.newsReport': 'ๆฐ่ๅๆๅ ฑๅ',
- 'dashboard.analysis.card.sentimentIndicators': 'ๆ
็ทๆๆจ',
- 'dashboard.analysis.card.sentimentReport': 'ๆ
็ทๅๆๅ ฑๅ',
- 'dashboard.analysis.card.riskMetrics': '้ขจ้ชๆๆจ',
- 'dashboard.analysis.card.riskReport': '้ขจ้ช่ฉไผฐๅ ฑๅ',
- 'dashboard.analysis.card.bullView': '็ๆผฒ่ง้ป (Bull)',
- 'dashboard.analysis.card.bearView': '็่ท่ง้ป (Bear)',
- 'dashboard.analysis.card.researchConclusion': '็ ็ฉถๅก็ต่ซ',
- 'dashboard.analysis.card.traderPlan': 'ไบคๆๅก่จๅ',
- 'dashboard.analysis.card.riskDebate': '้ขจ้ชๅงๅกๆ่พฏ่ซ',
- 'dashboard.analysis.card.finalDecision': 'ๆ็ตๆฑบ็ญ (Final Decision)',
- 'dashboard.analysis.card.tradePlanDetail': 'ไบคๆ่จๅ่ฉณๆ
',
- 'dashboard.analysis.tradingPlan.entry_price': 'ๅ
ฅๅ ดๅนๆ ผ',
- 'dashboard.analysis.tradingPlan.position_size': 'ๅไฝๅคงๅฐ',
- 'dashboard.analysis.tradingPlan.stop_loss': 'ๆญขๆ',
- 'dashboard.analysis.tradingPlan.take_profit': 'ๆญข็',
- 'dashboard.analysis.label.confidence': '็ฝฎไฟกๅบฆ',
- 'dashboard.analysis.label.keyPoints': 'ๆ ธๅฟ่ฆ้ป',
- 'dashboard.analysis.label.riskWarning': '้ขจ้ชๆ็คบ',
- 'dashboard.analysis.risk.risky': 'ๆฟ้ฒๆดพ่ง้ป (Risky)',
- 'dashboard.analysis.risk.neutral': 'ไธญ็ซๆดพ่ง้ป (Neutral)',
- 'dashboard.analysis.risk.safe': 'ไฟๅฎๆดพ่ง้ป (Safe)',
- 'dashboard.analysis.risk.conclusion': '็ต่ซ',
- 'dashboard.analysis.feature.fundamental': 'ๅบๆฌ้ขๅๆ',
- 'dashboard.analysis.feature.technical': 'ๆ่กๅๆ',
- 'dashboard.analysis.feature.news': 'ๆฐ่ๅๆ',
- 'dashboard.analysis.feature.sentiment': 'ๆ
็ทๅๆ',
- 'dashboard.analysis.feature.risk': '้ขจ้ช่ฉไผฐ',
- 'dashboard.analysis.watchlist.title': 'ๆ็่ช้ธ่ก',
- 'dashboard.analysis.watchlist.add': 'ๆทปๅ ',
- 'dashboard.analysis.watchlist.addStock': 'ๆทปๅ ่ก็ฅจ',
- 'dashboard.analysis.modal.addStock.title': 'ๆทปๅ ่ช้ธ่ก',
- 'dashboard.analysis.modal.addStock.confirm': '็ขบๅฎ',
- 'dashboard.analysis.modal.addStock.cancel': 'ๅๆถ',
- 'dashboard.analysis.modal.addStock.market': 'ๅธๅ ด้กๅ',
- 'dashboard.analysis.modal.addStock.marketPlaceholder': '่ซ้ธๆๅธๅ ด',
- 'dashboard.analysis.modal.addStock.marketRequired': '่ซ้ธๆๅธๅ ด้กๅ',
- 'dashboard.analysis.modal.addStock.symbol': '่ก็ฅจไปฃ็ขผ',
- 'dashboard.analysis.modal.addStock.symbolPlaceholder': 'ไพๅฆ: AAPL, TSLA, GOOGL, 000001, BTC',
- 'dashboard.analysis.modal.addStock.symbolRequired': '่ซ่ผธๅ
ฅ่ก็ฅจไปฃ็ขผ',
- 'dashboard.analysis.modal.addStock.searchPlaceholder': 'ๆ็ดขๆจ็ไปฃ็ขผๆๅ็จฑ',
- 'dashboard.analysis.modal.addStock.searchOrInputPlaceholder': 'ๆ็ดขๆ่ผธๅ
ฅๆจ็ไปฃ็ขผ๏ผๅฆ๏ผAAPLใBTC/USDTใEUR/USD๏ผ',
- 'dashboard.analysis.modal.addStock.searchOrInputHint': 'ๆฏๆๆ็ดขๆธๆๅบซไธญ็ๆจ็๏ผๆ็ดๆฅ่ผธๅ
ฅไปฃ็ขผ๏ผ็ณป็ตฑๅฐ่ชๅ็ฒๅๅ็จฑ๏ผ',
- 'dashboard.analysis.modal.addStock.search': 'ๆ็ดข',
- 'dashboard.analysis.modal.addStock.searchResults': 'ๆ็ดข็ตๆ',
- 'dashboard.analysis.modal.addStock.hotSymbols': '็ฑ้ๆจ็',
- 'dashboard.analysis.modal.addStock.noHotSymbols': 'ๆซ็ก็ฑ้ๆจ็',
- 'dashboard.analysis.modal.addStock.selectedSymbol': 'ๅทฒ้ธๆจ็',
- 'dashboard.analysis.modal.addStock.pleaseSelectSymbol': '่ซๅ
้ธๆไธๅๆจ็',
- 'dashboard.analysis.modal.addStock.pleaseSelectOrEnterSymbol': '่ซๅ
้ธๆไธๅๆจ็ๆ่ผธๅ
ฅๆจ็ไปฃ็ขผ',
- 'dashboard.analysis.modal.addStock.pleaseEnterSymbol': '่ซ่ผธๅ
ฅๆจ็ไปฃ็ขผ',
- 'dashboard.analysis.modal.addStock.pleaseSelectMarket': '่ซๅ
้ธๆๅธๅ ด้กๅ',
- 'dashboard.analysis.modal.addStock.searchFailed': 'ๆ็ดขๅคฑๆ๏ผ่ซ็จๅพ้่ฉฆ',
- 'dashboard.analysis.modal.addStock.noSearchResults': 'ๆชๆพๅฐๅน้
็ๆจ็',
- 'dashboard.analysis.modal.addStock.willAutoFetchName': '็ณป็ตฑๅฐ่ชๅ็ฒๅๅ็จฑ',
- 'dashboard.analysis.modal.addStock.addDirectly': '็ดๆฅๆทปๅ ',
- 'dashboard.analysis.modal.addStock.nameWillBeFetched': 'ๅ็จฑๅฐๅจๆทปๅ ๆ่ชๅ็ฒๅ',
- 'dashboard.analysis.market.USStock': '็พ่ก',
- 'dashboard.analysis.market.Crypto': 'ๅ ๅฏ่ฒจๅนฃ',
- 'dashboard.analysis.market.Forex': 'ๅคๅฏ',
- 'dashboard.analysis.market.Futures': 'ๆ่ฒจ',
- 'dashboard.analysis.modal.history.title': 'ๆญทๅฒๅๆ่จ้',
- 'dashboard.analysis.modal.history.viewResult': 'ๆฅ็็ตๆ',
- 'dashboard.analysis.modal.history.completeTime': 'ๅฎๆๆ้',
- 'dashboard.analysis.modal.history.error': '้ฏ่ชค',
- 'dashboard.analysis.status.pending': 'ๅพ
่็',
- 'dashboard.analysis.status.processing': '่็ไธญ',
- 'dashboard.analysis.status.completed': 'ๅทฒๅฎๆ',
- 'dashboard.analysis.status.failed': 'ๅคฑๆ',
- 'dashboard.analysis.message.selectSymbol': '่ซๅ
้ธๆๆจ็',
- 'dashboard.analysis.message.taskCreated': 'ๅๆไปปๅๅทฒๅตๅปบ๏ผๆญฃๅจๅพ่บๅท่ก...',
- 'dashboard.analysis.message.analysisComplete': 'ๅๆๅฎๆ',
- 'dashboard.analysis.message.analysisCompleteCache': 'ๅๆๅฎๆ๏ผไฝฟ็จ็ทฉๅญๆธๆ๏ผ',
- 'dashboard.analysis.message.analysisFailed': 'ๅๆๅคฑๆ๏ผ่ซ็จๅพ้่ฉฆ',
- 'dashboard.analysis.message.addStockSuccess': 'ๆทปๅ ๆๅ',
- 'dashboard.analysis.message.addStockFailed': 'ๆทปๅ ๅคฑๆ',
- 'dashboard.analysis.message.removeStockSuccess': '็งป้คๆๅ',
- 'dashboard.analysis.message.removeStockFailed': '็งป้คๅคฑๆ',
- 'dashboard.analysis.message.resumingAnalysis': 'ๆญฃๅจๆขๅพฉๅๆไปปๅ...',
- 'dashboard.analysis.message.deleteSuccess': 'ๅช้คๆๅ',
- 'dashboard.analysis.message.deleteFailed': 'ๅช้คๅคฑๆ',
- 'dashboard.analysis.modal.history.delete': 'ๅช้ค',
- 'dashboard.analysis.modal.history.deleteConfirm': '็ขบๅฎ่ฆๅช้ค้ๆขๅๆ่จ้ๅ๏ผ',
- 'dashboard.analysis.test': 'ๅทฅๅฐ่ทฏ {no} ่ๅบ',
- 'dashboard.analysis.introduce': 'ๆๆจ่ชชๆ',
- 'dashboard.analysis.total-sales': '็ธฝ้ทๅฎ้ก',
- 'dashboard.analysis.day-sales': 'ๆฅๅ้ทๅฎ้ก๏ฟฅ',
- 'dashboard.analysis.visits': '่จชๅ้',
- 'dashboard.analysis.visits-trend': '่จชๅ้่ถจๅข',
- 'dashboard.analysis.visits-ranking': '้ๅบ่จชๅ้ๆๅ',
- 'dashboard.analysis.day-visits': 'ๆฅ่จชๅ้',
- 'dashboard.analysis.week': 'ๅจๅๆฏ',
- 'dashboard.analysis.day': 'ๆฅๅๆฏ',
- 'dashboard.analysis.payments': 'ๆฏไป็ญๆธ',
- 'dashboard.analysis.conversion-rate': '่ฝๅ็',
- 'dashboard.analysis.operational-effect': '้็ๆดปๅๆๆ',
- 'dashboard.analysis.sales-trend': '้ทๅฎ่ถจๅข',
- 'dashboard.analysis.sales-ranking': '้ๅบ้ทๅฎ้กๆๅ',
- 'dashboard.analysis.all-year': 'ๅ
จๅนด',
- 'dashboard.analysis.all-month': 'ๆฌๆ',
- 'dashboard.analysis.all-week': 'ๆฌๅจ',
- 'dashboard.analysis.all-day': 'ไปๆฅ',
- 'dashboard.analysis.search-users': 'ๆ็ดข็จๆถๆธ',
- 'dashboard.analysis.per-capita-search': 'ไบบๅๆ็ดขๆฌกๆธ',
- 'dashboard.analysis.online-top-search': '็ทไธ็ฑ้ๆ็ดข',
- 'dashboard.analysis.the-proportion-of-sales': '้ทๅฎ้ก้กๅฅไฝๆฏ',
- 'dashboard.analysis.dropdown-option-one': 'ๆไฝไธ',
- 'dashboard.analysis.dropdown-option-two': 'ๆไฝไบ',
- 'dashboard.analysis.channel.all': 'ๅ
จ้จๆธ ้',
- 'dashboard.analysis.channel.online': '็ทไธ',
- 'dashboard.analysis.channel.stores': '้ๅบ',
- 'dashboard.analysis.sales': '้ทๅฎ้ก',
- 'dashboard.analysis.traffic': 'ๅฎขๆต้',
- 'dashboard.analysis.table.rank': 'ๆๅ',
- 'dashboard.analysis.table.search-keyword': 'ๆ็ดข้้ต่ฉ',
- 'dashboard.analysis.table.users': '็จๆถๆธ',
- 'dashboard.analysis.table.weekly-range': 'ๅจๆผฒๅน
',
- 'dashboard.indicator.selectSymbol': '้ธๆๆ่ผธๅ
ฅๆจ็ไปฃ็ขผ',
- 'dashboard.indicator.emptyWatchlistHint': 'ๆซ็ก่ช้ธ่ก๏ผ่ซๅ
ๆทปๅ ',
- 'dashboard.indicator.hint.selectSymbol': '่ซ้ธๆๆจ็้ๅงๅๆ',
- 'dashboard.indicator.hint.selectSymbolDesc': 'ๅจไธๆนๆ็ดขๆกไธญ้ธๆๆ่ผธๅ
ฅ่ก็ฅจไปฃ็ขผ๏ผๆฅ็K็ทๅ่กจๅๆ่กๆๆจ',
- 'dashboard.indicator.retry': '้่ฉฆ',
- 'dashboard.indicator.panel.title': 'ๆ่กๆๆจ',
- 'dashboard.indicator.panel.realtimeOn': '้้ๅฏฆๆๆดๆฐ',
- 'dashboard.indicator.panel.realtimeOff': '้ๅๅฏฆๆๆดๆฐ',
- 'dashboard.indicator.panel.themeLight': 'ๅๆๅฐๆทฑ่ฒไธป้ก',
- 'dashboard.indicator.panel.themeDark': 'ๅๆๅฐๆทบ่ฒไธป้ก',
- 'dashboard.indicator.section.enabled': 'ๅทฒๅ็จ',
- 'dashboard.indicator.section.added': 'ๆๆทปๅ ็ๆๆจ',
- 'dashboard.indicator.section.custom': '่ชๅทฑๅตๅปบ็ๆๆจ',
- 'dashboard.indicator.section.bought': 'ๆ้ธ่ณผ็ๆๆจ',
- 'dashboard.indicator.section.myCreated': 'ๆๅตๅปบ็ๆๆจ',
- 'dashboard.indicator.empty': 'ๆซ็กๆๆจ๏ผ่ซๅ
ๆทปๅ ๆๅตๅปบๆๆจ',
- 'dashboard.indicator.buy': '่ณผ่ฒทๆๆจ',
- 'dashboard.indicator.action.start': 'ๅๅ',
- 'dashboard.indicator.action.stop': '้้',
- 'dashboard.indicator.action.edit': '็ทจ่ผฏ',
- 'dashboard.indicator.action.delete': 'ๅช้ค',
- 'dashboard.indicator.action.backtest': 'ๅๆธฌ',
- 'dashboard.indicator.status.normal': 'ๆญฃๅธธ',
- 'dashboard.indicator.status.normalPermanent': 'ๆญฃๅธธ๏ผๆฐธไน
ๆๆ๏ผ',
- 'dashboard.indicator.status.expired': 'ๅทฒ้ๆ',
- 'dashboard.indicator.expiry.permanent': 'ๆฐธไน
ๆๆ',
- 'dashboard.indicator.expiry.noExpiry': '็กๅฐๆๆ้',
- 'dashboard.indicator.expiry.expired': 'ๅทฒ้ๆ๏ผ{date}',
- 'dashboard.indicator.expiry.expiresOn': 'ๅฐๆๆ้๏ผ{date}',
- 'dashboard.indicator.delete.confirmTitle': '็ขบ่ชๅช้ค',
- 'dashboard.indicator.delete.confirmContent': '็ขบๅฎ่ฆๅช้คๆๆจ"{name}"ๅ๏ผๆญคๆไฝไธๅฏๆขๅพฉใ',
- 'dashboard.indicator.delete.confirmOk': 'ๅช้ค',
- 'dashboard.indicator.delete.confirmCancel': 'ๅๆถ',
- 'dashboard.indicator.delete.success': 'ๅช้คๆๅ',
- 'dashboard.indicator.delete.failed': 'ๅช้คๅคฑๆ',
- 'dashboard.indicator.save.success': 'ไฟๅญๆๅ',
- 'dashboard.indicator.save.failed': 'ไฟๅญๅคฑๆ',
- 'dashboard.indicator.error.loadWatchlistFailed': 'ๅ ่ผ่ช้ธ่กๅคฑๆ',
- 'dashboard.indicator.error.chartNotReady': 'ๅ่กจ็ตไปถๆชๅๅงๅ๏ผ่ซๅ
้ธๆๆจ็ไธฆ็ญๅพ
ๅ่กจๅ ่ผๅฎๆ',
- 'dashboard.indicator.error.chartMethodNotReady': 'ๅ่กจ็ตไปถๆนๆณๆชๅฐฑ็ท๏ผ่ซ็จๅพ้่ฉฆ',
- 'dashboard.indicator.error.chartExecuteNotReady': 'ๅ่กจ็ตไปถๅท่กๆนๆณๆชๅฐฑ็ท๏ผ่ซ็จๅพ้่ฉฆ',
- 'dashboard.indicator.error.parseFailed': '็กๆณ่งฃๆPythonไปฃ็ขผ',
- 'dashboard.indicator.error.parseFailedCheck': '็กๆณ่งฃๆPythonไปฃ็ขผ๏ผ่ซๆชขๆฅไปฃ็ขผๆ ผๅผ',
- 'dashboard.indicator.error.addIndicatorFailed': 'ๆทปๅ ๆๆจๅคฑๆ',
- 'dashboard.indicator.error.runIndicatorFailed': '้่กๆๆจๅคฑๆ',
- 'dashboard.indicator.error.pleaseLogin': '่ซๅ
็ป้',
- 'dashboard.indicator.error.loadDataFailed': 'ๆธๆๅ ่ผๅคฑๆ',
- 'dashboard.indicator.error.loadDataFailedDesc': '่ซๆชขๆฅ็ถฒ็ตก้ฃๆฅ',
- 'dashboard.indicator.error.tiingoSubscription': 'ๅคๅฏ1ๅ้ๆธๆ้่ฆ Tiingo ไป่ฒป่จ้ฑ๏ผ่ซไฝฟ็จๅ
ถไปๆ้้ฑๆๆๅ็ด่จ้ฑ',
- 'dashboard.indicator.error.pythonEngineFailed': 'Python ๅผๆๅ ่ผๅคฑๆ๏ผๆๆจๅ่ฝๅฏ่ฝ็กๆณไฝฟ็จ',
- 'dashboard.indicator.error.chartInitFailed': 'ๅ่กจๅๅงๅๅคฑๆ',
- 'dashboard.indicator.warning.enterCode': '่ซๅ
่ผธๅ
ฅๆๆจไปฃ็ขผ',
- 'dashboard.indicator.warning.pyodideLoadFailed': 'Python ๅผๆๅ ่ผๅคฑๆ',
- 'dashboard.indicator.warning.pyodideLoadFailedDesc': 'ๆจ็ถๅๆๅจๅๅๆ็ถฒ็ตก็ฐๅข็กๆณไฝฟ็จ่ฉฒๅ่ฝ',
- 'dashboard.indicator.warning.chartNotInitialized': 'ๅ่กจๆชๅๅงๅ๏ผ็กๆณไฝฟ็จ็ซ็ทๅทฅๅ
ท',
- 'dashboard.indicator.success.runIndicator': 'ๆๆจ้่กๆๅ',
- 'dashboard.indicator.success.clearDrawings': 'ๅทฒๆธ
้คๆๆ็ซ็ท',
- 'dashboard.indicator.sma': 'SMA (ๅ็ท็ตๅ)',
- 'dashboard.indicator.ema': 'EMA (ๆๆธๅ็ท็ตๅ)',
- 'dashboard.indicator.rsi': 'RSI (็ธๅฐๅผทๅผฑ)',
- 'dashboard.indicator.macd': 'MACD',
- 'dashboard.indicator.bb': 'ๅธๆๅธถ (Bollinger Bands)',
- 'dashboard.indicator.atr': 'ATR (ๅนณๅ็ๅฏฆๆณขๅน
)',
- 'dashboard.indicator.cci': 'CCI (ๅๅ้้ๆๆธ)',
- 'dashboard.indicator.williams': 'Williams %R (ๅจๅปๆๆจ)',
- 'dashboard.indicator.mfi': 'MFI (่ณ้ๆต้ๆๆจ)',
- 'dashboard.indicator.adx': 'ADX (ๅนณๅ่ถจๅๆๆธ)',
- 'dashboard.indicator.obv': 'OBV (่ฝ้ๆฝฎ)',
- 'dashboard.indicator.adosc': 'ADOSC (็ฉ็ดฏ/ๆดพ็ผๆฏ่ฉๅจ)',
- 'dashboard.indicator.ad': 'AD (็ฉ็ดฏ/ๆดพ็ผ็ท)',
- 'dashboard.indicator.kdj': 'KDJ (้จๆฉๆๆจ)',
- 'dashboard.indicator.signal.buy': 'BUY',
- 'dashboard.indicator.signal.sell': 'SELL',
- 'dashboard.indicator.signal.supertrendBuy': 'SuperTrend Buy',
- 'dashboard.indicator.signal.supertrendSell': 'SuperTrend Sell',
- 'dashboard.indicator.chart.kline': 'K็ท',
- 'dashboard.indicator.chart.volume': 'ๆไบค้',
- 'dashboard.indicator.chart.uptrend': 'Up Trend',
- 'dashboard.indicator.chart.downtrend': 'Down Trend',
- 'dashboard.indicator.tooltip.time': 'ๆ้',
- 'dashboard.indicator.tooltip.open': '้',
- 'dashboard.indicator.tooltip.close': 'ๆถ',
- 'dashboard.indicator.tooltip.high': '้ซ',
- 'dashboard.indicator.tooltip.low': 'ไฝ',
- 'dashboard.indicator.tooltip.volume': 'ๆไบค้',
- 'dashboard.indicator.drawing.line': '็ทๆฎต',
- 'dashboard.indicator.drawing.horizontalLine': 'ๆฐดๅนณ็ท',
- 'dashboard.indicator.drawing.verticalLine': 'ๅ็ด็ท',
- 'dashboard.indicator.drawing.ray': 'ๅฐ็ท',
- 'dashboard.indicator.drawing.straightLine': '็ด็ท',
- 'dashboard.indicator.drawing.parallelLine': 'ๅนณ่ก็ท',
- 'dashboard.indicator.drawing.priceLine': 'ๅนๆ ผ็ท',
- 'dashboard.indicator.drawing.priceChannel': 'ๅนๆ ผ้้',
- 'dashboard.indicator.drawing.fibonacciLine': 'ๆๆณข้ฃๅฅ็ท',
- 'dashboard.indicator.drawing.clearAll': 'ๆธ
้คๆๆ็ซ็ท',
- 'dashboard.indicator.market.USStock': '็พ่ก',
- 'dashboard.indicator.market.Crypto': 'ๅ ๅฏ่ฒจๅนฃ',
- 'dashboard.indicator.market.Forex': 'ๅคๅฏ',
- 'dashboard.indicator.market.Futures': 'ๆ่ฒจ',
- 'dashboard.indicator.create': 'ๅตๅปบๆๆจ',
- 'dashboard.indicator.editor.title': 'ๅตๅปบ/็ทจ่ผฏๆๆจ',
- 'dashboard.indicator.editor.name': 'ๆๆจๅ็จฑ',
- 'dashboard.indicator.editor.nameRequired': '่ซ่ผธๅ
ฅๆๆจๅ็จฑ',
- 'dashboard.indicator.editor.namePlaceholder': '่ซ่ผธๅ
ฅๆๆจๅ็จฑ',
- 'dashboard.indicator.editor.description': 'ๆๆจๆ่ฟฐ',
- 'dashboard.indicator.editor.descriptionPlaceholder': '่ซ่ผธๅ
ฅๆๆจๆ่ฟฐ๏ผๅฏ้ธ๏ผ',
- 'dashboard.indicator.editor.code': 'ๆๆจ่
ณๆฌ๏ผPython๏ผ',
- 'dashboard.indicator.editor.codeRequired': '่ซ่ผธๅ
ฅๆๆจไปฃ็ขผ',
- 'dashboard.indicator.editor.codePlaceholder': '่ซ่ผธๅ
ฅPythonไปฃ็ขผ',
- 'dashboard.indicator.editor.run': '้่ก',
- 'dashboard.indicator.editor.runHint': '้ปๆ้่กๆ้ๅฏไปฅๅจK็ทๅไธ้ ่ฆฝๆๆจๆๆ',
- 'dashboard.indicator.editor.guide': '้็ผๆๅ',
- 'dashboard.indicator.editor.guideTitle': 'Python ๆๆจ้็ผๆๅ',
- 'dashboard.indicator.editor.save': 'ไฟๅญ',
- 'dashboard.indicator.editor.cancel': 'ๅๆถ',
- 'dashboard.indicator.editor.unnamed': 'ๆชๅฝๅๆๆจ',
- 'dashboard.indicator.editor.publishToCommunity': '็ผๅธๅฐ็คพๅ',
- 'dashboard.indicator.editor.publishToCommunityHint': '็ผๅธๅพ๏ผๅ
ถไป็จๆถๅฏไปฅๅจ็คพๅไธญๆฅ็ๅไฝฟ็จๆจ็ๆๆจ',
- 'dashboard.indicator.editor.indicatorType': 'ๆๆจ้กๅ',
- 'dashboard.indicator.editor.indicatorTypeRequired': '่ซ้ธๆๆๆจ้กๅ',
- 'dashboard.indicator.editor.indicatorTypePlaceholder': '่ซ้ธๆๆๆจ้กๅ',
- 'dashboard.indicator.editor.previewImage': '้ ่ฆฝๅ',
- 'dashboard.indicator.editor.uploadImage': 'ไธๅณๅ็',
- 'dashboard.indicator.editor.previewImageHint': 'ๅปบ่ญฐๅฐบๅฏธ๏ผ800x400๏ผๅคงๅฐไธ่ถ
้2MB',
- 'dashboard.indicator.editor.pricing': 'ๅฎๅน๏ผQDT๏ผ',
- 'dashboard.indicator.editor.pricingType.free': 'ๅ
่ฒป',
- 'dashboard.indicator.editor.pricingType.permanent': 'ๆฐธไน
',
- 'dashboard.indicator.editor.pricingType.monthly': 'ๆไป',
- 'dashboard.indicator.editor.price': 'ๅนๆ ผ',
- 'dashboard.indicator.editor.priceRequired': '่ซ่ผธๅ
ฅๅนๆ ผ',
- 'dashboard.indicator.editor.pricePlaceholder': '่ซ่ผธๅ
ฅๅนๆ ผ',
- 'dashboard.indicator.editor.pricingHint': 'ๅ
่ฒปๆๆจ้็ถๅนๆ ผ็ฒ0๏ผไฝๅนณ่บๆๆ นๆๆจ็ๆๆจไฝฟ็จ้ๅๅฅฝ่ฉ็็ตฆไบ็ๅต๏ผQDT๏ผ',
- 'dashboard.indicator.editor.aiGenerate': 'ๆบ่ฝ็ๆ',
- 'dashboard.indicator.editor.aiPromptPlaceholder': '่ซๆ่ฟฐไฝ ็ไฟก่้่ผฏ๏ผๅช่ผธๅบ buy/sell๏ผ่็นชๅ๏ผplots๏ผใๅไฝ/้ขจๆง/ๅ ๆธๅ่ซๅจๅๆธฌ้
็ฝฎไธญ่จญๅฎใ',
- 'dashboard.indicator.editor.aiGenerateBtn': 'AI็ๆไปฃ็ขผ',
- 'dashboard.indicator.editor.aiPromptRequired': '่ซ่ผธๅ
ฅๆจ็ๆณๆณ',
- 'dashboard.indicator.editor.aiGenerateSuccess': 'ไปฃ็ขผ็ๆๆๅ',
- 'dashboard.indicator.editor.aiGenerateError': 'ไปฃ็ขผ็ๆๅคฑๆ๏ผ่ซ็จๅพ้่ฉฆ',
- 'dashboard.indicator.editor.verifyCode': 'ไปฃ็ขผๆชขๆฅ',
- 'dashboard.indicator.editor.verifyCodeSuccess': 'ไปฃ็ขผๆชขๆฅ้้',
- 'dashboard.indicator.editor.verifyCodeFailed': 'ไปฃ็ขผๆชขๆฅๆช้้',
- 'dashboard.indicator.editor.verifyCodeEmpty': 'ไปฃ็ขผไธ่ฝ็บ็ฉบ',
- 'dashboard.indicator.boundary.message': 'ๆ็คบ๏ผๆๆจ่
ณๆฌๅช่ฒ ่ฒฌใ่จ็ฎ + ็นชๅ + buy/sell ไฟก่ใ๏ผๅไฝใ้ขจๆงใๅ ๆธๅใๆ็บ่ฒป/ๆป้ปๅฑฌๆผ็ญ็ฅๅท่ก้
็ฝฎใ',
- 'dashboard.indicator.boundary.indicatorRule': "ๆๆจ่
ณๆฌ่ซๅช่ผธๅบ buy/sell๏ผไธฆ่จญๅฎ df['buy']/df['sell']๏ผใไธ่ฆๅจ่
ณๆฌๅ
งๆฐๅฏซๅไฝ็ฎก็ใๆญข็ๆญขๆใๅ ๆธๅใ",
- 'dashboard.indicator.boundary.backtestRule': '่ฆๅ๏ผๅไธๆ นK็ท่ฅๅบ็พไธปไฟก่๏ผbuy/sellโ้/ๅนณๅ/ๅๆ๏ผ๏ผๆฌK็ทๅฐ่ทณ้ๆๆๅ ๅ่ๆธๅใ',
- 'dashboard.indicator.backtest.title': 'ๆๆจๅๆธฌ',
- 'dashboard.indicator.backtest.config': 'ๅๆธฌๅๆธ',
- 'dashboard.indicator.backtest.startDate': '้ๅงๆฅๆ',
- 'dashboard.indicator.backtest.endDate': '็ตๆๆฅๆ',
- 'dashboard.indicator.backtest.selectStartDate': '้ธๆ้ๅงๆฅๆ',
- 'dashboard.indicator.backtest.selectEndDate': '้ธๆ็ตๆๆฅๆ',
- 'dashboard.indicator.backtest.startDateRequired': '่ซ้ธๆ้ๅงๆฅๆ',
- 'dashboard.indicator.backtest.endDateRequired': '่ซ้ธๆ็ตๆๆฅๆ',
- 'dashboard.indicator.backtest.initialCapital': 'ๅๅง่ณ้',
- 'dashboard.indicator.backtest.initialCapitalRequired': '่ซ่ผธๅ
ฅๅๅง่ณ้',
- 'dashboard.indicator.backtest.commission': 'ๆ็บ่ฒป็๏ผ%๏ผ',
- 'dashboard.indicator.backtest.commissionHint': 'ๆๅ็พฉๅนๅผ๏ผๅซๆงๆกฟ๏ผๆถๅ๏ผๆฏ็ญๆไบค๏ผ้/ๅนณๅ๏ผ้ฝๆๅพ้ค้กๆฃ้คใ',
- 'dashboard.indicator.backtest.leverage': 'ๆงๆๅ็',
- 'dashboard.indicator.backtest.timeframe': 'K็ท้ฑๆ',
- 'dashboard.indicator.backtest.tradeDirection': 'ไบคๆๆนๅ',
- 'dashboard.indicator.backtest.longOnly': 'ๅๅค',
- 'dashboard.indicator.backtest.shortOnly': 'ๅ็ฉบ',
- 'dashboard.indicator.backtest.both': '้ๅ',
- 'dashboard.indicator.backtest.run': '้ๅงๅๆธฌ',
- 'dashboard.indicator.backtest.rerun': '้ๆฐๅๆธฌ',
- 'dashboard.indicator.backtest.close': '้้',
- 'dashboard.indicator.backtest.running': 'ๆญฃๅจ้ฒ่กๆๆจๅๆธฌ...',
- 'dashboard.indicator.backtest.loadingTip1': 'ๆญฃๅจ็ฒๅๆญทๅฒK็ทๆธๆ...',
- 'dashboard.indicator.backtest.loadingTip2': 'ๆญฃๅจๅท่ก็ญ็ฅไฟก่่จ็ฎ...',
- 'dashboard.indicator.backtest.loadingTip3': 'ๆญฃๅจๆจกๆฌไบคๆๅท่ก...',
- 'dashboard.indicator.backtest.loadingTip4': 'ๆญฃๅจ่จ็ฎๅๆธฌๆๆจ...',
- 'dashboard.indicator.backtest.loadingTip5': 'ๅณๅฐๅฎๆ๏ผ่ซ็จๅ...',
- 'dashboard.indicator.backtest.results': 'ๅๆธฌ็ตๆ',
- 'dashboard.indicator.backtest.totalReturn': '็ธฝๆถ็็',
- 'dashboard.indicator.backtest.annualReturn': 'ๅนดๅๆถ็',
- 'dashboard.indicator.backtest.maxDrawdown': 'ๆๅคงๅๆค',
- 'dashboard.indicator.backtest.sharpeRatio': 'ๅคๆฎๆฏ็',
- 'dashboard.indicator.backtest.winRate': 'ๅ็',
- 'dashboard.indicator.backtest.profitFactor': '็่งๆฏ',
- 'dashboard.indicator.backtest.totalTrades': 'ไบคๆๆฌกๆธ',
- 'dashboard.indicator.totalReturn': '็ธฝๆถ็็',
- 'dashboard.indicator.annualReturn': 'ๅนดๅๆถ็็',
- 'dashboard.indicator.maxDrawdown': 'ๆๅคงๅๆค',
- 'dashboard.indicator.sharpeRatio': 'ๅคๆฎๆฏ็',
- 'dashboard.indicator.winRate': 'ๅ็',
- 'dashboard.indicator.profitFactor': '็่งๆฏ',
- 'dashboard.indicator.totalTrades': '็ธฝไบคๆๆฌกๆธ',
- 'dashboard.indicator.backtest.totalCommission': '็ธฝๆ็บ่ฒป',
- 'dashboard.indicator.backtest.equityCurve': 'ๆถ็ๆฒ็ท',
- 'dashboard.indicator.backtest.strategy': 'ๆๆจๆถ็',
- 'dashboard.indicator.backtest.benchmark': 'ๅบๆบๆถ็',
- 'dashboard.indicator.backtest.tradeHistory': 'ไบคๆ่จ้',
- 'dashboard.indicator.backtest.tradeTime': 'ๆ้',
- 'dashboard.indicator.backtest.tradeType': '้กๅ',
- 'dashboard.indicator.backtest.buy': '่ฒทๅ
ฅ',
- 'dashboard.indicator.backtest.sell': '่ณฃๅบ',
- 'dashboard.indicator.backtest.liquidation': '็ๅ',
- 'dashboard.indicator.backtest.openLong': '้ๅค',
- 'dashboard.indicator.backtest.closeLong': 'ๅนณๅค',
- 'dashboard.indicator.backtest.closeLongStop': 'ๅนณๅค(ๆญขๆ)',
- 'dashboard.indicator.backtest.closeLongProfit': 'ๅนณๅค(ๆญข็)',
- 'dashboard.indicator.backtest.addLong': 'ๅ ๅคๅ',
- 'dashboard.indicator.backtest.openShort': '้็ฉบ',
- 'dashboard.indicator.backtest.closeShort': 'ๅนณ็ฉบ',
- 'dashboard.indicator.backtest.closeShortStop': 'ๅนณ็ฉบ(ๆญขๆ)',
- 'dashboard.indicator.backtest.closeShortProfit': 'ๅนณ็ฉบ(ๆญข็)',
- 'dashboard.indicator.backtest.addShort': 'ๅ ็ฉบๅ',
- 'dashboard.indicator.backtest.price': 'ๅนๆ ผ',
- 'dashboard.indicator.backtest.amount': 'ๆธ้',
- 'dashboard.indicator.backtest.balance': '่ณฌๆถ้ค้ก',
- 'dashboard.indicator.backtest.profit': '็่ง',
- 'dashboard.indicator.backtest.success': 'ๅๆธฌๅฎๆ',
- 'dashboard.indicator.backtest.failed': 'ๅๆธฌๅคฑๆ๏ผ่ซ็จๅพ้่ฉฆ',
- 'dashboard.indicator.backtest.quickSelect': 'ๅฟซ้้ธๆ',
- // ๅคๆ้ๆกๆถๅๆธฌ็ฒพๅบฆๆ็คบ
- 'dashboard.indicator.backtest.precisionMode': 'ๅๆธฌ็ฒพๅบฆๆจกๅผ',
- 'dashboard.indicator.backtest.estimatedCandles': '้ ่จ่็็ด {count} ๆ นK็ท',
- 'dashboard.indicator.backtest.highPrecisionDesc': 'ไฝฟ็จ1ๅ้็ดๅฅK็ท้ฒ่ก้ซ็ฒพๅบฆๅๆธฌ๏ผๆญขๆๆญข็่งธ็ผๆด็ฒพ็ขบ',
- 'dashboard.indicator.backtest.mediumPrecisionDesc': 'ๅๆธฌๅ้่ถ
้30ๅคฉ๏ผไฝฟ็จ5ๅ้็ดๅฅK็ทไปฅๅนณ่กก็ฒพๅบฆ่ๆง่ฝ',
- 'dashboard.indicator.backtest.standardModeWarning': 'ไฝฟ็จๆจๆบๅๆธฌๆจกๅผ',
- 'dashboard.indicator.backtest.standardModeDesc': '็ถๅ้
็ฝฎไธๆฏๆ้ซ็ฒพๅบฆๅๆธฌ๏ผๅฐไฝฟ็จ็ญ็ฅK็ท้ฒ่กๅๆธฌ',
- 'dashboard.indicator.backtest.onlyCryptoSupported': '้ซ็ฒพๅบฆๅๆธฌๅ
ๆฏๆๅ ๅฏ่ฒจๅนฃๅธๅ ด',
- 'dashboard.indicator.backtest.noIndicatorCode': '่ฉฒๆๆจๆฒๆๅฏๅๆธฌ็ไปฃ็ขผ',
- 'dashboard.indicator.backtest.noSymbol': '่ซๅ
้ธๆไบคๆๆจ็',
- 'dashboard.indicator.backtest.dateRangeExceeded': 'ๅๆธฌๆ้็ฏๅ่ถ
ๅบ้ๅถ๏ผ{timeframe}ๅจๆๆๅคๅฏๅๆธฌ{maxRange}',
- 'dashboard.indicator.backtest.dateRangeExceededDays': 'ๅๆธฌๆ้็ฏๅ่ถ
ๅบ้ๅถ๏ผ{timeframe}ๅจๆๆๅคๅฏๅๆธฌ{maxRange}๏ผ{maxDays}ๅคฉ๏ผ',
- 'dashboard.indicator.backtest.metaLine': 'ๆจ็๏ผ{symbol} | ๅธๅ ด๏ผ{market} | ้ฑๆ๏ผ{timeframe}',
- 'dashboard.indicator.backtest.savedRunId': 'ๅๆธฌๅทฒไฟๅญ๏ผ่จ้ID๏ผ{id}',
- 'dashboard.indicator.backtest.historyTitle': 'ๅๆธฌ่จ้',
- 'dashboard.indicator.backtest.historyRefresh': '้ๆฐๆด็',
- 'dashboard.indicator.backtest.historyView': 'ๆฅ็',
- 'dashboard.indicator.backtest.historyNoData': 'ๆซ็กๅๆธฌ่จ้',
- 'dashboard.indicator.backtest.historyUseCurrent': 'ๅ
็ฎๅๅนฃ็จฎ/้ฑๆ',
- 'dashboard.indicator.backtest.historyFilterSymbol': 'ๅนฃ็จฎ๏ผSymbol๏ผ',
- 'dashboard.indicator.backtest.historyFilterTimeframe': '้ฑๆ๏ผTimeframe๏ผ',
- 'dashboard.indicator.backtest.historyApply': 'ๅฅ็จ็ฏฉ้ธ',
- 'dashboard.indicator.backtest.historyAIAnalyze': 'AIๅๆ',
- 'dashboard.indicator.backtest.historyAIAnalyzeTitle': 'AI ๅๆๅปบ่ญฐ',
- 'dashboard.indicator.backtest.historyNoAIResult': 'ๆซ็ก AI ๅๆ็ตๆ',
- 'dashboard.indicator.backtest.historyRunId': '่จ้ID',
- 'dashboard.indicator.backtest.historyCreatedAt': 'ๆ้',
- 'dashboard.indicator.backtest.historyRange': 'ๅ้',
- 'dashboard.indicator.backtest.historyStatus': '็ๆ
',
- 'dashboard.indicator.backtest.historyStatusSuccess': 'ๆๅ',
- 'dashboard.indicator.backtest.historyStatusFailed': 'ๅคฑๆ',
- 'dashboard.indicator.backtest.historyActions': 'ๆไฝ',
- 'dashboard.indicator.backtest.prev': 'ไธไธๆญฅ',
- 'dashboard.indicator.backtest.next': 'ไธไธๆญฅ',
- 'dashboard.indicator.backtest.steps.strategy.title': 'ๅท่ก้
็ฝฎ',
- 'dashboard.indicator.backtest.steps.strategy.desc': 'ๅไฝ/้ขจๆง/ๅ ๆธๅ๏ผ็ญ็ฅๅฑค๏ผ',
- 'dashboard.indicator.backtest.steps.trading.title': 'ๅๆธฌ็ฐๅข',
- 'dashboard.indicator.backtest.steps.trading.desc': 'ๆ้/่ณ้/่ฒป็/ๆงๆกฟ/ๆป้ป',
- 'dashboard.indicator.backtest.steps.results.title': '็ตๆ',
- 'dashboard.indicator.backtest.steps.results.desc': '็ตฑ่จ่ไบคๆๆ็ดฐ',
- 'dashboard.indicator.backtest.panel.risk': 'ๅท่ก้
็ฝฎ๏ผ้ขจๆง๏ผๆญขๆ/็งปๅๆญข็๏ผ',
- 'dashboard.indicator.backtest.panel.scale': 'ๅท่ก้
็ฝฎ๏ผๅ ๅ๏ผ้ ๅข/้ๅข๏ผ',
- 'dashboard.indicator.backtest.panel.reduce': 'ๅท่ก้
็ฝฎ๏ผๆธๅ๏ผ้ ๅข/้ๅข๏ผ',
- 'dashboard.indicator.backtest.panel.position': 'ๅท่ก้
็ฝฎ๏ผ้ๅๅไฝ',
- 'dashboard.indicator.backtest.field.stopLossPct': 'ๆญขๆ๏ผ%๏ผ',
- 'dashboard.indicator.backtest.field.takeProfitPct': 'ๆญข็๏ผ%๏ผ',
- 'dashboard.indicator.backtest.field.trailingEnabled': '็งปๅๆญข็',
- 'dashboard.indicator.backtest.field.trailingStopPct': '็งปๅๅๆค๏ผ%๏ผ',
- 'dashboard.indicator.backtest.field.trailingActivationPct': '็งปๅๆญข็ๆฟๆดป๏ผ%๏ผ',
- 'dashboard.indicator.backtest.field.slippage': 'ๆป้ป๏ผ%๏ผ',
- 'dashboard.indicator.backtest.field.trendAddEnabled': '้ ๅขๅ ๅ',
- 'dashboard.indicator.backtest.field.dcaAddEnabled': '้ๅขๅ ๅ',
- 'dashboard.indicator.backtest.field.trendAddStepPct': 'ๅ ๅ่งธ็ผ๏ผ%๏ผ',
- 'dashboard.indicator.backtest.field.dcaAddStepPct': 'ๅ ๅ่งธ็ผ๏ผ%๏ผ',
- 'dashboard.indicator.backtest.field.trendAddSizePct': 'ๆฏๆฌกๅ ๅ่ณ้ๅ ๆฏ๏ผ%๏ผ',
- 'dashboard.indicator.backtest.field.dcaAddSizePct': 'ๆฏๆฌกๅ ๅ่ณ้ๅ ๆฏ๏ผ%๏ผ',
- 'dashboard.indicator.backtest.field.trendAddMaxTimes': 'ๆๅคๅ ๅๆฌกๆธ',
- 'dashboard.indicator.backtest.field.dcaAddMaxTimes': 'ๆๅคๅ ๅๆฌกๆธ',
- 'dashboard.indicator.backtest.field.trendReduceEnabled': '้ ๅขๆธๅ',
- 'dashboard.indicator.backtest.field.adverseReduceEnabled': '้ๅขๆธๅ',
- 'dashboard.indicator.backtest.field.trendReduceStepPct': '้ ๅข่งธ็ผ๏ผ%๏ผ',
- 'dashboard.indicator.backtest.field.adverseReduceStepPct': '้ๅข่งธ็ผ๏ผ%๏ผ',
- 'dashboard.indicator.backtest.field.trendReduceSizePct': 'ๆฏๆฌกๆธๅๆฏไพ๏ผ%๏ผ',
- 'dashboard.indicator.backtest.field.adverseReduceSizePct': 'ๆฏๆฌก้ๅขๆธๅๆฏไพ๏ผ%๏ผ',
- 'dashboard.indicator.backtest.field.trendReduceMaxTimes': 'ๆๅค้ ๅขๆธๅๆฌกๆธ',
- 'dashboard.indicator.backtest.field.adverseReduceMaxTimes': 'ๆๅค้ๅขๆธๅๆฌกๆธ',
- 'dashboard.indicator.backtest.field.entryPct': '้ๅ่ณ้ๅ ๆฏ๏ผ%๏ผ',
- 'dashboard.indicator.backtest.field.minOrderPct': 'ๅฎๆฌกๆๅฐ่ณ้ๅ ๆฏ๏ผ%๏ผ๏ผๅฏ้ธ๏ผ',
- 'dashboard.indicator.backtest.hint.entryPctMax': 'ๆๅคงๅฏ้ๅ๏ผ{maxPct}%๏ผ็บๅพ็บๅ ๅ้ ็่ณ้๏ผ',
- 'dashboard.indicator.backtest.closeLongTrailing': 'ๅนณๅค(็งปๅๆญขๆ/ๆญข็)',
- 'dashboard.indicator.backtest.reduceLong': 'ๅค้ ญๆธๅ',
- 'dashboard.indicator.backtest.closeShortTrailing': 'ๅนณ็ฉบ(็งปๅๆญขๆ/ๆญข็)',
- 'dashboard.indicator.backtest.reduceShort': '็ฉบ้ ญๆธๅ',
- 'dashboard.docs.title': 'ๆๆชไธญๅฟ',
- 'dashboard.docs.search.placeholder': 'ๆ็ดขๆๆช...',
- 'dashboard.docs.category.all': 'ๅ
จ้จ',
- 'dashboard.docs.category.guide': '้็ผๆๅ',
- 'dashboard.docs.category.api': 'APIๆๆช',
- 'dashboard.docs.category.tutorial': 'ๆ็จ',
- 'dashboard.docs.category.faq': 'ๅธธ่ฆๅ้ก',
- 'dashboard.docs.featured.title': 'ๆจ่ฆๆๆช',
- 'dashboard.docs.featured.tag': 'ๆจ่ฆ',
- 'dashboard.docs.list.views': '็่ฆฝ',
- 'dashboard.docs.list.author': 'ไฝ่
',
- 'dashboard.docs.list.empty': 'ๆซ็กๆๆช',
- 'dashboard.docs.list.backToAll': '่ฟๅๅ
จ้จๆๆช',
- 'dashboard.docs.list.total': 'ๅ
ฑ {count} ็ฏๆๆช',
- 'dashboard.docs.detail.back': '่ฟๅๆๆชๅ่กจ',
- 'dashboard.docs.detail.updatedAt': 'ๆดๆฐๆผ',
- 'dashboard.docs.detail.related': '็ธ้ๆๆช',
- 'dashboard.docs.detail.notFound': 'ๆๆชไธๅญๅจ',
- 'dashboard.docs.detail.error': 'ๆๆชไธๅญๅจๆๅทฒ่ขซๅช้ค',
- 'dashboard.docs.search.result': 'ๆ็ดข็ตๆ',
- 'dashboard.docs.search.keyword': '้้ต่ฉ',
- 'community.filter.indicatorType': 'ๆๆจ้กๅ',
- 'community.filter.all': 'ๅ
จ้จ',
- 'community.filter.other': 'ๅ
ถไป้ธ้
',
- 'community.filter.pricing': 'ๅฎๅน้กๅ',
- 'community.filter.allPricing': 'ๅ
จ้จๅฎๅน',
- 'community.filter.sortBy': 'ๆๅบๆนๅผ',
- 'community.filter.search': 'ๆ็ดข',
- 'community.filter.searchPlaceholder': 'ๆ็ดขๆๆจๅ็จฑ',
- 'community.indicatorType.trend': '่ถจๅขๅ',
- 'community.indicatorType.momentum': 'ๅ้ๅ',
- 'community.indicatorType.volatility': 'ๆณขๅ็',
- 'community.indicatorType.volume': 'ๆไบค้',
- 'community.indicatorType.custom': '่ชๅฎ็พฉ',
- 'community.pricing.free': 'ๅ
่ฒป',
- 'community.pricing.paid': 'ไป่ฒป',
- 'community.sort.downloads': 'ไธ่ผ้',
- 'community.sort.rating': '่ฉๅ',
- 'community.sort.newest': 'ๆๆฐ็ผๅธ',
- 'community.pagination.total': 'ๅ
ฑ {total} ๅๆๆจ',
- 'community.noDescription': 'ๆซ็กๆ่ฟฐ',
- 'community.detail.type': '้กๅ',
- 'community.detail.pricing': 'ๅฎๅน',
- 'community.detail.rating': '่ฉๅ',
- 'community.detail.downloads': 'ไธ่ผ้',
- 'community.detail.author': 'ไฝ่
',
- 'community.detail.description': '็ฐกไป',
- 'community.detail.detailContent': '่ฉณ็ดฐ่ชชๆ',
- 'community.detail.backtestStats': 'ๅๆธฌ็ตฑ่จ',
- 'community.action.purchase': '่ณผ่ฒทๆๆจ',
- 'community.action.addToMyIndicators': 'ๆทปๅ ๅฐๆ็ๆๆจ',
- 'community.action.favorite': 'ๆถ่',
- 'community.action.unfavorite': 'ๅๆถๆถ่',
- 'community.action.buyNow': '็ซๅณ่ณผ่ฒท',
- 'community.action.renew': '็บ่ฒป',
- 'community.purchase.price': 'ๅนๆ ผ',
- 'community.purchase.permanent': 'ๆฐธไน
',
- 'community.purchase.monthly': 'ๆ',
- 'community.purchase.confirmBuy': '็ขบ่ช่ณผ่ฒท่ฉฒๆๆจ๏ผ{price} QDT๏ผ๏ผ',
- 'community.purchase.confirmRenew': '็ขบ่ช็บ่ฒป่ฉฒๆๆจ๏ผ{price} QDT/ๆ๏ผ๏ผ',
- 'community.purchase.confirmFree': '็ขบ่ชๆทปๅ ่ฉฒๅ
่ฒปๆๆจ๏ผ',
- 'community.purchase.confirmTitle': '็ขบ่ชๆไฝ',
- 'community.purchase.owned': 'ๆจๅทฒ่ณผ่ฒท่ฉฒๆๆจ๏ผๆฐธไน
ๆๆ๏ผ',
- 'community.purchase.ownIndicator': '้ๆฏๆจ็ผๅธ็ๆๆจ',
- 'community.purchase.expired': 'ๆจ็่จ้ฑๅทฒ้ๆ',
- 'community.purchase.expiresOn': 'ๅฐๆๆ้๏ผ{date}',
- 'community.tabs.detail': 'ๆๆจ่ฉณๆ
',
- 'community.tabs.backtest': 'ๅๆธฌๆธๆ',
- 'community.tabs.ratings': '็จๆถ่ฉๅน',
- 'community.rating.myRating': 'ๆ็่ฉๅ',
- 'community.rating.stars': '{count} ๆ',
- 'community.rating.commentPlaceholder': 'ๅไบซๆจ็ไฝฟ็จ้ซ้ฉ...',
- 'community.rating.submit': 'ๆไบค่ฉๅ',
- 'community.rating.modify': 'ไฟฎๆน',
- 'community.rating.saveModify': 'ไฟๅญไฟฎๆน',
- 'community.rating.cancel': 'ๅๆถ',
- 'community.rating.selectRating': '่ซ้ธๆ่ฉๅ',
- 'community.rating.success': '่ฉๅๆๅ',
- 'community.rating.modifySuccess': 'ไฟฎๆน่ฉๅนๆๅ',
- 'community.rating.failed': '่ฉๅๅคฑๆ',
- 'community.rating.noRatings': 'ๆซ็ก่ฉๅน',
- 'community.backtest.note': 'ไปฅไธๆธๆ็ฒๆญทๅฒๅๆธฌ็ตๆ๏ผๅ
ไพๅ่๏ผไธไปฃ่กจๆชไพๆถ็',
- 'community.backtest.noData': 'ๆซ็กๅๆธฌๆธๆ',
- 'community.backtest.uploadHint': 'ไฝ่
ๅฐๆชไธๅณๅๆธฌๆธๆ',
- 'community.message.loadFailed': 'ๅ ่ผๆๆจๅ่กจๅคฑๆ',
- 'community.message.purchaseProcessing': 'ๆญฃๅจ่็่ณผ่ฒท่ซๆฑ...',
- 'community.message.downloadSuccess': 'ๆๆจๅทฒๆทปๅ ๅฐๆ็ๆๆจๅ่กจ',
- 'community.message.favoriteSuccess': 'ๆถ่ๆๅ',
- 'community.message.unfavoriteSuccess': 'ๅๆถๆถ่ๆๅ',
- 'community.message.operationSuccess': 'ๆไฝๆๅ',
- 'community.message.operationFailed': 'ๆไฝๅคฑๆ',
- 'community.banner.readOnly': 'ๅ
ไพ็่ฆฝ',
- 'community.banner.loginHint': 'ๅฆ้็ป้่จปๅ่ซ้ปๆๆ้่ทณ่ฝๅฐ็จ็ซ้ ้ข๏ผๅพ่้ฟๅ
CSRFๅ้ก',
- 'community.banner.jumpButton': '่ทณ่ฝๅฐ็ป้/่จปๅ',
- 'dashboard.totalEquity': '็ธฝๆฌ็',
- 'dashboard.totalPnL': '็ธฝ็่ง',
- 'dashboard.aiStrategies': 'AI ็ญ็ฅ',
- 'dashboard.indicatorStrategies': 'ๆๆจ็ญ็ฅ',
- 'dashboard.running': '้่กไธญ',
- 'dashboard.enabled': 'ๅทฒๅ็จ',
- 'dashboard.pnlHistory': 'ๆญทๅฒ็่ง',
- 'dashboard.strategyPerformance': '็ญ็ฅ็่งไฝๆฏ',
- 'dashboard.drawdown': 'ๅๆคๆฒ็ท',
- 'dashboard.strategyRanking': '็ญ็ฅๆ่กๆฆ',
- // New KPI labels
- 'dashboard.winRate': 'ๅ็',
- 'dashboard.profitFactor': '็่งๆฏ',
- 'dashboard.maxDrawdown': 'ๆๅคงๅๆค',
- 'dashboard.totalTrades': '็ธฝไบคๆ',
- 'dashboard.runningStrategies': '้่กไธญ็ญ็ฅ',
- 'dashboard.equityCurve': 'ๆฌ็ๆฒ็ท',
- 'dashboard.strategyAllocation': '็ญ็ฅๅไฝ',
- 'dashboard.drawdownCurve': 'ๅๆคๆฒ็ท',
- 'dashboard.hourlyDistribution': 'ไบคๆๆๆฎต',
- // Chart labels
- 'dashboard.dailyPnl': 'ๆฅ็่ง',
- 'dashboard.cumulativePnl': '็ดฏ่จ็่ง',
- 'dashboard.tradeCount': 'ไบคๆๆฌกๆธ',
- 'dashboard.profit': '็่ง',
- 'dashboard.noData': 'ๆซ็กๆธๆ',
- 'dashboard.noStrategyData': 'ๆซ็ก็ญ็ฅๆธๆ',
- // Ranking labels
- 'dashboard.ranking.totalProfit': '็ธฝๆถ็',
- 'dashboard.ranking.roi': 'ๆถ็็',
- 'dashboard.ranking.trades': 'ไบคๆๆธ',
- // Units and labels
- 'dashboard.unit.trades': '็ญ',
- 'dashboard.unit.strategies': 'ๅ',
- 'dashboard.label.avgDaily': 'ๆฅๅ',
- 'dashboard.label.avgProfit': 'ๅนณๅ็ๅฉ',
- 'dashboard.label.win': 'ๅ',
- 'dashboard.label.lose': '่ฒ ',
- 'dashboard.label.trade': 'ไบคๆ',
- 'dashboard.label.indicator': 'ๆๆจ',
- 'dashboard.label.totalPnl': '็ธฝ็่ง',
- 'dashboard.label.maxDrawdownPoint': 'ๆๅคงๅๆค',
- 'dashboard.profitCalendar': 'ๆถ็ๆฅๆ',
- 'dashboard.recentTrades': 'ๆ่ฟไบคๆ',
- 'dashboard.currentPositions': '็ถๅๆๅ',
- 'dashboard.table.time': 'ๆ้',
- 'dashboard.table.strategy': '็ญ็ฅๅ็จฑ',
- 'dashboard.table.symbol': 'ๆจ็',
- 'dashboard.table.type': '้กๅ',
- 'dashboard.table.side': 'ๆนๅ',
- 'dashboard.table.size': 'ๆๅ้',
- 'dashboard.table.entryPrice': '้ๅๅๅน',
- 'dashboard.table.price': 'ๅนๆ ผ',
- 'dashboard.table.amount': 'ๆธ้',
- 'dashboard.table.profit': '็่ง',
- 'dashboard.pendingOrders': '่จๅฎๅท่ก่จ้',
- 'dashboard.totalOrders': 'ๅ
ฑ {total} ๆข',
- 'dashboard.viewError': 'ๆฅ็้ฏ่ชค',
- 'dashboard.filled': 'ๅทฒๆไบค',
- 'dashboard.orderTable.time': 'ๅตๅปบๆ้',
- 'dashboard.orderTable.strategy': '็ญ็ฅ',
- 'dashboard.orderTable.symbol': 'ไบคๆๅฐ',
- 'dashboard.orderTable.signalType': 'ไฟก่้กๅ',
- 'dashboard.orderTable.amount': 'ๆธ้',
- 'dashboard.orderTable.price': 'ๆไบคๅน',
- 'dashboard.orderTable.status': '็ๆ
',
- 'dashboard.orderTable.timeInfo': 'ๆ้',
- 'dashboard.orderTable.executedAt': 'ๅท่กๆ้',
- 'dashboard.orderTable.exchange': 'ไบคๆๆ',
- 'dashboard.orderTable.notify': '้็ฅๆนๅผ',
- 'dashboard.orderTable.actions': 'ๆไฝ',
- 'dashboard.orderTable.delete': 'ๅช้ค',
- 'dashboard.orderTable.deleteConfirm': '็ขบ่ชๅช้ค้ๆข่จ้๏ผ',
- 'dashboard.orderTable.deleteSuccess': 'ๅช้คๆๅ',
- 'dashboard.orderTable.deleteFailed': 'ๅช้คๅคฑๆ',
- 'dashboard.newOrderNotify': 'ๆฐ่จๅฎๆ้',
- 'dashboard.newOrderDesc': 'ๆๆฐ็่จๅฎๅท่ก่จ้',
- 'dashboard.soundEnabled': '่ฒ้ณๆ้ๅทฒ้ๅ',
- 'dashboard.soundDisabled': '่ฒ้ณๆ้ๅทฒ้้',
- 'dashboard.clickToMute': '้ปๆ้้่ฒ้ณๆ้',
- 'dashboard.clickToUnmute': '้ปๆ้ๅ่ฒ้ณๆ้',
- 'dashboard.signalType.openLong': '้ๅค',
- 'dashboard.signalType.openShort': '้็ฉบ',
- 'dashboard.signalType.closeLong': 'ๅนณๅค',
- 'dashboard.signalType.closeShort': 'ๅนณ็ฉบ',
- 'dashboard.signalType.addLong': 'ๅ ๅค',
- 'dashboard.signalType.addShort': 'ๅ ็ฉบ',
- 'dashboard.status.pending': 'ๅพ
่็',
- 'dashboard.status.processing': '่็ไธญ',
- 'dashboard.status.completed': 'ๅทฒๅฎๆ',
- 'dashboard.status.failed': 'ๅคฑๆ',
- 'dashboard.status.cancelled': 'ๅทฒๅๆถ',
- 'dashboard.table.pnl': 'ๆชๅฏฆ็พ็่ง',
- 'form.basic-form.basic.title': 'ๅบ็ค่กจๅฎ',
- 'form.basic-form.basic.description': '่กจๅฎ้ ็จๆผๅ็จๆถๆถ้ๆ้ฉ่ญไฟกๆฏ๏ผๅบ็ค่กจๅฎๅธธ่ฆๆผๆธๆ้
่ผๅฐ็่กจๅฎๅ ดๆฏใ',
- 'form.basic-form.title.label': 'ๆจ้ก',
- 'form.basic-form.title.placeholder': '็ตฆ็ฎๆจ่ตทๅๅๅญ',
- 'form.basic-form.title.required': '่ซ่ผธๅ
ฅๆจ้ก',
- 'form.basic-form.date.label': '่ตทๆญขๆฅๆ',
- 'form.basic-form.placeholder.start': '้ๅงๆฅๆ',
- 'form.basic-form.placeholder.end': '็ตๆๆฅๆ',
- 'form.basic-form.date.required': '่ซ้ธๆ่ตทๆญขๆฅๆ',
- 'form.basic-form.goal.label': '็ฎๆจๆ่ฟฐ',
- 'form.basic-form.goal.placeholder': '่ซ่ผธๅ
ฅไฝ ็้ๆฎตๆงๅทฅไฝ็ฎๆจ',
- 'form.basic-form.goal.required': '่ซ่ผธๅ
ฅ็ฎๆจๆ่ฟฐ',
- 'form.basic-form.standard.label': '่กก้ๆจๆบ',
- 'form.basic-form.standard.placeholder': '่ซ่ผธๅ
ฅ่กก้ๆจๆบ',
- 'form.basic-form.standard.required': '่ซ่ผธๅ
ฅ่กก้ๆจๆบ',
- 'form.basic-form.client.label': 'ๅฎขๆถ',
- 'form.basic-form.client.required': '่ซๆ่ฟฐไฝ ๆๅ็ๅฎขๆถ',
- 'form.basic-form.label.tooltip': '็ฎๆจ็ๆๅๅฐ่ฑก',
- 'form.basic-form.client.placeholder': '่ซๆ่ฟฐไฝ ๆๅ็ๅฎขๆถ๏ผๅ
ง้จๅฎขๆถ็ดๆฅ @ๅงๅ๏ผๅทฅ่',
- 'form.basic-form.invites.label': '้่ฉไบบ',
- 'form.basic-form.invites.placeholder': '่ซ็ดๆฅ @ๅงๅ๏ผๅทฅ่๏ผๆๅคๅฏ้่ซ 5 ไบบ',
- 'form.basic-form.weight.label': 'ๆฌ้',
- 'form.basic-form.weight.placeholder': '่ซ่ผธๅ
ฅ',
- 'form.basic-form.public.label': '็ฎๆจๅ
ฌ้',
- 'form.basic-form.label.help': 'ๅฎขๆถใ้่ฉไบบ้ป่ช่ขซๅไบซ',
- 'form.basic-form.radio.public': 'ๅ
ฌ้',
- 'form.basic-form.radio.partially-public': '้จๅๅ
ฌ้',
- 'form.basic-form.radio.private': 'ไธๅ
ฌ้',
- 'form.basic-form.publicUsers.placeholder': 'ๅ
ฌ้็ตฆ',
- 'form.basic-form.option.A': 'ๅไบไธ',
- 'form.basic-form.option.B': 'ๅไบไบ',
- 'form.basic-form.option.C': 'ๅไบไธ',
- 'form.basic-form.email.required': '่ซ่ผธๅ
ฅ้ต็ฎฑๅฐๅ๏ผ',
- 'form.basic-form.email.wrong-format': '้ต็ฎฑๅฐๅๆ ผๅผ้ฏ่ชค๏ผ',
- 'form.basic-form.userName.required': '่ซ่ผธๅ
ฅ็จๆถๅ!',
- 'form.basic-form.password.required': '่ซ่ผธๅ
ฅๅฏ็ขผ๏ผ',
- 'form.basic-form.password.twice': 'ๅ
ฉๆฌก่ผธๅ
ฅ็ๅฏ็ขผไธๅน้
!',
- 'form.basic-form.strength.msg': '่ซ่ณๅฐ่ผธๅ
ฅ 6 ๅๅญ็ฌฆใ่ซไธ่ฆไฝฟ็จๅฎนๆ่ขซ็ๅฐ็ๅฏ็ขผใ',
- 'form.basic-form.strength.strong': 'ๅผทๅบฆ๏ผๅผท',
- 'form.basic-form.strength.medium': 'ๅผทๅบฆ๏ผไธญ',
- 'form.basic-form.strength.short': 'ๅผทๅบฆ๏ผๅคช็ญ',
- 'form.basic-form.confirm-password.required': '่ซ็ขบ่ชๅฏ็ขผ๏ผ',
- 'form.basic-form.phone-number.required': '่ซ่ผธๅ
ฅๆๆฉ่๏ผ',
- 'form.basic-form.phone-number.wrong-format': 'ๆๆฉ่ๆ ผๅผ้ฏ่ชค๏ผ',
- 'form.basic-form.verification-code.required': '่ซ่ผธๅ
ฅ้ฉ่ญ็ขผ๏ผ',
- 'form.basic-form.form.get-captcha': '็ฒๅ้ฉ่ญ็ขผ',
- 'form.basic-form.captcha.second': '็ง',
- 'form.basic-form.form.optional': '๏ผ้ธๅกซ๏ผ',
- 'form.basic-form.form.submit': 'ๆไบค',
- 'form.basic-form.form.save': 'ไฟๅญ',
- 'form.basic-form.email.placeholder': '้ต็ฎฑ',
- 'form.basic-form.password.placeholder': '่ณๅฐ6ไฝๅฏ็ขผ๏ผๅๅๅคงๅฐๅฏซ',
- 'form.basic-form.confirm-password.placeholder': '็ขบ่ชๅฏ็ขผ',
- 'form.basic-form.phone-number.placeholder': 'ๆๆฉ่',
- 'form.basic-form.verification-code.placeholder': '้ฉ่ญ็ขผ',
- 'result.success.title': 'ๆไบคๆๅ',
- 'result.success.description': 'ๆไบค็ตๆ้ ็จๆผๅ้ฅไธ็ณปๅๆไฝไปปๅ็่็็ตๆ๏ผ ๅฆๆๅ
ๆฏ็ฐกๅฎๆไฝ๏ผไฝฟ็จ Message ๅ
จๅฑๆ็คบๅ้ฅๅณๅฏใ ๆฌๆๅญๅๅๅฏไปฅๅฑ็คบ็ฐกๅฎ็่ฃๅ
่ชชๆ๏ผๅฆๆๆ้กไผผๅฑ็คบ โๅฎๆโ็้ๆฑ๏ผไธ้ข้ๅ็ฐ่ฒๅๅๅฏไปฅๅ็พๆฏ่ผๅพฉ้็ๅ
งๅฎนใ',
- 'result.success.operate-title': '้
็ฎๅ็จฑ',
- 'result.success.operate-id': '้
็ฎ ID',
- 'result.success.principal': '่ฒ ่ฒฌไบบ',
- 'result.success.operate-time': '็ๆๆ้',
- 'result.success.step1-title': 'ๅตๅปบ้
็ฎ',
- 'result.success.step1-operator': 'ๆฒ้บ้บ',
- 'result.success.step2-title': '้จ้ๅๅฏฉ',
- 'result.success.step2-operator': 'ๅจๆฏๆฏ',
- 'result.success.step2-extra': 'ๅฌไธไธ',
- 'result.success.step3-title': '่ฒกๅๅพฉๆ ธ',
- 'result.success.step4-title': 'ๅฎๆ',
- 'result.success.btn-return': '่ฟๅๅ่กจ',
- 'result.success.btn-project': 'ๆฅ็้
็ฎ',
- 'result.success.btn-print': 'ๆๅฐ',
- 'result.fail.error.title': 'ๆไบคๅคฑๆ',
- 'result.fail.error.description': '่ซๆ ธๅฐไธฆไฟฎๆนไปฅไธไฟกๆฏๅพ๏ผๅ้ๆฐๆไบคใ',
- 'result.fail.error.hint-title': 'ๆจๆไบค็ๅ
งๅฎนๆๅฆไธ้ฏ่ชค๏ผ',
- 'result.fail.error.hint-text1': 'ๆจ็่ณฌๆถๅทฒ่ขซๅ็ต',
- 'result.fail.error.hint-btn1': '็ซๅณ่งฃๅ',
- 'result.fail.error.hint-text2': 'ๆจ็่ณฌๆถ้ไธๅ
ทๅ็ณ่ซ่ณๆ ผ',
- 'result.fail.error.hint-btn2': '็ซๅณๅ็ด',
- 'result.fail.error.btn-text': '่ฟๅไฟฎๆน',
- 'account.settings.menuMap.custom': 'ๅๆงๅ',
- 'account.settings.menuMap.binding': '่ณฌ่็ถๅฎ',
- 'account.settings.basic.avatar': '้ ญๅ',
- 'account.settings.basic.change-avatar': 'ๆดๆ้ ญๅ',
- 'account.settings.basic.email': '้ต็ฎฑ',
- 'account.settings.basic.email-message': '่ซ่ผธๅ
ฅๆจ็้ต็ฎฑ!',
- 'account.settings.basic.nickname': 'ๆฑ็จฑ',
- 'account.settings.basic.nickname-message': '่ซ่ผธๅ
ฅๆจ็ๆฑ็จฑ!',
- 'account.settings.basic.profile': 'ๅไบบ็ฐกไป',
- 'account.settings.basic.profile-message': '่ซ่ผธๅ
ฅๅไบบ็ฐกไป!',
- 'account.settings.basic.profile-placeholder': 'ๅไบบ็ฐกไป',
- 'account.settings.basic.country': 'ๅๅฎถ/ๅฐๅ',
- 'account.settings.basic.country-message': '่ซ่ผธๅ
ฅๆจ็ๅๅฎถๆๅฐๅ!',
- 'account.settings.basic.geographic': 'ๆๅจ็ๅธ',
- 'account.settings.basic.geographic-message': '่ซ่ผธๅ
ฅๆจ็ๆๅจ็ๅธ!',
- 'account.settings.basic.address': '่ก้ๅฐๅ',
- 'account.settings.basic.address-message': '่ซ่ผธๅ
ฅๆจ็่ก้ๅฐๅ!',
- 'account.settings.basic.phone': '่ฏ็ณป้ป่ฉฑ',
- 'account.settings.basic.phone-message': '่ซ่ผธๅ
ฅๆจ็่ฏ็ณป้ป่ฉฑ!',
- 'account.settings.basic.update': 'ๆดๆฐๅบๆฌไฟกๆฏ',
- 'account.settings.basic.update.success': 'ๆดๆฐๅบๆฌไฟกๆฏๆๅ',
- 'account.settings.security.strong': 'ๅผท',
- 'account.settings.security.medium': 'ไธญ',
- 'account.settings.security.weak': 'ๅผฑ',
- 'account.settings.security.password': '่ณฌๆถๅฏ็ขผ',
- 'account.settings.security.password-description': '็ถๅๅฏ็ขผๅผทๅบฆ๏ผ',
- 'account.settings.security.phone': 'ๅฏไฟๆๆฉ',
- 'account.settings.security.phone-description': 'ๅทฒ็ถๅฎๆๆฉ๏ผ',
- 'account.settings.security.question': 'ๅฏไฟๅ้ก',
- 'account.settings.security.question-description': 'ๆช่จญ็ฝฎๅฏไฟๅ้ก๏ผๅฏไฟๅ้กๅฏๆๆไฟ่ญท่ณฌๆถๅฎๅ
จ',
- 'account.settings.security.email': '็ถๅฎ้ต็ฎฑ',
- 'account.settings.security.email-description': 'ๅทฒ็ถๅฎ้ต็ฎฑ๏ผ',
- 'account.settings.security.mfa': 'MFA ่จญๅ',
- 'account.settings.security.mfa-description': 'ๆช็ถๅฎ MFA ่จญๅ๏ผ็ถๅฎๅพ๏ผๅฏไปฅ้ฒ่กไบๆฌก็ขบ่ช',
- 'account.settings.security.modify': 'ไฟฎๆน',
- 'account.settings.security.set': '่จญ็ฝฎ',
- 'account.settings.security.bind': '็ถๅฎ',
- 'account.settings.binding.taobao': '็ถๅฎๆทๅฏถ',
- 'account.settings.binding.taobao-description': '็ถๅๆช็ถๅฎๆทๅฏถ่ณฌ่',
- 'account.settings.binding.alipay': '็ถๅฎๆฏไปๅฏถ',
- 'account.settings.binding.alipay-description': '็ถๅๆช็ถๅฎๆฏไปๅฏถ่ณฌ่',
- 'account.settings.binding.dingding': '็ถๅฎ้้',
- 'account.settings.binding.dingding-description': '็ถๅๆช็ถๅฎ้้่ณฌ่',
- 'account.settings.binding.bind': '็ถๅฎ',
- 'account.settings.notification.password': '่ณฌๆถๅฏ็ขผ',
- 'account.settings.notification.password-description': 'ๅ
ถไป็จๆถ็ๆถๆฏๅฐไปฅ็ซๅ
งไฟก็ๅฝขๅผ้็ฅ',
- 'account.settings.notification.messages': '็ณป็ตฑๆถๆฏ',
- 'account.settings.notification.messages-description': '็ณป็ตฑๆถๆฏๅฐไปฅ็ซๅ
งไฟก็ๅฝขๅผ้็ฅ',
- 'account.settings.notification.todo': 'ๅพ
่พฆไปปๅ',
- 'account.settings.notification.todo-description': 'ๅพ
่พฆไปปๅๅฐไปฅ็ซๅ
งไฟก็ๅฝขๅผ้็ฅ',
- 'account.settings.settings.open': '้',
- 'account.settings.settings.close': '้',
- 'trading-assistant.title': 'ไบคๆๅฉๆ',
- 'trading-assistant.strategyList': '็ญ็ฅๅ่กจ',
- 'trading-assistant.createStrategy': 'ๅตๅปบ็ญ็ฅ',
- 'trading-assistant.noStrategy': 'ๆซ็ก็ญ็ฅ',
- 'trading-assistant.selectStrategy': '่ซๅพๅทฆๅด้ธๆไธๅ็ญ็ฅๆฅ็่ฉณๆ
',
- 'trading-assistant.startStrategy': 'ๅๅ็ญ็ฅ',
- 'trading-assistant.stopStrategy': 'ๅๆญข็ญ็ฅ',
- 'trading-assistant.editStrategy': '็ทจ่ผฏ็ญ็ฅ',
- 'trading-assistant.deleteStrategy': 'ๅช้ค็ญ็ฅ',
- 'trading-assistant.startAll': 'ๅ
จ้จๅๅ',
- 'trading-assistant.stopAll': 'ๅ
จ้จๅๆญข',
- 'trading-assistant.deleteAll': 'ๅ
จ้จๅช้ค',
- 'trading-assistant.symbolCount': 'ๅๅนฃ็จฎ',
- 'trading-assistant.status.running': '้่กไธญ',
- 'trading-assistant.status.stopped': 'ๅทฒๅๆญข',
- 'trading-assistant.status.error': '้ฏ่ชค',
- 'trading-assistant.strategyType.IndicatorStrategy': 'ๆ่กๆๆจ็ญ็ฅ',
- 'trading-assistant.strategyType.PromptBasedStrategy': 'ๆ็คบ่ฉ็ญ็ฅ',
- 'trading-assistant.strategyType.GridStrategy': '็ถฒๆ ผ็ญ็ฅ',
- 'trading-assistant.tabs.tradingRecords': 'ไบคๆ่จ้',
- 'trading-assistant.tabs.positions': 'ๆๅ่จ้',
- 'trading-assistant.tabs.equityCurve': 'ๆทจๅผๆฒ็ท',
- 'trading-assistant.form.step1': '้ธๆๆๆจ',
- 'trading-assistant.form.step2': 'ไบคๆๆ้
็ฝฎ',
- 'trading-assistant.form.step3': '็ญ็ฅๅๆธ',
- 'trading-assistant.form.step2Params': '็ญ็ฅๅๆธ',
- 'trading-assistant.form.step3Signal': 'ไฟก่้็ฅ',
- 'trading-assistant.form.indicator': '้ธๆๆๆจ',
- 'trading-assistant.form.indicatorHint': 'ๅช่ฝ้ธๆๆจๅทฒ่ณผ่ฒทๆๅตๅปบ็ๆ่กๆๆจ',
- 'trading-assistant.form.qdtCostHints': 'ไฝฟ็จ็ญ็ฅๅฐๆถ่QDT๏ผ่ซ็ขบไฟ่ณฌๆถๆ่ถณๅค ็QDT้ค้ก',
- 'trading-assistant.form.indicatorDescription': 'ๆๆจๆ่ฟฐ',
- 'trading-assistant.form.noDescription': 'ๆซ็กๆ่ฟฐ',
- 'trading-assistant.form.exchange': '้ธๆไบคๆๆ',
- 'trading-assistant.form.apiKey': 'API Key',
- 'trading-assistant.form.secretKey': 'Secret Key',
- 'trading-assistant.form.passphrase': 'Passphrase',
- 'trading-assistant.form.testConnection': 'ๆธฌ่ฉฆ้ฃๆฅ',
- 'trading-assistant.form.strategyName': '็ญ็ฅๅ็จฑ',
- 'trading-assistant.form.symbol': 'ไบคๆๅฐ',
- 'trading-assistant.form.symbols': 'ไบคๆๅฐ๏ผๅค้ธ๏ผ',
- 'trading-assistant.form.symbolHint': '็ฎๅๅ
ๆฏๆๅ ๅฏ่ฒจๅนฃไบคๆๅฐ',
- 'trading-assistant.form.symbolHintCrypto': 'ๅ ๅฏ่ฒจๅนฃ๏ผไฝฟ็จBTC/USDT็ญไบคๆๅฐๆ ผๅผ',
- 'trading-assistant.form.symbolsHint': '้ธๆๅคๅไบคๆๅฐ๏ผๅฐ่ชๅๅตๅปบๅคๅ็ญ็ฅ',
- 'trading-assistant.form.initialCapital': 'ๆๅ
ฅ้้ก',
- 'trading-assistant.form.marketType': 'ๅธๅ ด้กๅ',
- 'trading-assistant.form.marketTypeFutures': 'ๅ็ด',
- 'trading-assistant.form.marketTypeSpot': '็พ่ฒจ',
- 'trading-assistant.form.marketTypeHint': 'ๅ็ดๆฏๆ้ๅไบคๆๅๆงๆ๏ผ็พ่ฒจๅ
ๆฏๆๅๅคไธๆงๆๅบๅฎ็ฒ1ๅ',
- 'trading-assistant.form.leverage': 'ๆงๆๅๆธ',
- 'trading-assistant.form.leverageHint': 'ๅ็ด๏ผ1-125ๅ๏ผ็พ่ฒจ๏ผๅบๅฎ1ๅ',
- 'trading-assistant.form.spotLeverageFixed': '็พ่ฒจไบคๆๆงๆๅบๅฎ็ฒ1ๅ',
- 'trading-assistant.form.spotOnlyLongHint': '็พ่ฒจไบคๆๅ
ๆฏๆๅๅค',
- 'trading-assistant.form.tradeDirection': 'ไบคๆๆนๅ',
- 'trading-assistant.form.tradeDirectionLong': 'ๅ
ๅๅค',
- 'trading-assistant.form.tradeDirectionShort': 'ๅ
ๅ็ฉบ',
- 'trading-assistant.form.tradeDirectionBoth': '้ๅไบคๆ',
- 'trading-assistant.form.timeframe': 'ๆ้ๅจๆ',
- 'trading-assistant.form.klinePeriod': 'K็ทๅจๆ',
- 'trading-assistant.form.timeframe1m': '1ๅ้พ',
- 'trading-assistant.form.timeframe5m': '5ๅ้พ',
- 'trading-assistant.form.timeframe15m': '15ๅ้พ',
- 'trading-assistant.form.timeframe30m': '30ๅ้พ',
- 'trading-assistant.form.timeframe1H': '1ๅฐๆ',
- 'trading-assistant.form.timeframe4H': '4ๅฐๆ',
- 'trading-assistant.form.timeframe1D': '1ๅคฉ',
- 'trading-assistant.form.selectStrategyType': '้ธๆ็ญ็ฅ้กๅ',
- 'trading-assistant.form.indicatorStrategy': 'ๆๆจ็ญ็ฅ',
- 'trading-assistant.form.indicatorStrategyDesc': 'ๅบๆผๆ่กๆๆจ็่ชๅๅไบคๆ็ญ็ฅ',
- 'trading-assistant.form.aiStrategy': 'AI็ญ็ฅ',
- 'trading-assistant.form.aiStrategyDesc': 'ๅบๆผAIๆบ่ฝๆฑบ็ญ็่ชๅๅไบคๆ็ญ็ฅ',
- 'trading-assistant.form.enableAiFilter': 'ๅ็จAIๆบ่ฝๆฑบ็ญ้ๆฟพ',
- 'trading-assistant.form.enableAiFilterHint': 'ๅ็จๅพ๏ผๆๆจไฟก่ๅฐ็ถ้AIๆบ่ฝ้ๆฟพ๏ผๆ้ซไบคๆ่ณช้',
- 'trading-assistant.form.aiFilterPrompt': '่ชๅฎ็พฉๆ็คบ่ฉ',
- 'trading-assistant.form.aiFilterPromptHint': '็บAI้ๆฟพๆไพ่ชๅฎ็พฉๆไปค๏ผ็็ฉบๅไฝฟ็จ็ณป็ตฑ้ป่ช',
- 'trading-assistant.form.executionMode': 'ๅท่กๆจกๅผ',
- 'trading-assistant.form.executionModeSignal': 'ๅ
ไฟก่้็ฅ',
- 'trading-assistant.form.executionModeLive': 'ๅฏฆ็ค่ชๅไบคๆ',
- 'trading-assistant.form.liveTradingCryptoOnlyHint': 'ๅฏฆ็คไบคๆๅ่ฝๅ
ๆฏๆๅ ๅฏ่ฒจๅนฃๅธๅ ด',
- 'trading-assistant.form.notifyChannels': '้็ฅๆธ ้',
- 'trading-assistant.form.notifyChannelsHint': '้ธๆไฟก่่งธ็ผๆ็้็ฅๆนๅผ',
- 'trading-assistant.form.notifyEmail': '้ต็ฎฑๅฐๅ',
- 'trading-assistant.form.notifyPhone': 'ๆๆฉ่็ขผ',
- 'trading-assistant.form.notifyTelegram': 'Telegram ID',
- 'trading-assistant.form.notifyDiscord': 'Discord Webhook',
- 'trading-assistant.form.notifyWebhook': 'Webhook ๅฐๅ',
- 'trading-assistant.form.liveTradingConfigTitle': 'ๅฏฆ็คไบคๆ้
็ฝฎ',
- 'trading-assistant.form.liveTradingConfigHint': '่ซๅกซๅฏซไบคๆๆAPI่ณ่จ๏ผๅฏฆ็คไบคๆๅฐไฝฟ็จๆจ็API้ฒ่ก็ๅฏฆไบคๆ',
- 'trading-assistant.form.savedCredential': 'ๅทฒๅฒๅญ็ๆ่ญ',
- 'trading-assistant.form.savedCredentialHint': '้ธๆๅทฒๅฒๅญ็ไบคๆๆๆ่ญ๏ผ่ชๅๅกซๅ
API้
็ฝฎ',
- 'trading-assistant.form.saveCredential': 'ๅฒๅญๆญคๆ่ญไปฅไพฟไธๆฌกไฝฟ็จ',
- 'trading-assistant.form.credentialName': 'ๆ่ญๅ็จฑ',
- 'trading-assistant.validation.strategyTypeRequired': '่ซ้ธๆ็ญ็ฅ้กๅ',
- 'trading-assistant.form.advancedSettings': '้ซ็ด่จญ็ฝฎ',
- 'trading-assistant.form.orderMode': 'ไธๅฎๆจกๅผ',
- 'trading-assistant.form.orderModeMaker': 'ๆๅฎ๏ผMaker๏ผ',
- 'trading-assistant.form.orderModeTaker': 'ๅธๅน๏ผTaker๏ผ',
- 'trading-assistant.form.orderModeHint': 'ๆๅฎๆจกๅผไฝฟ็จ้ๅนๅฎ๏ผๆ็บ่ฒปๆดไฝ๏ผๅธๅนๆจกๅผ็ซๅณๆไบค๏ผๆ็บ่ฒป่ผ้ซ',
- 'trading-assistant.form.makerWaitSec': 'ๆๅฎ็ญๅพ
ๆ้๏ผ็ง๏ผ',
- 'trading-assistant.form.makerWaitSecHint': 'ๆๅฎๅพ็ญๅพ
ๆไบค็ๆ้๏ผ่ถ
ๆๅพๅๆถไธฆ้่ฉฆ',
- 'trading-assistant.form.makerRetries': 'ๆๅฎ้่ฉฆๆฌกๆธ',
- 'trading-assistant.form.makerRetriesHint': 'ๆๅฎๆชๆไบคๆ็ๆๅคง้่ฉฆๆฌกๆธ',
- 'trading-assistant.form.fallbackToMarket': 'ๆๅฎๅคฑๆ้็ดๅธๅน',
- 'trading-assistant.form.fallbackToMarketHint': '้/ๅนณๅๆๅฎๆชๆไบคๆ๏ผๆฏๅฆ้็ด็ฒๅธๅนๅฎไปฅ็ขบไฟๆไบค',
- 'trading-assistant.form.marginMode': 'ไฟ่ญ้ๆจกๅผ',
- 'trading-assistant.form.marginModeCross': 'ๅ
จๅ',
- 'trading-assistant.form.marginModeIsolated': '้ๅ',
- 'trading-assistant.form.stopLossPct': 'ๆญขๆๆฏไพ๏ผ%๏ผ',
- 'trading-assistant.form.stopLossPctHint': '่จญ็ฝฎๆญขๆ็พๅๆฏ๏ผ0่กจ็คบไธๅ็จๆญขๆ',
- 'trading-assistant.form.takeProfitPct': 'ๆญข็ๆฏไพ๏ผ%๏ผ',
- 'trading-assistant.form.takeProfitPctHint': '่จญ็ฝฎๆญข็็พๅๆฏ๏ผ0่กจ็คบไธๅ็จๆญข็',
- 'trading-assistant.form.signalMode': 'ไฟก่ๆจกๅผ',
- 'trading-assistant.form.signalModeConfirmed': '็ขบ่ชๆจกๅผ',
- 'trading-assistant.form.signalModeAggressive': 'ๆฟ้ฒๆจกๅผ',
- 'trading-assistant.form.signalModeHint': '็ขบ่ชๆจกๅผ๏ผๅ
ๆชขๆฅๅทฒๅฎๆ็K็ท๏ผๆฟ้ฒๆจกๅผ๏ผไนๆชขๆฅๆญฃๅจๅฝขๆ็K็ท',
- 'trading-assistant.form.cancel': 'ๅๆถ',
- 'trading-assistant.form.prev': 'ไธไธๆญฅ',
- 'trading-assistant.form.next': 'ไธไธๆญฅ',
- 'trading-assistant.form.confirmCreate': '็ขบ่ชๅตๅปบ',
- 'trading-assistant.form.confirmEdit': '็ขบ่ชไฟฎๆน',
- 'trading-assistant.messages.createSuccess': '็ญ็ฅๅตๅปบๆๅ',
- 'trading-assistant.messages.createFailed': 'ๅตๅปบ็ญ็ฅๅคฑๆ',
- 'trading-assistant.messages.updateSuccess': '็ญ็ฅๆดๆฐๆๅ',
- 'trading-assistant.messages.updateFailed': 'ๆดๆฐ็ญ็ฅๅคฑๆ',
- 'trading-assistant.messages.deleteSuccess': '็ญ็ฅๅช้คๆๅ',
- 'trading-assistant.messages.deleteFailed': 'ๅช้ค็ญ็ฅๅคฑๆ',
- 'trading-assistant.messages.startSuccess': '็ญ็ฅๅๅๆๅ',
- 'trading-assistant.messages.startFailed': 'ๅๅ็ญ็ฅๅคฑๆ',
- 'trading-assistant.messages.stopSuccess': '็ญ็ฅๅๆญขๆๅ',
- 'trading-assistant.messages.stopFailed': 'ๅๆญข็ญ็ฅๅคฑๆ',
- 'trading-assistant.messages.loadFailed': '็ฒๅ็ญ็ฅๅ่กจๅคฑๆ',
- 'trading-assistant.messages.runningWarning': '็ญ็ฅ้่กไธญ๏ผ่ซๅ
ๅๆญข็ญ็ฅๅพๅไฟฎๆน',
- 'trading-assistant.messages.deleteConfirmWithName': '็ขบๅฎ่ฆๅช้ค็ญ็ฅโ{name}โๅ๏ผๆญคๆไฝไธๅฏๆขๅพฉใ',
- 'trading-assistant.messages.deleteConfirm': '็ขบๅฎ่ฆๅช้ค่ฉฒ็ญ็ฅๅ๏ผๆญคๆไฝไธๅฏๆขๅพฉใ',
- 'trading-assistant.messages.loadTradesFailed': '็ฒๅไบคๆ่จ้ๅคฑๆ',
- 'trading-assistant.messages.loadPositionsFailed': '็ฒๅๆๅ่จ้ๅคฑๆ',
- 'trading-assistant.messages.loadEquityFailed': '็ฒๅๆทจๅผๆฒ็ทๅคฑๆ',
- 'trading-assistant.messages.loadIndicatorsFailed': 'ๅ ่ผๆๆจๅ่กจๅคฑๆ๏ผ่ซ็จๅพ้่ฉฆ',
- 'trading-assistant.messages.spotLimitations': '็พ่ฒจไบคๆๅทฒ่ชๅ่จญ็ฝฎ็ฒๅ
ๅๅคใ1ๅๆงๆ',
- 'trading-assistant.messages.autoFillApiConfig': 'ๅทฒ่ชๅๅกซๅ
่ฉฒไบคๆๆ็ๆญทๅฒAPI้
็ฝฎ',
- 'trading-assistant.messages.batchCreateSuccess': 'ๆๅๅตๅปบ {count} ๅ็ญ็ฅ',
- 'trading-assistant.messages.batchStartSuccess': 'ๆๅๅๅ {count} ๅ็ญ็ฅ',
- 'trading-assistant.messages.batchStartFailed': 'ๆน้ๅๅ็ญ็ฅๅคฑๆ',
- 'trading-assistant.messages.batchStopSuccess': 'ๆๅๅๆญข {count} ๅ็ญ็ฅ',
- 'trading-assistant.messages.batchStopFailed': 'ๆน้ๅๆญข็ญ็ฅๅคฑๆ',
- 'trading-assistant.messages.batchDeleteSuccess': 'ๆๅๅช้ค {count} ๅ็ญ็ฅ',
- 'trading-assistant.messages.batchDeleteFailed': 'ๆน้ๅช้ค็ญ็ฅๅคฑๆ',
- 'trading-assistant.messages.batchDeleteConfirm': '็ขบๅฎ่ฆๅช้ค็ญ็ฅ็ต"{name}"ไธ็ {count} ๅ็ญ็ฅๅ๏ผๆญคๆไฝไธๅฏๆขๅพฉใ',
- 'trading-assistant.notify.browser': '็่ฆฝๅจ้็ฅ',
- 'trading-assistant.notify.email': '้ต็ฎฑ',
- 'trading-assistant.notify.phone': '็ฐก่จ',
- 'trading-assistant.notify.telegram': 'Telegram',
- 'trading-assistant.notify.discord': 'Discord',
- 'trading-assistant.notify.webhook': 'Webhook',
- 'trading-assistant.placeholders.selectIndicator': '่ซ้ธๆๆๆจ',
- 'trading-assistant.placeholders.selectExchange': '่ซ้ธๆไบคๆๆ',
- 'trading-assistant.placeholders.inputApiKey': '่ซ่ผธๅ
ฅAPI Key',
- 'trading-assistant.placeholders.inputSecretKey': '่ซ่ผธๅ
ฅSecret Key',
- 'trading-assistant.placeholders.inputPassphrase': '่ซ่ผธๅ
ฅPassphrase',
- 'trading-assistant.placeholders.inputStrategyName': '่ซ่ผธๅ
ฅ็ญ็ฅๅ็จฑ',
- 'trading-assistant.placeholders.selectSymbol': '่ซ้ธๆไบคๆๅฐ',
- 'trading-assistant.placeholders.selectSymbols': '่ซ้ธๆไบคๆๅฐ๏ผๆฏๆๅค้ธ๏ผ',
- 'trading-assistant.placeholders.selectTimeframe': '่ซ้ธๆๆ้ๅจๆ',
- 'trading-assistant.placeholders.selectKlinePeriod': '่ซ้ธๆK็ทๅจๆ',
- 'trading-assistant.placeholders.inputAiFilterPrompt': '่ซ่ผธๅ
ฅ่ชๅฎ็พฉๆ็คบ่ฉ๏ผๅฏ้ธ๏ผ',
- 'trading-assistant.placeholders.selectSavedCredential': '่ซ้ธๆๅทฒๅฒๅญ็ๆ่ญ',
- 'trading-assistant.placeholders.inputEmail': '่ซ่ผธๅ
ฅ้ต็ฎฑๅฐๅ',
- 'trading-assistant.placeholders.inputPhone': '่ซ่ผธๅ
ฅๆๆฉ่็ขผ',
- 'trading-assistant.placeholders.inputTelegram': '่ซ่ผธๅ
ฅTelegram IDๆChat ID',
- 'trading-assistant.placeholders.inputDiscord': '่ซ่ผธๅ
ฅDiscord Webhookๅฐๅ',
- 'trading-assistant.placeholders.inputWebhook': '่ซ่ผธๅ
ฅWebhookๅฐๅ',
- 'trading-assistant.placeholders.inputCredentialName': '่ซ่ผธๅ
ฅๆ่ญๅ็จฑ๏ผๅฆ๏ผๆ็OKXๅธณๆถ๏ผ',
- 'trading-assistant.validation.indicatorRequired': '่ซ้ธๆๆๆจ',
- 'trading-assistant.validation.exchangeRequired': '่ซ้ธๆไบคๆๆ',
- 'trading-assistant.validation.apiKeyRequired': '่ซ่ผธๅ
ฅAPI Key',
- 'trading-assistant.validation.secretKeyRequired': '่ซ่ผธๅ
ฅSecret Key',
- 'trading-assistant.validation.passphraseRequired': '่ซ่ผธๅ
ฅPassphrase',
- 'trading-assistant.validation.exchangeConfigIncomplete': '่ซๅกซๅฏซๅฎๆด็ไบคๆๆ้
็ฝฎไฟกๆฏ',
- 'trading-assistant.validation.testConnectionRequired': '่ซๅ
้ปๆ"ๆธฌ่ฉฆ้ฃๆฅ"ๆ้ไธฆ็ขบไฟ้ฃๆฅๆๅ',
- 'trading-assistant.validation.testConnectionFailed': '้ฃๆฅๆธฌ่ฉฆๅคฑๆ๏ผ่ซๆชขๆฅ้
็ฝฎๅพ้ๆฐๆธฌ่ฉฆ',
- 'trading-assistant.validation.strategyNameRequired': '่ซ่ผธๅ
ฅ็ญ็ฅๅ็จฑ',
- 'trading-assistant.validation.symbolRequired': '่ซ้ธๆไบคๆๅฐ',
- 'trading-assistant.validation.symbolsRequired': '่ซ่ณๅฐ้ธๆไธๅไบคๆๅฐ',
- 'trading-assistant.validation.emailInvalid': '่ซ่ผธๅ
ฅๆๆ็้ต็ฎฑๅฐๅ',
- 'trading-assistant.validation.notifyChannelRequired': '่ซ่ณๅฐ้ธๆไธๅ้็ฅๆธ ้',
- 'trading-assistant.validation.initialCapitalRequired': '่ซ่ผธๅ
ฅๆๅ
ฅ้้ก',
- 'trading-assistant.validation.leverageRequired': '่ซ่ผธๅ
ฅๆงๆๅๆธ',
- 'trading-assistant.table.time': 'ๆ้',
- 'trading-assistant.table.type': '้กๅ',
- 'trading-assistant.table.price': 'ๅนๆ ผ',
- 'trading-assistant.table.amount': 'ๆธ้',
- 'trading-assistant.table.value': '้้ก',
- 'trading-assistant.table.commission': 'ๆ็บ่ฒป',
- 'trading-assistant.table.symbol': 'ไบคๆๅฐ',
- 'trading-assistant.table.side': 'ๆนๅ',
- 'trading-assistant.table.size': 'ๆๅๆธ้',
- 'trading-assistant.table.entryPrice': '้ๅๅนๆ ผ',
- 'trading-assistant.table.currentPrice': '็ถๅๅนๆ ผ',
- 'trading-assistant.table.unrealizedPnl': 'ๆชๅฏฆ็พ็่ง',
- 'trading-assistant.table.pnlPercent': '็่งๆฏไพ',
- 'trading-assistant.table.buy': '่ฒทๅ
ฅ',
- 'trading-assistant.table.sell': '่ณฃๅบ',
- 'trading-assistant.table.long': 'ๅๅค',
- 'trading-assistant.table.short': 'ๅ็ฉบ',
- 'trading-assistant.table.noPositions': 'ๆซ็กๆๅ',
- 'trading-assistant.detail.title': '็ญ็ฅ่ฉณๆ
',
- 'trading-assistant.detail.strategyName': '็ญ็ฅๅ็จฑ',
- 'trading-assistant.detail.strategyType': '็ญ็ฅ้กๅ',
- 'trading-assistant.detail.status': '็ๆ
',
- 'trading-assistant.detail.tradingMode': 'ไบคๆๆจกๅผ',
- 'trading-assistant.detail.exchange': 'ไบคๆๆ',
- 'trading-assistant.detail.initialCapital': 'ๅๅง่ณ้',
- 'trading-assistant.detail.totalInvestment': '็ธฝๆๅ
ฅ้้ก',
- 'trading-assistant.detail.currentEquity': '็ถๅๆทจๅผ',
- 'trading-assistant.detail.totalPnl': '็ธฝ็่ง',
- 'trading-assistant.detail.indicatorName': 'ๆๆจๅ็จฑ',
- 'trading-assistant.detail.maxLeverage': 'ๆๅคงๆงๆ',
- 'trading-assistant.detail.decideInterval': 'ๆฑบ็ญ้้',
- 'trading-assistant.detail.symbols': 'ไบคๆๆจ็',
- 'trading-assistant.detail.createdAt': 'ๅตๅปบๆ้',
- 'trading-assistant.detail.updatedAt': 'ๆดๆฐๆ้',
- 'trading-assistant.detail.llmConfig': 'AIๆจกๅ้
็ฝฎ',
- 'trading-assistant.detail.exchangeConfig': 'ไบคๆๆ้
็ฝฎ',
- 'trading-assistant.detail.provider': 'ๆไพๅ',
- 'trading-assistant.detail.modelId': 'ๆจกๅID',
- 'trading-assistant.detail.close': '้้',
- 'trading-assistant.detail.loadFailed': '็ฒๅ็ญ็ฅ่ฉณๆ
ๅคฑๆ',
- 'trading-assistant.equity.noData': 'ๆซ็กๆทจๅผๆธๆ',
- 'trading-assistant.equity.equity': 'ๆทจๅผ',
- 'trading-assistant.exchange.tradingMode': 'ไบคๆๆจกๅผ',
- 'trading-assistant.exchange.virtual': 'ๆจกๆฌไบคๆ',
- 'trading-assistant.exchange.live': 'ๅฏฆ็คไบคๆ',
- 'trading-assistant.exchange.selectExchange': '้ธๆไบคๆๆ',
- 'trading-assistant.exchange.walletAddress': '้ขๅ
ๅฐๅ',
- 'trading-assistant.exchange.walletAddressPlaceholder': '่ซ่ผธๅ
ฅ้ขๅ
ๅฐๅ๏ผไปฅ0x้้ ญ๏ผ',
- 'trading-assistant.exchange.privateKey': '็ง้ฐ',
- 'trading-assistant.exchange.privateKeyPlaceholder': '่ซ่ผธๅ
ฅ็ง้ฐ๏ผ64ๅญ็ฌฆ๏ผ',
- 'trading-assistant.exchange.testConnection': 'ๆธฌ่ฉฆ้ฃๆฅ',
- 'trading-assistant.exchange.connectionSuccess': '้ฃๆฅๆๅ',
- 'trading-assistant.exchange.connectionFailed': '้ฃๆฅๅคฑๆ',
- 'trading-assistant.exchange.testFailed': '้ฃๆฅๆธฌ่ฉฆๅคฑๆ',
- 'trading-assistant.exchange.fillComplete': '่ซๅกซๅฏซๅฎๆด็ไบคๆๆ้
็ฝฎไฟกๆฏ',
- 'trading-assistant.strategyTypeOptions.ai': 'AI้ฉ
ๅ็ญ็ฅ',
- 'trading-assistant.strategyTypeOptions.indicator': 'ๆ่กๆๆจ็ญ็ฅ',
- 'trading-assistant.strategyTypeOptions.aiDeveloping': 'AI้ฉ
ๅ็ญ็ฅๅ่ฝ้็ผไธญ๏ผๆฌ่ซๆๅพ
',
- 'trading-assistant.strategyTypeOptions.aiDevelopingWarning': 'AI้ฉ
ๅ็ญ็ฅๅ่ฝๆญฃๅจ้็ผไธญ',
- 'trading-assistant.indicatorType.trend': '่ถจๅข',
- 'trading-assistant.indicatorType.momentum': 'ๅ้',
- 'trading-assistant.indicatorType.volatility': 'ๆณขๅ',
- 'trading-assistant.indicatorType.volume': 'ๆไบค้',
- 'trading-assistant.indicatorType.custom': '่ชๅฎ็พฉ',
- 'trading-assistant.exchangeNames': {
- 'okx': 'OKX',
- 'binance': 'ๅนฃๅฎ',
- 'hyperliquid': 'Hyperliquid',
- 'blockchaincom': 'Blockchain.com',
- 'coinbaseexchange': 'Coinbase',
- 'gate': 'Gate.io',
- 'mexc': 'MEXC',
- 'kraken': 'Kraken',
- 'bitfinex': 'Bitfinex',
- 'bybit': 'Bybit',
- 'kucoin': 'KuCoin',
- 'huobi': '็ซๅนฃ',
- 'bitget': 'Bitget',
- 'bitmex': 'BitMEX',
- 'deribit': 'Deribit',
- 'phemex': 'Phemex',
- 'bitmart': 'BitMart',
- 'bitstamp': 'Bitstamp',
- 'bittrex': 'Bittrex',
- 'poloniex': 'Poloniex',
- 'gemini': 'Gemini',
- 'cryptocom': 'Crypto.com',
- 'bitflyer': 'bitFlyer',
- 'upbit': 'Upbit',
- 'bithumb': 'Bithumb',
- 'coinone': 'Coinone',
- 'zb': 'ZB',
- 'lbank': 'LBank',
- 'bibox': 'Bibox',
- 'bigone': 'BigONE',
- 'bitrue': 'Bitrue',
- 'coinex': 'CoinEx',
- 'digifinex': 'DigiFinex',
- 'ftx': 'FTX',
- 'ftxus': 'FTX US',
- 'binanceus': 'Binance US',
- 'binancecoinm': 'Binance COIN-M',
- 'binanceusdm': 'Binance USDโ-M',
- 'deepcoin': 'Deepcoin'
- },
- 'ai-trading-assistant.title': 'AIไบคๆๅฉๆ',
- 'ai-trading-assistant.strategyList': '็ญ็ฅๅ่กจ',
- 'ai-trading-assistant.createStrategy': 'ๅตๅปบ็ญ็ฅ',
- 'ai-trading-assistant.noStrategy': 'ๆซ็ก็ญ็ฅ',
- 'ai-trading-assistant.selectStrategy': '่ซๅพๅทฆๅด้ธๆไธๅ็ญ็ฅๆฅ็่ฉณๆ
',
- 'ai-trading-assistant.startStrategy': 'ๅๅ็ญ็ฅ',
- 'ai-trading-assistant.stopStrategy': 'ๅๆญข็ญ็ฅ',
- 'ai-trading-assistant.editStrategy': '็ทจ่ผฏ็ญ็ฅ',
- 'ai-trading-assistant.deleteStrategy': 'ๅช้ค็ญ็ฅ',
- 'ai-trading-assistant.status.running': '้่กไธญ',
- 'ai-trading-assistant.status.stopped': 'ๅทฒๅๆญข',
- 'ai-trading-assistant.status.error': '้ฏ่ชค',
- 'ai-trading-assistant.tabs.tradingRecords': 'ไบคๆ่จ้',
- 'ai-trading-assistant.tabs.positions': 'ๆๅ่จ้',
- 'ai-trading-assistant.tabs.aiDecisions': 'AIๆฑบ็ญ่จ้',
- 'ai-trading-assistant.tabs.equityCurve': 'ๆทจๅผๆฒ็ท',
- 'ai-trading-assistant.form.createTitle': 'ๅตๅปบAIไบคๆ็ญ็ฅ',
- 'ai-trading-assistant.form.editTitle': '็ทจ่ผฏAIไบคๆ็ญ็ฅ',
- 'ai-trading-assistant.form.strategyName': '็ญ็ฅๅ็จฑ',
- 'ai-trading-assistant.form.modelId': 'AIๆจกๅ',
- 'ai-trading-assistant.form.modelIdHint': 'ไฝฟ็จ็ณป็ตฑOpenRouterๆๅ๏ผ็ก้้
็ฝฎAPI Key',
- 'ai-trading-assistant.form.decideInterval': 'ๆฑบ็ญ้้',
- 'ai-trading-assistant.form.decideInterval5m': '5ๅ้พ',
- 'ai-trading-assistant.form.decideInterval10m': '10ๅ้พ',
- 'ai-trading-assistant.form.decideInterval30m': '30ๅ้พ',
- 'ai-trading-assistant.form.decideInterval1h': '1ๅฐๆ',
- 'ai-trading-assistant.form.decideInterval4h': '4ๅฐๆ',
- 'ai-trading-assistant.form.decideInterval1d': '1ๅคฉ',
- 'ai-trading-assistant.form.decideInterval1w': '1ๅจ',
- 'ai-trading-assistant.form.decideIntervalHint': 'AIๅๆฑบ็ญ็ๆ้้้',
- 'ai-trading-assistant.form.runPeriod': '้่กๅจๆ',
- 'ai-trading-assistant.form.runPeriodHint': '็ญ็ฅ้่ก็้ๅงๆ้ๅ็ตๆๆ้',
- 'ai-trading-assistant.form.startDate': '้ๅงๆฅๆ',
- 'ai-trading-assistant.form.endDate': '็ตๆๆฅๆ',
- 'ai-trading-assistant.form.qdtCostTitle': 'QDTๆฃ่ฒป่ชชๆ',
- 'ai-trading-assistant.form.qdtCostHint': 'ๆฏๆฌกAIๆฑบ็ญๅฐๆฃ่ฒป {cost} ๅQDT๏ผ่ซ็ขบไฟ่ณฌๆถๆ่ถณๅค ็QDT้ค้กใ็ญ็ฅ้่กๆ้๏ผๆฏๆฌกๆฑบ็ญ้ฝๆๅฏฆๆๆฃ่ฒปใ',
- 'ai-trading-assistant.form.apiKey': 'API Key',
- 'ai-trading-assistant.form.exchange': '้ธๆไบคๆๆ',
- 'ai-trading-assistant.form.secretKey': 'Secret Key',
- 'ai-trading-assistant.form.passphrase': 'Passphrase',
- 'ai-trading-assistant.form.testConnection': 'ๆธฌ่ฉฆ้ฃๆฅ',
- 'ai-trading-assistant.form.symbol': 'ไบคๆๅฐ',
- 'ai-trading-assistant.form.symbolHint': '้ธๆ่ฆไบคๆ็ไบคๆๅฐ',
- 'ai-trading-assistant.form.initialCapital': 'ๆๅ
ฅ้้ก๏ผไฟ่ญ้๏ผ',
- 'ai-trading-assistant.form.leverage': 'ๆงๆๅๆธ',
- 'ai-trading-assistant.form.timeframe': 'ๆ้ๅจๆ',
- 'ai-trading-assistant.form.timeframe1m': '1ๅ้พ',
- 'ai-trading-assistant.form.timeframe5m': '5ๅ้พ',
- 'ai-trading-assistant.form.timeframe15m': '15ๅ้พ',
- 'ai-trading-assistant.form.timeframe30m': '30ๅ้พ',
- 'ai-trading-assistant.form.timeframe1H': '1ๅฐๆ',
- 'ai-trading-assistant.form.timeframe4H': '4ๅฐๆ',
- 'ai-trading-assistant.form.timeframe1D': '1ๅคฉ',
- 'ai-trading-assistant.form.marketType': 'ๅธๅ ด้กๅ',
- 'ai-trading-assistant.form.marketTypeFutures': 'ๅ็ด',
- 'ai-trading-assistant.form.marketTypeSpot': '็พ่ฒจ',
- 'ai-trading-assistant.form.totalPnl': '็ธฝ็่ง',
- 'ai-trading-assistant.form.customPrompt': '่ชๅฎ็พฉๆ็คบ่ฉ',
- 'ai-trading-assistant.form.customPromptHint': 'ๅฏ้ธ๏ผ็จๆผ่ชๅฎ็พฉAI็ไบคๆ็ญ็ฅๅๆฑบ็ญ้่ผฏ',
- 'ai-trading-assistant.form.cancel': 'ๅๆถ',
- 'ai-trading-assistant.form.prev': 'ไธไธๆญฅ',
- 'ai-trading-assistant.form.next': 'ไธไธๆญฅ',
- 'ai-trading-assistant.form.confirmCreate': '็ขบ่ชๅตๅปบ',
- 'ai-trading-assistant.form.confirmEdit': '็ขบ่ชไฟฎๆน',
- 'ai-trading-assistant.messages.createSuccess': '็ญ็ฅๅตๅปบๆๅ',
- 'ai-trading-assistant.messages.createFailed': 'ๅตๅปบ็ญ็ฅๅคฑๆ',
- 'ai-trading-assistant.messages.updateSuccess': '็ญ็ฅๆดๆฐๆๅ',
- 'ai-trading-assistant.messages.updateFailed': 'ๆดๆฐ็ญ็ฅๅคฑๆ',
- 'ai-trading-assistant.messages.deleteSuccess': '็ญ็ฅๅช้คๆๅ',
- 'ai-trading-assistant.messages.deleteFailed': 'ๅช้ค็ญ็ฅๅคฑๆ',
- 'ai-trading-assistant.messages.startSuccess': '็ญ็ฅๅๅๆๅ',
- 'ai-trading-assistant.messages.startFailed': 'ๅๅ็ญ็ฅๅคฑๆ',
- 'ai-trading-assistant.messages.stopSuccess': '็ญ็ฅๅๆญขๆๅ',
- 'ai-trading-assistant.messages.stopFailed': 'ๅๆญข็ญ็ฅๅคฑๆ',
- 'ai-trading-assistant.messages.loadFailed': '็ฒๅ็ญ็ฅๅ่กจๅคฑๆ',
- 'ai-trading-assistant.messages.loadDecisionsFailed': '็ฒๅAIๆฑบ็ญ่จ้ๅคฑๆ',
- 'ai-trading-assistant.messages.deleteConfirm': '็ขบๅฎ่ฆๅช้ค่ฉฒ็ญ็ฅๅ๏ผๆญคๆไฝไธๅฏๆขๅพฉใ',
- 'ai-trading-assistant.placeholders.inputStrategyName': '่ซ่ผธๅ
ฅ็ญ็ฅๅ็จฑ',
- 'ai-trading-assistant.placeholders.selectModelId': '่ซ้ธๆAIๆจกๅ',
- 'ai-trading-assistant.placeholders.selectDecideInterval': '่ซ้ธๆๆฑบ็ญ้้',
- 'ai-trading-assistant.placeholders.startTime': '้ๅงๆ้',
- 'ai-trading-assistant.placeholders.endTime': '็ตๆๆ้',
- 'ai-trading-assistant.placeholders.inputApiKey': '่ซ่ผธๅ
ฅAPI Key',
- 'ai-trading-assistant.placeholders.selectExchange': '่ซ้ธๆไบคๆๆ',
- 'ai-trading-assistant.placeholders.inputSecretKey': '่ซ่ผธๅ
ฅSecret Key',
- 'ai-trading-assistant.placeholders.inputPassphrase': '่ซ่ผธๅ
ฅPassphrase',
- 'ai-trading-assistant.placeholders.selectSymbol': '่ซ้ธๆไบคๆๅฐ๏ผๅฆ๏ผBTC/USDT',
- 'ai-trading-assistant.placeholders.selectTimeframe': '่ซ้ธๆๆ้ๅจๆ',
- 'ai-trading-assistant.placeholders.inputCustomPrompt': '่ซ่ผธๅ
ฅ่ชๅฎ็พฉๆ็คบ่ฉ๏ผๅฏ้ธ๏ผ',
- 'ai-trading-assistant.validation.strategyNameRequired': '่ซ่ผธๅ
ฅ็ญ็ฅๅ็จฑ',
- 'ai-trading-assistant.validation.modelIdRequired': '่ซ้ธๆAIๆจกๅ',
- 'ai-trading-assistant.validation.runPeriodRequired': '่ซ้ธๆ้่กๅจๆ',
- 'ai-trading-assistant.validation.apiKeyRequired': '่ซ่ผธๅ
ฅAPI Key',
- 'ai-trading-assistant.validation.exchangeRequired': '่ซ้ธๆไบคๆๆ',
- 'ai-trading-assistant.validation.secretKeyRequired': '่ซ่ผธๅ
ฅSecret Key',
- 'ai-trading-assistant.validation.symbolRequired': '่ซ้ธๆไบคๆๅฐ',
- 'ai-trading-assistant.validation.initialCapitalRequired': '่ซ่ผธๅ
ฅๆๅ
ฅ้้ก',
- 'ai-trading-assistant.table.time': 'ๆ้',
- 'ai-trading-assistant.table.type': '้กๅ',
- 'ai-trading-assistant.table.price': 'ๅนๆ ผ',
- 'ai-trading-assistant.table.amount': 'ๆธ้',
- 'ai-trading-assistant.table.value': '้้ก',
- 'ai-trading-assistant.table.symbol': 'ไบคๆๅฐ',
- 'ai-trading-assistant.table.side': 'ๆนๅ',
- 'ai-trading-assistant.table.size': 'ๆๅๆธ้',
- 'ai-trading-assistant.table.entryPrice': '้ๅๅนๆ ผ',
- 'ai-trading-assistant.table.currentPrice': '็ถๅๅนๆ ผ',
- 'ai-trading-assistant.table.unrealizedPnl': 'ๆชๅฏฆ็พ็่ง',
- 'ai-trading-assistant.table.profit': '็่ง',
- 'ai-trading-assistant.table.openLong': '้ๅค',
- 'ai-trading-assistant.table.closeLong': 'ๅนณๅค',
- 'ai-trading-assistant.table.openShort': '้็ฉบ',
- 'ai-trading-assistant.table.closeShort': 'ๅนณ็ฉบ',
- 'ai-trading-assistant.table.addLong': 'ๅ ๅค',
- 'ai-trading-assistant.table.addShort': 'ๅ ็ฉบ',
- 'ai-trading-assistant.table.closeShortProfit': 'ๅนณ็ฉบๆญข็',
- 'ai-trading-assistant.table.closeShortStop': 'ๅนณ็ฉบๆญขๆ',
- 'ai-trading-assistant.table.closeLongProfit': 'ๅนณๅคๆญข็',
- 'ai-trading-assistant.table.closeLongStop': 'ๅนณๅคๆญขๆ',
- 'ai-trading-assistant.table.buy': '่ฒทๅ
ฅ',
- 'ai-trading-assistant.table.sell': '่ณฃๅบ',
- 'ai-trading-assistant.table.long': 'ๅๅค',
- 'ai-trading-assistant.table.short': 'ๅ็ฉบ',
- 'ai-trading-assistant.table.hold': 'ๆๆ',
- 'ai-trading-assistant.table.reasoning': 'ๅๆ็็ฑ',
- 'ai-trading-assistant.table.decisions': 'ๆฑบ็ญ',
- 'ai-trading-assistant.table.riskAssessment': '้ขจ้ช่ฉไผฐ',
- 'ai-trading-assistant.table.confidence': '็ฝฎไฟกๅบฆ',
- 'ai-trading-assistant.table.totalRecords': 'ๅ
ฑ {total} ๆข่จ้',
- 'ai-trading-assistant.table.noPositions': 'ๆซ็กๆๅ',
- 'ai-trading-assistant.detail.title': '็ญ็ฅ่ฉณๆ
',
- 'ai-trading-assistant.equity.noData': 'ๆซ็กๆทจๅผๆธๆ',
- 'ai-trading-assistant.equity.equity': 'ๆทจๅผ',
- 'ai-trading-assistant.exchange.testFailed': '้ฃๆฅๆธฌ่ฉฆๅคฑๆ',
- 'ai-trading-assistant.exchange.connectionSuccess': '้ฃๆฅๆๅ',
- 'ai-trading-assistant.exchange.connectionFailed': '้ฃๆฅๅคฑๆ',
- 'ai-trading-assistant.form.advancedSettings': '้ซ็ด่จญ็ฝฎ',
- 'ai-trading-assistant.form.orderMode': 'ไธๅฎๆจกๅผ',
- 'ai-trading-assistant.form.orderModeMaker': 'ๆๅฎ๏ผMaker๏ผ',
- 'ai-trading-assistant.form.orderModeTaker': 'ๅธๅน๏ผTaker๏ผ',
- 'ai-trading-assistant.form.orderModeHint': 'ๆๅฎๆจกๅผไฝฟ็จ้ๅนๅฎ๏ผๆ็บ่ฒปๆดไฝ๏ผๅธๅนๆจกๅผ็ซๅณๆไบค๏ผๆ็บ่ฒป่ผ้ซ',
- 'ai-trading-assistant.form.makerWaitSec': 'ๆๅฎ็ญๅพ
ๆ้๏ผ็ง๏ผ',
- 'ai-trading-assistant.form.makerWaitSecHint': 'ๆๅฎๅพ็ญๅพ
ๆไบค็ๆ้๏ผ่ถ
ๆๅพๅๆถไธฆ้่ฉฆ',
- 'ai-trading-assistant.form.makerRetries': 'ๆๅฎ้่ฉฆๆฌกๆธ',
- 'ai-trading-assistant.form.makerRetriesHint': 'ๆๅฎๆชๆไบคๆ็ๆๅคง้่ฉฆๆฌกๆธ',
- 'ai-trading-assistant.form.fallbackToMarket': 'ๆๅฎๅคฑๆ้็ดๅธๅน',
- 'ai-trading-assistant.form.fallbackToMarketHint': '้/ๅนณๅๆๅฎๆชๆไบคๆ๏ผๆฏๅฆ้็ด็ฒๅธๅนๅฎไปฅ็ขบไฟๆไบค',
- 'ai-trading-assistant.form.marginMode': 'ไฟ่ญ้ๆจกๅผ',
- 'ai-trading-assistant.form.marginModeCross': 'ๅ
จๅ',
- 'ai-trading-assistant.form.marginModeIsolated': '้ๅ',
- 'ai-analysis.title': '้ๅญไบคๆๅผๆ',
- 'ai-analysis.system.online': 'ๅจ็ท',
- 'ai-analysis.system.agents': 'ๆบ่ฝ้ซ',
- 'ai-analysis.system.active': 'ๆดป่บ',
- 'ai-analysis.system.stage': '้ๆฎต',
- 'ai-analysis.panel.roster': 'ๆบ่ฝ้ซ้ฃๅฎน',
- 'ai-analysis.panel.thinking': 'ๆ่ไธญ...',
- 'ai-analysis.panel.done': 'ๅฎๆ',
- 'ai-analysis.panel.standby': 'ๅพ
ๆฉ',
- 'ai-analysis.input.title': '้ๅญไบคๆๅผๆ',
- 'ai-analysis.input.placeholder': '้ธๆ็ฎๆจ่ณ็ข (ๅฆ BTC/USDT)',
- 'ai-analysis.input.watchlist': '่ช้ธ่ก',
- 'ai-analysis.input.start': '้ๅงๅๆ',
- 'ai-analysis.input.recent': 'ๆ่ฟไปปๅ:',
- 'ai-analysis.vis.stage': '้ๆฎต',
- 'ai-analysis.vis.processing': '่็ไธญ',
- 'ai-analysis.result.complete': 'ๅๆๅฎๆ',
- 'ai-analysis.result.signal': 'ๆ็ตไฟก่',
- 'ai-analysis.result.confidence': '็ฝฎไฟกๅบฆ:',
- 'ai-analysis.result.new': 'ๆฐๅๆ',
- 'ai-analysis.result.full': 'ๆฅ็ๅฎๆดๅ ฑๅ',
- 'ai-analysis.logs.title': '็ณป็ตฑๆฅๅฟ',
- 'ai-analysis.modal.title': 'ๆฉๅฏๅ ฑๅ',
- 'ai-analysis.modal.fundamental': 'ๅบๆฌ้ขๅๆ',
- 'ai-analysis.modal.technical': 'ๆ่ก้ขๅๆ',
- 'ai-analysis.modal.sentiment': 'ๆ
็ท้ขๅๆ',
- 'ai-analysis.modal.risk': '้ขจ้ช่ฉไผฐ',
- 'ai-analysis.stage.idle': 'ๅพ
ๆฉ',
- 'ai-analysis.stage.1': '็ฌฌไธ้ๆฎต๏ผๅค็ถญๅๆ',
- 'ai-analysis.stage.2': '็ฌฌไบ้ๆฎต๏ผๅค็ฉบ่พฏ่ซ',
- 'ai-analysis.stage.3': '็ฌฌไธ้ๆฎต๏ผๆฐ็ฅ่ฆๅ',
- 'ai-analysis.stage.4': '็ฌฌๅ้ๆฎต๏ผ้ขจๆงๅฏฉๆฅ',
- 'ai-analysis.stage.complete': 'ๅฎๆ',
- 'ai-analysis.agent.investment_director': 'ๆ่ณ็ธฝ็ฃ',
- 'ai-analysis.agent.role.investment_director': '็ถๅๅๆ & ๆ็ต็ต่ซ',
- 'ai-analysis.agent.market': 'ๅธๅ ดๅๆๅธซ',
- 'ai-analysis.agent.role.market': 'ๆ่ก & ๅธๅ ดๆธๆ',
- 'ai-analysis.agent.fundamental': 'ๅบๆฌ้ขๅๆๅธซ',
- 'ai-analysis.agent.role.fundamental': '่ฒกๅ & ไผฐๅผ',
- 'ai-analysis.agent.technical': 'ๆ่กๅๆๅธซ',
- 'ai-analysis.agent.role.technical': 'ๆ่กๆๆจ & ๅ่กจ',
- 'ai-analysis.agent.news': 'ๆฐ่ๅๆๅธซ',
- 'ai-analysis.agent.role.news': 'ๅ
จ็ๆฐ่้ๆฟพ',
- 'ai-analysis.agent.sentiment': 'ๆ
็ทๅๆๅธซ',
- 'ai-analysis.agent.role.sentiment': '็คพไบค & ๆ
็ท',
- 'ai-analysis.agent.risk': '้ขจ้ชๅๆๅธซ',
- 'ai-analysis.agent.role.risk': 'ๅบ็ค้ขจ้ชๆชขๆฅ',
- 'ai-analysis.agent.bull': '็ๆผฒ็ ็ฉถๅก',
- 'ai-analysis.agent.role.bull': 'ๅข้ทๅฌๅๅๆๆ',
- 'ai-analysis.agent.bear': '็่ท็ ็ฉถๅก',
- 'ai-analysis.agent.role.bear': '้ขจ้ช & ็ผบ้ทๆๆ',
- 'ai-analysis.agent.manager': '็ ็ฉถ็ถ็',
- 'ai-analysis.agent.role.manager': '่พฏ่ซไธปๆไบบ',
- 'ai-analysis.agent.trader': 'ไบคๆๅก',
- 'ai-analysis.agent.role.trader': 'ๅท่ก็ญ็ฅๅธซ',
- 'ai-analysis.agent.risky': 'ๆฟ้ฒๅๆๅธซ',
- 'ai-analysis.agent.role.risky': 'ๆฟ้ฒ็ญ็ฅ',
- 'ai-analysis.agent.neutral': 'ๅนณ่กกๅๆๅธซ',
- 'ai-analysis.agent.role.neutral': 'ๅนณ่กก็ญ็ฅ',
- 'ai-analysis.agent.safe': 'ไฟๅฎๅๆๅธซ',
- 'ai-analysis.agent.role.safe': 'ไฟๅฎ็ญ็ฅ',
- 'ai-analysis.agent.cro': '้ขจๆง็ถ็ (CRO)',
- 'ai-analysis.agent.role.cro': 'ๆ็ตๆฑบ็ญๆฌๅจ',
- 'ai-analysis.script.market': 'ๆญฃๅจๅพไธป่ฆไบคๆๆ็ฒๅ OHLCV ๆธๆ...',
- 'ai-analysis.script.fundamental': 'ๆญฃๅจๆชข็ดขๅญฃๅบฆ่ฒกๅๅ ฑๅ...',
- 'ai-analysis.script.technical': 'ๆญฃๅจๅๆๆ่กๆๆจๅๅ่กจๅฝขๆ
...',
- 'ai-analysis.script.news': 'ๆญฃๅจๆๆๅ
จ็่ฒก็ถๆฐ่...',
- 'ai-analysis.script.sentiment': 'ๆญฃๅจๅๆ็คพไบคๅช้ซ่ถจๅข...',
- 'ai-analysis.script.risk': 'ๆญฃๅจ่จ็ฎๆญทๅฒๆณขๅ็...',
- 'invite.inviteLink': '้่ซ้ๆฅ',
- 'invite.copy': 'ๅพฉๅถ้ๆฅ',
- 'invite.copySuccess': 'ๅพฉๅถๆๅ๏ผ',
- 'invite.copyFailed': 'ๅพฉๅถๅคฑๆ๏ผ่ซๆๅๅพฉๅถ',
- 'invite.noInviteLink': '้่ซ้ๆฅๆช็ๆ',
- 'invite.totalInvites': '็ดฏ่จ้่ซ',
- 'invite.totalReward': '็ดฏ่จ็ๅต',
- 'invite.rules': '้่ซ่ฆๅ',
- 'invite.rule1': 'ๆฏๆๅ้่ซไธไฝๅฅฝๅๆณจๅ๏ผๆจๅฐ็ฒๅพ็ๅต',
- 'invite.rule2': '่ขซ้่ซ็ๅฅฝๅๅฎๆ้ฆๆฌกไบคๆ๏ผๆจๅฐ็ฒๅพ้กๅค็ๅต',
- 'invite.rule3': '้่ซ็ๅตๅฐ็ดๆฅ็ผๆพๅฐๆจ็่ณฌๆถ',
- 'invite.inviteList': '้่ซๅ่กจ',
- 'invite.tasks': 'ไปปๅไธญๅฟ',
- 'invite.inviteeName': '่ขซ้่ซไบบ',
- 'invite.inviteTime': '้่ซๆ้',
- 'invite.status': '็ๆ
',
- 'invite.reward': '็ๅต',
- 'invite.active': 'ๆดป่บ',
- 'invite.inactive': 'ๆชๆฟๆดป',
- 'invite.completed': 'ๅทฒๅฎๆ',
- 'invite.claimed': 'ๅทฒ้ ๅ',
- 'invite.pending': 'ๅพ
ๅฎๆ',
- 'invite.goToTask': 'ๅปๅฎๆ',
- 'invite.claimReward': '้ ๅ็ๅต',
- 'invite.verify': '้ฉ่ญๅฎๆ',
- 'invite.verifySuccess': '้ฉ่ญๆๅ๏ผไปปๅๅทฒๅฎๆ',
- 'invite.verifyNotCompleted': 'ไปปๅๅฐๆชๅฎๆ๏ผ่ซๅ
ๅฎๆไปปๅ',
- 'invite.verifyFailed': '้ฉ่ญๅคฑๆ๏ผ่ซ็จๅพ้่ฉฆ',
- 'invite.claimSuccess': 'ๆๅ้ ๅ {reward} QDT๏ผ',
- 'invite.claimFailed': '้ ๅๅคฑๆ๏ผ่ซ็จๅพ้่ฉฆ',
- 'invite.totalRecords': 'ๅ
ฑ {total} ๆข่จ้',
- 'invite.task.twitter.title': '่ฝ็ผๆจๆๅฐ X (Twitter)',
- 'invite.task.twitter.desc': 'ๅไบซๆๅ็ๅฎๆนๆจๆๅฐๆจ็ X (Twitter) ่ณฌ่',
- 'invite.task.youtube.title': '้ๆณจๆๅ็ YouTube ้ ป้',
- 'invite.task.youtube.desc': '่จ้ฑไธฆ้ๆณจๆๅ็ YouTube ๅฎๆน้ ป้',
- 'invite.task.telegram.title': 'ๅ ๅ
ฅ Telegram ็พฃ็ต',
- 'invite.task.telegram.desc': 'ๅ ๅ
ฅๆๅ็ๅฎๆน Telegram ็คพๅ็พฃ็ต',
- 'invite.task.discord.title': 'ๅ ๅ
ฅ Discord ๆๅๅจ',
- 'invite.task.discord.desc': 'ๅ ๅ
ฅๆๅ็ Discord ็คพๅๆๅๅจ',
- 'message': '-',
- 'layouts.usermenu.dialog.title': 'ไฟกๆฏ',
- 'layouts.usermenu.dialog.content': 'ๆจ็ขบๅฎ่ฆๆณจ้ทๅ๏ผ',
- 'layouts.userLayout.title': 'ๆผไธ็ขบๅฎไธญ๏ผๅฐ่ฆ็็',
-
- // Settings
- 'settings.title': '็ณป็ตฑ่จญ็ฝฎ',
- 'settings.description': '้
็ฝฎๆ็จ่จญ็ฝฎใAPIๅฏ้ฐๅ็ณป็ตฑๅๅฅฝ',
- 'settings.save': 'ไฟๅญ่จญ็ฝฎ',
- 'settings.reset': '้็ฝฎ',
- 'settings.saveSuccess': '่จญ็ฝฎไฟๅญๆๅ',
- 'settings.saveFailed': 'ไฟๅญ่จญ็ฝฎๅคฑๆ',
- 'settings.loadFailed': 'ๅ ่ผ้
็ฝฎๅคฑๆ',
- 'settings.openrouterBalance': 'OpenRouter ่ณฌๆถ้ค้ก',
- 'settings.queryBalance': 'ๆฅ่ฉข้ค้ก',
- 'settings.balanceUsage': 'ๅทฒไฝฟ็จ',
- 'settings.balanceRemaining': 'ๅฉ้ค้กๅบฆ',
- 'settings.balanceLimit': '็ธฝ้้ก',
- 'settings.balanceQuerySuccess': '้ค้กๆฅ่ฉขๆๅ',
- 'settings.balanceQueryFailed': '้ค้กๆฅ่ฉขๅคฑๆ',
- 'settings.balanceNotQueried': '้ปๆ"ๆฅ่ฉข้ค้ก"็ฒๅ่ณฌๆถไฟกๆฏ',
- 'settings.default': '้ป่ช',
- 'settings.pleaseSelect': '่ซ้ธๆ',
- 'settings.inputApiKey': '่ซ่ผธๅ
ฅๅฏ้ฐ',
- 'settings.getApi': '็ฒๅAPI',
- // Settings link texts
- 'settings.link.getApi': '็ฒๅAPI',
- 'settings.link.getApiKey': '็ฒๅAPI Key',
- 'settings.link.getToken': '็ฒๅToken',
- 'settings.link.createBot': 'ๅตๅปบBot',
- 'settings.link.viewModels': 'ๆฅ็ๆจกๅๅ่กจ',
- 'settings.link.freeRegister': 'ๅ
่ฒป่จปๅ',
- 'settings.link.supportedExchanges': 'ๆฏๆ็ไบคๆๆ',
- 'settings.link.applyApi': '็ณ่ซAPI',
- 'settings.link.createSearchEngine': 'ๅตๅปบๆ็ดขๅผๆ',
- 'settings.link.getTurnstileKey': '็ฒๅTurnstileๅฏ้ฐ',
- 'settings.link.getGoogleCredentials': '็ฒๅGoogleๆๆ',
- 'settings.link.getGithubCredentials': '็ฒๅGitHubๆๆ',
- 'settings.restartRequired': '้
็ฝฎๅทฒไฟๅญ๏ผ้จๅ้
็ฝฎ้่ฆ้ๅPythonๆๅๆ่ฝ็ๆ',
- 'settings.copyRestartCmd': '่ค่ฃฝ้ๅๅฝไปค',
- 'settings.copySuccess': '่ค่ฃฝๆๅ',
- 'settings.copyFailed': '่ค่ฃฝๅคฑๆ',
- // Settings groups
- // Settings groups (ๆๅพ็ซฏ order ๆๅบ)
- 'settings.group.server': 'ๆๅ้
็ฝฎ',
- 'settings.group.auth': 'ๅฎๅ
จ่ช่ญ',
- 'settings.group.ai': 'AI/LLM้
็ฝฎ',
- 'settings.group.trading': 'ๅฏฆ็คไบคๆ',
- 'settings.group.strategy': '็ญ็ฅๅท่ก',
- 'settings.group.data_source': 'ๆธๆๆบ',
- 'settings.group.notification': '้็ฅๆจ้',
- 'settings.group.email': '้ตไปถ้
็ฝฎ',
- 'settings.group.sms': '็ญไฟก้
็ฝฎ',
- 'settings.group.agent': 'AI Agent',
- 'settings.group.network': '็ถฒ็ตกไปฃ็',
- 'settings.group.search': 'ๆ็ดข้
็ฝฎ',
- 'settings.group.security': '่จปๅ่ๅฎๅ
จ',
- 'settings.group.app': 'ๆ็จ้
็ฝฎ',
- // Settings fields - Auth
- 'settings.field.SECRET_KEY': 'Secret Key',
- 'settings.field.ADMIN_USER': '็ฎก็ๅก็จๆถๅ',
- 'settings.field.ADMIN_PASSWORD': '็ฎก็ๅกๅฏ็ขผ',
- 'settings.field.ADMIN_EMAIL': '็ฎก็ๅก้ต็ฎฑ',
- // Settings fields - Security
- 'settings.field.ENABLE_REGISTRATION': 'ๅ
่จฑ่จปๅ',
- 'settings.field.TURNSTILE_SITE_KEY': 'Turnstile Site Key',
- 'settings.field.TURNSTILE_SECRET_KEY': 'Turnstile Secret Key',
- 'settings.field.FRONTEND_URL': 'ๅ็ซฏURL',
- 'settings.field.GOOGLE_CLIENT_ID': 'Google Client ID',
- 'settings.field.GOOGLE_CLIENT_SECRET': 'Google Client Secret',
- 'settings.field.GOOGLE_REDIRECT_URI': 'Googleๅ่ชฟURL',
- 'settings.field.GITHUB_CLIENT_ID': 'GitHub Client ID',
- 'settings.field.GITHUB_CLIENT_SECRET': 'GitHub Client Secret',
- 'settings.field.GITHUB_REDIRECT_URI': 'GitHubๅ่ชฟURL',
- 'settings.field.SECURITY_IP_MAX_ATTEMPTS': 'IPๆๅคงๅคฑๆๆฌกๆธ',
- 'settings.field.SECURITY_IP_WINDOW_MINUTES': 'IP็ตฑ่จ็ชๅฃ(ๅ้)',
- 'settings.field.SECURITY_IP_BLOCK_MINUTES': 'IPๅฐ็ฆๆ้ท(ๅ้)',
- 'settings.field.SECURITY_ACCOUNT_MAX_ATTEMPTS': 'ๅธณๆถๆๅคงๅคฑๆๆฌกๆธ',
- 'settings.field.SECURITY_ACCOUNT_WINDOW_MINUTES': 'ๅธณๆถ็ตฑ่จ็ชๅฃ(ๅ้)',
- 'settings.field.SECURITY_ACCOUNT_BLOCK_MINUTES': 'ๅธณๆถ้ๅฎๆ้ท(ๅ้)',
- 'settings.field.VERIFICATION_CODE_EXPIRE_MINUTES': '้ฉ่ญ็ขผๆๆๆ(ๅ้)',
- 'settings.field.VERIFICATION_CODE_RATE_LIMIT': '้ฉ่ญ็ขผ็ผ้้้(็ง)',
- 'settings.field.VERIFICATION_CODE_IP_HOURLY_LIMIT': 'IPๆฏๅฐๆ้ฉ่ญ็ขผไธ้',
- 'settings.field.VERIFICATION_CODE_MAX_ATTEMPTS': '้ฉ่ญ็ขผๆๅคงๅ่ฉฆๆฌกๆธ',
- 'settings.field.VERIFICATION_CODE_LOCK_MINUTES': '้ฉ่ญ็ขผ้ๅฎๆ้ท(ๅ้)',
- // Settings fields - Server
- 'settings.field.PYTHON_API_HOST': '็ฃ่ฝๅฐๅ',
- 'settings.field.PYTHON_API_PORT': '็ซฏๅฃ',
- 'settings.field.PYTHON_API_DEBUG': '่ชฟ่ฉฆๆจกๅผ',
- // Settings fields - Worker
- 'settings.field.ENABLE_PENDING_ORDER_WORKER': 'ๅ็จ่จๅฎ่็Worker',
- 'settings.field.PENDING_ORDER_STALE_SEC': '่จๅฎ่ถ
ๆๆ้(็ง)',
- // Settings fields - Trading
- 'settings.field.ORDER_MODE': 'ไธๅฎๆจกๅผ',
- 'settings.field.MAKER_WAIT_SEC': '้ๅนๅฎ็ญๅพ
ๆ้(็ง)',
- 'settings.field.MAKER_OFFSET_BPS': '้ๅนๅฎๅนๆ ผๅ็งป(ๅบ้ป)',
- // Settings fields - Notification
- 'settings.field.SIGNAL_WEBHOOK_URL': 'Webhook URL',
- 'settings.field.SIGNAL_WEBHOOK_TOKEN': 'Webhook Token',
- 'settings.field.SIGNAL_NOTIFY_TIMEOUT_SEC': '้็ฅ่ถ
ๆ(็ง)',
- 'settings.field.TELEGRAM_BOT_TOKEN': 'Telegram Bot Token',
- // Settings fields - SMTP
- 'settings.field.SMTP_HOST': 'SMTPๆๅๅจ',
- 'settings.field.SMTP_PORT': 'SMTP็ซฏๅฃ',
- 'settings.field.SMTP_USER': 'SMTP็จๆถๅ',
- 'settings.field.SMTP_PASSWORD': 'SMTPๅฏ็ขผ',
- 'settings.field.SMTP_FROM': '็ผไปถไบบๅฐๅ',
- 'settings.field.SMTP_USE_TLS': 'ไฝฟ็จTLS',
- 'settings.field.SMTP_USE_SSL': 'ไฝฟ็จSSL',
- // Settings fields - Twilio
- 'settings.field.TWILIO_ACCOUNT_SID': 'Account SID',
- 'settings.field.TWILIO_AUTH_TOKEN': 'Auth Token',
- 'settings.field.TWILIO_FROM_NUMBER': '็ผ้่็ขผ',
- // Settings fields - Strategy
- 'settings.field.DISABLE_RESTORE_RUNNING_STRATEGIES': '็ฆ็จ่ชๅๆขๅพฉ็ญ็ฅ',
- 'settings.field.STRATEGY_TICK_INTERVAL_SEC': '็ญ็ฅTick้้(็ง)',
- 'settings.field.PRICE_CACHE_TTL_SEC': 'ๅนๆ ผ็ทฉๅญTTL(็ง)',
- // Settings fields - Proxy
- 'settings.field.PROXY_PORT': 'ไปฃ็็ซฏๅฃ',
- 'settings.field.PROXY_HOST': 'ไปฃ็ไธปๆฉ',
- 'settings.field.PROXY_SCHEME': 'ไปฃ็ๅ่ญฐ',
- 'settings.field.PROXY_URL': 'ๅฎๆดไปฃ็URL',
- // Settings fields - App
- 'settings.field.CORS_ORIGINS': 'CORSไพๆบ',
- 'settings.field.RATE_LIMIT': '้็้ๅถ(ๆฏๅ้)',
- 'settings.field.ENABLE_CACHE': 'ๅ็จ็ทฉๅญ',
- 'settings.field.ENABLE_REQUEST_LOG': 'ๅ็จ่ซๆฑๆฅ่ช',
- 'settings.field.ENABLE_AI_ANALYSIS': 'ๅ็จAIๅๆ',
- // Settings fields - ่จๆถ/ๅๆ
- 'settings.field.ENABLE_AGENT_MEMORY': 'ๅ็จAgent่จๆถ',
- 'settings.field.AGENT_MEMORY_ENABLE_VECTOR': 'ๅ็จๅ้ๆชข็ดข(ๆฌๅฐ)',
- 'settings.field.AGENT_MEMORY_EMBEDDING_DIM': 'Embedding็ถญๅบฆ',
- 'settings.field.AGENT_MEMORY_TOP_K': 'ๅฌๅๆธ้TopK',
- 'settings.field.AGENT_MEMORY_CANDIDATE_LIMIT': 'ๅ้ธ็ชๅฃๅคงๅฐ',
- 'settings.field.AGENT_MEMORY_HALF_LIFE_DAYS': 'ๆ้่กฐๆธๅ่กฐๆ(ๅคฉ)',
- 'settings.field.AGENT_MEMORY_W_SIM': '็ธไผผๅบฆๆฌ้',
- 'settings.field.AGENT_MEMORY_W_RECENCY': 'ๆ้ๆฌ้',
- 'settings.field.AGENT_MEMORY_W_RETURNS': 'ๆถ็ๆฌ้',
- // Settings fields - ่ชๅๅๆ้ฉ่ญWorker
- 'settings.field.ENABLE_REFLECTION_WORKER': 'ๅ็จ่ชๅ้ฉ่ญ',
- 'settings.field.REFLECTION_WORKER_INTERVAL_SEC': '้ฉ่ญๅจๆ้้(็ง)',
- // Settings fields - AI
- 'settings.field.OPENROUTER_API_KEY': 'OpenRouter API Key',
- 'settings.field.OPENROUTER_API_URL': 'OpenRouter API URL',
- 'settings.field.OPENROUTER_MODEL': '้ป่ชๆจกๅ',
- 'settings.field.OPENROUTER_TEMPERATURE': 'Temperature',
- 'settings.field.OPENROUTER_MAX_TOKENS': 'Max Tokens',
- 'settings.field.OPENROUTER_TIMEOUT': '่ถ
ๆๆ้(็ง)',
- 'settings.field.OPENROUTER_CONNECT_TIMEOUT': '้ฃๆฅ่ถ
ๆ(็ง)',
- 'settings.field.AI_MODELS_JSON': 'ๆจกๅๅ่กจ(JSON)',
- // Settings fields - Market
- 'settings.field.MARKET_TYPES_JSON': 'ๅธๅ ด้กๅ(JSON)',
- 'settings.field.TRADING_SUPPORTED_SYMBOLS_JSON': 'ๆฏๆ็ไบคๆๅฐ(JSON)',
- // Settings fields - Data Source
- 'settings.field.DATA_SOURCE_TIMEOUT': 'ๆธๆๆบ่ถ
ๆ(็ง)',
- 'settings.field.DATA_SOURCE_RETRY': '้่ฉฆๆฌกๆธ',
- 'settings.field.DATA_SOURCE_RETRY_BACKOFF': '้่ฉฆ้้ฟ(็ง)',
- 'settings.field.FINNHUB_API_KEY': 'Finnhub API Key',
- 'settings.field.FINNHUB_TIMEOUT': 'Finnhub่ถ
ๆ(็ง)',
- 'settings.field.FINNHUB_RATE_LIMIT': 'Finnhub้็้ๅถ',
- 'settings.field.CCXT_DEFAULT_EXCHANGE': 'CCXT้ป่ชไบคๆๆ',
- 'settings.field.CCXT_TIMEOUT': 'CCXT่ถ
ๆ(ms)',
- 'settings.field.CCXT_PROXY': 'CCXTไปฃ็',
- 'settings.field.AKSHARE_TIMEOUT': 'Akshare่ถ
ๆ(็ง)',
- 'settings.field.YFINANCE_TIMEOUT': 'YFinance่ถ
ๆ(็ง)',
- 'settings.field.TIINGO_API_KEY': 'Tiingo API Key',
- 'settings.field.TIINGO_TIMEOUT': 'Tiingo่ถ
ๆ(็ง)',
- // Settings fields - Search
- 'settings.field.SEARCH_PROVIDER': 'ๆ็ดขๆไพๅ',
- 'settings.field.SEARCH_MAX_RESULTS': 'ๆๅคง็ตๆๆธ',
- 'settings.field.SEARCH_GOOGLE_API_KEY': 'Google API Key',
- 'settings.field.SEARCH_GOOGLE_CX': 'Google CX',
- 'settings.field.SEARCH_BING_API_KEY': 'Bing API Key',
- 'settings.field.INTERNAL_API_KEY': 'ๅ
ง้จAPI Key',
-
- // Settings descriptions (้
็ฝฎ้
่ชชๆ)
- 'settings.desc.PYTHON_API_HOST': 'ๆๅ็ฃ่ฝๅฐๅใ0.0.0.0 ๅ
่จฑๅค้จ่จชๅ๏ผ127.0.0.1 ๅ
ๆฌๅฐ่จชๅ',
- 'settings.desc.PYTHON_API_PORT': 'ๆๅ็ฃ่ฝ็ซฏๅฃ๏ผ้ป่ช5000',
- 'settings.desc.PYTHON_API_DEBUG': 'ๅ็จ่ชฟ่ฉฆๆจกๅผ๏ผ้็ผๆไฝฟ็จใ็็ข็ฐๅข่ซ้้',
- 'settings.desc.SECRET_KEY': 'JWT็ฐฝๅๅฏ้ฐใ็็ข็ฐๅขๅฟ
้ ไฟฎๆนไปฅ็ขบไฟๅฎๅ
จ',
- 'settings.desc.ADMIN_USER': '็ฎก็ๅก็ป้็จๆถๅ',
- 'settings.desc.ADMIN_PASSWORD': '็ฎก็ๅก็ป้ๅฏ็ขผใ็็ข็ฐๅขๅฟ
้ ไฟฎๆน',
- 'settings.desc.OPENROUTER_API_KEY': 'OpenRouter APIๅฏ้ฐ๏ผ็จๆผ่จชๅๅค็จฎAIๆจกๅ',
- 'settings.desc.OPENROUTER_API_URL': 'OpenRouter API็ซฏ้ปๅฐๅ',
- 'settings.desc.OPENROUTER_MODEL': '้ป่ชไฝฟ็จ็AIๆจกๅ๏ผๅฆ openai/gpt-4o, anthropic/claude-3.5-sonnet',
- 'settings.desc.OPENROUTER_TEMPERATURE': 'ๆจกๅๅต้ ๆง(0-1)ใ่ถไฝ่ถ็ขบๅฎๆง๏ผ่ถ้ซ่ถๆๅตๆ',
- 'settings.desc.OPENROUTER_MAX_TOKENS': 'ๆฏๆฌก่ซๆฑๆๅคง่ผธๅบtokenๆธ',
- 'settings.desc.OPENROUTER_TIMEOUT': 'API่ซๆฑ่ถ
ๆๆ้๏ผ็ง๏ผ',
- 'settings.desc.OPENROUTER_CONNECT_TIMEOUT': '้ฃๆฅๅปบ็ซ่ถ
ๆๆ้๏ผ็ง๏ผ',
- 'settings.desc.AI_MODELS_JSON': '่ชๅฎ็พฉๆจกๅๅ่กจ๏ผJSONๆ ผๅผ๏ผ็จๆผๆจกๅ้ธๆๅจ',
- 'settings.desc.ENABLE_PENDING_ORDER_WORKER': 'ๅ็จๅพๅฐ่จๅฎ่็Worker๏ผๅฏฆ็คไบคๆๅฟ
้',
- 'settings.desc.PENDING_ORDER_STALE_SEC': '็ญๅพ
่จๅฎ่ถ
ๆๆ้๏ผ่ถ
ๆๅพๆจ่จ็บ้ๆ',
- 'settings.desc.ORDER_MODE': 'maker: ้ๅนๅฎๅชๅ
(ๆ็บ่ฒปไฝ)๏ผmarket: ๅธๅนๅฎ(็ซๅณๆไบค)',
- 'settings.desc.MAKER_WAIT_SEC': '้ๅนๅฎ็ญๅพ
ๆไบคๆ้๏ผ่ถ
ๆๅพ่ชๅๅๆ็บๅธๅนๅฎ',
- 'settings.desc.MAKER_OFFSET_BPS': '้ๅนๅฎๅนๆ ผๅ็งป(ๅบ้ป)ใ่ฒทๅ
ฅๅน=ๅธๅน*(1-ๅ็งป)๏ผ่ณฃๅบๅน=ๅธๅน*(1+ๅ็งป)',
- 'settings.desc.DISABLE_RESTORE_RUNNING_STRATEGIES': '็ฆๆญขๆๅ้ๅๆ่ชๅๆขๅพฉ้่กไธญ็็ญ็ฅ',
- 'settings.desc.STRATEGY_TICK_INTERVAL_SEC': '็ญ็ฅไธปๅพช็ฐๆชขๆฅ้้๏ผ็ง๏ผ',
- 'settings.desc.PRICE_CACHE_TTL_SEC': 'ๅนๆ ผๆธๆ็ทฉๅญๆๆๆ๏ผ็ง๏ผ',
- 'settings.desc.MARKET_TYPES_JSON': '่ชๅฎ็พฉๅธๅ ด้กๅ้
็ฝฎ๏ผJSONๆ ผๅผ',
- 'settings.desc.TRADING_SUPPORTED_SYMBOLS_JSON': 'ๆฏๆ็ไบคๆๅฐๅ่กจ๏ผJSONๆ ผๅผ',
- 'settings.desc.DATA_SOURCE_TIMEOUT': 'ๆธๆๆบ่ซๆฑ้ป่ช่ถ
ๆๆ้',
- 'settings.desc.DATA_SOURCE_RETRY': 'ๆธๆๆบ่ซๆฑๅคฑๆๆ็้่ฉฆๆฌกๆธ',
- 'settings.desc.DATA_SOURCE_RETRY_BACKOFF': '้่ฉฆ้้ๆ้๏ผ็ง๏ผ',
- 'settings.desc.CCXT_DEFAULT_EXCHANGE': 'CCXT้ป่ชไบคๆๆ๏ผbinance, coinbase, okx็ญ๏ผ',
- 'settings.desc.CCXT_TIMEOUT': 'CCXT่ซๆฑ่ถ
ๆๆ้๏ผๆฏซ็ง๏ผ',
- 'settings.desc.CCXT_PROXY': 'CCXT่ซๆฑไปฃ็ๅฐๅ๏ผๅฆ socks5h://127.0.0.1:1080๏ผ',
- 'settings.desc.FINNHUB_API_KEY': 'Finnhub APIๅฏ้ฐ๏ผ็จๆผ็พ่กๆธๆ๏ผๆๅ
่ฒป้กๅบฆ๏ผ',
- 'settings.desc.FINNHUB_TIMEOUT': 'Finnhub API่ซๆฑ่ถ
ๆๆ้',
- 'settings.desc.FINNHUB_RATE_LIMIT': 'Finnhub API้็้ๅถ๏ผๆฏๅ้่ซๆฑๆธ๏ผ',
- 'settings.desc.TIINGO_API_KEY': 'Tiingo APIๅฏ้ฐ๏ผ็จๆผๅคๅฏ/่ฒด้ๅฑฌๆธๆ๏ผๅ
่ฒป็ไธๆฏๆ1ๅ้ๆธๆ๏ผ',
- 'settings.desc.TIINGO_TIMEOUT': 'Tiingo API่ซๆฑ่ถ
ๆๆ้',
- 'settings.desc.AKSHARE_TIMEOUT': 'Akshare API่ถ
ๆๆ้๏ผ็จๆผA่กๆธๆ',
- 'settings.desc.YFINANCE_TIMEOUT': 'Yahoo Finance API่ถ
ๆๆ้',
- 'settings.desc.SIGNAL_WEBHOOK_URL': 'ไฟก่้็ฅWebhookๅฐๅ๏ผPOST JSON๏ผ',
- 'settings.desc.SIGNAL_WEBHOOK_TOKEN': 'Webhook่ช่ญไปค็๏ผ้้่ซๆฑ้ ญ็ผ้',
- 'settings.desc.SIGNAL_NOTIFY_TIMEOUT_SEC': '้็ฅ่ซๆฑ่ถ
ๆๆ้',
- 'settings.desc.TELEGRAM_BOT_TOKEN': 'TelegramๆฉๅจไบบToken๏ผๅพ@BotFather็ฒๅ',
- 'settings.desc.SMTP_HOST': 'SMTP้ตไปถๆๅๅจๅฐๅ๏ผๅฆ smtp.gmail.com๏ผ',
- 'settings.desc.SMTP_PORT': 'SMTP็ซฏๅฃ๏ผTLS็จ587๏ผSSL็จ465๏ผๆๆ็จ25๏ผ',
- 'settings.desc.SMTP_USER': 'SMTP่ช่ญ็จๆถๅ๏ผ้ๅธธๆฏ้ต็ฎฑๅฐๅ๏ผ',
- 'settings.desc.SMTP_PASSWORD': 'SMTP่ช่ญๅฏ็ขผๆๆ็จๅฐ็จๅฏ็ขผ',
- 'settings.desc.SMTP_FROM': '้ตไปถ็ผไปถไบบๅฐๅ',
- 'settings.desc.SMTP_USE_TLS': 'ๅ็จSTARTTLSๅ ๅฏ๏ผๆจ่ฆ็ซฏๅฃ587๏ผ',
- 'settings.desc.SMTP_USE_SSL': 'ๅ็จSSLๅ ๅฏ๏ผ็ซฏๅฃ465๏ผ',
- 'settings.desc.TWILIO_ACCOUNT_SID': 'Twilio่ณฌๆถSID๏ผๅพๆงๅถๅฐ็ฒๅ',
- 'settings.desc.TWILIO_AUTH_TOKEN': 'Twilio่ช่ญToken๏ผๅพๆงๅถๅฐ็ฒๅ',
- 'settings.desc.TWILIO_FROM_NUMBER': 'Twilio็ผ้็ญไฟก็่็ขผ๏ผๅฆ +1234567890๏ผ',
- 'settings.desc.ENABLE_AGENT_MEMORY': 'ๅ็จAI Agent่จๆถๅ่ฝ๏ผ็จๆผๅญธ็ฟๆญทๅฒไบคๆ',
- 'settings.desc.AGENT_MEMORY_ENABLE_VECTOR': 'ๅ็จๆฌๅฐๅ้็ธไผผๅบฆๆ็ดข้ฒ่ก่จๆถๆชข็ดข',
- 'settings.desc.AGENT_MEMORY_EMBEDDING_DIM': '่จๆถๅ้ๅตๅ
ฅ็ถญๅบฆ',
- 'settings.desc.AGENT_MEMORY_TOP_K': 'ๆชข็ดขๆ่ฟๅ็็ธไผผ่จๆถๆธ้',
- 'settings.desc.AGENT_MEMORY_CANDIDATE_LIMIT': '็ธไผผๅบฆๆ็ดข็ๅ้ธ่จๆถไธ้',
- 'settings.desc.AGENT_MEMORY_HALF_LIFE_DAYS': '่จๆถๆ้่กฐๆธ็ๅ่กฐๆ๏ผๅคฉ๏ผ',
- 'settings.desc.AGENT_MEMORY_W_SIM': '่จๆถๆๅบไธญ็ธไผผๅบฆๅๆธ็ๆฌ้(0-1)',
- 'settings.desc.AGENT_MEMORY_W_RECENCY': '่จๆถๆๅบไธญๆ้ๆฐ่ฟๅบฆ็ๆฌ้(0-1)',
- 'settings.desc.AGENT_MEMORY_W_RETURNS': '่จๆถๆๅบไธญๆถ็่กจ็พ็ๆฌ้(0-1)',
- 'settings.desc.ENABLE_REFLECTION_WORKER': 'ๅ็จๅพๅฐ่ชๅไบคๆๅๆWorker',
- 'settings.desc.REFLECTION_WORKER_INTERVAL_SEC': '่ชๅๅๆ้่ก้้๏ผ้ป่ช24ๅฐๆ๏ผ',
- 'settings.desc.PROXY_HOST': 'ไปฃ็ๆๅๅจไธปๆฉๅๆIP',
- 'settings.desc.PROXY_PORT': 'ไปฃ็ๆๅๅจ็ซฏๅฃ๏ผ็็ฉบๅ็ฆ็จไปฃ็๏ผ',
- 'settings.desc.PROXY_SCHEME': 'ไปฃ็ๅ่ญฐ้กๅใsocks5h ่กจ็คบDNSไน่ตฐไปฃ็',
- 'settings.desc.PROXY_URL': 'ๅฎๆดไปฃ็URL๏ผ่จญ็ฝฎๅพ่ฆ่ไธ้ข็้
็ฝฎ๏ผ',
- 'settings.desc.SEARCH_PROVIDER': '็ถฒ้ ๆ็ดขๆไพๅ๏ผ็จๆผAI็ ็ฉถๅ่ฝ',
- 'settings.desc.SEARCH_MAX_RESULTS': 'ๆ็ดข่ฟๅ็ๆๅคง็ตๆๆธ',
- 'settings.desc.SEARCH_GOOGLE_API_KEY': 'Google่ชๅฎ็พฉๆ็ดขAPIๅฏ้ฐ',
- 'settings.desc.SEARCH_GOOGLE_CX': 'Googleๅฏ็ทจ็จๆ็ดขๅผๆID (CX)',
- 'settings.desc.SEARCH_BING_API_KEY': 'Microsoft Bing็ถฒ้ ๆ็ดขAPIๅฏ้ฐ',
- 'settings.desc.INTERNAL_API_KEY': 'ๅ
ง้จAPI่ช่ญๅฏ้ฐ๏ผ็จๆผๆๅ้่ชฟ็จ',
- 'settings.desc.CORS_ORIGINS': 'ๅ
่จฑ็CORSไพๆบ๏ผ* ่กจ็คบๅ
จ้จ๏ผๆ้่ๅ้็ๅ่กจ๏ผ',
- 'settings.desc.RATE_LIMIT': 'ๆฏIPๆฏๅ้็API่ซๆฑ้ๅถ',
- 'settings.desc.ENABLE_CACHE': 'ๅ็จ้ฟๆ็ทฉๅญไปฅๆ้ซๆง่ฝ',
- 'settings.desc.ENABLE_REQUEST_LOG': '่จ้ๆๆAPI่ซๆฑๆฅ่ช๏ผ็จๆผ่ชฟ่ฉฆ',
- 'settings.desc.ENABLE_AI_ANALYSIS': 'ๅ็จAI้ฉ
ๅ็ๅธๅ ดๅๆๅ่ฝ',
-
- // Portfolio - ่ณ็ข็ฃๆธฌ
- 'portfolio.summary.totalValue': '็ธฝๅธๅผ',
- 'portfolio.summary.totalCost': '็ธฝๆๆฌ',
- 'portfolio.summary.totalPnl': '็ธฝ็่ง',
- 'portfolio.summary.positionCount': 'ๆๅๆธ้',
- 'portfolio.summary.profitLossRatio': '็ๅฉ/่งๆ',
- 'portfolio.summary.today': 'ไปๆฅ',
- 'portfolio.summary.todayPnl': 'ไปๆฅ็่ง',
- 'portfolio.summary.bestPerformer': 'ๆไฝณ่กจ็พ',
- 'portfolio.summary.worstPerformer': 'ๆๅทฎ่กจ็พ',
- 'portfolio.summary.priceSync': 'ๅนๆ ผๅๆญฅ',
- 'portfolio.summary.syncInterval': 'ๅทๆฐ้้',
- 'portfolio.summary.justNow': 'ๅๅ',
- 'portfolio.summary.ago': 'ๅ',
- 'portfolio.positions.title': 'ๆ็ๆๅ',
- 'portfolio.positions.add': 'ๆทปๅ ๆๅ',
- 'portfolio.positions.addFirst': 'ๆทปๅ ็ฌฌไธ็ญๆๅ',
- 'portfolio.positions.empty': 'ๆซ็กๆๅ่จ้',
- 'portfolio.positions.deleteConfirm': '็ขบๅฎๅช้ค้็ญๆๅๅ๏ผ',
- 'portfolio.positions.currentPrice': '็พๅน',
- 'portfolio.positions.entryPrice': '่ฒทๅ
ฅๅน',
- 'portfolio.positions.quantity': 'ๆธ้',
- 'portfolio.positions.side': 'ๆนๅ',
- 'portfolio.positions.long': 'ๅๅค',
- 'portfolio.positions.short': 'ๅ็ฉบ',
- 'portfolio.positions.marketValue': 'ๅธๅผ',
- 'portfolio.positions.pnl': '็่ง',
- 'portfolio.positions.items': 'ๅๆๅ',
- 'portfolio.monitors.title': 'AI ็ฃๆง',
- 'portfolio.monitors.add': 'ๆทปๅ ็ฃๆง',
- 'portfolio.monitors.addFirst': 'ๆทปๅ AI ็ฃๆง',
- 'portfolio.monitors.empty': 'ๆซ็ก็ฃๆงไปปๅ',
- 'portfolio.monitors.deleteConfirm': '็ขบๅฎๅช้ค้ๅ็ฃๆงไปปๅๅ๏ผ',
- 'portfolio.monitors.interval': 'ๅท่ก้้',
- 'portfolio.monitors.lastRun': 'ไธๆฌกๅท่ก',
- 'portfolio.monitors.nextRun': 'ไธๆฌกๅท่ก',
- 'portfolio.monitors.channels': '้็ฅๆธ ้',
- 'portfolio.monitors.runNow': '็ซๅณๅท่ก',
- 'portfolio.monitors.analysisResult': 'AI ๅๆ็ตๆ',
- 'portfolio.monitors.runningTitle': 'AI ๅๆๅทฒๅๅ',
- 'portfolio.monitors.runningDesc': 'ๅๆๆญฃๅจๅพ่บ้่ก๏ผๅฎๆๅพๆ้้้็ฅๆจ้็ตๆใๅๆๅคๅๆๅๅฏ่ฝ้่ฆๅนพๅ้ๆ้ใ',
- 'portfolio.monitors.timeoutTitle': '่ซๆฑ่ถ
ๆ',
- 'portfolio.monitors.timeoutDesc': 'ๅๆๅฏ่ฝๆญฃๅจๅพ่บ้่กไธญ๏ผ่ซ็จๅพๆฅ็้็ฅ็ฒๅ็ตๆใๅฆๆ้ทๆ้ๆฒๆๆถๅฐ้็ฅ๏ผ่ซ้่ฉฆใ',
- 'portfolio.modal.addPosition': 'ๆทปๅ ๆๅ',
- 'portfolio.modal.editPosition': '็ทจ่ผฏๆๅ',
- 'portfolio.modal.addMonitor': 'ๆทปๅ ็ฃๆง',
- 'portfolio.modal.editMonitor': '็ทจ่ผฏ็ฃๆง',
- 'portfolio.form.market': 'ๅธๅ ด',
- 'portfolio.form.marketRequired': '่ซ้ธๆๅธๅ ด',
- 'portfolio.form.selectMarket': '้ธๆๅธๅ ด',
- 'portfolio.form.symbol': 'ๆจ็ไปฃ็ขผ',
- 'portfolio.form.symbolRequired': '่ซ่ผธๅ
ฅๆจ็ไปฃ็ขผ',
- 'portfolio.form.searchSymbol': 'ๆ็ดขๆ่ผธๅ
ฅๆจ็ไปฃ็ขผ',
- 'portfolio.form.useAsSymbol': 'ไฝฟ็จ',
- 'portfolio.form.asSymbolCode': 'ไฝ็บๆจ็ไปฃ็ขผ',
- 'portfolio.form.symbolHint': 'ๅฏๆ็ดขๆจ็ๅบซ๏ผๆ็ดๆฅ่ผธๅ
ฅไปปๆไปฃ็ขผ',
- 'portfolio.form.side': 'ๆนๅ',
- 'portfolio.form.quantity': 'ๆธ้',
- 'portfolio.form.quantityRequired': '่ซ่ผธๅ
ฅๆธ้',
- 'portfolio.form.enterQuantity': '่ผธๅ
ฅๆๅๆธ้',
- 'portfolio.form.entryPrice': '่ฒทๅ
ฅๅน',
- 'portfolio.form.entryPriceRequired': '่ซ่ผธๅ
ฅ่ฒทๅ
ฅๅน',
- 'portfolio.form.enterEntryPrice': '่ผธๅ
ฅ่ฒทๅ
ฅๅนๆ ผ',
- 'portfolio.form.notes': 'ๅๆณจ',
- 'portfolio.form.enterNotes': 'ๅฏ้ธ๏ผๆทปๅ ๅๆณจ',
- 'portfolio.form.monitorName': '็ฃๆงๅ็จฑ',
- 'portfolio.form.monitorNameRequired': '่ซ่ผธๅ
ฅ็ฃๆงๅ็จฑ',
- 'portfolio.form.enterMonitorName': 'ไพๅฆ๏ผๆฏๆฅ็ตๅๅๆ',
- 'portfolio.form.interval': 'ๅท่ก้้',
- 'portfolio.form.minutes': 'ๅ้',
- 'portfolio.form.hour': 'ๅฐๆ',
- 'portfolio.form.hours': 'ๅฐๆ',
- 'portfolio.form.notifyChannels': '้็ฅๆธ ้',
- 'portfolio.form.browser': '็่ฆฝๅจ้็ฅ',
- 'portfolio.form.email': '้ตไปถ',
- 'portfolio.form.telegramChatId': 'Telegram Chat ID',
- 'portfolio.form.enterTelegramChatId': '่ผธๅ
ฅ Telegram Chat ID',
- 'portfolio.form.telegramRequired': '่ซ่ผธๅ
ฅ Telegram Chat ID',
- 'portfolio.form.emailAddress': '้ต็ฎฑๅฐๅ',
- 'portfolio.form.enterEmail': '่ผธๅ
ฅ้ต็ฎฑๅฐๅ',
- 'portfolio.form.emailRequired': '่ซ่ผธๅ
ฅ้ต็ฎฑๅฐๅ',
- 'portfolio.form.emailInvalid': '่ซ่ผธๅ
ฅๆๆ็้ต็ฎฑๅฐๅ',
- 'portfolio.form.customPrompt': '่ชๅฎ็พฉๆ็คบ',
- 'portfolio.form.customPromptPlaceholder': 'ๅฏ้ธ๏ผๆทปๅ ็นๅฅ้ๆณจ้ป๏ผไพๅฆ"้้ป้ๆณจ็งๆ่ก้ขจ้ช"',
- 'portfolio.form.monitorScope': '็ฃๆง็ฏๅ',
- 'portfolio.form.allPositions': 'ๅ
จ้จๆๅ',
- 'portfolio.form.selectedPositions': 'ๆๅฎๆๅ',
- 'portfolio.form.selectPositions': '้ธๆๆๅ',
- 'portfolio.form.selectAll': 'ๅ
จ้ธ',
- 'portfolio.form.deselectAll': 'ๅ
จไธ้ธ',
- 'portfolio.form.selectedCount': 'ๅทฒ้ธ {count}/{total}',
- 'portfolio.form.pleaseSelectPositions': '่ซ่ณๅฐ้ธๆไธๅๆๅ้ฒ่ก็ฃๆง',
- 'portfolio.message.loadFailed': 'ๅ ่ผๆธๆๅคฑๆ',
- 'portfolio.message.saveSuccess': 'ไฟๅญๆๅ',
- 'portfolio.message.saveFailed': 'ไฟๅญๅคฑๆ',
- 'portfolio.message.deleteSuccess': 'ๅช้คๆๅ',
- 'portfolio.message.deleteFailed': 'ๅช้คๅคฑๆ',
- 'portfolio.message.updateFailed': 'ๆดๆฐๅคฑๆ',
- 'portfolio.message.monitorEnabled': '็ฃๆงๅทฒๅ็จ',
- 'portfolio.message.monitorDisabled': '็ฃๆงๅทฒๆซๅ',
- 'portfolio.message.monitorRunSuccess': 'ๅๆๅฎๆ',
- 'portfolio.message.monitorRunFailed': 'ๅๆๅคฑๆ',
- 'portfolio.message.monitorRunning': 'AI ๅๆๅทฒๅๅ๏ผ่ซ็ญๅพ
้็ฅ',
- // Portfolio - ๅ็ต
- 'portfolio.groups.all': 'ๅ
จ้จๆๅ',
- 'portfolio.groups.ungrouped': 'ๆชๅ็ต',
- 'portfolio.form.group': 'ๅ็ต',
- 'portfolio.form.enterGroup': '่ผธๅ
ฅๆ้ธๆๅ็ต',
- // Portfolio - ้ ่ญฆ
- 'portfolio.alerts.title': 'ๅนๆ ผ/็่ง้ ่ญฆ',
- 'portfolio.alerts.addAlert': 'ๆทปๅ ้ ่ญฆ',
- 'portfolio.alerts.editAlert': '็ทจ่ผฏ้ ่ญฆ',
- 'portfolio.alerts.alertType': '้ ่ญฆ้กๅ',
- 'portfolio.alerts.priceAbove': 'ๅนๆ ผ้ซๆผ',
- 'portfolio.alerts.priceBelow': 'ๅนๆ ผไฝๆผ',
- 'portfolio.alerts.pnlAbove': '็ๅฉ้ซๆผ (%)',
- 'portfolio.alerts.pnlBelow': '่งๆไฝๆผ (%)',
- 'portfolio.alerts.threshold': '้พๅผ',
- 'portfolio.alerts.thresholdRequired': '่ซ่ผธๅ
ฅ้พๅผ',
- 'portfolio.alerts.enterPrice': '่ผธๅ
ฅๅนๆ ผ',
- 'portfolio.alerts.enterPercent': '่ผธๅ
ฅ็พๅๆฏ',
- 'portfolio.alerts.currentPrice': '็ถๅๅนๆ ผ',
- 'portfolio.alerts.currentPriceHint': '็ถๅๅนๆ ผ',
- 'portfolio.alerts.repeatInterval': '้่คๆ้',
- 'portfolio.alerts.noRepeat': 'ไธ้่ค (่งธ็ผไธๆฌก)',
- 'portfolio.alerts.every5min': 'ๆฏ 5 ๅ้',
- 'portfolio.alerts.every15min': 'ๆฏ 15 ๅ้',
- 'portfolio.alerts.every30min': 'ๆฏ 30 ๅ้',
- 'portfolio.alerts.every1hour': 'ๆฏ 1 ๅฐๆ',
- 'portfolio.alerts.every4hours': 'ๆฏ 4 ๅฐๆ',
- 'portfolio.alerts.onceDaily': 'ๆฏๅคฉไธๆฌก',
- 'portfolio.alerts.enabled': 'ๅ็จ้ ่ญฆ',
- 'portfolio.alerts.enabledDesc': '้ๅๅพๅฐ่ชๅ็ฃๆธฌไธฆ่งธ็ผ้็ฅ',
- 'portfolio.alerts.delete': 'ๅช้ค',
- 'portfolio.alerts.deleteConfirm': '็ขบๅฎ่ฆๅช้คๆญค้ ่ญฆๅ๏ผ',
- 'portfolio.modal.addAlert': 'ๆทปๅ ้ ่ญฆ',
- 'portfolio.modal.editAlert': '็ทจ่ผฏ้ ่ญฆ',
-
- // User Management
- 'menu.userManage': '็จๆถ็ฎก็',
- 'menu.myProfile': 'ๅไบบไธญๅฟ',
- 'userManage.title': '็จๆถ็ฎก็',
- 'userManage.searchPlaceholder': 'ๆ็ดข็จๆถๅ/้ต็ฎฑ/ๆฑ็จฑ',
- 'userManage.description': '็ฎก็็ณป็ตฑ็จๆถใ่ง่ฒๅๆฌ้',
- 'userManage.createUser': 'ๅตๅปบ็จๆถ',
- 'userManage.editUser': '็ทจ่ผฏ็จๆถ',
- 'userManage.username': '็จๆถๅ',
- 'userManage.password': 'ๅฏ็ขผ',
- 'userManage.nickname': 'ๆฑ็จฑ',
- 'userManage.email': '้ต็ฎฑ',
- 'userManage.role': '่ง่ฒ',
- 'userManage.status': '็ๆ
',
- 'userManage.lastLogin': 'ๆๅพ็ป้',
- 'userManage.active': 'ๅ็จ',
- 'userManage.disabled': '็ฆ็จ',
- 'userManage.neverLogin': 'ๅพๆช็ป้',
- 'userManage.usernameRequired': '่ซ่ผธๅ
ฅ็จๆถๅ',
- 'userManage.usernamePlaceholder': '่ผธๅ
ฅ็จๆถๅ',
- 'userManage.passwordRequired': '่ซ่ผธๅ
ฅๅฏ็ขผ',
- 'userManage.passwordPlaceholder': '่ผธๅ
ฅๅฏ็ขผ๏ผ่ณๅฐ6ไฝ๏ผ',
- 'userManage.passwordMin': 'ๅฏ็ขผ่ณๅฐ6ๅๅญ็ฌฆ',
- 'userManage.nicknamePlaceholder': '่ผธๅ
ฅๆฑ็จฑ',
- 'userManage.emailPlaceholder': '่ผธๅ
ฅ้ต็ฎฑ',
- 'userManage.emailInvalid': '้ต็ฎฑๆ ผๅผไธๆญฃ็ขบ',
- 'userManage.rolePlaceholder': '้ธๆ่ง่ฒ',
- 'userManage.statusPlaceholder': '้ธๆ็ๆ
',
- 'userManage.resetPassword': '้็ฝฎๅฏ็ขผ',
- 'userManage.resetPasswordWarning': 'ๆญคๆไฝๅฐ้็ฝฎ็จๆถๅฏ็ขผ',
- 'userManage.newPassword': 'ๆฐๅฏ็ขผ',
- 'userManage.newPasswordPlaceholder': '่ผธๅ
ฅๆฐๅฏ็ขผ',
- 'userManage.confirmDelete': '็ขบๅฎ่ฆๅช้คๆญค็จๆถๅ๏ผ',
- 'userManage.roleAdmin': '็ฎก็ๅก',
- 'userManage.roleManager': '็ถ็',
- 'userManage.roleUser': 'ๆฎ้็จๆถ',
- 'userManage.roleViewer': '่จชๅฎข',
- 'userManage.credits': '็ฉๅ',
- 'userManage.adjustCredits': '่ชฟๆด็ฉๅ',
- 'userManage.setVip': '่จญ็ฝฎVIP',
- 'userManage.currentCredits': '็ถๅ็ฉๅ',
- 'userManage.newCredits': 'ๆฐ็ฉๅ',
- 'userManage.enterCredits': '่ผธๅ
ฅๆฐ็็ฉๅๆธ้',
- 'userManage.creditsNonNegative': '็ฉๅไธ่ฝ็บ่ฒ ๆธ',
- 'userManage.currentVip': '็ถๅVIP็ๆ
',
- 'userManage.vipActive': 'ๆๆ',
- 'userManage.vipExpired': 'ๅทฒ้ๆ',
- 'userManage.vipDays': 'VIPๅคฉๆธ',
- 'userManage.vipExpiresAt': 'VIP้ๆๆ้',
- 'userManage.cancelVip': 'ๅๆถVIP',
- 'userManage.days': 'ๅคฉ',
- 'userManage.customDate': '่ชๅฎ็พฉๆฅๆ',
- 'userManage.selectDate': '่ซ้ธๆๆฅๆ',
- 'userManage.remark': 'ๅๆณจ',
- 'userManage.remarkPlaceholder': 'ๅฏ้ธๅๆณจ',
-
- // Profile
- 'profile.title': 'ๅไบบไธญๅฟ',
- 'profile.description': '็ฎก็ๆจ็่ณฌๆถ่จญ็ฝฎๅๅๅฅฝ',
- 'profile.basicInfo': 'ๅบๆฌไฟกๆฏ',
- 'profile.changePassword': 'ไฟฎๆนๅฏ็ขผ',
- 'profile.username': '็จๆถๅ',
- 'profile.nickname': 'ๆฑ็จฑ',
- 'profile.email': '้ต็ฎฑ',
- 'profile.lastLogin': 'ๆๅพ็ป้',
- 'profile.nicknamePlaceholder': '่ผธๅ
ฅๆจ็ๆฑ็จฑ',
- 'profile.emailPlaceholder': '่ผธๅ
ฅๆจ็้ต็ฎฑ',
- 'profile.emailInvalid': '้ต็ฎฑๆ ผๅผไธๆญฃ็ขบ',
- 'profile.emailCannotChange': '่จปๅๅพ้ต็ฎฑไธๅฏไฟฎๆน',
- 'profile.passwordHint': 'ๅฏ็ขผ่ณๅฐ้่ฆ6ๅๅญ็ฌฆ',
- 'profile.oldPassword': '็ถๅๅฏ็ขผ',
- 'profile.newPassword': 'ๆฐๅฏ็ขผ',
- 'profile.confirmPassword': '็ขบ่ชๅฏ็ขผ',
- 'profile.oldPasswordRequired': '่ซ่ผธๅ
ฅ็ถๅๅฏ็ขผ',
- 'profile.oldPasswordPlaceholder': '่ผธๅ
ฅ็ถๅๅฏ็ขผ',
- 'profile.newPasswordRequired': '่ซ่ผธๅ
ฅๆฐๅฏ็ขผ',
- 'profile.newPasswordPlaceholder': '่ผธๅ
ฅๆฐๅฏ็ขผ',
- 'profile.confirmPasswordRequired': '่ซ็ขบ่ชๆฐๅฏ็ขผ',
- 'profile.confirmPasswordPlaceholder': 'ๅๆฌก่ผธๅ
ฅๆฐๅฏ็ขผ',
- 'profile.passwordMin': 'ๅฏ็ขผ่ณๅฐ6ๅๅญ็ฌฆ',
- 'profile.passwordMismatch': 'ๅ
ฉๆฌก่ผธๅ
ฅ็ๅฏ็ขผไธไธ่ด',
- 'profile.credits.title': 'ๆ็็ฉๅ',
- 'profile.credits.unit': '็ฉๅ',
- 'profile.credits.recharge': '้้/ๅ
ๅผ',
- 'profile.credits.vipExpires': 'VIPๆๆๆ่ณ',
- 'profile.credits.vipExpired': 'VIPๅทฒ้ๆ',
- 'profile.credits.noVip': '้VIP็จๆถ',
- 'profile.credits.hint': 'ไฝฟ็จAIๅๆ็ญๅ่ฝๆๆถ่็ฉๅ๏ผVIP็จๆถๅ
่ฒป',
- 'profile.creditsLog': 'ๆถ่ฒป่จ้',
- 'profile.creditsLog.time': 'ๆ้',
- 'profile.creditsLog.action': '้กๅ',
- 'profile.creditsLog.amount': '่ฎๅ',
- 'profile.creditsLog.balance': '้ค้ก',
- 'profile.creditsLog.remark': 'ๅๆณจ',
- 'profile.creditsLog.actionConsume': 'ๆถ่ฒป',
- 'profile.creditsLog.actionRecharge': 'ๅ
ๅผ',
- 'profile.creditsLog.actionAdjust': '่ชฟๆด',
- 'profile.creditsLog.actionRefund': '้ๆฌพ',
- 'profile.creditsLog.actionVipGrant': 'VIPๆไบ',
- 'profile.creditsLog.actionVipRevoke': 'VIPๅๆถ',
- 'profile.creditsLog.actionRegisterBonus': '่จปๅ็ๅต',
- 'profile.creditsLog.actionReferralBonus': '้่ซ็ๅต',
- 'profile.referral.title': '้่ซๅฅฝๅ',
- 'profile.referral.listTab': '้่ซๅ่กจ',
- 'profile.referral.totalInvited': 'ๅทฒ้่ซ',
- 'profile.referral.bonusPerInvite': 'ๆฏ้่ซ็ฒๅพ',
- 'profile.referral.yourLink': 'ๆจ็้่ซ้ๆฅ',
- 'profile.referral.copyLink': '่ค่ฃฝ้ๆฅ',
- 'profile.referral.linkCopied': '้่ซ้ๆฅๅทฒ่ค่ฃฝ',
- 'profile.referral.newUserBonus': 'ๆฐ็จๆถ่จปๅ็ฒๅพ',
- 'profile.referral.user': '็จๆถ',
- 'profile.referral.registerTime': '่จปๅๆ้',
- 'profile.referral.noReferrals': 'ๆซ็ก้่ซ่จ้',
- 'profile.referral.shareNow': '็ซๅณๅไบซ้่ซ',
-
- // Profile - Notification Settings (้็ฅ่จญๅฎ)
- 'profile.notifications.title': '้็ฅ่จญๅฎ',
- 'profile.notifications.hint': '้
็ฝฎๆจ็้ ่จญ้็ฅๆนๅผ๏ผๅจๅปบ็ซ่ณ็ข็ฃๆงๅ้ ่ญฆๆๅฐ่ชๅไฝฟ็จ้ไบ่จญๅฎ',
- 'profile.notifications.defaultChannels': '้ ่จญ้็ฅ็ฎก้',
- 'profile.notifications.browser': '็ซๅ
ง้็ฅ',
- 'profile.notifications.email': '้ตไปถ',
- 'profile.notifications.phone': '็ฐก่จ',
- 'profile.notifications.telegramBotToken': 'Telegram Bot Token',
- 'profile.notifications.telegramBotTokenPlaceholder': '่ซ่ผธๅ
ฅๆจ็ Telegram Bot Token',
- 'profile.notifications.telegramBotTokenHint': '้้ @BotFather ๅปบ็ซๆฉๅจไบบๅๅพ Token',
- 'profile.notifications.telegramChatId': 'Telegram Chat ID',
- 'profile.notifications.telegramPlaceholder': '่ซ่ผธๅ
ฅๆจ็ Telegram Chat ID๏ผๅฆ 123456789๏ผ',
- 'profile.notifications.telegramHint': '็ผ้ /start ็ตฆ @userinfobot ๅฏๅๅพๆจ็ Chat ID',
- 'profile.notifications.notifyEmail': '้็ฅไฟก็ฎฑ',
- 'profile.notifications.emailPlaceholder': 'ๆฅๆถ้็ฅ็ไฟก็ฎฑๅฐๅ',
- 'profile.notifications.emailHint': '้ ่จญไฝฟ็จๅธณๆถไฟก็ฎฑ๏ผๅฏ่จญๅฎๅ
ถไปไฟก็ฎฑๆฅๆถ้็ฅ',
- 'profile.notifications.phonePlaceholder': '่ซ่ผธๅ
ฅๆๆฉ่๏ผๅฆ +886912345678๏ผ',
- 'profile.notifications.phoneHint': '้่ฆ็ฎก็ๅก้
็ฝฎ Twilio ๆๅๅพๆ่ฝไฝฟ็จ็ฐก่จ้็ฅ',
- 'profile.notifications.discordWebhook': 'Discord Webhook',
- 'profile.notifications.discordPlaceholder': 'https://discord.com/api/webhooks/...',
- 'profile.notifications.discordHint': 'ๅจ Discord ไผบๆๅจ่จญๅฎไธญๅปบ็ซ Webhook',
- 'profile.notifications.webhookUrl': 'Webhook URL',
- 'profile.notifications.webhookPlaceholder': 'https://your-server.com/webhook',
- 'profile.notifications.webhookHint': '่ช่จ Webhook ๅฐๅ๏ผๅฐไปฅ POST JSON ๆนๅผๆจ้้็ฅ',
- 'profile.notifications.webhookToken': 'Webhook Token๏ผๅฏ้ธ๏ผ',
- 'profile.notifications.webhookTokenPlaceholder': '็จๆผ้ฉ่ญ่ซๆฑ็ Bearer Token',
- 'profile.notifications.webhookTokenHint': 'ๅฐไฝ็บ Authorization: Bearer Token ๅณ้ๅฐ Webhook',
- 'profile.notifications.testBtn': '็ผ้ๆธฌ่ฉฆ้็ฅ',
- 'profile.notifications.saveSuccess': '้็ฅ่จญๅฎๅฒๅญๆๅ',
- 'profile.notifications.selectChannel': '่ซ่ณๅฐ้ธๆไธๅ้็ฅ็ฎก้',
- 'profile.notifications.fillTelegramToken': '่ซๅกซๅฏซ Telegram Bot Token',
- 'profile.notifications.fillTelegram': '่ซๅกซๅฏซ Telegram Chat ID',
- 'profile.notifications.fillEmail': '่ซๅกซๅฏซ้็ฅไฟก็ฎฑ',
- 'profile.notifications.testSent': 'ๆธฌ่ฉฆ้็ฅๅทฒ็ผ้๏ผ่ซๆชขๆฅๆจ็้็ฅ็ฎก้',
-
- // Settings - Billing
- 'settings.group.billing': '่จ่ฒป้
็ฝฎ',
- 'settings.field.BILLING_ENABLED': 'ๅ็จ่จ่ฒป',
- 'settings.field.BILLING_VIP_BYPASS': 'VIPๅ
่ฒป',
- 'settings.field.BILLING_COST_AI_ANALYSIS': 'AIๅๆๆถ่',
- 'settings.field.BILLING_COST_STRATEGY_RUN': '็ญ็ฅ้่กๆถ่',
- 'settings.field.BILLING_COST_BACKTEST': 'ๅๆธฌๆถ่',
- 'settings.field.BILLING_COST_PORTFOLIO_MONITOR': 'Portfolio็ฃๆงๆถ่',
- 'settings.field.CREDITS_REGISTER_BONUS': '่จปๅ็ๅต',
- 'settings.field.CREDITS_REFERRAL_BONUS': '้่ซ็ๅต',
- 'settings.field.RECHARGE_TELEGRAM_URL': 'ๅ
ๅผTelegram้ๆฅ',
- 'settings.desc.BILLING_ENABLED': 'ๅ็จ่จ่ฒป็ณป็ตฑใๅ็จๅพ๏ผ็จๆถไฝฟ็จๆไบๅ่ฝ้่ฆๆถ่็ฉๅ',
- 'settings.desc.BILLING_VIP_BYPASS': 'VIP็จๆถๅจๆๆๆๅ
งๅฏๅ
่ฒปไฝฟ็จๆๆไป่ฒปๅ่ฝ',
- 'settings.desc.BILLING_COST_AI_ANALYSIS': 'ๆฏๆฌกAIๅๆๆถ่็็ฉๅๆธ',
- 'settings.desc.BILLING_COST_STRATEGY_RUN': 'ๅๅ็ญ็ฅๆๆถ่็็ฉๅๆธ',
- 'settings.desc.BILLING_COST_BACKTEST': 'ๆฏๆฌกๅๆธฌๆถ่็็ฉๅๆธ',
- 'settings.desc.BILLING_COST_PORTFOLIO_MONITOR': 'ๆฏๆฌกPortfolio AI็ฃๆงๆถ่็็ฉๅๆธ',
- 'settings.desc.CREDITS_REGISTER_BONUS': 'ๆฐ็จๆถ่จปๅๆ็ฒๅพ็็ฉๅ็ๅต',
- 'settings.desc.CREDITS_REFERRAL_BONUS': '็จๆถ้้้่ซ้ๆฅๆๅ้่ซๆฐ็จๆถๆ๏ผ้่ซไบบ็ฒๅพ็็ฉๅ็ๅต',
- 'settings.desc.VERIFICATION_CODE_MAX_ATTEMPTS': '้ฉ่ญ็ขผ้ฉ่ญๅคฑๆ็ๆๅคงๅ่ฉฆๆฌกๆธ๏ผ่ถ
้ๅพๅฐ้ๅฎ',
- 'settings.desc.VERIFICATION_CODE_LOCK_MINUTES': '้ฉ่ญ็ขผ้ฉ่ญๅคฑๆๆฌกๆธ่ถ
้้ๅถๅพ็้ๅฎๆ้ท๏ผๅ้๏ผ',
- 'settings.desc.RECHARGE_TELEGRAM_URL': '็จๆถ้ปๆๅ
ๅผๆ่ทณ่ฝ็Telegramๅฎขๆ้ๆฅ'
- }
-
-export default {
- ...components,
- ...locale
-}
diff --git a/quantdinger_vue/src/main.js b/quantdinger_vue/src/main.js
deleted file mode 100644
index 608dc04..0000000
--- a/quantdinger_vue/src/main.js
+++ /dev/null
@@ -1,56 +0,0 @@
-// with polyfills
-import 'core-js/stable'
-import 'regenerator-runtime/runtime'
-
-import Vue from 'vue'
-import App from './App.vue'
-import router from './router'
-import store from './store/'
-import i18n from './locales'
-import { VueAxios } from './utils/request'
-import ProLayout, { PageHeaderWrapper } from '@ant-design-vue/pro-layout'
-import themePluginConfig from '../config/themePluginConfig'
-
-// mock
-// WARNING: `mockjs` NOT SUPPORT `IE` PLEASE DO NOT USE IN `production` ENV.
-import './mock'
-
-import bootstrap from './core/bootstrap'
-import './core/lazy_use' // use lazy load components
-import './permission' // permission control
-import './utils/filter' // global filter
-import './global.less' // global style
-
-Vue.config.productionTip = false
-
-// Suppress noisy ResizeObserver loop errors (harmless in most cases on responsive layouts)
-if (typeof window !== 'undefined') {
- const ignoreResizeObserverError = (e) => {
- const msg = (e && (e.reason && e.reason.message || e.message)) || ''
- if (msg.includes('ResizeObserver loop') || msg.includes('ResizeObserver loop limit exceeded')) {
- e.preventDefault && e.preventDefault()
- e.stopImmediatePropagation && e.stopImmediatePropagation()
- return false
- }
- }
- window.addEventListener('error', ignoreResizeObserverError)
- window.addEventListener('unhandledrejection', ignoreResizeObserverError)
-}
-
-// mount axios to `Vue.$http` and `this.$http`
-Vue.use(VueAxios)
-// use pro-layout components
-Vue.component('pro-layout', ProLayout)
-Vue.component('page-container', PageHeaderWrapper)
-Vue.component('page-header-wrapper', PageHeaderWrapper)
-
-window.umi_plugin_ant_themeVar = themePluginConfig.theme
-
-new Vue({
- router,
- store,
- i18n,
- // init localstorage, vuex, Logo message
- created: bootstrap,
- render: h => h(App)
-}).$mount('#app')
diff --git a/quantdinger_vue/src/mock/index.js b/quantdinger_vue/src/mock/index.js
deleted file mode 100644
index 70cfb24..0000000
--- a/quantdinger_vue/src/mock/index.js
+++ /dev/null
@@ -1,24 +0,0 @@
-import { isIE } from '@/utils/util'
-
-// ๆฌๅฐๅผๅๅทฒๆๅฎๆดๅ็ซฏ API๏ผ็ฆ็จ mock ไปฅ้ฟๅ
่ฏทๆฑ่ขซๆฆๆช
-// ๅฆ้ๅฏ็จ mock๏ผๅฐไธ้ข็ false ๆนไธบ true
-const ENABLE_MOCK = false
-
-// ๅคๆญ็ฏๅขไธๆฏ prod ๆ่
preview ๆฏ true ๆถ๏ผๅ ่ฝฝ mock ๆๅก
-if (ENABLE_MOCK && (process.env.NODE_ENV !== 'production' || process.env.VUE_APP_PREVIEW === 'true')) {
- if (isIE()) {
- }
- // ไฝฟ็จๅๆญฅๅ ่ฝฝไพ่ต
- // ้ฒๆญข vuex ไธญ็ GetInfo ๆฉไบ mock ่ฟ่ก๏ผๅฏผ่ดๆ ๆณ mock ่ฏทๆฑ่ฟๅ็ปๆ
- const Mock = require('mockjs2')
- require('./services/auth')
- require('./services/user')
- require('./services/manage')
- require('./services/other')
- require('./services/tagCloud')
- require('./services/article')
-
- Mock.setup({
- timeout: 800 // setter delay time
- })
-}
diff --git a/quantdinger_vue/src/mock/services/article.js b/quantdinger_vue/src/mock/services/article.js
deleted file mode 100644
index 88e1fa1..0000000
--- a/quantdinger_vue/src/mock/services/article.js
+++ /dev/null
@@ -1,88 +0,0 @@
-import Mock from 'mockjs2'
-import { builder, getQueryParameters } from '../util'
-
-const titles = [
- 'Alipay',
- 'Angular',
- 'Ant Design',
- 'Ant Design Pro',
- 'Bootstrap',
- 'React',
- 'Vue',
- 'Webpack'
-]
-
-const avatar = ['https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png',
- 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png',
- 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png',
- 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png',
- 'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png'
-]
-
-const covers = [
- 'https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png',
- 'https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png',
- 'https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png',
- 'https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png'
-]
-
-const owner = [
- 'ไปๅฐๅฐ',
- 'ๅดๅ ๅฅฝ',
- 'ๅจๆๆ',
- 'ๆไธไธ',
- 'ๆฒไธฝไธฝ'
-]
-
-const content = 'ๆฎต่ฝ็คบๆ๏ผ่่้ๆ่ฎพ่ฎกๅนณๅฐ ant.design๏ผ็จๆๅฐ็ๅทฅไฝ้๏ผๆ ็ผๆฅๅ
ฅ่่้ๆ็ๆ๏ผๆไพ่ทจ่ถ่ฎพ่ฎกไธๅผๅ็ไฝ้ช่งฃๅณๆนๆกใ่่้ๆ่ฎพ่ฎกๅนณๅฐ ant.design๏ผ็จๆๅฐ็ๅทฅไฝ้๏ผๆ ็ผๆฅๅ
ฅ่่้ๆ็ๆ๏ผๆไพ่ทจ่ถ่ฎพ่ฎกไธๅผๅ็ไฝ้ช่งฃๅณๆนๆกใ'
-const description = 'ๅจไธญๅฐไบงๅ็็ ๅ่ฟ็จไธญ๏ผไผๅบ็ฐไธๅ็่ฎพ่ฎก่ง่ๅๅฎ็ฐๆนๅผ๏ผไฝๅ
ถไธญๅพๅพๅญๅจๅพๅค็ฑปไผผ็้กต้ขๅ็ปไปถ๏ผ่ฟไบ็ฑปไผผ็็ปไปถไผ่ขซๆฝ็ฆปๆไธๅฅๆ ๅ่ง่ใ'
-const href = 'https://ant.design'
-
-const article = (options) => {
- const queryParameters = getQueryParameters(options)
- if (queryParameters && !queryParameters.count) {
- queryParameters.count = 5
- }
- const data = []
- for (let i = 0; i < queryParameters.count; i++) {
- const tmpKey = i + 1
- const num = parseInt(Math.random() * (4 + 1), 10)
- data.push({
- id: tmpKey,
- avatar: avatar[num],
- owner: owner[num],
- content: content,
- star: Mock.mock('@integer(1, 999)'),
- percent: Mock.mock('@integer(1, 999)'),
- like: Mock.mock('@integer(1, 999)'),
- message: Mock.mock('@integer(1, 999)'),
- description: description,
- href: href,
- title: titles[ i % 8 ],
- updatedAt: Mock.mock('@datetime'),
- members: [
- {
- avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png',
- name: 'ๆฒไธฝไธฝ',
- id: 'member1'
- },
- {
- avatar: 'https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png',
- name: '็ๆญๅ',
- id: 'member2'
- },
- {
- avatar: 'https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png',
- name: '่ฃๅจๅจ',
- id: 'member3'
- }
- ],
- activeUser: Math.ceil(Math.random() * 100000) + 100000,
- newUser: Math.ceil(Math.random() * 1000) + 1000,
- cover: parseInt(i / 4, 10) % 2 === 0 ? covers[i % 4] : covers[3 - (i % 4)]
- })
- }
- return builder(data)
-}
-
-Mock.mock(/\/list\/article/, 'get', article)
diff --git a/quantdinger_vue/src/mock/services/auth.js b/quantdinger_vue/src/mock/services/auth.js
deleted file mode 100644
index 79fc155..0000000
--- a/quantdinger_vue/src/mock/services/auth.js
+++ /dev/null
@@ -1,49 +0,0 @@
-import Mock from 'mockjs2'
-import { builder, getBody } from '../util'
-
-const username = ['admin', 'super']
-// ๅผบ็กฌ่ฆๆฑ ant.design ็ธๅๅฏ็
-// '21232f297a57a5a743894a0e4a801fc3',
-const password = ['8914de686ab28dc22f30d3d8e107ff6c', '21232f297a57a5a743894a0e4a801fc3'] // admin, ant.design
-
-const login = (options) => {
- const body = getBody(options)
- if (!username.includes(body.username) || !password.includes(body.password)) {
- return builder({ isLogin: true }, '่ดฆๆทๆๅฏ็ ้่ฏฏ', 401)
- }
-
- return builder({
- 'id': Mock.mock('@guid'),
- 'name': Mock.mock('@name'),
- 'username': 'admin',
- 'password': '',
- 'avatar': 'https://gw.alipayobjects.com/zos/rmsportal/jZUIxmJycoymBprLOUbT.png',
- 'status': 1,
- 'telephone': '',
- 'lastLoginIp': '27.154.74.117',
- 'lastLoginTime': 1534837621348,
- 'creatorId': 'admin',
- 'createTime': 1497160610259,
- 'deleted': 0,
- 'roleId': 'admin',
- 'lang': 'zh-CN',
- 'token': '4291d7da9005377ec9aec4a71ea837f'
- }, '', 200, { 'Custom-Header': Mock.mock('@guid') })
-}
-
-const logout = () => {
- return builder({}, '[ๆต่ฏๆฅๅฃ] ๆณจ้ๆๅ')
-}
-
-const smsCaptcha = () => {
- return builder({ captcha: Mock.mock('@integer(10000, 99999)') })
-}
-
-const twofactor = () => {
- return builder({ stepCode: Mock.mock('@integer(0, 1)') })
-}
-
-Mock.mock(/\/auth\/login/, 'post', login)
-Mock.mock(/\/auth\/logout/, 'post', logout)
-Mock.mock(/\/account\/sms/, 'post', smsCaptcha)
-Mock.mock(/\/auth\/2step-code/, 'post', twofactor)
diff --git a/quantdinger_vue/src/mock/services/manage.js b/quantdinger_vue/src/mock/services/manage.js
deleted file mode 100644
index 10181ec..0000000
--- a/quantdinger_vue/src/mock/services/manage.js
+++ /dev/null
@@ -1,252 +0,0 @@
-import Mock from 'mockjs2'
-import { builder, getQueryParameters } from '../util'
-
-const totalCount = 5701
-
-const serverList = (options) => {
- const parameters = getQueryParameters(options)
-
- const result = []
- const pageNo = parseInt(parameters.pageNo)
- const pageSize = parseInt(parameters.pageSize)
- const totalPage = Math.ceil(totalCount / pageSize)
- const key = (pageNo - 1) * pageSize
- const next = (pageNo >= totalPage ? (totalCount % pageSize) : pageSize) + 1
-
- for (let i = 1; i < next; i++) {
- const tmpKey = key + i
- result.push({
- key: tmpKey,
- id: tmpKey,
- no: 'No ' + tmpKey,
- description: '่ฟๆฏไธๆฎตๆ่ฟฐ',
- callNo: Mock.mock('@integer(1, 999)'),
- status: Mock.mock('@integer(0, 3)'),
- updatedAt: Mock.mock('@datetime'),
- editable: false
- })
- }
-
- return builder({
- pageSize: pageSize,
- pageNo: pageNo,
- totalCount: totalCount,
- totalPage: totalPage,
- data: result
- })
-}
-
-const projects = () => {
- return builder({
- 'data': [{
- id: 1,
- cover: 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png',
- title: 'Alipay',
- description: '้ฃๆฏไธ็งๅ
ๅจ็ไธ่ฅฟ๏ผ ไปไปฌๅฐ่พพไธไบ๏ผไนๆ ๆณ่งฆๅ็',
- status: 1,
- updatedAt: '2018-07-26 00:00:00'
- },
- {
- id: 2,
- cover: 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png',
- title: 'Angular',
- description: 'ๅธๆๆฏไธไธชๅฅฝไธ่ฅฟ๏ผไน่ฎธๆฏๆๅฅฝ็๏ผๅฅฝไธ่ฅฟๆฏไธไผๆถไบก็',
- status: 1,
- updatedAt: '2018-07-26 00:00:00'
- },
- {
- id: 3,
- cover: 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png',
- title: 'Ant Design',
- description: 'ๅ้ไธญๆ้ฃไนๅค็้
้ฆ๏ผๅฅนๅดๅๅ่ตฐ่ฟไบๆ็้
้ฆ',
- status: 1,
- updatedAt: '2018-07-26 00:00:00'
- },
- {
- id: 4,
- cover: 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png',
- title: 'Ant Design Pro',
- description: '้ฃๆถๅๆๅชไผๆณ่ชๅทฑๆณ่ฆไปไน๏ผไปไธๆณ่ชๅทฑๆฅๆไปไน',
- status: 1,
- updatedAt: '2018-07-26 00:00:00'
- },
- {
- id: 5,
- cover: 'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png',
- title: 'Bootstrap',
- description: 'ๅๅฌๅฐ่ณ',
- status: 1,
- updatedAt: '2018-07-26 00:00:00'
- },
- {
- id: 6,
- cover: 'https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png',
- title: 'Vue',
- description: '็ๅฝๅฐฑๅไธ็ๅทงๅ
ๅ๏ผ็ปๆๅพๅพๅบไบบๆๆ',
- status: 1,
- updatedAt: '2018-07-26 00:00:00'
- }
- ],
- 'pageSize': 10,
- 'pageNo': 0,
- 'totalPage': 6,
- 'totalCount': 57
- })
-}
-
-const activity = () => {
- return builder([{
- id: 1,
- user: {
- nickname: '@name',
- avatar: 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png'
- },
- project: {
- name: '็ฝ้นญ้
ฑๆฒนๅผๅ็ป',
- action: 'ๆดๆฐ',
- event: '็ช็ป่ฎกๅ'
- },
- time: '2018-08-23 14:47:00'
- },
- {
- id: 1,
- user: {
- nickname: '่่้
ฑ',
- avatar: 'https://gw.alipayobjects.com/zos/rmsportal/jZUIxmJycoymBprLOUbT.png'
- },
- project: {
- name: '็ฝ้นญ้
ฑๆฒนๅผๅ็ป',
- action: 'ๆดๆฐ',
- event: '็ช็ป่ฎกๅ'
- },
- time: '2018-08-23 09:35:37'
- },
- {
- id: 1,
- user: {
- nickname: '@name',
- avatar: '@image(64x64)'
- },
- project: {
- name: '็ฝ้นญ้
ฑๆฒนๅผๅ็ป',
- action: 'ๅๅปบ',
- event: '็ช็ป่ฎกๅ'
- },
- time: '2017-05-27 00:00:00'
- },
- {
- id: 1,
- user: {
- nickname: 'ๆฒไธฝไธฝ',
- avatar: '@image(64x64)'
- },
- project: {
- name: '้ซ้ผๆ ผ่ฎพ่ฎกๅคฉๅข',
- action: 'ๆดๆฐ',
- event: 'ๅ
ญๆ่ฟญไปฃ'
- },
- time: '2018-08-23 14:47:00'
- },
- {
- id: 1,
- user: {
- nickname: '@name',
- avatar: '@image(64x64)'
- },
- project: {
- name: '้ซ้ผๆ ผ่ฎพ่ฎกๅคฉๅข',
- action: 'created',
- event: 'ๅ
ญๆ่ฟญไปฃ'
- },
- time: '2018-08-23 14:47:00'
- },
- {
- id: 1,
- user: {
- nickname: 'ๆฒไธฝไธฝ',
- avatar: 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png'
- },
- project: {
- name: '้ซ้ผๆ ผ่ฎพ่ฎกๅคฉๅข',
- action: 'created',
- event: 'ๅ
ญๆ่ฟญไปฃ'
- },
- time: '2018-08-23 14:47:00'
- }
- ])
-}
-
-const teams = () => {
- return builder([{
- id: 1,
- name: '็งๅญฆๆฌ็ ็ป',
- avatar: 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png'
- },
- {
- id: 2,
- name: '็จๅบๅๆฅๅธธ',
- avatar: 'https://gw.alipayobjects.com/zos/rmsportal/cnrhVkzwxjPwAaCfPbdc.png'
- },
- {
- id: 1,
- name: '่ฎพ่ฎกๅคฉๅข',
- avatar: 'https://gw.alipayobjects.com/zos/rmsportal/gaOngJwsRYRaVAuXXcmB.png'
- },
- {
- id: 1,
- name: 'ไธญไบๅฐๅฅณๅข',
- avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ubnKSIfAJTxIgXOKlciN.png'
- },
- {
- id: 1,
- name: '้ชไฝ ๅญฆ่ฎก็ฎๆบ',
- avatar: 'https://gw.alipayobjects.com/zos/rmsportal/WhxKECPNujWoWEFNdnJE.png'
- }
- ])
-}
-
-const radar = () => {
- return builder([{
- item: 'ๅผ็จ',
- 'ไธชไบบ': 70,
- 'ๅข้': 30,
- '้จ้จ': 40
- },
- {
- item: 'ๅฃ็ข',
- 'ไธชไบบ': 60,
- 'ๅข้': 70,
- '้จ้จ': 40
- },
- {
- item: 'ไบง้',
- 'ไธชไบบ': 50,
- 'ๅข้': 60,
- '้จ้จ': 40
- },
- {
- item: '่ดก็ฎ',
- 'ไธชไบบ': 40,
- 'ๅข้': 50,
- '้จ้จ': 40
- },
- {
- item: '็ญๅบฆ',
- 'ไธชไบบ': 60,
- 'ๅข้': 70,
- '้จ้จ': 40
- },
- {
- item: 'ๅผ็จ',
- 'ไธชไบบ': 70,
- 'ๅข้': 50,
- '้จ้จ': 40
- }
- ])
-}
-
-Mock.mock(/\/service/, 'get', serverList)
-Mock.mock(/\/list\/search\/projects/, 'get', projects)
-Mock.mock(/\/workplace\/activity/, 'get', activity)
-Mock.mock(/\/workplace\/teams/, 'get', teams)
-Mock.mock(/\/workplace\/radar/, 'get', radar)
diff --git a/quantdinger_vue/src/mock/services/other.js b/quantdinger_vue/src/mock/services/other.js
deleted file mode 100644
index 56e2dd9..0000000
--- a/quantdinger_vue/src/mock/services/other.js
+++ /dev/null
@@ -1,973 +0,0 @@
-import Mock from 'mockjs2'
-import { builder } from '../util'
-
-const orgTree = () => {
- return builder([{
- 'key': 'key-01',
- 'title': '็ ๅไธญๅฟ',
- 'icon': 'mail',
- 'children': [{
- 'key': 'key-01-01',
- 'title': 'ๅ็ซฏ็ป',
- 'icon': null,
- 'group': true,
- children: [{
- 'key': 'key-01-01-01',
- 'title': 'JAVA',
- 'icon': null
- },
- {
- 'key': 'key-01-01-02',
- 'title': 'PHP',
- 'icon': null
- },
- {
- 'key': 'key-01-01-03',
- 'title': 'Golang',
- 'icon': null
- }
- ]
- }, {
- 'key': 'key-01-02',
- 'title': 'ๅ็ซฏ็ป',
- 'icon': null,
- 'group': true,
- children: [{
- 'key': 'key-01-02-01',
- 'title': 'React',
- 'icon': null
- },
- {
- 'key': 'key-01-02-02',
- 'title': 'Vue',
- 'icon': null
- },
- {
- 'key': 'key-01-02-03',
- 'title': 'Angular',
- 'icon': null
- }
- ]
- }]
- }, {
- 'key': 'key-02',
- 'title': '่ดขๅก้จ',
- 'icon': 'dollar',
- 'children': [{
- 'key': 'key-02-01',
- 'title': 'ไผ่ฎกๆ ธ็ฎ',
- 'icon': null
- }, {
- 'key': 'key-02-02',
- 'title': 'ๆๆฌๆงๅถ',
- 'icon': null
- }, {
- 'key': 'key-02-03',
- 'title': 'ๅ
้จๆงๅถ',
- 'icon': null,
- 'children': [{
- 'key': 'key-02-03-01',
- 'title': '่ดขๅกๅถๅบฆๅปบ่ฎพ',
- 'icon': null
- },
- {
- 'key': 'key-02-03-02',
- 'title': 'ไผ่ฎกๆ ธ็ฎ',
- 'icon': null
- }
- ]
- }]
- }])
-}
-
-const role = () => {
- return builder({
- 'data': [{
- 'id': 'admin',
- 'name': '็ฎก็ๅ',
- 'describe': 'ๆฅๆๆๆๆ้',
- 'status': 1,
- 'creatorId': 'system',
- 'createTime': 1497160610259,
- 'deleted': 0,
- 'permissions': [{
- 'roleId': 'admin',
- 'permissionId': 'comment',
- 'permissionName': '่ฏ่ฎบ็ฎก็',
- 'actions': '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"query","defaultCheck":false,"describe":"ๆฅ่ฏข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"edit","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"}]',
- 'actionEntitySet': [{
- 'action': 'add',
- 'describe': 'ๆฐๅข',
- 'defaultCheck': false
- },
- {
- 'action': 'query',
- 'describe': 'ๆฅ่ฏข',
- 'defaultCheck': false
- },
- {
- 'action': 'get',
- 'describe': '่ฏฆๆ
',
- 'defaultCheck': false
- },
- {
- 'action': 'edit',
- 'describe': 'ไฟฎๆน',
- 'defaultCheck': false
- },
- {
- 'action': 'delete',
- 'describe': 'ๅ ้ค',
- 'defaultCheck': false
- }],
- 'actionList': ['delete', 'edit'],
- 'dataAccess': null
- },
- {
- 'roleId': 'admin',
- 'permissionId': 'member',
- 'permissionName': 'ไผๅ็ฎก็',
- 'actions': '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"query","defaultCheck":false,"describe":"ๆฅ่ฏข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"edit","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"}]',
- 'actionEntitySet': [{
- 'action': 'add',
- 'describe': 'ๆฐๅข',
- 'defaultCheck': false
- },
- {
- 'action': 'query',
- 'describe': 'ๆฅ่ฏข',
- 'defaultCheck': false
- },
- {
- 'action': 'get',
- 'describe': '่ฏฆๆ
',
- 'defaultCheck': false
- },
- {
- 'action': 'edit',
- 'describe': 'ไฟฎๆน',
- 'defaultCheck': false
- },
- {
- 'action': 'delete',
- 'describe': 'ๅ ้ค',
- 'defaultCheck': false
- }
- ],
- 'actionList': ['query', 'get', 'edit', 'delete'],
- 'dataAccess': null
- },
- {
- 'roleId': 'admin',
- 'permissionId': 'menu',
- 'permissionName': '่ๅ็ฎก็',
- 'actions': '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"import","defaultCheck":false,"describe":"ๅฏผๅ
ฅ"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"edit","defaultCheck":false,"describe":"ไฟฎๆน"}]',
- 'actionEntitySet': [{
- 'action': 'add',
- 'describe': 'ๆฐๅข',
- 'defaultCheck': false
- },
- {
- 'action': 'import',
- 'describe': 'ๅฏผๅ
ฅ',
- 'defaultCheck': false
- },
- {
- 'action': 'get',
- 'describe': '่ฏฆๆ
',
- 'defaultCheck': false
- },
- {
- 'action': 'edit',
- 'describe': 'ไฟฎๆน',
- 'defaultCheck': false
- }
- ],
- 'actionList': ['add', 'import'],
- 'dataAccess': null
- },
- {
- 'roleId': 'admin',
- 'permissionId': 'order',
- 'permissionName': '่ฎขๅ็ฎก็',
- 'actions': '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"query","defaultCheck":false,"describe":"ๆฅ่ฏข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"edit","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"}]',
- 'actionEntitySet': [{
- 'action': 'add',
- 'describe': 'ๆฐๅข',
- 'defaultCheck': false
- },
- {
- 'action': 'query',
- 'describe': 'ๆฅ่ฏข',
- 'defaultCheck': false
- },
- {
- 'action': 'get',
- 'describe': '่ฏฆๆ
',
- 'defaultCheck': false
- },
- {
- 'action': 'edit',
- 'describe': 'ไฟฎๆน',
- 'defaultCheck': false
- },
- {
- 'action': 'delete',
- 'describe': 'ๅ ้ค',
- 'defaultCheck': false
- }
- ],
- 'actionList': ['query', 'add', 'get'],
- 'dataAccess': null
- },
- {
- 'roleId': 'admin',
- 'permissionId': 'permission',
- 'permissionName': 'ๆ้็ฎก็',
- 'actions': '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"edit","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"}]',
- 'actionEntitySet': [{
- 'action': 'add',
- 'describe': 'ๆฐๅข',
- 'defaultCheck': false
- },
- {
- 'action': 'get',
- 'describe': '่ฏฆๆ
',
- 'defaultCheck': false
- },
- {
- 'action': 'edit',
- 'describe': 'ไฟฎๆน',
- 'defaultCheck': false
- },
- {
- 'action': 'delete',
- 'describe': 'ๅ ้ค',
- 'defaultCheck': false
- }
- ],
- 'actionList': ['add', 'get', 'edit', 'delete'],
- 'dataAccess': null
- },
- {
- 'roleId': 'admin',
- 'permissionId': 'role',
- 'permissionName': '่ง่ฒ็ฎก็',
- 'actions': '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"edit","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"}]',
- 'actionEntitySet': [{
- 'action': 'add',
- 'describe': 'ๆฐๅข',
- 'defaultCheck': false
- },
- {
- 'action': 'get',
- 'describe': '่ฏฆๆ
',
- 'defaultCheck': false
- },
- {
- 'action': 'edit',
- 'describe': 'ไฟฎๆน',
- 'defaultCheck': false
- },
- {
- 'action': 'delete',
- 'describe': 'ๅ ้ค',
- 'defaultCheck': false
- }
- ],
- 'actionList': null,
- 'dataAccess': null
- },
- {
- 'roleId': 'admin',
- 'permissionId': 'test',
- 'permissionName': 'ๆต่ฏๆ้',
- 'actions': '[]',
- 'actionEntitySet': [],
- 'actionList': null,
- 'dataAccess': null
- },
- {
- 'roleId': 'admin',
- 'permissionId': 'user',
- 'permissionName': '็จๆท็ฎก็',
- 'actions': '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"import","defaultCheck":false,"describe":"ๅฏผๅ
ฅ"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"edit","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"},{"action":"export","defaultCheck":false,"describe":"ๅฏผๅบ"}]',
- 'actionEntitySet': [{
- 'action': 'add',
- 'describe': 'ๆฐๅข',
- 'defaultCheck': false
- },
- {
- 'action': 'import',
- 'describe': 'ๅฏผๅ
ฅ',
- 'defaultCheck': false
- },
- {
- 'action': 'get',
- 'describe': '่ฏฆๆ
',
- 'defaultCheck': false
- },
- {
- 'action': 'edit',
- 'describe': 'ไฟฎๆน',
- 'defaultCheck': false
- },
- {
- 'action': 'delete',
- 'describe': 'ๅ ้ค',
- 'defaultCheck': false
- },
- {
- 'action': 'export',
- 'describe': 'ๅฏผๅบ',
- 'defaultCheck': false
- }
- ],
- 'actionList': ['add', 'get'],
- 'dataAccess': null
- }
- ]
- },
- {
- 'id': 'svip',
- 'name': 'SVIP',
- 'describe': '่ถ
็บงไผๅ',
- 'status': 1,
- 'creatorId': 'system',
- 'createTime': 1532417744846,
- 'deleted': 0,
- 'permissions': [{
- 'roleId': 'admin',
- 'permissionId': 'comment',
- 'permissionName': '่ฏ่ฎบ็ฎก็',
- 'actions': '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"query","defaultCheck":false,"describe":"ๆฅ่ฏข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"edit","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"}]',
- 'actionEntitySet': [{
- 'action': 'add',
- 'describe': 'ๆฐๅข',
- 'defaultCheck': false
- },
- {
- 'action': 'query',
- 'describe': 'ๆฅ่ฏข',
- 'defaultCheck': false
- },
- {
- 'action': 'get',
- 'describe': '่ฏฆๆ
',
- 'defaultCheck': false
- },
- {
- 'action': 'edit',
- 'describe': 'ไฟฎๆน',
- 'defaultCheck': false
- },
- {
- 'action': 'delete',
- 'describe': 'ๅ ้ค',
- 'defaultCheck': false
- }
- ],
- 'actionList': ['add', 'get', 'delete'],
- 'dataAccess': null
- },
- {
- 'roleId': 'admin',
- 'permissionId': 'member',
- 'permissionName': 'ไผๅ็ฎก็',
- 'actions': '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"query","defaultCheck":false,"describe":"ๆฅ่ฏข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"edit","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"}]',
- 'actionEntitySet': [{
- 'action': 'add',
- 'describe': 'ๆฐๅข',
- 'defaultCheck': false
- },
- {
- 'action': 'query',
- 'describe': 'ๆฅ่ฏข',
- 'defaultCheck': false
- },
- {
- 'action': 'get',
- 'describe': '่ฏฆๆ
',
- 'defaultCheck': false
- }
- ],
- 'actionList': ['add', 'query', 'get'],
- 'dataAccess': null
- },
- {
- 'roleId': 'admin',
- 'permissionId': 'menu',
- 'permissionName': '่ๅ็ฎก็',
- 'actions': '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"import","defaultCheck":false,"describe":"ๅฏผๅ
ฅ"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"edit","defaultCheck":false,"describe":"ไฟฎๆน"}]',
- 'actionEntitySet': [{
- 'action': 'add',
- 'describe': 'ๆฐๅข',
- 'defaultCheck': false
- },
- {
- 'action': 'import',
- 'describe': 'ๅฏผๅ
ฅ',
- 'defaultCheck': false
- },
- {
- 'action': 'get',
- 'describe': '่ฏฆๆ
',
- 'defaultCheck': false
- }
- ],
- 'actionList': ['add', 'get'],
- 'dataAccess': null
- },
- {
- 'roleId': 'admin',
- 'permissionId': 'order',
- 'permissionName': '่ฎขๅ็ฎก็',
- 'actions': '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"query","defaultCheck":false,"describe":"ๆฅ่ฏข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"edit","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"}]',
- 'actionEntitySet': [{
- 'action': 'add',
- 'describe': 'ๆฐๅข',
- 'defaultCheck': false
- },
- {
- 'action': 'query',
- 'describe': 'ๆฅ่ฏข',
- 'defaultCheck': false
- },
- {
- 'action': 'get',
- 'describe': '่ฏฆๆ
',
- 'defaultCheck': false
- },
- {
- 'action': 'edit',
- 'describe': 'ไฟฎๆน',
- 'defaultCheck': false
- }
- ],
- 'actionList': ['add', 'query'],
- 'dataAccess': null
- },
- {
- 'roleId': 'admin',
- 'permissionId': 'permission',
- 'permissionName': 'ๆ้็ฎก็',
- 'actions': '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"edit","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"}]',
- 'actionEntitySet': [{
- 'action': 'add',
- 'describe': 'ๆฐๅข',
- 'defaultCheck': false
- },
- {
- 'action': 'get',
- 'describe': '่ฏฆๆ
',
- 'defaultCheck': false
- },
- {
- 'action': 'edit',
- 'describe': 'ไฟฎๆน',
- 'defaultCheck': false
- }
- ],
- 'actionList': ['add', 'get', 'edit'],
- 'dataAccess': null
- },
- {
- 'roleId': 'admin',
- 'permissionId': 'role',
- 'permissionName': '่ง่ฒ็ฎก็',
- 'actions': '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"edit","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"}]',
- 'actionEntitySet': [{
- 'action': 'add',
- 'describe': 'ๆฐๅข',
- 'defaultCheck': false
- },
- {
- 'action': 'edit',
- 'describe': 'ไฟฎๆน',
- 'defaultCheck': false
- },
- {
- 'action': 'delete',
- 'describe': 'ๅ ้ค',
- 'defaultCheck': false
- }
- ],
- 'actionList': null,
- 'dataAccess': null
- },
- {
- 'roleId': 'admin',
- 'permissionId': 'test',
- 'permissionName': 'ๆต่ฏๆ้',
- 'actions': '[]',
- 'actionEntitySet': [],
- 'actionList': ['add', 'edit'],
- 'dataAccess': null
- },
- {
- 'roleId': 'admin',
- 'permissionId': 'user',
- 'permissionName': '็จๆท็ฎก็',
- 'actions': '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"import","defaultCheck":false,"describe":"ๅฏผๅ
ฅ"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"edit","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"},{"action":"export","defaultCheck":false,"describe":"ๅฏผๅบ"}]',
- 'actionEntitySet': [{
- 'action': 'add',
- 'describe': 'ๆฐๅข',
- 'defaultCheck': false
- },
- {
- 'action': 'import',
- 'describe': 'ๅฏผๅ
ฅ',
- 'defaultCheck': false
- },
- {
- 'action': 'get',
- 'describe': '่ฏฆๆ
',
- 'defaultCheck': false
- },
- {
- 'action': 'edit',
- 'describe': 'ไฟฎๆน',
- 'defaultCheck': false
- }
- ],
- 'actionList': ['add'],
- 'dataAccess': null
- }
- ]
- },
- {
- 'id': 'user',
- 'name': 'ๆฎ้ไผๅ',
- 'describe': 'ๆฎ้็จๆท๏ผๅช่ฝๆฅ่ฏข',
- 'status': 1,
- 'creatorId': 'system',
- 'createTime': 1497160610259,
- 'deleted': 0,
- 'permissions': [{
- 'roleId': 'user',
- 'permissionId': 'comment',
- 'permissionName': '่ฏ่ฎบ็ฎก็',
- 'actions': '[{"action":"query","defaultCheck":false,"describe":"ๆฅ่ฏข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"}]',
- 'actionEntitySet': [{
- 'action': 'query',
- 'describe': 'ๆฅ่ฏข',
- 'defaultCheck': false
- },
- {
- 'action': 'get',
- 'describe': '่ฏฆๆ
',
- 'defaultCheck': false
- }
- ],
- 'actionList': ['query'],
- 'dataAccess': null
- },
-
- {
- 'roleId': 'user',
- 'permissionId': 'marketing',
- 'permissionName': '่ฅ้็ฎก็',
- 'actions': '[]',
- 'actionEntitySet': [],
- 'actionList': null,
- 'dataAccess': null
- },
- {
- 'roleId': 'user',
- 'permissionId': 'member',
- 'permissionName': 'ไผๅ็ฎก็',
- 'actions': '[{"action":"query","defaultCheck":false,"describe":"ๆฅ่ฏข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"}]',
- 'actionEntitySet': [{
- 'action': 'query',
- 'describe': 'ๆฅ่ฏข',
- 'defaultCheck': false
- },
- {
- 'action': 'get',
- 'describe': '่ฏฆๆ
',
- 'defaultCheck': false
- }
- ],
- 'actionList': null,
- 'dataAccess': null
- },
- {
- 'roleId': 'user',
- 'permissionId': 'menu',
- 'permissionName': '่ๅ็ฎก็',
- 'actions': '[]',
- 'actionEntitySet': [],
- 'actionList': null,
- 'dataAccess': null
- },
-
- {
- 'roleId': 'user',
- 'permissionId': 'order',
- 'permissionName': '่ฎขๅ็ฎก็',
- 'actions': '[{"action":"query","defaultCheck":false,"describe":"ๆฅ่ฏข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"}]',
- 'actionEntitySet': [{
- 'action': 'query',
- 'describe': 'ๆฅ่ฏข',
- 'defaultCheck': false
- },
- {
- 'action': 'get',
- 'describe': '่ฏฆๆ
',
- 'defaultCheck': false
- }
- ],
- 'actionList': null,
- 'dataAccess': null
- },
- {
- 'roleId': 'user',
- 'permissionId': 'permission',
- 'permissionName': 'ๆ้็ฎก็',
- 'actions': '[]',
- 'actionEntitySet': [],
- 'actionList': null,
- 'dataAccess': null
- },
- {
- 'roleId': 'user',
- 'permissionId': 'role',
- 'permissionName': '่ง่ฒ็ฎก็',
- 'actions': '[]',
- 'actionEntitySet': [],
- 'actionList': null,
- 'dataAccess': null
- },
-
- {
- 'roleId': 'user',
- 'permissionId': 'test',
- 'permissionName': 'ๆต่ฏๆ้',
- 'actions': '[]',
- 'actionEntitySet': [],
- 'actionList': null,
- 'dataAccess': null
- },
- {
- 'roleId': 'user',
- 'permissionId': 'user',
- 'permissionName': '็จๆท็ฎก็',
- 'actions': '[]',
- 'actionEntitySet': [],
- 'actionList': null,
- 'dataAccess': null
- }
- ]
- }
- ],
- 'pageSize': 10,
- 'pageNo': 0,
- 'totalPage': 1,
- 'totalCount': 5
- })
-}
-
-const permissionNoPager = () => {
- return builder([{
- 'id': 'marketing',
- 'name': '่ฅ้็ฎก็',
- 'describe': null,
- 'status': 1,
- 'actionData': '[{"action":"query","defaultCheck":false,"describe":"ๆฅ่ฏข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"edit","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"}]',
- 'sptDaTypes': null,
- 'optionalFields': null,
- 'parents': null,
- 'type': null,
- 'deleted': 0,
- 'actions': [
- 'add',
- 'query',
- 'get',
- 'edit',
- 'delete'
- ]
- },
- {
- 'id': 'member',
- 'name': 'ไผๅ็ฎก็',
- 'describe': null,
- 'status': 1,
- 'actionData': '[{"action":"query","defaultCheck":false,"describe":"ๆฅ่ฏข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"edit","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"}]',
- 'sptDaTypes': null,
- 'optionalFields': '[]',
- 'parents': null,
- 'type': 'default',
- 'deleted': 0,
- 'actions': [
- 'add',
- 'query',
- 'get',
- 'edit',
- 'delete'
- ]
- },
- {
- 'id': 'menu',
- 'name': '่ๅ็ฎก็',
- 'describe': null,
- 'status': 1,
- 'actionData': '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"import","defaultCheck":false,"describe":"ๅฏผๅ
ฅ"},{"action":"get","defaultCheck":false,"describe":"ๆฅ่ฏข"},{"action":"edit","defaultCheck":false,"describe":"ไฟฎๆน"}]',
- 'sptDaTypes': null,
- 'optionalFields': '[]',
- 'parents': null,
- 'type': 'default',
- 'deleted': 0,
- 'actions': [
- 'add',
- 'import',
- 'get',
- 'edit'
- ]
- },
- {
- 'id': 'order',
- 'name': '่ฎขๅ็ฎก็',
- 'describe': null,
- 'status': 1,
- 'actionData': '[{"action":"query","defaultCheck":false,"describe":"ๆฅ่ฏข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"edit","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"}]',
- 'sptDaTypes': null,
- 'optionalFields': '[]',
- 'parents': null,
- 'type': 'default',
- 'deleted': 0,
- 'actions': [
- 'add',
- 'query',
- 'get',
- 'edit',
- 'delete'
- ]
- },
- {
- 'id': 'permission',
- 'name': 'ๆ้็ฎก็',
- 'describe': null,
- 'status': 1,
- 'actionData': '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"get","defaultCheck":false,"describe":"ๆฅ่ฏข"},{"action":"edit","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"}]',
- 'sptDaTypes': null,
- 'optionalFields': '[]',
- 'parents': null,
- 'type': 'default',
- 'deleted': 0,
- 'actions': [
- 'add',
- 'get',
- 'edit',
- 'delete'
- ]
- },
- {
- 'id': 'role',
- 'name': '่ง่ฒ็ฎก็',
- 'describe': null,
- 'status': 1,
- 'actionData': '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"get","defaultCheck":false,"describe":"ๆฅ่ฏข"},{"action":"edit","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"}]',
- 'sptDaTypes': null,
- 'optionalFields': '[]',
- 'parents': null,
- 'type': 'default',
- 'deleted': 0,
- 'actions': [
- 'add',
- 'get',
- 'edit',
- 'delete'
- ]
- },
- {
- 'id': 'test',
- 'name': 'ๆต่ฏๆ้',
- 'describe': null,
- 'status': 1,
- 'actionData': '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"}]',
- 'sptDaTypes': null,
- 'optionalFields': '[]',
- 'parents': null,
- 'type': 'default',
- 'deleted': 0,
- 'actions': [
- 'add',
- 'get'
- ]
- },
- {
- 'id': 'user',
- 'name': '็จๆท็ฎก็',
- 'describe': null,
- 'status': 1,
- 'actionData': '[{"action":"query","defaultCheck":false,"describe":"ๆฅ่ฏข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"edit","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"},{"action":"import","defaultCheck":false,"describe":"ๅฏผๅ
ฅ"},{"action":"export","defaultCheck":false,"describe":"ๅฏผๅบ"}]',
- 'sptDaTypes': null,
- 'optionalFields': '[]',
- 'parents': null,
- 'type': 'default',
- 'deleted': 0,
- 'actions': [
- 'add',
- 'get'
- ]
- }
- ])
-}
-
-const permissions = () => {
- return builder({
- 'data': [{
- 'id': 'marketing',
- 'name': '่ฅ้็ฎก็',
- 'describe': null,
- 'status': 1,
- 'actionData': '[{"action":"query","defaultCheck":false,"describe":"ๆฅ่ฏข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"edit","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"}]',
- 'sptDaTypes': null,
- 'optionalFields': null,
- 'parents': null,
- 'type': null,
- 'deleted': 0,
- 'actions': [
- 'add',
- 'query',
- 'get',
- 'edit',
- 'delete'
- ]
- },
- {
- 'id': 'member',
- 'name': 'ไผๅ็ฎก็',
- 'describe': null,
- 'status': 1,
- 'actionData': '[{"action":"query","defaultCheck":false,"describe":"ๆฅ่ฏข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"edit","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"}]',
- 'sptDaTypes': null,
- 'optionalFields': '[]',
- 'parents': null,
- 'type': 'default',
- 'deleted': 0,
- 'actions': [
- 'add',
- 'query',
- 'get',
- 'edit',
- 'delete'
- ]
- },
- {
- 'id': 'menu',
- 'name': '่ๅ็ฎก็',
- 'describe': null,
- 'status': 1,
- 'actionData': '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"import","defaultCheck":false,"describe":"ๅฏผๅ
ฅ"},{"action":"get","defaultCheck":false,"describe":"ๆฅ่ฏข"},{"action":"edit","defaultCheck":false,"describe":"ไฟฎๆน"}]',
- 'sptDaTypes': null,
- 'optionalFields': '[]',
- 'parents': null,
- 'type': 'default',
- 'deleted': 0,
- 'actions': [
- 'add',
- 'import',
- 'get',
- 'edit'
- ]
- },
- {
- 'id': 'order',
- 'name': '่ฎขๅ็ฎก็',
- 'describe': null,
- 'status': 1,
- 'actionData': '[{"action":"query","defaultCheck":false,"describe":"ๆฅ่ฏข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"edit","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"}]',
- 'sptDaTypes': null,
- 'optionalFields': '[]',
- 'parents': null,
- 'type': 'default',
- 'deleted': 0,
- 'actions': [
- 'add',
- 'query',
- 'get',
- 'edit',
- 'delete'
- ]
- },
- {
- 'id': 'permission',
- 'name': 'ๆ้็ฎก็',
- 'describe': null,
- 'status': 1,
- 'actionData': '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"get","defaultCheck":false,"describe":"ๆฅ่ฏข"},{"action":"edit","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"}]',
- 'sptDaTypes': null,
- 'optionalFields': '[]',
- 'parents': null,
- 'type': 'default',
- 'deleted': 0,
- 'actions': [
- 'add',
- 'get',
- 'edit',
- 'delete'
- ]
- },
- {
- 'id': 'role',
- 'name': '่ง่ฒ็ฎก็',
- 'describe': null,
- 'status': 1,
- 'actionData': '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"get","defaultCheck":false,"describe":"ๆฅ่ฏข"},{"action":"edit","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"}]',
- 'sptDaTypes': null,
- 'optionalFields': '[]',
- 'parents': null,
- 'type': 'default',
- 'deleted': 0,
- 'actions': [
- 'add',
- 'get',
- 'edit',
- 'delete'
- ]
- },
- {
- 'id': 'test',
- 'name': 'ๆต่ฏๆ้',
- 'describe': null,
- 'status': 1,
- 'actionData': '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"}]',
- 'sptDaTypes': null,
- 'optionalFields': '[]',
- 'parents': null,
- 'type': 'default',
- 'deleted': 0,
- 'actions': [
- 'add',
- 'get'
- ]
- },
- {
- 'id': 'user',
- 'name': '็จๆท็ฎก็',
- 'describe': null,
- 'status': 1,
- 'actionData': '[{"action":"add","describe":"ๆฐๅข","defaultCheck":false},{"action":"get","describe":"ๆฅ่ฏข","defaultCheck":false}]',
- 'sptDaTypes': null,
- 'optionalFields': '[]',
- 'parents': null,
- 'type': 'default',
- 'deleted': 0,
- 'actions': [
- 'add',
- 'get'
- ]
- }
- ],
- 'pageSize': 10,
- 'pageNo': 0,
- 'totalPage': 1,
- 'totalCount': 5
- })
-}
-
-Mock.mock(/\/org\/tree/, 'get', orgTree)
-Mock.mock(/\/role/, 'get', role)
-Mock.mock(/\/permission\/no-pager/, 'get', permissionNoPager)
-Mock.mock(/\/permission/, 'get', permissions)
diff --git a/quantdinger_vue/src/mock/services/tagCloud.js b/quantdinger_vue/src/mock/services/tagCloud.js
deleted file mode 100644
index 63a2e06..0000000
--- a/quantdinger_vue/src/mock/services/tagCloud.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import Mock from 'mockjs2'
-import { builder } from '../util'
-
-//
-const tagCloudData = () => {
- return builder([{ 'value': 9, 'name': 'AntV' }, { 'value': 8, 'name': 'F2' }, { 'value': 8, 'name': 'G2' }, { 'value': 8, 'name': 'G6' }, { 'value': 8, 'name': 'DataSet' }, { 'value': 8, 'name': 'ๅขจ่
ๅญฆ้ข' }, { 'value': 6, 'name': 'Analysis' }, { 'value': 6, 'name': 'Data Mining' }, { 'value': 6, 'name': 'Data Vis' }, { 'value': 6, 'name': 'Design' }, { 'value': 6, 'name': 'Grammar' }, { 'value': 6, 'name': 'Graphics' }, { 'value': 6, 'name': 'Graph' }, { 'value': 6, 'name': 'Hierarchy' }, { 'value': 6, 'name': 'Labeling' }, { 'value': 6, 'name': 'Layout' }, { 'value': 6, 'name': 'Quantitative' }, { 'value': 6, 'name': 'Relation' }, { 'value': 6, 'name': 'Statistics' }, { 'value': 6, 'name': 'ๅฏ่งๅ' }, { 'value': 6, 'name': 'ๆฐๆฎ' }, { 'value': 6, 'name': 'ๆฐๆฎๅฏ่งๅ' }, { 'value': 4, 'name': 'Arc Diagram' }, { 'value': 4, 'name': 'Bar Chart' }, { 'value': 4, 'name': 'Canvas' }, { 'value': 4, 'name': 'Chart' }, { 'value': 4, 'name': 'DAG' }, { 'value': 4, 'name': 'DG' }, { 'value': 4, 'name': 'Facet' }, { 'value': 4, 'name': 'Geo' }, { 'value': 4, 'name': 'Line' }, { 'value': 4, 'name': 'MindMap' }, { 'value': 4, 'name': 'Pie' }, { 'value': 4, 'name': 'Pizza Chart' }, { 'value': 4, 'name': 'Punch Card' }, { 'value': 4, 'name': 'SVG' }, { 'value': 4, 'name': 'Sunburst' }, { 'value': 4, 'name': 'Tree' }, { 'value': 4, 'name': 'UML' }, { 'value': 3, 'name': 'Chart' }, { 'value': 3, 'name': 'View' }, { 'value': 3, 'name': 'Geom' }, { 'value': 3, 'name': 'Shape' }, { 'value': 3, 'name': 'Scale' }, { 'value': 3, 'name': 'Animate' }, { 'value': 3, 'name': 'Global' }, { 'value': 3, 'name': 'Slider' }, { 'value': 3, 'name': 'Connector' }, { 'value': 3, 'name': 'Transform' }, { 'value': 3, 'name': 'Util' }, { 'value': 3, 'name': 'DomUtil' }, { 'value': 3, 'name': 'MatrixUtil' }, { 'value': 3, 'name': 'PathUtil' }, { 'value': 3, 'name': 'G' }, { 'value': 3, 'name': '2D' }, { 'value': 3, 'name': '3D' }, { 'value': 3, 'name': 'Line' }, { 'value': 3, 'name': 'Area' }, { 'value': 3, 'name': 'Interval' }, { 'value': 3, 'name': 'Schema' }, { 'value': 3, 'name': 'Edge' }, { 'value': 3, 'name': 'Polygon' }, { 'value': 3, 'name': 'Heatmap' }, { 'value': 3, 'name': 'Render' }, { 'value': 3, 'name': 'Tooltip' }, { 'value': 3, 'name': 'Axis' }, { 'value': 3, 'name': 'Guide' }, { 'value': 3, 'name': 'Coord' }, { 'value': 3, 'name': 'Legend' }, { 'value': 3, 'name': 'Path' }, { 'value': 3, 'name': 'Helix' }, { 'value': 3, 'name': 'Theta' }, { 'value': 3, 'name': 'Rect' }, { 'value': 3, 'name': 'Polar' }, { 'value': 3, 'name': 'Dsv' }, { 'value': 3, 'name': 'Csv' }, { 'value': 3, 'name': 'Tsv' }, { 'value': 3, 'name': 'GeoJSON' }, { 'value': 3, 'name': 'TopoJSON' }, { 'value': 3, 'name': 'Filter' }, { 'value': 3, 'name': 'Map' }, { 'value': 3, 'name': 'Pick' }, { 'value': 3, 'name': 'Rename' }, { 'value': 3, 'name': 'Filter' }, { 'value': 3, 'name': 'Map' }, { 'value': 3, 'name': 'Pick' }, { 'value': 3, 'name': 'Rename' }, { 'value': 3, 'name': 'Reverse' }, { 'value': 3, 'name': 'sort' }, { 'value': 3, 'name': 'Subset' }, { 'value': 3, 'name': 'Partition' }, { 'value': 3, 'name': 'Imputation' }, { 'value': 3, 'name': 'Fold' }, { 'value': 3, 'name': 'Aggregate' }, { 'value': 3, 'name': 'Proportion' }, { 'value': 3, 'name': 'Histogram' }, { 'value': 3, 'name': 'Quantile' }, { 'value': 3, 'name': 'Treemap' }, { 'value': 3, 'name': 'Hexagon' }, { 'value': 3, 'name': 'Binning' }, { 'value': 3, 'name': 'kernel' }, { 'value': 3, 'name': 'Regression' }, { 'value': 3, 'name': 'Density' }, { 'value': 3, 'name': 'Sankey' }, { 'value': 3, 'name': 'Voronoi' }, { 'value': 3, 'name': 'Projection' }, { 'value': 3, 'name': 'Centroid' }, { 'value': 3, 'name': 'H5' }, { 'value': 3, 'name': 'Mobile' }, { 'value': 3, 'name': 'K็บฟๅพ' }, { 'value': 3, 'name': 'ๅ
ณ็ณปๅพ' }, { 'value': 3, 'name': '็ๅฝขๅพ' }, { 'value': 3, 'name': '่ก็ฅจๅพ' }, { 'value': 3, 'name': '็ดๆนๅพ' }, { 'value': 3, 'name': '้ๅญๅกๅพ' }, { 'value': 3, 'name': 'ๅ้ข' }, { 'value': 3, 'name': 'ๅไธๆ ผๅฐ็ซ็ฐๅพ' }, { 'value': 3, 'name': '้ฅผๅพ' }, { 'value': 3, 'name': '็บฟๅพ' }, { 'value': 3, 'name': '็นๅพ' }, { 'value': 3, 'name': 'ๆฃ็นๅพ' }, { 'value': 3, 'name': 'ๅญๅผนๅพ' }, { 'value': 3, 'name': 'ๆฑ็ถๅพ' }, { 'value': 3, 'name': 'ไปช่กจ็' }, { 'value': 3, 'name': 'ๆฐๆณกๅพ' }, { 'value': 3, 'name': 'ๆผๆๅพ' }, { 'value': 3, 'name': '็ญๅๅพ' }, { 'value': 3, 'name': '็็ฆๅพ' }, { 'value': 3, 'name': '็ดๆนๅพ' }, { 'value': 3, 'name': '็ฉๅฝขๆ ๅพ' }, { 'value': 3, 'name': '็ฎฑๅฝขๅพ' }, { 'value': 3, 'name': '่ฒๅๅพ' }, { 'value': 3, 'name': '่บๆๅพ' }, { 'value': 3, 'name': '่ฏไบ' }, { 'value': 3, 'name': '่ฏไบๅพ' }, { 'value': 3, 'name': '้ท่พพๅพ' }, { 'value': 3, 'name': '้ข็งฏๅพ' }, { 'value': 3, 'name': '้ฉฌ่ตๅ
ๅพ' }, { 'value': 3, 'name': '็้กปๅพ' }, { 'value': 3, 'name': 'ๅๆ ่ฝด' }, { 'value': 3, 'name': '' }, { 'value': 3, 'name': 'Jacques Bertin' }, { 'value': 3, 'name': 'Leland Wilkinson' }, { 'value': 3, 'name': 'William Playfair' }, { 'value': 3, 'name': 'ๅ
ณ่' }, { 'value': 3, 'name': 'ๅๅธ' }, { 'value': 3, 'name': 'ๅบ้ด' }, { 'value': 3, 'name': 'ๅ ๆฏ' }, { 'value': 3, 'name': 'ๅฐๅพ' }, { 'value': 3, 'name': 'ๆถ้ด' }, { 'value': 3, 'name': 'ๆฏ่พ' }, { 'value': 3, 'name': 'ๆต็จ' }, { 'value': 3, 'name': '่ถๅฟ' }, { 'value': 2, 'name': 'ไบฆๅถ' }, { 'value': 2, 'name': 'ๅ้ฃ' }, { 'value': 2, 'name': 'ๅฎ็ฝ' }, { 'value': 2, 'name': 'ๅทดๆ' }, { 'value': 2, 'name': 'ๅผ ๅๅฐ' }, { 'value': 2, 'name': 'ๅพกๆฏ' }, { 'value': 2, 'name': 'ๆ็ฐ' }, { 'value': 2, 'name': 'ๆฒ้ฑผ' }, { 'value': 2, 'name': '็ไผฏ' }, { 'value': 2, 'name': '็ปๅบท' }, { 'value': 2, 'name': '็ฅฏ้ธ' }, { 'value': 2, 'name': '็ปไบ' }, { 'value': 2, 'name': '็ฝๅฎช' }, { 'value': 2, 'name': '่งๅบ' }, { 'value': 2, 'name': '่ฃ็็' }, { 'value': 2, 'name': '้ๆฒ' }, { 'value': 2, 'name': '้กพๅพ' }, { 'value': 2, 'name': 'Domo' }, { 'value': 2, 'name': 'GPL' }, { 'value': 2, 'name': 'PAI' }, { 'value': 2, 'name': 'SPSS' }, { 'value': 2, 'name': 'SYSTAT' }, { 'value': 2, 'name': 'Tableau' }, { 'value': 2, 'name': 'D3' }, { 'value': 2, 'name': 'Vega' }, { 'value': 2, 'name': '็ป่ฎกๅพ่กจ' }])
-}
-
-Mock.mock(/\/data\/antv\/tag-cloud/, 'get', tagCloudData)
diff --git a/quantdinger_vue/src/mock/services/user.js b/quantdinger_vue/src/mock/services/user.js
deleted file mode 100644
index a104a31..0000000
--- a/quantdinger_vue/src/mock/services/user.js
+++ /dev/null
@@ -1,577 +0,0 @@
-import Mock from 'mockjs2'
-import { builder } from '../util'
-
-const info = options => {
- const userInfo = {
- id: '4291d7da9005377ec9aec4a71ea837f',
- name: 'ๅคฉ้่ฟๅญ',
- username: 'admin',
- password: '',
- avatar: '/avatar2.jpg',
- status: 1,
- telephone: '',
- lastLoginIp: '27.154.74.117',
- lastLoginTime: 1534837621348,
- creatorId: 'admin',
- createTime: 1497160610259,
- merchantCode: 'TLif2btpzg079h15bk',
- deleted: 0,
- roleId: 'admin',
- role: {}
- }
- // role
- const roleObj = {
- id: 'admin',
- name: '็ฎก็ๅ',
- describe: 'ๆฅๆๆๆๆ้',
- status: 1,
- creatorId: 'system',
- createTime: 1497160610259,
- deleted: 0,
- permissions: [
- {
- roleId: 'admin',
- permissionId: 'dashboard',
- permissionName: 'ไปช่กจ็',
- actions:
- '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"query","defaultCheck":false,"describe":"ๆฅ่ฏข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"update","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"}]',
- actionEntitySet: [
- {
- action: 'add',
- describe: 'ๆฐๅข',
- defaultCheck: false
- },
- {
- action: 'query',
- describe: 'ๆฅ่ฏข',
- defaultCheck: false
- },
- {
- action: 'get',
- describe: '่ฏฆๆ
',
- defaultCheck: false
- },
- {
- action: 'update',
- describe: 'ไฟฎๆน',
- defaultCheck: false
- },
- {
- action: 'delete',
- describe: 'ๅ ้ค',
- defaultCheck: false
- }
- ],
- actionList: null,
- dataAccess: null
- },
- {
- roleId: 'admin',
- permissionId: 'exception',
- permissionName: 'ๅผๅธธ้กต้ขๆ้',
- actions:
- '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"query","defaultCheck":false,"describe":"ๆฅ่ฏข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"update","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"}]',
- actionEntitySet: [
- {
- action: 'add',
- describe: 'ๆฐๅข',
- defaultCheck: false
- },
- {
- action: 'query',
- describe: 'ๆฅ่ฏข',
- defaultCheck: false
- },
- {
- action: 'get',
- describe: '่ฏฆๆ
',
- defaultCheck: false
- },
- {
- action: 'update',
- describe: 'ไฟฎๆน',
- defaultCheck: false
- },
- {
- action: 'delete',
- describe: 'ๅ ้ค',
- defaultCheck: false
- }
- ],
- actionList: null,
- dataAccess: null
- },
- {
- roleId: 'admin',
- permissionId: 'result',
- permissionName: '็ปๆๆ้',
- actions:
- '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"query","defaultCheck":false,"describe":"ๆฅ่ฏข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"update","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"}]',
- actionEntitySet: [
- {
- action: 'add',
- describe: 'ๆฐๅข',
- defaultCheck: false
- },
- {
- action: 'query',
- describe: 'ๆฅ่ฏข',
- defaultCheck: false
- },
- {
- action: 'get',
- describe: '่ฏฆๆ
',
- defaultCheck: false
- },
- {
- action: 'update',
- describe: 'ไฟฎๆน',
- defaultCheck: false
- },
- {
- action: 'delete',
- describe: 'ๅ ้ค',
- defaultCheck: false
- }
- ],
- actionList: null,
- dataAccess: null
- },
- {
- roleId: 'admin',
- permissionId: 'profile',
- permissionName: '่ฏฆ็ป้กตๆ้',
- actions:
- '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"query","defaultCheck":false,"describe":"ๆฅ่ฏข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"update","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"}]',
- actionEntitySet: [
- {
- action: 'add',
- describe: 'ๆฐๅข',
- defaultCheck: false
- },
- {
- action: 'query',
- describe: 'ๆฅ่ฏข',
- defaultCheck: false
- },
- {
- action: 'get',
- describe: '่ฏฆๆ
',
- defaultCheck: false
- },
- {
- action: 'update',
- describe: 'ไฟฎๆน',
- defaultCheck: false
- },
- {
- action: 'delete',
- describe: 'ๅ ้ค',
- defaultCheck: false
- }
- ],
- actionList: null,
- dataAccess: null
- },
- {
- roleId: 'admin',
- permissionId: 'table',
- permissionName: '่กจๆ ผๆ้',
- actions:
- '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"import","defaultCheck":false,"describe":"ๅฏผๅ
ฅ"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"update","defaultCheck":false,"describe":"ไฟฎๆน"}]',
- actionEntitySet: [
- {
- action: 'add',
- describe: 'ๆฐๅข',
- defaultCheck: false
- },
- {
- action: 'import',
- describe: 'ๅฏผๅ
ฅ',
- defaultCheck: false
- },
- {
- action: 'get',
- describe: '่ฏฆๆ
',
- defaultCheck: false
- },
- {
- action: 'update',
- describe: 'ไฟฎๆน',
- defaultCheck: false
- }
- ],
- actionList: null,
- dataAccess: null
- },
- {
- roleId: 'admin',
- permissionId: 'form',
- permissionName: '่กจๅๆ้',
- actions:
- '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"query","defaultCheck":false,"describe":"ๆฅ่ฏข"},{"action":"update","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"}]',
- actionEntitySet: [
- {
- action: 'add',
- describe: 'ๆฐๅข',
- defaultCheck: false
- },
- {
- action: 'get',
- describe: '่ฏฆๆ
',
- defaultCheck: false
- },
- {
- action: 'query',
- describe: 'ๆฅ่ฏข',
- defaultCheck: false
- },
- {
- action: 'update',
- describe: 'ไฟฎๆน',
- defaultCheck: false
- },
- {
- action: 'delete',
- describe: 'ๅ ้ค',
- defaultCheck: false
- }
- ],
- actionList: null,
- dataAccess: null
- },
- {
- roleId: 'admin',
- permissionId: 'order',
- permissionName: '่ฎขๅ็ฎก็',
- actions:
- '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"query","defaultCheck":false,"describe":"ๆฅ่ฏข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"update","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"}]',
- actionEntitySet: [
- {
- action: 'add',
- describe: 'ๆฐๅข',
- defaultCheck: false
- },
- {
- action: 'query',
- describe: 'ๆฅ่ฏข',
- defaultCheck: false
- },
- {
- action: 'get',
- describe: '่ฏฆๆ
',
- defaultCheck: false
- },
- {
- action: 'update',
- describe: 'ไฟฎๆน',
- defaultCheck: false
- },
- {
- action: 'delete',
- describe: 'ๅ ้ค',
- defaultCheck: false
- }
- ],
- actionList: null,
- dataAccess: null
- },
- {
- roleId: 'admin',
- permissionId: 'permission',
- permissionName: 'ๆ้็ฎก็',
- actions:
- '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"update","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"}]',
- actionEntitySet: [
- {
- action: 'add',
- describe: 'ๆฐๅข',
- defaultCheck: false
- },
- {
- action: 'get',
- describe: '่ฏฆๆ
',
- defaultCheck: false
- },
- {
- action: 'update',
- describe: 'ไฟฎๆน',
- defaultCheck: false
- },
- {
- action: 'delete',
- describe: 'ๅ ้ค',
- defaultCheck: false
- }
- ],
- actionList: null,
- dataAccess: null
- },
- {
- roleId: 'admin',
- permissionId: 'role',
- permissionName: '่ง่ฒ็ฎก็',
- actions:
- '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"update","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"}]',
- actionEntitySet: [
- {
- action: 'add',
- describe: 'ๆฐๅข',
- defaultCheck: false
- },
- {
- action: 'get',
- describe: '่ฏฆๆ
',
- defaultCheck: false
- },
- {
- action: 'update',
- describe: 'ไฟฎๆน',
- defaultCheck: false
- },
- {
- action: 'delete',
- describe: 'ๅ ้ค',
- defaultCheck: false
- }
- ],
- actionList: null,
- dataAccess: null
- },
- {
- roleId: 'admin',
- permissionId: 'table',
- permissionName: 'ๆกๅญ็ฎก็',
- actions:
- '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"query","defaultCheck":false,"describe":"ๆฅ่ฏข"},{"action":"update","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"}]',
- actionEntitySet: [
- {
- action: 'add',
- describe: 'ๆฐๅข',
- defaultCheck: false
- },
- {
- action: 'get',
- describe: '่ฏฆๆ
',
- defaultCheck: false
- },
- {
- action: 'query',
- describe: 'ๆฅ่ฏข',
- defaultCheck: false
- },
- {
- action: 'update',
- describe: 'ไฟฎๆน',
- defaultCheck: false
- },
- {
- action: 'delete',
- describe: 'ๅ ้ค',
- defaultCheck: false
- }
- ],
- actionList: null,
- dataAccess: null
- },
- {
- roleId: 'admin',
- permissionId: 'user',
- permissionName: '็จๆท็ฎก็',
- actions:
- '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"import","defaultCheck":false,"describe":"ๅฏผๅ
ฅ"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"update","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"},{"action":"export","defaultCheck":false,"describe":"ๅฏผๅบ"}]',
- actionEntitySet: [
- {
- action: 'add',
- describe: 'ๆฐๅข',
- defaultCheck: false
- },
- {
- action: 'import',
- describe: 'ๅฏผๅ
ฅ',
- defaultCheck: false
- },
- {
- action: 'get',
- describe: '่ฏฆๆ
',
- defaultCheck: false
- },
- {
- action: 'update',
- describe: 'ไฟฎๆน',
- defaultCheck: false
- },
- {
- action: 'delete',
- describe: 'ๅ ้ค',
- defaultCheck: false
- },
- {
- action: 'export',
- describe: 'ๅฏผๅบ',
- defaultCheck: false
- }
- ],
- actionList: null,
- dataAccess: null
- }
- ]
- }
-
- roleObj.permissions.push({
- roleId: 'admin',
- permissionId: 'support',
- permissionName: '่ถ
็บงๆจกๅ',
- actions:
- '[{"action":"add","defaultCheck":false,"describe":"ๆฐๅข"},{"action":"import","defaultCheck":false,"describe":"ๅฏผๅ
ฅ"},{"action":"get","defaultCheck":false,"describe":"่ฏฆๆ
"},{"action":"update","defaultCheck":false,"describe":"ไฟฎๆน"},{"action":"delete","defaultCheck":false,"describe":"ๅ ้ค"},{"action":"export","defaultCheck":false,"describe":"ๅฏผๅบ"}]',
- actionEntitySet: [
- {
- action: 'add',
- describe: 'ๆฐๅข',
- defaultCheck: false
- },
- {
- action: 'import',
- describe: 'ๅฏผๅ
ฅ',
- defaultCheck: false
- },
- {
- action: 'get',
- describe: '่ฏฆๆ
',
- defaultCheck: false
- },
- {
- action: 'update',
- describe: 'ไฟฎๆน',
- defaultCheck: false
- },
- {
- action: 'delete',
- describe: 'ๅ ้ค',
- defaultCheck: false
- },
- {
- action: 'export',
- describe: 'ๅฏผๅบ',
- defaultCheck: false
- }
- ],
- actionList: null,
- dataAccess: null
- })
-
- userInfo.role = roleObj
- return builder(userInfo)
-}
-
-/**
- * ไฝฟ็จ ็จๆท็ปๅฝ็ token ่ทๅ็จๆทๆๆ้็่ๅ
- * ่ฟๅ็ปๆๅฟ
้กปๆ็
ง่ฟไธช็ปๆไฝๅฝขๅผๅค็๏ผๆๆ นๆฎ
- * /src/router/generator-routers.js ๆไปถ็่ๅ็ปๆๅค็ๅฝๆฐๅฏนๅบๅณๅฏ
- * @param {*} options
- * @returns
- */
-const userNav = options => {
- const nav = [
- // AI ๅๆ
- {
- name: 'Analysis',
- parentId: 0,
- id: 1,
- meta: {
- title: 'menu.dashboard.analysis',
- icon: 'thunderbolt',
- show: true
- },
- component: 'Analysis',
- path: '/ai-analysis'
- },
- // ๆๆ ๅๆ
- {
- name: 'Indicator',
- parentId: 0,
- id: 2,
- meta: {
- title: 'menu.dashboard.indicator',
- icon: 'line-chart',
- show: true
- },
- component: 'Indicator',
- path: '/indicator-analysis'
- },
- // ็นๆฎไธ็บง่ๅ
- {
- name: 'settings',
- parentId: 10028,
- id: 10030,
- meta: {
- title: 'menu.account.settings',
- hideHeader: true,
- hideChildren: true,
- show: true
- },
- redirect: '/account/settings/basic',
- component: 'AccountSettings'
- },
- {
- name: 'BasicSettings',
- path: '/account/settings/basic',
- parentId: 10030,
- id: 10031,
- meta: {
- title: 'account.settings.menuMap.basic',
- show: false
- },
- component: 'BasicSetting'
- },
- {
- name: 'SecuritySettings',
- path: '/account/settings/security',
- parentId: 10030,
- id: 10032,
- meta: {
- title: 'account.settings.menuMap.security',
- show: false
- },
- component: 'SecuritySettings'
- },
- {
- name: 'CustomSettings',
- path: '/account/settings/custom',
- parentId: 10030,
- id: 10033,
- meta: {
- title: 'account.settings.menuMap.custom',
- show: false
- },
- component: 'CustomSettings'
- },
- {
- name: 'BindingSettings',
- path: '/account/settings/binding',
- parentId: 10030,
- id: 10034,
- meta: {
- title: 'account.settings.menuMap.binding',
- show: false
- },
- component: 'BindingSettings'
- },
- {
- name: 'NotificationSettings',
- path: '/account/settings/notification',
- parentId: 10030,
- id: 10034,
- meta: {
- title: 'account.settings.menuMap.notification',
- show: false
- },
- component: 'NotificationSettings'
- }
- ]
- const json = builder(nav)
- return json
-}
-
-Mock.mock(/\/api\/user\/info/, 'get', info)
-Mock.mock(/\/api\/user\/nav/, 'get', userNav)
diff --git a/quantdinger_vue/src/mock/util.js b/quantdinger_vue/src/mock/util.js
deleted file mode 100644
index a4be036..0000000
--- a/quantdinger_vue/src/mock/util.js
+++ /dev/null
@@ -1,38 +0,0 @@
-const responseBody = {
- message: '',
- timestamp: 0,
- result: null,
- code: 0
-}
-
-export const builder = (data, message, code = 0, headers = {}) => {
- responseBody.result = data
- if (message !== undefined && message !== null) {
- responseBody.message = message
- }
- if (code !== undefined && code !== 0) {
- responseBody.code = code
- responseBody._status = code
- }
- if (headers !== null && typeof headers === 'object' && Object.keys(headers).length > 0) {
- responseBody._headers = headers
- }
- responseBody.timestamp = new Date().getTime()
- return responseBody
-}
-
-export const getQueryParameters = (options) => {
- const url = options.url
- const search = url.split('?')[1]
- if (!search) {
- return {}
- }
- return JSON.parse('{"' + decodeURIComponent(search)
- .replace(/"/g, '\\"')
- .replace(/&/g, '","')
- .replace(/=/g, '":"') + '"}')
-}
-
-export const getBody = (options) => {
- return options.body && JSON.parse(options.body)
-}
diff --git a/quantdinger_vue/src/permission.js b/quantdinger_vue/src/permission.js
deleted file mode 100644
index 32a64c3..0000000
--- a/quantdinger_vue/src/permission.js
+++ /dev/null
@@ -1,128 +0,0 @@
-import router, {
- resetRouter
-} from './router'
-import store from './store'
-import storage from 'store'
-import NProgress from 'nprogress' // progress bar
-import '@/components/NProgress/nprogress.less' // progress bar custom style
-import {
- setDocumentTitle,
- domTitle
-} from '@/utils/domUtil'
-import {
- ACCESS_TOKEN
-} from '@/store/mutation-types'
-import {
- i18nRender
-} from '@/locales'
-
-NProgress.configure({
- showSpinner: false
-}) // NProgress Configuration
-
-const allowList = ['login'] // no redirect allowList
-const loginRoutePath = '/user/login'
-const defaultRoutePath = '/dashboard'
-
-router.beforeEach((to, from, next) => {
- NProgress.start() // start progress bar
- to.meta && typeof to.meta.title !== 'undefined' && setDocumentTitle(`${i18nRender(to.meta.title)} - ${domTitle}`)
-
- // Check whether we have a token (local-only auth).
- // ๅค็ token ๅฏ่ฝๆฏๅญ็ฌฆไธฒๆๅฏน่ฑก็ๆ
ๅต
- let token = storage.get(ACCESS_TOKEN)
- if (token && typeof token !== 'string') {
- token = token.token || token.value || (typeof token === 'object' ? null : token)
- }
- token = typeof token === 'string' ? token : null
-
- if (token) {
- // ๆ token๏ผๅ
่ฎธ่ฎฟ้ฎๆๆ้กต้ข
- // ๅฆๆ่ฎฟ้ฎ็ปๅฝ้กต๏ผ่ทณ่ฝฌๅฐ้ป่ฎค้กต้ข
- if (to.path === loginRoutePath) {
- next({ path: defaultRoutePath })
- NProgress.done()
- } else {
- // ๆฃๆฅ็จๆทไฟกๆฏๆฏๅฆๅทฒๅ ่ฝฝ
- if (store.getters.roles.length === 0) {
- store.dispatch('GetInfo')
- .then(res => {
- // ๆๅ็จๆทไฟกๆฏๆๅ
- // const roles = res && res.role
- // ็ๆ่ทฏ็ฑ
- store.dispatch('GenerateRoutes', { token }).then(() => {
- // ๅจๆๆทปๅ ๅฏ่ฎฟ้ฎ่ทฏ็ฑ่กจ
- resetRouter() // ้็ฝฎ่ทฏ็ฑ
- store.getters.addRouters.forEach(r => {
- router.addRoute(r)
- })
- // ่ฏทๆฑๅธฆๆ redirect ้ๅฎๅๆถ๏ผ็ปๅฝ่ชๅจ้ๅฎๅๅฐ่ฏฅๅฐๅ
- const redirect = decodeURIComponent(from.query.redirect || to.path)
- if (to.path === redirect) {
- // hackๆนๆณ ็กฎไฟaddRoutesๅทฒๅฎๆ ,set the replace: true so the navigation will not leave a history record
- next({ ...to, replace: true })
- } else {
- // ่ทณ่ฝฌๅฐ็ฎ็่ทฏ็ฑ
- next({ path: redirect })
- }
- })
- })
- .catch((err) => {
- // If token is invalid/expired, clear local auth and redirect to login.
- const status = err && err.response && err.response.status
- if (status === 401) {
- store.dispatch('Logout').finally(() => {
- next({ path: loginRoutePath, query: { redirect: to.fullPath } })
- NProgress.done()
- })
- return
- }
-
- // Do NOT hard-logout on transient failures (backend down, proxy issue, etc).
- // Instead, degrade gracefully with a default role and continue.
- store.commit('SET_ROLES', [{ id: 'default', permissionList: [] }])
- store.dispatch('GenerateRoutes', { token }).then(() => {
- resetRouter()
- store.getters.addRouters.forEach(r => router.addRoute(r))
- next({ ...to, replace: true })
- }).catch(() => {
- next()
- })
- })
- } else {
- // ๆฃๆฅ่ทฏ็ฑๆฏๅฆๅทฒๅๅงๅ
- const addRouters = store.getters.addRouters
- // ๅฆๆ่ทฏ็ฑๆชๅๅงๅ๏ผๅ
ๅๅงๅ่ทฏ็ฑ
- if (!addRouters || addRouters.length === 0) {
- store.dispatch('GenerateRoutes', { token }).then(() => {
- // ๅจๆๆทปๅ ๅฏ่ฎฟ้ฎ่ทฏ็ฑ่กจ
- resetRouter() // ้็ฝฎ่ทฏ็ฑ ้ฒๆญข้ๅบ้ๆฐ็ปๅฝๆ่
token ่ฟๆๅ้กต้ขๆชๅทๆฐ๏ผๅฏผ่ด็่ทฏ็ฑ้ๅคๆทปๅ
- store.getters.addRouters.forEach(r => {
- router.addRoute(r)
- })
- // ้ๆฐ่ฟๅ
ฅๅฝๅ่ทฏ็ฑ๏ผ้ฟๅ
้ฆๆฌกๅทๆฐ็ฉบ็ฝ
- next({ ...to, replace: true })
- }).catch(() => {
- next()
- })
- } else {
- next()
- }
- }
- }
- } else {
- // ๆฒกๆ token
- if (allowList.includes(to.name)) {
- // ๅจๅ
็ปๅฝๅๅ๏ผ็ดๆฅ่ฟๅ
ฅ
- next()
- } else {
- // ่ทณ่ฝฌๅฐ็ปๅฝ้กต
- next({ path: loginRoutePath, query: { redirect: to.fullPath } })
- NProgress.done() // if current page is login will not trigger afterEach hook, so manually handle it
- }
- }
-})
-
-router.afterEach(() => {
- NProgress.done() // finish progress bar
-})
diff --git a/quantdinger_vue/src/router/README.md b/quantdinger_vue/src/router/README.md
deleted file mode 100644
index b736444..0000000
--- a/quantdinger_vue/src/router/README.md
+++ /dev/null
@@ -1,134 +0,0 @@
-่ทฏ็ฑ/่ๅ่ฏดๆ
-====
-
-
-ๆ ผๅผๅ่ฏดๆ
-----
-
-```ecmascript 6
-const routerObject = {
- redirect: noredirect,
- name: 'router-name',
- hidden: true,
- meta: {
- title: 'title',
- icon: 'a-icon',
- target: '_blank|_self|_top|_parent',
- keepAlive: true,
- hiddenHeaderContent: true,
- }
-}
-```
-
-
-
-`{ Route }` ๅฏน่ฑก
-
-| ๅๆฐ | ่ฏดๆ | ็ฑปๅ | ้ป่ฎคๅผ |
-| -------- | ----------------------------------------- | ------- | ------ |
-| hidden | ๆงๅถ่ทฏ็ฑๆฏๅฆๆพ็คบๅจ sidebar | boolean | false |
-| redirect | ้ๅฎๅๅฐๅ, ่ฎฟ้ฎ่ฟไธช่ทฏ็ฑๆถ,่ชๅฎ่ฟ่ก้ๅฎๅ | string | - |
-| name | ่ทฏ็ฑๅ็งฐ, ๅฟ
้กป่ฎพ็ฝฎ,ไธไธ่ฝ้ๅ | string | - |
-| meta | ่ทฏ็ฑๅ
ไฟกๆฏ๏ผ่ทฏ็ฑ้ๅธฆๆฉๅฑไฟกๆฏ๏ผ | object | {} |
-| hideChildrenInMenu | ๅผบๅถ่ๅๆพ็คบไธบItem่ไธๆฏSubItem(้
ๅ meta.hidden) | boolean | - |
-
-
-`{ Meta }` ่ทฏ็ฑๅ
ไฟกๆฏๅฏน่ฑก
-
-| ๅๆฐ | ่ฏดๆ | ็ฑปๅ | ้ป่ฎคๅผ |
-| ------------------- | ------------------------------------------------------------ | ------- | ------ |
-| title | ่ทฏ็ฑๆ ้ข, ็จไบๆพ็คบ้ขๅ
ๅฑ, ้กต้ขๆ ้ข *ๆจ่่ฎพ็ฝฎ | string | - |
-| icon | ่ทฏ็ฑๅจ menu ไธๆพ็คบ็ๅพๆ | [string,svg] | - |
-| keepAlive | ็ผๅญ่ฏฅ่ทฏ็ฑ | boolean | false |
-| target | ่ๅ้พๆฅ่ทณ่ฝฌ็ฎๆ ๏ผๅ่ html a ๆ ่ฎฐ๏ผ | string | - |
-| hidden | ้
ๅ`hideChildrenInMenu`ไฝฟ็จ๏ผ็จไบ้่่ๅๆถ๏ผๆไพ้ๅฝๅฐ็ถ่ๅๆพ็คบ ้ไธญ่ๅ้กน_๏ผๅฏๅ่ ไธชไบบ้กต ้
็ฝฎๆนๅผ๏ผ_ | boolean | false |
-| hiddenHeaderContent | *็นๆฎ ้่ [PageHeader](https://github.com/vueComponent/ant-design-vue-pro/blob/master/src/components/PageHeader/PageHeader.vue#L6) ็ปไปถไธญ็้กต้ขๅธฆ็ ้ขๅ
ๅฑๅ้กต้ขๆ ้ขๆ | boolean | false |
-| permission | ไธ้กน็ฎๆไพ็ๆ้ๆฆๆชๅน้
็ๆ้๏ผๅฆๆไธๅน้
๏ผๅไผ่ขซ็ฆๆญข่ฎฟ้ฎ่ฏฅ่ทฏ็ฑ้กต้ข | array | [] |
-
-> ่ทฏ็ฑ่ชๅฎไน `Icon` ่ฏทๅผๅ
ฅ่ชๅฎไน `svg` Icon ๆไปถ๏ผ็ถๅไผ ้็ป่ทฏ็ฑ็ `meta.icon` ๅๆฐๅณๅฏ
-
-่ทฏ็ฑๆๅปบไพๅญๆนๆก1
-
-่ทฏ็ฑไพๅญ
-----
-
-```ecmascript 6
-const asyncRouterMap = [
- {
- path: '/',
- name: 'index',
- component: BasicLayout,
- meta: { title: '้ฆ้กต' },
- redirect: '/ai-analysis',
- children: [
- {
- path: '/dashboard',
- component: RouteView,
- name: 'dashboard',
- redirect: '/dashboard/workplace',
- meta: {title: 'ไปช่กจ็', icon: 'dashboard', permission: ['dashboard']},
- children: [
- {
- path: '/ai-analysis',
- name: 'Analysis',
- component: () => import('@/views/dashboard/Analysis'),
- meta: {title: 'ๅๆ้กต', permission: ['dashboard']}
- },
- {
- path: '/dashboard/monitor',
- name: 'Monitor',
- hidden: true,
- component: () => import('@/views/dashboard/Monitor'),
- meta: {title: '็ๆง้กต', permission: ['dashboard']}
- },
- {
- path: '/dashboard/workplace',
- name: 'Workplace',
- component: () => import('@/views/dashboard/Workplace'),
- meta: {title: 'ๅทฅไฝๅฐ', permission: ['dashboard']}
- }
- ]
- },
-
- // result
- {
- path: '/result',
- name: 'result',
- component: PageView,
- redirect: '/result/success',
- meta: { title: '็ปๆ้กต', icon: 'check-circle-o', permission: [ 'result' ] },
- children: [
- {
- path: '/result/success',
- name: 'ResultSuccess',
- component: () => import(/* webpackChunkName: "result" */ '@/views/result/Success'),
- // ่ฏฅ้กต้ข้่้ขๅ
ๅฑๅ้กต้ขๆ ้ขๆ
- meta: { title: 'ๆๅ', hiddenHeaderContent: true, permission: [ 'result' ] }
- },
- {
- path: '/result/fail',
- name: 'ResultFail',
- component: () => import(/* webpackChunkName: "result" */ '@/views/result/Error'),
- // ่ฏฅ้กต้ข้่้ขๅ
ๅฑๅ้กต้ขๆ ้ขๆ
- meta: { title: 'ๅคฑ่ดฅ', hiddenHeaderContent: true, permission: [ 'result' ] }
- }
- ]
- },
- ...
- ]
- },
-]
-```
-
-> 1. ่ฏทๆณจๆ `component: () => import('..') ` ๆนๅผๅผๅ
ฅ่ทฏ็ฑ็้กต้ข็ปไปถไธบ ๆๅ ่ฝฝๆจกๅผใๅ
ทไฝๅฏไปฅ็ [Vue ๅฎๆนๆๆกฃ](https://router.vuejs.org/zh/guide/advanced/lazy-loading.html)
-> 2. ๅขๅ ๆฐ็่ทฏ็ฑๅบ่ฏฅๅขๅ ๅจ '/' (index) ่ทฏ็ฑ็ `children` ๅ
-> 3. ๅญ่ทฏ็ฑ็็ถ็บง่ทฏ็ฑๅฟ
้กปๆ `router-view` ๆ่ฝ่ฎฉๅญ่ทฏ็ฑๆธฒๆๅบๆฅ๏ผ่ฏทไป็ปๆฅ้
vue-router ๆๆกฃ
-> 4. `permission` ๅฏไปฅ่ฟ่ก่ชๅฎไนไฟฎๆน๏ผๅช้่ฆๅฏน่ฟไธชๆจกๅ่ฟ่ก่ชๅฎไนไฟฎๆนๅณๅฏ [src/store/modules/permission.js#L10](https://github.com/vueComponent/ant-design-vue-pro/blob/master/src/store/modules/permission.js#L10)
-
-
-้ๆ้่ทฏ็ฑ็ปๆ๏ผ
-
-
-
-
-็ฌฌไบ็งๅ็ซฏ่ทฏ็ฑ็ฑๅ็ซฏๅจๆ็ๆ็่ฎพ่ฎก๏ผๅฏไปฅๅๅพๅฎ็ฝๆๆกฃ https://pro.antdv.com/docs/authority-management ๅ่
diff --git a/quantdinger_vue/src/router/generator-routers.js b/quantdinger_vue/src/router/generator-routers.js
deleted file mode 100644
index f422d25..0000000
--- a/quantdinger_vue/src/router/generator-routers.js
+++ /dev/null
@@ -1,85 +0,0 @@
-import { asyncRouterMap } from '@/config/router.config'
-import storage from 'store'
-import { USER_INFO, USER_ROLES } from '@/store/mutation-types'
-
-/**
- * Filter routes based on user permissions.
- * Routes with meta.permission containing 'admin' are only visible to admin users.
- *
- * @param {Array} routes - Route configuration array
- * @param {boolean} isAdmin - Whether current user is admin
- * @returns {Array} Filtered routes
- */
-function filterRoutesByPermission (routes, isAdmin) {
- const filtered = []
-
- for (const route of routes) {
- // Clone route to avoid mutating original
- const clonedRoute = { ...route }
-
- // Check if route requires admin permission
- const permissions = clonedRoute.meta?.permission || []
- const requiresAdmin = permissions.includes('admin')
-
- // If requires admin but user is not admin, skip this route
- if (requiresAdmin && !isAdmin) {
- continue
- }
-
- // Recursively filter children
- if (clonedRoute.children && clonedRoute.children.length > 0) {
- clonedRoute.children = filterRoutesByPermission(clonedRoute.children, isAdmin)
- }
-
- filtered.push(clonedRoute)
- }
-
- return filtered
-}
-
-/**
- * Check if current user is admin.
- * Checks both userInfo.role and stored roles array.
- *
- * @returns {boolean} True if user is admin
- */
-function checkIsAdmin () {
- // Check userInfo.role first
- const userInfo = storage.get(USER_INFO) || {}
- if (userInfo.role) {
- const roleId = typeof userInfo.role === 'string' ? userInfo.role : userInfo.role.id
- if (roleId === 'admin') {
- return true
- }
- }
-
- // Check stored roles array
- const roles = storage.get(USER_ROLES) || []
- if (Array.isArray(roles)) {
- for (const role of roles) {
- if (role && (role.id === 'admin' || role === 'admin')) {
- return true
- }
- }
- }
-
- return false
-}
-
-/**
- * Generate dynamic routes based on user permissions.
- * Filters admin-only routes for non-admin users.
- *
- * @param {string} token - User token (unused, kept for compatibility)
- * @returns {Promise{{ $t('fastAnalysis.selectHint') }}
-{{ $t('dashboard.analysis.empty.noWatchlist') }}
-{{ $t('billing.desc') }}
-{{ usdtOrder.address }}
- {{ usdtOrder.amount_usdt }} USDT
- {{ indicator.description || $t('community.noDescription') }}
- - - - - -{{ detail.description || $t('community.noDescription') }}
-{{ item.code }}
- {{ $t('profile.description') || 'Manage your account settings and preferences' }}
-
-
{{ $t('settings.description') }}
-{{ $t('userManage.description') || 'Manage system users, roles and permissions' }}
-{{ $t('user.oauth.processing') || 'Processing login...' }}
-