Add i18n support with language selector on login page (#1410)

* feat: add i18n support with language selector on login page

Co-Authored-By: Junyan Qin <Chin> <rockchinq@gmail.com>

* feat: complete i18n implementation for all webui components

Co-Authored-By: Junyan Qin <Chin> <rockchinq@gmail.com>

* feat: complete all hardcoded text

* feat: dynamic label i18n

* fix: lint errors

* fix: lint errors

* delete sh fils

* fix: edit model dialog title

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Junyan Qin <Chin> <rockchinq@gmail.com>
This commit is contained in:
devin-ai-integration[bot]
2025-05-13 22:39:19 +08:00
committed by GitHub
parent 91cd8cf380
commit 2bf94539bd
25 changed files with 898 additions and 233 deletions
+8 -3
View File
@@ -15,8 +15,11 @@ import {
DialogTitle,
} from '@/components/ui/dialog';
import { toast } from 'sonner';
import { useTranslation } from 'react-i18next';
import { i18nObj } from '@/i18n/I18nProvider';
export default function LLMConfigPage() {
const { t } = useTranslation();
const [cardList, setCardList] = useState<LLMCardVO[]>([]);
const [modalOpen, setModalOpen] = useState<boolean>(false);
const [isEditForm, setIsEditForm] = useState(false);
@@ -30,7 +33,7 @@ export default function LLMConfigPage() {
const requesterNameListResp = await httpClient.getProviderRequesters();
const requesterNameList = requesterNameListResp.requesters.map((item) => {
return {
label: item.label.zh_CN,
label: i18nObj(item.label),
value: item.name,
};
});
@@ -56,7 +59,7 @@ export default function LLMConfigPage() {
})
.catch((err) => {
console.error('get LLM model list error', err);
toast.error('获取模型列表失败:' + err.message);
toast.error(t('models.getModelListError') + err.message);
});
}
@@ -77,7 +80,9 @@ export default function LLMConfigPage() {
<Dialog open={modalOpen} onOpenChange={setModalOpen}>
<DialogContent className="w-[700px] p-6">
<DialogHeader>
<DialogTitle>{isEditForm ? '预览模型' : '创建模型'}</DialogTitle>
<DialogTitle>
{isEditForm ? t('models.editModel') : t('models.createModel')}
</DialogTitle>
</DialogHeader>
<LLMForm
editMode={isEditForm}