diff --git a/web/src/components/CreateShortcutDialog.tsx b/web/src/components/CreateShortcutDialog.tsx index f711a159b..eb663622b 100644 --- a/web/src/components/CreateShortcutDialog.tsx +++ b/web/src/components/CreateShortcutDialog.tsx @@ -167,6 +167,7 @@ const MemoFilterInputer: React.FC = (props: MemoFilterIn const tags = Array.from(memoStore.getState().tags); const { type } = filter; + const typeDataSource = Object.values(filterConsts).map(({ text, value }) => ({ text: t(text), value })); const operatorDataSource = Object.values(filterConsts[type as FilterType].operators).map(({ text, value }) => ({ text: t(text), value })); const valueDataSource = @@ -247,12 +248,7 @@ const MemoFilterInputer: React.FC = (props: MemoFilterIn handleValueChanged={handleRelationChange} /> ) : null} - + = (props: Props) => { const handleCopyResourceLinkBtnClick = (resource: Resource) => { copy(`${window.location.origin}/o/r/${resource.id}/${resource.filename}`); - toastHelper.success("Succeed to copy resource link to clipboard"); + toastHelper.success(t("message.succeed-copy-resource-link")); }; const handleDeleteUnusedResourcesBtnClick = () => { @@ -185,7 +185,7 @@ const ResourcesDialog: React.FC = (props: Props) => {
ID - NAME + {t("resources.name")}
{resources.length === 0 ? ( diff --git a/web/src/components/ResourcesSelectorDialog.tsx b/web/src/components/ResourcesSelectorDialog.tsx index c1fa300d9..afc519e8e 100644 --- a/web/src/components/ResourcesSelectorDialog.tsx +++ b/web/src/components/ResourcesSelectorDialog.tsx @@ -99,7 +99,7 @@ const ResourcesSelectorDialog: React.FC = (props: Props) => {
ID - NAME + {t("resources.name")}
{resources.length === 0 ? ( diff --git a/web/src/components/Settings/SystemSection.tsx b/web/src/components/Settings/SystemSection.tsx index 345a6ad7c..1c47bf026 100644 --- a/web/src/components/Settings/SystemSection.tsx +++ b/web/src/components/Settings/SystemSection.tsx @@ -77,7 +77,7 @@ const SystemSection = () => { console.error(error); return; } - toastHelper.success("Succeed to vacuum database"); + toastHelper.success(t("message.succeed-vacuum-database")); }; const handleSaveAdditionalStyle = async () => { @@ -90,7 +90,7 @@ const SystemSection = () => { console.error(error); return; } - toastHelper.success("Succeed to update additional style"); + toastHelper.success(t("message.succeed-update-additional-style")); }; const handleAdditionalScriptChanged = (value: string) => { @@ -110,7 +110,7 @@ const SystemSection = () => { console.error(error); return; } - toastHelper.success("Succeed to update additional script"); + toastHelper.success(t("message.succeed-update-additional-script")); }; return ( @@ -118,9 +118,9 @@ const SystemSection = () => {

{t("common.basic")}

- Server name: {systemStatus.customizedProfile.name} + {t("setting.system-section.server-name")}: {systemStatus.customizedProfile.name}
- +
diff --git a/web/src/components/UpdateAccountDialog.tsx b/web/src/components/UpdateAccountDialog.tsx index a2ba6156d..abd99dd46 100644 --- a/web/src/components/UpdateAccountDialog.tsx +++ b/web/src/components/UpdateAccountDialog.tsx @@ -92,7 +92,7 @@ const UpdateAccountDialog: React.FC = ({ destroy }: Props) => { userPatch.email = state.email; } await userStore.patchUser(userPatch); - toastHelper.info("Update succeed"); + toastHelper.info(t("message.update-succeed")); handleCloseBtnClick(); } catch (error: any) { console.error(error); diff --git a/web/src/components/UpdateCustomizedProfileDialog.tsx b/web/src/components/UpdateCustomizedProfileDialog.tsx index 2650a91a0..b189df4c9 100644 --- a/web/src/components/UpdateCustomizedProfileDialog.tsx +++ b/web/src/components/UpdateCustomizedProfileDialog.tsx @@ -55,24 +55,25 @@ const UpdateCustomizedProfileDialog: React.FC = ({ destroy }: Props) => { console.error(error); return; } - toastHelper.success("Succeed to update customized profile"); + toastHelper.success(t("message.succeed-update-customized-profile")); destroy(); }; return ( <>
-

Customize server

+

{t("setting.system-section.customize-server.title")}

- Server Name(Default is memos) + {t("setting.system-section.server-name")} + ({t("setting.system-section.customize-server.default")})

-

Icon URL

+

{t("setting.system-section.customize-server.icon-url")}

diff --git a/web/src/components/common/Selector.tsx b/web/src/components/common/Selector.tsx index 63d69f908..c9aa14334 100644 --- a/web/src/components/common/Selector.tsx +++ b/web/src/components/common/Selector.tsx @@ -17,7 +17,7 @@ interface Props { } const nullItem = { - text: "Select", + text: "common.select", value: "", }; @@ -28,7 +28,7 @@ const Selector: React.FC = (props: Props) => { const selectorElRef = useRef(null); - let currentItem = nullItem; + let currentItem = { text: t(nullItem.text), value: nullItem.value }; for (const d of dataSource) { if (d.value === value) { currentItem = d; diff --git a/web/src/helpers/filter.ts b/web/src/helpers/filter.ts index 4722e76dd..d3538b9f3 100644 --- a/web/src/helpers/filter.ts +++ b/web/src/helpers/filter.ts @@ -8,7 +8,7 @@ export const relationConsts = [ export const filterConsts = { TAG: { - text: "Tag", + text: "filter.type.tag", value: "TAG", operators: [ { @@ -22,7 +22,7 @@ export const filterConsts = { ], }, TYPE: { - text: "Type", + text: "filter.type.type", value: "TYPE", operators: [ { @@ -46,7 +46,7 @@ export const filterConsts = { ], }, TEXT: { - text: "Text", + text: "filter.type.text", value: "TEXT", operators: [ { @@ -60,7 +60,7 @@ export const filterConsts = { ], }, DISPLAY_TIME: { - text: "Display Time", + text: "filter.type.display-time", value: "DISPLAY_TIME", operators: [ { @@ -74,7 +74,7 @@ export const filterConsts = { ], }, VISIBILITY: { - text: "Visibility", + text: "filter.type.visibility", value: "VISIBILITY", operators: [ { diff --git a/web/src/locales/de.json b/web/src/locales/de.json index 234d031b3..a326f817e 100644 --- a/web/src/locales/de.json +++ b/web/src/locales/de.json @@ -46,7 +46,8 @@ "expand": "Erweitern", "image": "Bild", "link": "Link", - "vacuum": "Vacuum" + "vacuum": "Vacuum", + "select": "Select" }, "slogan": "Eine quelloffene, selbst gehostete Sammlung an Memos zur Wissensverwaltung und Vernetzung.", "auth": { @@ -76,7 +77,8 @@ "rename": "Umbenennen", "clear-unused-resources": "Lösche ungenutzte Ressourcen", "warning-text-unused": "Möchtest du diese ungenutzte Ressource wirklich löschen? Dies kann nicht rückgängig gemacht werden❗", - "no-unused-resources": "Keine ungenutzten Ressourcen" + "no-unused-resources": "Keine ungenutzten Ressourcen", + "name": "Name" }, "archived": { "archived-memos": "Archivierte Memos", @@ -117,6 +119,13 @@ }, "filter": { "new-filter": "Neuer Filter", + "type": { + "tag": "Tag", + "type": "Type", + "text": "Text", + "display-time": "Display Time", + "visibility": "Visibility" + }, "operator": { "contains": "enthält", "not-contains": "enthält nicht", @@ -162,6 +171,12 @@ "create-a-member": "Mitglied hinzufügen" }, "system-section": { + "server-name": "Server Name", + "customize-server": { + "title": "Customize Server", + "default": "Default is memos", + "icon-url": "Icon URL" + }, "database-file-size": "Dateigröße der Datenbank", "allow-user-signup": "Erlaube Registrierungen für neue Mitglieder", "additional-style": "Zusätzlicher Style", @@ -210,6 +225,12 @@ "too-short": "Zu kurz", "too-long": "Zu lang", "not-allow-space": "Keine Leerzeichen erlaubt", - "not-allow-chinese": "Keine chinesischen Zeichen erlaubt" + "not-allow-chinese": "Keine chinesischen Zeichen erlaubt", + "succeed-vacuum-database": "Succeed to vacuum database", + "succeed-update-additional-style": "Succeed to update additional style", + "succeed-copy-resource-link": "Succeed to copy resource link to clipboard", + "succeed-update-customized-profile": "Succeed to update customized profile", + "succeed-update-additional-script": "Succeed to update additional script", + "update-succeed": "Update succeed" } } diff --git a/web/src/locales/en.json b/web/src/locales/en.json index 00a95cde2..654306d60 100644 --- a/web/src/locales/en.json +++ b/web/src/locales/en.json @@ -46,7 +46,8 @@ "expand": "Expand", "image": "Image", "link": "Link", - "vacuum": "Vacuum" + "vacuum": "Vacuum", + "select": "Select" }, "slogan": "An open-source, self-hosted memo hub with knowledge management and socialization.", "auth": { @@ -76,7 +77,8 @@ "rename": "Rename", "clear-unused-resources": "Clear unused resources", "warning-text-unused": "Are you sure to delete these unused resource? THIS ACTION IS IRREVERSIABLE❗", - "no-unused-resources": "No unused resources" + "no-unused-resources": "No unused resources", + "name": "Name" }, "archived": { "archived-memos": "Archived Memos", @@ -117,6 +119,13 @@ }, "filter": { "new-filter": "New Filter", + "type": { + "tag": "Tag", + "type": "Type", + "text": "Text", + "display-time": "Display Time", + "visibility": "Visibility" + }, "operator": { "contains": "Contains", "not-contains": "Does not contain", @@ -162,6 +171,12 @@ "create-a-member": "Create a member" }, "system-section": { + "server-name": "Server Name", + "customize-server": { + "title": "Customize Server", + "default": "Default is memos", + "icon-url": "Icon URL" + }, "database-file-size": "Database File Size", "allow-user-signup": "Allow user signup", "additional-style": "Additional style", @@ -210,6 +225,12 @@ "too-short": "Too short", "too-long": "Too long", "not-allow-space": "Don't allow space", - "not-allow-chinese": "Don't allow chinese" + "not-allow-chinese": "Don't allow chinese", + "succeed-vacuum-database": "Succeed to vacuum database", + "succeed-update-additional-style": "Succeed to update additional style", + "succeed-copy-resource-link": "Succeed to copy resource link to clipboard", + "succeed-update-customized-profile": "Succeed to update customized profile", + "succeed-update-additional-script": "Succeed to update additional script", + "update-succeed": "Update succeed" } } diff --git a/web/src/locales/es.json b/web/src/locales/es.json index af1ad9e2e..f53d026e2 100644 --- a/web/src/locales/es.json +++ b/web/src/locales/es.json @@ -46,7 +46,8 @@ "expand": "Expandir", "image": "Imagen", "link": "Enlace", - "vacuum": "Vaciar" + "vacuum": "Vaciar", + "select": "Select" }, "slogan": "Un código abierto, centro de notas autoalojado con la gestión del conocimiento y la socialización.", "auth": { @@ -76,7 +77,8 @@ "rename": "Renombrar", "clear-unused-resources": "Borrar los recursos no utilizados", "warning-text-unused": "Seguro que quieres eliminar estos recursos no utilizados? ESTA ACCIÓN ES IRREVERSIBLE❗.", - "no-unused-resources": "No hay recursos sin utilizar" + "no-unused-resources": "No hay recursos sin utilizar", + "name": "Name" }, "archived": { "archived-memos": "Notas Archivadas", @@ -117,6 +119,13 @@ }, "filter": { "new-filter": "Nuevo Filtro", + "type": { + "tag": "Tag", + "type": "Type", + "text": "Text", + "display-time": "Display Time", + "visibility": "Visibility" + }, "operator": { "contains": "Contiene", "not-contains": "No contiene", @@ -162,6 +171,12 @@ "create-a-member": "Crear un miembro" }, "system-section": { + "server-name": "Server Name", + "customize-server": { + "title": "Customize Server", + "default": "Default is memos", + "icon-url": "Icon URL" + }, "database-file-size": "Tamaño de la Base de Datos", "allow-user-signup": "Permitir el registro de usuarios", "additional-style": "Estilo adicional", @@ -210,6 +225,12 @@ "too-short": "Demasiado corto", "too-long": "Demasiado largo", "not-allow-space": "No se admiten espacios", - "not-allow-chinese": "El chino no está permitido" + "not-allow-chinese": "El chino no está permitido", + "succeed-vacuum-database": "Succeed to vacuum database", + "succeed-update-additional-style": "Succeed to update additional style", + "succeed-copy-resource-link": "Succeed to copy resource link to clipboard", + "succeed-update-customized-profile": "Succeed to update customized profile", + "succeed-update-additional-script": "Succeed to update additional script", + "update-succeed": "Update succeed" } } \ No newline at end of file diff --git a/web/src/locales/fr.json b/web/src/locales/fr.json index 29224b681..ac5f8570e 100644 --- a/web/src/locales/fr.json +++ b/web/src/locales/fr.json @@ -46,7 +46,8 @@ "expand": "Développer", "image": "Image", "link": "Link", - "vacuum": "Vacuum" + "vacuum": "Vacuum", + "select": "Select" }, "slogan": "An open-source, self-hosted memo hub with knowledge management and socialization.", "auth": { @@ -76,7 +77,8 @@ "rename": "Renommer", "clear-unused-resources": "Effacer les ressources inutilisées", "warning-text-unused": "Etes-vous sûr de vouloir supprimer ces ressources inutilisées ? CETTE ACTION EST IRRÉVERSIBLE❗", - "no-unused-resources": "Aucune ressource inutilisée" + "no-unused-resources": "Aucune ressource inutilisée", + "name": "Name" }, "archived": { "archived-memos": "Mémos archivés", @@ -117,6 +119,13 @@ }, "filter": { "new-filter": "Nouveau filtre", + "type": { + "tag": "Tag", + "type": "Type", + "text": "Text", + "display-time": "Display Time", + "visibility": "Visibility" + }, "operator": { "contains": "Contient", "not-contains": "Ne contient pas", @@ -162,6 +171,12 @@ "create-a-member": "Créer un membre" }, "system-section": { + "server-name": "Server Name", + "customize-server": { + "title": "Customize Server", + "default": "Default is memos", + "icon-url": "Icon URL" + }, "database-file-size": "Taille de la base de données", "allow-user-signup": "Autoriser l'inscription des utilisateurs", "additional-style": "Style supplémentaire", @@ -205,6 +220,12 @@ "too-short": "Too short", "too-long": "Too long", "not-allow-space": "Don't allow space", - "not-allow-chinese": "Don't allow chinese" + "not-allow-chinese": "Don't allow chinese", + "succeed-vacuum-database": "Succeed to vacuum database", + "succeed-update-additional-style": "Succeed to update additional style", + "succeed-copy-resource-link": "Succeed to copy resource link to clipboard", + "succeed-update-customized-profile": "Succeed to update customized profile", + "succeed-update-additional-script": "Succeed to update additional script", + "update-succeed": "Update succeed" } } diff --git a/web/src/locales/nl.json b/web/src/locales/nl.json index b2fc4c5de..7bc798486 100644 --- a/web/src/locales/nl.json +++ b/web/src/locales/nl.json @@ -72,7 +72,8 @@ "rename": "Hernoemen", "clear-unused-resources": "Ongebruikte bronnen opruimen", "warning-text-unused": "Weet je zeker dat je deze ongebruikte bron wilt verwijderen? Deze actie is NIET terug te draaien!", - "no-unused-resources": "Geen ongebruikte bronnen" + "no-unused-resources": "Geen ongebruikte bronnen", + "name": "Name" }, "archived": { "archived-memos": "Gearchiveerde Memos", @@ -111,6 +112,14 @@ }, "filter": { "new-filter": "Nieuw Filter", + "type": { + "tag": "Tag", + "type": "Type", + "text": "Text", + "display-time": "Display Time", + "visibility": "Visibility", + "select": "Select" + }, "operator": { "contains": "Bevat", "not-contains": "Bevat niet", @@ -156,6 +165,12 @@ "create-a-member": "Lid toevoegen" }, "system-section": { + "server-name": "Server Name", + "customize-server": { + "title": "Customize Server", + "default": "Default is memos", + "icon-url": "Icon URL" + }, "database-file-size": "Database bestandsgrootte", "allow-user-signup": "Registratie toestaan", "additional-style": "Optionele stijl", @@ -197,6 +212,12 @@ "resource-filename-updated": "Bestandsnaam van bron gewijzigd.", "invalid-resource-filename": "Onjuiste bestandsnaam.", "click-to-save-the-image": "Klik om de afbeelding op te slaan", - "generating-the-screenshot": "Screenshot genereren..." + "generating-the-screenshot": "Screenshot genereren...", + "succeed-vacuum-database": "Succeed to vacuum database", + "succeed-update-additional-style": "Succeed to update additional style", + "succeed-copy-resource-link": "Succeed to copy resource link to clipboard", + "succeed-update-customized-profile": "Succeed to update customized profile", + "succeed-update-additional-script": "Succeed to update additional script", + "update-succeed": "Update succeed" } } diff --git a/web/src/locales/sv.json b/web/src/locales/sv.json index bc85aab84..5a868876c 100644 --- a/web/src/locales/sv.json +++ b/web/src/locales/sv.json @@ -46,7 +46,8 @@ "expand": "Expandera", "image": "Bild", "link": "Länk", - "vacuum": "Vacuum" + "vacuum": "Vacuum", + "select": "Select" }, "slogan": "En öppen källkod, self-hosted antecknings hubb med kunskapshantering och socialisering", "auth": { @@ -76,7 +77,8 @@ "rename": "Döp om", "clear-unused-resources": "Rensa outnytjade resurser", "warning-text-unused": "Är du säker på att du vill ta bort dessa oanvända resurser? DENNA ÅTGÄRD ÄR OÅTERSTÄLLBAR❗", - "no-unused-resources": "Inga oanvända resurser" + "no-unused-resources": "Inga oanvända resurser", + "name": "Name" }, "archived": { "archived-memos": "Arkiverade anteckningar", @@ -117,6 +119,13 @@ }, "filter": { "new-filter": "Nytt filter", + "type": { + "tag": "Tag", + "type": "Type", + "text": "Text", + "display-time": "Display Time", + "visibility": "Visibility" + }, "operator": { "contains": "Innehåller", "not-contains": "Innehåller inte", @@ -162,6 +171,12 @@ "create-a-member": "Skapa en medlem" }, "system-section": { + "server-name": "Server Name", + "customize-server": { + "title": "Customize Server", + "default": "Default is memos", + "icon-url": "Icon URL" + }, "database-file-size": "Databas filstorlek", "allow-user-signup": "Tillåt användarregistrering", "additional-style": "Ytterligare stil", @@ -210,6 +225,12 @@ "too-short": "För kort", "too-long": "För långt", "not-allow-space": "Tillåt inte mellanslag", - "not-allow-chinese": "Tillåt inte kinesiska" + "not-allow-chinese": "Tillåt inte kinesiska", + "succeed-vacuum-database": "Succeed to vacuum database", + "succeed-update-additional-style": "Succeed to update additional style", + "succeed-copy-resource-link": "Succeed to copy resource link to clipboard", + "succeed-update-customized-profile": "Succeed to update customized profile", + "succeed-update-additional-script": "Succeed to update additional script", + "update-succeed": "Update succeed" } } diff --git a/web/src/locales/vi.json b/web/src/locales/vi.json index 22d24b9bd..0519b77c4 100644 --- a/web/src/locales/vi.json +++ b/web/src/locales/vi.json @@ -46,7 +46,8 @@ "expand": "Expand", "image": "Image", "link": "Link", - "vacuum": "Vacuum" + "vacuum": "Vacuum", + "select": "Select" }, "slogan": "An open-source, self-hosted memo hub with knowledge management and socialization.", "auth": { @@ -91,7 +92,8 @@ "only-image-supported": "Chỉ hỗ trợ hình ảnh.", "cant-empty": "Nội dung không thể trống", "local": "Local", - "resources": "Resources" + "resources": "Resources", + "name": "Name" }, "memo": { "view-detail": "Xem chi tiết", @@ -117,6 +119,13 @@ }, "filter": { "new-filter": "Bộ lọc mới", + "type": { + "tag": "Tag", + "type": "Type", + "text": "Text", + "display-time": "Display Time", + "visibility": "Visibility" + }, "operator": { "contains": "Chứa", "not-contains": "Không chứa", @@ -161,6 +170,12 @@ "create-a-member": "Tạo thành viên" }, "system-section": { + "server-name": "Server Name", + "customize-server": { + "title": "Customize Server", + "default": "Default is memos", + "icon-url": "Icon URL" + }, "database-file-size": "Kích thước tệp cơ sở dữ liệu", "allow-user-signup": "Cho phép người dùng đăng ký", "additional-style": "Phong cách bổ sung", @@ -204,6 +219,12 @@ "too-short": "Too short", "too-long": "Too long", "not-allow-space": "Don't allow space", - "not-allow-chinese": "Don't allow chinese" + "not-allow-chinese": "Don't allow chinese", + "succeed-vacuum-database": "Succeed to vacuum database", + "succeed-update-additional-style": "Succeed to update additional style", + "succeed-copy-resource-link": "Succeed to copy resource link to clipboard", + "succeed-update-customized-profile": "Succeed to update customized profile", + "succeed-update-additional-script": "Succeed to update additional script", + "update-succeed": "Update succeed" } } diff --git a/web/src/locales/zh.json b/web/src/locales/zh.json index 11c29a5a9..5d6196453 100644 --- a/web/src/locales/zh.json +++ b/web/src/locales/zh.json @@ -46,7 +46,8 @@ "expand": "展开", "image": "图片", "link": "链接", - "vacuum": "清理" + "vacuum": "清理", + "select": "选择" }, "slogan": "An open-source, self-hosted memo hub with knowledge management and socialization.", "auth": { @@ -76,7 +77,8 @@ "rename": "重命名", "clear-unused-resources": "清除无用资源", "warning-text-unused": "确定删除这些无用资源么?此操作不可逆❗", - "no-unused-resources": "无可删除的资源" + "no-unused-resources": "无可删除的资源", + "name": "资源名称" }, "archived": { "archived-memos": "已归档的 Memo", @@ -117,6 +119,13 @@ }, "filter": { "new-filter": "新建过滤器", + "type": { + "tag": "标签", + "type": "类型", + "text": "文本", + "display-time": "显示时间", + "visibility": "可见性" + }, "operator": { "contains": "包含", "not-contains": "不包含", @@ -162,6 +171,12 @@ "create-a-member": "创建成员" }, "system-section": { + "server-name": "服务名称", + "customize-server": { + "title": "自定义服务", + "default": "默认为 memos", + "icon-url": "图标 URL" + }, "database-file-size": "数据库文件大小", "allow-user-signup": "允许用户注册", "additional-style": "自定义样式", @@ -210,6 +225,12 @@ "too-short": "过短", "too-long": "过长", "not-allow-space": "不允许包含空格", - "not-allow-chinese": "不允许包含中文" + "not-allow-chinese": "不允许包含中文", + "succeed-to-vacuum-database": "清空数据库成功", + "succeed-update-additional-style": "更新附加样式成功", + "succeed-copy-resource-link": "复制资源链接到剪贴板成功", + "succeed-update-customized-profile": "更新自定义配置文件成功", + "succeed-update-additional-script": "更新附加脚本成功", + "update-succeed": "更新成功" } }