mirror of
https://github.com/tooot-app/app
synced 2025-02-18 04:40:57 +01:00
Try out clean Crowdin source strings
This commit is contained in:
parent
267832dd15
commit
aab3d8d94d
Before Width: | Height: | Size: 383 KiB After Width: | Height: | Size: 383 KiB |
@ -88,7 +88,8 @@ const App: React.FC = () => {
|
||||
log('log', 'App', 'bootstrapped')
|
||||
if (bootstrapped) {
|
||||
log('log', 'App', 'loading actual app :)')
|
||||
i18n.changeLanguage(getSettingsLanguage(store.getState()))
|
||||
const language = getSettingsLanguage(store.getState())
|
||||
i18n.changeLanguage(language)
|
||||
return (
|
||||
<ActionSheetProvider>
|
||||
<AccessibilityManager>
|
||||
|
@ -35,7 +35,7 @@ export interface Props {
|
||||
}
|
||||
|
||||
const Screens: React.FC<Props> = ({ localCorrupt }) => {
|
||||
const { t } = useTranslation('common')
|
||||
const { t } = useTranslation('screens')
|
||||
const dispatch = useDispatch()
|
||||
const instanceActive = useSelector(getInstanceActive)
|
||||
const { mode, theme } = useTheme()
|
||||
@ -92,7 +92,7 @@ const Screens: React.FC<Props> = ({ localCorrupt }) => {
|
||||
const showLocalCorrect = () => {
|
||||
if (localCorrupt) {
|
||||
displayMessage({
|
||||
message: t('index.localCorrupt'),
|
||||
message: t('localCorrupt.message'),
|
||||
description: localCorrupt.length ? localCorrupt : undefined,
|
||||
type: 'error',
|
||||
mode
|
||||
|
@ -131,7 +131,7 @@ const ComponentInstance: React.FC<Props> = ({
|
||||
{!disableHeaderImage ? (
|
||||
<View style={styles.imageContainer}>
|
||||
<Image
|
||||
source={require('assets/screens/meRoot/welcome.png')}
|
||||
source={require('assets/images/welcome.png')}
|
||||
style={styles.image}
|
||||
/>
|
||||
</View>
|
||||
|
@ -41,7 +41,7 @@ const RelationshipIncoming: React.FC<Props> = ({ id }) => {
|
||||
displayMessage({
|
||||
type: 'error',
|
||||
mode,
|
||||
message: t('common:toastMessage.error.message', {
|
||||
message: t('common:message.error.message', {
|
||||
function: t(`relationship:${type}.function`)
|
||||
}),
|
||||
...(err.status &&
|
||||
|
@ -42,7 +42,7 @@ const RelationshipOutgoing = React.memo(
|
||||
displayMessage({
|
||||
mode,
|
||||
type: 'error',
|
||||
message: t('common:toastMessage.error.message', {
|
||||
message: t('common:message.error.message', {
|
||||
function: t(`${action}.function`)
|
||||
}),
|
||||
...(err.status &&
|
||||
|
@ -85,7 +85,7 @@ const TimelineActions: React.FC<Props> = ({
|
||||
displayMessage({
|
||||
mode,
|
||||
type: 'error',
|
||||
message: t('common:toastMessage.error.message', {
|
||||
message: t('common:message.error.message', {
|
||||
function: t(
|
||||
`shared.actions.${correctParam.payload.property}.function`
|
||||
)
|
||||
|
@ -59,7 +59,7 @@ const HeaderConversation = React.memo(
|
||||
displayMessage({
|
||||
mode,
|
||||
type: 'error',
|
||||
message: t('common:toastMessage.error.message', {
|
||||
message: t('common:message.error.message', {
|
||||
function: t(`shared.header.conversation.delete.function`)
|
||||
}),
|
||||
...(err.status &&
|
||||
|
@ -63,7 +63,7 @@ const TimelinePoll: React.FC<Props> = ({
|
||||
displayMessage({
|
||||
mode,
|
||||
type: 'error',
|
||||
message: t('common:toastMessage.error.message', {
|
||||
message: t('common:message.error.message', {
|
||||
// @ts-ignore
|
||||
function: t(`shared.poll.meta.button.${theParams.payload.type}`)
|
||||
}),
|
||||
@ -269,12 +269,14 @@ const TimelinePoll: React.FC<Props> = ({
|
||||
return (
|
||||
<Text style={[styles.votes, { color: theme.secondary }]}>
|
||||
{t('shared.poll.meta.count.voters', { count: poll.voters_count })}
|
||||
{' • '}
|
||||
</Text>
|
||||
)
|
||||
} else if (poll.votes_count !== null) {
|
||||
return (
|
||||
<Text style={[styles.votes, { color: theme.secondary }]}>
|
||||
{t('shared.poll.meta.count.votes', { count: poll.votes_count })}
|
||||
{' • '}
|
||||
</Text>
|
||||
)
|
||||
}
|
||||
|
@ -1,37 +1,16 @@
|
||||
export default {
|
||||
common: require('./common'),
|
||||
|
||||
local: require('./screens/local'),
|
||||
|
||||
public: require('./screens/public'),
|
||||
|
||||
notifications: require('./screens/notifications'),
|
||||
|
||||
meRoot: require('./screens/meRoot'),
|
||||
meConversations: require('./screens/meConversations'),
|
||||
meBookmarks: require('./screens/meBookmarks'),
|
||||
meFavourites: require('./screens/meFavourites'),
|
||||
meLists: require('./screens/meLists'),
|
||||
meListsList: require('./screens/meListsList'),
|
||||
meSettings: require('./screens/meSettings'),
|
||||
meSettingsFontsize: require('./screens/meSettingsFontsize'),
|
||||
meSettingsPush: require('./screens/meSettingsPush'),
|
||||
meSwitch: require('./screens/meSwitch'),
|
||||
|
||||
sharedAccount: require('./screens/sharedAccount'),
|
||||
sharedAnnouncements: require('./screens/sharedAnnouncements'),
|
||||
sharedAttachments: require('./screens/sharedAttachments'),
|
||||
sharedCompose: require('./screens/sharedCompose'),
|
||||
sharedSearch: require('./screens/sharedSearch'),
|
||||
sharedToot: require('./screens/sharedToot'),
|
||||
sharedUsers: require('./screens/sharedUsers'),
|
||||
screens: require('./screens'),
|
||||
screenActions: require('./screens/actions'),
|
||||
screenAnnouncements: require('./screens/announcements'),
|
||||
screenCompose: require('./screens/compose'),
|
||||
screenImageViewer: require('./screens/imageViewer'),
|
||||
screenTabs: require('./screens/tabs'),
|
||||
|
||||
componentInstance: require('./components/instance'),
|
||||
componentParse: require('./components/parse'),
|
||||
componentRelationship: require('./components/relationship'),
|
||||
componentRelativeTime: require('./components/relativeTime'),
|
||||
componentTimeline: require('./components/timeline'),
|
||||
|
||||
screenActions: require('./screens/screenActions'),
|
||||
screenImageViewer: require('./screens/screenImageViewer')
|
||||
componentTimeline: require('./components/timeline')
|
||||
}
|
||||
|
@ -1,23 +1,9 @@
|
||||
{
|
||||
"network": {
|
||||
"disconnected": {
|
||||
"message": "Lost network connection",
|
||||
"description": "Please check your phone's network setting"
|
||||
}
|
||||
},
|
||||
"screenshot": {
|
||||
"title": "Privacy Protection",
|
||||
"message": "Please do not disclose other user's identity, such as username, avatar, etc. Thank you!",
|
||||
"button": "Confirm"
|
||||
},
|
||||
"index": {
|
||||
"localCorrupt": "Login expired, please login again"
|
||||
},
|
||||
"buttons": {
|
||||
"apply": "Apply",
|
||||
"cancel": "Cancel"
|
||||
},
|
||||
"toastMessage": {
|
||||
"message": {
|
||||
"success": {
|
||||
"message": "{{function}} succeed"
|
||||
},
|
||||
|
@ -1,9 +1,9 @@
|
||||
{
|
||||
"strings": {
|
||||
"prefixAgo": null,
|
||||
"prefixFromNow": null,
|
||||
"prefixAgo": "",
|
||||
"prefixFromNow": "",
|
||||
"suffixAgo": "ago",
|
||||
"suffixFromNow": null,
|
||||
"suffixFromNow": "",
|
||||
"seconds": "%d seconds",
|
||||
"minute": "about a minute",
|
||||
"minutes": "%d minutes",
|
||||
|
@ -149,10 +149,10 @@
|
||||
"refresh": "Refresh"
|
||||
},
|
||||
"count": {
|
||||
"voters": "{{count}} user voted • ",
|
||||
"voters_plural": "{{count}} users voted • ",
|
||||
"votes": "{{count}} vote • ",
|
||||
"votes_plural": "{{count}} votes • "
|
||||
"voters": "{{count}} user voted",
|
||||
"voters_plural": "{{count}} users voted",
|
||||
"votes": "{{count}} vote",
|
||||
"votes_plural": "{{count}} votes"
|
||||
},
|
||||
"expiration": {
|
||||
"expired": "Vote expired",
|
||||
|
20
src/i18n/en/screens.json
Normal file
20
src/i18n/en/screens.json
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
"network": {
|
||||
"disconnected": {
|
||||
"message": "Lost network connection",
|
||||
"description": "Please check your phone's network setting"
|
||||
}
|
||||
},
|
||||
"screenshot": {
|
||||
"title": "Privacy Protection",
|
||||
"message": "Please do not disclose other user's identity, such as username, avatar, etc. Thank you!",
|
||||
"button": "Confirm"
|
||||
},
|
||||
"localCorrupt": {
|
||||
"message": "Login expired, please login again"
|
||||
},
|
||||
"pushError": {
|
||||
"message": "Push service error",
|
||||
"description": "Please re-enable push notification in settings"
|
||||
}
|
||||
}
|
@ -4,7 +4,7 @@
|
||||
"published": "Published <0 />",
|
||||
"button": {
|
||||
"read": "Read",
|
||||
"unread": "Mark read"
|
||||
"unread": "Mark as read"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
{
|
||||
"heading": "Following"
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
{
|
||||
"heading": "Bookmarks"
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
{
|
||||
"heading": "Direct Messages"
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
{
|
||||
"heading": "Favourites"
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
{
|
||||
"heading": "Lists"
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
{
|
||||
"heading": "List: {{list}}"
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
{
|
||||
"content": {
|
||||
"collections": {
|
||||
"conversations": "$t(meConversations:heading)",
|
||||
"bookmarks": "$t(meBookmarks:heading)",
|
||||
"favourites": "$t(meFavourites:heading)",
|
||||
"lists": "$t(meLists:heading)",
|
||||
"announcements": {
|
||||
"heading": "$t(sharedAnnouncements:heading)",
|
||||
"content": {
|
||||
"unread": "{{amount}} unread",
|
||||
"read": "All read",
|
||||
"empty": "None"
|
||||
}
|
||||
}
|
||||
},
|
||||
"accountSettings": "Account Settings",
|
||||
"appSettings": "$t(meSettings:heading)",
|
||||
"logout": {
|
||||
"button": "Log out",
|
||||
"alert": {
|
||||
"title": "Logging out?",
|
||||
"message": "After logging out, you need to log in again",
|
||||
"buttons": {
|
||||
"logout": "Logout",
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,65 +0,0 @@
|
||||
{
|
||||
"heading": "Settings",
|
||||
"content": {
|
||||
"push": {
|
||||
"heading": "$t(meSettingsPush:heading)",
|
||||
"content": {
|
||||
"enabled": "Enabled",
|
||||
"disabled": "Disabled"
|
||||
}
|
||||
},
|
||||
"fontsize": {
|
||||
"heading": "$t(meSettingsFontsize:heading)",
|
||||
"content": {
|
||||
"S": "$t(meSettingsFontsize:content.sizes.S)",
|
||||
"M": "$t(meSettingsFontsize:content.sizes.M)",
|
||||
"L": "$t(meSettingsFontsize:content.sizes.L)",
|
||||
"XL": "$t(meSettingsFontsize:content.sizes.XL)",
|
||||
"XXL": "$t(meSettingsFontsize:content.sizes.XXL)"
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"heading": "Language",
|
||||
"options": {
|
||||
"en": "English",
|
||||
"zh-Hans": "简体中文",
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
}
|
||||
},
|
||||
"theme": {
|
||||
"heading": "Appearance",
|
||||
"options": {
|
||||
"auto": "As system",
|
||||
"light": "Light mode",
|
||||
"dark": "Dark mode",
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
}
|
||||
},
|
||||
"browser": {
|
||||
"heading": "Opening link",
|
||||
"options": {
|
||||
"internal": "Inside app",
|
||||
"external": "Use system browser",
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
}
|
||||
},
|
||||
"cache": {
|
||||
"heading": "Clear cache",
|
||||
"empty": "Cache empty"
|
||||
},
|
||||
"support": {
|
||||
"heading": "Support tooot"
|
||||
},
|
||||
"review": {
|
||||
"heading": "Review tooot"
|
||||
},
|
||||
"contact": {
|
||||
"heading": "Contact tooot"
|
||||
},
|
||||
"analytics": {
|
||||
"heading": "Help us improve",
|
||||
"description": "Collecting only non-user relative usage"
|
||||
},
|
||||
"version": "Version v{{version}}"
|
||||
}
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
{
|
||||
"heading": "Toot Font Size",
|
||||
"content": {
|
||||
"showcase": "Example toot",
|
||||
"demo": "<p>This is a demo toot😊. You can choose from several options from below.<br /><br />This setting only affects the main content of toots, but not other font sizes.</p>",
|
||||
"availableSizes": "Available sizes",
|
||||
"sizes": {
|
||||
"S": "S",
|
||||
"M": "M - Default",
|
||||
"L": "L",
|
||||
"XL": "XL",
|
||||
"XXL": "XXL"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
{
|
||||
"heading": "Push Notification",
|
||||
"content": {
|
||||
"enable": {
|
||||
"direct": "Enable push notification",
|
||||
"settings": "Enable in settings"
|
||||
},
|
||||
"global": {
|
||||
"heading": "Enable push notification",
|
||||
"description": "Messages are routed through tooot's server"
|
||||
},
|
||||
"decode": {
|
||||
"heading": "Show message details",
|
||||
"description": "Messages routed through tooot's server are encrypted, but you can choose to decode the message on the server. Our server source code is open source, and no log policy."
|
||||
},
|
||||
"default": {
|
||||
"heading": "Default"
|
||||
},
|
||||
"follow": {
|
||||
"heading": "New follower"
|
||||
},
|
||||
"favourite": {
|
||||
"heading": "Favourited"
|
||||
},
|
||||
"reblog": {
|
||||
"heading": "Boosted"
|
||||
},
|
||||
"mention": {
|
||||
"heading": "Mentioned you"
|
||||
},
|
||||
"poll": {
|
||||
"heading": "Poll updates"
|
||||
},
|
||||
"howitworks": "Learn how routing works"
|
||||
},
|
||||
"error": {
|
||||
"message": "Push service error",
|
||||
"description": "Please re-enable push notification in settings"
|
||||
}
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
{
|
||||
"heading": "Switch Account",
|
||||
"content": {
|
||||
"existing": "Choose from logged in",
|
||||
"new": "Log in to instance"
|
||||
}
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
{
|
||||
"heading": "Notifications"
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
{
|
||||
"heading": {
|
||||
"segments": {
|
||||
"left": "Federated",
|
||||
"right": "Local"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
{
|
||||
"content": {
|
||||
"moved": "User moved",
|
||||
"created_at": "Registered: {{date}}",
|
||||
"summary": {
|
||||
"statuses_count": "{{count}} toots",
|
||||
"following_count": "$t(sharedUsers:heading.accounts.following)",
|
||||
"followers_count": "$t(sharedUsers:heading.accounts.followers)"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
{
|
||||
"heading": "<0 />\"s <1>media</1>"
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
{
|
||||
"content": {
|
||||
"header": {
|
||||
"prefix": "Search",
|
||||
"placeholder": "for..."
|
||||
},
|
||||
"empty": {
|
||||
"general": "Enter keyword to search for <bold>$t(sharedSearch:content.sections.accounts)</bold>、<bold>$t(sharedSearch:content.sections.hashtags)</bold> or <bold>$t(sharedSearch:content.sections.statuses)</bold>",
|
||||
"advanced": {
|
||||
"header": "Advanced search",
|
||||
"example": {
|
||||
"account": "$t(sharedSearch:content.header.prefix)$t(sharedSearch:content.sections.accounts)",
|
||||
"hashtag": "$t(sharedSearch:content.header.prefix)$t(sharedSearch:content.sections.hashtags)",
|
||||
"statusLink": "$t(sharedSearch:content.header.prefix)$t(sharedSearch:content.sections.statuses)",
|
||||
"accountLink": "$t(sharedSearch:content.header.prefix)$t(sharedSearch:content.sections.accounts)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sections": {
|
||||
"accounts": "User",
|
||||
"hashtags": "Hashtag",
|
||||
"statuses": "Toot"
|
||||
},
|
||||
"notFound": "Cannot find <bold>{{searchTerm}}</bold> related {{type}}"
|
||||
}
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
{
|
||||
"heading": "Discussions"
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
{
|
||||
"heading": {
|
||||
"accounts": {
|
||||
"following": "Following {{count}}",
|
||||
"followers": "{{count}} followers"
|
||||
},
|
||||
"statuses": {
|
||||
"reblogged_by": "{{count}} boosted",
|
||||
"favourited_by": "{{count}} favourited"
|
||||
}
|
||||
}
|
||||
}
|
233
src/i18n/en/screens/tabs.json
Normal file
233
src/i18n/en/screens/tabs.json
Normal file
@ -0,0 +1,233 @@
|
||||
{
|
||||
"tabs": {
|
||||
"local": {
|
||||
"name": "Following"
|
||||
},
|
||||
"public": {
|
||||
"name": "",
|
||||
"segments": {
|
||||
"left": "Federated",
|
||||
"right": "Local"
|
||||
}
|
||||
},
|
||||
"notifications": {
|
||||
"name": "Notifications"
|
||||
},
|
||||
"me": {
|
||||
"name": "About me"
|
||||
}
|
||||
},
|
||||
"me": {
|
||||
"stacks": {
|
||||
"bookmarks": {
|
||||
"name": "Bookmarks"
|
||||
},
|
||||
"conversations": {
|
||||
"name": "Direct Messages"
|
||||
},
|
||||
"favourites": {
|
||||
"name": "Favourites"
|
||||
},
|
||||
"fontSize": {
|
||||
"name": "Toot Font Size"
|
||||
},
|
||||
"lists": {
|
||||
"name": "Lists"
|
||||
},
|
||||
"list": {
|
||||
"name": "List: {{list}}"
|
||||
},
|
||||
"push": {
|
||||
"name": "Push Notification"
|
||||
},
|
||||
"settings": {
|
||||
"name": "Settings"
|
||||
},
|
||||
"switch": {
|
||||
"name": "Switch Account"
|
||||
}
|
||||
},
|
||||
"fontSize": {
|
||||
"showcase": "Example toot",
|
||||
"demo": "<p>This is a demo toot😊. You can choose from several options from below.<br /><br />This setting only affects the main content of toots, but not other font sizes.</p>",
|
||||
"availableSizes": "Available sizes",
|
||||
"sizes": {
|
||||
"S": "S",
|
||||
"M": "M - Default",
|
||||
"L": "L",
|
||||
"XL": "XL",
|
||||
"XXL": "XXL"
|
||||
}
|
||||
},
|
||||
"push": {
|
||||
"enable": {
|
||||
"direct": "Enable push notification",
|
||||
"settings": "Enable in settings"
|
||||
},
|
||||
"global": {
|
||||
"heading": "Enable push notification",
|
||||
"description": "Messages are routed through tooot's server"
|
||||
},
|
||||
"decode": {
|
||||
"heading": "Show message details",
|
||||
"description": "Messages routed through tooot's server are encrypted, but you can choose to decode the message on the server. Our server source code is open source, and no log policy."
|
||||
},
|
||||
"default": {
|
||||
"heading": "Default"
|
||||
},
|
||||
"follow": {
|
||||
"heading": "New follower"
|
||||
},
|
||||
"favourite": {
|
||||
"heading": "Favourited"
|
||||
},
|
||||
"reblog": {
|
||||
"heading": "Boosted"
|
||||
},
|
||||
"mention": {
|
||||
"heading": "Mentioned you"
|
||||
},
|
||||
"poll": {
|
||||
"heading": "Poll updates"
|
||||
},
|
||||
"howitworks": "Learn how routing works"
|
||||
},
|
||||
"root": {
|
||||
"announcements": {
|
||||
"content": {
|
||||
"unread": "{{amount}} unread",
|
||||
"read": "All read",
|
||||
"empty": "None"
|
||||
}
|
||||
},
|
||||
"logout": {
|
||||
"button": "Log out",
|
||||
"alert": {
|
||||
"title": "Logging out?",
|
||||
"message": "After logging out, you need to log in again",
|
||||
"buttons": {
|
||||
"logout": "Logout",
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
"push": {
|
||||
"heading": "$t(me.stacks.push.name)",
|
||||
"content": {
|
||||
"enabled": "Enabled",
|
||||
"disabled": "Disabled"
|
||||
}
|
||||
},
|
||||
"fontsize": {
|
||||
"heading": "$t(me.stacks.fontSize.name)",
|
||||
"content": {
|
||||
"S": "$t(me.fontSize.sizes.S)",
|
||||
"M": "$t(me.fontSize.sizes.M)",
|
||||
"L": "$t(me.fontSize.sizes.L)",
|
||||
"XL": "$t(me.fontSize.sizes.XL)",
|
||||
"XXL": "$t(me.fontSize.sizes.XXL)"
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"heading": "Language",
|
||||
"options": {
|
||||
"en": "English",
|
||||
"zh-Hans": "简体中文",
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
}
|
||||
},
|
||||
"theme": {
|
||||
"heading": "Appearance",
|
||||
"options": {
|
||||
"auto": "As system",
|
||||
"light": "Light mode",
|
||||
"dark": "Dark mode",
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
}
|
||||
},
|
||||
"browser": {
|
||||
"heading": "Opening link",
|
||||
"options": {
|
||||
"internal": "Inside app",
|
||||
"external": "Use system browser",
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
}
|
||||
},
|
||||
"cache": {
|
||||
"heading": "Clear cache",
|
||||
"empty": "Cache empty"
|
||||
},
|
||||
"support": {
|
||||
"heading": "Support tooot"
|
||||
},
|
||||
"review": {
|
||||
"heading": "Review tooot"
|
||||
},
|
||||
"contact": {
|
||||
"heading": "Contact tooot"
|
||||
},
|
||||
"analytics": {
|
||||
"heading": "Help us improve",
|
||||
"description": "Collecting only non-user relative usage"
|
||||
},
|
||||
"version": "Version v{{version}}"
|
||||
},
|
||||
"switch": {
|
||||
"existing": "Choose from logged in",
|
||||
"new": "Log in to instance"
|
||||
}
|
||||
},
|
||||
"shared": {
|
||||
"account": {
|
||||
"moved": "User moved",
|
||||
"created_at": "Registered on: {{date}}",
|
||||
"summary": {
|
||||
"statuses_count": "{{count}} toots",
|
||||
"following_count": "$t(shared.users.accounts.following)",
|
||||
"followers_count": "$t(shared.users.accounts.followers)"
|
||||
}
|
||||
},
|
||||
"attachments": {
|
||||
"name": "<0 /><1>\"s media</1>"
|
||||
},
|
||||
"search": {
|
||||
"header": {
|
||||
"prefix": "Searching",
|
||||
"placeholder": "for..."
|
||||
},
|
||||
"empty": {
|
||||
"general": "Enter keyword to search for <bold>$t(screenTabs:shared.search.sections.accounts)</bold>、<bold>$t(screenTabs:shared.search.sections.hashtags)</bold> or <bold>$t(screenTabs:shared.search.sections.statuses)</bold>",
|
||||
"advanced": {
|
||||
"header": "Advanced search",
|
||||
"example": {
|
||||
"account": "$t(shared.search.header.prefix) $t(shared.search.sections.accounts)",
|
||||
"hashtag": "$t(shared.search.header.prefix) $t(shared.search.sections.hashtags)",
|
||||
"statusLink": "$t(shared.search.header.prefix) $t(shared.search.sections.statuses)",
|
||||
"accountLink": "$t(shared.search.header.prefix) $t(shared.search.sections.accounts)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sections": {
|
||||
"accounts": "User",
|
||||
"hashtags": "Hashtag",
|
||||
"statuses": "Toot"
|
||||
},
|
||||
"notFound": "Cannot find <bold>{{searchTerm}}</bold> related {{type}}"
|
||||
},
|
||||
"toot": {
|
||||
"name": "Discussions"
|
||||
},
|
||||
"users": {
|
||||
"accounts": {
|
||||
"following": "Following {{count}}",
|
||||
"followers": "{{count}} followers"
|
||||
},
|
||||
"statuses": {
|
||||
"reblogged_by": "{{count}} boosted",
|
||||
"favourited_by": "{{count}} favourited"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
6
src/i18n/locales.ts
Normal file
6
src/i18n/locales.ts
Normal file
@ -0,0 +1,6 @@
|
||||
const LOCALES = {
|
||||
en: 'English',
|
||||
'zh-Hans': '简体中文'
|
||||
} as {en: string}
|
||||
|
||||
export { LOCALES }
|
@ -1,37 +1,16 @@
|
||||
export default {
|
||||
common: require('./common'),
|
||||
|
||||
local: require('./screens/local'),
|
||||
|
||||
public: require('./screens/public'),
|
||||
|
||||
notifications: require('./screens/notifications'),
|
||||
|
||||
meRoot: require('./screens/meRoot'),
|
||||
meConversations: require('./screens/meConversations'),
|
||||
meBookmarks: require('./screens/meBookmarks'),
|
||||
meFavourites: require('./screens/meFavourites'),
|
||||
meLists: require('./screens/meLists'),
|
||||
meListsList: require('./screens/meListsList'),
|
||||
meSettings: require('./screens/meSettings'),
|
||||
meSettingsFontsize: require('./screens/meSettingsFontsize'),
|
||||
meSettingsPush: require('./screens/meSettingsPush'),
|
||||
meSwitch: require('./screens/meSwitch'),
|
||||
|
||||
sharedAccount: require('./screens/sharedAccount'),
|
||||
sharedAnnouncements: require('./screens/sharedAnnouncements'),
|
||||
sharedAttachments: require('./screens/sharedAttachments'),
|
||||
sharedCompose: require('./screens/sharedCompose'),
|
||||
sharedSearch: require('./screens/sharedSearch'),
|
||||
sharedToot: require('./screens/sharedToot'),
|
||||
sharedUsers: require('./screens/sharedUsers'),
|
||||
screens: require('./screens'),
|
||||
screenActions: require('./screens/actions'),
|
||||
screenAnnouncements: require('./screens/announcements'),
|
||||
screenCompose: require('./screens/compose'),
|
||||
screenImageViewer: require('./screens/imageViewer'),
|
||||
screenTabs: require('./screens/tabs'),
|
||||
|
||||
componentInstance: require('./components/instance'),
|
||||
componentParse: require('./components/parse'),
|
||||
componentRelationship: require('./components/relationship'),
|
||||
componentRelativeTime: require('./components/relativeTime'),
|
||||
componentTimeline: require('./components/timeline'),
|
||||
|
||||
screenActions: require('./screens/screenActions'),
|
||||
screenImageViewer: require('./screens/screenImageViewer')
|
||||
componentTimeline: require('./components/timeline')
|
||||
}
|
||||
|
@ -1,32 +0,0 @@
|
||||
{
|
||||
"network": {
|
||||
"disconnected": {
|
||||
"message": "无法连接到网络",
|
||||
"description": "请检查手机设置里的网络连接"
|
||||
}
|
||||
},
|
||||
"screenshot": {
|
||||
"title": "隐私保护",
|
||||
"message": "请确保不要泄露其它用户的敏感信息,例如用户名、头像等,谢谢!",
|
||||
"button": "好的"
|
||||
},
|
||||
"index": {
|
||||
"localCorrupt": "登录已过期,请重新登录"
|
||||
},
|
||||
"buttons": {
|
||||
"apply": "应用",
|
||||
"cancel": "取消"
|
||||
},
|
||||
"toastMessage": {
|
||||
"success": {
|
||||
"message": "{{function}}成功"
|
||||
},
|
||||
"warning": {
|
||||
"message": ""
|
||||
},
|
||||
"error": {
|
||||
"message": "{{function}}失败,请重试"
|
||||
}
|
||||
},
|
||||
"separator": ","
|
||||
}
|
@ -1,28 +0,0 @@
|
||||
{
|
||||
"server": {
|
||||
"textInput": {
|
||||
"placeholder": "输入社区服务器地址"
|
||||
},
|
||||
"button": "登录",
|
||||
"information": {
|
||||
"name": "社区名称",
|
||||
"accounts": "用户总数",
|
||||
"statuses": "嘟文总数",
|
||||
"domains": "连结总数"
|
||||
},
|
||||
"disclaimer": {
|
||||
"base": "登录过程将使用系统浏览器,你的账号登录信息tooot应用无法读取。详见 ",
|
||||
"privacy": "隐私条款"
|
||||
}
|
||||
},
|
||||
"update": {
|
||||
"alert": {
|
||||
"title": "此社区已登录",
|
||||
"message": "你可以登录同个社区的另一个账号,不影响已登录的账号",
|
||||
"buttons": {
|
||||
"cancel": "$t(common:buttons.cancel)",
|
||||
"continue": "继续"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
{
|
||||
"HTML": {
|
||||
"expanded": {
|
||||
"true": "折叠{{hint}}",
|
||||
"false": "展开{{hint}}"
|
||||
},
|
||||
"defaultHint": "全文"
|
||||
}
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
{
|
||||
"follow": {
|
||||
"function": "关注"
|
||||
},
|
||||
"block": {
|
||||
"function": "屏蔽"
|
||||
},
|
||||
"button": {
|
||||
"error": "读取错误",
|
||||
"blocked_by": "被用户屏蔽",
|
||||
"blocking": "取消屏蔽",
|
||||
"following": "取消关注",
|
||||
"requested": "取消关注请求",
|
||||
"default": "关注"
|
||||
}
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
{
|
||||
"strings": {
|
||||
"prefixAgo": null,
|
||||
"prefixFromNow": null,
|
||||
"suffixAgo": "前",
|
||||
"suffixFromNow": "后",
|
||||
"seconds": "%d秒",
|
||||
"minute": "1分钟",
|
||||
"minutes": "%d分钟",
|
||||
"hour": "1小时",
|
||||
"hours": "%d小时",
|
||||
"day": "1天",
|
||||
"days": "%d天",
|
||||
"month": "1个月",
|
||||
"months": "%d月",
|
||||
"year": "大约1年",
|
||||
"years": "%d年",
|
||||
"wordSeparator": ""
|
||||
}
|
||||
}
|
@ -1,162 +0,0 @@
|
||||
{
|
||||
"empty": {
|
||||
"error": {
|
||||
"message": "加载错误",
|
||||
"button": "重试"
|
||||
},
|
||||
"success": {
|
||||
"message": "空无一物"
|
||||
}
|
||||
},
|
||||
"end": {
|
||||
"message": "居然刷到底了,喝杯 <0 /> 吧"
|
||||
},
|
||||
"refresh": {
|
||||
"fetchPreviousPage": "较新于此的嘟嘟",
|
||||
"refetch": "最新的嘟嘟"
|
||||
},
|
||||
"shared": {
|
||||
"actioned": {
|
||||
"pinned": "置顶",
|
||||
"favourite": "{{name}} 喜欢了你的嘟文",
|
||||
"status": "{{name}} 刚刚发嘟",
|
||||
"follow": "{{name}} 开始关注你",
|
||||
"follow_request": "{{name}} 请求关注你",
|
||||
"poll": "你参与的投票已结束",
|
||||
"reblog": {
|
||||
"default": "{{name}} 转嘟了",
|
||||
"notification": "{{name}} 转嘟了你的嘟文"
|
||||
}
|
||||
},
|
||||
"actions": {
|
||||
"favourited": {
|
||||
"function": "喜欢嘟文"
|
||||
},
|
||||
"reblogged": {
|
||||
"function": "转嘟"
|
||||
},
|
||||
"bookmarked": {
|
||||
"function": "喜欢嘟文"
|
||||
}
|
||||
},
|
||||
"actionsUsers": {
|
||||
"reblogged_by": "$t(sharedUsers:heading.statuses.reblogged_by)",
|
||||
"favourited_by": "$t(sharedUsers:heading.statuses.favourited_by)"
|
||||
},
|
||||
"attachment": {
|
||||
"sensitive": {
|
||||
"button": "显示敏感内容"
|
||||
},
|
||||
"unsupported": {
|
||||
"text": "附件读取错误",
|
||||
"button": "尝试远程链接"
|
||||
}
|
||||
},
|
||||
"content": {
|
||||
"expandHint": "隐藏内容"
|
||||
},
|
||||
"fullConversation": "阅读全部对话",
|
||||
"header": {
|
||||
"shared": {
|
||||
"application": "发自于 {{application}}"
|
||||
},
|
||||
"conversation": {
|
||||
"withAccounts": "与",
|
||||
"delete": {
|
||||
"function": "删除私信"
|
||||
}
|
||||
},
|
||||
"actions": {
|
||||
"account": {
|
||||
"heading": "关于用户",
|
||||
"mute": {
|
||||
"function": "隐藏 @{{acct}} 的嘟文",
|
||||
"button": "隐藏 @{{acct}} 的嘟文"
|
||||
},
|
||||
"block": {
|
||||
"function": "屏蔽 @{{acct}}",
|
||||
"button": "屏蔽 @{{acct}}"
|
||||
},
|
||||
"reports": {
|
||||
"function": "举报 @{{acct}}",
|
||||
"button": "举报 @{{acct}}"
|
||||
}
|
||||
},
|
||||
"domain": {
|
||||
"heading": "关于社区",
|
||||
"block": {
|
||||
"function": "屏蔽社区",
|
||||
"button": "屏蔽社区 {{domain}}"
|
||||
},
|
||||
"alert": {
|
||||
"title": "确定要屏蔽 {{domain}} 吗?",
|
||||
"message": "多数情况下,隐藏或屏蔽特定用户即可。\n\n屏蔽之后,来自此社区的所有内容将不再出现在你的时间轴里。同时,来自该社区的关注者将被移除。请谨慎使用。",
|
||||
"buttons": {
|
||||
"confirm": "确定屏蔽整个社区",
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"share": {
|
||||
"status": {
|
||||
"heading": "分享嘟文",
|
||||
"button": "分享此条嘟文的链接"
|
||||
},
|
||||
"account": {
|
||||
"heading": "分享用户",
|
||||
"button": "分享此用户的链接"
|
||||
}
|
||||
},
|
||||
"status": {
|
||||
"heading": "关于嘟文",
|
||||
"delete": {
|
||||
"function": "删除",
|
||||
"button": "删除此条嘟文"
|
||||
},
|
||||
"edit": {
|
||||
"function": "删除",
|
||||
"button": "删除并重新编辑此条嘟文",
|
||||
"alert": {
|
||||
"title": "确认删除嘟文?",
|
||||
"message": "确定要删除这条嘟文并重新编辑它吗?所有相关的转嘟和喜欢都会被清除,回复将会失去关联。",
|
||||
"buttons": {
|
||||
"confirm": "删除并重新编辑",
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"mute": {
|
||||
"function": "静音",
|
||||
"button": {
|
||||
"positive": "静音此条嘟文及对话",
|
||||
"negative": "取消静音此条嘟文及对话"
|
||||
}
|
||||
},
|
||||
"pin": {
|
||||
"function": "置顶",
|
||||
"button": {
|
||||
"positive": "置顶此条嘟文",
|
||||
"negative": "取消置顶此条嘟文"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"poll": {
|
||||
"meta": {
|
||||
"button": {
|
||||
"vote": "投票",
|
||||
"refresh": "刷新"
|
||||
},
|
||||
"count": {
|
||||
"voters": "已投{{count}}人 • ",
|
||||
"votes": "已投{{count}}票 • "
|
||||
},
|
||||
"expiration": {
|
||||
"expired": "投票已结束",
|
||||
"until": "<0 />截止"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
{
|
||||
"heading": "我的关注"
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
{
|
||||
"heading": "书签",
|
||||
"content": {}
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
{
|
||||
"heading": "私信",
|
||||
"content": {}
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
{
|
||||
"heading": "喜欢",
|
||||
"content": {}
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
{
|
||||
"heading": "列表",
|
||||
"content": {}
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
{
|
||||
"heading": "列表:{{list}}",
|
||||
"content": {}
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
{
|
||||
"content": {
|
||||
"collections": {
|
||||
"conversations": "$t(meConversations:heading)",
|
||||
"bookmarks": "$t(meBookmarks:heading)",
|
||||
"favourites": "$t(meFavourites:heading)",
|
||||
"lists": "$t(meLists:heading)",
|
||||
"announcements": {
|
||||
"heading": "$t(sharedAnnouncements:heading)",
|
||||
"content": {
|
||||
"unread": "{{amount}} 条未读公告",
|
||||
"read": "无未读公告",
|
||||
"empty": "无公告"
|
||||
}
|
||||
}
|
||||
},
|
||||
"accountSettings": "账户设置",
|
||||
"appSettings": "$t(meSettings:heading)",
|
||||
"logout": {
|
||||
"button": "退出当前账号",
|
||||
"alert": {
|
||||
"title": "确认退出登录?",
|
||||
"message": "退出登录后,需要重新认证账号",
|
||||
"buttons": {
|
||||
"logout": "退出登录",
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,65 +0,0 @@
|
||||
{
|
||||
"heading": "设置",
|
||||
"content": {
|
||||
"push": {
|
||||
"heading": "$t(meSettingsPush:heading)",
|
||||
"content": {
|
||||
"enabled": "已开启",
|
||||
"disabled": "已关闭"
|
||||
}
|
||||
},
|
||||
"fontsize": {
|
||||
"heading": "$t(meSettingsFontsize:heading)",
|
||||
"content": {
|
||||
"S": "$t(meSettingsFontsize:content.sizes.S)",
|
||||
"M": "$t(meSettingsFontsize:content.sizes.M)",
|
||||
"L": "$t(meSettingsFontsize:content.sizes.L)",
|
||||
"XL": "$t(meSettingsFontsize:content.sizes.XL)",
|
||||
"XXL": "$t(meSettingsFontsize:content.sizes.XXL)"
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"heading": "切换语言",
|
||||
"options": {
|
||||
"en": "English",
|
||||
"zh-Hans": "简体中文",
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
}
|
||||
},
|
||||
"theme": {
|
||||
"heading": "应用外观",
|
||||
"options": {
|
||||
"auto": "跟随系统",
|
||||
"light": "浅色模式",
|
||||
"dark": "深色模式",
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
}
|
||||
},
|
||||
"browser": {
|
||||
"heading": "外部链接",
|
||||
"options": {
|
||||
"internal": "应用内打开",
|
||||
"external": "浏览器打开",
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
}
|
||||
},
|
||||
"cache": {
|
||||
"heading": "清空缓存",
|
||||
"empty": "暂无缓存"
|
||||
},
|
||||
"support": {
|
||||
"heading": "赞助 tooot 开发"
|
||||
},
|
||||
"review": {
|
||||
"heading": "给 tooot 打分"
|
||||
},
|
||||
"contact": {
|
||||
"heading": "联系 tooot"
|
||||
},
|
||||
"analytics": {
|
||||
"heading": "帮助我们改进",
|
||||
"description": "收集不与用户相关联的使用信息"
|
||||
},
|
||||
"version": "版本 v{{version}}"
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"heading": "嘟文字号",
|
||||
"content": {
|
||||
"showcase": "嘟文示例",
|
||||
"demo":
|
||||
"<p>这是一条测试用的嘟文😊。以下是可供选择的字号,从小号至超大号。<br /><br />这个设置仅会调整嘟文的正文字号,不影响其它字号。</p>",
|
||||
"availableSizes": "可选字号",
|
||||
"sizes": { "S": "小号", "M": "默认", "L": "大号", "XL": "特大号", "XXL": "超大号" }
|
||||
}
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
{
|
||||
"heading": "推送通知",
|
||||
"content": {
|
||||
"enable": {
|
||||
"direct": "启用tooot推送通知",
|
||||
"settings": "去系统设置启用"
|
||||
},
|
||||
"global": {
|
||||
"heading": "启用通知",
|
||||
"description": "通知消息将经由tooot服务器转发"
|
||||
},
|
||||
"decode": {
|
||||
"heading": "显示通知内容",
|
||||
"description": "经由tooot服务器中转的通知消息已被加密,但可以允许tooot服务器解密并转发消息。tooot消息服务器源码开源,且不留存任何日志。"
|
||||
},
|
||||
"default": {
|
||||
"heading": "默认通知"
|
||||
},
|
||||
"follow": {
|
||||
"heading": "新关注者"
|
||||
},
|
||||
"favourite": {
|
||||
"heading": "嘟文被喜欢"
|
||||
},
|
||||
"reblog": {
|
||||
"heading": "嘟文被转嘟"
|
||||
},
|
||||
"mention": {
|
||||
"heading": "嘟文提及你"
|
||||
},
|
||||
"poll": {
|
||||
"heading": "投票更新"
|
||||
},
|
||||
"howitworks": "了解通知消息转发如何工作"
|
||||
},
|
||||
"error": {
|
||||
"message": "推送服务错误",
|
||||
"description": "请在设置中重新尝试启用推送通知"
|
||||
}
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
{
|
||||
"heading": "切换账号",
|
||||
"content": {
|
||||
"existing": "选择已登录的账号",
|
||||
"new": "登录新社区"
|
||||
}
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
{
|
||||
"heading": "通知"
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
{
|
||||
"heading": {
|
||||
"segments": {
|
||||
"left": "跨站嘟嘟",
|
||||
"right": "本站嘟嘟"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
{
|
||||
"content": {
|
||||
"button": {
|
||||
"apply": "$t(common:buttons.apply)",
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
},
|
||||
"notificationsFilter": {
|
||||
"heading": "显示通知",
|
||||
"content": {
|
||||
"follow": "$t(meSettingsPush:content.follow.heading)",
|
||||
"favourite": "$t(meSettingsPush:content.favourite.heading)",
|
||||
"reblog": "$t(meSettingsPush:content.reblog.heading)",
|
||||
"mention": "$t(meSettingsPush:content.mention.heading)",
|
||||
"poll": "$t(meSettingsPush:content.poll.heading)",
|
||||
"follow_request": "关注请求"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
{
|
||||
"content": {
|
||||
"options": {
|
||||
"save": "保存图片",
|
||||
"share": "分享图片",
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
},
|
||||
"save": {
|
||||
"function": "保存图片",
|
||||
"success": "图片保存成功"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
{
|
||||
"content": {
|
||||
"moved": "账户已迁移",
|
||||
"created_at": "注册时间:{{date}}",
|
||||
"summary": {
|
||||
"statuses_count": "{{count}} 条嘟文",
|
||||
"following_count": "$t(sharedUsers:heading.accounts.following)",
|
||||
"followers_count": "$t(sharedUsers:heading.accounts.followers)"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
{
|
||||
"heading": "公告",
|
||||
"content": {
|
||||
"published": "发布于 <0 />",
|
||||
"button": {
|
||||
"read": "已读",
|
||||
"unread": "标记已读"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
{
|
||||
"heading": "<0 /> <1>的媒体</1>"
|
||||
}
|
@ -1,156 +0,0 @@
|
||||
{
|
||||
"heading": {
|
||||
"left": {
|
||||
"button": "退出编辑",
|
||||
"alert": {
|
||||
"title": "确认退出编辑?",
|
||||
"buttons": {
|
||||
"save": "保存草稿",
|
||||
"delete": "删除草稿",
|
||||
"cancel": "继续编辑"
|
||||
}
|
||||
}
|
||||
},
|
||||
"right": {
|
||||
"button": {
|
||||
"default": "发嘟嘟",
|
||||
"conversation": "发私信",
|
||||
"reply": "发布回复",
|
||||
"edit": "发嘟嘟"
|
||||
},
|
||||
"alert": {
|
||||
"default": {
|
||||
"title": "发布失败",
|
||||
"button": "返回重试"
|
||||
},
|
||||
"removeReply": {
|
||||
"title": "回复的嘟文不存在",
|
||||
"description": "回复的嘟文可能已被删除。确认移除回复嘟文的关联?",
|
||||
"cancel": "$t(common:buttons.cancel)",
|
||||
"confirm": "移除关联"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"content": {
|
||||
"root": {
|
||||
"header": {
|
||||
"postingAs": "以 @{{acct}}@{{domain}} 发嘟",
|
||||
"spoilerInput": {
|
||||
"placeholder": "折叠部分的警告信息"
|
||||
},
|
||||
"textInput": {
|
||||
"placeholder": "想说点什么呢"
|
||||
}
|
||||
},
|
||||
"footer": {
|
||||
"attachments": {
|
||||
"sensitive": "标记附件为敏感内容"
|
||||
},
|
||||
"poll": {
|
||||
"option": {
|
||||
"placeholder": {
|
||||
"single": "单选项",
|
||||
"multiple": "多选项"
|
||||
}
|
||||
},
|
||||
"multiple": {
|
||||
"heading": "可选项",
|
||||
"options": {
|
||||
"single": "单选",
|
||||
"multiple": "多选",
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
}
|
||||
},
|
||||
"expiration": {
|
||||
"heading": "有效期",
|
||||
"options": {
|
||||
"300": "5分钟",
|
||||
"1800": "30分钟",
|
||||
"3600": "1小时",
|
||||
"21600": "6小时",
|
||||
"86400": "1天",
|
||||
"259200": "3天",
|
||||
"604800": "7天",
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"actions": {
|
||||
"attachment": {
|
||||
"actions": {
|
||||
"options": {
|
||||
"library": "从相册上传",
|
||||
"photo": "拍摄上传",
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
},
|
||||
"library": {
|
||||
"alert": {
|
||||
"title": "无读取权限",
|
||||
"message": "需要读取相册权限才能上传附件",
|
||||
"buttons": {
|
||||
"settings": "去更新设置",
|
||||
"cancel": "取消上传"
|
||||
}
|
||||
}
|
||||
},
|
||||
"photo": {
|
||||
"alert": {
|
||||
"title": "无拍照权限",
|
||||
"message": "需要使用相机权限才能上传附件",
|
||||
"buttons": {
|
||||
"settings": "去更新设置",
|
||||
"cancel": "取消上传"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"failed": {
|
||||
"alert": {
|
||||
"title": "上传失败",
|
||||
"button": "返回重试"
|
||||
}
|
||||
}
|
||||
},
|
||||
"visibility": {
|
||||
"title": "嘟文可见范围",
|
||||
"options": {
|
||||
"public": "公开",
|
||||
"unlisted": "不公开",
|
||||
"private": "仅关注者",
|
||||
"direct": "私信",
|
||||
"cancel": "$t(common:buttons.cancel)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"drafts": "草稿 ({{count}})"
|
||||
},
|
||||
"editAttachment": {
|
||||
"header": {
|
||||
"title": "编辑附件",
|
||||
"right": {
|
||||
"failed": {
|
||||
"title": "编辑失败",
|
||||
"button": "返回重试"
|
||||
}
|
||||
}
|
||||
},
|
||||
"content": {
|
||||
"altText": {
|
||||
"heading": "为附件添加文字说明",
|
||||
"placeholder": "你可以为附件添加文字说明,以便更多人可以查看他们(包括视力障碍或视力受损人士)。\n\n优质的描述应该简洁明了,但要准确地描述照片中的内容,以便用户理解其含义。"
|
||||
},
|
||||
"imageFocus": "在预览图上拖动圆圈,以选择缩略图的焦点"
|
||||
}
|
||||
},
|
||||
"draftsList": {
|
||||
"header": {
|
||||
"title": "草稿"
|
||||
},
|
||||
"content": {
|
||||
"textEmpty": "无正文内容"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
{
|
||||
"content": {
|
||||
"header": {
|
||||
"prefix": "搜索",
|
||||
"placeholder": "什么呢"
|
||||
},
|
||||
"empty": {
|
||||
"general": "输入关键词搜索<bold>$t(sharedSearch:content.sections.accounts)</bold>、<bold>$t(sharedSearch:content.sections.hashtags)</bold>或者<bold>$t(sharedSearch:content.sections.statuses)</bold>",
|
||||
"advanced": {
|
||||
"header": "高级搜索格式",
|
||||
"example": {
|
||||
"account": "$t(sharedSearch:content.header.prefix)$t(sharedSearch:content.sections.accounts)",
|
||||
"hashtag": "$t(sharedSearch:content.header.prefix)$t(sharedSearch:content.sections.hashtags)",
|
||||
"statusLink": "$t(sharedSearch:content.header.prefix)指定$t(sharedSearch:content.sections.statuses)",
|
||||
"accountLink": "$t(sharedSearch:content.header.prefix)$t(sharedSearch:content.sections.accounts)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sections": {
|
||||
"accounts": "用户",
|
||||
"hashtags": "话题标签",
|
||||
"statuses": "嘟文"
|
||||
},
|
||||
"notFound": "找不到 <bold>{{searchTerm}}</bold> 相关的 {{type}}"
|
||||
}
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
{
|
||||
"heading": "对话"
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
{
|
||||
"heading": {
|
||||
"accounts": {
|
||||
"following": "关注 {{count}} 人",
|
||||
"followers": "被 {{count}} 人关注"
|
||||
},
|
||||
"statuses": {
|
||||
"reblogged_by": "{{count}} 人转嘟",
|
||||
"favourited_by": "{{count}} 人喜欢"
|
||||
}
|
||||
}
|
||||
}
|
@ -34,7 +34,7 @@ const ActionsAccount: React.FC<Props> = ({
|
||||
displayMessage({
|
||||
mode,
|
||||
type: 'success',
|
||||
message: t('common:toastMessage.success.message', {
|
||||
message: t('common:message.success.message', {
|
||||
function: t(
|
||||
`shared.header.actions.account.${theParams.payload.property}.function`,
|
||||
{
|
||||
@ -49,7 +49,7 @@ const ActionsAccount: React.FC<Props> = ({
|
||||
displayMessage({
|
||||
mode,
|
||||
type: 'error',
|
||||
message: t('common:toastMessage.error.message', {
|
||||
message: t('common:message.error.message', {
|
||||
function: t(
|
||||
`shared.header.actions.account.${theParams.payload.property}.function`
|
||||
)
|
||||
|
@ -34,7 +34,7 @@ const ActionsDomain: React.FC<Props> = ({
|
||||
displayMessage({
|
||||
mode,
|
||||
type: 'success',
|
||||
message: t('common:toastMessage.success.message', {
|
||||
message: t('common:message.success.message', {
|
||||
function: t(`shared.header.actions.domain.block.function`)
|
||||
})
|
||||
})
|
||||
|
@ -43,7 +43,7 @@ const ActionsStatus: React.FC<Props> = ({
|
||||
displayMessage({
|
||||
mode,
|
||||
type: 'error',
|
||||
message: t('common:toastMessage.error.message', {
|
||||
message: t('common:message.error.message', {
|
||||
function: t(`shared.header.actions.status.${theFunction}.function`)
|
||||
}),
|
||||
...(err.status &&
|
||||
|
@ -35,7 +35,7 @@ const ScreenAnnouncements: React.FC<ScreenAnnouncementsProp> = ({
|
||||
const { reduceMotionEnabled } = useAccessibility()
|
||||
const { mode, theme } = useTheme()
|
||||
const [index, setIndex] = useState(0)
|
||||
const { t } = useTranslation('sharedAnnouncements')
|
||||
const { t } = useTranslation('screenAnnouncements')
|
||||
|
||||
const query = useAnnouncementQuery({
|
||||
showAll,
|
||||
@ -77,7 +77,7 @@ const ScreenAnnouncements: React.FC<ScreenAnnouncementsProp> = ({
|
||||
>
|
||||
<Text style={[styles.published, { color: theme.secondary }]}>
|
||||
<Trans
|
||||
i18nKey='sharedAnnouncements:content.published'
|
||||
i18nKey='screenAnnouncements:content.published'
|
||||
components={[<RelativeTime date={item.published_at} />]}
|
||||
/>
|
||||
</Text>
|
||||
@ -223,7 +223,7 @@ const ScreenAnnouncements: React.FC<ScreenAnnouncementsProp> = ({
|
||||
native={false}
|
||||
onPress={() => navigation.goBack()}
|
||||
/>
|
||||
<HeaderCenter content={t('sharedAnnouncements:heading')} />
|
||||
<HeaderCenter content={t('screenAnnouncements:heading')} />
|
||||
<View style={{ opacity: 0 }}>
|
||||
<HeaderRight
|
||||
content='MoreHorizontal'
|
||||
|
@ -54,7 +54,7 @@ const ScreenCompose: React.FC<ScreenComposeProp> = ({
|
||||
route: { params },
|
||||
navigation
|
||||
}) => {
|
||||
const { t } = useTranslation('sharedCompose')
|
||||
const { t } = useTranslation('screenCompose')
|
||||
const { theme } = useTheme()
|
||||
const queryClient = useQueryClient()
|
||||
|
||||
|
@ -19,7 +19,7 @@ const ComposeDraftsList: React.FC<ScreenComposeEditAttachmentProp> = ({
|
||||
},
|
||||
navigation
|
||||
}) => {
|
||||
const { t } = useTranslation('sharedCompose')
|
||||
const { t } = useTranslation('screenCompose')
|
||||
|
||||
const children = useCallback(
|
||||
() => <ComposeDraftsListRoot timestamp={timestamp} />,
|
||||
|
@ -34,7 +34,7 @@ export interface Props {
|
||||
|
||||
const ComposeDraftsListRoot: React.FC<Props> = ({ timestamp }) => {
|
||||
const { composeDispatch } = useContext(ComposeContext)
|
||||
const { t } = useTranslation('sharedCompose')
|
||||
const { t } = useTranslation('screenCompose')
|
||||
const navigation = useNavigation()
|
||||
const dispatch = useDispatch()
|
||||
const { mode, theme } = useTheme()
|
||||
|
@ -22,7 +22,7 @@ const ComposeEditAttachment: React.FC<ScreenComposeEditAttachmentProp> = ({
|
||||
navigation
|
||||
}) => {
|
||||
console.log('rendering')
|
||||
const { t } = useTranslation('sharedCompose')
|
||||
const { t } = useTranslation('screenCompose')
|
||||
|
||||
const headerLeft = useCallback(
|
||||
() => (
|
||||
|
@ -20,7 +20,7 @@ export interface Props {
|
||||
}
|
||||
|
||||
const ComposeEditAttachmentImage: React.FC<Props> = ({ index }) => {
|
||||
const { t } = useTranslation('sharedCompose')
|
||||
const { t } = useTranslation('screenCompose')
|
||||
const { theme } = useTheme()
|
||||
|
||||
const { composeState, composeDispatch } = useContext(ComposeContext)
|
||||
|
@ -12,7 +12,7 @@ export interface Props {
|
||||
}
|
||||
|
||||
const ComposeEditAttachmentRoot: React.FC<Props> = ({ index }) => {
|
||||
const { t } = useTranslation('sharedCompose')
|
||||
const { t } = useTranslation('screenCompose')
|
||||
const { mode, theme } = useTheme()
|
||||
const { composeState, composeDispatch } = useContext(ComposeContext)
|
||||
const theAttachment = composeState.attachments.uploads[index].remote!
|
||||
|
@ -16,7 +16,7 @@ const ComposeEditAttachmentSubmit: React.FC<Props> = ({ index }) => {
|
||||
const { composeState } = useContext(ComposeContext)
|
||||
const navigation = useNavigation()
|
||||
const [isSubmitting, setIsSubmitting] = useState(false)
|
||||
const { t } = useTranslation('sharedCompose')
|
||||
const { t } = useTranslation('screenCompose')
|
||||
|
||||
const theAttachment = composeState.attachments.uploads[index].remote!
|
||||
|
||||
|
@ -13,7 +13,7 @@ import addAttachment from './Footer/addAttachment'
|
||||
const ComposeActions: React.FC = () => {
|
||||
const { showActionSheetWithOptions } = useActionSheet()
|
||||
const { composeState, composeDispatch } = useContext(ComposeContext)
|
||||
const { t } = useTranslation('sharedCompose')
|
||||
const { t } = useTranslation('screenCompose')
|
||||
const { theme } = useTheme()
|
||||
|
||||
const attachmentColor = useMemo(() => {
|
||||
|
@ -10,7 +10,7 @@ import { useSelector } from 'react-redux'
|
||||
import ComposeContext from '../utils/createContext'
|
||||
|
||||
const ComposeDrafts: React.FC = () => {
|
||||
const { t } = useTranslation('sharedCompose')
|
||||
const { t } = useTranslation('screenCompose')
|
||||
const navigation = useNavigation()
|
||||
const { composeState } = useContext(ComposeContext)
|
||||
const instanceDrafts = useSelector(getInstanceDrafts)?.filter(
|
||||
|
@ -33,7 +33,7 @@ const DEFAULT_HEIGHT = 200
|
||||
const ComposeAttachments: React.FC = () => {
|
||||
const { showActionSheetWithOptions } = useActionSheet()
|
||||
const { composeState, composeDispatch } = useContext(ComposeContext)
|
||||
const { t } = useTranslation('sharedCompose')
|
||||
const { t } = useTranslation('screenCompose')
|
||||
const { theme } = useTheme()
|
||||
const navigation = useNavigation()
|
||||
|
||||
|
@ -18,7 +18,7 @@ const ComposePoll: React.FC = () => {
|
||||
},
|
||||
composeDispatch
|
||||
} = useContext(ComposeContext)
|
||||
const { t } = useTranslation('sharedCompose')
|
||||
const { t } = useTranslation('screenCompose')
|
||||
const { mode, theme } = useTheme()
|
||||
|
||||
const [firstRender, setFirstRender] = useState(true)
|
||||
|
@ -84,13 +84,13 @@ const addAttachment = async ({
|
||||
})
|
||||
Alert.alert(
|
||||
i18next.t(
|
||||
'sharedCompose:content.root.actions.attachment.failed.alert.title'
|
||||
'screenCompose:content.root.actions.attachment.failed.alert.title'
|
||||
),
|
||||
undefined,
|
||||
[
|
||||
{
|
||||
text: i18next.t(
|
||||
'sharedCompose:content.root.actions.attachment.failed.alert.button'
|
||||
'screenCompose:content.root.actions.attachment.failed.alert.button'
|
||||
),
|
||||
onPress: () => {}
|
||||
}
|
||||
@ -130,13 +130,13 @@ const addAttachment = async ({
|
||||
{
|
||||
options: [
|
||||
i18next.t(
|
||||
'sharedCompose:content.root.actions.attachment.actions.options.library'
|
||||
'screenCompose:content.root.actions.attachment.actions.options.library'
|
||||
),
|
||||
i18next.t(
|
||||
'sharedCompose:content.root.actions.attachment.actions.options.photo'
|
||||
'screenCompose:content.root.actions.attachment.actions.options.photo'
|
||||
),
|
||||
i18next.t(
|
||||
'sharedCompose:content.root.actions.attachment.actions.options.cancel'
|
||||
'screenCompose:content.root.actions.attachment.actions.options.cancel'
|
||||
)
|
||||
],
|
||||
cancelButtonIndex: 2
|
||||
@ -149,15 +149,15 @@ const addAttachment = async ({
|
||||
if (status !== 'granted') {
|
||||
Alert.alert(
|
||||
i18next.t(
|
||||
'sharedCompose:content.root.actions.attachment.actions.library.alert.title'
|
||||
'screenCompose:content.root.actions.attachment.actions.library.alert.title'
|
||||
),
|
||||
i18next.t(
|
||||
'sharedCompose:content.root.actions.attachment.actions.library.alert.message'
|
||||
'screenCompose:content.root.actions.attachment.actions.library.alert.message'
|
||||
),
|
||||
[
|
||||
{
|
||||
text: i18next.t(
|
||||
'sharedCompose:content.root.actions.attachment.actions.library.alert.buttons.cancel'
|
||||
'screenCompose:content.root.actions.attachment.actions.library.alert.buttons.cancel'
|
||||
),
|
||||
style: 'cancel',
|
||||
onPress: () => {
|
||||
@ -168,7 +168,7 @@ const addAttachment = async ({
|
||||
},
|
||||
{
|
||||
text: i18next.t(
|
||||
'sharedCompose:content.root.actions.attachment.actions.library.alert.buttons.settings'
|
||||
'screenCompose:content.root.actions.attachment.actions.library.alert.buttons.settings'
|
||||
),
|
||||
style: 'default',
|
||||
onPress: () => {
|
||||
@ -195,15 +195,15 @@ const addAttachment = async ({
|
||||
if (status !== 'granted') {
|
||||
Alert.alert(
|
||||
i18next.t(
|
||||
'sharedCompose:content.root.actions.attachment.actions.photo.alert.title'
|
||||
'screenCompose:content.root.actions.attachment.actions.photo.alert.title'
|
||||
),
|
||||
i18next.t(
|
||||
'sharedCompose:content.root.actions.attachment.actions.photo.alert.message'
|
||||
'screenCompose:content.root.actions.attachment.actions.photo.alert.message'
|
||||
),
|
||||
[
|
||||
{
|
||||
text: i18next.t(
|
||||
'sharedCompose:content.root.actions.attachment.actions.photo.alert.buttons.cancel'
|
||||
'screenCompose:content.root.actions.attachment.actions.photo.alert.buttons.cancel'
|
||||
),
|
||||
style: 'cancel',
|
||||
onPress: () => {
|
||||
@ -214,7 +214,7 @@ const addAttachment = async ({
|
||||
},
|
||||
{
|
||||
text: i18next.t(
|
||||
'sharedCompose:content.root.actions.attachment.actions.photo.alert.buttons.settings'
|
||||
'screenCompose:content.root.actions.attachment.actions.photo.alert.buttons.settings'
|
||||
),
|
||||
style: 'default',
|
||||
onPress: () => {
|
||||
|
@ -11,7 +11,7 @@ import { useSelector } from 'react-redux'
|
||||
|
||||
const ComposePostingAs = React.memo(
|
||||
() => {
|
||||
const { t } = useTranslation('sharedCompose')
|
||||
const { t } = useTranslation('screenCompose')
|
||||
const { theme } = useTheme()
|
||||
|
||||
const instanceAccount = useSelector(
|
||||
|
@ -8,7 +8,7 @@ import ComposeContext from '../../utils/createContext'
|
||||
|
||||
const ComposeSpoilerInput: React.FC = () => {
|
||||
const { composeState, composeDispatch } = useContext(ComposeContext)
|
||||
const { t } = useTranslation('sharedCompose')
|
||||
const { t } = useTranslation('screenCompose')
|
||||
const { mode, theme } = useTheme()
|
||||
|
||||
return (
|
||||
|
@ -8,7 +8,7 @@ import ComposeContext from '../../utils/createContext'
|
||||
|
||||
const ComposeTextInput: React.FC = () => {
|
||||
const { composeState, composeDispatch } = useContext(ComposeContext)
|
||||
const { t } = useTranslation('sharedCompose')
|
||||
const { t } = useTranslation('screenCompose')
|
||||
const { mode, theme } = useTheme()
|
||||
|
||||
return (
|
||||
|
@ -20,7 +20,7 @@ const Stack = createNativeStackNavigator<Nav.TabLocalStackParamList>()
|
||||
|
||||
const TabLocal = React.memo(
|
||||
({ navigation }: TabLocalProp) => {
|
||||
const { t, i18n } = useTranslation('local')
|
||||
const { t, i18n } = useTranslation('screenTabs')
|
||||
|
||||
const screenOptions = useMemo(
|
||||
() => ({
|
||||
@ -31,9 +31,9 @@ const TabLocal = React.memo(
|
||||
)
|
||||
const screenOptionsRoot = useMemo(
|
||||
() => ({
|
||||
headerTitle: t('heading'),
|
||||
headerTitle: t('tabs.local.name'),
|
||||
...(Platform.OS === 'android' && {
|
||||
headerCenter: () => <HeaderCenter content={t('heading')} />
|
||||
headerCenter: () => <HeaderCenter content={t('tabs.local.name')} />
|
||||
}),
|
||||
headerRight: () => (
|
||||
<HeaderRight
|
||||
|
@ -19,7 +19,7 @@ const Stack = createNativeStackNavigator<Nav.TabMeStackParamList>()
|
||||
|
||||
const TabMe = React.memo(
|
||||
() => {
|
||||
const { t } = useTranslation()
|
||||
const { t } = useTranslation('screenTabs')
|
||||
|
||||
return (
|
||||
<Stack.Navigator
|
||||
@ -38,10 +38,10 @@ const TabMe = React.memo(
|
||||
name='Tab-Me-Bookmarks'
|
||||
component={ScreenMeBookmarks}
|
||||
options={({ navigation }: any) => ({
|
||||
headerTitle: t('meBookmarks:heading'),
|
||||
headerTitle: t('me.stacks.bookmarks.name'),
|
||||
...(Platform.OS === 'android' && {
|
||||
headerCenter: () => (
|
||||
<HeaderCenter content={t('meBookmarks:heading')} />
|
||||
<HeaderCenter content={t('me.stacks.bookmarks.name')} />
|
||||
)
|
||||
}),
|
||||
headerLeft: () => <HeaderLeft onPress={() => navigation.pop(1)} />
|
||||
@ -51,10 +51,10 @@ const TabMe = React.memo(
|
||||
name='Tab-Me-Conversations'
|
||||
component={ScreenMeConversations}
|
||||
options={({ navigation }: any) => ({
|
||||
headerTitle: t('meConversations:heading'),
|
||||
headerTitle: t('me.stacks.conversations.name'),
|
||||
...(Platform.OS === 'android' && {
|
||||
headerCenter: () => (
|
||||
<HeaderCenter content={t('meConversations:heading')} />
|
||||
<HeaderCenter content={t('me.stacks.conversations.name')} />
|
||||
)
|
||||
}),
|
||||
headerLeft: () => <HeaderLeft onPress={() => navigation.pop(1)} />
|
||||
@ -64,10 +64,10 @@ const TabMe = React.memo(
|
||||
name='Tab-Me-Favourites'
|
||||
component={ScreenMeFavourites}
|
||||
options={({ navigation }: any) => ({
|
||||
headerTitle: t('meFavourites:heading'),
|
||||
headerTitle: t('me.stacks.favourites.name'),
|
||||
...(Platform.OS === 'android' && {
|
||||
headerCenter: () => (
|
||||
<HeaderCenter content={t('meFavourites:heading')} />
|
||||
<HeaderCenter content={t('me.stacks.favourites.name')} />
|
||||
)
|
||||
}),
|
||||
headerLeft: () => <HeaderLeft onPress={() => navigation.pop(1)} />
|
||||
@ -77,10 +77,10 @@ const TabMe = React.memo(
|
||||
name='Tab-Me-Lists'
|
||||
component={ScreenMeLists}
|
||||
options={({ navigation }: any) => ({
|
||||
headerTitle: t('meLists:heading'),
|
||||
headerTitle: t('me.stacks.lists.name'),
|
||||
...(Platform.OS === 'android' && {
|
||||
headerCenter: () => (
|
||||
<HeaderCenter content={t('meLists:heading')} />
|
||||
<HeaderCenter content={t('me.stacks.lists.name')} />
|
||||
)
|
||||
}),
|
||||
headerLeft: () => <HeaderLeft onPress={() => navigation.pop(1)} />
|
||||
@ -90,11 +90,11 @@ const TabMe = React.memo(
|
||||
name='Tab-Me-Lists-List'
|
||||
component={ScreenMeListsList}
|
||||
options={({ route, navigation }: any) => ({
|
||||
headerTitle: t('meListsList:heading', { list: route.params.title }),
|
||||
headerTitle: t('me.stacks.list.name', { list: route.params.title }),
|
||||
...(Platform.OS === 'android' && {
|
||||
headerCenter: () => (
|
||||
<HeaderCenter
|
||||
content={t('meListsList:heading', {
|
||||
content={t('me.stacks.list.name', {
|
||||
list: route.params.title
|
||||
})}
|
||||
/>
|
||||
@ -107,10 +107,10 @@ const TabMe = React.memo(
|
||||
name='Tab-Me-Settings'
|
||||
component={ScreenMeSettings}
|
||||
options={({ navigation }: any) => ({
|
||||
headerTitle: t('meSettings:heading'),
|
||||
headerTitle: t('me.stacks.settings.name'),
|
||||
...(Platform.OS === 'android' && {
|
||||
headerCenter: () => (
|
||||
<HeaderCenter content={t('meSettings:heading')} />
|
||||
<HeaderCenter content={t('me.stacks.settings.name')} />
|
||||
)
|
||||
}),
|
||||
headerLeft: () => <HeaderLeft onPress={() => navigation.pop(1)} />
|
||||
@ -120,10 +120,10 @@ const TabMe = React.memo(
|
||||
name='Tab-Me-Settings-Fontsize'
|
||||
component={ScreenMeSettingsFontsize}
|
||||
options={({ navigation }: any) => ({
|
||||
headerTitle: t('meSettingsFontsize:heading'),
|
||||
headerTitle: t('me.stacks.fontSize.name'),
|
||||
...(Platform.OS === 'android' && {
|
||||
headerCenter: () => (
|
||||
<HeaderCenter content={t('meSettingsFontsize:heading')} />
|
||||
<HeaderCenter content={t('me.stacks.fontSize.name')} />
|
||||
)
|
||||
}),
|
||||
headerLeft: () => <HeaderLeft onPress={() => navigation.pop(1)} />
|
||||
@ -133,10 +133,10 @@ const TabMe = React.memo(
|
||||
name='Tab-Me-Settings-Push'
|
||||
component={ScreenMeSettingsPush}
|
||||
options={({ navigation }: any) => ({
|
||||
headerTitle: t('meSettingsPush:heading'),
|
||||
headerTitle: t('me.stacks.push.name'),
|
||||
...(Platform.OS === 'android' && {
|
||||
headerCenter: () => (
|
||||
<HeaderCenter content={t('meSettingsPush:heading')} />
|
||||
<HeaderCenter content={t('me.stacks.push.name')} />
|
||||
)
|
||||
}),
|
||||
headerLeft: () => <HeaderLeft onPress={() => navigation.pop(1)} />
|
||||
|
@ -37,7 +37,7 @@ const ScreenMeSettingsFontsize: React.FC<StackScreenProps<
|
||||
'Tab-Me-Settings-Fontsize'
|
||||
>> = () => {
|
||||
const { mode, theme } = useTheme()
|
||||
const { t } = useTranslation('meSettingsFontsize')
|
||||
const { t } = useTranslation('screenTabs')
|
||||
const initialSize = useSelector(getSettingsFontsize)
|
||||
const dispatch = useDispatch()
|
||||
|
||||
@ -54,7 +54,7 @@ const ScreenMeSettingsFontsize: React.FC<StackScreenProps<
|
||||
reblogged: false,
|
||||
muted: false,
|
||||
bookmarked: false,
|
||||
content: t('content.demo'),
|
||||
content: t('me.fontSize.demo'),
|
||||
reblog: null,
|
||||
application: {
|
||||
name: 'tooot',
|
||||
@ -97,7 +97,7 @@ const ScreenMeSettingsFontsize: React.FC<StackScreenProps<
|
||||
}
|
||||
]}
|
||||
>
|
||||
{t(`content.sizes.${mapFontsizeToName(size)}`)}
|
||||
{t(`me.fontSize.sizes.${mapFontsizeToName(size)}`)}
|
||||
</Text>
|
||||
))}
|
||||
</>
|
||||
@ -107,7 +107,7 @@ const ScreenMeSettingsFontsize: React.FC<StackScreenProps<
|
||||
return (
|
||||
<ScrollView scrollEnabled={false}>
|
||||
<Text style={[styles.header, { color: theme.primaryDefault }]}>
|
||||
{t('content.showcase')}
|
||||
{t('me.fontSize.showcase')}
|
||||
</Text>
|
||||
<View>
|
||||
<ComponentSeparator
|
||||
@ -121,7 +121,7 @@ const ScreenMeSettingsFontsize: React.FC<StackScreenProps<
|
||||
/>
|
||||
</View>
|
||||
<Text style={[styles.header, { color: theme.primaryDefault }]}>
|
||||
{t('content.availableSizes')}
|
||||
{t('me.fontSize.availableSizes')}
|
||||
</Text>
|
||||
<View style={styles.sizesDemo}>{sizesDemo}</View>
|
||||
<View style={styles.controls}>
|
||||
|
@ -15,7 +15,7 @@ import { StyleConstants } from '@utils/styles/constants'
|
||||
import { AppState, Linking } from 'react-native'
|
||||
|
||||
const ScreenMeSettingsPush: React.FC = () => {
|
||||
const { t } = useTranslation('meSettingsPush')
|
||||
const { t } = useTranslation('screenTabs')
|
||||
|
||||
const dispatch = useDispatch()
|
||||
const instancePush = useSelector(getInstancePush)
|
||||
@ -53,7 +53,7 @@ const ScreenMeSettingsPush: React.FC = () => {
|
||||
]).map(alert => (
|
||||
<MenuRow
|
||||
key={alert}
|
||||
title={t(`content.${alert}.heading`)}
|
||||
title={t(`me.push.${alert}.heading`)}
|
||||
switchDisabled={
|
||||
!pushEnabled || !instancePush.global.value || isLoading
|
||||
}
|
||||
@ -85,8 +85,8 @@ const ScreenMeSettingsPush: React.FC = () => {
|
||||
type='text'
|
||||
content={
|
||||
pushCanAskAgain
|
||||
? t('content.enable.direct')
|
||||
: t('content.enable.settings')
|
||||
? t('me.push.enable.direct')
|
||||
: t('me.push.enable.settings')
|
||||
}
|
||||
style={{
|
||||
marginTop: StyleConstants.Spacing.Global.PagePadding,
|
||||
@ -106,8 +106,8 @@ const ScreenMeSettingsPush: React.FC = () => {
|
||||
) : null}
|
||||
<MenuContainer>
|
||||
<MenuRow
|
||||
title={t('content.global.heading')}
|
||||
description={t('content.global.description')}
|
||||
title={t('me.push.global.heading')}
|
||||
description={t('me.push.global.description')}
|
||||
loading={instancePush?.global.loading}
|
||||
switchDisabled={!pushEnabled || isLoading}
|
||||
switchValue={
|
||||
@ -120,8 +120,8 @@ const ScreenMeSettingsPush: React.FC = () => {
|
||||
</MenuContainer>
|
||||
<MenuContainer>
|
||||
<MenuRow
|
||||
title={t('content.decode.heading')}
|
||||
description={t('content.decode.description')}
|
||||
title={t('me.push.decode.heading')}
|
||||
description={t('me.push.decode.description')}
|
||||
loading={instancePush?.decode.loading}
|
||||
switchDisabled={
|
||||
!pushEnabled || !instancePush?.global.value || isLoading
|
||||
@ -132,7 +132,7 @@ const ScreenMeSettingsPush: React.FC = () => {
|
||||
}
|
||||
/>
|
||||
<MenuRow
|
||||
title={t('content.howitworks')}
|
||||
title={t('me.push.howitworks')}
|
||||
iconBack='ExternalLink'
|
||||
onPress={() =>
|
||||
WebBrowser.openBrowserAsync('https://tooot.app/how-push-works')
|
||||
|
@ -6,7 +6,7 @@ import React, { useMemo } from 'react'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
|
||||
const Collections: React.FC = () => {
|
||||
const { t, i18n } = useTranslation('meRoot')
|
||||
const { t, i18n } = useTranslation('screenTabs')
|
||||
const navigation = useNavigation()
|
||||
|
||||
const listsQuery = useListsQuery({
|
||||
@ -20,7 +20,7 @@ const Collections: React.FC = () => {
|
||||
<MenuRow
|
||||
iconFront='List'
|
||||
iconBack='ChevronRight'
|
||||
title={t('content.collections.lists')}
|
||||
title={t('me.stacks.lists.name')}
|
||||
onPress={() => navigation.navigate('Tab-Me-Lists')}
|
||||
/>
|
||||
)
|
||||
@ -44,13 +44,13 @@ const Collections: React.FC = () => {
|
||||
<MenuRow
|
||||
iconFront='Clipboard'
|
||||
iconBack='ChevronRight'
|
||||
title={t('content.collections.announcements.heading')}
|
||||
title={t('screenAnnouncements:heading')}
|
||||
content={
|
||||
amount
|
||||
? t('content.collections.announcements.content.unread', {
|
||||
? t('me.root.announcements.content.unread', {
|
||||
amount
|
||||
})
|
||||
: t('content.collections.announcements.content.read')
|
||||
: t('me.root.announcements.content.read')
|
||||
}
|
||||
onPress={() =>
|
||||
navigation.navigate('Screen-Announcements', { showAll: true })
|
||||
@ -67,19 +67,19 @@ const Collections: React.FC = () => {
|
||||
<MenuRow
|
||||
iconFront='Mail'
|
||||
iconBack='ChevronRight'
|
||||
title={t('content.collections.conversations')}
|
||||
title={t('me.stacks.conversations.name')}
|
||||
onPress={() => navigation.navigate('Tab-Me-Conversations')}
|
||||
/>
|
||||
<MenuRow
|
||||
iconFront='Bookmark'
|
||||
iconBack='ChevronRight'
|
||||
title={t('content.collections.bookmarks')}
|
||||
title={t('me.stacks.bookmarks.name')}
|
||||
onPress={() => navigation.navigate('Tab-Me-Bookmarks')}
|
||||
/>
|
||||
<MenuRow
|
||||
iconFront='Heart'
|
||||
iconBack='ChevronRight'
|
||||
title={t('content.collections.favourites')}
|
||||
title={t('me.stacks.favourites.name')}
|
||||
onPress={() => navigation.navigate('Tab-Me-Favourites')}
|
||||
/>
|
||||
{rowLists}
|
||||
|
@ -10,7 +10,7 @@ import { useQueryClient } from 'react-query'
|
||||
import { useDispatch, useSelector } from 'react-redux'
|
||||
|
||||
const Logout: React.FC = () => {
|
||||
const { t } = useTranslation('meRoot')
|
||||
const { t } = useTranslation('screenTabs')
|
||||
const dispatch = useDispatch()
|
||||
const queryClient = useQueryClient()
|
||||
const instance = useSelector(getInstance)
|
||||
@ -18,7 +18,7 @@ const Logout: React.FC = () => {
|
||||
return (
|
||||
<Button
|
||||
type='text'
|
||||
content={t('content.logout.button')}
|
||||
content={t('me.root.logout.button')}
|
||||
style={{
|
||||
marginHorizontal: StyleConstants.Spacing.Global.PagePadding * 2,
|
||||
marginBottom: StyleConstants.Spacing.Global.PagePadding * 2
|
||||
@ -26,11 +26,11 @@ const Logout: React.FC = () => {
|
||||
destructive
|
||||
onPress={() =>
|
||||
Alert.alert(
|
||||
t('content.logout.alert.title'),
|
||||
t('content.logout.alert.message'),
|
||||
t('me.root.logout.alert.title'),
|
||||
t('me.root.logout.alert.message'),
|
||||
[
|
||||
{
|
||||
text: t('content.logout.alert.buttons.logout'),
|
||||
text: t('me.root.logout.alert.buttons.logout'),
|
||||
style: 'destructive' as const,
|
||||
onPress: () => {
|
||||
if (instance) {
|
||||
@ -41,7 +41,7 @@ const Logout: React.FC = () => {
|
||||
}
|
||||
},
|
||||
{
|
||||
text: t('content.logout.alert.buttons.cancel'),
|
||||
text: t('me.root.logout.alert.buttons.cancel'),
|
||||
style: 'cancel' as const
|
||||
}
|
||||
]
|
||||
|
@ -4,24 +4,15 @@ import React from 'react'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
|
||||
const Settings: React.FC = () => {
|
||||
const { t } = useTranslation('meRoot')
|
||||
const { t } = useTranslation('screenTabs')
|
||||
const navigation = useNavigation()
|
||||
|
||||
return (
|
||||
<MenuContainer>
|
||||
{/* <MenuRow
|
||||
iconFront='User'
|
||||
iconBack='ExternalLink'
|
||||
title={t('content.accountSettings')}
|
||||
onPress={() =>
|
||||
localUrl &&
|
||||
WebBrowser.openBrowserAsync(`https://${localUrl}/settings/profile`)
|
||||
}
|
||||
/> */}
|
||||
<MenuRow
|
||||
iconFront='Settings'
|
||||
iconBack='ChevronRight'
|
||||
title={t('content.appSettings')}
|
||||
title={t('me.stacks.settings.name')}
|
||||
onPress={() => navigation.navigate('Tab-Me-Settings')}
|
||||
/>
|
||||
</MenuContainer>
|
||||
|
@ -14,22 +14,22 @@ import { useDispatch, useSelector } from 'react-redux'
|
||||
const SettingsAnalytics: React.FC = () => {
|
||||
const dispatch = useDispatch()
|
||||
const { theme } = useTheme()
|
||||
const { t } = useTranslation('meSettings')
|
||||
const { t } = useTranslation('screenTabs')
|
||||
|
||||
const settingsAnalytics = useSelector(getSettingsAnalytics)
|
||||
|
||||
return (
|
||||
<MenuContainer>
|
||||
<MenuRow
|
||||
title={t('content.analytics.heading')}
|
||||
description={t('content.analytics.description')}
|
||||
title={t('me.settings.analytics.heading')}
|
||||
description={t('me.settings.analytics.description')}
|
||||
switchValue={settingsAnalytics}
|
||||
switchOnValueChange={() =>
|
||||
dispatch(changeAnalytics(!settingsAnalytics))
|
||||
}
|
||||
/>
|
||||
<Text style={[styles.version, { color: theme.secondary }]}>
|
||||
{t('content.version', { version: Constants.manifest.version })}
|
||||
{t('me.settings.version', { version: Constants.manifest.version })}
|
||||
</Text>
|
||||
</MenuContainer>
|
||||
)
|
||||
|
@ -3,7 +3,7 @@ import haptics from '@components/haptics'
|
||||
import { MenuContainer, MenuRow } from '@components/Menu'
|
||||
import { useActionSheet } from '@expo/react-native-action-sheet'
|
||||
import { useNavigation } from '@react-navigation/native'
|
||||
import i18n from '@root/i18n/i18n'
|
||||
import { LOCALES } from '@root/i18n/locales'
|
||||
import androidDefaults from '@utils/slices/instances/push/androidDefaults'
|
||||
import {
|
||||
getInstanceActive,
|
||||
@ -14,7 +14,6 @@ import {
|
||||
changeBrowser,
|
||||
changeLanguage,
|
||||
changeTheme,
|
||||
getSettingsLanguage,
|
||||
getSettingsTheme,
|
||||
getSettingsBrowser,
|
||||
getSettingsFontsize
|
||||
@ -32,12 +31,11 @@ const SettingsApp: React.FC = () => {
|
||||
const dispatch = useDispatch()
|
||||
const { showActionSheetWithOptions } = useActionSheet()
|
||||
const { setTheme } = useTheme()
|
||||
const { t } = useTranslation('meSettings')
|
||||
const { t, i18n } = useTranslation('screenTabs')
|
||||
|
||||
const instances = useSelector(getInstances, () => true)
|
||||
const instanceActive = useSelector(getInstanceActive)
|
||||
const settingsFontsize = useSelector(getSettingsFontsize)
|
||||
const settingsLanguage = useSelector(getSettingsLanguage)
|
||||
const settingsTheme = useSelector(getSettingsTheme)
|
||||
const settingsBrowser = useSelector(getSettingsBrowser)
|
||||
const instancePush = useSelector(
|
||||
@ -50,11 +48,11 @@ const SettingsApp: React.FC = () => {
|
||||
{instanceActive !== -1 ? (
|
||||
<>
|
||||
<MenuRow
|
||||
title={t('content.push.heading')}
|
||||
title={t('me.settings.push.heading')}
|
||||
content={
|
||||
instancePush?.global.value
|
||||
? t('content.push.content.enabled')
|
||||
: t('content.push.content.disabled')
|
||||
? t('me.settings.push.content.enabled')
|
||||
: t('me.settings.push.content.disabled')
|
||||
}
|
||||
iconBack='ChevronRight'
|
||||
onPress={() => {
|
||||
@ -62,9 +60,9 @@ const SettingsApp: React.FC = () => {
|
||||
}}
|
||||
/>
|
||||
<MenuRow
|
||||
title={t('content.fontsize.heading')}
|
||||
title={t('me.settings.fontsize.heading')}
|
||||
content={t(
|
||||
`content.fontsize.content.${mapFontsizeToName(settingsFontsize)}`
|
||||
`me.settings.fontsize.content.${mapFontsizeToName(settingsFontsize)}`
|
||||
)}
|
||||
iconBack='ChevronRight'
|
||||
onPress={() => {
|
||||
@ -74,22 +72,19 @@ const SettingsApp: React.FC = () => {
|
||||
</>
|
||||
) : null}
|
||||
<MenuRow
|
||||
title={t('content.language.heading')}
|
||||
content={t(`content.language.options.${settingsLanguage}`)}
|
||||
title={t('me.settings.language.heading')}
|
||||
// @ts-ignore
|
||||
content={LOCALES[i18n.language]}
|
||||
iconBack='ChevronRight'
|
||||
onPress={() => {
|
||||
const availableLanguages = Object.keys(
|
||||
i18n.services.resourceStore.data
|
||||
)
|
||||
const options = availableLanguages
|
||||
.map(language => {
|
||||
return t(`content.language.options.${language}`)
|
||||
})
|
||||
.concat(t('content.language.options.cancel'))
|
||||
const options = Object.keys(LOCALES)
|
||||
// @ts-ignore
|
||||
.map(locale => LOCALES[locale])
|
||||
.concat(t('me.settings.language.options.cancel'))
|
||||
|
||||
showActionSheetWithOptions(
|
||||
{
|
||||
title: t('content.language.heading'),
|
||||
title: t('me.settings.language.heading'),
|
||||
options,
|
||||
cancelButtonIndex: options.length - 1
|
||||
},
|
||||
@ -97,13 +92,13 @@ const SettingsApp: React.FC = () => {
|
||||
if (buttonIndex < options.length - 1) {
|
||||
analytics('settings_language_press', {
|
||||
current: i18n.language,
|
||||
new: availableLanguages[buttonIndex]
|
||||
new: options[buttonIndex]
|
||||
})
|
||||
haptics('Success')
|
||||
|
||||
// @ts-ignore
|
||||
dispatch(changeLanguage(availableLanguages[buttonIndex]))
|
||||
i18n.changeLanguage(availableLanguages[buttonIndex])
|
||||
dispatch(changeLanguage(Object.keys(LOCALES)[buttonIndex]))
|
||||
i18n.changeLanguage(Object.keys(LOCALES)[buttonIndex])
|
||||
|
||||
// Update Android notification channel language
|
||||
if (Platform.OS === 'android') {
|
||||
@ -114,7 +109,7 @@ const SettingsApp: React.FC = () => {
|
||||
`${accountFull}_default`,
|
||||
{
|
||||
groupId: accountFull,
|
||||
name: t('meSettingsPush:content.default.heading'),
|
||||
name: t('me.push.default.heading'),
|
||||
...androidDefaults
|
||||
}
|
||||
)
|
||||
@ -123,7 +118,7 @@ const SettingsApp: React.FC = () => {
|
||||
`${accountFull}_follow`,
|
||||
{
|
||||
groupId: accountFull,
|
||||
name: t('meSettingsPush:content.follow.heading'),
|
||||
name: t('me.push.follow.heading'),
|
||||
...androidDefaults
|
||||
}
|
||||
)
|
||||
@ -131,7 +126,7 @@ const SettingsApp: React.FC = () => {
|
||||
`${accountFull}_favourite`,
|
||||
{
|
||||
groupId: accountFull,
|
||||
name: t('meSettingsPush:content.favourite.heading'),
|
||||
name: t('me.push.favourite.heading'),
|
||||
...androidDefaults
|
||||
}
|
||||
)
|
||||
@ -139,7 +134,7 @@ const SettingsApp: React.FC = () => {
|
||||
`${accountFull}_reblog`,
|
||||
{
|
||||
groupId: accountFull,
|
||||
name: t('meSettingsPush:content.reblog.heading'),
|
||||
name: t('me.push.reblog.heading'),
|
||||
...androidDefaults
|
||||
}
|
||||
)
|
||||
@ -147,7 +142,7 @@ const SettingsApp: React.FC = () => {
|
||||
`${accountFull}_mention`,
|
||||
{
|
||||
groupId: accountFull,
|
||||
name: t('meSettingsPush:content.mention.heading'),
|
||||
name: t('me.push.mention.heading'),
|
||||
...androidDefaults
|
||||
}
|
||||
)
|
||||
@ -155,7 +150,7 @@ const SettingsApp: React.FC = () => {
|
||||
`${accountFull}_poll`,
|
||||
{
|
||||
groupId: accountFull,
|
||||
name: t('meSettingsPush:content.poll.heading'),
|
||||
name: t('me.push.poll.heading'),
|
||||
...androidDefaults
|
||||
}
|
||||
)
|
||||
@ -168,18 +163,18 @@ const SettingsApp: React.FC = () => {
|
||||
}}
|
||||
/>
|
||||
<MenuRow
|
||||
title={t('content.theme.heading')}
|
||||
content={t(`content.theme.options.${settingsTheme}`)}
|
||||
title={t('me.settings.theme.heading')}
|
||||
content={t(`me.settings.theme.options.${settingsTheme}`)}
|
||||
iconBack='ChevronRight'
|
||||
onPress={() =>
|
||||
showActionSheetWithOptions(
|
||||
{
|
||||
title: t('content.theme.heading'),
|
||||
title: t('me.settings.theme.heading'),
|
||||
options: [
|
||||
t('content.theme.options.auto'),
|
||||
t('content.theme.options.light'),
|
||||
t('content.theme.options.dark'),
|
||||
t('content.theme.options.cancel')
|
||||
t('me.settings.theme.options.auto'),
|
||||
t('me.settings.theme.options.light'),
|
||||
t('me.settings.theme.options.dark'),
|
||||
t('me.settings.theme.options.cancel')
|
||||
],
|
||||
cancelButtonIndex: 3
|
||||
},
|
||||
@ -217,17 +212,17 @@ const SettingsApp: React.FC = () => {
|
||||
}
|
||||
/>
|
||||
<MenuRow
|
||||
title={t('content.browser.heading')}
|
||||
content={t(`content.browser.options.${settingsBrowser}`)}
|
||||
title={t('me.settings.browser.heading')}
|
||||
content={t(`me.settings.browser.options.${settingsBrowser}`)}
|
||||
iconBack='ChevronRight'
|
||||
onPress={() =>
|
||||
showActionSheetWithOptions(
|
||||
{
|
||||
title: t('content.browser.heading'),
|
||||
title: t('me.settings.browser.heading'),
|
||||
options: [
|
||||
t('content.browser.options.internal'),
|
||||
t('content.browser.options.external'),
|
||||
t('content.browser.options.cancel')
|
||||
t('me.settings.browser.options.internal'),
|
||||
t('me.settings.browser.options.external'),
|
||||
t('me.settings.browser.options.cancel')
|
||||
],
|
||||
cancelButtonIndex: 2
|
||||
},
|
||||
|
@ -18,7 +18,7 @@ const SettingsTooot: React.FC = () => {
|
||||
const instanceActive = useSelector(getInstanceActive)
|
||||
const navigation = useNavigation()
|
||||
const { theme } = useTheme()
|
||||
const { t } = useTranslation('meSettings')
|
||||
const { t } = useTranslation('screenTabs')
|
||||
|
||||
const { isLoading, data } = useSearchQuery({
|
||||
term: '@tooot@xmflsct.com',
|
||||
@ -28,7 +28,7 @@ const SettingsTooot: React.FC = () => {
|
||||
return (
|
||||
<MenuContainer>
|
||||
<MenuRow
|
||||
title={t('content.support.heading')}
|
||||
title={t('me.settings.support.heading')}
|
||||
content={
|
||||
<Icon
|
||||
name='Heart'
|
||||
@ -47,7 +47,7 @@ const SettingsTooot: React.FC = () => {
|
||||
Updates.releaseChannel?.includes(channel)
|
||||
) ? (
|
||||
<MenuRow
|
||||
title={t('content.review.heading')}
|
||||
title={t('me.settings.review.heading')}
|
||||
content={
|
||||
<Icon
|
||||
name='Star'
|
||||
@ -65,7 +65,7 @@ const SettingsTooot: React.FC = () => {
|
||||
/>
|
||||
) : null}
|
||||
<MenuRow
|
||||
title={t('content.contact.heading')}
|
||||
title={t('me.settings.contact.heading')}
|
||||
loading={isLoading}
|
||||
content={
|
||||
<Icon
|
||||
|
@ -12,7 +12,7 @@ const ScreenMeSwitch: React.FC<StackScreenProps<
|
||||
Nav.TabMeStackParamList,
|
||||
'Tab-Me-Switch'
|
||||
>> = ({ navigation }) => {
|
||||
const { t } = useTranslation()
|
||||
const { t } = useTranslation('screenTabs')
|
||||
return (
|
||||
<KeyboardAvoidingView
|
||||
style={{ flex: 1 }}
|
||||
@ -25,10 +25,10 @@ const ScreenMeSwitch: React.FC<StackScreenProps<
|
||||
name='Screen-Me-Switch-Root'
|
||||
component={ScreenMeSwitchRoot}
|
||||
options={{
|
||||
headerTitle: t('meSwitch:heading'),
|
||||
headerTitle: t('me.stacks.switch.name'),
|
||||
...(Platform.OS === 'android' && {
|
||||
headerCenter: () => (
|
||||
<HeaderCenter content={t('meSwitch:heading')} />
|
||||
<HeaderCenter content={t('me.stacks.switch.name')} />
|
||||
)
|
||||
}),
|
||||
headerLeft: () => (
|
||||
|
@ -48,7 +48,7 @@ const AccountButton: React.FC<Props> = ({ instance, disabled = false }) => {
|
||||
}
|
||||
|
||||
const ScreenMeSwitchRoot: React.FC = () => {
|
||||
const { t } = useTranslation('meSwitch')
|
||||
const { t } = useTranslation('screenTabs')
|
||||
const { theme } = useTheme()
|
||||
const instances = useSelector(getInstances)
|
||||
const instanceActive = useSelector(getInstanceActive)
|
||||
@ -57,7 +57,7 @@ const ScreenMeSwitchRoot: React.FC = () => {
|
||||
<ScrollView style={styles.base} keyboardShouldPersistTaps='always'>
|
||||
<View style={[styles.firstSection, { borderBottomColor: theme.border }]}>
|
||||
<Text style={[styles.header, { color: theme.primaryDefault }]}>
|
||||
{t('content.existing')}
|
||||
{t('me.switch.existing')}
|
||||
</Text>
|
||||
<View style={styles.accountButtons}>
|
||||
{instances.length
|
||||
@ -88,7 +88,7 @@ const ScreenMeSwitchRoot: React.FC = () => {
|
||||
|
||||
<View style={styles.secondSection}>
|
||||
<Text style={[styles.header, { color: theme.primaryDefault }]}>
|
||||
{t('content.new')}
|
||||
{t('me.switch.new')}
|
||||
</Text>
|
||||
<ComponentInstance disableHeaderImage goBack />
|
||||
</View>
|
||||
|
@ -15,7 +15,7 @@ const Stack = createNativeStackNavigator<Nav.TabNotificationsStackParamList>()
|
||||
const TabNotifications = React.memo(
|
||||
() => {
|
||||
const navigation = useNavigation()
|
||||
const { t, i18n } = useTranslation()
|
||||
const { t, i18n } = useTranslation('screenTabs')
|
||||
|
||||
const screenOptions = useMemo(
|
||||
() => ({
|
||||
@ -26,10 +26,10 @@ const TabNotifications = React.memo(
|
||||
)
|
||||
const screenOptionsRoot = useMemo(
|
||||
() => ({
|
||||
headerTitle: t('notifications:heading'),
|
||||
headerTitle: t('tabs.notifications.name'),
|
||||
...(Platform.OS === 'android' && {
|
||||
headerCenter: () => (
|
||||
<HeaderCenter content={t('notifications:heading')} />
|
||||
<HeaderCenter content={t('tabs.notifications.name')} />
|
||||
)
|
||||
}),
|
||||
headerRight: () => (
|
||||
|
@ -23,7 +23,7 @@ const Stack = createNativeStackNavigator<Nav.TabPublicStackParamList>()
|
||||
|
||||
const TabPublic = React.memo(
|
||||
({ navigation }: TabPublicProps) => {
|
||||
const { t, i18n } = useTranslation()
|
||||
const { t, i18n } = useTranslation('screenTabs')
|
||||
const { mode } = useTheme()
|
||||
|
||||
const [segment, setSegment] = useState(0)
|
||||
@ -32,11 +32,11 @@ const TabPublic = React.memo(
|
||||
key: App.Pages
|
||||
}[] = [
|
||||
{
|
||||
title: t('public:heading.segments.left'),
|
||||
title: t('tabs.public.segments.left'),
|
||||
key: 'LocalPublic'
|
||||
},
|
||||
{
|
||||
title: t('public:heading.segments.right'),
|
||||
title: t('tabs.public.segments.right'),
|
||||
key: 'Local'
|
||||
}
|
||||
]
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user