tts: convert iso6392 language code to iso6391 to filter tts voices, closes #1627 (#1639)

This commit is contained in:
Huang Xin
2025-07-21 04:10:14 +08:00
committed by GitHub
parent 0299cce343
commit dbe1efd1e9
4 changed files with 8 additions and 7 deletions
+2 -4
View File
@@ -4,12 +4,10 @@ import withBundleAnalyzer from '@next/bundle-analyzer';
const isDev = process.env['NODE_ENV'] === 'development';
const appPlatform = process.env['NEXT_PUBLIC_APP_PLATFORM'];
/* uncomment this to enable OpenNext Cloudflare for development
if (isDev) {
const { initOpenNextCloudflareForDev } = await import('@opennextjs/cloudflare');
initOpenNextCloudflareForDev();
const { initOpenNextCloudflareForDev } = await import('@opennextjs/cloudflare');
initOpenNextCloudflareForDev();
}
*/
const exportOutput = appPlatform !== 'web' && !isDev;
@@ -330,7 +330,7 @@ const TTSPanel = ({
</span>
<span
className={clsx(
'text-base sm:text-sm',
'max-w-[180px] overflow-hidden text-ellipsis text-base sm:text-sm',
voice.disabled && 'text-gray-400',
)}
>
@@ -364,7 +364,8 @@ const BookDetailEdit: React.FC<BookDetailEditProps> = ({
</button>
<button
onClick={onSave}
className='rounded-md bg-green-500 px-4 py-2 text-white hover:bg-green-600'
disabled={fieldErrors && Object.keys(fieldErrors).length > 0}
className='rounded-md bg-green-500 px-4 py-2 text-white hover:bg-green-600 disabled:opacity-50'
>
{_('Save')}
</button>
+3 -1
View File
@@ -1,5 +1,5 @@
import { TTSMark } from '@/services/tts/types';
import { inferLangFromScript, isSameLang, isValidLang } from './lang';
import { code6392to6391, inferLangFromScript, isSameLang, isValidLang } from './lang';
const cleanTextContent = (text: string) =>
text.replace(/\r\n/g, ' ').replace(/\r/g, ' ').replace(/\n/g, ' ').trimStart();
@@ -27,10 +27,12 @@ export const parseSSMLLang = (ssml: string, primaryLang?: string): string => {
? `${parts[0]!.toLowerCase()}-${parts[1]!.toUpperCase()}`
: parts[0]!.toLowerCase();
lang = code6392to6391(lang) || lang;
if (!isValidLang(lang)) {
lang = 'en';
}
}
primaryLang = code6392to6391(primaryLang?.toLowerCase() || '') || primaryLang;
if (lang === 'en' && primaryLang && !isSameLang(lang, primaryLang)) {
lang = primaryLang.split('-')[0]!.toLowerCase();
}