mirror of
https://github.com/tooot-app/app
synced 2025-04-16 03:07:32 +02: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')
|
log('log', 'App', 'bootstrapped')
|
||||||
if (bootstrapped) {
|
if (bootstrapped) {
|
||||||
log('log', 'App', 'loading actual app :)')
|
log('log', 'App', 'loading actual app :)')
|
||||||
i18n.changeLanguage(getSettingsLanguage(store.getState()))
|
const language = getSettingsLanguage(store.getState())
|
||||||
|
i18n.changeLanguage(language)
|
||||||
return (
|
return (
|
||||||
<ActionSheetProvider>
|
<ActionSheetProvider>
|
||||||
<AccessibilityManager>
|
<AccessibilityManager>
|
||||||
|
@ -35,7 +35,7 @@ export interface Props {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const Screens: React.FC<Props> = ({ localCorrupt }) => {
|
const Screens: React.FC<Props> = ({ localCorrupt }) => {
|
||||||
const { t } = useTranslation('common')
|
const { t } = useTranslation('screens')
|
||||||
const dispatch = useDispatch()
|
const dispatch = useDispatch()
|
||||||
const instanceActive = useSelector(getInstanceActive)
|
const instanceActive = useSelector(getInstanceActive)
|
||||||
const { mode, theme } = useTheme()
|
const { mode, theme } = useTheme()
|
||||||
@ -92,7 +92,7 @@ const Screens: React.FC<Props> = ({ localCorrupt }) => {
|
|||||||
const showLocalCorrect = () => {
|
const showLocalCorrect = () => {
|
||||||
if (localCorrupt) {
|
if (localCorrupt) {
|
||||||
displayMessage({
|
displayMessage({
|
||||||
message: t('index.localCorrupt'),
|
message: t('localCorrupt.message'),
|
||||||
description: localCorrupt.length ? localCorrupt : undefined,
|
description: localCorrupt.length ? localCorrupt : undefined,
|
||||||
type: 'error',
|
type: 'error',
|
||||||
mode
|
mode
|
||||||
|
@ -131,7 +131,7 @@ const ComponentInstance: React.FC<Props> = ({
|
|||||||
{!disableHeaderImage ? (
|
{!disableHeaderImage ? (
|
||||||
<View style={styles.imageContainer}>
|
<View style={styles.imageContainer}>
|
||||||
<Image
|
<Image
|
||||||
source={require('assets/screens/meRoot/welcome.png')}
|
source={require('assets/images/welcome.png')}
|
||||||
style={styles.image}
|
style={styles.image}
|
||||||
/>
|
/>
|
||||||
</View>
|
</View>
|
||||||
|
@ -41,7 +41,7 @@ const RelationshipIncoming: React.FC<Props> = ({ id }) => {
|
|||||||
displayMessage({
|
displayMessage({
|
||||||
type: 'error',
|
type: 'error',
|
||||||
mode,
|
mode,
|
||||||
message: t('common:toastMessage.error.message', {
|
message: t('common:message.error.message', {
|
||||||
function: t(`relationship:${type}.function`)
|
function: t(`relationship:${type}.function`)
|
||||||
}),
|
}),
|
||||||
...(err.status &&
|
...(err.status &&
|
||||||
|
@ -42,7 +42,7 @@ const RelationshipOutgoing = React.memo(
|
|||||||
displayMessage({
|
displayMessage({
|
||||||
mode,
|
mode,
|
||||||
type: 'error',
|
type: 'error',
|
||||||
message: t('common:toastMessage.error.message', {
|
message: t('common:message.error.message', {
|
||||||
function: t(`${action}.function`)
|
function: t(`${action}.function`)
|
||||||
}),
|
}),
|
||||||
...(err.status &&
|
...(err.status &&
|
||||||
|
@ -85,7 +85,7 @@ const TimelineActions: React.FC<Props> = ({
|
|||||||
displayMessage({
|
displayMessage({
|
||||||
mode,
|
mode,
|
||||||
type: 'error',
|
type: 'error',
|
||||||
message: t('common:toastMessage.error.message', {
|
message: t('common:message.error.message', {
|
||||||
function: t(
|
function: t(
|
||||||
`shared.actions.${correctParam.payload.property}.function`
|
`shared.actions.${correctParam.payload.property}.function`
|
||||||
)
|
)
|
||||||
|
@ -59,7 +59,7 @@ const HeaderConversation = React.memo(
|
|||||||
displayMessage({
|
displayMessage({
|
||||||
mode,
|
mode,
|
||||||
type: 'error',
|
type: 'error',
|
||||||
message: t('common:toastMessage.error.message', {
|
message: t('common:message.error.message', {
|
||||||
function: t(`shared.header.conversation.delete.function`)
|
function: t(`shared.header.conversation.delete.function`)
|
||||||
}),
|
}),
|
||||||
...(err.status &&
|
...(err.status &&
|
||||||
|
@ -63,7 +63,7 @@ const TimelinePoll: React.FC<Props> = ({
|
|||||||
displayMessage({
|
displayMessage({
|
||||||
mode,
|
mode,
|
||||||
type: 'error',
|
type: 'error',
|
||||||
message: t('common:toastMessage.error.message', {
|
message: t('common:message.error.message', {
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
function: t(`shared.poll.meta.button.${theParams.payload.type}`)
|
function: t(`shared.poll.meta.button.${theParams.payload.type}`)
|
||||||
}),
|
}),
|
||||||
@ -269,12 +269,14 @@ const TimelinePoll: React.FC<Props> = ({
|
|||||||
return (
|
return (
|
||||||
<Text style={[styles.votes, { color: theme.secondary }]}>
|
<Text style={[styles.votes, { color: theme.secondary }]}>
|
||||||
{t('shared.poll.meta.count.voters', { count: poll.voters_count })}
|
{t('shared.poll.meta.count.voters', { count: poll.voters_count })}
|
||||||
|
{' • '}
|
||||||
</Text>
|
</Text>
|
||||||
)
|
)
|
||||||
} else if (poll.votes_count !== null) {
|
} else if (poll.votes_count !== null) {
|
||||||
return (
|
return (
|
||||||
<Text style={[styles.votes, { color: theme.secondary }]}>
|
<Text style={[styles.votes, { color: theme.secondary }]}>
|
||||||
{t('shared.poll.meta.count.votes', { count: poll.votes_count })}
|
{t('shared.poll.meta.count.votes', { count: poll.votes_count })}
|
||||||
|
{' • '}
|
||||||
</Text>
|
</Text>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -1,37 +1,16 @@
|
|||||||
export default {
|
export default {
|
||||||
common: require('./common'),
|
common: require('./common'),
|
||||||
|
|
||||||
local: require('./screens/local'),
|
screens: require('./screens'),
|
||||||
|
screenActions: require('./screens/actions'),
|
||||||
public: require('./screens/public'),
|
screenAnnouncements: require('./screens/announcements'),
|
||||||
|
screenCompose: require('./screens/compose'),
|
||||||
notifications: require('./screens/notifications'),
|
screenImageViewer: require('./screens/imageViewer'),
|
||||||
|
screenTabs: require('./screens/tabs'),
|
||||||
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'),
|
|
||||||
|
|
||||||
componentInstance: require('./components/instance'),
|
componentInstance: require('./components/instance'),
|
||||||
componentParse: require('./components/parse'),
|
componentParse: require('./components/parse'),
|
||||||
componentRelationship: require('./components/relationship'),
|
componentRelationship: require('./components/relationship'),
|
||||||
componentRelativeTime: require('./components/relativeTime'),
|
componentRelativeTime: require('./components/relativeTime'),
|
||||||
componentTimeline: require('./components/timeline'),
|
componentTimeline: require('./components/timeline')
|
||||||
|
|
||||||
screenActions: require('./screens/screenActions'),
|
|
||||||
screenImageViewer: require('./screens/screenImageViewer')
|
|
||||||
}
|
}
|
||||||
|
@ -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": {
|
"buttons": {
|
||||||
"apply": "Apply",
|
"apply": "Apply",
|
||||||
"cancel": "Cancel"
|
"cancel": "Cancel"
|
||||||
},
|
},
|
||||||
"toastMessage": {
|
"message": {
|
||||||
"success": {
|
"success": {
|
||||||
"message": "{{function}} succeed"
|
"message": "{{function}} succeed"
|
||||||
},
|
},
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
{
|
{
|
||||||
"strings": {
|
"strings": {
|
||||||
"prefixAgo": null,
|
"prefixAgo": "",
|
||||||
"prefixFromNow": null,
|
"prefixFromNow": "",
|
||||||
"suffixAgo": "ago",
|
"suffixAgo": "ago",
|
||||||
"suffixFromNow": null,
|
"suffixFromNow": "",
|
||||||
"seconds": "%d seconds",
|
"seconds": "%d seconds",
|
||||||
"minute": "about a minute",
|
"minute": "about a minute",
|
||||||
"minutes": "%d minutes",
|
"minutes": "%d minutes",
|
||||||
|
@ -149,10 +149,10 @@
|
|||||||
"refresh": "Refresh"
|
"refresh": "Refresh"
|
||||||
},
|
},
|
||||||
"count": {
|
"count": {
|
||||||
"voters": "{{count}} user voted • ",
|
"voters": "{{count}} user voted",
|
||||||
"voters_plural": "{{count}} users voted • ",
|
"voters_plural": "{{count}} users voted",
|
||||||
"votes": "{{count}} vote • ",
|
"votes": "{{count}} vote",
|
||||||
"votes_plural": "{{count}} votes • "
|
"votes_plural": "{{count}} votes"
|
||||||
},
|
},
|
||||||
"expiration": {
|
"expiration": {
|
||||||
"expired": "Vote expired",
|
"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 />",
|
"published": "Published <0 />",
|
||||||
"button": {
|
"button": {
|
||||||
"read": "Read",
|
"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 {
|
export default {
|
||||||
common: require('./common'),
|
common: require('./common'),
|
||||||
|
|
||||||
local: require('./screens/local'),
|
screens: require('./screens'),
|
||||||
|
screenActions: require('./screens/actions'),
|
||||||
public: require('./screens/public'),
|
screenAnnouncements: require('./screens/announcements'),
|
||||||
|
screenCompose: require('./screens/compose'),
|
||||||
notifications: require('./screens/notifications'),
|
screenImageViewer: require('./screens/imageViewer'),
|
||||||
|
screenTabs: require('./screens/tabs'),
|
||||||
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'),
|
|
||||||
|
|
||||||
componentInstance: require('./components/instance'),
|
componentInstance: require('./components/instance'),
|
||||||
componentParse: require('./components/parse'),
|
componentParse: require('./components/parse'),
|
||||||
componentRelationship: require('./components/relationship'),
|
componentRelationship: require('./components/relationship'),
|
||||||
componentRelativeTime: require('./components/relativeTime'),
|
componentRelativeTime: require('./components/relativeTime'),
|
||||||
componentTimeline: require('./components/timeline'),
|
componentTimeline: require('./components/timeline')
|
||||||
|
|
||||||
screenActions: require('./screens/screenActions'),
|
|
||||||
screenImageViewer: require('./screens/screenImageViewer')
|
|
||||||
}
|
}
|
||||||
|
@ -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({
|
displayMessage({
|
||||||
mode,
|
mode,
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message: t('common:toastMessage.success.message', {
|
message: t('common:message.success.message', {
|
||||||
function: t(
|
function: t(
|
||||||
`shared.header.actions.account.${theParams.payload.property}.function`,
|
`shared.header.actions.account.${theParams.payload.property}.function`,
|
||||||
{
|
{
|
||||||
@ -49,7 +49,7 @@ const ActionsAccount: React.FC<Props> = ({
|
|||||||
displayMessage({
|
displayMessage({
|
||||||
mode,
|
mode,
|
||||||
type: 'error',
|
type: 'error',
|
||||||
message: t('common:toastMessage.error.message', {
|
message: t('common:message.error.message', {
|
||||||
function: t(
|
function: t(
|
||||||
`shared.header.actions.account.${theParams.payload.property}.function`
|
`shared.header.actions.account.${theParams.payload.property}.function`
|
||||||
)
|
)
|
||||||
|
@ -34,7 +34,7 @@ const ActionsDomain: React.FC<Props> = ({
|
|||||||
displayMessage({
|
displayMessage({
|
||||||
mode,
|
mode,
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message: t('common:toastMessage.success.message', {
|
message: t('common:message.success.message', {
|
||||||
function: t(`shared.header.actions.domain.block.function`)
|
function: t(`shared.header.actions.domain.block.function`)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
@ -43,7 +43,7 @@ const ActionsStatus: React.FC<Props> = ({
|
|||||||
displayMessage({
|
displayMessage({
|
||||||
mode,
|
mode,
|
||||||
type: 'error',
|
type: 'error',
|
||||||
message: t('common:toastMessage.error.message', {
|
message: t('common:message.error.message', {
|
||||||
function: t(`shared.header.actions.status.${theFunction}.function`)
|
function: t(`shared.header.actions.status.${theFunction}.function`)
|
||||||
}),
|
}),
|
||||||
...(err.status &&
|
...(err.status &&
|
||||||
|
@ -35,7 +35,7 @@ const ScreenAnnouncements: React.FC<ScreenAnnouncementsProp> = ({
|
|||||||
const { reduceMotionEnabled } = useAccessibility()
|
const { reduceMotionEnabled } = useAccessibility()
|
||||||
const { mode, theme } = useTheme()
|
const { mode, theme } = useTheme()
|
||||||
const [index, setIndex] = useState(0)
|
const [index, setIndex] = useState(0)
|
||||||
const { t } = useTranslation('sharedAnnouncements')
|
const { t } = useTranslation('screenAnnouncements')
|
||||||
|
|
||||||
const query = useAnnouncementQuery({
|
const query = useAnnouncementQuery({
|
||||||
showAll,
|
showAll,
|
||||||
@ -77,7 +77,7 @@ const ScreenAnnouncements: React.FC<ScreenAnnouncementsProp> = ({
|
|||||||
>
|
>
|
||||||
<Text style={[styles.published, { color: theme.secondary }]}>
|
<Text style={[styles.published, { color: theme.secondary }]}>
|
||||||
<Trans
|
<Trans
|
||||||
i18nKey='sharedAnnouncements:content.published'
|
i18nKey='screenAnnouncements:content.published'
|
||||||
components={[<RelativeTime date={item.published_at} />]}
|
components={[<RelativeTime date={item.published_at} />]}
|
||||||
/>
|
/>
|
||||||
</Text>
|
</Text>
|
||||||
@ -223,7 +223,7 @@ const ScreenAnnouncements: React.FC<ScreenAnnouncementsProp> = ({
|
|||||||
native={false}
|
native={false}
|
||||||
onPress={() => navigation.goBack()}
|
onPress={() => navigation.goBack()}
|
||||||
/>
|
/>
|
||||||
<HeaderCenter content={t('sharedAnnouncements:heading')} />
|
<HeaderCenter content={t('screenAnnouncements:heading')} />
|
||||||
<View style={{ opacity: 0 }}>
|
<View style={{ opacity: 0 }}>
|
||||||
<HeaderRight
|
<HeaderRight
|
||||||
content='MoreHorizontal'
|
content='MoreHorizontal'
|
||||||
|
@ -54,7 +54,7 @@ const ScreenCompose: React.FC<ScreenComposeProp> = ({
|
|||||||
route: { params },
|
route: { params },
|
||||||
navigation
|
navigation
|
||||||
}) => {
|
}) => {
|
||||||
const { t } = useTranslation('sharedCompose')
|
const { t } = useTranslation('screenCompose')
|
||||||
const { theme } = useTheme()
|
const { theme } = useTheme()
|
||||||
const queryClient = useQueryClient()
|
const queryClient = useQueryClient()
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ const ComposeDraftsList: React.FC<ScreenComposeEditAttachmentProp> = ({
|
|||||||
},
|
},
|
||||||
navigation
|
navigation
|
||||||
}) => {
|
}) => {
|
||||||
const { t } = useTranslation('sharedCompose')
|
const { t } = useTranslation('screenCompose')
|
||||||
|
|
||||||
const children = useCallback(
|
const children = useCallback(
|
||||||
() => <ComposeDraftsListRoot timestamp={timestamp} />,
|
() => <ComposeDraftsListRoot timestamp={timestamp} />,
|
||||||
|
@ -34,7 +34,7 @@ export interface Props {
|
|||||||
|
|
||||||
const ComposeDraftsListRoot: React.FC<Props> = ({ timestamp }) => {
|
const ComposeDraftsListRoot: React.FC<Props> = ({ timestamp }) => {
|
||||||
const { composeDispatch } = useContext(ComposeContext)
|
const { composeDispatch } = useContext(ComposeContext)
|
||||||
const { t } = useTranslation('sharedCompose')
|
const { t } = useTranslation('screenCompose')
|
||||||
const navigation = useNavigation()
|
const navigation = useNavigation()
|
||||||
const dispatch = useDispatch()
|
const dispatch = useDispatch()
|
||||||
const { mode, theme } = useTheme()
|
const { mode, theme } = useTheme()
|
||||||
|
@ -22,7 +22,7 @@ const ComposeEditAttachment: React.FC<ScreenComposeEditAttachmentProp> = ({
|
|||||||
navigation
|
navigation
|
||||||
}) => {
|
}) => {
|
||||||
console.log('rendering')
|
console.log('rendering')
|
||||||
const { t } = useTranslation('sharedCompose')
|
const { t } = useTranslation('screenCompose')
|
||||||
|
|
||||||
const headerLeft = useCallback(
|
const headerLeft = useCallback(
|
||||||
() => (
|
() => (
|
||||||
|
@ -20,7 +20,7 @@ export interface Props {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const ComposeEditAttachmentImage: React.FC<Props> = ({ index }) => {
|
const ComposeEditAttachmentImage: React.FC<Props> = ({ index }) => {
|
||||||
const { t } = useTranslation('sharedCompose')
|
const { t } = useTranslation('screenCompose')
|
||||||
const { theme } = useTheme()
|
const { theme } = useTheme()
|
||||||
|
|
||||||
const { composeState, composeDispatch } = useContext(ComposeContext)
|
const { composeState, composeDispatch } = useContext(ComposeContext)
|
||||||
|
@ -12,7 +12,7 @@ export interface Props {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const ComposeEditAttachmentRoot: React.FC<Props> = ({ index }) => {
|
const ComposeEditAttachmentRoot: React.FC<Props> = ({ index }) => {
|
||||||
const { t } = useTranslation('sharedCompose')
|
const { t } = useTranslation('screenCompose')
|
||||||
const { mode, theme } = useTheme()
|
const { mode, theme } = useTheme()
|
||||||
const { composeState, composeDispatch } = useContext(ComposeContext)
|
const { composeState, composeDispatch } = useContext(ComposeContext)
|
||||||
const theAttachment = composeState.attachments.uploads[index].remote!
|
const theAttachment = composeState.attachments.uploads[index].remote!
|
||||||
|
@ -16,7 +16,7 @@ const ComposeEditAttachmentSubmit: React.FC<Props> = ({ index }) => {
|
|||||||
const { composeState } = useContext(ComposeContext)
|
const { composeState } = useContext(ComposeContext)
|
||||||
const navigation = useNavigation()
|
const navigation = useNavigation()
|
||||||
const [isSubmitting, setIsSubmitting] = useState(false)
|
const [isSubmitting, setIsSubmitting] = useState(false)
|
||||||
const { t } = useTranslation('sharedCompose')
|
const { t } = useTranslation('screenCompose')
|
||||||
|
|
||||||
const theAttachment = composeState.attachments.uploads[index].remote!
|
const theAttachment = composeState.attachments.uploads[index].remote!
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ import addAttachment from './Footer/addAttachment'
|
|||||||
const ComposeActions: React.FC = () => {
|
const ComposeActions: React.FC = () => {
|
||||||
const { showActionSheetWithOptions } = useActionSheet()
|
const { showActionSheetWithOptions } = useActionSheet()
|
||||||
const { composeState, composeDispatch } = useContext(ComposeContext)
|
const { composeState, composeDispatch } = useContext(ComposeContext)
|
||||||
const { t } = useTranslation('sharedCompose')
|
const { t } = useTranslation('screenCompose')
|
||||||
const { theme } = useTheme()
|
const { theme } = useTheme()
|
||||||
|
|
||||||
const attachmentColor = useMemo(() => {
|
const attachmentColor = useMemo(() => {
|
||||||
|
@ -10,7 +10,7 @@ import { useSelector } from 'react-redux'
|
|||||||
import ComposeContext from '../utils/createContext'
|
import ComposeContext from '../utils/createContext'
|
||||||
|
|
||||||
const ComposeDrafts: React.FC = () => {
|
const ComposeDrafts: React.FC = () => {
|
||||||
const { t } = useTranslation('sharedCompose')
|
const { t } = useTranslation('screenCompose')
|
||||||
const navigation = useNavigation()
|
const navigation = useNavigation()
|
||||||
const { composeState } = useContext(ComposeContext)
|
const { composeState } = useContext(ComposeContext)
|
||||||
const instanceDrafts = useSelector(getInstanceDrafts)?.filter(
|
const instanceDrafts = useSelector(getInstanceDrafts)?.filter(
|
||||||
|
@ -33,7 +33,7 @@ const DEFAULT_HEIGHT = 200
|
|||||||
const ComposeAttachments: React.FC = () => {
|
const ComposeAttachments: React.FC = () => {
|
||||||
const { showActionSheetWithOptions } = useActionSheet()
|
const { showActionSheetWithOptions } = useActionSheet()
|
||||||
const { composeState, composeDispatch } = useContext(ComposeContext)
|
const { composeState, composeDispatch } = useContext(ComposeContext)
|
||||||
const { t } = useTranslation('sharedCompose')
|
const { t } = useTranslation('screenCompose')
|
||||||
const { theme } = useTheme()
|
const { theme } = useTheme()
|
||||||
const navigation = useNavigation()
|
const navigation = useNavigation()
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ const ComposePoll: React.FC = () => {
|
|||||||
},
|
},
|
||||||
composeDispatch
|
composeDispatch
|
||||||
} = useContext(ComposeContext)
|
} = useContext(ComposeContext)
|
||||||
const { t } = useTranslation('sharedCompose')
|
const { t } = useTranslation('screenCompose')
|
||||||
const { mode, theme } = useTheme()
|
const { mode, theme } = useTheme()
|
||||||
|
|
||||||
const [firstRender, setFirstRender] = useState(true)
|
const [firstRender, setFirstRender] = useState(true)
|
||||||
|
@ -84,13 +84,13 @@ const addAttachment = async ({
|
|||||||
})
|
})
|
||||||
Alert.alert(
|
Alert.alert(
|
||||||
i18next.t(
|
i18next.t(
|
||||||
'sharedCompose:content.root.actions.attachment.failed.alert.title'
|
'screenCompose:content.root.actions.attachment.failed.alert.title'
|
||||||
),
|
),
|
||||||
undefined,
|
undefined,
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
text: i18next.t(
|
text: i18next.t(
|
||||||
'sharedCompose:content.root.actions.attachment.failed.alert.button'
|
'screenCompose:content.root.actions.attachment.failed.alert.button'
|
||||||
),
|
),
|
||||||
onPress: () => {}
|
onPress: () => {}
|
||||||
}
|
}
|
||||||
@ -130,13 +130,13 @@ const addAttachment = async ({
|
|||||||
{
|
{
|
||||||
options: [
|
options: [
|
||||||
i18next.t(
|
i18next.t(
|
||||||
'sharedCompose:content.root.actions.attachment.actions.options.library'
|
'screenCompose:content.root.actions.attachment.actions.options.library'
|
||||||
),
|
),
|
||||||
i18next.t(
|
i18next.t(
|
||||||
'sharedCompose:content.root.actions.attachment.actions.options.photo'
|
'screenCompose:content.root.actions.attachment.actions.options.photo'
|
||||||
),
|
),
|
||||||
i18next.t(
|
i18next.t(
|
||||||
'sharedCompose:content.root.actions.attachment.actions.options.cancel'
|
'screenCompose:content.root.actions.attachment.actions.options.cancel'
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
cancelButtonIndex: 2
|
cancelButtonIndex: 2
|
||||||
@ -149,15 +149,15 @@ const addAttachment = async ({
|
|||||||
if (status !== 'granted') {
|
if (status !== 'granted') {
|
||||||
Alert.alert(
|
Alert.alert(
|
||||||
i18next.t(
|
i18next.t(
|
||||||
'sharedCompose:content.root.actions.attachment.actions.library.alert.title'
|
'screenCompose:content.root.actions.attachment.actions.library.alert.title'
|
||||||
),
|
),
|
||||||
i18next.t(
|
i18next.t(
|
||||||
'sharedCompose:content.root.actions.attachment.actions.library.alert.message'
|
'screenCompose:content.root.actions.attachment.actions.library.alert.message'
|
||||||
),
|
),
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
text: i18next.t(
|
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',
|
style: 'cancel',
|
||||||
onPress: () => {
|
onPress: () => {
|
||||||
@ -168,7 +168,7 @@ const addAttachment = async ({
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: i18next.t(
|
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',
|
style: 'default',
|
||||||
onPress: () => {
|
onPress: () => {
|
||||||
@ -195,15 +195,15 @@ const addAttachment = async ({
|
|||||||
if (status !== 'granted') {
|
if (status !== 'granted') {
|
||||||
Alert.alert(
|
Alert.alert(
|
||||||
i18next.t(
|
i18next.t(
|
||||||
'sharedCompose:content.root.actions.attachment.actions.photo.alert.title'
|
'screenCompose:content.root.actions.attachment.actions.photo.alert.title'
|
||||||
),
|
),
|
||||||
i18next.t(
|
i18next.t(
|
||||||
'sharedCompose:content.root.actions.attachment.actions.photo.alert.message'
|
'screenCompose:content.root.actions.attachment.actions.photo.alert.message'
|
||||||
),
|
),
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
text: i18next.t(
|
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',
|
style: 'cancel',
|
||||||
onPress: () => {
|
onPress: () => {
|
||||||
@ -214,7 +214,7 @@ const addAttachment = async ({
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: i18next.t(
|
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',
|
style: 'default',
|
||||||
onPress: () => {
|
onPress: () => {
|
||||||
|
@ -11,7 +11,7 @@ import { useSelector } from 'react-redux'
|
|||||||
|
|
||||||
const ComposePostingAs = React.memo(
|
const ComposePostingAs = React.memo(
|
||||||
() => {
|
() => {
|
||||||
const { t } = useTranslation('sharedCompose')
|
const { t } = useTranslation('screenCompose')
|
||||||
const { theme } = useTheme()
|
const { theme } = useTheme()
|
||||||
|
|
||||||
const instanceAccount = useSelector(
|
const instanceAccount = useSelector(
|
||||||
|
@ -8,7 +8,7 @@ import ComposeContext from '../../utils/createContext'
|
|||||||
|
|
||||||
const ComposeSpoilerInput: React.FC = () => {
|
const ComposeSpoilerInput: React.FC = () => {
|
||||||
const { composeState, composeDispatch } = useContext(ComposeContext)
|
const { composeState, composeDispatch } = useContext(ComposeContext)
|
||||||
const { t } = useTranslation('sharedCompose')
|
const { t } = useTranslation('screenCompose')
|
||||||
const { mode, theme } = useTheme()
|
const { mode, theme } = useTheme()
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -8,7 +8,7 @@ import ComposeContext from '../../utils/createContext'
|
|||||||
|
|
||||||
const ComposeTextInput: React.FC = () => {
|
const ComposeTextInput: React.FC = () => {
|
||||||
const { composeState, composeDispatch } = useContext(ComposeContext)
|
const { composeState, composeDispatch } = useContext(ComposeContext)
|
||||||
const { t } = useTranslation('sharedCompose')
|
const { t } = useTranslation('screenCompose')
|
||||||
const { mode, theme } = useTheme()
|
const { mode, theme } = useTheme()
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -20,7 +20,7 @@ const Stack = createNativeStackNavigator<Nav.TabLocalStackParamList>()
|
|||||||
|
|
||||||
const TabLocal = React.memo(
|
const TabLocal = React.memo(
|
||||||
({ navigation }: TabLocalProp) => {
|
({ navigation }: TabLocalProp) => {
|
||||||
const { t, i18n } = useTranslation('local')
|
const { t, i18n } = useTranslation('screenTabs')
|
||||||
|
|
||||||
const screenOptions = useMemo(
|
const screenOptions = useMemo(
|
||||||
() => ({
|
() => ({
|
||||||
@ -31,9 +31,9 @@ const TabLocal = React.memo(
|
|||||||
)
|
)
|
||||||
const screenOptionsRoot = useMemo(
|
const screenOptionsRoot = useMemo(
|
||||||
() => ({
|
() => ({
|
||||||
headerTitle: t('heading'),
|
headerTitle: t('tabs.local.name'),
|
||||||
...(Platform.OS === 'android' && {
|
...(Platform.OS === 'android' && {
|
||||||
headerCenter: () => <HeaderCenter content={t('heading')} />
|
headerCenter: () => <HeaderCenter content={t('tabs.local.name')} />
|
||||||
}),
|
}),
|
||||||
headerRight: () => (
|
headerRight: () => (
|
||||||
<HeaderRight
|
<HeaderRight
|
||||||
|
@ -19,7 +19,7 @@ const Stack = createNativeStackNavigator<Nav.TabMeStackParamList>()
|
|||||||
|
|
||||||
const TabMe = React.memo(
|
const TabMe = React.memo(
|
||||||
() => {
|
() => {
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation('screenTabs')
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Stack.Navigator
|
<Stack.Navigator
|
||||||
@ -38,10 +38,10 @@ const TabMe = React.memo(
|
|||||||
name='Tab-Me-Bookmarks'
|
name='Tab-Me-Bookmarks'
|
||||||
component={ScreenMeBookmarks}
|
component={ScreenMeBookmarks}
|
||||||
options={({ navigation }: any) => ({
|
options={({ navigation }: any) => ({
|
||||||
headerTitle: t('meBookmarks:heading'),
|
headerTitle: t('me.stacks.bookmarks.name'),
|
||||||
...(Platform.OS === 'android' && {
|
...(Platform.OS === 'android' && {
|
||||||
headerCenter: () => (
|
headerCenter: () => (
|
||||||
<HeaderCenter content={t('meBookmarks:heading')} />
|
<HeaderCenter content={t('me.stacks.bookmarks.name')} />
|
||||||
)
|
)
|
||||||
}),
|
}),
|
||||||
headerLeft: () => <HeaderLeft onPress={() => navigation.pop(1)} />
|
headerLeft: () => <HeaderLeft onPress={() => navigation.pop(1)} />
|
||||||
@ -51,10 +51,10 @@ const TabMe = React.memo(
|
|||||||
name='Tab-Me-Conversations'
|
name='Tab-Me-Conversations'
|
||||||
component={ScreenMeConversations}
|
component={ScreenMeConversations}
|
||||||
options={({ navigation }: any) => ({
|
options={({ navigation }: any) => ({
|
||||||
headerTitle: t('meConversations:heading'),
|
headerTitle: t('me.stacks.conversations.name'),
|
||||||
...(Platform.OS === 'android' && {
|
...(Platform.OS === 'android' && {
|
||||||
headerCenter: () => (
|
headerCenter: () => (
|
||||||
<HeaderCenter content={t('meConversations:heading')} />
|
<HeaderCenter content={t('me.stacks.conversations.name')} />
|
||||||
)
|
)
|
||||||
}),
|
}),
|
||||||
headerLeft: () => <HeaderLeft onPress={() => navigation.pop(1)} />
|
headerLeft: () => <HeaderLeft onPress={() => navigation.pop(1)} />
|
||||||
@ -64,10 +64,10 @@ const TabMe = React.memo(
|
|||||||
name='Tab-Me-Favourites'
|
name='Tab-Me-Favourites'
|
||||||
component={ScreenMeFavourites}
|
component={ScreenMeFavourites}
|
||||||
options={({ navigation }: any) => ({
|
options={({ navigation }: any) => ({
|
||||||
headerTitle: t('meFavourites:heading'),
|
headerTitle: t('me.stacks.favourites.name'),
|
||||||
...(Platform.OS === 'android' && {
|
...(Platform.OS === 'android' && {
|
||||||
headerCenter: () => (
|
headerCenter: () => (
|
||||||
<HeaderCenter content={t('meFavourites:heading')} />
|
<HeaderCenter content={t('me.stacks.favourites.name')} />
|
||||||
)
|
)
|
||||||
}),
|
}),
|
||||||
headerLeft: () => <HeaderLeft onPress={() => navigation.pop(1)} />
|
headerLeft: () => <HeaderLeft onPress={() => navigation.pop(1)} />
|
||||||
@ -77,10 +77,10 @@ const TabMe = React.memo(
|
|||||||
name='Tab-Me-Lists'
|
name='Tab-Me-Lists'
|
||||||
component={ScreenMeLists}
|
component={ScreenMeLists}
|
||||||
options={({ navigation }: any) => ({
|
options={({ navigation }: any) => ({
|
||||||
headerTitle: t('meLists:heading'),
|
headerTitle: t('me.stacks.lists.name'),
|
||||||
...(Platform.OS === 'android' && {
|
...(Platform.OS === 'android' && {
|
||||||
headerCenter: () => (
|
headerCenter: () => (
|
||||||
<HeaderCenter content={t('meLists:heading')} />
|
<HeaderCenter content={t('me.stacks.lists.name')} />
|
||||||
)
|
)
|
||||||
}),
|
}),
|
||||||
headerLeft: () => <HeaderLeft onPress={() => navigation.pop(1)} />
|
headerLeft: () => <HeaderLeft onPress={() => navigation.pop(1)} />
|
||||||
@ -90,11 +90,11 @@ const TabMe = React.memo(
|
|||||||
name='Tab-Me-Lists-List'
|
name='Tab-Me-Lists-List'
|
||||||
component={ScreenMeListsList}
|
component={ScreenMeListsList}
|
||||||
options={({ route, navigation }: any) => ({
|
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' && {
|
...(Platform.OS === 'android' && {
|
||||||
headerCenter: () => (
|
headerCenter: () => (
|
||||||
<HeaderCenter
|
<HeaderCenter
|
||||||
content={t('meListsList:heading', {
|
content={t('me.stacks.list.name', {
|
||||||
list: route.params.title
|
list: route.params.title
|
||||||
})}
|
})}
|
||||||
/>
|
/>
|
||||||
@ -107,10 +107,10 @@ const TabMe = React.memo(
|
|||||||
name='Tab-Me-Settings'
|
name='Tab-Me-Settings'
|
||||||
component={ScreenMeSettings}
|
component={ScreenMeSettings}
|
||||||
options={({ navigation }: any) => ({
|
options={({ navigation }: any) => ({
|
||||||
headerTitle: t('meSettings:heading'),
|
headerTitle: t('me.stacks.settings.name'),
|
||||||
...(Platform.OS === 'android' && {
|
...(Platform.OS === 'android' && {
|
||||||
headerCenter: () => (
|
headerCenter: () => (
|
||||||
<HeaderCenter content={t('meSettings:heading')} />
|
<HeaderCenter content={t('me.stacks.settings.name')} />
|
||||||
)
|
)
|
||||||
}),
|
}),
|
||||||
headerLeft: () => <HeaderLeft onPress={() => navigation.pop(1)} />
|
headerLeft: () => <HeaderLeft onPress={() => navigation.pop(1)} />
|
||||||
@ -120,10 +120,10 @@ const TabMe = React.memo(
|
|||||||
name='Tab-Me-Settings-Fontsize'
|
name='Tab-Me-Settings-Fontsize'
|
||||||
component={ScreenMeSettingsFontsize}
|
component={ScreenMeSettingsFontsize}
|
||||||
options={({ navigation }: any) => ({
|
options={({ navigation }: any) => ({
|
||||||
headerTitle: t('meSettingsFontsize:heading'),
|
headerTitle: t('me.stacks.fontSize.name'),
|
||||||
...(Platform.OS === 'android' && {
|
...(Platform.OS === 'android' && {
|
||||||
headerCenter: () => (
|
headerCenter: () => (
|
||||||
<HeaderCenter content={t('meSettingsFontsize:heading')} />
|
<HeaderCenter content={t('me.stacks.fontSize.name')} />
|
||||||
)
|
)
|
||||||
}),
|
}),
|
||||||
headerLeft: () => <HeaderLeft onPress={() => navigation.pop(1)} />
|
headerLeft: () => <HeaderLeft onPress={() => navigation.pop(1)} />
|
||||||
@ -133,10 +133,10 @@ const TabMe = React.memo(
|
|||||||
name='Tab-Me-Settings-Push'
|
name='Tab-Me-Settings-Push'
|
||||||
component={ScreenMeSettingsPush}
|
component={ScreenMeSettingsPush}
|
||||||
options={({ navigation }: any) => ({
|
options={({ navigation }: any) => ({
|
||||||
headerTitle: t('meSettingsPush:heading'),
|
headerTitle: t('me.stacks.push.name'),
|
||||||
...(Platform.OS === 'android' && {
|
...(Platform.OS === 'android' && {
|
||||||
headerCenter: () => (
|
headerCenter: () => (
|
||||||
<HeaderCenter content={t('meSettingsPush:heading')} />
|
<HeaderCenter content={t('me.stacks.push.name')} />
|
||||||
)
|
)
|
||||||
}),
|
}),
|
||||||
headerLeft: () => <HeaderLeft onPress={() => navigation.pop(1)} />
|
headerLeft: () => <HeaderLeft onPress={() => navigation.pop(1)} />
|
||||||
|
@ -37,7 +37,7 @@ const ScreenMeSettingsFontsize: React.FC<StackScreenProps<
|
|||||||
'Tab-Me-Settings-Fontsize'
|
'Tab-Me-Settings-Fontsize'
|
||||||
>> = () => {
|
>> = () => {
|
||||||
const { mode, theme } = useTheme()
|
const { mode, theme } = useTheme()
|
||||||
const { t } = useTranslation('meSettingsFontsize')
|
const { t } = useTranslation('screenTabs')
|
||||||
const initialSize = useSelector(getSettingsFontsize)
|
const initialSize = useSelector(getSettingsFontsize)
|
||||||
const dispatch = useDispatch()
|
const dispatch = useDispatch()
|
||||||
|
|
||||||
@ -54,7 +54,7 @@ const ScreenMeSettingsFontsize: React.FC<StackScreenProps<
|
|||||||
reblogged: false,
|
reblogged: false,
|
||||||
muted: false,
|
muted: false,
|
||||||
bookmarked: false,
|
bookmarked: false,
|
||||||
content: t('content.demo'),
|
content: t('me.fontSize.demo'),
|
||||||
reblog: null,
|
reblog: null,
|
||||||
application: {
|
application: {
|
||||||
name: 'tooot',
|
name: 'tooot',
|
||||||
@ -97,7 +97,7 @@ const ScreenMeSettingsFontsize: React.FC<StackScreenProps<
|
|||||||
}
|
}
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
{t(`content.sizes.${mapFontsizeToName(size)}`)}
|
{t(`me.fontSize.sizes.${mapFontsizeToName(size)}`)}
|
||||||
</Text>
|
</Text>
|
||||||
))}
|
))}
|
||||||
</>
|
</>
|
||||||
@ -107,7 +107,7 @@ const ScreenMeSettingsFontsize: React.FC<StackScreenProps<
|
|||||||
return (
|
return (
|
||||||
<ScrollView scrollEnabled={false}>
|
<ScrollView scrollEnabled={false}>
|
||||||
<Text style={[styles.header, { color: theme.primaryDefault }]}>
|
<Text style={[styles.header, { color: theme.primaryDefault }]}>
|
||||||
{t('content.showcase')}
|
{t('me.fontSize.showcase')}
|
||||||
</Text>
|
</Text>
|
||||||
<View>
|
<View>
|
||||||
<ComponentSeparator
|
<ComponentSeparator
|
||||||
@ -121,7 +121,7 @@ const ScreenMeSettingsFontsize: React.FC<StackScreenProps<
|
|||||||
/>
|
/>
|
||||||
</View>
|
</View>
|
||||||
<Text style={[styles.header, { color: theme.primaryDefault }]}>
|
<Text style={[styles.header, { color: theme.primaryDefault }]}>
|
||||||
{t('content.availableSizes')}
|
{t('me.fontSize.availableSizes')}
|
||||||
</Text>
|
</Text>
|
||||||
<View style={styles.sizesDemo}>{sizesDemo}</View>
|
<View style={styles.sizesDemo}>{sizesDemo}</View>
|
||||||
<View style={styles.controls}>
|
<View style={styles.controls}>
|
||||||
|
@ -15,7 +15,7 @@ import { StyleConstants } from '@utils/styles/constants'
|
|||||||
import { AppState, Linking } from 'react-native'
|
import { AppState, Linking } from 'react-native'
|
||||||
|
|
||||||
const ScreenMeSettingsPush: React.FC = () => {
|
const ScreenMeSettingsPush: React.FC = () => {
|
||||||
const { t } = useTranslation('meSettingsPush')
|
const { t } = useTranslation('screenTabs')
|
||||||
|
|
||||||
const dispatch = useDispatch()
|
const dispatch = useDispatch()
|
||||||
const instancePush = useSelector(getInstancePush)
|
const instancePush = useSelector(getInstancePush)
|
||||||
@ -53,7 +53,7 @@ const ScreenMeSettingsPush: React.FC = () => {
|
|||||||
]).map(alert => (
|
]).map(alert => (
|
||||||
<MenuRow
|
<MenuRow
|
||||||
key={alert}
|
key={alert}
|
||||||
title={t(`content.${alert}.heading`)}
|
title={t(`me.push.${alert}.heading`)}
|
||||||
switchDisabled={
|
switchDisabled={
|
||||||
!pushEnabled || !instancePush.global.value || isLoading
|
!pushEnabled || !instancePush.global.value || isLoading
|
||||||
}
|
}
|
||||||
@ -85,8 +85,8 @@ const ScreenMeSettingsPush: React.FC = () => {
|
|||||||
type='text'
|
type='text'
|
||||||
content={
|
content={
|
||||||
pushCanAskAgain
|
pushCanAskAgain
|
||||||
? t('content.enable.direct')
|
? t('me.push.enable.direct')
|
||||||
: t('content.enable.settings')
|
: t('me.push.enable.settings')
|
||||||
}
|
}
|
||||||
style={{
|
style={{
|
||||||
marginTop: StyleConstants.Spacing.Global.PagePadding,
|
marginTop: StyleConstants.Spacing.Global.PagePadding,
|
||||||
@ -106,8 +106,8 @@ const ScreenMeSettingsPush: React.FC = () => {
|
|||||||
) : null}
|
) : null}
|
||||||
<MenuContainer>
|
<MenuContainer>
|
||||||
<MenuRow
|
<MenuRow
|
||||||
title={t('content.global.heading')}
|
title={t('me.push.global.heading')}
|
||||||
description={t('content.global.description')}
|
description={t('me.push.global.description')}
|
||||||
loading={instancePush?.global.loading}
|
loading={instancePush?.global.loading}
|
||||||
switchDisabled={!pushEnabled || isLoading}
|
switchDisabled={!pushEnabled || isLoading}
|
||||||
switchValue={
|
switchValue={
|
||||||
@ -120,8 +120,8 @@ const ScreenMeSettingsPush: React.FC = () => {
|
|||||||
</MenuContainer>
|
</MenuContainer>
|
||||||
<MenuContainer>
|
<MenuContainer>
|
||||||
<MenuRow
|
<MenuRow
|
||||||
title={t('content.decode.heading')}
|
title={t('me.push.decode.heading')}
|
||||||
description={t('content.decode.description')}
|
description={t('me.push.decode.description')}
|
||||||
loading={instancePush?.decode.loading}
|
loading={instancePush?.decode.loading}
|
||||||
switchDisabled={
|
switchDisabled={
|
||||||
!pushEnabled || !instancePush?.global.value || isLoading
|
!pushEnabled || !instancePush?.global.value || isLoading
|
||||||
@ -132,7 +132,7 @@ const ScreenMeSettingsPush: React.FC = () => {
|
|||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
<MenuRow
|
<MenuRow
|
||||||
title={t('content.howitworks')}
|
title={t('me.push.howitworks')}
|
||||||
iconBack='ExternalLink'
|
iconBack='ExternalLink'
|
||||||
onPress={() =>
|
onPress={() =>
|
||||||
WebBrowser.openBrowserAsync('https://tooot.app/how-push-works')
|
WebBrowser.openBrowserAsync('https://tooot.app/how-push-works')
|
||||||
|
@ -6,7 +6,7 @@ import React, { useMemo } from 'react'
|
|||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
|
|
||||||
const Collections: React.FC = () => {
|
const Collections: React.FC = () => {
|
||||||
const { t, i18n } = useTranslation('meRoot')
|
const { t, i18n } = useTranslation('screenTabs')
|
||||||
const navigation = useNavigation()
|
const navigation = useNavigation()
|
||||||
|
|
||||||
const listsQuery = useListsQuery({
|
const listsQuery = useListsQuery({
|
||||||
@ -20,7 +20,7 @@ const Collections: React.FC = () => {
|
|||||||
<MenuRow
|
<MenuRow
|
||||||
iconFront='List'
|
iconFront='List'
|
||||||
iconBack='ChevronRight'
|
iconBack='ChevronRight'
|
||||||
title={t('content.collections.lists')}
|
title={t('me.stacks.lists.name')}
|
||||||
onPress={() => navigation.navigate('Tab-Me-Lists')}
|
onPress={() => navigation.navigate('Tab-Me-Lists')}
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
@ -44,13 +44,13 @@ const Collections: React.FC = () => {
|
|||||||
<MenuRow
|
<MenuRow
|
||||||
iconFront='Clipboard'
|
iconFront='Clipboard'
|
||||||
iconBack='ChevronRight'
|
iconBack='ChevronRight'
|
||||||
title={t('content.collections.announcements.heading')}
|
title={t('screenAnnouncements:heading')}
|
||||||
content={
|
content={
|
||||||
amount
|
amount
|
||||||
? t('content.collections.announcements.content.unread', {
|
? t('me.root.announcements.content.unread', {
|
||||||
amount
|
amount
|
||||||
})
|
})
|
||||||
: t('content.collections.announcements.content.read')
|
: t('me.root.announcements.content.read')
|
||||||
}
|
}
|
||||||
onPress={() =>
|
onPress={() =>
|
||||||
navigation.navigate('Screen-Announcements', { showAll: true })
|
navigation.navigate('Screen-Announcements', { showAll: true })
|
||||||
@ -67,19 +67,19 @@ const Collections: React.FC = () => {
|
|||||||
<MenuRow
|
<MenuRow
|
||||||
iconFront='Mail'
|
iconFront='Mail'
|
||||||
iconBack='ChevronRight'
|
iconBack='ChevronRight'
|
||||||
title={t('content.collections.conversations')}
|
title={t('me.stacks.conversations.name')}
|
||||||
onPress={() => navigation.navigate('Tab-Me-Conversations')}
|
onPress={() => navigation.navigate('Tab-Me-Conversations')}
|
||||||
/>
|
/>
|
||||||
<MenuRow
|
<MenuRow
|
||||||
iconFront='Bookmark'
|
iconFront='Bookmark'
|
||||||
iconBack='ChevronRight'
|
iconBack='ChevronRight'
|
||||||
title={t('content.collections.bookmarks')}
|
title={t('me.stacks.bookmarks.name')}
|
||||||
onPress={() => navigation.navigate('Tab-Me-Bookmarks')}
|
onPress={() => navigation.navigate('Tab-Me-Bookmarks')}
|
||||||
/>
|
/>
|
||||||
<MenuRow
|
<MenuRow
|
||||||
iconFront='Heart'
|
iconFront='Heart'
|
||||||
iconBack='ChevronRight'
|
iconBack='ChevronRight'
|
||||||
title={t('content.collections.favourites')}
|
title={t('me.stacks.favourites.name')}
|
||||||
onPress={() => navigation.navigate('Tab-Me-Favourites')}
|
onPress={() => navigation.navigate('Tab-Me-Favourites')}
|
||||||
/>
|
/>
|
||||||
{rowLists}
|
{rowLists}
|
||||||
|
@ -10,7 +10,7 @@ import { useQueryClient } from 'react-query'
|
|||||||
import { useDispatch, useSelector } from 'react-redux'
|
import { useDispatch, useSelector } from 'react-redux'
|
||||||
|
|
||||||
const Logout: React.FC = () => {
|
const Logout: React.FC = () => {
|
||||||
const { t } = useTranslation('meRoot')
|
const { t } = useTranslation('screenTabs')
|
||||||
const dispatch = useDispatch()
|
const dispatch = useDispatch()
|
||||||
const queryClient = useQueryClient()
|
const queryClient = useQueryClient()
|
||||||
const instance = useSelector(getInstance)
|
const instance = useSelector(getInstance)
|
||||||
@ -18,7 +18,7 @@ const Logout: React.FC = () => {
|
|||||||
return (
|
return (
|
||||||
<Button
|
<Button
|
||||||
type='text'
|
type='text'
|
||||||
content={t('content.logout.button')}
|
content={t('me.root.logout.button')}
|
||||||
style={{
|
style={{
|
||||||
marginHorizontal: StyleConstants.Spacing.Global.PagePadding * 2,
|
marginHorizontal: StyleConstants.Spacing.Global.PagePadding * 2,
|
||||||
marginBottom: StyleConstants.Spacing.Global.PagePadding * 2
|
marginBottom: StyleConstants.Spacing.Global.PagePadding * 2
|
||||||
@ -26,11 +26,11 @@ const Logout: React.FC = () => {
|
|||||||
destructive
|
destructive
|
||||||
onPress={() =>
|
onPress={() =>
|
||||||
Alert.alert(
|
Alert.alert(
|
||||||
t('content.logout.alert.title'),
|
t('me.root.logout.alert.title'),
|
||||||
t('content.logout.alert.message'),
|
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,
|
style: 'destructive' as const,
|
||||||
onPress: () => {
|
onPress: () => {
|
||||||
if (instance) {
|
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
|
style: 'cancel' as const
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -4,24 +4,15 @@ import React from 'react'
|
|||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
|
|
||||||
const Settings: React.FC = () => {
|
const Settings: React.FC = () => {
|
||||||
const { t } = useTranslation('meRoot')
|
const { t } = useTranslation('screenTabs')
|
||||||
const navigation = useNavigation()
|
const navigation = useNavigation()
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<MenuContainer>
|
<MenuContainer>
|
||||||
{/* <MenuRow
|
|
||||||
iconFront='User'
|
|
||||||
iconBack='ExternalLink'
|
|
||||||
title={t('content.accountSettings')}
|
|
||||||
onPress={() =>
|
|
||||||
localUrl &&
|
|
||||||
WebBrowser.openBrowserAsync(`https://${localUrl}/settings/profile`)
|
|
||||||
}
|
|
||||||
/> */}
|
|
||||||
<MenuRow
|
<MenuRow
|
||||||
iconFront='Settings'
|
iconFront='Settings'
|
||||||
iconBack='ChevronRight'
|
iconBack='ChevronRight'
|
||||||
title={t('content.appSettings')}
|
title={t('me.stacks.settings.name')}
|
||||||
onPress={() => navigation.navigate('Tab-Me-Settings')}
|
onPress={() => navigation.navigate('Tab-Me-Settings')}
|
||||||
/>
|
/>
|
||||||
</MenuContainer>
|
</MenuContainer>
|
||||||
|
@ -14,22 +14,22 @@ import { useDispatch, useSelector } from 'react-redux'
|
|||||||
const SettingsAnalytics: React.FC = () => {
|
const SettingsAnalytics: React.FC = () => {
|
||||||
const dispatch = useDispatch()
|
const dispatch = useDispatch()
|
||||||
const { theme } = useTheme()
|
const { theme } = useTheme()
|
||||||
const { t } = useTranslation('meSettings')
|
const { t } = useTranslation('screenTabs')
|
||||||
|
|
||||||
const settingsAnalytics = useSelector(getSettingsAnalytics)
|
const settingsAnalytics = useSelector(getSettingsAnalytics)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<MenuContainer>
|
<MenuContainer>
|
||||||
<MenuRow
|
<MenuRow
|
||||||
title={t('content.analytics.heading')}
|
title={t('me.settings.analytics.heading')}
|
||||||
description={t('content.analytics.description')}
|
description={t('me.settings.analytics.description')}
|
||||||
switchValue={settingsAnalytics}
|
switchValue={settingsAnalytics}
|
||||||
switchOnValueChange={() =>
|
switchOnValueChange={() =>
|
||||||
dispatch(changeAnalytics(!settingsAnalytics))
|
dispatch(changeAnalytics(!settingsAnalytics))
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
<Text style={[styles.version, { color: theme.secondary }]}>
|
<Text style={[styles.version, { color: theme.secondary }]}>
|
||||||
{t('content.version', { version: Constants.manifest.version })}
|
{t('me.settings.version', { version: Constants.manifest.version })}
|
||||||
</Text>
|
</Text>
|
||||||
</MenuContainer>
|
</MenuContainer>
|
||||||
)
|
)
|
||||||
|
@ -3,7 +3,7 @@ import haptics from '@components/haptics'
|
|||||||
import { MenuContainer, MenuRow } from '@components/Menu'
|
import { MenuContainer, MenuRow } from '@components/Menu'
|
||||||
import { useActionSheet } from '@expo/react-native-action-sheet'
|
import { useActionSheet } from '@expo/react-native-action-sheet'
|
||||||
import { useNavigation } from '@react-navigation/native'
|
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 androidDefaults from '@utils/slices/instances/push/androidDefaults'
|
||||||
import {
|
import {
|
||||||
getInstanceActive,
|
getInstanceActive,
|
||||||
@ -14,7 +14,6 @@ import {
|
|||||||
changeBrowser,
|
changeBrowser,
|
||||||
changeLanguage,
|
changeLanguage,
|
||||||
changeTheme,
|
changeTheme,
|
||||||
getSettingsLanguage,
|
|
||||||
getSettingsTheme,
|
getSettingsTheme,
|
||||||
getSettingsBrowser,
|
getSettingsBrowser,
|
||||||
getSettingsFontsize
|
getSettingsFontsize
|
||||||
@ -32,12 +31,11 @@ const SettingsApp: React.FC = () => {
|
|||||||
const dispatch = useDispatch()
|
const dispatch = useDispatch()
|
||||||
const { showActionSheetWithOptions } = useActionSheet()
|
const { showActionSheetWithOptions } = useActionSheet()
|
||||||
const { setTheme } = useTheme()
|
const { setTheme } = useTheme()
|
||||||
const { t } = useTranslation('meSettings')
|
const { t, i18n } = useTranslation('screenTabs')
|
||||||
|
|
||||||
const instances = useSelector(getInstances, () => true)
|
const instances = useSelector(getInstances, () => true)
|
||||||
const instanceActive = useSelector(getInstanceActive)
|
const instanceActive = useSelector(getInstanceActive)
|
||||||
const settingsFontsize = useSelector(getSettingsFontsize)
|
const settingsFontsize = useSelector(getSettingsFontsize)
|
||||||
const settingsLanguage = useSelector(getSettingsLanguage)
|
|
||||||
const settingsTheme = useSelector(getSettingsTheme)
|
const settingsTheme = useSelector(getSettingsTheme)
|
||||||
const settingsBrowser = useSelector(getSettingsBrowser)
|
const settingsBrowser = useSelector(getSettingsBrowser)
|
||||||
const instancePush = useSelector(
|
const instancePush = useSelector(
|
||||||
@ -50,11 +48,11 @@ const SettingsApp: React.FC = () => {
|
|||||||
{instanceActive !== -1 ? (
|
{instanceActive !== -1 ? (
|
||||||
<>
|
<>
|
||||||
<MenuRow
|
<MenuRow
|
||||||
title={t('content.push.heading')}
|
title={t('me.settings.push.heading')}
|
||||||
content={
|
content={
|
||||||
instancePush?.global.value
|
instancePush?.global.value
|
||||||
? t('content.push.content.enabled')
|
? t('me.settings.push.content.enabled')
|
||||||
: t('content.push.content.disabled')
|
: t('me.settings.push.content.disabled')
|
||||||
}
|
}
|
||||||
iconBack='ChevronRight'
|
iconBack='ChevronRight'
|
||||||
onPress={() => {
|
onPress={() => {
|
||||||
@ -62,9 +60,9 @@ const SettingsApp: React.FC = () => {
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<MenuRow
|
<MenuRow
|
||||||
title={t('content.fontsize.heading')}
|
title={t('me.settings.fontsize.heading')}
|
||||||
content={t(
|
content={t(
|
||||||
`content.fontsize.content.${mapFontsizeToName(settingsFontsize)}`
|
`me.settings.fontsize.content.${mapFontsizeToName(settingsFontsize)}`
|
||||||
)}
|
)}
|
||||||
iconBack='ChevronRight'
|
iconBack='ChevronRight'
|
||||||
onPress={() => {
|
onPress={() => {
|
||||||
@ -74,22 +72,19 @@ const SettingsApp: React.FC = () => {
|
|||||||
</>
|
</>
|
||||||
) : null}
|
) : null}
|
||||||
<MenuRow
|
<MenuRow
|
||||||
title={t('content.language.heading')}
|
title={t('me.settings.language.heading')}
|
||||||
content={t(`content.language.options.${settingsLanguage}`)}
|
// @ts-ignore
|
||||||
|
content={LOCALES[i18n.language]}
|
||||||
iconBack='ChevronRight'
|
iconBack='ChevronRight'
|
||||||
onPress={() => {
|
onPress={() => {
|
||||||
const availableLanguages = Object.keys(
|
const options = Object.keys(LOCALES)
|
||||||
i18n.services.resourceStore.data
|
// @ts-ignore
|
||||||
)
|
.map(locale => LOCALES[locale])
|
||||||
const options = availableLanguages
|
.concat(t('me.settings.language.options.cancel'))
|
||||||
.map(language => {
|
|
||||||
return t(`content.language.options.${language}`)
|
|
||||||
})
|
|
||||||
.concat(t('content.language.options.cancel'))
|
|
||||||
|
|
||||||
showActionSheetWithOptions(
|
showActionSheetWithOptions(
|
||||||
{
|
{
|
||||||
title: t('content.language.heading'),
|
title: t('me.settings.language.heading'),
|
||||||
options,
|
options,
|
||||||
cancelButtonIndex: options.length - 1
|
cancelButtonIndex: options.length - 1
|
||||||
},
|
},
|
||||||
@ -97,13 +92,13 @@ const SettingsApp: React.FC = () => {
|
|||||||
if (buttonIndex < options.length - 1) {
|
if (buttonIndex < options.length - 1) {
|
||||||
analytics('settings_language_press', {
|
analytics('settings_language_press', {
|
||||||
current: i18n.language,
|
current: i18n.language,
|
||||||
new: availableLanguages[buttonIndex]
|
new: options[buttonIndex]
|
||||||
})
|
})
|
||||||
haptics('Success')
|
haptics('Success')
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
dispatch(changeLanguage(availableLanguages[buttonIndex]))
|
dispatch(changeLanguage(Object.keys(LOCALES)[buttonIndex]))
|
||||||
i18n.changeLanguage(availableLanguages[buttonIndex])
|
i18n.changeLanguage(Object.keys(LOCALES)[buttonIndex])
|
||||||
|
|
||||||
// Update Android notification channel language
|
// Update Android notification channel language
|
||||||
if (Platform.OS === 'android') {
|
if (Platform.OS === 'android') {
|
||||||
@ -114,7 +109,7 @@ const SettingsApp: React.FC = () => {
|
|||||||
`${accountFull}_default`,
|
`${accountFull}_default`,
|
||||||
{
|
{
|
||||||
groupId: accountFull,
|
groupId: accountFull,
|
||||||
name: t('meSettingsPush:content.default.heading'),
|
name: t('me.push.default.heading'),
|
||||||
...androidDefaults
|
...androidDefaults
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@ -123,7 +118,7 @@ const SettingsApp: React.FC = () => {
|
|||||||
`${accountFull}_follow`,
|
`${accountFull}_follow`,
|
||||||
{
|
{
|
||||||
groupId: accountFull,
|
groupId: accountFull,
|
||||||
name: t('meSettingsPush:content.follow.heading'),
|
name: t('me.push.follow.heading'),
|
||||||
...androidDefaults
|
...androidDefaults
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@ -131,7 +126,7 @@ const SettingsApp: React.FC = () => {
|
|||||||
`${accountFull}_favourite`,
|
`${accountFull}_favourite`,
|
||||||
{
|
{
|
||||||
groupId: accountFull,
|
groupId: accountFull,
|
||||||
name: t('meSettingsPush:content.favourite.heading'),
|
name: t('me.push.favourite.heading'),
|
||||||
...androidDefaults
|
...androidDefaults
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@ -139,7 +134,7 @@ const SettingsApp: React.FC = () => {
|
|||||||
`${accountFull}_reblog`,
|
`${accountFull}_reblog`,
|
||||||
{
|
{
|
||||||
groupId: accountFull,
|
groupId: accountFull,
|
||||||
name: t('meSettingsPush:content.reblog.heading'),
|
name: t('me.push.reblog.heading'),
|
||||||
...androidDefaults
|
...androidDefaults
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@ -147,7 +142,7 @@ const SettingsApp: React.FC = () => {
|
|||||||
`${accountFull}_mention`,
|
`${accountFull}_mention`,
|
||||||
{
|
{
|
||||||
groupId: accountFull,
|
groupId: accountFull,
|
||||||
name: t('meSettingsPush:content.mention.heading'),
|
name: t('me.push.mention.heading'),
|
||||||
...androidDefaults
|
...androidDefaults
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@ -155,7 +150,7 @@ const SettingsApp: React.FC = () => {
|
|||||||
`${accountFull}_poll`,
|
`${accountFull}_poll`,
|
||||||
{
|
{
|
||||||
groupId: accountFull,
|
groupId: accountFull,
|
||||||
name: t('meSettingsPush:content.poll.heading'),
|
name: t('me.push.poll.heading'),
|
||||||
...androidDefaults
|
...androidDefaults
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@ -168,18 +163,18 @@ const SettingsApp: React.FC = () => {
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
<MenuRow
|
<MenuRow
|
||||||
title={t('content.theme.heading')}
|
title={t('me.settings.theme.heading')}
|
||||||
content={t(`content.theme.options.${settingsTheme}`)}
|
content={t(`me.settings.theme.options.${settingsTheme}`)}
|
||||||
iconBack='ChevronRight'
|
iconBack='ChevronRight'
|
||||||
onPress={() =>
|
onPress={() =>
|
||||||
showActionSheetWithOptions(
|
showActionSheetWithOptions(
|
||||||
{
|
{
|
||||||
title: t('content.theme.heading'),
|
title: t('me.settings.theme.heading'),
|
||||||
options: [
|
options: [
|
||||||
t('content.theme.options.auto'),
|
t('me.settings.theme.options.auto'),
|
||||||
t('content.theme.options.light'),
|
t('me.settings.theme.options.light'),
|
||||||
t('content.theme.options.dark'),
|
t('me.settings.theme.options.dark'),
|
||||||
t('content.theme.options.cancel')
|
t('me.settings.theme.options.cancel')
|
||||||
],
|
],
|
||||||
cancelButtonIndex: 3
|
cancelButtonIndex: 3
|
||||||
},
|
},
|
||||||
@ -217,17 +212,17 @@ const SettingsApp: React.FC = () => {
|
|||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
<MenuRow
|
<MenuRow
|
||||||
title={t('content.browser.heading')}
|
title={t('me.settings.browser.heading')}
|
||||||
content={t(`content.browser.options.${settingsBrowser}`)}
|
content={t(`me.settings.browser.options.${settingsBrowser}`)}
|
||||||
iconBack='ChevronRight'
|
iconBack='ChevronRight'
|
||||||
onPress={() =>
|
onPress={() =>
|
||||||
showActionSheetWithOptions(
|
showActionSheetWithOptions(
|
||||||
{
|
{
|
||||||
title: t('content.browser.heading'),
|
title: t('me.settings.browser.heading'),
|
||||||
options: [
|
options: [
|
||||||
t('content.browser.options.internal'),
|
t('me.settings.browser.options.internal'),
|
||||||
t('content.browser.options.external'),
|
t('me.settings.browser.options.external'),
|
||||||
t('content.browser.options.cancel')
|
t('me.settings.browser.options.cancel')
|
||||||
],
|
],
|
||||||
cancelButtonIndex: 2
|
cancelButtonIndex: 2
|
||||||
},
|
},
|
||||||
|
@ -18,7 +18,7 @@ const SettingsTooot: React.FC = () => {
|
|||||||
const instanceActive = useSelector(getInstanceActive)
|
const instanceActive = useSelector(getInstanceActive)
|
||||||
const navigation = useNavigation()
|
const navigation = useNavigation()
|
||||||
const { theme } = useTheme()
|
const { theme } = useTheme()
|
||||||
const { t } = useTranslation('meSettings')
|
const { t } = useTranslation('screenTabs')
|
||||||
|
|
||||||
const { isLoading, data } = useSearchQuery({
|
const { isLoading, data } = useSearchQuery({
|
||||||
term: '@tooot@xmflsct.com',
|
term: '@tooot@xmflsct.com',
|
||||||
@ -28,7 +28,7 @@ const SettingsTooot: React.FC = () => {
|
|||||||
return (
|
return (
|
||||||
<MenuContainer>
|
<MenuContainer>
|
||||||
<MenuRow
|
<MenuRow
|
||||||
title={t('content.support.heading')}
|
title={t('me.settings.support.heading')}
|
||||||
content={
|
content={
|
||||||
<Icon
|
<Icon
|
||||||
name='Heart'
|
name='Heart'
|
||||||
@ -47,7 +47,7 @@ const SettingsTooot: React.FC = () => {
|
|||||||
Updates.releaseChannel?.includes(channel)
|
Updates.releaseChannel?.includes(channel)
|
||||||
) ? (
|
) ? (
|
||||||
<MenuRow
|
<MenuRow
|
||||||
title={t('content.review.heading')}
|
title={t('me.settings.review.heading')}
|
||||||
content={
|
content={
|
||||||
<Icon
|
<Icon
|
||||||
name='Star'
|
name='Star'
|
||||||
@ -65,7 +65,7 @@ const SettingsTooot: React.FC = () => {
|
|||||||
/>
|
/>
|
||||||
) : null}
|
) : null}
|
||||||
<MenuRow
|
<MenuRow
|
||||||
title={t('content.contact.heading')}
|
title={t('me.settings.contact.heading')}
|
||||||
loading={isLoading}
|
loading={isLoading}
|
||||||
content={
|
content={
|
||||||
<Icon
|
<Icon
|
||||||
|
@ -12,7 +12,7 @@ const ScreenMeSwitch: React.FC<StackScreenProps<
|
|||||||
Nav.TabMeStackParamList,
|
Nav.TabMeStackParamList,
|
||||||
'Tab-Me-Switch'
|
'Tab-Me-Switch'
|
||||||
>> = ({ navigation }) => {
|
>> = ({ navigation }) => {
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation('screenTabs')
|
||||||
return (
|
return (
|
||||||
<KeyboardAvoidingView
|
<KeyboardAvoidingView
|
||||||
style={{ flex: 1 }}
|
style={{ flex: 1 }}
|
||||||
@ -25,10 +25,10 @@ const ScreenMeSwitch: React.FC<StackScreenProps<
|
|||||||
name='Screen-Me-Switch-Root'
|
name='Screen-Me-Switch-Root'
|
||||||
component={ScreenMeSwitchRoot}
|
component={ScreenMeSwitchRoot}
|
||||||
options={{
|
options={{
|
||||||
headerTitle: t('meSwitch:heading'),
|
headerTitle: t('me.stacks.switch.name'),
|
||||||
...(Platform.OS === 'android' && {
|
...(Platform.OS === 'android' && {
|
||||||
headerCenter: () => (
|
headerCenter: () => (
|
||||||
<HeaderCenter content={t('meSwitch:heading')} />
|
<HeaderCenter content={t('me.stacks.switch.name')} />
|
||||||
)
|
)
|
||||||
}),
|
}),
|
||||||
headerLeft: () => (
|
headerLeft: () => (
|
||||||
|
@ -48,7 +48,7 @@ const AccountButton: React.FC<Props> = ({ instance, disabled = false }) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const ScreenMeSwitchRoot: React.FC = () => {
|
const ScreenMeSwitchRoot: React.FC = () => {
|
||||||
const { t } = useTranslation('meSwitch')
|
const { t } = useTranslation('screenTabs')
|
||||||
const { theme } = useTheme()
|
const { theme } = useTheme()
|
||||||
const instances = useSelector(getInstances)
|
const instances = useSelector(getInstances)
|
||||||
const instanceActive = useSelector(getInstanceActive)
|
const instanceActive = useSelector(getInstanceActive)
|
||||||
@ -57,7 +57,7 @@ const ScreenMeSwitchRoot: React.FC = () => {
|
|||||||
<ScrollView style={styles.base} keyboardShouldPersistTaps='always'>
|
<ScrollView style={styles.base} keyboardShouldPersistTaps='always'>
|
||||||
<View style={[styles.firstSection, { borderBottomColor: theme.border }]}>
|
<View style={[styles.firstSection, { borderBottomColor: theme.border }]}>
|
||||||
<Text style={[styles.header, { color: theme.primaryDefault }]}>
|
<Text style={[styles.header, { color: theme.primaryDefault }]}>
|
||||||
{t('content.existing')}
|
{t('me.switch.existing')}
|
||||||
</Text>
|
</Text>
|
||||||
<View style={styles.accountButtons}>
|
<View style={styles.accountButtons}>
|
||||||
{instances.length
|
{instances.length
|
||||||
@ -88,7 +88,7 @@ const ScreenMeSwitchRoot: React.FC = () => {
|
|||||||
|
|
||||||
<View style={styles.secondSection}>
|
<View style={styles.secondSection}>
|
||||||
<Text style={[styles.header, { color: theme.primaryDefault }]}>
|
<Text style={[styles.header, { color: theme.primaryDefault }]}>
|
||||||
{t('content.new')}
|
{t('me.switch.new')}
|
||||||
</Text>
|
</Text>
|
||||||
<ComponentInstance disableHeaderImage goBack />
|
<ComponentInstance disableHeaderImage goBack />
|
||||||
</View>
|
</View>
|
||||||
|
@ -15,7 +15,7 @@ const Stack = createNativeStackNavigator<Nav.TabNotificationsStackParamList>()
|
|||||||
const TabNotifications = React.memo(
|
const TabNotifications = React.memo(
|
||||||
() => {
|
() => {
|
||||||
const navigation = useNavigation()
|
const navigation = useNavigation()
|
||||||
const { t, i18n } = useTranslation()
|
const { t, i18n } = useTranslation('screenTabs')
|
||||||
|
|
||||||
const screenOptions = useMemo(
|
const screenOptions = useMemo(
|
||||||
() => ({
|
() => ({
|
||||||
@ -26,10 +26,10 @@ const TabNotifications = React.memo(
|
|||||||
)
|
)
|
||||||
const screenOptionsRoot = useMemo(
|
const screenOptionsRoot = useMemo(
|
||||||
() => ({
|
() => ({
|
||||||
headerTitle: t('notifications:heading'),
|
headerTitle: t('tabs.notifications.name'),
|
||||||
...(Platform.OS === 'android' && {
|
...(Platform.OS === 'android' && {
|
||||||
headerCenter: () => (
|
headerCenter: () => (
|
||||||
<HeaderCenter content={t('notifications:heading')} />
|
<HeaderCenter content={t('tabs.notifications.name')} />
|
||||||
)
|
)
|
||||||
}),
|
}),
|
||||||
headerRight: () => (
|
headerRight: () => (
|
||||||
|
@ -23,7 +23,7 @@ const Stack = createNativeStackNavigator<Nav.TabPublicStackParamList>()
|
|||||||
|
|
||||||
const TabPublic = React.memo(
|
const TabPublic = React.memo(
|
||||||
({ navigation }: TabPublicProps) => {
|
({ navigation }: TabPublicProps) => {
|
||||||
const { t, i18n } = useTranslation()
|
const { t, i18n } = useTranslation('screenTabs')
|
||||||
const { mode } = useTheme()
|
const { mode } = useTheme()
|
||||||
|
|
||||||
const [segment, setSegment] = useState(0)
|
const [segment, setSegment] = useState(0)
|
||||||
@ -32,11 +32,11 @@ const TabPublic = React.memo(
|
|||||||
key: App.Pages
|
key: App.Pages
|
||||||
}[] = [
|
}[] = [
|
||||||
{
|
{
|
||||||
title: t('public:heading.segments.left'),
|
title: t('tabs.public.segments.left'),
|
||||||
key: 'LocalPublic'
|
key: 'LocalPublic'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: t('public:heading.segments.right'),
|
title: t('tabs.public.segments.right'),
|
||||||
key: 'Local'
|
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