{ "@@locale": "en", "appName": "FruitShorts", "demo": "DEMO", "homeHeadline": "Watch now", "homeSubtitle": "Free short drama preview.", "mediaNotice": "User-provided local demo video · Free preview", "featuredDemo": "FEATURED · TECHNICAL DEMO", "demoTitle": "The Signal", "demoSynopsis": "A short local video preview. More episodes can be added when media is available.", "homeTab": "Home", "openQuickMenu": "Open quick menu", "quickAccess": "Quick access", "currentSeries": "Current series", "discoverTab": "Discover", "searchDiscover": "Search dramas, actors, genres...", "featured": "Featured", "recommended": "Recommended", "fruitShortsBrand": "FruitShorts", "authLandingSubtitle": "Sign in to sync progress, favorites and coins", "comingSoon": "Coming soon", "authLegal": "By continuing, you agree to the Terms of Service and Privacy Policy.", "authContinueGoogle": "Continue with Google", "authPhoneSignIn": "Phone sign in", "authEmailSignIn": "Email sign in", "suspense": "Suspense", "romance": "Romance", "actionGenre": "Action", "filter": "Filter", "topCharts": "Top Charts", "newReleases": "New Releases", "trendingMicroDramas": "Trending Micro-Dramas", "seeAll": "See All", "trendingSubtitle": "Most binge-watched this week", "verticalMiniSeries": "VERTICAL MINI-SERIES", "followSeries": "Follow Series", "seasonOneVerticalCinema": "Season 1 • Vertical Cinema", "seasonOneOriginalRelease": "Season 1 • Original Release", "startWatching": "Start Watching", "showLess": "Less", "views": "views", "episodeOfTotal": "Episode {current} / {total}", "@episodeOfTotal": { "placeholders": { "current": {"type": "int"}, "total": {"type": "int"} } }, "clearScreen": "Clear screen", "exitClearScreen": "Exit clear screen", "minutesAgo": "{count} min ago", "@minutesAgo": { "placeholders": { "count": {"type": "int"} } }, "artworkOnly": "Artwork", "artworkOnlyNotice": "This is a visual catalog item. No video is available yet.", "videoPending": "Video pending", "watchNow": "Watch free", "noSearchResults": "No matching dramas.", "emptyHint": "New content will appear here.", "demoCatalogNotice": "Three demo dramas share the same local video.", "myTab": "My", "localViewer": "Local Viewer", "localDemoProfile": "Local demo profile", "continueWatching": "Continue Watching", "watchedPercent": "Watched {percent}%", "@watchedPercent": { "placeholders": { "percent": { "type": "int" } } }, "resume": "Resume", "history": "History", "watchlist": "Favorites", "likedTab": "Liked", "all": "All", "inProgress": "In Progress", "completed": "Completed", "noSavedShows": "No shows here yet.", "preferences": "Preferences", "appLanguage": "App Language", "followingTab": "Following", "animatedTab": "Animated", "recommendedTab": "Recommended", "noCategoryDramas": "No dramas in this category yet.", "allDramas": "All Dramas", "trendingTab": "Trending", "liveActionTab": "Live Action", "search": "Search", "free": "Free", "mute": "Mute", "unmute": "Unmute", "like": "Like", "save": "Save", "comments": "Comments", "share": "Share", "noComments": "No comments yet.", "writeComment": "Write a comment", "postComment": "Post", "loadMore": "Load more", "commentsLoadFailed": "Comments could not be loaded.", "commentPostFailed": "Could not post your comment.", "delete": "Delete", "deleteComment": "Delete comment", "deleteCommentTitle": "Delete this comment?", "deleteCommentMessage": "This removes your comment from the conversation.", "commentDeleteFailed": "Could not delete this comment.", "underReview": "Under review", "reply": "Reply", "replyingTo": "Replying to {name}", "@replyingTo": { "placeholders": { "name": {} } }, "cancelReply": "Cancel reply", "viewReplies": "View replies ({count})", "@viewReplies": { "placeholders": { "count": { "type": "int" } } }, "hideReplies": "Hide replies", "anonymousUser": "Viewer", "more": "More", "likeFailed": "Could not update like. Please retry.", "reportComment": "Report comment", "reportDrama": "Report drama", "reportReason": "Reason", "reportReasonSpam": "Spam", "reportReasonAbuse": "Harassment", "reportReasonPorn": "Sexual content", "reportReasonAd": "Advertising", "reportReasonOther": "Other", "reportDescriptionHint": "Describe the issue (optional)", "reportSubmit": "Submit report", "reportSubmitted": "Report submitted. Thank you.", "reportFailed": "Could not submit report.", "shareFailed": "Could not open the share sheet.", "nowPlaying": "Playing now", "pictureInPicture": "Picture in picture", "pipUnavailable": "Picture in picture is unavailable on this device", "originalTag": "Original", "dramaTag": "Short drama", "episodeLabel": "Episode {number}", "@episodeLabel": { "placeholders": { "number": { "type": "int" } } }, "exploreSeries": "Explore series", "episodeCount": "{count} EPISODES", "@episodeCount": { "placeholders": { "count": { "type": "int" } } }, "technicalDemoCount": "FREE PREVIEW · {count} EPISODES", "@technicalDemoCount": { "placeholders": { "count": { "type": "int" } } }, "episodes": "Episodes", "watchEpisodeOne": "Watch episode 1", "continueEpisode": "Continue episode {number}", "@continueEpisode": { "placeholders": { "number": { "type": "int" } } }, "freeTestMedia": "Same demo clip · free", "lockedStoreUnavailable": "Locked · store unavailable", "freeTestClip": "Free test clip", "locked": "Locked", "freeSamplesNotice": "Two free samples · store setup pending", "demoTestMedia": "FREE · SAME DEMO CLIP", "episodeProgress": "EPISODE {number} / {total}", "@episodeProgress": { "placeholders": { "number": { "type": "int" }, "total": { "type": "int" } } }, "testVideoNotice": "Self-generated technical test video", "lockedTitle": "Episode {number} is locked", "@lockedTitle": { "placeholders": { "number": { "type": "int" } } }, "lockedBody": "Unlocking will be available after store and verification setup. This demo does not process payments.", "playbackError": "This clip could not be played.", "catalogError": "The catalog could not be loaded.", "categoriesError": "Categories could not be loaded.", "detailError": "The episode list could not be loaded.", "noMediaNotice": "This episode has no playable media yet.", "noStories": "No stories available yet.", "notices": "Notices", "noNotices": "No notices yet.", "noticesLoadFailed": "Notices could not be loaded.", "noticeDetails": "Notice details", "noticeAnnouncement": "Notice", "close": "Close", "carouselSemantics": "Banner {current} of {total}", "@carouselSemantics": { "placeholders": { "current": { "type": "int" }, "total": { "type": "int" } } }, "retry": "Retry", "backToSeries": "Back to series", "nextEpisode": "Next episode", "pause": "Pause", "play": "Play", "seekVideo": "Seek video", "seekFailed": "Could not change playback position.", "captions": "Captions", "captionsOff": "Captions off", "englishCaptions": "English captions", "chineseCaptions": "Chinese captions", "language": "Language", "systemLanguage": "System", "english": "English", "simplifiedChinese": "简体中文", "bahasaIndonesia": "Bahasa Indonesia", "episodeOneTitle": "First Light", "episodeTwoTitle": "A New Frequency", "episodeThreeTitle": "Crossing Over", "episodeFourTitle": "After the Echo", "dramaSignalTitle": "The Signal", "dramaSignalSynopsis": "A demo series for vertical playback. Every episode reuses one local clip.", "dramaCityTitle": "City Lights & Velvet Nights", "dramaCitySynopsis": "A demo romance series. The same local video is used to try switching and resume.", "dramaVengeanceTitle": "Vengeance Rising", "dramaVengeanceSynopsis": "A demo action series. The same local video is used to try switching and resume.", "dramaEchoesTitle": "Echoes of Fate", "genreSuspenseMystery": "Suspense · Mystery", "genreUrbanRomance": "Urban Romance", "genreActionThriller": "Action · Thriller", "genreDramaMystery": "Drama · Mystery", "continueWatchingHeading": "CONTINUE WATCHING", "preferencesHeading": "PREFERENCES", "brandMark": "FRUITSHORTS", "shareFooter": "FruitShorts", "shortsTab": "Shorts", "myListTab": "My List", "watchFull": "Watch Full", "swipeForNext": "Swipe up for next", "logIn": "Log in", "logInHint": "Keep your coins and list", "rewards": "Rewards", "forYou": "For You", "hot": "Hot", "newest": "New", "favorite": "Favorite", "myAccount": "My account", "coins": "Coins", "topUpWallet": "Top Up Wallet", "vipMembership": "VIP Membership", "notActive": "Not Active", "joinVip": "Join VIP", "earnRewards": "Earn Rewards", "freeBonus": "Get Free Bonus", "watchHistory": "Watch History", "settings": "Settings", "serverAddress": "Server address", "serverSettings": "Server settings", "serverAddressHint": "http(s)://host:port", "saveAddress": "Save address", "restartToApply": "Restart the app to apply.", "restoreDefault": "Restore default", "invalidServerAddress": "Enter a valid http(s) server address.", "signOut": "Sign Out", "mockUserName": "Vicky sheng", "mockUserId": "ID: M1CZWVYE", "mockNotice": "Sample data only.", "topBadge": "TOP 1", "signIn": "Sign In", "signUp": "Sign Up", "authSignInTitle": "Welcome back", "authSignUpTitle": "Create your account", "authSubtitle": "Sign in with your email and password.", "authSignUpSubtitle": "Create an account to keep your list, history, and progress.", "authBrandTagline": "Short dramas made for Indonesia", "authEmailLabel": "Email", "authPasswordLabel": "Password", "authPasswordHint": "At least 8 characters, letters and numbers", "authEmailRequired": "Enter your email", "authEmailInvalid": "That email doesn't look right", "authPasswordRequired": "Enter your password", "authPasswordLength": "Password must be 8-64 characters", "authPasswordWeak": "Password needs both letters and numbers", "authNetworkError": "Network error, please try again", "authSwitchToSignUp": "New here? Create an account", "authSwitchToSignIn": "Already have an account? Sign in", "authGateTitle": "Sign in to continue", "authGateMessage": "Watch history, favorites, comments and downloads need an account.", "authGateAction": "Sign In", "showPassword": "Show password", "hidePassword": "Hide password", "cancel": "Not now", "noEpisodesYet": "No playable episodes yet.", "networkError": "Network is unreachable. Please check your connection and retry.", "progressError": "Your watch position could not be loaded.", "favoritesError": "Your favorites could not be loaded.", "favoriteToggleFailed": "Could not update favorites. Please retry.", "myFavorites": "My favorites", "noFavorites": "No favorites yet.", "downloads": "Downloads", "downloadsError": "Download settings could not be loaded.", "noDownloads": "No download authorizations yet.", "downloadedItems": "Download authorizations", "downloadQuota": "{remaining} of {max} authorizations available", "@downloadQuota": { "placeholders": { "remaining": { "type": "int" }, "max": { "type": "int" } } }, "downloadLicenseDays": "Authorization valid for {days} days", "@downloadLicenseDays": { "placeholders": { "days": { "type": "int" } } }, "downloadWifiOnly": "Wi-Fi only", "downloadQuality": "Maximum quality", "downloadStatus": "Authorization: {status}", "@downloadStatus": { "placeholders": { "status": {} } }, "downloadTaskStatus": "Task: {status}", "@downloadTaskStatus": { "placeholders": { "status": {} } }, "downloadProgress": "{progress}%", "@downloadProgress": { "placeholders": { "progress": { "type": "int" } } }, "downloadExpiresAt": "Expires {time}", "@downloadExpiresAt": { "placeholders": { "time": {} } }, "clearDownloadsTitle": "Clear download authorizations?", "clearDownloadsMessage": "This revokes every download authorization for this device.", "downloadSettingsFailed": "Could not update download settings.", "downloadDeleteFailed": "Could not remove this download authorization.", "downloadClearFailed": "Could not clear download authorizations.", "downloadGrantFailed": "Could not request this download.", "downloadGranted": "Download authorization is ready.", "noWatchRecords": "No watch history yet.", "recordDeleteFailed": "Could not delete this record. Please retry.", "recordClearFailed": "Could not clear watch history. Please retry.", "clearAll": "Clear all", "clearWatchHistoryTitle": "Clear watch history?", "clearWatchHistoryMessage": "This removes the watch history from your account.", "confirmClear": "Clear", "detailLoadFailed": "Details failed to load", "retryDetail": "Retry", "episodeUnavailable": "Episode unavailable", "updatedAtLabel": "Updated {time}", "@updatedAtLabel": { "placeholders": { "time": {} } }, "remove": "Remove", "unlockComingSoon": "Unlocking with coins is coming soon.", "resumeProgress": "Resume at {position} / {total}", "@resumeProgress": { "placeholders": { "position": {}, "total": {} } }, "accountCenter": "Account", "accountProfile": "Profile", "accountDevices": "Login devices", "accountDataExport": "Data export", "accountDeactivate": "Delete account", "accountProfileLoadFailed": "Could not load your profile.", "accountProfileSaveFailed": "Could not save your profile.", "accountNickname": "Nickname", "accountNicknameInvalid": "Enter 1 to 30 characters.", "accountGender": "Gender", "accountMale": "Male", "accountFemale": "Female", "accountUnknownGender": "Prefer not to say", "accountSelectBirthday": "Set birthday", "accountBirthdayHint": "Birthday can be set but not cleared in this version.", "accountSaved": "Profile saved.", "accountReadOnlyInfo": "Account information", "accountUid": "UID", "accountMaskedAccount": "Account", "accountCountry": "Country", "accountCurrency": "Currency", "accountStatus": "Status", "accountLanguage": "Language", "accountTimezone": "Time zone", "accountRegion": "Region", "accountVipLevel": "VIP level", "accountCreatedAt": "Registered", "accountLastLogin": "Last login", "accountDevicesEmpty": "No login devices found.", "accountDevicesLoadFailed": "Could not load devices.", "accountPlatform": "Platform", "accountDeviceId": "Device ID", "accountFirstSeen": "First seen", "accountLastActive": "Last active", "accountDeviceActive": "Active", "accountDeviceInactive": "Inactive", "accountExportLoadFailed": "Could not export account data.", "accountCredentials": "Sign-in credentials", "accountConsentRecords": "Consent records", "accountDeviceCount": "Devices", "accountCopyJson": "Copy full JSON", "accountCopied": "Account data copied.", "accountVerified": "Verified", "accountUnverified": "Unverified", "accountDeactivateWarning": "Requests enter a 15-day cooling-off period. All devices are signed out immediately.", "accountDeactivateReason": "Reason (optional)", "accountDeactivateReasonHint": "Tell us why you are leaving", "accountRequestDeactivate": "Request account deletion", "accountConfirmDeactivateTitle": "Request account deletion?", "accountConfirmDeactivateMessage": "All devices will be signed out immediately. You can cancel during the 15-day cooling-off period after signing in again.", "accountConfirmDeactivate": "Confirm", "accountScheduledFor": "Deletion scheduled for {time}", "@accountScheduledFor": { "placeholders": { "time": {} } }, "accountCancelDeactivation": "Cancel deletion request", "accountCancelSucceeded": "Deletion request cancelled.", "accountDeactivateFailed": "Could not request account deletion.", "accountCancelFailed": "Could not cancel the deletion request." }