-
+
+
{__DEV__
? ` Source: ${status.language}; Target: ${
Localization.locale || settingsLanguage || 'en'
}`
: undefined}
-
+
{isLoading ? (
)
},
- () => true
+ (prev, next) =>
+ prev.status.language === next.status.language &&
+ prev.status.content === next.status.content &&
+ prev.status.spoiler_text === next.status.spoiler_text
)
-const styles = StyleSheet.create({
- button: {
- flexDirection: 'row',
- alignItems: 'center',
- paddingVertical: StyleConstants.Spacing.S
- }
-})
-
export default TimelineTranslate
diff --git a/src/components/mediaSelector.ts b/src/components/mediaSelector.ts
index 4a5af36b..50ad1adc 100644
--- a/src/components/mediaSelector.ts
+++ b/src/components/mediaSelector.ts
@@ -2,7 +2,10 @@ import analytics from '@components/analytics'
import { ActionSheetOptions } from '@expo/react-native-action-sheet'
import * as ImageManipulator from 'expo-image-manipulator'
import * as ImagePicker from 'expo-image-picker'
-import { ImageInfo } from 'expo-image-picker/build/ImagePicker.types'
+import {
+ ImageInfo,
+ UIImagePickerPresentationStyle
+} from 'expo-image-picker/build/ImagePicker.types'
import i18next from 'i18next'
import { Alert, Linking, Platform } from 'react-native'
@@ -39,7 +42,7 @@ const mediaSelector = async ({
{ resize }
])
}
- resolve(newResult)
+ resolve({ ...newResult, cancelled: false })
} else {
resolve(result)
}
@@ -94,8 +97,8 @@ const mediaSelector = async ({
exif: false,
presentationStyle:
Platform.OS === 'ios' && parseInt(Platform.Version) < 13
- ? 0
- : -2
+ ? UIImagePickerPresentationStyle.FULL_SCREEN
+ : UIImagePickerPresentationStyle.AUTOMATIC
})
if (!result.cancelled) {
diff --git a/src/components/openLink.ts b/src/components/openLink.ts
index 7474ba3c..3e0aff73 100644
--- a/src/components/openLink.ts
+++ b/src/components/openLink.ts
@@ -34,6 +34,7 @@ const openLink = async (url: string, navigation?: any) => {
// @ts-ignore
navigation.push(page, options)
} else {
+ // @ts-ignore
navigationRef.navigate(page, options)
}
}
diff --git a/src/helpers/features.json b/src/helpers/features.json
new file mode 100644
index 00000000..73437eec
--- /dev/null
+++ b/src/helpers/features.json
@@ -0,0 +1,12 @@
+[
+ {
+ "feature": "edit_post",
+ "version": 3.5,
+ "reference": "https://github.com/mastodon/mastodon/releases/tag/v3.5.0"
+ },
+ {
+ "feature": "deprecate_auth_follow",
+ "version": 3.5,
+ "reference": "https://github.com/mastodon/mastodon/releases/tag/v3.5.0"
+ }
+]
\ No newline at end of file
diff --git a/src/i18n/de/_all.ts b/src/i18n/de/_all.ts
new file mode 100644
index 00000000..fa81be2e
--- /dev/null
+++ b/src/i18n/de/_all.ts
@@ -0,0 +1,17 @@
+export default {
+ common: require('./common'),
+
+ screens: require('./screens'),
+ screenActions: require('./screens/actions'),
+ screenAnnouncements: require('./screens/announcements'),
+ screenCompose: require('./screens/compose'),
+ screenImageViewer: require('./screens/imageViewer'),
+ screenTabs: require('./screens/tabs'),
+
+ componentEmojis: require('./components/emojis'),
+ componentInstance: require('./components/instance'),
+ componentMediaSelector: require('./components/mediaSelector'),
+ componentParse: require('./components/parse'),
+ componentRelationship: require('./components/relationship'),
+ componentTimeline: require('./components/timeline')
+}
diff --git a/src/i18n/de/common.json b/src/i18n/de/common.json
new file mode 100644
index 00000000..c9876900
--- /dev/null
+++ b/src/i18n/de/common.json
@@ -0,0 +1,22 @@
+{
+ "buttons": {
+ "OK": "",
+ "apply": "Übernehmen",
+ "cancel": "Abbrechen"
+ },
+ "customEmoji": {
+ "accessibilityLabel": "Eigenes Emoji {{emoji}}"
+ },
+ "message": {
+ "success": {
+ "message": "{{function}} erfolgreich"
+ },
+ "warning": {
+ "message": ""
+ },
+ "error": {
+ "message": "{{function}} fehlgeschlagen, bitte wiederholen"
+ }
+ },
+ "separator": ", "
+}
\ No newline at end of file
diff --git a/src/i18n/de/components/emojis.json b/src/i18n/de/components/emojis.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/i18n/de/components/emojis.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/i18n/de/components/instance.json b/src/i18n/de/components/instance.json
new file mode 100644
index 00000000..9794585d
--- /dev/null
+++ b/src/i18n/de/components/instance.json
@@ -0,0 +1,28 @@
+{
+ "server": {
+ "textInput": {
+ "placeholder": "Instanz"
+ },
+ "button": "Login",
+ "information": {
+ "name": "Name",
+ "accounts": "Konten",
+ "statuses": "Tröts",
+ "domains": "Domains"
+ },
+ "disclaimer": {
+ "base": "Der Login erfolgt über den Browser, so dass Ihre Kontoinformationen für die Toot-App nicht sichtbar sind. Weitere Informationen",
+ "privacy": "Datenschutzbestimmungen"
+ }
+ },
+ "update": {
+ "alert": {
+ "title": "Bei der Instanz angemeldet",
+ "message": "Du kannst dich mit einem weiteren Konto anmelden, während du weiterhin mit deinem bestehen Account eingeloggt bleibst",
+ "buttons": {
+ "cancel": "$t(common:buttons.cancel)",
+ "continue": "Weiter"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/i18n/de/components/mediaSelector.json b/src/i18n/de/components/mediaSelector.json
new file mode 100644
index 00000000..f4eab40b
--- /dev/null
+++ b/src/i18n/de/components/mediaSelector.json
@@ -0,0 +1,28 @@
+{
+ "title": "Datenquelle auswählen",
+ "options": {
+ "library": "Hochladen",
+ "photo": "Bild aufnehmen",
+ "cancel": ""
+ },
+ "library": {
+ "alert": {
+ "title": "Kein Zugriff",
+ "message": "Für den Upload ist eine Zugriffsgenehmigung erforderlich",
+ "buttons": {
+ "settings": "Einstellungen bestätigen",
+ "cancel": ""
+ }
+ }
+ },
+ "photo": {
+ "alert": {
+ "title": "Zugriff verweigert",
+ "message": "Zugriff auf die Kamera erforderlich",
+ "buttons": {
+ "settings": "Einstellungen übernehmen",
+ "cancel": ""
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/i18n/de/components/parse.json b/src/i18n/de/components/parse.json
new file mode 100644
index 00000000..571eac68
--- /dev/null
+++ b/src/i18n/de/components/parse.json
@@ -0,0 +1,9 @@
+{
+ "HTML": {
+ "expanded": {
+ "true": "Zusammenklappen {{hint}}",
+ "false": "Ausklappen {{hint}}"
+ },
+ "defaultHint": "Artikel"
+ }
+}
\ No newline at end of file
diff --git a/src/i18n/de/components/relativeTime.json b/src/i18n/de/components/relativeTime.json
deleted file mode 100644
index afe2da03..00000000
--- a/src/i18n/de/components/relativeTime.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "strings": {
- "prefixAgo": "",
- "prefixFromNow": "",
- "suffixAgo": "her",
- "suffixFromNow": "",
- "seconds": "%d Sekunden",
- "minute": "etwa eine Minute",
- "minutes": "%d Minuten",
- "hour": "etwa eine Stunde",
- "hours": "etwa %d Stunden",
- "day": "1 Tag",
- "days": "%d Tage",
- "month": "etwa 1 Monat",
- "months": "%d Monate",
- "year": "etwa 1 Jahr",
- "years": "%d Jahre",
- "wordSeparator": ""
- }
-}
\ No newline at end of file
diff --git a/src/i18n/de/components/timeline.json b/src/i18n/de/components/timeline.json
new file mode 100644
index 00000000..78ce6de8
--- /dev/null
+++ b/src/i18n/de/components/timeline.json
@@ -0,0 +1,234 @@
+{
+ "empty": {
+ "error": {
+ "message": "Fehler beim Laden",
+ "button": "Wiederholen"
+ },
+ "success": {
+ "message": "Timeline ist leer"
+ }
+ },
+ "end": {
+ "message": "Ende der Geschichte. Wie wäre es mit einer Tasse <0 />?"
+ },
+ "lookback": {
+ "message": "Letzte Lesung am"
+ },
+ "refresh": {
+ "fetchPreviousPage": "Neuere Einträge",
+ "refetch": "Zum letzten"
+ },
+ "shared": {
+ "actioned": {
+ "pinned": "Angepinnt",
+ "favourite": "{{name}} mag deinen Tröt",
+ "status": "{{name}} hat gerade getrötet",
+ "follow": "{{name}} folgt dir",
+ "follow_request": "{{name}} möchte dir gerne folgen",
+ "poll": "Eine Umfrage, an der du teilgenommen hast, ist beendet",
+ "reblog": {
+ "default": "{{name}} hat geboostet",
+ "notification": "{{name}} hat deinen Tröt geboostet"
+ }
+ },
+ "actions": {
+ "reply": {
+ "accessibilityLabel": "Antworten"
+ },
+ "reblogged": {
+ "accessibilityLabel": "Tröt boosten",
+ "function": "Boost"
+ },
+ "favourited": {
+ "accessibilityLabel": "Favorit",
+ "function": "Sternen"
+ },
+ "bookmarked": {
+ "accessibilityLabel": "Lesezeichen hinzufügen",
+ "function": "Lesezeichen setzen"
+ }
+ },
+ "actionsUsers": {
+ "reblogged_by": {
+ "accessibilityLabel": "{{count}} Leute haben den Tröt geboostet",
+ "accessibilityHint": "Booster anzeigen",
+ "text": "$t(screenTabs:shared.users.statuses.reblogged_by)"
+ },
+ "favourited_by": {
+ "accessibilityLabel": "{{count}} Leute mögen diesen Tröt",
+ "accessibilityHint": "Anzeigen, wer diesen Tröt mag",
+ "text": "$t(screenTabs:shared.users.statuses.favourited_by)"
+ },
+ "history": {
+ "accessibilityLabel": "Dieser Tröt wurde {{count}} mal bearbeitet",
+ "accessibilityHint": "Für den vollständigen Verlauf auswählen",
+ "text_one": "{{count}} bearbeitet",
+ "text_other": "{{count}} mal bearbeitet"
+ }
+ },
+ "attachment": {
+ "sensitive": {
+ "button": "Sensiblen Inhalt anzeigen"
+ },
+ "unsupported": {
+ "text": "Ladefehler",
+ "button": "Remote Link versuchen"
+ }
+ },
+ "avatar": {
+ "accessibilityLabel": "Profilbild von {{name}}",
+ "accessibilityHint": "Zum Profil von {{name}}"
+ },
+ "content": {
+ "expandHint": "Ausgeblendeter Inhalt"
+ },
+ "filtered": "Ausgeblendet",
+ "fullConversation": "Unterhaltung anzeigen",
+ "translate": {
+ "default": "Übersetzen",
+ "succeed": "Übersetzt durch {{provider}} von {{source}}",
+ "failed": "Übersetzung fehlgeschlagen",
+ "source_not_supported": "Sprache des Tröts wird nicht unterstützt",
+ "target_not_supported": "Zielsprache wird nicht unterstützt"
+ },
+ "header": {
+ "shared": {
+ "account": {
+ "name": {
+ "accessibilityHint": "Benutzername anzeigen"
+ },
+ "account": {
+ "accessibilityHint": "Profil"
+ }
+ },
+ "application": "Getrötet mit {{application}}",
+ "edited": {
+ "accessibilityLabel": "Tröt bearbeitet"
+ },
+ "muted": {
+ "accessibilityLabel": "Tröt stummgeschaltet"
+ },
+ "visibility": {
+ "direct": {
+ "accessibilityLabel": "Tröt ist eine Direktnachricht"
+ },
+ "private": {
+ "accessibilityLabel": "Tröt ist nur für Follower sichtbar"
+ }
+ }
+ },
+ "conversation": {
+ "withAccounts": "mit",
+ "delete": {
+ "function": "Nachricht löschen"
+ }
+ },
+ "actions": {
+ "accessibilityHint": "Funktionen für diesen Tröt - wie z. B. Autor und Originaltröt",
+ "account": {
+ "heading": "Über die Nutzerin/den Nutzer",
+ "mute": {
+ "function": "Profil stummschalten",
+ "button": "@{{acct}} stummschalten"
+ },
+ "block": {
+ "function": "Nutzer blockieren",
+ "button": "@{{acct}} blockieren"
+ },
+ "reports": {
+ "function": "User melden",
+ "button": "@{{acct}} melden"
+ }
+ },
+ "domain": {
+ "heading": "Über diese Instanz",
+ "block": {
+ "function": "Instanz blockieren",
+ "button": "Instanz {{domain}} blockieren"
+ },
+ "alert": {
+ "title": "{{domain}} wirklich blockieren?",
+ "message": "Üblicherweise kannst du einen User stummschalten oder blockieren.\nBlockierst du hingegegen eine Instanz, wird deren gesamter Inhalt samt Usern, die dir von dieser Instanz folgen, entfernt!",
+ "buttons": {
+ "confirm": "Blockierung bestätigen",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ }
+ },
+ "share": {
+ "status": {
+ "heading": "Tröt teilen",
+ "button": "Link zu diesem Tröt teilen"
+ },
+ "account": {
+ "heading": "User verlinken",
+ "button": "Link zu diesem Benutzer teilen"
+ }
+ },
+ "status": {
+ "heading": "Über Toot",
+ "edit": {
+ "function": "Tröt bearbeiten",
+ "button": "Diesen Tröt bearbeiten"
+ },
+ "delete": {
+ "function": "Tröt löschen",
+ "button": "Diesen Tröt löschen",
+ "alert": {
+ "title": "Tröt sicher löschen?",
+ "message": "Bist du wirklich sicher, diesen Tröt löschen zu wollen? Sämtliche Boosts und Sterne werden samt der Antworten entfernt.",
+ "buttons": {
+ "confirm": "Löschen bestätigen",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ }
+ },
+ "deleteEdit": {
+ "function": "Tröt löschen",
+ "button": "Diesen Tröt neu entwerfen",
+ "alert": {
+ "title": "Tröt sicher löschen?",
+ "message": "Bist du wirklich sicher, diesen Tröt neu zu entwerfen? Alle Boosts und Sterne werden entfernt - samt der Antworten.",
+ "buttons": {
+ "confirm": "Löschen bestätigen",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ }
+ },
+ "mute": {
+ "function": "Tröt stummschalten",
+ "button": {
+ "positive": "Diesen Tröt sowie die Antworten stummschalten",
+ "negative": "Diesen Tröt sowie die Antworten nicht mehr stummschalten"
+ }
+ },
+ "pin": {
+ "function": "Anheften",
+ "button": {
+ "positive": "Diesen Tröt anheften",
+ "negative": "Diesen Tröt nicht mehr anheften"
+ }
+ }
+ }
+ }
+ },
+ "poll": {
+ "meta": {
+ "button": {
+ "vote": "Abstimmen",
+ "refresh": "Aktualisieren"
+ },
+ "count": {
+ "voters_one": "{{count}} Benutzer haben abgestimmt",
+ "voters_other": "{{count}} Benutzer haben abgestimmt",
+ "votes_one": "{{count}} Stimmen",
+ "votes_other": "{{count}} Stimmen"
+ },
+ "expiration": {
+ "expired": "Abstimmung abgelaufen",
+ "until": "Läuft in <0 /> ab"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/i18n/de/screens.json b/src/i18n/de/screens.json
new file mode 100644
index 00000000..ed9f21fe
--- /dev/null
+++ b/src/i18n/de/screens.json
@@ -0,0 +1,18 @@
+{
+ "screenshot": {
+ "title": "Datenschutz",
+ "message": "Bitte geben Sie nicht die Identität anderer Nutzer preis, wie z. B. Benutzername, Avatar, etc. Vielen Dank!",
+ "button": "Bestätigen"
+ },
+ "localCorrupt": {
+ "message": "Login abgelaufen, bitte erneut anmelden"
+ },
+ "pushError": {
+ "message": "Fehler des Benachrichtigungsdienstes",
+ "description": "Bitte Benachrichtigungsdienst in den Einstellungen erneut aktivieren"
+ },
+ "shareError": {
+ "imageNotSupported": "",
+ "videoNotSupported": ""
+ }
+}
\ No newline at end of file
diff --git a/src/i18n/de/screens/actions.json b/src/i18n/de/screens/actions.json
new file mode 100644
index 00000000..61dca26a
--- /dev/null
+++ b/src/i18n/de/screens/actions.json
@@ -0,0 +1,19 @@
+{
+ "content": {
+ "button": {
+ "apply": "$t(common:buttons.apply)",
+ "cancel": "$t(common:buttons.cancel)"
+ },
+ "notificationsFilter": {
+ "heading": "Benachrichtigungsart anzeigen",
+ "content": {
+ "follow": "$t(screenTabs:me.push.follow.heading)",
+ "favourite": "$t(screenTabs:me.push.favourite.heading)",
+ "reblog": "$t(screenTabs:me.push.reblog.heading)",
+ "mention": "$t(screenTabs:me.push.mention.heading)",
+ "poll": "$t(screenTabs:me.push.poll.heading)",
+ "follow_request": "Followeranfrage"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/i18n/de/screens/compose.json b/src/i18n/de/screens/compose.json
new file mode 100644
index 00000000..caa8fc28
--- /dev/null
+++ b/src/i18n/de/screens/compose.json
@@ -0,0 +1,178 @@
+{
+ "heading": {
+ "left": {
+ "button": "Abbrechen",
+ "alert": {
+ "title": "Bearbeitung abbrechen?",
+ "buttons": {
+ "save": "Entwurf speichern",
+ "delete": "Entwurf löschen",
+ "cancel": "Abbrechen"
+ }
+ }
+ },
+ "right": {
+ "button": {
+ "default": "Tröt",
+ "conversation": "Direktnachricht tröten",
+ "reply": "Antwort tröten",
+ "deleteEdit": "Tröt",
+ "edit": "Tröt",
+ "share": "Tröt"
+ },
+ "alert": {
+ "default": {
+ "title": "Tröten fehlgeschlagen",
+ "button": "Erneut versuchen"
+ },
+ "removeReply": {
+ "title": "Ursprungsnachricht nicht verfügbar",
+ "description": "Ursprungströt wurde gelöscht. Möchtest du die Verknüpfung zu ihn entfernen?",
+ "cancel": "$t(common:buttons.cancel)",
+ "confirm": ""
+ }
+ }
+ }
+ },
+ "content": {
+ "root": {
+ "header": {
+ "postingAs": "Als @{{acct}}@{{domain}} tröten",
+ "spoilerInput": {
+ "placeholder": "Spoilerwarnung"
+ },
+ "textInput": {
+ "placeholder": "Was geht in dir vor",
+ "keyboardImage": {
+ "exceedMaximum": {
+ "title": "",
+ "OK": "$t(common:buttons.OK)"
+ }
+ }
+ }
+ },
+ "footer": {
+ "attachments": {
+ "sensitive": "Triggerwarnung setzen",
+ "remove": {
+ "accessibilityLabel": "Hochgeladenen Anhang {{attachment}} entfernen"
+ },
+ "edit": {
+ "accessibilityLabel": "Hochgeladenen Anhang {{attachment}} bearbeiten"
+ },
+ "upload": {
+ "accessibilityLabel": "Weiteren Anhang hinzufügen"
+ }
+ },
+ "emojis": {
+ "accessibilityHint": "Emoji hinzufügen"
+ },
+ "poll": {
+ "option": {
+ "placeholder": {
+ "accessibilityLabel": "Umfrageoption {{index}}",
+ "single": "Einfachauswahl",
+ "multiple": "Mehrfachauswahl"
+ }
+ },
+ "quantity": {
+ "reduce": {
+ "accessibilityLabel": "Reduziere Auswahlmöglichkeiten auf {{amount}}",
+ "accessibilityHint": "Mindestanzahl der Antwortmöglichkeiten erreicht, aktuell {{amount}}"
+ },
+ "increase": {
+ "accessibilityLabel": "Erhöhe Anzahl der Antwortmöglichkeiten auf {{amount}}",
+ "accessibilityHint": ""
+ }
+ },
+ "multiple": {
+ "heading": "Auswahltyp wählen",
+ "options": {
+ "single": "Einfachauswahl",
+ "multiple": "Mehrfachauswahl",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ },
+ "expiration": {
+ "heading": "Gültigkeit",
+ "options": {
+ "300": "5 Minuten",
+ "1800": "30 Minuten",
+ "3600": "1 Stunde",
+ "21600": "6 Stunden",
+ "86400": "1 Tag",
+ "259200": "3 Tage",
+ "604800": "7 Tage",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ }
+ }
+ },
+ "actions": {
+ "attachment": {
+ "accessibilityLabel": "Anhang hochladen",
+ "accessibilityHint": "Umfrage wird entfernt, wenn ein Anhang vorhanden ist",
+ "failed": {
+ "alert": {
+ "title": "",
+ "button": "Noch einmal versuchen"
+ }
+ }
+ },
+ "poll": {
+ "accessibilityLabel": "",
+ "accessibilityHint": ""
+ },
+ "visibility": {
+ "accessibilityLabel": "",
+ "title": "",
+ "options": {
+ "public": "Öffentlich",
+ "unlisted": "Ungelistet",
+ "private": "Nur für Folgende",
+ "direct": "",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ },
+ "spoiler": {
+ "accessibilityLabel": ""
+ },
+ "emoji": {
+ "accessibilityLabel": "",
+ "accessibilityHint": ""
+ }
+ },
+ "drafts_one": "",
+ "drafts_other": ""
+ },
+ "editAttachment": {
+ "header": {
+ "title": "Anhang bearbeiten",
+ "right": {
+ "accessibilityLabel": "",
+ "failed": {
+ "title": "Bearbeitung fehlgeschlagen",
+ "button": "Noch einmal versuchen"
+ }
+ }
+ },
+ "content": {
+ "altText": {
+ "heading": "Beschreibe den Inhalt für Sehbehinderte",
+ "placeholder": "Du kannst den Inhalten eine Beschreibung hinzufügen, auch \"Alt-Text\" genannt, damit sie für mehr Menschen zugänglich sind - auch für Blinde oder Sehbehinderte.\n\nGute Beschreibungen sind kurz und prägnant, geben aber den Inhalt Ihrer Medien genau genug wieder, um den Kontext zu verstehen."
+ },
+ "imageFocus": ""
+ }
+ },
+ "draftsList": {
+ "header": {
+ "title": "Entwurf"
+ },
+ "content": {
+ "accessibilityHint": "Gespeicherter Entwurf, tippe, um diesen zu bearbeiten",
+ "textEmpty": "Kein Inhalt"
+ },
+ "checkAttachment": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/i18n/de/screens/imageViewer.json b/src/i18n/de/screens/imageViewer.json
new file mode 100644
index 00000000..036bfa4f
--- /dev/null
+++ b/src/i18n/de/screens/imageViewer.json
@@ -0,0 +1,17 @@
+{
+ "content": {
+ "actions": {
+ "accessibilityLabel": "Weitere Funktionen für das Bild",
+ "accessibilityHint": "Das Bild kann gespeichert oder geteilt werden"
+ },
+ "options": {
+ "save": "Bild speichern",
+ "share": "Bild teilen",
+ "cancel": ""
+ },
+ "save": {
+ "succeed": "Bild gespeichert",
+ "failed": "Speichern fehlgeschlagen"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/i18n/de/screens/tabs.json b/src/i18n/de/screens/tabs.json
new file mode 100644
index 00000000..b98356f0
--- /dev/null
+++ b/src/i18n/de/screens/tabs.json
@@ -0,0 +1,345 @@
+{
+ "tabs": {
+ "local": {
+ "name": "Gefolgt"
+ },
+ "public": {
+ "name": "",
+ "segments": {
+ "left": "Föderiert",
+ "right": "Lokal"
+ }
+ },
+ "notifications": {
+ "name": "Benachrichtigungen"
+ },
+ "me": {
+ "name": "Über mich"
+ }
+ },
+ "common": {
+ "search": {
+ "accessibilityLabel": "Suche",
+ "accessibilityHint": "Suche nach Hashtags, Benutzern oder Tröts"
+ }
+ },
+ "notifications": {
+ "filter": {
+ "accessibilityLabel": "Filter",
+ "accessibilityHint": "Angezeigte Benachrichtigungstypen filtern"
+ }
+ },
+ "me": {
+ "stacks": {
+ "bookmarks": {
+ "name": "Lesezeichen"
+ },
+ "conversations": {
+ "name": "Direktnachrichten"
+ },
+ "favourites": {
+ "name": "Favoriten"
+ },
+ "fontSize": {
+ "name": "Schriftgröße"
+ },
+ "lists": {
+ "name": "Listen"
+ },
+ "list": {
+ "name": "Liste: {{list}}"
+ },
+ "push": {
+ "name": "Push-Benachrichtigung"
+ },
+ "profile": {
+ "name": "Profil bearbeiten"
+ },
+ "profileName": {
+ "name": "Anzeigename ändern"
+ },
+ "profileNote": {
+ "name": "Beschreibung bearbeiten"
+ },
+ "profileFields": {
+ "name": "Metadaten bearbeiten"
+ },
+ "settings": {
+ "name": "App-Einstellungen"
+ },
+ "webSettings": {
+ "name": "Kontoeinstellungen"
+ },
+ "switch": {
+ "name": "Konto wechseln"
+ }
+ },
+ "fontSize": {
+ "showcase": "Beispieltröt",
+ "demo": "Dies ist ein Beispieltröt😊. Du kannst aus mehreren der unteren Möglichkeiten auswählen.
Diese Einstellung betrifft ausschließlich die Haupteinstellungen, nicht die Schriftgröße in anderen Bereichen der App.
",
+ "availableSizes": "Verfügbare Größen",
+ "sizes": {
+ "S": "S",
+ "M": "M – Standard",
+ "L": "L",
+ "XL": "XL",
+ "XXL": "XXL"
+ }
+ },
+ "profile": {
+ "cancellation": {
+ "title": "Änderungen nicht gespeichert",
+ "message": "Änderung wurde nicht gespeichert. Möchtest du die Änderungen verwerfen?",
+ "buttons": {
+ "cancel": "$t(common:buttons.cancel)",
+ "discard": "Verwerfen"
+ }
+ },
+ "feedback": {
+ "succeed": "{{type}} aktualisiert",
+ "failed": "{{type}} Aktualisierung fehlgeschlagen, bitte erneut versuchen"
+ },
+ "root": {
+ "name": {
+ "title": "Anzeigename"
+ },
+ "avatar": {
+ "title": "Avatar",
+ "description": "Wird auf 400x400px herunterskaliert"
+ },
+ "header": {
+ "title": "Banner",
+ "description": "Wird auf 1500x500px herunterskaliert"
+ },
+ "note": {
+ "title": "Beschreibung"
+ },
+ "fields": {
+ "title": "Metadaten",
+ "total_one": "",
+ "total_other": ""
+ },
+ "visibility": {
+ "title": "Sichtbarkeit des Beitrags",
+ "options": {
+ "public": "Öffentlich",
+ "unlisted": "Ungelistet",
+ "private": "Nur für Folgende",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ },
+ "sensitive": {
+ "title": "Expliziten Beitrag posten"
+ },
+ "lock": {
+ "title": "Konto sperren",
+ "description": "Follower manuell bestätigen"
+ },
+ "bot": {
+ "title": "Bot-Konto",
+ "description": "Dieses Konto führt hauptsächlich automatisierte Aktionen aus und wird möglicherweise nicht überwacht"
+ }
+ },
+ "fields": {
+ "group": "",
+ "label": "Kennzeichnung",
+ "content": "Inhalt"
+ }
+ },
+ "push": {
+ "notAvailable": "Dein Gerät unterstützt keine Push-Benachrichtigung",
+ "enable": {
+ "direct": "Push-Benachrichtigungen aktivieren",
+ "settings": "In den Einstellungen aktivieren"
+ },
+ "global": {
+ "heading": "Aktivieren für {{acct}}",
+ "description": "Nachrichten werden über den Tooot-Server geleitet"
+ },
+ "decode": {
+ "heading": "Nachrichtendetails anzeigen",
+ "description": "Nachrichten, die über den tooot-Server geleitet werden, sind verschlüsselt, aber du kannst die Nachricht auf dem Server entschlüsseln. Unser Server-Quellcode ist Open Source - es gibt keine Log-Policy."
+ },
+ "default": {
+ "heading": "Standard"
+ },
+ "follow": {
+ "heading": "Neue Follower"
+ },
+ "favourite": {
+ "heading": "Favoriten"
+ },
+ "reblog": {
+ "heading": "Geboostet"
+ },
+ "mention": {
+ "heading": "Hat dich erwähnt"
+ },
+ "poll": {
+ "heading": "Umfrageupdate"
+ },
+ "howitworks": "Erfahre, wie das Routing funktioniert"
+ },
+ "root": {
+ "announcements": {
+ "content": {
+ "unread": "{{amount}} ungelesen",
+ "read": "Alles gelesen",
+ "empty": "Keine"
+ }
+ },
+ "push": {
+ "content": {
+ "enabled": "Aktiviert",
+ "disabled": "Deaktiviert"
+ }
+ },
+ "update": {
+ "title": "Auf neueste Version aktualisiert"
+ },
+ "logout": {
+ "button": "Abmelden",
+ "alert": {
+ "title": "Abmelden?",
+ "message": "Nach dem Ausloggen musst du dich erneut anmelden",
+ "buttons": {
+ "logout": "Abmelden",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ }
+ }
+ },
+ "settings": {
+ "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": "Sprache",
+ "options": {
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ },
+ "theme": {
+ "heading": "Erscheinungsbild",
+ "options": {
+ "auto": "Wie System",
+ "light": "Heller Modus",
+ "dark": "Dunkler Modus",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ },
+ "darkTheme": {
+ "heading": "Dunkles Design",
+ "options": {
+ "lighter": "Heller",
+ "darker": "Dunkler",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ },
+ "browser": {
+ "heading": "Link öffnen",
+ "options": {
+ "internal": "Innerhalb der App",
+ "external": "Im Systembrowser öffnen",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ },
+ "staticEmoji": {
+ "heading": "",
+ "description": ""
+ },
+ "feedback": {
+ "heading": "Neue Funktion vorschlagen"
+ },
+ "support": {
+ "heading": "Unterstütze Tooot"
+ },
+ "review": {
+ "heading": "Tooot überprüfen"
+ },
+ "contact": {
+ "heading": "Nimm Kontakt mit tooot auf"
+ },
+ "analytics": {
+ "heading": "Hilf uns, besser zu werden",
+ "description": "Es werden ausschließlich Daten gesammelt, welche nicht nutzerbezogen sind"
+ },
+ "version": "Version v{{version}}",
+ "instanceVersion": ""
+ },
+ "switch": {
+ "existing": "Wähle ein Konto aus",
+ "new": "Instanz zur Anmeldung wählen"
+ }
+ },
+ "shared": {
+ "account": {
+ "actions": {
+ "accessibilityLabel": "Aktionen für Benutzer {{user}}",
+ "accessibilityHint": "Du kannst diesen Benutzer stummschalten, blockieren, melden oder teilen"
+ },
+ "followed_by": "",
+ "moved": "Benutzer umgezogen",
+ "created_at": "Registriert am: {{date}}",
+ "summary": {
+ "statuses_count": "{{count}} Tröts",
+ "following_count": "$t(shared.users.accounts.following)",
+ "followers_count": "$t(shared.users.accounts.followers)"
+ },
+ "toots": {
+ "default": "Tröts",
+ "all": "Tröts und DruTröts"
+ }
+ },
+ "attachments": {
+ "name": "<0 /><1>\"s Medien1>"
+ },
+ "search": {
+ "header": {
+ "prefix": "Suche",
+ "placeholder": "nach..."
+ },
+ "empty": {
+ "general": "Suche nach Schlüsselwort oder nach $t(screenTabs:shared.search.sections.accounts)、$t(screenTabs:shared.search.sections.hashtags) or $t(screenTabs:shared.search.sections.statuses)",
+ "advanced": {
+ "header": "Erweiterte Suche",
+ "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": "Benutzer",
+ "hashtags": "Hashtag",
+ "statuses": "Tröt"
+ },
+ "notFound": "Konnte {{searchTerm}}-bezogene {{type}} nicht finden"
+ },
+ "toot": {
+ "name": "Diskussionen"
+ },
+ "users": {
+ "accounts": {
+ "following": "Folgt {{count}}",
+ "followers": "{{count}} Follower"
+ },
+ "statuses": {
+ "reblogged_by": "{{count}} mal geboosted",
+ "favourited_by": "{{count}} mal geherzt"
+ }
+ },
+ "history": {
+ "name": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/i18n/en/_all.ts b/src/i18n/en/_all.ts
index 9032bb7b..fa81be2e 100644
--- a/src/i18n/en/_all.ts
+++ b/src/i18n/en/_all.ts
@@ -13,6 +13,5 @@ export default {
componentMediaSelector: require('./components/mediaSelector'),
componentParse: require('./components/parse'),
componentRelationship: require('./components/relationship'),
- componentRelativeTime: require('./components/relativeTime'),
componentTimeline: require('./components/timeline')
}
diff --git a/src/i18n/en/common.json b/src/i18n/en/common.json
index 97e95f44..4b3fa57e 100644
--- a/src/i18n/en/common.json
+++ b/src/i18n/en/common.json
@@ -1,5 +1,6 @@
{
"buttons": {
+ "OK": "OK",
"apply": "Apply",
"cancel": "Cancel"
},
diff --git a/src/i18n/en/components/relativeTime.json b/src/i18n/en/components/relativeTime.json
deleted file mode 100644
index 2e3a2056..00000000
--- a/src/i18n/en/components/relativeTime.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "strings": {
- "prefixAgo": "",
- "prefixFromNow": "",
- "suffixAgo": "ago",
- "suffixFromNow": "",
- "seconds": "%d seconds",
- "minute": "about a minute",
- "minutes": "%d minutes",
- "hour": "about an hour",
- "hours": "about %d hours",
- "day": "a day",
- "days": "%d days",
- "month": "about a month",
- "months": "%d months",
- "year": "about a year",
- "years": "%d years",
- "wordSeparator": " "
- }
-}
\ No newline at end of file
diff --git a/src/i18n/en/components/timeline.json b/src/i18n/en/components/timeline.json
index 6df22065..a06addd8 100644
--- a/src/i18n/en/components/timeline.json
+++ b/src/i18n/en/components/timeline.json
@@ -58,6 +58,12 @@
"accessibilityLabel": "{{count}} users have favourited this toot",
"accessibilityHint": "Tap to know the users",
"text": "$t(screenTabs:shared.users.statuses.favourited_by)"
+ },
+ "history": {
+ "accessibilityLabel": "This toot has been edited {{count}} times",
+ "accessibilityHint": "Tap to view the full edit history",
+ "text_one": "{{count}} edit",
+ "text_other": "{{count}} edits"
}
},
"attachment": {
@@ -96,6 +102,9 @@
}
},
"application": "Tooted with {{application}}",
+ "edited": {
+ "accessibilityLabel": "Toot edited"
+ },
"muted": {
"accessibilityLabel": "Toot muted"
},
@@ -158,11 +167,23 @@
},
"status": {
"heading": "About toot",
+ "edit": {
+ "function": "Edit toot",
+ "button": "Edit this toot"
+ },
"delete": {
"function": "Delete toot",
- "button": "Delete this toot"
+ "button": "Delete this toot",
+ "alert": {
+ "title": "Confirm deleting toot?",
+ "message": "Are you sure to delete this toot? All boosts and favourites will be cleared, including all replies.",
+ "buttons": {
+ "confirm": "Confirm deleting",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ }
},
- "edit": {
+ "deleteEdit": {
"function": "Delete toot",
"button": "Delete and re-draft",
"alert": {
@@ -198,10 +219,10 @@
"refresh": "Refresh"
},
"count": {
- "voters": "{{count}} user voted",
- "voters_plural": "{{count}} users voted",
- "votes": "{{count}} vote",
- "votes_plural": "{{count}} votes"
+ "voters_one": "{{count}} user voted",
+ "voters_other": "{{count}} users voted",
+ "votes_one": "{{count}} vote",
+ "votes_other": "{{count}} votes"
},
"expiration": {
"expired": "Vote expired",
diff --git a/src/i18n/en/screens.json b/src/i18n/en/screens.json
index 2de2cc7a..b60b9e98 100644
--- a/src/i18n/en/screens.json
+++ b/src/i18n/en/screens.json
@@ -10,5 +10,9 @@
"pushError": {
"message": "Push service error",
"description": "Please re-enable push notification in settings"
+ },
+ "shareError": {
+ "imageNotSupported": "Image type {{type}} not supported",
+ "videoNotSupported": "Video type {{type}} not supported"
}
}
\ No newline at end of file
diff --git a/src/i18n/en/screens/compose.json b/src/i18n/en/screens/compose.json
index a0e41ae1..0006bed2 100644
--- a/src/i18n/en/screens/compose.json
+++ b/src/i18n/en/screens/compose.json
@@ -16,7 +16,9 @@
"default": "Toot",
"conversation": "Toot DM",
"reply": "Toot reply",
- "edit": "Toot"
+ "deleteEdit": "Toot",
+ "edit": "Toot",
+ "share": "Toot"
},
"alert": {
"default": {
@@ -40,7 +42,13 @@
"placeholder": "Spoiler warning message"
},
"textInput": {
- "placeholder": "What's on your mind"
+ "placeholder": "What's on your mind",
+ "keyboardImage": {
+ "exceedMaximum": {
+ "title": "Maximum attachments amount reached",
+ "OK": "$t(common:buttons.OK)"
+ }
+ }
}
},
"footer": {
@@ -134,8 +142,8 @@
"accessibilityHint": "Open emoji selection panel, swipe horizontally to change page"
}
},
- "drafts": "Draft ({{count}})",
- "drafts_plural": "Drafts ({{count}})"
+ "drafts_one": "Draft ({{count}})",
+ "drafts_other": "Drafts ({{count}})"
},
"editAttachment": {
"header": {
@@ -163,7 +171,8 @@
"content": {
"accessibilityHint": "Saved draft, tap to edit this draft",
"textEmpty": "Content empty"
- }
+ },
+ "checkAttachment": "Checking attachments on the server..."
}
}
}
\ No newline at end of file
diff --git a/src/i18n/en/screens/tabs.json b/src/i18n/en/screens/tabs.json
index 399daedc..2f240322 100644
--- a/src/i18n/en/screens/tabs.json
+++ b/src/i18n/en/screens/tabs.json
@@ -116,8 +116,8 @@
},
"fields": {
"title": "Metadata",
- "total": "{{count}} field",
- "total_plural": "{{count}} fields"
+ "total_one": "{{count}} field",
+ "total_other": "{{count}} fields"
},
"visibility": {
"title": "Posting Visibility",
@@ -251,6 +251,10 @@
"cancel": "$t(common:buttons.cancel)"
}
},
+ "staticEmoji": {
+ "heading": "Use static emoji",
+ "description": "If you encounter frequent app crash when viewing emoji list, you can try to use static emoji instead."
+ },
"feedback": {
"heading": "Feature Requests"
},
@@ -267,7 +271,8 @@
"heading": "Help us improve",
"description": "Collecting only non-user relative usage"
},
- "version": "Version v{{version}}"
+ "version": "Version v{{version}}",
+ "instanceVersion": "Mastodon version v{{version}}"
},
"switch": {
"existing": "Choose from logged in",
@@ -280,6 +285,7 @@
"accessibilityLabel": "Actions for user {{user}}",
"accessibilityHint": "You can mute, block, report or share this user"
},
+ "followed_by": " is following you",
"moved": "User moved",
"created_at": "Registered on: {{date}}",
"summary": {
@@ -331,6 +337,9 @@
"reblogged_by": "{{count}} boosted",
"favourited_by": "{{count}} favourited"
}
+ },
+ "history": {
+ "name": "Edit History"
}
}
}
\ No newline at end of file
diff --git a/src/i18n/i18n.ts b/src/i18n/i18n.ts
index 0199f4f2..7c9fd51b 100644
--- a/src/i18n/i18n.ts
+++ b/src/i18n/i18n.ts
@@ -1,6 +1,7 @@
import i18n from 'i18next'
import { initReactI18next } from 'react-i18next'
+import de from '@root/i18n/de/_all'
import en from '@root/i18n/en/_all'
import ko from '@root/i18n/ko/_all'
import vi from '@root/i18n/vi/_all'
@@ -13,7 +14,8 @@ i18n.use(initReactI18next).init({
ns: ['common'],
defaultNS: 'common',
- resources: { 'zh-Hans': zh_Hans, vi, ko, en },
+ resources: { 'zh-Hans': zh_Hans, vi, ko, en, de },
+ returnEmptyString: false,
saveMissing: true,
missingKeyHandler: (ns, key) => {
diff --git a/src/i18n/ko/_all.ts b/src/i18n/ko/_all.ts
index 9032bb7b..fa81be2e 100644
--- a/src/i18n/ko/_all.ts
+++ b/src/i18n/ko/_all.ts
@@ -13,6 +13,5 @@ export default {
componentMediaSelector: require('./components/mediaSelector'),
componentParse: require('./components/parse'),
componentRelationship: require('./components/relationship'),
- componentRelativeTime: require('./components/relativeTime'),
componentTimeline: require('./components/timeline')
}
diff --git a/src/i18n/ko/common.json b/src/i18n/ko/common.json
index 572eabf7..0a972cc4 100644
--- a/src/i18n/ko/common.json
+++ b/src/i18n/ko/common.json
@@ -1,5 +1,6 @@
{
"buttons": {
+ "OK": "",
"apply": "적용",
"cancel": "취소"
},
diff --git a/src/i18n/ko/components/relativeTime.json b/src/i18n/ko/components/relativeTime.json
deleted file mode 100644
index 4d09558f..00000000
--- a/src/i18n/ko/components/relativeTime.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "strings": {
- "prefixAgo": "",
- "prefixFromNow": "",
- "suffixAgo": "전",
- "suffixFromNow": "",
- "seconds": "%d초",
- "minute": "약 1분",
- "minutes": "%d분",
- "hour": "약 1시간",
- "hours": "약 %d시간",
- "day": "하루",
- "days": "%d일",
- "month": "약 1달",
- "months": "%d달",
- "year": "약 1년",
- "years": "%d년",
- "wordSeparator": ""
- }
-}
\ No newline at end of file
diff --git a/src/i18n/ko/components/timeline.json b/src/i18n/ko/components/timeline.json
index f78c80a4..8c4150d5 100644
--- a/src/i18n/ko/components/timeline.json
+++ b/src/i18n/ko/components/timeline.json
@@ -58,6 +58,12 @@
"accessibilityLabel": "{{count}}명의 사용자가 이 툿을 즐겨찾기했어요",
"accessibilityHint": "유저를 보려면 탭하세요",
"text": "$t(screenTabs:shared.users.statuses.favourited_by)"
+ },
+ "history": {
+ "accessibilityLabel": "",
+ "accessibilityHint": "",
+ "text_one": "",
+ "text_other": ""
}
},
"attachment": {
@@ -81,7 +87,9 @@
"translate": {
"default": "번역",
"succeed": "{{source}}에서 {{provider}}으로 번역됨",
- "failed": "번역 실패"
+ "failed": "번역 실패",
+ "source_not_supported": "",
+ "target_not_supported": ""
},
"header": {
"shared": {
@@ -94,6 +102,9 @@
}
},
"application": "{{application}}으로 툿",
+ "edited": {
+ "accessibilityLabel": ""
+ },
"muted": {
"accessibilityLabel": "툿 음소거됨"
},
@@ -156,11 +167,23 @@
},
"status": {
"heading": "툿 정보",
+ "edit": {
+ "function": "",
+ "button": ""
+ },
"delete": {
"function": "툿 삭제",
- "button": "이 툿 삭제"
+ "button": "이 툿 삭제",
+ "alert": {
+ "title": "툿을 정말 삭제할까요?",
+ "message": "",
+ "buttons": {
+ "confirm": "삭제 확인",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ }
},
- "edit": {
+ "deleteEdit": {
"function": "툿 삭제",
"button": "삭제하고 다시 쓰기",
"alert": {
@@ -196,10 +219,10 @@
"refresh": "새로고침"
},
"count": {
- "voters": "{{count}}명의 사용자가 투표",
- "voters_plural": "{{count}}명의 사용자가 투표",
- "votes": "{{count}} 투표",
- "votes_plural": "{{count}} 투표"
+ "voters_one": "{{count}}명의 사용자가 투표",
+ "voters_other": "{{count}}명의 사용자가 투표",
+ "votes_one": "{{count}} 투표",
+ "votes_other": "{{count}} 투표"
},
"expiration": {
"expired": "투표 종료됨",
diff --git a/src/i18n/ko/screens.json b/src/i18n/ko/screens.json
index 369590d9..db7fcfdd 100644
--- a/src/i18n/ko/screens.json
+++ b/src/i18n/ko/screens.json
@@ -10,5 +10,9 @@
"pushError": {
"message": "푸시 서비스 오류",
"description": "푸시 알림을 설정에서 다시 활성화해주세요"
+ },
+ "shareError": {
+ "imageNotSupported": "",
+ "videoNotSupported": ""
}
}
\ No newline at end of file
diff --git a/src/i18n/ko/screens/compose.json b/src/i18n/ko/screens/compose.json
index 6ab71fd6..d9f0bc1c 100644
--- a/src/i18n/ko/screens/compose.json
+++ b/src/i18n/ko/screens/compose.json
@@ -16,7 +16,9 @@
"default": "툿",
"conversation": "툿 DM",
"reply": "툿 답장",
- "edit": "툿"
+ "deleteEdit": "툿",
+ "edit": "툿",
+ "share": "툿"
},
"alert": {
"default": {
@@ -40,7 +42,13 @@
"placeholder": "스포일러 경고 메시지"
},
"textInput": {
- "placeholder": "무엇을 생각하고 있나요?"
+ "placeholder": "무엇을 생각하고 있나요?",
+ "keyboardImage": {
+ "exceedMaximum": {
+ "title": "",
+ "OK": "$t(common:buttons.OK)"
+ }
+ }
}
},
"footer": {
@@ -134,8 +142,8 @@
"accessibilityHint": "이모지 선택 패널 열기, 가로로 스와이프해서 페이지를 바꿀 수 있어요"
}
},
- "drafts": "초안 ({{count}})",
- "drafts_plural": "초안 ({{count}})"
+ "drafts_one": "초안 ({{count}})",
+ "drafts_other": "초안 ({{count}})"
},
"editAttachment": {
"header": {
@@ -163,7 +171,8 @@
"content": {
"accessibilityHint": "저장된 초안, 수정하려면 탭하세요",
"textEmpty": "콘텐츠 빔"
- }
+ },
+ "checkAttachment": ""
}
}
}
\ No newline at end of file
diff --git a/src/i18n/ko/screens/tabs.json b/src/i18n/ko/screens/tabs.json
index d7f6ef59..2acaefcd 100644
--- a/src/i18n/ko/screens/tabs.json
+++ b/src/i18n/ko/screens/tabs.json
@@ -67,6 +67,9 @@
"settings": {
"name": "앱 설정"
},
+ "webSettings": {
+ "name": ""
+ },
"switch": {
"name": "계정 전환"
}
@@ -113,8 +116,8 @@
},
"fields": {
"title": "메타데이터",
- "total": "{{count}}개 필드",
- "total_plural": "{{count}}개 필드"
+ "total_one": "{{count}}개 필드",
+ "total_other": "{{count}}개 필드"
},
"visibility": {
"title": "공개 범위",
@@ -232,6 +235,14 @@
"cancel": "$t(common:buttons.cancel)"
}
},
+ "darkTheme": {
+ "heading": "",
+ "options": {
+ "lighter": "",
+ "darker": "",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ },
"browser": {
"heading": "링크 열기",
"options": {
@@ -240,6 +251,13 @@
"cancel": "$t(common:buttons.cancel)"
}
},
+ "staticEmoji": {
+ "heading": "",
+ "description": ""
+ },
+ "feedback": {
+ "heading": ""
+ },
"support": {
"heading": "tooot 기부"
},
@@ -253,7 +271,8 @@
"heading": "개선할 수 있도록 도와주세요",
"description": "유저와 관련이 없는 사용량만 수집해요"
},
- "version": "버전 v{{version}}"
+ "version": "버전 v{{version}}",
+ "instanceVersion": ""
},
"switch": {
"existing": "로그인된 것 중 선택",
@@ -266,6 +285,7 @@
"accessibilityLabel": "사용자 {{user}}에 대한 동작",
"accessibilityHint": "이 사용자를 뮤트, 차단, 신고 또는 공유할 수 있어요"
},
+ "followed_by": "",
"moved": "유저가 이동함",
"created_at": "등록된 날: {{date}}",
"summary": {
@@ -317,6 +337,9 @@
"reblogged_by": "{{count}} 부스트함",
"favourited_by": "{{count}} 즐겨찾기함"
}
+ },
+ "history": {
+ "name": ""
}
}
}
\ No newline at end of file
diff --git a/src/i18n/locales.ts b/src/i18n/locales.ts
index 593b400a..ade8d606 100644
--- a/src/i18n/locales.ts
+++ b/src/i18n/locales.ts
@@ -1,4 +1,5 @@
const LOCALES = {
+ de: 'Deutsch',
en: 'English',
ko: '한국어',
vi: 'Tiếng Việt',
diff --git a/src/i18n/vi/_all.ts b/src/i18n/vi/_all.ts
index 9032bb7b..fa81be2e 100644
--- a/src/i18n/vi/_all.ts
+++ b/src/i18n/vi/_all.ts
@@ -13,6 +13,5 @@ export default {
componentMediaSelector: require('./components/mediaSelector'),
componentParse: require('./components/parse'),
componentRelationship: require('./components/relationship'),
- componentRelativeTime: require('./components/relativeTime'),
componentTimeline: require('./components/timeline')
}
diff --git a/src/i18n/vi/common.json b/src/i18n/vi/common.json
index 813185d7..92fe0faf 100644
--- a/src/i18n/vi/common.json
+++ b/src/i18n/vi/common.json
@@ -1,5 +1,6 @@
{
"buttons": {
+ "OK": "OK",
"apply": "Áp dụng",
"cancel": "Hủy bỏ"
},
diff --git a/src/i18n/vi/components/instance.json b/src/i18n/vi/components/instance.json
index 52931919..ee773025 100644
--- a/src/i18n/vi/components/instance.json
+++ b/src/i18n/vi/components/instance.json
@@ -5,7 +5,7 @@
},
"button": "Đăng nhập",
"information": {
- "name": "Tên",
+ "name": "Tên máy chủ",
"accounts": "Người dùng",
"statuses": "Tút",
"domains": "Liên hợp"
diff --git a/src/i18n/vi/components/relativeTime.json b/src/i18n/vi/components/relativeTime.json
deleted file mode 100644
index c5fffdb1..00000000
--- a/src/i18n/vi/components/relativeTime.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "strings": {
- "prefixAgo": "",
- "prefixFromNow": "",
- "suffixAgo": " trước",
- "suffixFromNow": "",
- "seconds": "%d giây",
- "minute": "một phút",
- "minutes": "%d phút",
- "hour": "một giờ",
- "hours": "khoảng %d giờ",
- "day": "một ngày",
- "days": "%d ngày",
- "month": "khoảng một tháng",
- "months": "%d tháng",
- "year": "khoảng một năm",
- "years": "%d năm",
- "wordSeparator": ""
- }
-}
\ No newline at end of file
diff --git a/src/i18n/vi/components/timeline.json b/src/i18n/vi/components/timeline.json
index 2adc2b90..0e430bce 100644
--- a/src/i18n/vi/components/timeline.json
+++ b/src/i18n/vi/components/timeline.json
@@ -27,8 +27,8 @@
"follow_request": "{{name}} yêu cầu theo dõi bạn",
"poll": "Cuộc bình chọn đã kết thúc",
"reblog": {
- "default": "{{name}} chia sẻ",
- "notification": "{{name}} chia sẻ tút của bạn"
+ "default": "{{name}} đăng lại",
+ "notification": "{{name}} đăng lại tút của bạn"
}
},
"actions": {
@@ -36,8 +36,8 @@
"accessibilityLabel": "Trả lời tút này"
},
"reblogged": {
- "accessibilityLabel": "Chia sẻ tút này",
- "function": "Chia sẻ tút"
+ "accessibilityLabel": "Đăng lại tút này",
+ "function": "Đăng lại tút"
},
"favourited": {
"accessibilityLabel": "Thích tút này",
@@ -50,14 +50,20 @@
},
"actionsUsers": {
"reblogged_by": {
- "accessibilityLabel": "{{count}} người đã chia sẻ tút này",
- "accessibilityHint": "Xem những ai chia sẻ",
+ "accessibilityLabel": "{{count}} người đã đăng lại tút này",
+ "accessibilityHint": "Xem những ai đăng lại",
"text": "$t(screenTabs:shared.users.statuses.reblogged_by)"
},
"favourited_by": {
"accessibilityLabel": "{{count}} người đã thích tút này",
"accessibilityHint": "Xem những ai thích",
"text": "$t(screenTabs:shared.users.statuses.favourited_by)"
+ },
+ "history": {
+ "accessibilityLabel": "Tút này đã sửa {{count}} lần",
+ "accessibilityHint": "Nhấn để xem lịch sử chỉnh sửa",
+ "text_one": "{{count}} lượt sửa",
+ "text_other": "{{count}} lượt sửa"
}
},
"attachment": {
@@ -71,7 +77,7 @@
},
"avatar": {
"accessibilityLabel": "Ảnh đại diện của {{name}}",
- "accessibilityHint": "Đến trang cá nhân {{name}}"
+ "accessibilityHint": "Đến trang của {{name}}"
},
"content": {
"expandHint": "nội dung ẩn"
@@ -96,6 +102,9 @@
}
},
"application": "via {{application}}",
+ "edited": {
+ "accessibilityLabel": "Tút đã sửa"
+ },
"muted": {
"accessibilityLabel": "Đã ẩn tút"
},
@@ -148,8 +157,8 @@
},
"share": {
"status": {
- "heading": "Chia sẻ",
- "button": "Chia sẻ URL tút"
+ "heading": "Đăng lại",
+ "button": "Đăng lại URL tút"
},
"account": {
"heading": "Chia sẻ",
@@ -158,18 +167,30 @@
},
"status": {
"heading": "Đối với tút",
+ "edit": {
+ "function": "Sửa tút",
+ "button": "Sửa tút này"
+ },
"delete": {
"function": "Xóa tút",
- "button": "Xóa tút này"
- },
- "edit": {
- "function": "Xóa tút",
- "button": "Xóa và viết lại",
+ "button": "Xóa tút này",
"alert": {
- "title": "Tiếp tục xóa tút?",
- "message": "Bạn có chắc muốn xóa và viết lại tút này? Toàn bộ lượt thích, chia sẻ và trả lời tút cũng sẽ bị xóa theo.",
+ "title": "Vẫn xóa tút?",
+ "message": "Bạn có chắc muốn xóa tút này? Toàn bộ lượt thích, đăng lại và trả lời tút cũng sẽ bị xóa theo.",
"buttons": {
- "confirm": "Tiếp tục xóa",
+ "confirm": "Xác nhận xóa",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ }
+ },
+ "deleteEdit": {
+ "function": "Xóa tút",
+ "button": "Xóa & viết lại",
+ "alert": {
+ "title": "Xác nhận xóa tút?",
+ "message": "Bạn có chắc muốn xóa và viết lại tút này? Toàn bộ lượt thích, đăng lại và trả lời tút cũng sẽ bị xóa theo.",
+ "buttons": {
+ "confirm": "Xác nhận xóa",
"cancel": "$t(common:buttons.cancel)"
}
}
@@ -198,10 +219,10 @@
"refresh": "Làm mới"
},
"count": {
- "voters": "{{count}} người bình chọn",
- "voters_plural": "{{count}} người bình chọn",
- "votes": "{{count}} bình chọn",
- "votes_plural": "{{count}} bình chọn"
+ "voters_one": "{{count}} người bình chọn",
+ "voters_other": "{{count}} người bình chọn",
+ "votes_one": "{{count}} bình chọn",
+ "votes_other": "{{count}} bình chọn"
},
"expiration": {
"expired": "Đã kết thúc",
diff --git a/src/i18n/vi/screens.json b/src/i18n/vi/screens.json
index 5de1f9fc..6f773165 100644
--- a/src/i18n/vi/screens.json
+++ b/src/i18n/vi/screens.json
@@ -10,5 +10,9 @@
"pushError": {
"message": "Lỗi thông báo đẩy",
"description": "Hãy cho phép thông báo đẩy trong mục cài đặt!"
+ },
+ "shareError": {
+ "imageNotSupported": "Không hỗ trợ định dạng ảnh {{type}}",
+ "videoNotSupported": "Không hỗ trợ định dạng video {{type}}"
}
}
\ No newline at end of file
diff --git a/src/i18n/vi/screens/compose.json b/src/i18n/vi/screens/compose.json
index c5473438..67d48171 100644
--- a/src/i18n/vi/screens/compose.json
+++ b/src/i18n/vi/screens/compose.json
@@ -16,7 +16,9 @@
"default": "Đăng",
"conversation": "Tin nhắn",
"reply": "Trả lời",
- "edit": "Sửa"
+ "deleteEdit": "Tút",
+ "edit": "Sửa",
+ "share": "Tút"
},
"alert": {
"default": {
@@ -40,7 +42,13 @@
"placeholder": "Viết nội dung ẩn của bạn ở đây"
},
"textInput": {
- "placeholder": "Bạn đang nghĩ về điều gì?"
+ "placeholder": "Bạn đang nghĩ về điều gì?",
+ "keyboardImage": {
+ "exceedMaximum": {
+ "title": "Vượt quá số lượng tập tin cho phép",
+ "OK": "$t(common:buttons.OK)"
+ }
+ }
}
},
"footer": {
@@ -134,8 +142,8 @@
"accessibilityHint": "Mở bảng chọn emoji, vuốt qua lại để xem toàn bộ"
}
},
- "drafts": "Nháp ({{count}})",
- "drafts_plural": "Nháp ({{count}})"
+ "drafts_one": "Nháp ({{count}})",
+ "drafts_other": "Nháp ({{count}})"
},
"editAttachment": {
"header": {
@@ -163,7 +171,8 @@
"content": {
"accessibilityHint": "Đã lưu nháp, nhấn để tiếp tục viết",
"textEmpty": "Chưa có nội dung"
- }
+ },
+ "checkAttachment": "Đang kiểm tra tập tin đính kèm trên máy chủ..."
}
}
}
\ No newline at end of file
diff --git a/src/i18n/vi/screens/tabs.json b/src/i18n/vi/screens/tabs.json
index ebbe9806..2435f2e4 100644
--- a/src/i18n/vi/screens/tabs.json
+++ b/src/i18n/vi/screens/tabs.json
@@ -38,10 +38,10 @@
"name": "Nhắn riêng"
},
"favourites": {
- "name": "Lượt thích"
+ "name": "Đã thích"
},
"fontSize": {
- "name": "Kích cỡ phông chữ"
+ "name": "Cỡ chữ"
},
"lists": {
"name": "Danh sách"
@@ -53,7 +53,7 @@
"name": "Thông báo đẩy"
},
"profile": {
- "name": "Cài đặt cá nhân"
+ "name": "Sửa hồ sơ"
},
"profileName": {
"name": "Tên hiển thị mới"
@@ -67,13 +67,16 @@
"settings": {
"name": "Thiết lập"
},
+ "webSettings": {
+ "name": "Nâng cao"
+ },
"switch": {
"name": "Chuyển đổi tài khoản"
}
},
"fontSize": {
- "showcase": "Kết quả",
- "demo": "Đây là một tút mẫu 😊 Bạn có thể chọn một trong nhiều lựa chọn bên dưới.
Tùy chọn này chỉ áp dụng cho nội dung tút chứ không thay đổi những phần khác của app.
",
+ "showcase": "Xem trước",
+ "demo": "Đây là một tút mẫu 😊 Bạn có thể chọn một trong nhiều lựa chọn bên dưới.
Tùy chọn này chỉ áp dụng cho nội dung tút chứ không ảnh hưởng những phần tử khác của app.
",
"availableSizes": "Kích cỡ",
"sizes": {
"S": "S",
@@ -113,8 +116,8 @@
},
"fields": {
"title": "Metadata",
- "total": "{{count}} mục",
- "total_plural": "{{count}} mục"
+ "total_one": "{{count}} mục",
+ "total_other": "{{count}} mục"
},
"visibility": {
"title": "Kiểu tút mặc định",
@@ -167,7 +170,7 @@
"heading": "Lượt thích"
},
"reblog": {
- "heading": "Lượt chia sẻ"
+ "heading": "Lượt đăng lại"
},
"mention": {
"heading": "Lượt nhắc đến"
@@ -248,6 +251,10 @@
"cancel": "$t(common:buttons.cancel)"
}
},
+ "staticEmoji": {
+ "heading": "",
+ "description": ""
+ },
"feedback": {
"heading": "Đề xuất tính năng"
},
@@ -264,10 +271,11 @@
"heading": "Thu thập dữ liệu",
"description": "Giúp cải thiện chất lượng app"
},
- "version": "Phiên bản {{version}}"
+ "version": "Phiên bản {{version}}",
+ "instanceVersion": "Mastodon phiên bản {{version}}"
},
"switch": {
- "existing": "Đã đăng nhập trước đó",
+ "existing": "Đã đăng nhập trước đây",
"new": "Đăng nhập máy chủ"
}
},
@@ -277,6 +285,7 @@
"accessibilityLabel": "Hành động đối với {{user}}",
"accessibilityHint": "Bạn có thể ẩn, chặn, báo cáo hoặc chia sẻ người này"
},
+ "followed_by": " đang theo dõi bạn",
"moved": "Đã chuyển đi",
"created_at": "Đã tham gia {{date}}",
"summary": {
@@ -317,7 +326,7 @@
"notFound": "Không tìm thấy {{type}} {{searchTerm}}"
},
"toot": {
- "name": "Thảo luận"
+ "name": "Nội dung tút"
},
"users": {
"accounts": {
@@ -325,9 +334,12 @@
"followers": "{{count}} người theo dõi"
},
"statuses": {
- "reblogged_by": "{{count}} chia sẻ",
+ "reblogged_by": "{{count}} đăng lại",
"favourited_by": "{{count}} thích"
}
+ },
+ "history": {
+ "name": "Lịch sử chỉnh sửa"
}
}
}
\ No newline at end of file
diff --git a/src/i18n/zh-Hans/_all.ts b/src/i18n/zh-Hans/_all.ts
index 9032bb7b..fa81be2e 100644
--- a/src/i18n/zh-Hans/_all.ts
+++ b/src/i18n/zh-Hans/_all.ts
@@ -13,6 +13,5 @@ export default {
componentMediaSelector: require('./components/mediaSelector'),
componentParse: require('./components/parse'),
componentRelationship: require('./components/relationship'),
- componentRelativeTime: require('./components/relativeTime'),
componentTimeline: require('./components/timeline')
}
diff --git a/src/i18n/zh-Hans/common.json b/src/i18n/zh-Hans/common.json
index 18046876..1cf4d63d 100644
--- a/src/i18n/zh-Hans/common.json
+++ b/src/i18n/zh-Hans/common.json
@@ -1,5 +1,6 @@
{
"buttons": {
+ "OK": "好的",
"apply": "应用",
"cancel": "取消"
},
diff --git a/src/i18n/zh-Hans/components/relativeTime.json b/src/i18n/zh-Hans/components/relativeTime.json
deleted file mode 100644
index e9872070..00000000
--- a/src/i18n/zh-Hans/components/relativeTime.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "strings": {
- "prefixAgo": "",
- "prefixFromNow": "",
- "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": ""
- }
-}
\ No newline at end of file
diff --git a/src/i18n/zh-Hans/components/timeline.json b/src/i18n/zh-Hans/components/timeline.json
index b5be0d81..4242c343 100644
--- a/src/i18n/zh-Hans/components/timeline.json
+++ b/src/i18n/zh-Hans/components/timeline.json
@@ -58,6 +58,12 @@
"accessibilityLabel": "{{count}}用户喜欢了此嘟文",
"accessibilityHint": "点击以了解用户",
"text": "$t(screenTabs:shared.users.statuses.favourited_by)"
+ },
+ "history": {
+ "accessibilityLabel": "此嘟文已被编辑{{count}}次",
+ "accessibilityHint": "点击查看所有编辑记录",
+ "text_one": "编辑{{count}}次",
+ "text_other": "编辑{{count}}次"
}
},
"attachment": {
@@ -96,6 +102,9 @@
}
},
"application": "发自于 {{application}}",
+ "edited": {
+ "accessibilityLabel": "嘟文已编辑"
+ },
"muted": {
"accessibilityLabel": "已静音此嘟文"
},
@@ -158,18 +167,30 @@
},
"status": {
"heading": "关于嘟文",
+ "edit": {
+ "function": "编辑嘟文",
+ "button": "编辑此条嘟文"
+ },
"delete": {
"function": "删除",
- "button": "删除此条嘟文"
+ "button": "删除此条嘟文",
+ "alert": {
+ "title": "确认删除嘟文?",
+ "message": "确定要删除这条嘟文吗?所有相关的转嘟和喜欢都会被清除,回复将会失去关联。",
+ "buttons": {
+ "confirm": "确认删除",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ }
},
- "edit": {
- "function": "删除",
- "button": "删除并重新编辑此条嘟文",
+ "deleteEdit": {
+ "function": "删除嘟文",
+ "button": "删除此条嘟文",
"alert": {
"title": "确认删除嘟文?",
"message": "确定要删除这条嘟文并重新编辑它吗?所有相关的转嘟和喜欢都会被清除,回复将会失去关联。",
"buttons": {
- "confirm": "删除并重新编辑",
+ "confirm": "确认删除",
"cancel": "$t(common:buttons.cancel)"
}
}
@@ -198,10 +219,10 @@
"refresh": "刷新"
},
"count": {
- "voters": "已投{{count}}人",
- "voters_plural": "已投{{count}}人",
- "votes": "{{count}}票",
- "votes_plural": "{{count}}票"
+ "voters_one": "已投{{count}}人",
+ "voters_other": "已投{{count}}人",
+ "votes_one": "{{count}}票",
+ "votes_other": "{{count}}票"
},
"expiration": {
"expired": "投票已结束",
diff --git a/src/i18n/zh-Hans/screens.json b/src/i18n/zh-Hans/screens.json
index 67c9c1ac..f43beb7f 100644
--- a/src/i18n/zh-Hans/screens.json
+++ b/src/i18n/zh-Hans/screens.json
@@ -10,5 +10,9 @@
"pushError": {
"message": "推送服务错误",
"description": "请在设置中重新尝试启用推送通知"
+ },
+ "shareError": {
+ "imageNotSupported": "不支持{{type}}类型的图像",
+ "videoNotSupported": "不支持{{type}}类型的视频"
}
}
\ No newline at end of file
diff --git a/src/i18n/zh-Hans/screens/compose.json b/src/i18n/zh-Hans/screens/compose.json
index 3da606da..33c505a8 100644
--- a/src/i18n/zh-Hans/screens/compose.json
+++ b/src/i18n/zh-Hans/screens/compose.json
@@ -16,7 +16,9 @@
"default": "发嘟嘟",
"conversation": "发私信",
"reply": "发布回复",
- "edit": "发嘟嘟"
+ "deleteEdit": "发嘟嘟",
+ "edit": "发嘟嘟",
+ "share": "发嘟嘟"
},
"alert": {
"default": {
@@ -40,7 +42,13 @@
"placeholder": "折叠部分的警告信息"
},
"textInput": {
- "placeholder": "想说点什么呢"
+ "placeholder": "想说点什么呢",
+ "keyboardImage": {
+ "exceedMaximum": {
+ "title": "已达附件数量上限",
+ "OK": "$t(common:buttons.OK)"
+ }
+ }
}
},
"footer": {
@@ -134,8 +142,8 @@
"accessibilityHint": "打开表情选择面板,水平滑动切换页面"
}
},
- "drafts": "草稿 ({{count}})",
- "drafts_plural": "草稿 ({{count}})"
+ "drafts_one": "草稿 ({{count}})",
+ "drafts_other": "草稿 ({{count}})"
},
"editAttachment": {
"header": {
@@ -163,7 +171,8 @@
"content": {
"accessibilityHint": "已保存的草稿,点击编辑此草稿",
"textEmpty": "无正文内容"
- }
+ },
+ "checkAttachment": "正在检查服务器上的附件..."
}
}
}
\ No newline at end of file
diff --git a/src/i18n/zh-Hans/screens/tabs.json b/src/i18n/zh-Hans/screens/tabs.json
index 2d08c060..0b52b33c 100644
--- a/src/i18n/zh-Hans/screens/tabs.json
+++ b/src/i18n/zh-Hans/screens/tabs.json
@@ -116,8 +116,8 @@
},
"fields": {
"title": "附加信息",
- "total": "{{count}} 项",
- "total_plural": "{{count}} 项"
+ "total_one": "{{count}}项",
+ "total_other": "{{count}}项"
},
"visibility": {
"title": "嘟文默认可见范围",
@@ -251,6 +251,10 @@
"cancel": "$t(common:buttons.cancel)"
}
},
+ "staticEmoji": {
+ "heading": "使用静态表情",
+ "description": "如果您在查看表情列表时经常遇到应用闪退,您可以尝试使用静态表情。"
+ },
"feedback": {
"heading": "功能建议"
},
@@ -267,7 +271,8 @@
"heading": "帮助我们改进",
"description": "收集不与用户相关联的使用信息"
},
- "version": "版本 v{{version}}"
+ "version": "版本 v{{version}}",
+ "instanceVersion": "长毛象版本 v{{version}}"
},
"switch": {
"existing": "选择已登录的账号",
@@ -280,6 +285,7 @@
"accessibilityLabel": "对用户{{user}} 的操作",
"accessibilityHint": "您可以静音、屏蔽、举报或分享此用户"
},
+ "followed_by": " 正在关注你",
"moved": "账户已迁移",
"created_at": "注册时间:{{date}}",
"summary": {
@@ -331,6 +337,9 @@
"reblogged_by": "{{count}} 人转嘟",
"favourited_by": "{{count}} 人喜欢"
}
+ },
+ "history": {
+ "name": "编辑历史"
}
}
}
\ No newline at end of file
diff --git a/src/i18n/zh-Hant/common.json b/src/i18n/zh-Hant/common.json
new file mode 100644
index 00000000..551ca0b0
--- /dev/null
+++ b/src/i18n/zh-Hant/common.json
@@ -0,0 +1,22 @@
+{
+ "buttons": {
+ "OK": "",
+ "apply": "套用",
+ "cancel": "取消"
+ },
+ "customEmoji": {
+ "accessibilityLabel": "自定的表情符號 {{emoji}}"
+ },
+ "message": {
+ "success": {
+ "message": "{{function}} 成功完成"
+ },
+ "warning": {
+ "message": ""
+ },
+ "error": {
+ "message": "{{function}} 失敗,請再試一次"
+ }
+ },
+ "separator": ","
+}
\ No newline at end of file
diff --git a/src/i18n/zh-Hant/components/emojis.json b/src/i18n/zh-Hant/components/emojis.json
new file mode 100644
index 00000000..9e3f1cd9
--- /dev/null
+++ b/src/i18n/zh-Hant/components/emojis.json
@@ -0,0 +1,3 @@
+{
+ "frequentUsed": "常用"
+}
\ No newline at end of file
diff --git a/src/i18n/zh-Hant/components/instance.json b/src/i18n/zh-Hant/components/instance.json
new file mode 100644
index 00000000..71c2445e
--- /dev/null
+++ b/src/i18n/zh-Hant/components/instance.json
@@ -0,0 +1,28 @@
+{
+ "server": {
+ "textInput": {
+ "placeholder": "站點的網域"
+ },
+ "button": "登入",
+ "information": {
+ "name": "名稱",
+ "accounts": "使用者",
+ "statuses": "嘟文",
+ "domains": "串聯宇宙"
+ },
+ "disclaimer": {
+ "base": "將使用系統內建的瀏覽器來登入,tooot app 無法讀取您的帳號資訊;詳見 ",
+ "privacy": "隱私權政策"
+ }
+ },
+ "update": {
+ "alert": {
+ "title": "已登入站點",
+ "message": "您可以多登入其他的帳號,已登入的帳號會被保留",
+ "buttons": {
+ "cancel": "$t(common:buttons.cancel)",
+ "continue": "繼續"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/i18n/zh-Hant/components/mediaSelector.json b/src/i18n/zh-Hant/components/mediaSelector.json
new file mode 100644
index 00000000..a2738c7b
--- /dev/null
+++ b/src/i18n/zh-Hant/components/mediaSelector.json
@@ -0,0 +1,28 @@
+{
+ "title": "選擇媒體來源",
+ "options": {
+ "library": "上傳",
+ "photo": "拍照",
+ "cancel": "$t(common:buttons.cancel)"
+ },
+ "library": {
+ "alert": {
+ "title": "權限不足",
+ "message": "上傳照片需要讀取的權限",
+ "buttons": {
+ "settings": "更新設定",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ }
+ },
+ "photo": {
+ "alert": {
+ "title": "權限不足",
+ "message": "需要使用相機的權限來上傳",
+ "buttons": {
+ "settings": "更新設定",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/i18n/zh-Hant/components/parse.json b/src/i18n/zh-Hant/components/parse.json
new file mode 100644
index 00000000..df93b2df
--- /dev/null
+++ b/src/i18n/zh-Hant/components/parse.json
@@ -0,0 +1,9 @@
+{
+ "HTML": {
+ "expanded": {
+ "true": "收起{{hint}}",
+ "false": "展開{{hint}}"
+ },
+ "defaultHint": "全文"
+ }
+}
\ No newline at end of file
diff --git a/src/i18n/zh-Hant/components/relationship.json b/src/i18n/zh-Hant/components/relationship.json
new file mode 100644
index 00000000..613097c8
--- /dev/null
+++ b/src/i18n/zh-Hant/components/relationship.json
@@ -0,0 +1,16 @@
+{
+ "follow": {
+ "function": "追蹤使用者"
+ },
+ "block": {
+ "function": "封鎖使用者"
+ },
+ "button": {
+ "error": "載入錯誤",
+ "blocked_by": "已被使用者封鎖",
+ "blocking": "解除封鎖",
+ "following": "取消追蹤",
+ "requested": "收回要求",
+ "default": "追蹤"
+ }
+}
\ No newline at end of file
diff --git a/src/i18n/zh-Hant/components/timeline.json b/src/i18n/zh-Hant/components/timeline.json
new file mode 100644
index 00000000..6e5fd6eb
--- /dev/null
+++ b/src/i18n/zh-Hant/components/timeline.json
@@ -0,0 +1,234 @@
+{
+ "empty": {
+ "error": {
+ "message": "載入錯誤",
+ "button": "重試"
+ },
+ "success": {
+ "message": "空蕩蕩的時間軸"
+ }
+ },
+ "end": {
+ "message": "到底了,來杯 <0 /> 如何"
+ },
+ "lookback": {
+ "message": "上次閱讀於"
+ },
+ "refresh": {
+ "fetchPreviousPage": "",
+ "refetch": ""
+ },
+ "shared": {
+ "actioned": {
+ "pinned": "置頂",
+ "favourite": "{{name}} 把您的嘟文加入了最愛",
+ "status": "{{name}} 正發了嘟",
+ "follow": "{{name}} 追隨您了",
+ "follow_request": "{{name}} 要求您允許他的追隨",
+ "poll": "您曾投過的投票已經結束",
+ "reblog": {
+ "default": "{{name}} 轉嘟了",
+ "notification": "{{name}} 轉嘟了您的嘟文"
+ }
+ },
+ "actions": {
+ "reply": {
+ "accessibilityLabel": "回覆嘟文"
+ },
+ "reblogged": {
+ "accessibilityLabel": "轉發此嘟",
+ "function": "轉嘟"
+ },
+ "favourited": {
+ "accessibilityLabel": "將嘟文加入最愛",
+ "function": "加入最愛"
+ },
+ "bookmarked": {
+ "accessibilityLabel": "將嘟文加入書籤",
+ "function": "加入書籤"
+ }
+ },
+ "actionsUsers": {
+ "reblogged_by": {
+ "accessibilityLabel": "{{count}} 個使用者轉嘟了此嘟文",
+ "accessibilityHint": "",
+ "text": ""
+ },
+ "favourited_by": {
+ "accessibilityLabel": "",
+ "accessibilityHint": "",
+ "text": ""
+ },
+ "history": {
+ "accessibilityLabel": "",
+ "accessibilityHint": "",
+ "text_one": "",
+ "text_other": ""
+ }
+ },
+ "attachment": {
+ "sensitive": {
+ "button": ""
+ },
+ "unsupported": {
+ "text": "",
+ "button": ""
+ }
+ },
+ "avatar": {
+ "accessibilityLabel": "",
+ "accessibilityHint": ""
+ },
+ "content": {
+ "expandHint": ""
+ },
+ "filtered": "",
+ "fullConversation": "",
+ "translate": {
+ "default": "",
+ "succeed": "",
+ "failed": "",
+ "source_not_supported": "",
+ "target_not_supported": ""
+ },
+ "header": {
+ "shared": {
+ "account": {
+ "name": {
+ "accessibilityHint": ""
+ },
+ "account": {
+ "accessibilityHint": ""
+ }
+ },
+ "application": "",
+ "edited": {
+ "accessibilityLabel": ""
+ },
+ "muted": {
+ "accessibilityLabel": ""
+ },
+ "visibility": {
+ "direct": {
+ "accessibilityLabel": ""
+ },
+ "private": {
+ "accessibilityLabel": ""
+ }
+ }
+ },
+ "conversation": {
+ "withAccounts": "",
+ "delete": {
+ "function": ""
+ }
+ },
+ "actions": {
+ "accessibilityHint": "",
+ "account": {
+ "heading": "",
+ "mute": {
+ "function": "",
+ "button": ""
+ },
+ "block": {
+ "function": "",
+ "button": ""
+ },
+ "reports": {
+ "function": "",
+ "button": ""
+ }
+ },
+ "domain": {
+ "heading": "",
+ "block": {
+ "function": "",
+ "button": ""
+ },
+ "alert": {
+ "title": "",
+ "message": "",
+ "buttons": {
+ "confirm": "",
+ "cancel": ""
+ }
+ }
+ },
+ "share": {
+ "status": {
+ "heading": "",
+ "button": ""
+ },
+ "account": {
+ "heading": "",
+ "button": ""
+ }
+ },
+ "status": {
+ "heading": "",
+ "edit": {
+ "function": "",
+ "button": ""
+ },
+ "delete": {
+ "function": "",
+ "button": "",
+ "alert": {
+ "title": "",
+ "message": "",
+ "buttons": {
+ "confirm": "",
+ "cancel": ""
+ }
+ }
+ },
+ "deleteEdit": {
+ "function": "",
+ "button": "",
+ "alert": {
+ "title": "",
+ "message": "",
+ "buttons": {
+ "confirm": "",
+ "cancel": ""
+ }
+ }
+ },
+ "mute": {
+ "function": "",
+ "button": {
+ "positive": "",
+ "negative": ""
+ }
+ },
+ "pin": {
+ "function": "",
+ "button": {
+ "positive": "",
+ "negative": ""
+ }
+ }
+ }
+ }
+ },
+ "poll": {
+ "meta": {
+ "button": {
+ "vote": "",
+ "refresh": ""
+ },
+ "count": {
+ "voters_one": "",
+ "voters_other": "",
+ "votes_one": "",
+ "votes_other": ""
+ },
+ "expiration": {
+ "expired": "",
+ "until": ""
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/i18n/zh-Hant/screens.json b/src/i18n/zh-Hant/screens.json
new file mode 100644
index 00000000..c8645c3e
--- /dev/null
+++ b/src/i18n/zh-Hant/screens.json
@@ -0,0 +1,18 @@
+{
+ "screenshot": {
+ "title": "保護隱私",
+ "message": "請不要散佈使用者的身份,像是使用者名稱、大頭照等,謝謝你!",
+ "button": "確認"
+ },
+ "localCorrupt": {
+ "message": "登入狀態已過期,請再登入一次"
+ },
+ "pushError": {
+ "message": "推播服務錯誤",
+ "description": "請在設定裡重新啟用推播"
+ },
+ "shareError": {
+ "imageNotSupported": "",
+ "videoNotSupported": ""
+ }
+}
\ No newline at end of file
diff --git a/src/i18n/zh-Hant/screens/actions.json b/src/i18n/zh-Hant/screens/actions.json
new file mode 100644
index 00000000..d6d2c219
--- /dev/null
+++ b/src/i18n/zh-Hant/screens/actions.json
@@ -0,0 +1,19 @@
+{
+ "content": {
+ "button": {
+ "apply": "",
+ "cancel": ""
+ },
+ "notificationsFilter": {
+ "heading": "",
+ "content": {
+ "follow": "",
+ "favourite": "",
+ "reblog": "",
+ "mention": "",
+ "poll": "",
+ "follow_request": ""
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/i18n/zh-Hant/screens/announcements.json b/src/i18n/zh-Hant/screens/announcements.json
new file mode 100644
index 00000000..95737a45
--- /dev/null
+++ b/src/i18n/zh-Hant/screens/announcements.json
@@ -0,0 +1,10 @@
+{
+ "heading": "",
+ "content": {
+ "published": "",
+ "button": {
+ "read": "",
+ "unread": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/i18n/zh-Hant/screens/compose.json b/src/i18n/zh-Hant/screens/compose.json
new file mode 100644
index 00000000..dc1419b3
--- /dev/null
+++ b/src/i18n/zh-Hant/screens/compose.json
@@ -0,0 +1,178 @@
+{
+ "heading": {
+ "left": {
+ "button": "",
+ "alert": {
+ "title": "",
+ "buttons": {
+ "save": "",
+ "delete": "",
+ "cancel": ""
+ }
+ }
+ },
+ "right": {
+ "button": {
+ "default": "",
+ "conversation": "",
+ "reply": "",
+ "deleteEdit": "",
+ "edit": "",
+ "share": ""
+ },
+ "alert": {
+ "default": {
+ "title": "",
+ "button": ""
+ },
+ "removeReply": {
+ "title": "",
+ "description": "",
+ "cancel": "",
+ "confirm": ""
+ }
+ }
+ }
+ },
+ "content": {
+ "root": {
+ "header": {
+ "postingAs": "",
+ "spoilerInput": {
+ "placeholder": ""
+ },
+ "textInput": {
+ "placeholder": "",
+ "keyboardImage": {
+ "exceedMaximum": {
+ "title": "",
+ "OK": ""
+ }
+ }
+ }
+ },
+ "footer": {
+ "attachments": {
+ "sensitive": "",
+ "remove": {
+ "accessibilityLabel": ""
+ },
+ "edit": {
+ "accessibilityLabel": ""
+ },
+ "upload": {
+ "accessibilityLabel": ""
+ }
+ },
+ "emojis": {
+ "accessibilityHint": ""
+ },
+ "poll": {
+ "option": {
+ "placeholder": {
+ "accessibilityLabel": "",
+ "single": "",
+ "multiple": ""
+ }
+ },
+ "quantity": {
+ "reduce": {
+ "accessibilityLabel": "",
+ "accessibilityHint": ""
+ },
+ "increase": {
+ "accessibilityLabel": "",
+ "accessibilityHint": ""
+ }
+ },
+ "multiple": {
+ "heading": "",
+ "options": {
+ "single": "",
+ "multiple": "",
+ "cancel": ""
+ }
+ },
+ "expiration": {
+ "heading": "",
+ "options": {
+ "300": "",
+ "1800": "",
+ "3600": "",
+ "21600": "",
+ "86400": "",
+ "259200": "",
+ "604800": "",
+ "cancel": ""
+ }
+ }
+ }
+ },
+ "actions": {
+ "attachment": {
+ "accessibilityLabel": "",
+ "accessibilityHint": "",
+ "failed": {
+ "alert": {
+ "title": "",
+ "button": ""
+ }
+ }
+ },
+ "poll": {
+ "accessibilityLabel": "",
+ "accessibilityHint": ""
+ },
+ "visibility": {
+ "accessibilityLabel": "",
+ "title": "",
+ "options": {
+ "public": "",
+ "unlisted": "",
+ "private": "",
+ "direct": "",
+ "cancel": ""
+ }
+ },
+ "spoiler": {
+ "accessibilityLabel": ""
+ },
+ "emoji": {
+ "accessibilityLabel": "",
+ "accessibilityHint": ""
+ }
+ },
+ "drafts_one": "",
+ "drafts_other": ""
+ },
+ "editAttachment": {
+ "header": {
+ "title": "",
+ "right": {
+ "accessibilityLabel": "",
+ "failed": {
+ "title": "",
+ "button": ""
+ }
+ }
+ },
+ "content": {
+ "altText": {
+ "heading": "",
+ "placeholder": ""
+ },
+ "imageFocus": ""
+ }
+ },
+ "draftsList": {
+ "header": {
+ "title": ""
+ },
+ "content": {
+ "accessibilityHint": "",
+ "textEmpty": ""
+ },
+ "checkAttachment": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/i18n/zh-Hant/screens/imageViewer.json b/src/i18n/zh-Hant/screens/imageViewer.json
new file mode 100644
index 00000000..ad2b495c
--- /dev/null
+++ b/src/i18n/zh-Hant/screens/imageViewer.json
@@ -0,0 +1,17 @@
+{
+ "content": {
+ "actions": {
+ "accessibilityLabel": "",
+ "accessibilityHint": ""
+ },
+ "options": {
+ "save": "",
+ "share": "",
+ "cancel": ""
+ },
+ "save": {
+ "succeed": "",
+ "failed": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/i18n/zh-Hant/screens/tabs.json b/src/i18n/zh-Hant/screens/tabs.json
new file mode 100644
index 00000000..4aa7b045
--- /dev/null
+++ b/src/i18n/zh-Hant/screens/tabs.json
@@ -0,0 +1,345 @@
+{
+ "tabs": {
+ "local": {
+ "name": "追隨中"
+ },
+ "public": {
+ "name": "",
+ "segments": {
+ "left": "聯邦宇宙",
+ "right": "本站"
+ }
+ },
+ "notifications": {
+ "name": "通知"
+ },
+ "me": {
+ "name": "關於我"
+ }
+ },
+ "common": {
+ "search": {
+ "accessibilityLabel": "搜尋",
+ "accessibilityHint": "搜尋標籤、使用者或嘟文"
+ }
+ },
+ "notifications": {
+ "filter": {
+ "accessibilityLabel": "篩選器",
+ "accessibilityHint": ""
+ }
+ },
+ "me": {
+ "stacks": {
+ "bookmarks": {
+ "name": "書籤"
+ },
+ "conversations": {
+ "name": "私訊"
+ },
+ "favourites": {
+ "name": "最愛"
+ },
+ "fontSize": {
+ "name": "嘟文字體大小"
+ },
+ "lists": {
+ "name": "清單"
+ },
+ "list": {
+ "name": "清單: {{list}}"
+ },
+ "push": {
+ "name": "推播通知"
+ },
+ "profile": {
+ "name": "編輯個人資料"
+ },
+ "profileName": {
+ "name": "編輯顯示名稱"
+ },
+ "profileNote": {
+ "name": "編輯簡介"
+ },
+ "profileFields": {
+ "name": "編輯描述資料"
+ },
+ "settings": {
+ "name": "App 設定"
+ },
+ "webSettings": {
+ "name": "更多的帳號設定"
+ },
+ "switch": {
+ "name": "切換帳號"
+ }
+ },
+ "fontSize": {
+ "showcase": "嘟文範例",
+ "demo": "",
+ "availableSizes": "",
+ "sizes": {
+ "S": "",
+ "M": "",
+ "L": "",
+ "XL": "",
+ "XXL": ""
+ }
+ },
+ "profile": {
+ "cancellation": {
+ "title": "",
+ "message": "",
+ "buttons": {
+ "cancel": "",
+ "discard": ""
+ }
+ },
+ "feedback": {
+ "succeed": "",
+ "failed": ""
+ },
+ "root": {
+ "name": {
+ "title": ""
+ },
+ "avatar": {
+ "title": "",
+ "description": ""
+ },
+ "header": {
+ "title": "",
+ "description": ""
+ },
+ "note": {
+ "title": ""
+ },
+ "fields": {
+ "title": "描述資料",
+ "total_one": "",
+ "total_other": ""
+ },
+ "visibility": {
+ "title": "",
+ "options": {
+ "public": "",
+ "unlisted": "",
+ "private": "",
+ "cancel": ""
+ }
+ },
+ "sensitive": {
+ "title": ""
+ },
+ "lock": {
+ "title": "",
+ "description": ""
+ },
+ "bot": {
+ "title": "",
+ "description": ""
+ }
+ },
+ "fields": {
+ "group": "",
+ "label": "",
+ "content": ""
+ }
+ },
+ "push": {
+ "notAvailable": "",
+ "enable": {
+ "direct": "",
+ "settings": ""
+ },
+ "global": {
+ "heading": "",
+ "description": ""
+ },
+ "decode": {
+ "heading": "",
+ "description": ""
+ },
+ "default": {
+ "heading": ""
+ },
+ "follow": {
+ "heading": ""
+ },
+ "favourite": {
+ "heading": ""
+ },
+ "reblog": {
+ "heading": ""
+ },
+ "mention": {
+ "heading": ""
+ },
+ "poll": {
+ "heading": ""
+ },
+ "howitworks": ""
+ },
+ "root": {
+ "announcements": {
+ "content": {
+ "unread": "",
+ "read": "",
+ "empty": ""
+ }
+ },
+ "push": {
+ "content": {
+ "enabled": "",
+ "disabled": ""
+ }
+ },
+ "update": {
+ "title": ""
+ },
+ "logout": {
+ "button": "",
+ "alert": {
+ "title": "",
+ "message": "",
+ "buttons": {
+ "logout": "",
+ "cancel": ""
+ }
+ }
+ }
+ },
+ "settings": {
+ "fontsize": {
+ "heading": "",
+ "content": {
+ "S": "",
+ "M": "",
+ "L": "",
+ "XL": "",
+ "XXL": ""
+ }
+ },
+ "language": {
+ "heading": "",
+ "options": {
+ "cancel": ""
+ }
+ },
+ "theme": {
+ "heading": "",
+ "options": {
+ "auto": "",
+ "light": "",
+ "dark": "",
+ "cancel": ""
+ }
+ },
+ "darkTheme": {
+ "heading": "",
+ "options": {
+ "lighter": "",
+ "darker": "",
+ "cancel": ""
+ }
+ },
+ "browser": {
+ "heading": "",
+ "options": {
+ "internal": "",
+ "external": "",
+ "cancel": ""
+ }
+ },
+ "staticEmoji": {
+ "heading": "",
+ "description": ""
+ },
+ "feedback": {
+ "heading": ""
+ },
+ "support": {
+ "heading": ""
+ },
+ "review": {
+ "heading": ""
+ },
+ "contact": {
+ "heading": ""
+ },
+ "analytics": {
+ "heading": "",
+ "description": ""
+ },
+ "version": "",
+ "instanceVersion": ""
+ },
+ "switch": {
+ "existing": "",
+ "new": ""
+ }
+ },
+ "shared": {
+ "account": {
+ "actions": {
+ "accessibilityLabel": "",
+ "accessibilityHint": ""
+ },
+ "followed_by": "",
+ "moved": "",
+ "created_at": "",
+ "summary": {
+ "statuses_count": "",
+ "following_count": "",
+ "followers_count": ""
+ },
+ "toots": {
+ "default": "",
+ "all": ""
+ }
+ },
+ "attachments": {
+ "name": ""
+ },
+ "search": {
+ "header": {
+ "prefix": "",
+ "placeholder": ""
+ },
+ "empty": {
+ "general": "",
+ "advanced": {
+ "header": "",
+ "example": {
+ "account": "",
+ "hashtag": "",
+ "statusLink": "",
+ "accountLink": ""
+ }
+ }
+ },
+ "sections": {
+ "accounts": "",
+ "hashtags": "",
+ "statuses": ""
+ },
+ "notFound": ""
+ },
+ "toot": {
+ "name": ""
+ },
+ "users": {
+ "accounts": {
+ "following": "",
+ "followers": ""
+ },
+ "statuses": {
+ "reblogged_by": "",
+ "favourited_by": ""
+ }
+ },
+ "history": {
+ "name": ""
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/screens/Actions.tsx b/src/screens/Actions.tsx
index 9f640e4e..b669164b 100644
--- a/src/screens/Actions.tsx
+++ b/src/screens/Actions.tsx
@@ -35,191 +35,189 @@ import ActionsNotificationsFilter from './Actions/NotificationsFilter'
import ActionsShare from './Actions/Share'
import ActionsStatus from './Actions/Status'
-const ScreenActions = React.memo(
- ({
- route: { params },
- navigation
- }: RootStackScreenProps<'Screen-Actions'>) => {
- const { t } = useTranslation()
+const ScreenActions = ({
+ route: { params },
+ navigation
+}: RootStackScreenProps<'Screen-Actions'>) => {
+ const { t } = useTranslation()
- const instanceAccount = useSelector(
- getInstanceAccount,
- (prev, next) => prev?.id === next?.id
- )
- let sameAccount = false
+ const instanceAccount = useSelector(
+ getInstanceAccount,
+ (prev, next) => prev?.id === next?.id
+ )
+ let sameAccount = false
+ switch (params.type) {
+ case 'status':
+ console.log('media length', params.status.media_attachments.length)
+ sameAccount = instanceAccount?.id === params.status.account.id
+ break
+ case 'account':
+ sameAccount = instanceAccount?.id === params.account.id
+ break
+ }
+
+ const instanceDomain = useSelector(getInstanceUrl)
+ let sameDomain = true
+ let statusDomain: string
+ switch (params.type) {
+ case 'status':
+ statusDomain = params.status.uri
+ ? params.status.uri.split(new RegExp(/\/\/(.*?)\//))[1]
+ : ''
+ sameDomain = instanceDomain === statusDomain
+ break
+ }
+
+ const { colors } = useTheme()
+ const insets = useSafeAreaInsets()
+
+ const DEFAULT_VALUE = 350
+ const screenHeight = Dimensions.get('screen').height
+ const panY = useSharedValue(DEFAULT_VALUE)
+ useEffect(() => {
+ panY.value = withTiming(0)
+ }, [])
+ const styleTop = useAnimatedStyle(() => {
+ return {
+ bottom: interpolate(
+ panY.value,
+ [0, screenHeight],
+ [0, -screenHeight],
+ Extrapolate.CLAMP
+ )
+ }
+ })
+ const dismiss = useCallback(() => {
+ navigation.goBack()
+ }, [])
+ const onGestureEvent = useAnimatedGestureHandler({
+ onActive: ({ translationY }) => {
+ panY.value = translationY
+ },
+ onEnd: ({ velocityY }) => {
+ if (velocityY > 500) {
+ runOnJS(dismiss)()
+ } else {
+ panY.value = withTiming(0)
+ }
+ }
+ })
+
+ const actions = () => {
switch (params.type) {
case 'status':
- sameAccount = instanceAccount?.id === params.status.account.id
- break
- case 'account':
- sameAccount = instanceAccount?.id === params.account.id
- break
- }
-
- const instanceDomain = useSelector(getInstanceUrl)
- let sameDomain = true
- let statusDomain: string
- switch (params.type) {
- case 'status':
- statusDomain = params.status.uri
- ? params.status.uri.split(new RegExp(/\/\/(.*?)\//))[1]
- : ''
- sameDomain = instanceDomain === statusDomain
- break
- }
-
- const { colors } = useTheme()
- const insets = useSafeAreaInsets()
-
- const DEFAULT_VALUE = 350
- const screenHeight = Dimensions.get('screen').height
- const panY = useSharedValue(DEFAULT_VALUE)
- useEffect(() => {
- panY.value = withTiming(0)
- }, [])
- const styleTop = useAnimatedStyle(() => {
- return {
- bottom: interpolate(
- panY.value,
- [0, screenHeight],
- [0, -screenHeight],
- Extrapolate.CLAMP
- )
- }
- })
- const dismiss = useCallback(() => {
- navigation.goBack()
- }, [])
- const onGestureEvent = useAnimatedGestureHandler({
- onActive: ({ translationY }) => {
- panY.value = translationY
- },
- onEnd: ({ velocityY }) => {
- if (velocityY > 500) {
- runOnJS(dismiss)()
- } else {
- panY.value = withTiming(0)
- }
- }
- })
-
- const actions = useMemo(() => {
- switch (params.type) {
- case 'status':
- return (
- <>
- {!sameAccount ? (
-
- ) : null}
- {sameAccount && params.status ? (
-
- ) : null}
- {!sameDomain && statusDomain ? (
-
- ) : null}
- {params.status.visibility !== 'direct' ? (
-
- ) : null}
-