diff --git a/locales/en-US.yml b/locales/en-US.yml
index 668ef2c18f..b7fc45cb34 100644
--- a/locales/en-US.yml
+++ b/locales/en-US.yml
@@ -173,6 +173,7 @@ pinnedNote: "Pinned note"
pinned: "Pin to profile"
you: "You"
clickToShow: "Click to show"
+doubleClickToShow: "Double click to show"
sensitive: "Sensitive"
add: "Add"
reaction: "Reactions"
diff --git a/locales/index.d.ts b/locales/index.d.ts
index b6cda74ef5..4ca0c57ad8 100644
--- a/locales/index.d.ts
+++ b/locales/index.d.ts
@@ -176,6 +176,7 @@ export interface Locale {
"pinned": string;
"you": string;
"clickToShow": string;
+ "doubleClickToShow": string;
"sensitive": string;
"add": string;
"reaction": string;
diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index a7ee81b8bd..c79007061d 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -173,6 +173,7 @@ pinnedNote: "ピン留めされたノート"
pinned: "ピン留め"
you: "あなた"
clickToShow: "クリックして表示"
+doubleClickToShow: "ダブルクリックして表示"
sensitive: "センシティブ"
add: "追加"
reaction: "リアクション"
diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml
index a9a7292751..24ac1f5cd9 100644
--- a/locales/ko-KR.yml
+++ b/locales/ko-KR.yml
@@ -173,6 +173,7 @@ pinnedNote: "고정해놓은 노트"
pinned: "프로필에 고정"
you: "나"
clickToShow: "클릭하여 보기"
+doubleClickToShow: "두 번 탭하여 보기"
sensitive: "열람 주의"
add: "추가"
reaction: "리액션"
diff --git a/packages/frontend/src/components/MkMediaImage.vue b/packages/frontend/src/components/MkMediaImage.vue
index 1dc15b2c8c..8c43fd2ca8 100644
--- a/packages/frontend/src/components/MkMediaImage.vue
+++ b/packages/frontend/src/components/MkMediaImage.vue
@@ -38,7 +38,7 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts.sensitive }}{{ defaultStore.state.enableDataSaverMode ? ` (${i18n.ts.image}${image.size ? ' ' + bytes(image.size) : ''})` : '' }}
{{ defaultStore.state.enableDataSaverMode && image.size ? bytes(image.size) : i18n.ts.image }}
- {{ i18n.ts.clickToShow }}
+ {{ clickToShowMessage }}
@@ -91,6 +91,12 @@ const url = $computed(() => (props.raw || defaultStore.state.loadRawImages)
: props.image.thumbnailUrl,
);
+let clickToShowMessage = $computed(() =>
+ defaultStore.state.nsfwOpenBehavior === 'click' ? i18n.ts.clickToShow
+ : defaultStore.state.nsfwOpenBehavior === 'doubleClick' ? i18n.ts.doubleClickToShow
+ : ''
+);
+
function onClick(ev: MouseEvent) {
if (!props.controls) {
return;
diff --git a/packages/frontend/src/components/MkMediaVideo.vue b/packages/frontend/src/components/MkMediaVideo.vue
index e3bf3d247d..7348da4862 100644
--- a/packages/frontend/src/components/MkMediaVideo.vue
+++ b/packages/frontend/src/components/MkMediaVideo.vue
@@ -9,7 +9,7 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts.sensitive }}{{ defaultStore.state.enableDataSaverMode ? ` (${i18n.ts.video}${video.size ? ' ' + bytes(video.size) : ''})` : '' }}
{{ defaultStore.state.enableDataSaverMode && video.size ? bytes(video.size) : i18n.ts.video }}
- {{ i18n.ts.clickToShow }}
+ {{ clickToShowMessage }}
@@ -46,6 +46,12 @@ const props = defineProps<{
const hide = ref((defaultStore.state.nsfw === 'force' || defaultStore.state.enableDataSaverMode) ? true : (props.video.isSensitive && defaultStore.state.nsfw !== 'ignore'));
+let clickToShowMessage = $computed(() =>
+ defaultStore.state.nsfwOpenBehavior === 'click' ? i18n.ts.clickToShow
+ : defaultStore.state.nsfwOpenBehavior === 'doubleClick' ? i18n.ts.doubleClickToShow
+ : ''
+);
+
function onClick(ev: MouseEvent) {
if (!hide.value) return;
if (defaultStore.state.nsfwOpenBehavior === 'doubleClick') {