mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-01-06 21:35:52 +08:00
chore: update yarn.lock and enhance localization in Japanese, Russian, and Traditional Chinese
- Removed unused dependencies from yarn.lock. - Added new localization strings for emoji filtering and TTS progress bar in Japanese, Russian, and Traditional Chinese. - Improved layout and styling in TTSSettings and VoiceCallSettings components.
This commit is contained in:
parent
45cf39fb4e
commit
a8e9affb86
@ -1458,7 +1458,9 @@
|
|||||||
"stopped": "音声再生を停止しました",
|
"stopped": "音声再生を停止しました",
|
||||||
"segmented": "分割",
|
"segmented": "分割",
|
||||||
"segmented_play": "分割再生",
|
"segmented_play": "分割再生",
|
||||||
"segmented_playback": "分割再生"
|
"segmented_playback": "分割再生",
|
||||||
|
"filter.emojis": "[to be translated]:过滤表情符号",
|
||||||
|
"show_progress_bar": "[to be translated]:显示TTS进度条"
|
||||||
},
|
},
|
||||||
"asr": {
|
"asr": {
|
||||||
"title": "音声認識",
|
"title": "音声認識",
|
||||||
@ -1508,8 +1510,7 @@
|
|||||||
"browser_not_support": "ブラウザが音声認識をサポートしていません"
|
"browser_not_support": "ブラウザが音声認識をサポートしていません"
|
||||||
},
|
},
|
||||||
"auto_start_server": "アプリ起動時にサーバーを自動起動",
|
"auto_start_server": "アプリ起動時にサーバーを自動起動",
|
||||||
"auto_start_server.help": "有効にすると、アプリ起動時に音声認識サーバーが自動的に起動します",
|
"auto_start_server.help": "有効にすると、アプリ起動時に音声認識サーバーが自動的に起動します"
|
||||||
"language": "認識言語"
|
|
||||||
},
|
},
|
||||||
"voice": {
|
"voice": {
|
||||||
"title": "音声機能",
|
"title": "音声機能",
|
||||||
@ -1532,8 +1533,7 @@
|
|||||||
"reset": "リセット",
|
"reset": "リセット",
|
||||||
"saved": "プロンプトが保存されました",
|
"saved": "プロンプトが保存されました",
|
||||||
"reset_done": "プロンプトがリセットされました",
|
"reset_done": "プロンプトがリセットされました",
|
||||||
"info": "このプロンプトは音声通話モードでのAIの応答方法を指導します",
|
"info": "このプロンプトは音声通話モードでのAIの応答方法を指導します"
|
||||||
"language_info": "リセットボタンをクリックすると、現在の言語のデフォルトプロンプトが取得されます"
|
|
||||||
},
|
},
|
||||||
"asr_tts_info": "音声通話は上記の音声認識(ASR)と音声合成(TTS)の設定を使用します",
|
"asr_tts_info": "音声通話は上記の音声認識(ASR)と音声合成(TTS)の設定を使用します",
|
||||||
"test": "音声通話テスト",
|
"test": "音声通話テスト",
|
||||||
|
|||||||
@ -1458,7 +1458,9 @@
|
|||||||
"stopped": "[to be translated]:已停止语音播放",
|
"stopped": "[to be translated]:已停止语音播放",
|
||||||
"segmented": "[to be translated]:分段",
|
"segmented": "[to be translated]:分段",
|
||||||
"segmented_play": "[to be translated]:分段播放",
|
"segmented_play": "[to be translated]:分段播放",
|
||||||
"segmented_playback": "[to be translated]:分段播放"
|
"segmented_playback": "[to be translated]:分段播放",
|
||||||
|
"filter.emojis": "[to be translated]:过滤表情符号",
|
||||||
|
"show_progress_bar": "[to be translated]:显示TTS进度条"
|
||||||
},
|
},
|
||||||
"voice": {
|
"voice": {
|
||||||
"title": "[to be translated]:语音功能",
|
"title": "[to be translated]:语音功能",
|
||||||
@ -1530,12 +1532,12 @@
|
|||||||
"reset": "Сбросить",
|
"reset": "Сбросить",
|
||||||
"saved": "Подсказка сохранена",
|
"saved": "Подсказка сохранена",
|
||||||
"reset_done": "Подсказка сброшена",
|
"reset_done": "Подсказка сброшена",
|
||||||
"info": "Эта подсказка будет направлять ответы ИИ в режиме голосового вызова",
|
"info": "Эта подсказка будет направлять ответы ИИ в режиме голосового вызова"
|
||||||
"language_info": "Нажмите кнопку сброса, чтобы получить стандартную подсказку для текущего языка"
|
|
||||||
},
|
},
|
||||||
"asr_tts_info": "Голосовой вызов использует настройки распознавания речи (ASR) и синтеза речи (TTS), указанные выше",
|
"asr_tts_info": "Голосовой вызов использует настройки распознавания речи (ASR) и синтеза речи (TTS), указанные выше",
|
||||||
"test": "Тестировать голосовой вызов",
|
"test": "Тестировать голосовой вызов",
|
||||||
"test_info": "Используйте кнопку голосового вызова справа от поля ввода для тестирования"
|
"test_info": "Используйте кнопку голосового вызова справа от поля ввода для тестирования",
|
||||||
|
"welcome_message": "[to be translated]:您好,我是您的AI助手,请长按说话按钮进行对话。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"translate": {
|
"translate": {
|
||||||
|
|||||||
@ -1458,7 +1458,9 @@
|
|||||||
"stopped": "[to be translated]:已停止语音播放",
|
"stopped": "[to be translated]:已停止语音播放",
|
||||||
"segmented": "[to be translated]:分段",
|
"segmented": "[to be translated]:分段",
|
||||||
"segmented_play": "[to be translated]:分段播放",
|
"segmented_play": "[to be translated]:分段播放",
|
||||||
"segmented_playback": "[to be translated]:分段播放"
|
"segmented_playback": "[to be translated]:分段播放",
|
||||||
|
"filter.emojis": "[to be translated]:过滤表情符号",
|
||||||
|
"show_progress_bar": "[to be translated]:显示TTS进度条"
|
||||||
},
|
},
|
||||||
"voice": {
|
"voice": {
|
||||||
"title": "[to be translated]:语音功能",
|
"title": "[to be translated]:语音功能",
|
||||||
@ -1530,12 +1532,12 @@
|
|||||||
"reset": "重置",
|
"reset": "重置",
|
||||||
"saved": "提示詞已保存",
|
"saved": "提示詞已保存",
|
||||||
"reset_done": "提示詞已重置",
|
"reset_done": "提示詞已重置",
|
||||||
"info": "此提示詞將指導AI在語音通話模式下的回覆方式",
|
"info": "此提示詞將指導AI在語音通話模式下的回覆方式"
|
||||||
"language_info": "點擊重置按鈕可獲取當前語言的預設提示詞"
|
|
||||||
},
|
},
|
||||||
"asr_tts_info": "語音通話使用上面的語音識別(ASR)和語音合成(TTS)設置",
|
"asr_tts_info": "語音通話使用上面的語音識別(ASR)和語音合成(TTS)設置",
|
||||||
"test": "測試通話",
|
"test": "測試通話",
|
||||||
"test_info": "請使用輸入框右側的語音通話按鈕進行測試"
|
"test_info": "請使用輸入框右側的語音通話按鈕進行測試",
|
||||||
|
"welcome_message": "[to be translated]:您好,我是您的AI助手,请长按说话按钮进行对话。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"translate": {
|
"translate": {
|
||||||
|
|||||||
@ -1043,7 +1043,11 @@ const TTSSettings: FC = () => {
|
|||||||
/>
|
/>
|
||||||
<SettingHelpText style={{ display: 'flex', flexDirection: 'column', justifyContent: 'center', gap: 5 }}>
|
<SettingHelpText style={{ display: 'flex', flexDirection: 'column', justifyContent: 'center', gap: 5 }}>
|
||||||
<span>{t('settings.voice.help')}</span>
|
<span>{t('settings.voice.help')}</span>
|
||||||
<a href="https://platform.openai.com/docs/guides/speech-to-text" target="_blank" rel="noopener noreferrer">
|
<a
|
||||||
|
href="https://platform.openai.com/docs/guides/speech-to-text"
|
||||||
|
className="link"
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer">
|
||||||
{t('settings.voice.learn_more')}
|
{t('settings.voice.learn_more')}
|
||||||
</a>
|
</a>
|
||||||
</SettingHelpText>
|
</SettingHelpText>
|
||||||
|
|||||||
@ -66,7 +66,6 @@ const VoiceCallSettings: FC = () => {
|
|||||||
</AntTooltip>
|
</AntTooltip>
|
||||||
</Space>
|
</Space>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
|
||||||
{/* 模型选择 */}
|
{/* 模型选择 */}
|
||||||
<Form.Item label={t('settings.voice_call.model')} style={{ marginBottom: 16 }}>
|
<Form.Item label={t('settings.voice_call.model')} style={{ marginBottom: 16 }}>
|
||||||
<Space>
|
<Space>
|
||||||
@ -75,7 +74,11 @@ const VoiceCallSettings: FC = () => {
|
|||||||
disabled={!voiceCallEnabled}
|
disabled={!voiceCallEnabled}
|
||||||
icon={
|
icon={
|
||||||
voiceCallModel ? (
|
voiceCallModel ? (
|
||||||
<ModelIcon src={getModelLogo(voiceCallModel.id)} alt="Model logo" />
|
<ModelIcon
|
||||||
|
src={getModelLogo(voiceCallModel.id)}
|
||||||
|
alt="Model logo"
|
||||||
|
style={{ width: 20, height: 20, borderRadius: 10 }}
|
||||||
|
/>
|
||||||
) : (
|
) : (
|
||||||
<PhoneOutlined style={{ marginRight: 8 }} />
|
<PhoneOutlined style={{ marginRight: 8 }} />
|
||||||
)
|
)
|
||||||
@ -88,7 +91,6 @@ const VoiceCallSettings: FC = () => {
|
|||||||
</Space>
|
</Space>
|
||||||
<InfoText>{t('settings.voice_call.model.info')}</InfoText>
|
<InfoText>{t('settings.voice_call.model.info')}</InfoText>
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
|
||||||
{/* 提示词设置 */}
|
{/* 提示词设置 */}
|
||||||
<Form.Item label={t('settings.voice_call.prompt.label')} style={{ marginBottom: 16 }}>
|
<Form.Item label={t('settings.voice_call.prompt.label')} style={{ marginBottom: 16 }}>
|
||||||
<Input.TextArea
|
<Input.TextArea
|
||||||
@ -98,6 +100,7 @@ const VoiceCallSettings: FC = () => {
|
|||||||
rows={8}
|
rows={8}
|
||||||
placeholder={t('settings.voice_call.prompt.placeholder')}
|
placeholder={t('settings.voice_call.prompt.placeholder')}
|
||||||
/>
|
/>
|
||||||
|
<InfoText>{t('settings.voice_call.prompt.info')}</InfoText>
|
||||||
<Space style={{ marginTop: 8 }}>
|
<Space style={{ marginTop: 8 }}>
|
||||||
<Button type="primary" onClick={handleSavePrompt} disabled={!voiceCallEnabled}>
|
<Button type="primary" onClick={handleSavePrompt} disabled={!voiceCallEnabled}>
|
||||||
{t('settings.voice_call.prompt.save')}
|
{t('settings.voice_call.prompt.save')}
|
||||||
@ -106,25 +109,6 @@ const VoiceCallSettings: FC = () => {
|
|||||||
{t('settings.voice_call.prompt.reset')}
|
{t('settings.voice_call.prompt.reset')}
|
||||||
</Button>
|
</Button>
|
||||||
</Space>
|
</Space>
|
||||||
<InfoText>{t('settings.voice_call.prompt.info')}</InfoText>
|
|
||||||
</Form.Item>
|
|
||||||
|
|
||||||
{/* ASR 和 TTS 设置提示 */}
|
|
||||||
<Form.Item>
|
|
||||||
<Alert type="info">{t('settings.voice_call.asr_tts_info')}</Alert>
|
|
||||||
</Form.Item>
|
|
||||||
|
|
||||||
{/* 测试按钮 */}
|
|
||||||
<Form.Item>
|
|
||||||
<Button
|
|
||||||
type="primary"
|
|
||||||
icon={<PhoneOutlined />}
|
|
||||||
disabled={!voiceCallEnabled}
|
|
||||||
onClick={() =>
|
|
||||||
window.message.info({ content: t('settings.voice_call.test_info'), key: 'voice-call-test' })
|
|
||||||
}>
|
|
||||||
{t('settings.voice_call.test')}
|
|
||||||
</Button>
|
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
</Form>
|
</Form>
|
||||||
</Container>
|
</Container>
|
||||||
@ -142,39 +126,40 @@ const InfoText = styled.div`
|
|||||||
`
|
`
|
||||||
|
|
||||||
const ModelIcon = styled.img`
|
const ModelIcon = styled.img`
|
||||||
width: 16px;
|
width: 20px;
|
||||||
height: 16px;
|
height: 20px;
|
||||||
margin-right: 8px;
|
border-radius: 10px;
|
||||||
|
margin-top: 4px;
|
||||||
`
|
`
|
||||||
|
|
||||||
const Alert = styled.div<{ type: 'info' | 'warning' | 'error' | 'success' }>`
|
// const Alert = styled.div<{ type: 'info' | 'warning' | 'error' | 'success' }>`
|
||||||
padding: 8px 12px;
|
// padding: 8px 12px;
|
||||||
border-radius: 4px;
|
// border-radius: 4px;
|
||||||
background-color: ${(props) =>
|
// background-color: ${(props) =>
|
||||||
props.type === 'info'
|
// props.type === 'info'
|
||||||
? 'var(--color-info-bg)'
|
// ? 'var(--color-info-bg)'
|
||||||
: props.type === 'warning'
|
// : props.type === 'warning'
|
||||||
? 'var(--color-warning-bg)'
|
// ? 'var(--color-warning-bg)'
|
||||||
: props.type === 'error'
|
// : props.type === 'error'
|
||||||
? 'var(--color-error-bg)'
|
// ? 'var(--color-error-bg)'
|
||||||
: 'var(--color-success-bg)'};
|
// : 'var(--color-success-bg)'};
|
||||||
border: 1px solid
|
// border: 1px solid
|
||||||
${(props) =>
|
// ${(props) =>
|
||||||
props.type === 'info'
|
// props.type === 'info'
|
||||||
? 'var(--color-info-border)'
|
// ? 'var(--color-info-border)'
|
||||||
: props.type === 'warning'
|
// : props.type === 'warning'
|
||||||
? 'var(--color-warning-border)'
|
// ? 'var(--color-warning-border)'
|
||||||
: props.type === 'error'
|
// : props.type === 'error'
|
||||||
? 'var(--color-error-border)'
|
// ? 'var(--color-error-border)'
|
||||||
: 'var(--color-success-border)'};
|
// : 'var(--color-success-border)'};
|
||||||
color: ${(props) =>
|
// color: ${(props) =>
|
||||||
props.type === 'info'
|
// props.type === 'info'
|
||||||
? 'var(--color-info-text)'
|
// ? 'var(--color-info-text)'
|
||||||
: props.type === 'warning'
|
// : props.type === 'warning'
|
||||||
? 'var(--color-warning-text)'
|
// ? 'var(--color-warning-text)'
|
||||||
: props.type === 'error'
|
// : props.type === 'error'
|
||||||
? 'var(--color-error-text)'
|
// ? 'var(--color-error-text)'
|
||||||
: 'var(--color-success-text)'};
|
// : 'var(--color-success-text)'};
|
||||||
`
|
// `
|
||||||
|
|
||||||
export default VoiceCallSettings
|
export default VoiceCallSettings
|
||||||
|
|||||||
36
yarn.lock
36
yarn.lock
@ -3946,7 +3946,6 @@ __metadata:
|
|||||||
axios: "npm:^1.7.3"
|
axios: "npm:^1.7.3"
|
||||||
babel-plugin-styled-components: "npm:^2.1.4"
|
babel-plugin-styled-components: "npm:^2.1.4"
|
||||||
browser-image-compression: "npm:^2.0.2"
|
browser-image-compression: "npm:^2.0.2"
|
||||||
bufferutil: "npm:^4.0.9"
|
|
||||||
color: "npm:^5.0.0"
|
color: "npm:^5.0.0"
|
||||||
dayjs: "npm:^1.11.11"
|
dayjs: "npm:^1.11.11"
|
||||||
dexie: "npm:^4.0.8"
|
dexie: "npm:^4.0.8"
|
||||||
@ -4024,11 +4023,9 @@ __metadata:
|
|||||||
turndown-plugin-gfm: "npm:^1.0.2"
|
turndown-plugin-gfm: "npm:^1.0.2"
|
||||||
typescript: "npm:^5.6.2"
|
typescript: "npm:^5.6.2"
|
||||||
undici: "npm:^7.4.0"
|
undici: "npm:^7.4.0"
|
||||||
utf-8-validate: "npm:^6.0.5"
|
|
||||||
uuid: "npm:^10.0.0"
|
uuid: "npm:^10.0.0"
|
||||||
vite: "npm:^5.0.12"
|
vite: "npm:^5.0.12"
|
||||||
webdav: "npm:^5.8.0"
|
webdav: "npm:^5.8.0"
|
||||||
ws: "npm:^8.18.1"
|
|
||||||
zipread: "npm:^1.3.3"
|
zipread: "npm:^1.3.3"
|
||||||
languageName: unknown
|
languageName: unknown
|
||||||
linkType: soft
|
linkType: soft
|
||||||
@ -4952,16 +4949,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"bufferutil@npm:^4.0.9":
|
|
||||||
version: 4.0.9
|
|
||||||
resolution: "bufferutil@npm:4.0.9"
|
|
||||||
dependencies:
|
|
||||||
node-gyp: "npm:latest"
|
|
||||||
node-gyp-build: "npm:^4.3.0"
|
|
||||||
checksum: 10c0/f8a93279fc9bdcf32b42eba97edc672b39ca0fe5c55a8596099886cffc76ea9dd78e0f6f51ecee3b5ee06d2d564aa587036b5d4ea39b8b5ac797262a363cdf7d
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"builder-util-runtime@npm:9.2.4":
|
"builder-util-runtime@npm:9.2.4":
|
||||||
version: 9.2.4
|
version: 9.2.4
|
||||||
resolution: "builder-util-runtime@npm:9.2.4"
|
resolution: "builder-util-runtime@npm:9.2.4"
|
||||||
@ -12140,17 +12127,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"node-gyp-build@npm:^4.3.0":
|
|
||||||
version: 4.8.4
|
|
||||||
resolution: "node-gyp-build@npm:4.8.4"
|
|
||||||
bin:
|
|
||||||
node-gyp-build: bin.js
|
|
||||||
node-gyp-build-optional: optional.js
|
|
||||||
node-gyp-build-test: build-test.js
|
|
||||||
checksum: 10c0/444e189907ece2081fe60e75368784f7782cfddb554b60123743dfb89509df89f1f29c03bbfa16b3a3e0be3f48799a4783f487da6203245fa5bed239ba7407e1
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"node-gyp@npm:^9.1.0":
|
"node-gyp@npm:^9.1.0":
|
||||||
version: 9.4.1
|
version: 9.4.1
|
||||||
resolution: "node-gyp@npm:9.4.1"
|
resolution: "node-gyp@npm:9.4.1"
|
||||||
@ -16679,16 +16655,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"utf-8-validate@npm:^6.0.5":
|
|
||||||
version: 6.0.5
|
|
||||||
resolution: "utf-8-validate@npm:6.0.5"
|
|
||||||
dependencies:
|
|
||||||
node-gyp: "npm:latest"
|
|
||||||
node-gyp-build: "npm:^4.3.0"
|
|
||||||
checksum: 10c0/6dc63c513adb001e47a51819072cdd414158430091c49c21d4947ea99f16df5167b671f680df8fb2b6f2ae6a7f30264b4ec111bd3e573720dfe371da1ab99a81
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"utf8-byte-length@npm:^1.0.1":
|
"utf8-byte-length@npm:^1.0.1":
|
||||||
version: 1.0.5
|
version: 1.0.5
|
||||||
resolution: "utf8-byte-length@npm:1.0.5"
|
resolution: "utf8-byte-length@npm:1.0.5"
|
||||||
@ -17123,7 +17089,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"ws@npm:^8.13.0, ws@npm:^8.14.1, ws@npm:^8.18.0, ws@npm:^8.18.1":
|
"ws@npm:^8.13.0, ws@npm:^8.14.1, ws@npm:^8.18.0":
|
||||||
version: 8.18.1
|
version: 8.18.1
|
||||||
resolution: "ws@npm:8.18.1"
|
resolution: "ws@npm:8.18.1"
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user