diff --git a/CHANGELOG_YOJO.md b/CHANGELOG_YOJO.md
index ff6ab1c5a3..0f54d6d4f0 100644
--- a/CHANGELOG_YOJO.md
+++ b/CHANGELOG_YOJO.md
@@ -1,3 +1,19 @@
+## 1.2.2
+Cherrypick 4.13.0
+Misskey 2024.10.1
+
+### Release Date
+xxxx-xx-xx
+
+### General
+-
+
+### Client
+- Fix: ノート詳細画面でリアクション出来ない [#584](https://github.com/yojo-art/cherrypick/pull/584)
+- Fix: 引用や返信のノートすべてに翻訳ボタンが表示される [#598](https://github.com/yojo-art/cherrypick/pull/598)
+### Server
+- Fix:`api/ap/fetch-outbox`でリノートしか取得されないのを修正 [#588](https://github.com/yojo-art/cherrypick/pull/588)
+
## 1.2.1
Cherrypick 4.13.0
Misskey 2024.10.1
diff --git a/packages/frontend/src/components/MkSubNoteContent.vue b/packages/frontend/src/components/MkSubNoteContent.vue
index 00ea4fd43a..4a0116accb 100644
--- a/packages/frontend/src/components/MkSubNoteContent.vue
+++ b/packages/frontend/src/components/MkSubNoteContent.vue
@@ -21,7 +21,7 @@ SPDX-License-Identifier: AGPL-3.0-only
:enableAnimatedMfm="enableAnimatedMfm"
/>
RN: ...
-
+
@@ -29,7 +29,7 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.tsx.translatedFrom({ x: translation.sourceLang }) }}:
- {
os.popupMenu(await getNoteClipMenu({ note: note.value, isDeleted, currentClip: currentClip?.value }), clipButton.value).then(focus);
}
-const isForeignLanguage: boolean = note.value.text != null && (() => {
+const isForeignLanguage: boolean = (note.value.text != null || note.value.poll != null) && (() => {
const targetLang = (miLocalStorage.getItem('lang') ?? navigator.language).slice(0, 2);
- const postLang = detectLanguage(note.value.text);
- const choicesLang = note.value.poll?.choices.map((choice) => choice.text).join(' ') ?? '';
- const pollLang = detectLanguage(choicesLang);
- return postLang !== '' && (postLang !== targetLang || pollLang !== targetLang);
+ if (note.value.text) {
+ const postLang = detectLanguage(note.value.text);
+ if (postLang !== '' && postLang !== targetLang) return true;
+ }
+ if (note.value.poll) {
+ const foreignLang = note.value.poll.choices
+ .map((choice) => detectLanguage(choice.text))
+ .filter((lang) => lang !== targetLang).length;
+ if (0 < foreignLang) return true;
+ }
+ return false;
})();
if (defaultStore.state.useAutoTranslate && instance.translatorAvailable && $i.policies.canUseTranslator && $i.policies.canUseAutoTranslate && !isLong && (note.value.cw == null || showContent.value) && note.value.text && isForeignLanguage) translate();
@@ -474,6 +481,15 @@ async function translate(): Promise {
collapsed.value = false;
translating.value = true;
+ if (note.value.text == null) {
+ translating.value = false;
+ translation.value = {
+ sourceLang: '',
+ text: '',
+ };
+ return;
+ }
+
vibrate(defaultStore.state.vibrateSystem ? 5 : []);
if (props.mock) {