From 49fdcf78370945ff0246922245dc76242c446b74 Mon Sep 17 00:00:00 2001
From: Lim Chee Aun <cheeaun@gmail.com>
Date: Sun, 1 Oct 2023 14:39:44 +0800
Subject: [PATCH] Show Translate button when different lang inside alt modal

---
 src/components/media-alt-modal.jsx | 25 +++++++++++++++++++++++--
 src/components/status.jsx          |  2 +-
 2 files changed, 24 insertions(+), 3 deletions(-)

diff --git a/src/components/media-alt-modal.jsx b/src/components/media-alt-modal.jsx
index 09f94db4..aa2cc042 100644
--- a/src/components/media-alt-modal.jsx
+++ b/src/components/media-alt-modal.jsx
@@ -1,11 +1,28 @@
 import { Menu, MenuItem } from '@szhsin/react-menu';
 import { useState } from 'preact/hooks';
+import { useSnapshot } from 'valtio';
+
+import getTranslateTargetLanguage from '../utils/get-translate-target-language';
+import localeMatch from '../utils/locale-match';
+import states from '../utils/states';
 
 import Icon from './icon';
 import TranslationBlock from './translation-block';
 
 export default function MediaAltModal({ alt, lang, onClose }) {
+  const snapStates = useSnapshot(states);
   const [forceTranslate, setForceTranslate] = useState(false);
+  const targetLanguage = getTranslateTargetLanguage(true);
+  const contentTranslationHideLanguages =
+    snapStates.settings.contentTranslationHideLanguages || [];
+  const differentLanguage =
+    !!lang &&
+    lang !== targetLanguage &&
+    !localeMatch([lang], [targetLanguage]) &&
+    !contentTranslationHideLanguages.find(
+      (l) => lang === l || localeMatch([lang], [l]),
+    );
+
   return (
     <div class="sheet">
       {!!onClose && (
@@ -44,8 +61,12 @@ export default function MediaAltModal({ alt, lang, onClose }) {
         >
           {alt}
         </p>
-        {forceTranslate && (
-          <TranslationBlock forceTranslate={forceTranslate} text={alt} />
+        {(differentLanguage || forceTranslate) && (
+          <TranslationBlock
+            forceTranslate={forceTranslate}
+            sourceLanguage={lang}
+            text={alt}
+          />
         )}
       </main>
     </div>
diff --git a/src/components/status.jsx b/src/components/status.jsx
index 61d737eb..5fd40b3b 100644
--- a/src/components/status.jsx
+++ b/src/components/status.jsx
@@ -484,7 +484,7 @@ function Status({
   };
 
   const differentLanguage =
-    language &&
+    !!language &&
     language !== targetLanguage &&
     !localeMatch([language], [targetLanguage]) &&
     !contentTranslationHideLanguages.find(