diff --git a/components.d.ts b/components.d.ts index b57b28a7..bb5c1fd7 100644 --- a/components.d.ts +++ b/components.d.ts @@ -160,6 +160,7 @@ declare module '@vue/runtime-core' { RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] RsaKeyPairGenerator: typeof import('./src/tools/rsa-key-pair-generator/rsa-key-pair-generator.vue')['default'] + SafelinkDecoder: typeof import('./src/tools/safelink-decoder/safelink-decoder.vue')['default'] SlugifyString: typeof import('./src/tools/slugify-string/slugify-string.vue')['default'] SpanCopyable: typeof import('./src/components/SpanCopyable.vue')['default'] SqlPrettify: typeof import('./src/tools/sql-prettify/sql-prettify.vue')['default'] diff --git a/index.html b/index.html index b04c2d12..e8b8a60e 100644 --- a/index.html +++ b/index.html @@ -44,13 +44,6 @@ /> -
diff --git a/src/tools/safelink-decoder/index.ts b/src/tools/safelink-decoder/index.ts index ef865108..6acd6964 100644 --- a/src/tools/safelink-decoder/index.ts +++ b/src/tools/safelink-decoder/index.ts @@ -1,10 +1,11 @@ import { Mailbox } from '@vicons/tabler'; import { defineTool } from '../tool'; +import { translate as t } from '@/plugins/i18n.plugin'; export const tool = defineTool({ - name: 'Outlook Safelink decoder', + name: t('tools.safelink-decoder.title'), path: '/safelink-decoder', - description: 'Decode Outlook SafeLink links', + description: t('tools.safelink-decoder.description'), keywords: ['outlook', 'safelink', 'decoder'], component: () => import('./safelink-decoder.vue'), icon: Mailbox, diff --git a/src/tools/safelink-decoder/locales/en.yml b/src/tools/safelink-decoder/locales/en.yml new file mode 100644 index 00000000..155f7796 --- /dev/null +++ b/src/tools/safelink-decoder/locales/en.yml @@ -0,0 +1,10 @@ +tools: + safelink-decoder: + title: Outlook Safelink decoder + description: Decode Outlook SafeLink links + + inputLabel: 'Your input Outlook SafeLink Url:' + inputPlaceholder: Your input Outlook SafeLink Url... + outputLabel: 'Output decoded URL:' + + invalidMessage: Invalid SafeLinks URL provided diff --git a/src/tools/safelink-decoder/locales/zh.yml b/src/tools/safelink-decoder/locales/zh.yml new file mode 100644 index 00000000..827dbcb4 --- /dev/null +++ b/src/tools/safelink-decoder/locales/zh.yml @@ -0,0 +1,10 @@ +tools: + safelink-decoder: + title: Outlook 安全链接解码器 + description: 解码 Outlook 安全链接 + + inputLabel: '您的输入 Outlook 安全链接:' + inputPlaceholder: 您的输入 Outlook 安全链接... + outputLabel: '解码后的 URL:' + + invalidMessage: 提供的安全链接无效 diff --git a/src/tools/safelink-decoder/safelink-decoder.service.ts b/src/tools/safelink-decoder/safelink-decoder.service.ts index 96be00ab..67bc1027 100644 --- a/src/tools/safelink-decoder/safelink-decoder.service.ts +++ b/src/tools/safelink-decoder/safelink-decoder.service.ts @@ -1,6 +1,8 @@ +import { translate as t } from '@/plugins/i18n.plugin'; + export function decodeSafeLinksURL(safeLinksUrl: string) { if (!safeLinksUrl.match(/\.safelinks\.protection\.outlook\.com/)) { - throw new Error('Invalid SafeLinks URL provided'); + throw new Error(t('tools.safelink-decoder.invalidMessage')); } return new URL(safeLinksUrl).searchParams.get('url'); diff --git a/src/tools/safelink-decoder/safelink-decoder.vue b/src/tools/safelink-decoder/safelink-decoder.vue index 01337eb2..5b954f61 100644 --- a/src/tools/safelink-decoder/safelink-decoder.vue +++ b/src/tools/safelink-decoder/safelink-decoder.vue @@ -2,6 +2,7 @@ import { decodeSafeLinksURL } from './safelink-decoder.service'; import TextareaCopyable from '@/components/TextareaCopyable.vue'; +const { t } = useI18n(); const inputSafeLinkUrl = ref(''); const outputDecodedUrl = computed(() => { try { @@ -18,14 +19,14 @@ const outputDecodedUrl = computed(() => { - +