diff --git a/extensions/youtube/src/main/java/app/morphe/extension/youtube/patches/OpenChannelOfLiveAvatarPatch.java b/extensions/youtube/src/main/java/app/morphe/extension/youtube/patches/OpenChannelOfLiveAvatarPatch.java index fe6a6f55e..6be6d2e9e 100644 --- a/extensions/youtube/src/main/java/app/morphe/extension/youtube/patches/OpenChannelOfLiveAvatarPatch.java +++ b/extensions/youtube/src/main/java/app/morphe/extension/youtube/patches/OpenChannelOfLiveAvatarPatch.java @@ -7,23 +7,32 @@ package app.morphe.extension.youtube.patches; -import static app.morphe.extension.shared.StringRef.str; +import static app.morphe.extension.shared.ResourceUtils.getString; import static app.morphe.extension.youtube.settings.Settings.OPEN_CHANNEL_OF_LIVE_AVATAR; import android.app.Activity; import android.content.Intent; import android.net.Uri; +import android.text.TextUtils; import com.facebook.litho.ComponentHost; import java.lang.ref.WeakReference; +import java.util.Arrays; import java.util.Map; +import java.util.Objects; +import java.util.function.UnaryOperator; +import java.util.regex.Pattern; +import java.util.stream.Collectors; import app.morphe.extension.shared.Logger; import app.morphe.extension.shared.Utils; import app.morphe.extension.shared.spoof.SpoofVideoStreamsPatch; import app.morphe.extension.shared.spoof.requests.PlayerRoutes; import app.morphe.extension.shared.spoof.requests.StreamOrDetailsDataRequest; +import app.morphe.extension.youtube.shared.CreatorChannelState; +import app.morphe.extension.youtube.shared.PlayerType; +import app.morphe.extension.youtube.shared.ShortsPlayerState; @SuppressWarnings("unused") public final class OpenChannelOfLiveAvatarPatch { @@ -36,12 +45,6 @@ public static void setMainActivity(Activity activity) { mainActivityRef = new WeakReference<>(activity); } - /** - * If you change the language in the app settings, a string from another language may be used. - * In this case, restarting the app will solve it. - */ - private static final String liveRingDescription = str("morphe_live_ring_description"); - /** * This key's value is the LithoView that opened the video (Live ring or Thumbnails). */ @@ -54,7 +57,18 @@ public static void setMainActivity(Activity activity) { private static final String VIDEO_THUMBNAIL_VIEW_KEY = "VideoPresenterConstants.VIDEO_THUMBNAIL_VIEW_KEY"; - private static StreamOrDetailsDataRequest liveAvatarChannelRequest = null; + private static volatile StreamOrDetailsDataRequest liveAvatarChannelRequest; + private static volatile String lastLiveRingDescription; + private static volatile Pattern liveRingDescriptionPattern; + private static final UnaryOperator stringNormalization = + s -> java.text.Normalizer.normalize( + s.toLowerCase(), + java.text.Normalizer.Form.NFD + ).replaceAll( + "\\p{M}", + "" + ); + /** * Injection point. * @@ -67,7 +81,8 @@ public static boolean openChannel(Map playbackStartDescriptorMap return false; } // Prevent a new request until the previous (if exists) is not done - if (liveAvatarChannelRequest != null && !liveAvatarChannelRequest.fetchIsDone()) { + StreamOrDetailsDataRequest request = liveAvatarChannelRequest; + if (request != null && !request.fetchIsDone()) { return false; } // Video was opened by clicking the thumbnail @@ -79,43 +94,70 @@ public static boolean openChannel(Map playbackStartDescriptorMap if (!(playbackStartDescriptorMap.get(ELEMENTS_SENDER_VIEW) instanceof ComponentHost componentHost)) { return false; } - // Check content description (accessibility labels) of the live ring. - final CharSequence contentDescription = componentHost.getContentDescription(); - if (contentDescription == null) { - return false; - } - final boolean containsMatch = contentDescription.toString().contains(liveRingDescription); - Logger.printDebug(() -> "Litho description: " + contentDescription - + "\ncontains Resource description: " + liveRingDescription - + "\n" + containsMatch); - if (containsMatch) { - liveAvatarChannelRequest = SpoofVideoStreamsPatch.fetchDetails( - PlayerRoutes.GET_CHANNEL_FROM_ID, - videoId - ); - Utils.runOnBackgroundThread(() -> { - if (liveAvatarChannelRequest.getStreamDetails() instanceof String channelID && !channelID.isEmpty()) { - Logger.printDebug(() -> "live avatar response: " + channelID); - - Utils.runOnMainThread(() -> { - var context = mainActivityRef.get(); - if (context != null) { - Intent videoChannelIntent = new Intent(Intent.ACTION_VIEW); - videoChannelIntent.setData(Uri.parse("https://www.youtube.com/channel/" + channelID)); - videoChannelIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - videoChannelIntent.setPackage(context.getPackageName()); - context.startActivity(videoChannelIntent); + PlayerType currentPlayer = PlayerType.getCurrent(); + if (CreatorChannelState.isOpen() == (currentPlayer == PlayerType.WATCH_WHILE_MAXIMIZED)) { + final boolean containsMatch; + + if (!ShortsPlayerState.isOpen()) { + // Check content description (accessibility labels) of the live ring. + final CharSequence contentDescriptionCharSequence = componentHost.getContentDescription(); + if (contentDescriptionCharSequence == null) { + return false; + } + final String contentDescriptionString = contentDescriptionCharSequence.toString(); + + // If you change the language in the app settings, a string from another language may be used. + final String liveRingDescription = getString("morphe_live_ring_description"); + + if (!Objects.equals(lastLiveRingDescription, liveRingDescription)) { + liveRingDescriptionPattern = Pattern.compile( + Arrays.stream(stringNormalization.apply(liveRingDescription).split("\\s+")) + .map(Pattern::quote) + .collect(Collectors.joining(".*?")) + ); + lastLiveRingDescription = liveRingDescription; + } + + containsMatch = liveRingDescriptionPattern.matcher( + stringNormalization.apply(contentDescriptionString) + ).find(); + + Logger.printDebug(() -> "Litho description: " + contentDescriptionString + + "\ncontains Resource description: " + liveRingDescription + + "\nmatch: " + containsMatch); + } else { + containsMatch = true; + } + + if (containsMatch) { + liveAvatarChannelRequest = SpoofVideoStreamsPatch.fetchDetails( + PlayerRoutes.GET_CHANNEL_FROM_ID, + videoId + ); + Utils.runOnBackgroundThread(() -> { + if (liveAvatarChannelRequest.getStreamDetails() instanceof String channelID && !channelID.isEmpty()) { + Logger.printDebug(() -> "live avatar response: " + channelID); + + Utils.runOnMainThread(() -> { + var context = mainActivityRef.get(); + if (context != null) { + Intent videoChannelIntent = new Intent(Intent.ACTION_VIEW); + videoChannelIntent.setData(Uri.parse("https://www.youtube.com/channel/" + channelID)); + videoChannelIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + videoChannelIntent.setPackage(context.getPackageName()); + context.startActivity(videoChannelIntent); + } + }); + } else { + Logger.printDebug(() -> "Could not get channel ID, string parameter is null: " + videoId); } }); - } else { - Logger.printDebug(() -> "Could not get channel ID, string parameter is null: " + videoId); + return true; } - }); - return true; } } catch (Exception ex) { - Logger.printException(() -> "fetchVideoInformation failure", ex); + Logger.printException(() -> "openChannel failure", ex); } return false; } diff --git a/extensions/youtube/src/main/java/app/morphe/extension/youtube/patches/PlayerTypeHookPatch.java b/extensions/youtube/src/main/java/app/morphe/extension/youtube/patches/PlayerTypeHookPatch.java index e2aee42ee..e33ddbb93 100644 --- a/extensions/youtube/src/main/java/app/morphe/extension/youtube/patches/PlayerTypeHookPatch.java +++ b/extensions/youtube/src/main/java/app/morphe/extension/youtube/patches/PlayerTypeHookPatch.java @@ -1,9 +1,11 @@ package app.morphe.extension.youtube.patches; +import android.util.Log; import android.view.View; import androidx.annotation.Nullable; +import app.morphe.extension.youtube.shared.CreatorChannelState; import app.morphe.extension.youtube.shared.PlayerType; import app.morphe.extension.youtube.shared.ShortsPlayerState; import app.morphe.extension.youtube.shared.VideoState; @@ -28,6 +30,28 @@ public static void setVideoState(@Nullable Enum youTubeVideoState) { VideoState.setFromString(youTubeVideoState.name()); } + /** + * Injection point. + * + * Add a listener to the Tabs bar of creator channel View. + * Triggered when a Tabs bar is attached or detached to Windows. + * + * @param view shorts player overlay (R.layout.tabs_bar_text_tab_modern_type). + */ + public static void onCreatorChannelCreate(View view) { + view.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() { + @Override + public void onViewAttachedToWindow(@Nullable View v) { + CreatorChannelState.setOpen(true); + } + + @Override + public void onViewDetachedFromWindow(@Nullable View v) { + CreatorChannelState.setOpen(false); + } + }); + } + /** * Injection point. * diff --git a/extensions/youtube/src/main/java/app/morphe/extension/youtube/patches/components/LayoutComponentsFilter.java b/extensions/youtube/src/main/java/app/morphe/extension/youtube/patches/components/LayoutComponentsFilter.java index eb740b94a..b1675567a 100644 --- a/extensions/youtube/src/main/java/app/morphe/extension/youtube/patches/components/LayoutComponentsFilter.java +++ b/extensions/youtube/src/main/java/app/morphe/extension/youtube/patches/components/LayoutComponentsFilter.java @@ -336,7 +336,8 @@ public LayoutComponentsFilter() { "page_header.e" ); channelProfileGroupList = new StringFilterGroupList(); - channelProfileGroupList.addAll(new StringFilterGroup( + channelProfileGroupList.addAll( + new StringFilterGroup( Settings.HIDE_COMMUNITY_BUTTON, "community_button" ), diff --git a/extensions/youtube/src/main/java/app/morphe/extension/youtube/shared/CreatorChannelState.kt b/extensions/youtube/src/main/java/app/morphe/extension/youtube/shared/CreatorChannelState.kt new file mode 100644 index 000000000..a7a397e92 --- /dev/null +++ b/extensions/youtube/src/main/java/app/morphe/extension/youtube/shared/CreatorChannelState.kt @@ -0,0 +1,37 @@ +package app.morphe.extension.youtube.shared + +import app.morphe.extension.shared.Logger + +/** + * Creator channel state. + */ +class CreatorChannelState { + companion object { + + @JvmStatic + fun setOpen(open: Boolean) { + if (isOpen != open) { + isOpen = open + Logger.printDebug { "CreatorChannelState open changed to: $isOpen" } + onChange(open) + } + } + + @Volatile + private var isOpen = false + + /** + * Shorts player state change listener. + */ + @JvmStatic + val onChange = Event() + + /** + * If the Shorts player is currently open. + */ + @JvmStatic + fun isOpen(): Boolean { + return isOpen + } + } +} diff --git a/extensions/youtube/src/main/java/app/morphe/extension/youtube/shared/ShortsPlayerState.kt b/extensions/youtube/src/main/java/app/morphe/extension/youtube/shared/ShortsPlayerState.kt index 311c4ab64..a8e7c9997 100644 --- a/extensions/youtube/src/main/java/app/morphe/extension/youtube/shared/ShortsPlayerState.kt +++ b/extensions/youtube/src/main/java/app/morphe/extension/youtube/shared/ShortsPlayerState.kt @@ -11,8 +11,8 @@ class ShortsPlayerState { @JvmStatic fun setOpen(open: Boolean) { if (isOpen != open) { - Logger.printDebug { "ShortsPlayerState open changed to: $isOpen" } isOpen = open + Logger.printDebug { "ShortsPlayerState open changed to: $isOpen" } onChange(open) } } diff --git a/patches/src/main/kotlin/app/morphe/patches/youtube/misc/playertype/Fingerprints.kt b/patches/src/main/kotlin/app/morphe/patches/youtube/misc/playertype/Fingerprints.kt index f60f9da7c..0b6023845 100644 --- a/patches/src/main/kotlin/app/morphe/patches/youtube/misc/playertype/Fingerprints.kt +++ b/patches/src/main/kotlin/app/morphe/patches/youtube/misc/playertype/Fingerprints.kt @@ -26,6 +26,15 @@ internal object PlayerTypeEnumFingerprint : Fingerprint( ) ) +internal object TabsBarTextTabFingerprint : Fingerprint( + accessFlags = listOf(AccessFlags.PUBLIC, AccessFlags.FINAL), + returnType = "Landroid/view/View;", + filters = listOf( + resourceLiteral(ResourceType.LAYOUT, "tabs_bar_text_tab_modern_type"), + opcode(Opcode.MOVE_RESULT_OBJECT, location = MatchAfterWithin(8)) + ) +) + internal object ReelWatchPagerFingerprint : Fingerprint( accessFlags = listOf(AccessFlags.PUBLIC, AccessFlags.FINAL), returnType = "Landroid/view/View;", diff --git a/patches/src/main/kotlin/app/morphe/patches/youtube/misc/playertype/PlayerTypeHookPatch.kt b/patches/src/main/kotlin/app/morphe/patches/youtube/misc/playertype/PlayerTypeHookPatch.kt index c17d4519f..7e88c19d8 100644 --- a/patches/src/main/kotlin/app/morphe/patches/youtube/misc/playertype/PlayerTypeHookPatch.kt +++ b/patches/src/main/kotlin/app/morphe/patches/youtube/misc/playertype/PlayerTypeHookPatch.kt @@ -32,6 +32,18 @@ val playerTypeHookPatch = bytecodePatch( "invoke-static { p1 }, $EXTENSION_CLASS->setPlayerType(Ljava/lang/Enum;)V", ) + TabsBarTextTabFingerprint.let { + it.method.apply { + val index = it.instructionMatches.last().index + val register = getInstruction(index).registerA + + addInstruction( + index + 1, + "invoke-static { v$register }, $EXTENSION_CLASS->onCreatorChannelCreate(Landroid/view/View;)V" + ) + } + } + ReelWatchPagerFingerprint.let { it.method.apply { val index = it.instructionMatches.last().index diff --git a/patches/src/main/resources/livering/host/values-af/strings.xml b/patches/src/main/resources/livering/host/values-af/strings.xml index dd0dfc394..3686c3d95 100644 --- a/patches/src/main/resources/livering/host/values-af/strings.xml +++ b/patches/src/main/resources/livering/host/values-af/strings.xml @@ -1,4 +1,4 @@ - Tap to watch live + Tik om regstreeks te kyk diff --git a/patches/src/main/resources/livering/host/values-as/strings.xml b/patches/src/main/resources/livering/host/values-as/strings.xml index 03be642d1..fab4bce79 100644 --- a/patches/src/main/resources/livering/host/values-as/strings.xml +++ b/patches/src/main/resources/livering/host/values-as/strings.xml @@ -1,4 +1,4 @@ - লাইভ চাবলৈ টিপক + চেনেল লাইভ চাবলৈ টিপক diff --git a/patches/src/main/resources/livering/host/values-az/strings.xml b/patches/src/main/resources/livering/host/values-az/strings.xml index eebfac472..0b1f00ae3 100644 --- a/patches/src/main/resources/livering/host/values-az/strings.xml +++ b/patches/src/main/resources/livering/host/values-az/strings.xml @@ -1,4 +1,4 @@ - Canlı baxmaq üçün toxunun + Canlı izləmək üçün toxunun diff --git a/patches/src/main/resources/livering/host/values-bs/strings.xml b/patches/src/main/resources/livering/host/values-bs/strings.xml index 697124880..a40f0065e 100644 --- a/patches/src/main/resources/livering/host/values-bs/strings.xml +++ b/patches/src/main/resources/livering/host/values-bs/strings.xml @@ -1,4 +1,4 @@ - Dodirnite da gledate uživo + Gledanje uživo dodirom diff --git a/patches/src/main/resources/livering/host/values-ca/strings.xml b/patches/src/main/resources/livering/host/values-ca/strings.xml index 31eb2e375..17727a625 100644 --- a/patches/src/main/resources/livering/host/values-ca/strings.xml +++ b/patches/src/main/resources/livering/host/values-ca/strings.xml @@ -1,4 +1,4 @@ - "Toca per veure l'emissió en directe" + Toca per veure el canal diff --git a/patches/src/main/resources/livering/host/values-de/strings.xml b/patches/src/main/resources/livering/host/values-de/strings.xml index 86e3d1d07..2278afe3c 100644 --- a/patches/src/main/resources/livering/host/values-de/strings.xml +++ b/patches/src/main/resources/livering/host/values-de/strings.xml @@ -1,4 +1,4 @@ - Zum live Ansehen tippen + Tippen, um den Livestream diff --git a/patches/src/main/resources/livering/host/values-es-rUS/strings.xml b/patches/src/main/resources/livering/host/values-es-rUS/strings.xml index 02e2d26eb..c78a9ad28 100644 --- a/patches/src/main/resources/livering/host/values-es-rUS/strings.xml +++ b/patches/src/main/resources/livering/host/values-es-rUS/strings.xml @@ -1,4 +1,4 @@ - Presiona para ver la transmisión en vivo + Presiona para mirar en vivo diff --git a/patches/src/main/resources/livering/host/values-es/strings.xml b/patches/src/main/resources/livering/host/values-es/strings.xml index 6273008d3..c78a9ad28 100644 --- a/patches/src/main/resources/livering/host/values-es/strings.xml +++ b/patches/src/main/resources/livering/host/values-es/strings.xml @@ -1,4 +1,4 @@ - Toca para ver en directo + Presiona para mirar en vivo diff --git a/patches/src/main/resources/livering/host/values-et/strings.xml b/patches/src/main/resources/livering/host/values-et/strings.xml index 4fdb9b858..e93dd5a11 100644 --- a/patches/src/main/resources/livering/host/values-et/strings.xml +++ b/patches/src/main/resources/livering/host/values-et/strings.xml @@ -1,4 +1,4 @@ - Puudutage, et otse vaadata + Puudutage, et vaadata reaalajas diff --git a/patches/src/main/resources/livering/host/values-eu/strings.xml b/patches/src/main/resources/livering/host/values-eu/strings.xml index febd6b0f3..8af14a63d 100644 --- a/patches/src/main/resources/livering/host/values-eu/strings.xml +++ b/patches/src/main/resources/livering/host/values-eu/strings.xml @@ -1,4 +1,4 @@ - Sakatu hau bideoa zuzenean ikusteko + Sakatu hau zuzenean ikusteko diff --git a/patches/src/main/resources/livering/host/values-fi/strings.xml b/patches/src/main/resources/livering/host/values-fi/strings.xml index 410e44dd7..9af7b8848 100644 --- a/patches/src/main/resources/livering/host/values-fi/strings.xml +++ b/patches/src/main/resources/livering/host/values-fi/strings.xml @@ -1,4 +1,4 @@ - Napauta katsoaksesi livenä + Katso livenä napauttamalla diff --git a/patches/src/main/resources/livering/host/values-fr-rCA/strings.xml b/patches/src/main/resources/livering/host/values-fr-rCA/strings.xml index 44cbfc1d6..bd37bdee5 100644 --- a/patches/src/main/resources/livering/host/values-fr-rCA/strings.xml +++ b/patches/src/main/resources/livering/host/values-fr-rCA/strings.xml @@ -1,4 +1,4 @@ - Touchez pour regarder en direct + Toucher pour regarder en direct diff --git a/patches/src/main/resources/livering/host/values-fr/strings.xml b/patches/src/main/resources/livering/host/values-fr/strings.xml index 85ce9deb9..7dbf34df3 100644 --- a/patches/src/main/resources/livering/host/values-fr/strings.xml +++ b/patches/src/main/resources/livering/host/values-fr/strings.xml @@ -1,4 +1,4 @@ - Appuyer pour regarder en direct + Appuyez pour regarder en direct diff --git a/patches/src/main/resources/livering/host/values-gl/strings.xml b/patches/src/main/resources/livering/host/values-gl/strings.xml index a6b7acfa5..c8e96b97d 100644 --- a/patches/src/main/resources/livering/host/values-gl/strings.xml +++ b/patches/src/main/resources/livering/host/values-gl/strings.xml @@ -1,4 +1,4 @@ - Toca para velo en directo + Tocar para ver a emisión en directo diff --git a/patches/src/main/resources/livering/host/values-hu/strings.xml b/patches/src/main/resources/livering/host/values-hu/strings.xml index 04ec4dcef..07d95d09a 100644 --- a/patches/src/main/resources/livering/host/values-hu/strings.xml +++ b/patches/src/main/resources/livering/host/values-hu/strings.xml @@ -1,4 +1,4 @@ - Koppints és nézd élőben + Koppints az élő adás megtekintéséhez diff --git a/patches/src/main/resources/livering/host/values-hy/strings.xml b/patches/src/main/resources/livering/host/values-hy/strings.xml index fdb12e251..1c1c83493 100644 --- a/patches/src/main/resources/livering/host/values-hy/strings.xml +++ b/patches/src/main/resources/livering/host/values-hy/strings.xml @@ -1,4 +1,4 @@ - "Հպեք՝ ուղիղ եթերը դիտելու համար" + Հպեք՝ ուղիղ հեռարձակումը դիտելու համար diff --git a/patches/src/main/resources/livering/host/values-iw/strings.xml b/patches/src/main/resources/livering/host/values-iw/strings.xml index e9c2d0aaa..4ada32742 100644 --- a/patches/src/main/resources/livering/host/values-iw/strings.xml +++ b/patches/src/main/resources/livering/host/values-iw/strings.xml @@ -1,4 +1,4 @@ - אפשר ללחוץ כדי לצפות בשידור החי + אפשר ללחוץ כדי לצפות בשידור חי diff --git a/patches/src/main/resources/livering/host/values-ka/strings.xml b/patches/src/main/resources/livering/host/values-ka/strings.xml index 1675f970c..c0f62a37a 100644 --- a/patches/src/main/resources/livering/host/values-ka/strings.xml +++ b/patches/src/main/resources/livering/host/values-ka/strings.xml @@ -1,4 +1,4 @@ - შეეხეთ პირდაპირ ეთერში საყურებლად + Live სტრიმინგი ვიდეოს დაკვრა diff --git a/patches/src/main/resources/livering/host/values-km/strings.xml b/patches/src/main/resources/livering/host/values-km/strings.xml index 6b9dce340..40f61e4d9 100644 --- a/patches/src/main/resources/livering/host/values-km/strings.xml +++ b/patches/src/main/resources/livering/host/values-km/strings.xml @@ -1,4 +1,4 @@ - ចុចដើម្បីមើលការផ្សាយផ្ទាល់ + ចុចដើម្បីមើលបន្តផ្ទាល់ diff --git a/patches/src/main/resources/livering/host/values-kn/strings.xml b/patches/src/main/resources/livering/host/values-kn/strings.xml index 6278a9f4f..51fcee164 100644 --- a/patches/src/main/resources/livering/host/values-kn/strings.xml +++ b/patches/src/main/resources/livering/host/values-kn/strings.xml @@ -1,4 +1,4 @@ - ಲೈವ್ ನೋಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ + ಲೈವ್ ವೀಕ್ಷಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ diff --git a/patches/src/main/resources/livering/host/values-ko/strings.xml b/patches/src/main/resources/livering/host/values-ko/strings.xml index 02d0c1052..7a4e95a5c 100644 --- a/patches/src/main/resources/livering/host/values-ko/strings.xml +++ b/patches/src/main/resources/livering/host/values-ko/strings.xml @@ -1,4 +1,4 @@ - 채널 라이브 시청하기 + 탭하여 라이브 시청하기 diff --git a/patches/src/main/resources/livering/host/values-ky/strings.xml b/patches/src/main/resources/livering/host/values-ky/strings.xml index 80177383b..19f5f030c 100644 --- a/patches/src/main/resources/livering/host/values-ky/strings.xml +++ b/patches/src/main/resources/livering/host/values-ky/strings.xml @@ -1,4 +1,4 @@ - Түз ободо көрүү үчүн таптап коюңуз + Түз берүүнү көрүү үчүн таптап коюңуз diff --git a/patches/src/main/resources/livering/host/values-ml/strings.xml b/patches/src/main/resources/livering/host/values-ml/strings.xml index aa2a1a3c6..fff2f6225 100644 --- a/patches/src/main/resources/livering/host/values-ml/strings.xml +++ b/patches/src/main/resources/livering/host/values-ml/strings.xml @@ -1,4 +1,4 @@ - തത്സമയം കാണാൻ ടാപ്പ് ചെയ്യുക + ലൈവായി കാണാൻ ടാപ്പ് ചെയ്യുക diff --git a/patches/src/main/resources/livering/host/values-mn/strings.xml b/patches/src/main/resources/livering/host/values-mn/strings.xml index 92769aa8f..5512df158 100644 --- a/patches/src/main/resources/livering/host/values-mn/strings.xml +++ b/patches/src/main/resources/livering/host/values-mn/strings.xml @@ -1,4 +1,4 @@ - Шууд үзэхийн тулд товшино уу + шуудын дамжуулалтыг үзэхийн тулд товшино уу diff --git a/patches/src/main/resources/livering/host/values-pt-rBR/strings.xml b/patches/src/main/resources/livering/host/values-pt-rBR/strings.xml index bedf389c5..ca20714d2 100644 --- a/patches/src/main/resources/livering/host/values-pt-rBR/strings.xml +++ b/patches/src/main/resources/livering/host/values-pt-rBR/strings.xml @@ -1,4 +1,4 @@ - Toque para assistir a transmissão ao vivo + Toque para assistir ao vivo diff --git a/patches/src/main/resources/livering/host/values-pt/strings.xml b/patches/src/main/resources/livering/host/values-pt/strings.xml index bedf389c5..5835ab2c0 100644 --- a/patches/src/main/resources/livering/host/values-pt/strings.xml +++ b/patches/src/main/resources/livering/host/values-pt/strings.xml @@ -1,4 +1,4 @@ - Toque para assistir a transmissão ao vivo + Toque para ver em direto diff --git a/patches/src/main/resources/livering/host/values-sk/strings.xml b/patches/src/main/resources/livering/host/values-sk/strings.xml index a28375205..9f58d43d6 100644 --- a/patches/src/main/resources/livering/host/values-sk/strings.xml +++ b/patches/src/main/resources/livering/host/values-sk/strings.xml @@ -1,4 +1,4 @@ - Klepnutím spustíte prehrávanie priameho prenosu + Klepnutím spustíte priamy prenos diff --git a/patches/src/main/resources/livering/host/values-sq/strings.xml b/patches/src/main/resources/livering/host/values-sq/strings.xml index 20e27ecdb..d2f1fd98b 100644 --- a/patches/src/main/resources/livering/host/values-sq/strings.xml +++ b/patches/src/main/resources/livering/host/values-sq/strings.xml @@ -1,4 +1,4 @@ - Trokit për të parë drejtpërdrejt + Trokit për të shikuar drejtpërdrejt diff --git a/patches/src/main/resources/livering/host/values-sw/strings.xml b/patches/src/main/resources/livering/host/values-sw/strings.xml index 03fe4f7e3..58584ef6f 100644 --- a/patches/src/main/resources/livering/host/values-sw/strings.xml +++ b/patches/src/main/resources/livering/host/values-sw/strings.xml @@ -1,4 +1,4 @@ - Gusa ili utazame moja kwa moja + Gusa ili utazame mubashara diff --git a/patches/src/main/resources/livering/host/values-ta/strings.xml b/patches/src/main/resources/livering/host/values-ta/strings.xml index d9c37a732..107b1fe20 100644 --- a/patches/src/main/resources/livering/host/values-ta/strings.xml +++ b/patches/src/main/resources/livering/host/values-ta/strings.xml @@ -1,4 +1,4 @@ - நேரலையில் பார்க்க, தட்டவும் + நேரலையைப் பார்க்க தட்டவும் diff --git a/patches/src/main/resources/livering/host/values-th/strings.xml b/patches/src/main/resources/livering/host/values-th/strings.xml index b9ff359de..41e456a0f 100644 --- a/patches/src/main/resources/livering/host/values-th/strings.xml +++ b/patches/src/main/resources/livering/host/values-th/strings.xml @@ -1,4 +1,4 @@ - แตะเพื่อดูถ่ายทอดสด + แตะเพื่อดูไลฟ์สด diff --git a/patches/src/main/resources/livering/host/values-tr/strings.xml b/patches/src/main/resources/livering/host/values-tr/strings.xml index eb45d8c2e..882deb342 100644 --- a/patches/src/main/resources/livering/host/values-tr/strings.xml +++ b/patches/src/main/resources/livering/host/values-tr/strings.xml @@ -1,4 +1,4 @@ - Canlı izlemek için dokunun + canlı izlemek için dokunun diff --git a/patches/src/main/resources/livering/host/values-ur/strings.xml b/patches/src/main/resources/livering/host/values-ur/strings.xml index d686cac67..6342e5e70 100644 --- a/patches/src/main/resources/livering/host/values-ur/strings.xml +++ b/patches/src/main/resources/livering/host/values-ur/strings.xml @@ -1,4 +1,4 @@ - لائیو دیکھنے کیلئے تھپتھپائیں + لائیو دیکھنے کے لیے تھپتھپائیں diff --git a/patches/src/main/resources/livering/host/values-zh-rCN/strings.xml b/patches/src/main/resources/livering/host/values-zh-rCN/strings.xml index 58f0b7423..a9f0a2619 100644 --- a/patches/src/main/resources/livering/host/values-zh-rCN/strings.xml +++ b/patches/src/main/resources/livering/host/values-zh-rCN/strings.xml @@ -1,4 +1,4 @@ - 点按即可观看直播 + 点按即可观看频道的直播 diff --git a/patches/src/main/resources/livering/host/values-zh-rHK/strings.xml b/patches/src/main/resources/livering/host/values-zh-rHK/strings.xml index 5bb75adde..a9f0a2619 100644 --- a/patches/src/main/resources/livering/host/values-zh-rHK/strings.xml +++ b/patches/src/main/resources/livering/host/values-zh-rHK/strings.xml @@ -1,4 +1,4 @@ - 輕按即可收看直播 + 点按即可观看频道的直播 diff --git a/patches/src/main/resources/livering/host/values-zh-rTW/strings.xml b/patches/src/main/resources/livering/host/values-zh-rTW/strings.xml index 48d4a373b..a9f0a2619 100644 --- a/patches/src/main/resources/livering/host/values-zh-rTW/strings.xml +++ b/patches/src/main/resources/livering/host/values-zh-rTW/strings.xml @@ -1,4 +1,4 @@ - 輕觸即可觀看直播影片 + 点按即可观看频道的直播 diff --git a/patches/src/main/resources/livering/host/values-zu/strings.xml b/patches/src/main/resources/livering/host/values-zu/strings.xml index 8864af5aa..ba37b6fa5 100644 --- a/patches/src/main/resources/livering/host/values-zu/strings.xml +++ b/patches/src/main/resources/livering/host/values-zu/strings.xml @@ -1,4 +1,4 @@ - Thepha ukuze ubuke bukhoma + Thepha ukuze ubukele bukhoma