Translation Keys
This is the complete list of translatable UI keys in the SayTV Chat SDK, every piece of built-in text the widget can render, grouped by domain.
Supply any subset of these, see Localization for how to wire them up. Any key you don't translate falls back to English, so you can translate as little or as much as you like.
Start from a ready-made catalog
You usually don't need to copy keys from the tables below. Either point translations-url at a SayTV-hosted catalog (en, ar, es, fr), or download the complete English template, en.json, and translate its values. The tables here are for browsing and reference.
Preserve interpolation tokens
Some values contain interpolation tokens such as {count}, {username}, {user}, {date}, {time}, {seconds}, {number}, {points}, {rank}, {page}, and {duration}. These are replaced at runtime with live values. Keep every token exactly as written (including the curly braces) in your translated strings, or the substituted value will not appear.
This list matches the SDK version shown in the navigation. New keys may be added in later versions, see the Changelog.
Common
| Key | English default |
|---|---|
common.loading | Loading… |
common.retry | Retry |
common.cancel | Cancel |
common.save | Save |
common.close | Close |
common.send | Send |
common.search | Search |
common.delete | Delete |
common.confirm | Confirm |
common.back | Back |
common.done | Done |
common.error | Something went wrong |
common.connectionFailed | Connection failed |
common.noResults | No results found |
common.comingSoon | {page} - Coming soon |
common.dismiss | Dismiss |
common.goBack | Go back |
common.online | Online |
common.mainNavigation | Main navigation |
common.showPassword | Show password |
common.hidePassword | Hide password |
common.userAvatar | {username}'s avatar |
Time
| Key | English default |
|---|---|
time.justNow | Just now |
time.minutesAgo | {count}m ago |
time.hoursAgo | {count}h ago |
time.yesterday | Yesterday |
time.daysAgo | {count}d ago |
Navigation
| Key | English default |
|---|---|
nav.chat | Chat |
nav.friends | Friends |
nav.fanzone | Fanzone |
nav.profile | Profile |
nav.customTab | Custom |
Auth
| Key | English default |
|---|---|
auth.login.title | Welcome Back |
auth.login.subtitle | Sign in to join the conversation |
auth.login.emailPlaceholder | Email address |
auth.login.passwordPlaceholder | Password |
auth.login.forgotPassword | Forgot password? |
auth.login.submit | Sign In |
auth.login.noAccount | Don't have an account? |
auth.login.createOne | Create one |
auth.login.logoAlt | Logo |
auth.register.title | Create Account |
auth.register.subtitle | Join the community |
auth.register.submit | Sign Up |
auth.register.usernamePlaceholder | Username |
auth.register.emailPlaceholder | Email address |
auth.register.passwordPlaceholder | Password |
auth.register.confirmPasswordPlaceholder | Confirm password |
auth.register.createAccount | Create Account |
auth.register.hasAccount | Already have an account? |
auth.register.signIn | Sign in |
auth.forgot.title | Reset Password |
auth.forgot.heading | Forgot your password? |
auth.forgot.description | Enter your email and we'll send you a link to reset your password. |
auth.forgot.emailPlaceholder | Email address |
auth.forgot.submit | Send Reset Link |
auth.forgot.emailSent | Password reset email sent. Check your inbox. |
auth.forgot.genericError | Something went wrong. Please try again. |
auth.forgot.rememberPassword | Remember your password? |
auth.forgot.signIn | Sign in |
auth.verify.title | Verify Email |
auth.verify.heading | Check your inbox |
auth.verify.descriptionPrefix | We sent a verification email to |
auth.verify.descriptionFallbackEmail | your email address |
auth.verify.descriptionSuffix | Click the link in the email to verify your account. |
auth.verify.emailVerified | Email verified! You can now log in. |
auth.verify.resendSuccess | Verification email resent! |
auth.verify.resendFailed | Failed to resend verification email |
auth.verify.resendCooldown | Resend in {seconds}s |
auth.verify.resend | Resend Verification Email |
auth.verify.backToLogin | Back to Login |
auth.username.title | Choose a Username |
auth.username.subtitle | Pick a username to identify yourself in the chat. |
auth.username.placeholder | Enter username |
auth.username.continue | Continue |
auth.username.setFailed | Failed to set username |
auth.validation.emailRequired | Email is required |
auth.validation.emailInvalid | Enter a valid email address |
auth.validation.passwordRequired | Password is required |
auth.validation.passwordMinLength | Password must be at least 6 characters |
auth.validation.usernameRequired | Username is required |
auth.validation.usernameInvalid | Min 3 characters, letters and numbers only |
auth.validation.confirmPasswordRequired | Confirm your password |
auth.validation.passwordsMismatch | Passwords do not match |
auth.validation.emailInvalidShort | Invalid email address |
auth.validation.usernameMinLength | Username must be at least 3 characters |
auth.validation.usernameCharset | Username can only contain letters, numbers, and underscores |
auth.validation.confirmPasswordRequiredLong | Please confirm your password |
Bubble
| Key | English default |
|---|---|
bubble.openChat | Open chat |
bubble.closeChat | Close chat |
bubble.dialogLabel | Chat |
bubble.dismissGreeting | Dismiss |
Chat
| Key | English default |
|---|---|
chat.input.placeholder | Type a message… |
chat.input.unavailable | Chat is unavailable |
chat.input.openEmoji | Open emoji picker |
chat.input.openGif | Open GIF picker |
chat.input.recordVoice | Record voice message |
chat.input.send | Send message |
chat.input.messageLabel | Message input |
chat.loading | Loading chat… |
chat.connecting | Connecting… |
chat.users.title | Active Users |
chat.users.loading | Loading users… |
chat.users.empty | No users found |
chat.users.searchPlaceholder | Search users… |
chat.users.closeSidebar | Close sidebar |
chat.users.moderatorBadge | MOD |
chat.mention.empty | No users found |
chat.mention.suggestions | Mention suggestions |
chat.list.label | Chat messages |
chat.list.empty | No messages yet. Be the first to chat! |
chat.message.originalDeleted | Original message deleted |
chat.message.failed | Failed to send · Tap to retry |
chat.message.reported | Reported |
chat.message.attachmentAlt | Attachment |
chat.message.react | React to message |
chat.message.upvote | Upvote |
chat.message.removeUpvote | Remove upvote |
chat.message.report | Report message |
chat.message.moreOptions | More options |
chat.message.reply | Reply |
chat.message.forward | Forward |
chat.content.sharedAlt | Shared content |
chat.search.placeholder | Search messages… |
chat.search.label | Search messages |
chat.search.closeLabel | Close search |
chat.search.matchCount | {count} match |
chat.search.matchCountPlural | {count} matches |
chat.typing.one | {user} is typing |
chat.typing.two | {user1} and {user2} are typing |
chat.typing.many | {user} and {count} others are typing |
chat.reply.label | Replying to |
chat.reply.imagePlaceholder | [image] |
chat.reply.cancel | Cancel reply |
chat.linkPreview.youtubeThumbAlt | YouTube video thumbnail |
chat.linkPreview.imageAlt | Image |
chat.linkPreview.previewAlt | Preview |
chat.linkPreview.dismiss | Dismiss link preview |
chat.reaction.add | Add reaction |
chat.reaction.pick | Pick a reaction |
chat.emoji.recent | Recent |
chat.emoji.close | Close emoji picker |
chat.emoji.loading | Loading emojis… |
chat.emoji.noRecent | No recent emojis |
chat.emoji.empty | No emojis available |
chat.gif.searchPlaceholder | Search GIFs… |
chat.gif.close | Close GIF picker |
chat.gif.empty | No GIFs found |
chat.voice.recording | Recording |
chat.voice.cancel | Cancel recording |
chat.voice.send | Send voice message |
chat.audio.play | Play |
chat.audio.pause | Pause |
chat.image.dialogLabel | Image preview |
chat.image.fullAlt | Full size preview |
chat.image.close | Close preview |
chat.forward.label | Forward message |
chat.forward.title | Forward message |
chat.forward.tabEpisodes | Episodes |
chat.forward.tabRooms | Rooms |
chat.forward.noEpisodes | No other episodes available |
chat.forward.noRooms | No other rooms available |
Episodes & Rooms
| Key | English default |
|---|---|
episodes.error.load | Failed to load episodes |
rooms.error.load | Failed to load rooms |
episodes.title | Episodes |
episodes.live | Live |
episodes.empty.title | No episodes |
episodes.empty.description | There are no live episodes right now. Check back later. |
episodes.chat.title | Chat |
episodes.chat.action.rooms | Rooms |
episodes.chat.action.hashtagRooms | Hashtag rooms |
episodes.chat.action.suggestQuiz | Suggest quiz |
episodes.chat.action.createQuiz | Create quiz |
episodes.chat.action.search | Search |
episodes.chat.action.searchMessages | Search messages |
episodes.chat.action.resumeChat | Resume chat |
episodes.chat.action.pauseChat | Pause chat |
episodes.chat.action.activeUsers | Active users |
episodes.chat.newMessages | {count} new messages - Tap to resume |
episodes.chat.newMessage | {count} new message - Tap to resume |
episodes.chat.banned.timed | You are banned from this chat. Available in |
episodes.chat.banned.permanent | You have been banned from this chat. |
episodes.chat.readonly | Chat has been paused by a moderator. |
episodes.chat.error.loadMessages | Failed to load messages |
episodes.chat.error.loadOlderMessages | Failed to load older messages |
episodes.chat.message.reported | Message reported |
episodes.chat.error.reportMessage | Failed to report message |
episodes.chat.error.upvoteMessage | Failed to upvote message |
episodes.chat.message.forwarded | Message forwarded |
episodes.chat.error.forwardMessage | Failed to forward message |
rooms.title | Rooms |
rooms.search.placeholder | Search rooms... |
rooms.loading | Loading rooms... |
rooms.empty.title | No rooms |
rooms.empty.noMatch | No rooms match your search. |
rooms.empty.none | No rooms available for this episode. |
rooms.error.search | Search failed |
rooms.chat.title | Room |
rooms.chat.action.resumeChat | Resume chat |
rooms.chat.action.pauseChat | Pause chat |
rooms.chat.newMessages | {count} new messages - Tap to resume |
rooms.chat.newMessage | {count} new message - Tap to resume |
rooms.chat.banned.timed | You are banned from this chat. Available in |
rooms.chat.banned.permanent | You have been banned from this chat. |
rooms.chat.readonly | Chat has been paused by a moderator. |
rooms.chat.error.loadMessages | Failed to load messages |
rooms.chat.error.loadOlderMessages | Failed to load older messages |
rooms.chat.message.reported | Message reported |
rooms.chat.error.reportMessage | Failed to report message |
rooms.chat.error.upvoteMessage | Failed to upvote message |
rooms.chat.message.forwarded | Message forwarded |
rooms.chat.error.forwardMessage | Failed to forward message |
Profile, Friends, Badges & Leaderboard
| Key | English default |
|---|---|
profile.error.load | Failed to load profile |
badges.error.load | Failed to load badges |
leaderboard.error.load | Failed to load leaderboard |
profile.title | Profile |
profile.loading | Loading profile... |
profile.changeAvatar | Change avatar |
profile.epInfo | EP info |
profile.epBalance | {count} EP |
profile.memberSince | Since |
profile.stat.badges | Badges |
profile.stat.friends | Friends |
profile.stat.emojis | Emojis |
profile.stat.emojisSubtitle | Browse & unlock |
profile.stat.avatars | Avatars |
profile.stat.avatarsSubtitle | Customize look |
profile.stat.leaderboard | Leaderboard |
profile.stat.leaderboardSubtitle | Top earners |
profile.logout | Logout |
profile.avatar.updated | Avatar updated |
profile.avatar.updateError | Failed to update avatar |
profile.avatar.loadError | Failed to load avatars |
profile.avatar.loading | Loading avatars... |
profile.avatar.modalTitle | Choose Avatar |
profile.avatar.emptyTitle | No avatars yet |
profile.avatar.emptyDescription | Visit the Avatar Store to unlock some. |
profile.avatar.browseStore | Browse Avatar Store |
profile.ep.modalTitle | Experience Points (EP) |
profile.ep.intro | EP (Experience Points) are earned by being active in the community. The more you participate, the more EP you earn! |
profile.ep.waySendMessages | Sending messages in chat |
profile.ep.wayLikeMessages | Liking other people's messages |
profile.ep.wayAnswerQuizzes | Answering quizzes correctly |
profile.ep.wayEarnBadges | Earning badges and achievements |
profile.ep.wayDailyStreaks | Daily login streaks |
profile.ep.outro | EP can be used to unlock avatars, emoji packs, and other rewards in the store. |
profile.other.userNotFound | User not found |
profile.other.userNotFoundDescription | This user could not be found. |
profile.other.requestSent | Request Sent |
profile.other.addFriend | Add Friend |
profile.other.unfriend | Unfriend |
profile.other.moderation | Moderation |
profile.other.block | Block |
profile.other.report | Report |
profile.other.badges | Badges |
profile.other.friendRequestSent | Friend request sent to |
profile.other.friendRequestError | Failed to send friend request |
profile.other.unfriended | Unfriended |
profile.other.unfriendError | Failed to unfriend |
profile.other.blocked | Blocked |
profile.other.blockError | Failed to block user |
profile.other.reported | Reported |
profile.other.reportError | Failed to report user |
badges.title | Badges |
badges.loading | Loading badges... |
badges.emptyTitle | No badges |
badges.emptyDescription | There are no badges available yet. |
badges.modalDefaultTitle | Badge |
badges.earned | Earned |
badges.notEarned | Not yet earned |
leaderboard.title | Leaderboard |
leaderboard.rank | Rank |
leaderboard.emptyTitle | No Rankings Yet |
leaderboard.emptyDescription | The leaderboard is empty. Start chatting to earn EP and climb the ranks! |
leaderboard.you | (You) |
leaderboard.epBalance | {points} EP |
friends.title | Friends |
friends.tab.friends | Friends |
friends.tab.requests | Requests |
friends.tab.find | Find |
friends.loadError | Failed to load friends |
friends.loading | Loading friends... |
friends.unfriended | Unfriended |
friends.unfriendError | Failed to unfriend |
friends.emptyTitle | No friends yet |
friends.emptyDescription | Find and add friends to see them here. |
friends.findFriends | Find Friends |
friends.unfriend | Unfriend |
friends.epBalance | {count} EP |
friends.requests.loadError | Failed to load requests |
friends.requests.loading | Loading requests... |
friends.requests.accepted | Accepted |
friends.requests.acceptError | Failed to accept request |
friends.requests.rejectError | Failed to reject request |
friends.requests.emptyTitle | No pending requests |
friends.requests.emptyDescription | When someone sends you a friend request, it will appear here. |
friends.requests.accept | Accept |
friends.requests.reject | Reject |
friends.find.searchPlaceholder | Search users... |
friends.find.searchError | Search failed |
friends.find.loadMoreError | Failed to load more users |
friends.find.searching | Searching... |
friends.find.promptTitle | Find friends |
friends.find.promptDescription | Search for users by username to add them as friends. |
friends.find.noResultsTitle | No results |
friends.find.noResultsDescription | No users found matching your search. |
friends.find.requestSent | Request Sent |
friends.find.addFriend | Add Friend |
friends.find.friendRequestSent | Friend request sent to |
friends.find.friendRequestError | Failed to send friend request |
Fanzone
| Key | English default |
|---|---|
fanzone.error.load | Failed to load fanzone |
fanzone.title | Fanzones |
fanzone.loading | Loading fanzones... |
fanzone.empty.title | No fanzones |
fanzone.empty.description | There are no fanzones available yet. |
fanzone.error.loadList | Failed to load fanzones |
fanzone.episodeCount | {count} episodes |
fanzone.episodes.fallbackTitle | Fanzone |
fanzone.episodes.loading | Loading episodes... |
fanzone.episodes.empty.title | No episodes |
fanzone.episodes.empty.description | There are no episodes in this fanzone yet. |
fanzone.episodes.error.load | Failed to load episodes |
fanzone.episodes.live | Live |
Store
| Key | English default |
|---|---|
store.emoji.error.load | Failed to load emoji packs |
store.avatar.error.load | Failed to load avatars |
store.emoji.title | Emoji Store |
store.emoji.loading | Loading store... |
store.emoji.error.loadStore | Failed to load emoji store |
store.emoji.allCategories | All |
store.emoji.empty | No emoji packs available |
store.emoji.packCount | {count} emojis |
store.avatar.title | Avatar Store |
store.avatar.loading | Loading avatars... |
store.avatar.error.loadStore | Failed to load avatar store |
store.avatar.unlocked | Avatar unlocked! |
store.avatar.error.purchase | Failed to purchase avatar |
store.avatar.empty | No avatars available in the store |
store.avatar.owned | Owned |
store.avatar.unlock | Unlock |
Quiz & Poll
| Key | English default |
|---|---|
quiz.totalVotes | {count} votes |
quiz.voteOne | {count} vote |
quiz.voteOther | {count} votes |
quiz.creator.error.load | Failed to load quiz |
quiz.creator.created | Quiz created! |
quiz.creator.error.create | Failed to create quiz. Please try again. |
quiz.creator.success.heading | Thank You! |
quiz.creator.success.subtitle | Thank you for your participation |
quiz.creator.success.body | Your quiz suggestion has been sent for review. If selected, it will go live during the event. Keep an eye out to vote! |
quiz.creator.titleMod | Create Quiz |
quiz.creator.titleUser | Suggest a Quiz |
quiz.creator.question | Question |
quiz.creator.questionPlaceholder | Ask a question... |
quiz.creator.options | Options |
quiz.creator.optionPlaceholder | Option |
quiz.creator.removeOption | Remove option |
quiz.creator.addOption | + Add Option |
quiz.creator.duration | Duration (seconds) |
quiz.creator.submitMod | Create Quiz |
quiz.creator.submitUser | Submit Quiz |
quiz.popup.error.load | Failed to load quiz |
quiz.popup.error.submit | Failed to submit answer |
quiz.popup.title | Quiz Time |
quiz.popup.close | Close quiz |
quiz.popup.submitting | Submitting... |
quiz.popup.submit | Submit Answer |
quiz.results.pollLabel | Poll Results |
quiz.results.quizLabel | Quiz Results |
poll.error.load | Failed to load poll |
poll.error.submit | Failed to submit vote |
poll.title | Community Poll |
poll.close | Close poll |