fix: i18n and lint
This commit is contained in:
@@ -144,7 +144,7 @@ export function registerShortcuts(window: BrowserWindow) {
|
||||
if (!shortcut.enabled) {
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
// only register universal shortcuts when needed
|
||||
if (onlyUniversalShortcuts && !['show_app', 'mini_window'].includes(shortcut.key)) {
|
||||
return
|
||||
|
||||
@@ -144,7 +144,7 @@ export class WindowService {
|
||||
private setupWindowEvents(mainWindow: BrowserWindow) {
|
||||
mainWindow.once('ready-to-show', () => {
|
||||
mainWindow.webContents.setZoomFactor(configManager.getZoomFactor())
|
||||
|
||||
|
||||
// show window only when laucn to tray not set
|
||||
const isLaunchToTray = configManager.getLaunchToTray()
|
||||
if (!isLaunchToTray) {
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
import { useSettings } from '@renderer/hooks/useSettings'
|
||||
import { LanguageVarious } from '@renderer/types'
|
||||
import { ConfigProvider, theme } from 'antd'
|
||||
import elGR from 'antd/locale/el_GR'
|
||||
import enUS from 'antd/locale/en_US'
|
||||
import esES from 'antd/locale/es_ES'
|
||||
import frFR from 'antd/locale/fr_FR'
|
||||
import jaJP from 'antd/locale/ja_JP'
|
||||
import ptPT from 'antd/locale/pt_PT'
|
||||
import ruRU from 'antd/locale/ru_RU'
|
||||
import zhCN from 'antd/locale/zh_CN'
|
||||
import zhTW from 'antd/locale/zh_TW'
|
||||
@@ -53,7 +57,14 @@ function getAntdLocale(language: LanguageVarious) {
|
||||
return ruRU
|
||||
case 'ja-JP':
|
||||
return jaJP
|
||||
|
||||
case 'el-GR':
|
||||
return elGR
|
||||
case 'es-ES':
|
||||
return esES
|
||||
case 'fr-FR':
|
||||
return frFR
|
||||
case 'pt-PT':
|
||||
return ptPT
|
||||
default:
|
||||
return zhCN
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import i18n from 'i18next'
|
||||
import { initReactI18next } from 'react-i18next'
|
||||
|
||||
import elGR from './locales/el-gr.json'
|
||||
import enUS from './locales/en-us.json'
|
||||
import esES from './locales/es-es.json'
|
||||
@@ -19,7 +20,7 @@ const resources = {
|
||||
'pt-PT': ptPT,
|
||||
'ru-RU': ruRU,
|
||||
'zh-CN': zhCN,
|
||||
'zh-TW': zhTW,
|
||||
'zh-TW': zhTW
|
||||
}
|
||||
|
||||
export const getLanguage = () => {
|
||||
|
||||
@@ -556,7 +556,7 @@
|
||||
"string": "文本"
|
||||
},
|
||||
"pinned": "已固定",
|
||||
"rerank_model": "重排序模型",
|
||||
"rerank_model": "重排模型",
|
||||
"rerank_model_support_provider": "目前重排序模型仅支持部分服务商 ({{provider}})",
|
||||
"rerank_model_tooltip": "在设置->模型服务中点击管理按钮添加",
|
||||
"search": "搜索模型...",
|
||||
@@ -1170,4 +1170,4 @@
|
||||
"visualization": "可视化"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -565,7 +565,7 @@
|
||||
"string": "文字"
|
||||
},
|
||||
"pinned": "已固定",
|
||||
"rerank_model": "重排序模型",
|
||||
"rerank_model": "重排模型",
|
||||
"rerank_model_support_provider": "目前重排序模型僅支持部分服務商 ({{provider}})",
|
||||
"rerank_model_tooltip": "在設定->模型服務中點擊管理按鈕添加",
|
||||
"search": "搜尋模型...",
|
||||
@@ -1179,4 +1179,4 @@
|
||||
"visualization": "視覺化"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,8 +15,8 @@ import { UploadOutlined } from '@ant-design/icons'
|
||||
import ObsidianExportPopup from '@renderer/components/Popups/ObsidianExportPopup'
|
||||
import SelectModelPopup from '@renderer/components/Popups/SelectModelPopup'
|
||||
import TextEditPopup from '@renderer/components/Popups/TextEditPopup'
|
||||
import { TranslateLanguageOptions } from '@renderer/config/translate'
|
||||
import { isReasoningModel } from '@renderer/config/models'
|
||||
import { TranslateLanguageOptions } from '@renderer/config/translate'
|
||||
import { useMessageOperations } from '@renderer/hooks/useMessageOperations'
|
||||
import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService'
|
||||
import { getMessageTitle, resetAssistantMessage } from '@renderer/services/MessagesService'
|
||||
@@ -24,7 +24,6 @@ import { translateText } from '@renderer/services/TranslateService'
|
||||
import { Message, Model } from '@renderer/types'
|
||||
import { Assistant, Topic } from '@renderer/types'
|
||||
import { captureScrollableDivAsBlob, captureScrollableDivAsDataURL, removeTrailingDoubleSpaces } from '@renderer/utils'
|
||||
import { withMessageThought } from '@renderer/utils/formats'
|
||||
import {
|
||||
exportMarkdownToJoplin,
|
||||
exportMarkdownToNotion,
|
||||
@@ -32,12 +31,13 @@ import {
|
||||
exportMessageAsMarkdown,
|
||||
messageToMarkdown
|
||||
} from '@renderer/utils/export'
|
||||
import { withMessageThought } from '@renderer/utils/formats'
|
||||
import { Button, Dropdown, Popconfirm, Tooltip } from 'antd'
|
||||
import dayjs from 'dayjs'
|
||||
import { clone } from 'lodash'
|
||||
import { FC, memo, useCallback, useMemo, useState } from 'react'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import styled from 'styled-components'
|
||||
import { clone } from 'lodash'
|
||||
|
||||
interface Props {
|
||||
message: Message
|
||||
@@ -258,7 +258,7 @@ const MessageMenubar: FC<Props> = (props) => {
|
||||
]
|
||||
}
|
||||
],
|
||||
[message, messageContainerRef, onEdit, onNewBranch, t]
|
||||
[message, messageContainerRef, onEdit, onNewBranch, t, topic.name]
|
||||
)
|
||||
|
||||
const onRegenerate = async (e: React.MouseEvent | undefined) => {
|
||||
|
||||
@@ -26,8 +26,8 @@ import BeatLoader from 'react-spinners/BeatLoader'
|
||||
import styled from 'styled-components'
|
||||
|
||||
import ChatNavigation from './ChatNavigation'
|
||||
import MessageGroup from './MessageGroup'
|
||||
import MessageAnchorLine from './MessageAnchorLine'
|
||||
import MessageGroup from './MessageGroup'
|
||||
import NarrowLayout from './NarrowLayout'
|
||||
import NewTopicButton from './NewTopicButton'
|
||||
import Prompt from './Prompt'
|
||||
|
||||
@@ -24,6 +24,7 @@ import {
|
||||
setFontSize,
|
||||
setMathEngine,
|
||||
setMessageFont,
|
||||
setMessageNavigation,
|
||||
setMessageStyle,
|
||||
setMultiModelMessageStyle,
|
||||
setPasteLongTextAsFile,
|
||||
@@ -31,7 +32,6 @@ import {
|
||||
setRenderInputMessageAsMarkdown,
|
||||
setShowInputEstimatedTokens,
|
||||
setShowMessageDivider,
|
||||
setMessageNavigation,
|
||||
setThoughtAutoCollapse
|
||||
} from '@renderer/store/settings'
|
||||
import { Assistant, AssistantSettings, CodeStyleVarious, ThemeMode, TranslateLanguageVarious } from '@renderer/types'
|
||||
|
||||
@@ -584,10 +584,10 @@ const ModelInfo = styled.div`
|
||||
.model-row {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.label-column {
|
||||
width: 80px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -12,13 +12,13 @@ import {
|
||||
setWebdavSyncInterval as _setWebdavSyncInterval,
|
||||
setWebdavUser as _setWebdavUser
|
||||
} from '@renderer/store/settings'
|
||||
import { formatFileSize } from '@renderer/utils'
|
||||
import { Button, Input, Modal, Select, Spin, Tooltip } from 'antd'
|
||||
import dayjs from 'dayjs'
|
||||
import { FC, useState } from 'react'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
|
||||
import { SettingDivider, SettingGroup, SettingRow, SettingRowTitle, SettingTitle } from '..'
|
||||
import { formatFileSize } from '@renderer/utils'
|
||||
|
||||
interface BackupFile {
|
||||
fileName: string
|
||||
|
||||
@@ -96,13 +96,13 @@ const GeneralSettings: FC = () => {
|
||||
const languagesOptions: { value: LanguageVarious; label: string; flag: string }[] = [
|
||||
{ value: 'zh-CN', label: '中文', flag: '🇨🇳' },
|
||||
{ value: 'zh-TW', label: '中文(繁体)', flag: '🇭🇰' },
|
||||
{ value: 'el-GR', label: 'Ελληνικά', flag: '🇬🇷' },
|
||||
{ value: 'en-US', label: 'English', flag: '🇺🇸' },
|
||||
{ value: 'ja-JP', label: '日本語', flag: '🇯🇵' },
|
||||
{ value: 'ru-RU', label: 'Русский', flag: '🇷🇺' },
|
||||
{ value: 'el-GR', label: 'Ελληνικά', flag: '🇬🇷' },
|
||||
{ value: 'es-ES', label: 'Español', flag: '🇪🇸' },
|
||||
{ value: 'fr-FR', label: 'Français', flag: '🇫🇷' },
|
||||
{ value: 'ja-JP', label: '日本語', flag: '🇯🇵' },
|
||||
{ value: 'pt-PT', label: 'Português', flag: '🇵🇹' },
|
||||
{ value: 'ru-RU', label: 'Русский', flag: '🇷🇺' }
|
||||
{ value: 'pt-PT', label: 'Português', flag: '🇵🇹' }
|
||||
]
|
||||
|
||||
return (
|
||||
|
||||
@@ -168,7 +168,6 @@ const initialState: SettingsState = {
|
||||
obsidianTages: '',
|
||||
joplinToken: '',
|
||||
joplinUrl: ''
|
||||
|
||||
}
|
||||
|
||||
const settingsSlice = createSlice({
|
||||
|
||||
@@ -201,7 +201,16 @@ export enum ThemeMode {
|
||||
|
||||
export type LanguageVarious = 'zh-CN' | 'zh-TW' | 'el-GR' | 'en-US' | 'es-ES' | 'fr-FR' | 'ja-JP' | 'pt-PT' | 'ru-RU'
|
||||
|
||||
export type TranslateLanguageVarious = 'chinese' | 'chinese-traditional' | 'greek' | 'english' | 'spanish' | 'french' | 'japanese' | 'portuguese' | 'russian'
|
||||
export type TranslateLanguageVarious =
|
||||
| 'chinese'
|
||||
| 'chinese-traditional'
|
||||
| 'greek'
|
||||
| 'english'
|
||||
| 'spanish'
|
||||
| 'french'
|
||||
| 'japanese'
|
||||
| 'portuguese'
|
||||
| 'russian'
|
||||
|
||||
export type CodeStyleVarious = BuiltinTheme | 'auto'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user