mirror of
https://github.com/cloudreve/frontend.git
synced 2025-12-25 19:52:48 +00:00
feat(email): add preferred language setting in email template editor
This commit is contained in:
parent
95cbbed58a
commit
42d39b4962
|
|
@ -567,6 +567,10 @@
|
|||
"quotaExceededEmailTemplateDes": "E-Mail-Vorlage, die an Benutzer gesendet wird, wenn sie ihr Speicherkontingent überschreiten.",
|
||||
"resetPasswordEmailTemplate": "Passwort-Reset-Vorlage",
|
||||
"resetPasswordEmailTemplateDes": "E-Mail-Vorlage, die an Benutzer gesendet wird, wenn sie ein Passwort-Reset anfordern.",
|
||||
"preferredLanguage": "Bevorzugte Sprache",
|
||||
"setAsPreferredLanguage": "Als bevorzugte Sprache festlegen",
|
||||
"setAsPreferredLanguageDes": "Wenn die Sprache des Benutzers nicht festgelegt ist, wird diese bevorzugte Sprache verwendet.",
|
||||
"alreadyAsPreferredLanguageDes": "Die aktuelle Sprache ist bereits als bevorzugte Sprache festgelegt. Wenn die Sprache des Benutzers nicht festgelegt ist, wird diese bevorzugte Sprache verwendet.",
|
||||
"addLanguage": "Sprache hinzufügen",
|
||||
"languageCodeDes": "Bitte wählen Sie die Sprache aus, die Sie hinzufügen möchten.",
|
||||
"emailSubject": "E-Mail-Betreff",
|
||||
|
|
|
|||
|
|
@ -566,6 +566,10 @@
|
|||
"quotaExceededEmailTemplateDes": "Email template sent to users when they exceed their storage quota.",
|
||||
"resetPasswordEmailTemplate": "Password reset template",
|
||||
"resetPasswordEmailTemplateDes": "Email template sent to users when they request a password reset.",
|
||||
"preferredLanguage": "Preferred language",
|
||||
"setAsPreferredLanguage": "Set as preferred language",
|
||||
"setAsPreferredLanguageDes": "This language will be used as the default email template if the user's language preference cannot be determined.",
|
||||
"alreadyAsPreferredLanguageDes": "This language is already set as the preferred language. If the user's language preference cannot be determined, this email template will be used.",
|
||||
"addLanguage": "Add language",
|
||||
"languageCodeDes": "Please select the language you want to add.",
|
||||
"emailSubject": "Email saveChanges",
|
||||
|
|
|
|||
|
|
@ -567,6 +567,10 @@
|
|||
"quotaExceededEmailTemplateDes": "Plantilla de email enviada a los usuarios cuando exceden su cuota de almacenamiento.",
|
||||
"resetPasswordEmailTemplate": "Plantilla de restablecimiento de contraseña",
|
||||
"resetPasswordEmailTemplateDes": "Plantilla de email enviada a los usuarios cuando solicitan un restablecimiento de contraseña.",
|
||||
"preferredLanguage": "Idioma preferido",
|
||||
"setAsPreferredLanguage": "Establecer como idioma preferido",
|
||||
"setAsPreferredLanguageDes": "Si no se puede obtener la preferencia de idioma del usuario, se utilizará la plantilla de correo electrónico del idioma preferido.",
|
||||
"alreadyAsPreferredLanguageDes": "El idioma actual ya está establecido como preferido. Si no se puede obtener la preferencia de idioma del usuario, se utilizará esta plantilla de correo electrónico.",
|
||||
"addLanguage": "Agregar idioma",
|
||||
"languageCodeDes": "Por favor selecciona el idioma que quieres agregar.",
|
||||
"emailSubject": "Asunto del email",
|
||||
|
|
|
|||
|
|
@ -567,6 +567,10 @@
|
|||
"quotaExceededEmailTemplateDes": "Modèle d'e-mail envoyé aux utilisateurs lorsqu'ils dépassent leur quota de stockage.",
|
||||
"resetPasswordEmailTemplate": "Modèle de réinitialisation de mot de passe",
|
||||
"resetPasswordEmailTemplateDes": "Modèle d'e-mail envoyé aux utilisateurs lorsqu'ils demandent une réinitialisation de mot de passe.",
|
||||
"preferredLanguage": "Langue préférée",
|
||||
"setAsPreferredLanguage": "Définir comme langue préférée",
|
||||
"setAsPreferredLanguageDes": "Si la préférence de langue de l'utilisateur ne peut pas être obtenue, le modèle d'e-mail de la langue préférée sera utilisé.",
|
||||
"alreadyAsPreferredLanguageDes": "La langue actuelle est déjà définie comme langue préférée. Si la préférence de langue de l'utilisateur ne peut pas être obtenue, ce modèle d'e-mail sera utilisé.",
|
||||
"addLanguage": "Ajouter une langue",
|
||||
"languageCodeDes": "Veuillez sélectionner la langue que vous souhaitez ajouter.",
|
||||
"emailSubject": "Sujet de l'e-mail",
|
||||
|
|
|
|||
|
|
@ -567,6 +567,10 @@
|
|||
"quotaExceededEmailTemplateDes": "Template email inviato agli utenti quando superano la loro quota di archiviazione.",
|
||||
"resetPasswordEmailTemplate": "Template reset password",
|
||||
"resetPasswordEmailTemplateDes": "Template email inviato agli utenti quando richiedono un reset della password.",
|
||||
"preferredLanguage": "Lingua preferita",
|
||||
"setAsPreferredLanguage": "Imposta come lingua preferita",
|
||||
"setAsPreferredLanguageDes": "Se non è possibile ottenere le preferenze linguistiche dell'utente, verrà utilizzato il template email della lingua preferita.",
|
||||
"alreadyAsPreferredLanguageDes": "La lingua corrente è già impostata come preferita. Se non è possibile ottenere le preferenze linguistiche dell'utente, verrà utilizzato il template email della lingua corrente.",
|
||||
"addLanguage": "Aggiungi lingua",
|
||||
"languageCodeDes": "Seleziona la lingua che vuoi aggiungere.",
|
||||
"emailSubject": "Oggetto email",
|
||||
|
|
|
|||
|
|
@ -566,6 +566,10 @@
|
|||
"quotaExceededEmailTemplateDes": "ユーザーがストレージクォータを超過した際にユーザーに送信されるメールテンプレート。",
|
||||
"resetPasswordEmailTemplate": "パスワードリセットテンプレート",
|
||||
"resetPasswordEmailTemplateDes": "ユーザーがパスワードのリセットを要求した際にユーザーに送信されるメールテンプレート。",
|
||||
"preferredLanguage": "優先言語",
|
||||
"setAsPreferredLanguage": "優先言語に設定",
|
||||
"setAsPreferredLanguageDes": "ユーザーの言語設定が取得できない場合、優先言語のメールテンプレートが使用されます。",
|
||||
"alreadyAsPreferredLanguageDes": "現在の言語は既に優先言語として設定されています。ユーザーの言語設定が取得できない場合、優先言語のメールテンプレートが使用されます。",
|
||||
"addLanguage": "言語を追加",
|
||||
"languageCodeDes": "追加する言語を選択してください。",
|
||||
"emailSubject": "メール件名",
|
||||
|
|
|
|||
|
|
@ -566,6 +566,10 @@
|
|||
"quotaExceededEmailTemplateDes": "사용자가 저장 할당량을 초과할 때 보내는 이메일 템플릿",
|
||||
"resetPasswordEmailTemplate": "비밀번호 재설정 템플릿",
|
||||
"resetPasswordEmailTemplateDes": "사용자가 비밀번호 재설정을 요청할 때 보내는 이메일 템플릿",
|
||||
"preferredLanguage": "선호 언어",
|
||||
"setAsPreferredLanguage": "선호 언어로 설정",
|
||||
"setAsPreferredLanguageDes": "사용자의 언어 선호도를 가져올 수 없는 경우 선호 언어의 이메일 템플릿이 사용됩니다.",
|
||||
"alreadyAsPreferredLanguageDes": "현재 언어가 선호 언어로 설정되어 있습니다. 사용자의 언어 선호도를 가져올 수 없는 경우 이 이메일 템플릿이 사용됩니다.",
|
||||
"addLanguage": "언어 추가",
|
||||
"languageCodeDes": "추가할 언어를 선택해 주세요.",
|
||||
"emailSubject": "이메일 제목",
|
||||
|
|
|
|||
|
|
@ -567,6 +567,10 @@
|
|||
"quotaExceededEmailTemplateDes": "Modelo de email enviado aos usuários quando excedem sua cota de armazenamento.",
|
||||
"resetPasswordEmailTemplate": "Modelo de redefinição de senha",
|
||||
"resetPasswordEmailTemplateDes": "Modelo de email enviado aos usuários quando solicitam redefinição de senha.",
|
||||
"preferredLanguage": "Idioma preferido",
|
||||
"setAsPreferredLanguage": "Definir como idioma preferido",
|
||||
"setAsPreferredLanguageDes": "Se o idioma preferido do usuário não puder ser obtido, o modelo de email deste idioma será usado.",
|
||||
"alreadyAsPreferredLanguageDes": "O idioma atual já está definido como preferido. Se o idioma preferido do usuário não puder ser obtido, o modelo de email deste idioma será usado.",
|
||||
"addLanguage": "Adicionar idioma",
|
||||
"languageCodeDes": "Selecione o idioma que deseja adicionar.",
|
||||
"emailSubject": "Assunto do email",
|
||||
|
|
|
|||
|
|
@ -567,6 +567,10 @@
|
|||
"quotaExceededEmailTemplateDes": "Шаблон электронного письма, отправляемого пользователю при превышении квоты хранилища.",
|
||||
"resetPasswordEmailTemplate": "Шаблон сброса пароля",
|
||||
"resetPasswordEmailTemplateDes": "Шаблон электронного письма, отправляемого пользователю при запросе сброса пароля.",
|
||||
"preferredLanguage": "Предпочитаемый язык",
|
||||
"setAsPreferredLanguage": "Установить как предпочитаемый язык",
|
||||
"setAsPreferredLanguageDes": "Если язык пользователя не может быть определен, будет использоваться предпочитаемый язык.",
|
||||
"alreadyAsPreferredLanguageDes": "Этот язык уже установлен как предпочитаемый. Если язык пользователя не может быть определен, будет использоваться этот шаблон письма.",
|
||||
"addLanguage": "Добавить язык",
|
||||
"languageCodeDes": "Пожалуйста, выберите язык для добавления.",
|
||||
"emailSubject": "Тема письма",
|
||||
|
|
|
|||
|
|
@ -566,6 +566,10 @@
|
|||
"quotaExceededEmailTemplateDes": "当用户超出存储配额时发送给用户的邮件模板。",
|
||||
"resetPasswordEmailTemplate": "密码重置模板",
|
||||
"resetPasswordEmailTemplateDes": "当用户请求重置密码时发送给用户的邮件模板。",
|
||||
"preferredLanguage": "首选语言",
|
||||
"setAsPreferredLanguage": "设为首选语言",
|
||||
"setAsPreferredLanguageDes": "如果无法获取用户的语言偏好,将使用首选语言的邮件模板。",
|
||||
"alreadyAsPreferredLanguageDes": "当前语言已设为首选语言。如果无法获取用户的语言偏好,将使用此邮件模板。",
|
||||
"addLanguage": "添加语言",
|
||||
"languageCodeDes": "请选择要添加的语言。",
|
||||
"emailSubject": "邮件主题",
|
||||
|
|
|
|||
|
|
@ -566,6 +566,10 @@
|
|||
"quotaExceededEmailTemplateDes": "當使用者超出儲存配額時傳送給使用者的郵件模板。",
|
||||
"resetPasswordEmailTemplate": "密碼重置模板",
|
||||
"resetPasswordEmailTemplateDes": "當使用者請求重置密碼時傳送給使用者的郵件模板。",
|
||||
"preferredLanguage": "首選語言",
|
||||
"setAsPreferredLanguage": "設為首選語言",
|
||||
"setAsPreferredLanguageDes": "如果無法獲取使用者的語言偏好,將使用首選語言的郵件模板。",
|
||||
"alreadyAsPreferredLanguageDes": "當前語言已設為首選語言。如果無法獲取使用者的語言偏好,將使用此郵件模板。",
|
||||
"addLanguage": "新增語言",
|
||||
"languageCodeDes": "請選擇要新增的語言。",
|
||||
"emailSubject": "郵件主題",
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
import { Add } from "@mui/icons-material";
|
||||
import {
|
||||
Box,
|
||||
Button,
|
||||
|
|
@ -15,7 +14,8 @@ import React, { lazy, Suspense, useCallback, useEffect, useRef, useState } from
|
|||
import { Trans, useTranslation } from "react-i18next";
|
||||
import { languages } from "../../../../i18n.ts";
|
||||
import CircularProgress from "../../../Common/CircularProgress.tsx";
|
||||
import { DenseFilledTextField, DenseSelect } from "../../../Common/StyledComponents.tsx";
|
||||
import { DenseFilledTextField, DenseSelect, SecondaryButton } from "../../../Common/StyledComponents.tsx";
|
||||
import Add from "../../../Icons/Add";
|
||||
import DraggableDialog from "../../../Dialogs/DraggableDialog.tsx";
|
||||
import { SquareMenuItem } from "../../../FileManager/ContextMenu/ContextMenu.tsx";
|
||||
import SettingForm from "../../../Pages/Setting/SettingForm.tsx";
|
||||
|
|
@ -57,6 +57,9 @@ const EmailTemplateEditor: React.FC<EmailTemplateEditorProps> = ({ value, onChan
|
|||
if (parsedTemplates.length === 0) {
|
||||
setTemplates([{ language: "en-US", title: "", body: "" }]);
|
||||
}
|
||||
if (currentTab > parsedTemplates.length) {
|
||||
setCurrentTab(0);
|
||||
}
|
||||
} catch (e) {
|
||||
console.error("Failed to parse email template:", e);
|
||||
setTemplates([{ language: "en-US", title: "", body: "" }]);
|
||||
|
|
@ -114,6 +117,12 @@ const EmailTemplateEditor: React.FC<EmailTemplateEditorProps> = ({ value, onChan
|
|||
setCurrentTab(templates.length);
|
||||
};
|
||||
|
||||
const setPreferredLanguage = (index: number) => {
|
||||
isUpdatingFromProp.current = false; // Ensure this is a user interaction
|
||||
setTemplates([templates[index], ...templates.filter((_, i) => i !== index)]);
|
||||
setCurrentTab(0); // Switch to the first tab as the preferred language is now at the top
|
||||
};
|
||||
|
||||
const openMagicVar = useCallback((e: React.MouseEvent<HTMLElement>) => {
|
||||
setMagicVarOpen(true);
|
||||
e.stopPropagation();
|
||||
|
|
@ -154,6 +163,23 @@ const EmailTemplateEditor: React.FC<EmailTemplateEditorProps> = ({ value, onChan
|
|||
>
|
||||
{currentTab === index && (
|
||||
<Box>
|
||||
<FormControl fullWidth sx={{ mb: 2 }}>
|
||||
<Typography variant="subtitle2" sx={{ mb: 1 }}>
|
||||
{t("settings.preferredLanguage")}
|
||||
</Typography>
|
||||
<Box>
|
||||
<SecondaryButton
|
||||
variant="contained"
|
||||
onClick={() => (index === 0 ? undefined : setPreferredLanguage(index))}
|
||||
>
|
||||
{t("settings.setAsPreferredLanguage")}
|
||||
</SecondaryButton>
|
||||
</Box>
|
||||
<NoMarginHelperText>
|
||||
{t(index === 0 ? "settings.alreadyAsPreferredLanguageDes" : "settings.setAsPreferredLanguageDes")}
|
||||
</NoMarginHelperText>
|
||||
</FormControl>
|
||||
|
||||
<FormControl fullWidth sx={{ mb: 2 }}>
|
||||
<Typography variant="subtitle2" sx={{ mb: 1 }}>
|
||||
{t("settings.emailSubject")}
|
||||
|
|
@ -242,4 +268,4 @@ const EmailTemplateEditor: React.FC<EmailTemplateEditorProps> = ({ value, onChan
|
|||
);
|
||||
};
|
||||
|
||||
export default EmailTemplateEditor;
|
||||
export default EmailTemplateEditor;
|
||||
|
|
|
|||
Loading…
Reference in New Issue