diff --git a/BUILD b/BUILD
new file mode 100644
index 00000000..8b137891
--- /dev/null
+++ b/BUILD
@@ -0,0 +1 @@
+
diff --git a/README.md b/README.md
index d3be720b..2420f572 100644
--- a/README.md
+++ b/README.md
@@ -6,5 +6,10 @@
## Special thanks
+@forenta for German translation
+
+@andrigamerita for Italian translation
+
@hellojaccc for Korean translation
+
@duy@mas.to for Vietnamese translation
\ No newline at end of file
diff --git a/fastlane/Deliverfile b/fastlane/Deliverfile
index 41d6b634..30cb08e4 100644
--- a/fastlane/Deliverfile
+++ b/fastlane/Deliverfile
@@ -1,4 +1,4 @@
-languages(['zh-Hans', 'vi', 'ko', 'en-US'])
+languages(['zh-Hans', 'vi', 'ko', 'en-US', 'de-DE'])
name({
'default' => "tooot"
@@ -27,4 +27,4 @@ submission_information({
add_id_info_tracks_action: false,
add_id_info_tracks_install: false,
add_id_info_uses_idfa: true
-})
\ No newline at end of file
+})
diff --git a/fastlane/metadata/en-US/release_notes.txt b/fastlane/metadata/en-US/release_notes.txt
index b81243d0..2859b8c8 100644
--- a/fastlane/metadata/en-US/release_notes.txt
+++ b/fastlane/metadata/en-US/release_notes.txt
@@ -1 +1,5 @@
-Support iPad
\ No newline at end of file
+Support editing toot
+Integrated into system's share menu
+Follow system's font weight setting (iOS)
+Upload gif from keyboard (Android)
+Added German and Italian
diff --git a/fastlane/metadata/zh-Hans/release_notes.txt b/fastlane/metadata/zh-Hans/release_notes.txt
index 6b6d6a1a..ebf42983 100644
--- a/fastlane/metadata/zh-Hans/release_notes.txt
+++ b/fastlane/metadata/zh-Hans/release_notes.txt
@@ -1 +1,5 @@
-添加支持iPad
+支持编辑嘟文
+支持系统图片分享
+跟随系统字体粗细(苹果)
+键盘上传gif图片(安卓)
+新增德语和意大利语
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
index 4d3e9684..ddf3ce96 100644
--- a/ios/Podfile.lock
+++ b/ios/Podfile.lock
@@ -29,7 +29,7 @@ PODS:
- EXJSONUtils (0.3.0)
- EXManifests (0.3.0):
- EXJSONUtils
- - EXNotifications (0.15.2):
+ - EXNotifications (0.14.1):
- ExpoModulesCore
- Expo (45.0.3):
- ExpoModulesCore
@@ -571,6 +571,8 @@ PODS:
- Sentry (7.11.0):
- Sentry/Core (= 7.11.0)
- Sentry/Core (7.11.0)
+ - UMTaskManagerInterface (7.1.1):
+ - ExpoModulesCore
- Yoga (1.14.0)
DEPENDENCIES:
@@ -654,6 +656,7 @@ DEPENDENCIES:
- "RNSentry (from `../node_modules/@sentry/react-native`)"
- RNShareMenu (from `../node_modules/react-native-share-menu`)
- RNSVG (from `../node_modules/react-native-svg`)
+ - UMTaskManagerInterface (from `../node_modules/unimodules-task-manager-interface/ios`)
- Yoga (from `../node_modules/react-native/ReactCommon/yoga`)
SPEC REPOS:
@@ -830,6 +833,8 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native-share-menu"
RNSVG:
:path: "../node_modules/react-native-svg"
+ UMTaskManagerInterface:
+ :path: "../node_modules/unimodules-task-manager-interface/ios"
Yoga:
:path: "../node_modules/react-native/ReactCommon/yoga"
@@ -848,7 +853,7 @@ SPEC CHECKSUMS:
EXImageLoader: b88e053d760f85a82405b1db2de4abf11978fc9f
EXJSONUtils: 2a74b8f40f1523cc3f92af99c91aa78201737a77
EXManifests: 0c6134b7b6f3236a93a778c3f44ba1cfb3f9fa3d
- EXNotifications: ea9fc56d27d1fee229489c5d8f452c7f367c237e
+ EXNotifications: a7d582fa800d77f4a75bd22d52e84e2fbcee26df
Expo: 353cd6d2154838c0c8bb1072d3ac89eb535a2ef4
ExpoCrypto: d0d0f3e20875dc450b4ec88f0fb608da5c2c6c17
ExpoHaptics: ad58ec96a25e57579c14a47c7d71f0de0de8656a
@@ -928,6 +933,7 @@ SPEC CHECKSUMS:
SDWebImage: 0905f1b7760fc8ac4198cae0036600d67478751e
SDWebImageWebPCoder: f93010f3f6c031e2f8fb3081ca4ee6966c539815
Sentry: 0c5cd63d714187b4a39c331c1f0eb04ba7868341
+ UMTaskManagerInterface: 3184c93ecc290bd422c6e344badc89b601e9c29b
Yoga: 99652481fcd320aefa4a7ef90095b95acd181952
PODFILE CHECKSUM: d6d20fa7c51228cebc309aed987ed7d8f4274844
diff --git a/package.json b/package.json
index 903d8483..72249e8f 100644
--- a/package.json
+++ b/package.json
@@ -59,7 +59,7 @@
"expo-image-picker": "13.1.1",
"expo-linking": "3.1.0",
"expo-localization": "13.0.0",
- "expo-notifications": "0.15.2",
+ "expo-notifications": "0.14.1",
"expo-random": "12.2.0",
"expo-screen-capture": "4.2.0",
"expo-secure-store": "11.2.0",
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
index a7bc667b..c9876900 100644
--- a/src/i18n/de/common.json
+++ b/src/i18n/de/common.json
@@ -1,5 +1,6 @@
{
"buttons": {
+ "OK": "",
"apply": "Übernehmen",
"cancel": "Abbrechen"
},
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/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/screens.json b/src/i18n/de/screens.json
index ee03cc6b..ed9f21fe 100644
--- a/src/i18n/de/screens.json
+++ b/src/i18n/de/screens.json
@@ -10,5 +10,9 @@
"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/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/i18n.ts b/src/i18n/i18n.ts
index 0199f4f2..220124af 100644
--- a/src/i18n/i18n.ts
+++ b/src/i18n/i18n.ts
@@ -1,7 +1,9 @@
import i18n from 'i18next'
import { initReactI18next } from 'react-i18next'
+import de from '@root/i18n/de/_all'
import en from '@root/i18n/en/_all'
+import it from '@root/i18n/it/_all'
import ko from '@root/i18n/ko/_all'
import vi from '@root/i18n/vi/_all'
import zh_Hans from '@root/i18n/zh-Hans/_all'
@@ -13,7 +15,8 @@ i18n.use(initReactI18next).init({
ns: ['common'],
defaultNS: 'common',
- resources: { 'zh-Hans': zh_Hans, vi, ko, en },
+ resources: { 'zh-Hans': zh_Hans, vi, ko, it, en, de },
+ returnEmptyString: false,
saveMissing: true,
missingKeyHandler: (ns, key) => {
diff --git a/src/i18n/it/_all.ts b/src/i18n/it/_all.ts
new file mode 100644
index 00000000..fa81be2e
--- /dev/null
+++ b/src/i18n/it/_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/it/common.json b/src/i18n/it/common.json
new file mode 100644
index 00000000..182154db
--- /dev/null
+++ b/src/i18n/it/common.json
@@ -0,0 +1,22 @@
+{
+ "buttons": {
+ "OK": "OK",
+ "apply": "Applica",
+ "cancel": "Annulla"
+ },
+ "customEmoji": {
+ "accessibilityLabel": "Emoji personalizzata {{emoji}}"
+ },
+ "message": {
+ "success": {
+ "message": "{{function}} eseguito con successo"
+ },
+ "warning": {
+ "message": ""
+ },
+ "error": {
+ "message": "{{function}} fallito, per favore riprova"
+ }
+ },
+ "separator": ", "
+}
\ No newline at end of file
diff --git a/src/i18n/it/components/emojis.json b/src/i18n/it/components/emojis.json
new file mode 100644
index 00000000..dfcfdea3
--- /dev/null
+++ b/src/i18n/it/components/emojis.json
@@ -0,0 +1,3 @@
+{
+ "frequentUsed": "Usate di frequente"
+}
\ No newline at end of file
diff --git a/src/i18n/it/components/instance.json b/src/i18n/it/components/instance.json
new file mode 100644
index 00000000..59ba3636
--- /dev/null
+++ b/src/i18n/it/components/instance.json
@@ -0,0 +1,28 @@
+{
+ "server": {
+ "textInput": {
+ "placeholder": "Dominio dell'istanza"
+ },
+ "button": "Accedi",
+ "information": {
+ "name": "Nome",
+ "accounts": "Utenti",
+ "statuses": "Toot",
+ "domains": "Universi"
+ },
+ "disclaimer": {
+ "base": "Per accedere, verrà aperta una pagina del browser di sistema. I dati di accesso del tuo account sono protetti. Leggi di più:",
+ "privacy": "politica sulla privacy"
+ }
+ },
+ "update": {
+ "alert": {
+ "title": "Accesso a questa istanza effettuato",
+ "message": "Puoi accedere ad ulteriori account, mantenendo l'accesso a quelli già esistenti",
+ "buttons": {
+ "cancel": "$t(common:buttons.cancel)",
+ "continue": "Continua"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/i18n/it/components/mediaSelector.json b/src/i18n/it/components/mediaSelector.json
new file mode 100644
index 00000000..5ab89dd9
--- /dev/null
+++ b/src/i18n/it/components/mediaSelector.json
@@ -0,0 +1,28 @@
+{
+ "title": "Seleziona origine media",
+ "options": {
+ "library": "Carica da libreria locale",
+ "photo": "Scatta una foto",
+ "cancel": "$t(common:buttons.cancel)"
+ },
+ "library": {
+ "alert": {
+ "title": "Permesso non concesso",
+ "message": "È richiesto l'accesso ai file del dispositivo per il caricamento dalla libreria",
+ "buttons": {
+ "settings": "Correggi impostazioni",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ }
+ },
+ "photo": {
+ "alert": {
+ "title": "Permesso non concesso",
+ "message": "È richiesto l'accesso alla fotocamera per scattare foto",
+ "buttons": {
+ "settings": "Correggi impostazioni",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/i18n/it/components/parse.json b/src/i18n/it/components/parse.json
new file mode 100644
index 00000000..8f98a863
--- /dev/null
+++ b/src/i18n/it/components/parse.json
@@ -0,0 +1,9 @@
+{
+ "HTML": {
+ "expanded": {
+ "true": "Richiudi {{hint}}",
+ "false": "Espandi {{hint}}"
+ },
+ "defaultHint": "toot"
+ }
+}
\ No newline at end of file
diff --git a/src/i18n/it/components/relationship.json b/src/i18n/it/components/relationship.json
new file mode 100644
index 00000000..2b1cfeda
--- /dev/null
+++ b/src/i18n/it/components/relationship.json
@@ -0,0 +1,16 @@
+{
+ "follow": {
+ "function": "Segui utente"
+ },
+ "block": {
+ "function": "Blocca utente"
+ },
+ "button": {
+ "error": "Errore di caricamento",
+ "blocked_by": "L'utente ti ha bloccato",
+ "blocking": "Sblocca",
+ "following": "Smetti di seguire",
+ "requested": "Annulla richiesta di seguire",
+ "default": "Segui"
+ }
+}
\ No newline at end of file
diff --git a/src/i18n/it/components/timeline.json b/src/i18n/it/components/timeline.json
new file mode 100644
index 00000000..271209b5
--- /dev/null
+++ b/src/i18n/it/components/timeline.json
@@ -0,0 +1,234 @@
+{
+ "empty": {
+ "error": {
+ "message": "Errore di caricamento",
+ "button": "Riprova"
+ },
+ "success": {
+ "message": "Timeline vuota"
+ }
+ },
+ "end": {
+ "message": "Hai letto tutto. Vuoi una tazza di <0 />"
+ },
+ "lookback": {
+ "message": "Letto alle"
+ },
+ "refresh": {
+ "fetchPreviousPage": "Più recenti da qui",
+ "refetch": "Vai a recenti"
+ },
+ "shared": {
+ "actioned": {
+ "pinned": "Fissato in cima",
+ "favourite": "{{name}} ha apprezzato il tuo toot",
+ "status": "{{name}} ha appena pubblicato",
+ "follow": "{{name}} ti sta seguendo",
+ "follow_request": "{{name}} ha chiesto di seguirti",
+ "poll": "Un sondaggio in cui hai votato è terminato",
+ "reblog": {
+ "default": "{{name}} ha ricondiviso",
+ "notification": "{{name}} ha ricondiviso il tuo toot"
+ }
+ },
+ "actions": {
+ "reply": {
+ "accessibilityLabel": "Rispondi a questo toot"
+ },
+ "reblogged": {
+ "accessibilityLabel": "Ricondividi questo toot",
+ "function": "Ricondividi toot"
+ },
+ "favourited": {
+ "accessibilityLabel": "Apprezza questo toot",
+ "function": "Apprezza toot"
+ },
+ "bookmarked": {
+ "accessibilityLabel": "Aggiungi questo toot ai segnalibri",
+ "function": "Aggiungi toot ai segnalibri"
+ }
+ },
+ "actionsUsers": {
+ "reblogged_by": {
+ "accessibilityLabel": "{{count}} utenti hanno ricondiviso questo toot",
+ "accessibilityHint": "Premi per vedere gli utenti",
+ "text": "$t(screenTabs:shared.users.statuses.reblogged_by)"
+ },
+ "favourited_by": {
+ "accessibilityLabel": "{{count}} utenti hanno apprezzato questo toot",
+ "accessibilityHint": "Premi per vedere gli utenti",
+ "text": "$t(screenTabs:shared.users.statuses.favourited_by)"
+ },
+ "history": {
+ "accessibilityLabel": "Questo toot è stato modificato {{count}} volte",
+ "accessibilityHint": "Premi per vedere la cronologia di revisioni",
+ "text_one": "{{count}} modifica",
+ "text_other": "{{count}} modifiche"
+ }
+ },
+ "attachment": {
+ "sensitive": {
+ "button": "Mostra media sensibile"
+ },
+ "unsupported": {
+ "text": "Errore di caricamento",
+ "button": "Apri sul sito dell'istanza remota"
+ }
+ },
+ "avatar": {
+ "accessibilityLabel": "Foto profilo di {{name}}",
+ "accessibilityHint": "Premi per aprire il profilo di {{name}}"
+ },
+ "content": {
+ "expandHint": "Contenuto nascosto"
+ },
+ "filtered": "Filtrato",
+ "fullConversation": "Leggi la conversazione",
+ "translate": {
+ "default": "Traduci",
+ "succeed": "Traduzione da {{source}} fornita da {{provider}}",
+ "failed": "Traduzione fallita",
+ "source_not_supported": "La lingua del toot non è supportata",
+ "target_not_supported": "La lingua di destinazione non è supportata"
+ },
+ "header": {
+ "shared": {
+ "account": {
+ "name": {
+ "accessibilityHint": "Nome visualizzato dell'utente"
+ },
+ "account": {
+ "accessibilityHint": "Profilo dell'utente"
+ }
+ },
+ "application": "Pubblicato via {{application}}",
+ "edited": {
+ "accessibilityLabel": "Toot modificato"
+ },
+ "muted": {
+ "accessibilityLabel": "Toot mutato"
+ },
+ "visibility": {
+ "direct": {
+ "accessibilityLabel": "Questo toot è un messaggio diretto"
+ },
+ "private": {
+ "accessibilityLabel": "Questo toot è visibile solo ai seguaci"
+ }
+ }
+ },
+ "conversation": {
+ "withAccounts": "Con",
+ "delete": {
+ "function": "Cancella messaggio"
+ }
+ },
+ "actions": {
+ "accessibilityHint": "Azioni per questo toot, per l'utente che l'ha pubblicato o per il toot stesso",
+ "account": {
+ "heading": "Riguardo quest'utente",
+ "mute": {
+ "function": "Muta utente",
+ "button": "Muta @{{acct}}"
+ },
+ "block": {
+ "function": "Blocca utente",
+ "button": "Blocca @{{acct}}"
+ },
+ "reports": {
+ "function": "Segnala utente",
+ "button": "Segnala @{{acct}}"
+ }
+ },
+ "domain": {
+ "heading": "Riguardo questa istanza",
+ "block": {
+ "function": "Blocca istanza",
+ "button": "Blocca istanza {{domain}}"
+ },
+ "alert": {
+ "title": "Conferma blocco di {{domain}} ?",
+ "message": "Sarebbe meglio mutare o bloccare singoli utenti.\n\nSe blocchi un'istanza, tutti i suoi contenuti a te relativi, inclusi tutti i tuoi seguaci da questa, saranno rimossi.",
+ "buttons": {
+ "confirm": "Conferma blocco",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ }
+ },
+ "share": {
+ "status": {
+ "heading": "Condividi toot",
+ "button": "Condividi il link a questo toot"
+ },
+ "account": {
+ "heading": "Condividi utente",
+ "button": "Share il link a questo utente"
+ }
+ },
+ "status": {
+ "heading": "Riguardo questo toot",
+ "edit": {
+ "function": "Modifica toot",
+ "button": "Modifica questo toot"
+ },
+ "delete": {
+ "function": "Cancella toot",
+ "button": "Cancella toot",
+ "alert": {
+ "title": "Cancellare il toot?",
+ "message": "Vuoi davvero cancellare questo toot? Tutti gli apprezzamenti, le ricondivisioni, e le risposte verranno persi.",
+ "buttons": {
+ "confirm": "Conferma",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ }
+ },
+ "deleteEdit": {
+ "function": "Cancella toot",
+ "button": "Cancella e riscrivi toot",
+ "alert": {
+ "title": "Cancellare e riscrivere il toot?",
+ "message": "Vuoi davvero cancellare e riscrivere questo toot? Tutti gli apprezzamenti, le ricondivisioni, e le risposte verranno persi.",
+ "buttons": {
+ "confirm": "Conferma",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ }
+ },
+ "mute": {
+ "function": "Muta toot",
+ "button": {
+ "positive": "Muta questo toot e le sue risposte",
+ "negative": "Smuta questo toot e le sue risposte"
+ }
+ },
+ "pin": {
+ "function": "Fissa in cima",
+ "button": {
+ "positive": "Fissa questo toot in cima al profilo",
+ "negative": "Togli questo toot dalla cima del profilo"
+ }
+ }
+ }
+ }
+ },
+ "poll": {
+ "meta": {
+ "button": {
+ "vote": "Vota",
+ "refresh": "Ricarica"
+ },
+ "count": {
+ "voters_one": "{{count}} utente ha votato",
+ "voters_other": "{{count}} utenti hanno votato",
+ "votes_one": "{{count}} voto",
+ "votes_other": "{{count}} voti"
+ },
+ "expiration": {
+ "expired": "Voto scaduto",
+ "until": "Scade in <0 />"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/i18n/it/screens.json b/src/i18n/it/screens.json
new file mode 100644
index 00000000..a06decd7
--- /dev/null
+++ b/src/i18n/it/screens.json
@@ -0,0 +1,18 @@
+{
+ "screenshot": {
+ "title": "Tutela della privacy",
+ "message": "Per favore, non rivelare l'identità degli altri utenti (nome, foto profilo, ecc..). Grazie!",
+ "button": "Ho capito"
+ },
+ "localCorrupt": {
+ "message": "La sessione è scaduta, devi riaccedere"
+ },
+ "pushError": {
+ "message": "Errore servizio push",
+ "description": "Riabilita le notifiche push nelle impostazioni"
+ },
+ "shareError": {
+ "imageNotSupported": "Tipo immagine {{type}} non supportato",
+ "videoNotSupported": "Tipo video {{type}} non supportato"
+ }
+}
\ No newline at end of file
diff --git a/src/i18n/it/screens/actions.json b/src/i18n/it/screens/actions.json
new file mode 100644
index 00000000..36ee63af
--- /dev/null
+++ b/src/i18n/it/screens/actions.json
@@ -0,0 +1,19 @@
+{
+ "content": {
+ "button": {
+ "apply": "$t(common:buttons.apply)",
+ "cancel": "$t(common:buttons.cancel)"
+ },
+ "notificationsFilter": {
+ "heading": "Filtra notifiche per tipo",
+ "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": "Richieste di seguirti"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/i18n/it/screens/announcements.json b/src/i18n/it/screens/announcements.json
new file mode 100644
index 00000000..c41719f6
--- /dev/null
+++ b/src/i18n/it/screens/announcements.json
@@ -0,0 +1,10 @@
+{
+ "heading": "Annunci",
+ "content": {
+ "published": "Pubblicato <0 />",
+ "button": {
+ "read": "Già letto",
+ "unread": "Segna come letto"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/i18n/it/screens/compose.json b/src/i18n/it/screens/compose.json
new file mode 100644
index 00000000..4abf23cd
--- /dev/null
+++ b/src/i18n/it/screens/compose.json
@@ -0,0 +1,178 @@
+{
+ "heading": {
+ "left": {
+ "button": "Scarta",
+ "alert": {
+ "title": "Scartare il toot?",
+ "buttons": {
+ "save": "Salva come bozza",
+ "delete": "Scarta ed esci",
+ "cancel": "Annulla"
+ }
+ }
+ },
+ "right": {
+ "button": {
+ "default": "Toot",
+ "conversation": "Messaggio diretto",
+ "reply": "Toot di risposta",
+ "deleteEdit": "Toot",
+ "edit": "Toot",
+ "share": "Toot"
+ },
+ "alert": {
+ "default": {
+ "title": "Invio fallito",
+ "button": "Riprova"
+ },
+ "removeReply": {
+ "title": "Impossibile trovare il toot a cui si è risposto",
+ "description": "Il toot a cui si è risposto potrebbe essere stato cancellato. Vuoi rimuoverne il riferimento?",
+ "cancel": "$t(common:buttons.cancel)",
+ "confirm": "Rimuovi"
+ }
+ }
+ }
+ },
+ "content": {
+ "root": {
+ "header": {
+ "postingAs": "Pubblicando come @{{acct}}@{{domain}}",
+ "spoilerInput": {
+ "placeholder": "Avviso di spoiler"
+ },
+ "textInput": {
+ "placeholder": "A cosa stai pensando?",
+ "keyboardImage": {
+ "exceedMaximum": {
+ "title": "Hai raggiunto il numero massimo di allegati permessi",
+ "OK": "$t(common:buttons.OK)"
+ }
+ }
+ }
+ },
+ "footer": {
+ "attachments": {
+ "sensitive": "Segnala allegati come sensibili",
+ "remove": {
+ "accessibilityLabel": "Rimuovi allegato numero {{attachment}}"
+ },
+ "edit": {
+ "accessibilityLabel": "Modifica allegato numero {{attachment}}"
+ },
+ "upload": {
+ "accessibilityLabel": "Carica altri allegati"
+ }
+ },
+ "emojis": {
+ "accessibilityHint": "Premi per aggiungere delle emoji a questo toot"
+ },
+ "poll": {
+ "option": {
+ "placeholder": {
+ "accessibilityLabel": "Scelta di sondaggio {{index}}",
+ "single": "Risposta singola",
+ "multiple": "Risposta multipla"
+ }
+ },
+ "quantity": {
+ "reduce": {
+ "accessibilityLabel": "Riduci le scelte del sondaggio a {{amount}}",
+ "accessibilityHint": "Hai raggiunto il minimo di scelte possibili per il sondaggio ({{amount}})"
+ },
+ "increase": {
+ "accessibilityLabel": "Aumenta le scelte del sondaggio a {{amount}}",
+ "accessibilityHint": "Hai raggiunto il massimo di scelte possibili per il sondaggio ({{amount}})"
+ }
+ },
+ "multiple": {
+ "heading": "Tipo di risposta",
+ "options": {
+ "single": "Risposta singola",
+ "multiple": "Risposta multipla",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ },
+ "expiration": {
+ "heading": "Durata",
+ "options": {
+ "300": "5 minuti",
+ "1800": "30 minuti",
+ "3600": "1 ora",
+ "21600": "6 ore",
+ "86400": "1 giorno",
+ "259200": "3 giorni",
+ "604800": "7 giorni",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ }
+ }
+ },
+ "actions": {
+ "attachment": {
+ "accessibilityLabel": "Carica allegato",
+ "accessibilityHint": "Non potrai creare sondaggi se carichi degli allegati",
+ "failed": {
+ "alert": {
+ "title": "Caricamento fallito",
+ "button": "Riprova"
+ }
+ }
+ },
+ "poll": {
+ "accessibilityLabel": "Crea sondaggio",
+ "accessibilityHint": "Non potrai caricare allegati se crei un sondaggio"
+ },
+ "visibility": {
+ "accessibilityLabel": "La visibilità del toot è: {{visibility}}",
+ "title": "Visibilità toot",
+ "options": {
+ "public": "Pubblico",
+ "unlisted": "Non listato",
+ "private": "Solo seguaci",
+ "direct": "Messaggio diretto",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ },
+ "spoiler": {
+ "accessibilityLabel": "Spoiler"
+ },
+ "emoji": {
+ "accessibilityLabel": "Aggiungi emoji",
+ "accessibilityHint": "Apri il pannello di selezione delle emoji, scorri orizzontalmente per cambiare tra le pagine"
+ }
+ },
+ "drafts_one": "Bozze ({{count}})",
+ "drafts_other": "Bozze ({{count}})"
+ },
+ "editAttachment": {
+ "header": {
+ "title": "Modifica allegato",
+ "right": {
+ "accessibilityLabel": "Salva le modifiche all'allegato",
+ "failed": {
+ "title": "Modifica fallita",
+ "button": "Riprova"
+ }
+ }
+ },
+ "content": {
+ "altText": {
+ "heading": "Descrizione media per ipovedenti",
+ "placeholder": "Puoi aggiungere una descrizione (anche chiamata alt-text) ai tuoi media, così da renderli accessibili a molte più persone, incluse quelle con disabilità visive.\n\nUna buona descrizione è concisa ma presenta il contenuto del media in modo abbastanza accurato da farne capire il contesto."
+ },
+ "imageFocus": "Trascina il cerchio per modificare il punto focale della foto"
+ }
+ },
+ "draftsList": {
+ "header": {
+ "title": "Bozza"
+ },
+ "content": {
+ "accessibilityHint": "Bozza salvata, premi per modificarla",
+ "textEmpty": "Testo vuoto"
+ },
+ "checkAttachment": "Controllo degli allegati sul server..."
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/i18n/it/screens/imageViewer.json b/src/i18n/it/screens/imageViewer.json
new file mode 100644
index 00000000..1a640fec
--- /dev/null
+++ b/src/i18n/it/screens/imageViewer.json
@@ -0,0 +1,17 @@
+{
+ "content": {
+ "actions": {
+ "accessibilityLabel": "Altre azioni per questa immagine",
+ "accessibilityHint": "Puoi salvare o condividere questa immagine"
+ },
+ "options": {
+ "save": "Salva immagine",
+ "share": "Condividi immagine",
+ "cancel": "$t(common:buttons.cancel)"
+ },
+ "save": {
+ "succeed": "Immagine salvata",
+ "failed": "Salvataggio immagine fallito"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/i18n/it/screens/tabs.json b/src/i18n/it/screens/tabs.json
new file mode 100644
index 00000000..083067f6
--- /dev/null
+++ b/src/i18n/it/screens/tabs.json
@@ -0,0 +1,345 @@
+{
+ "tabs": {
+ "local": {
+ "name": "Home"
+ },
+ "public": {
+ "name": "",
+ "segments": {
+ "left": "Federazione",
+ "right": "Locale"
+ }
+ },
+ "notifications": {
+ "name": "Notifiche"
+ },
+ "me": {
+ "name": "Profilo"
+ }
+ },
+ "common": {
+ "search": {
+ "accessibilityLabel": "Cerca",
+ "accessibilityHint": "Cerca hashtags, utenti, o toot"
+ }
+ },
+ "notifications": {
+ "filter": {
+ "accessibilityLabel": "Filtri",
+ "accessibilityHint": "Filtra le notifiche mostrate per tipo"
+ }
+ },
+ "me": {
+ "stacks": {
+ "bookmarks": {
+ "name": "Segnalibri"
+ },
+ "conversations": {
+ "name": "Messaggi diretti"
+ },
+ "favourites": {
+ "name": "Apprezzati"
+ },
+ "fontSize": {
+ "name": "Grandezza del testo dei toot"
+ },
+ "lists": {
+ "name": "Liste"
+ },
+ "list": {
+ "name": "Lista: {{list}}"
+ },
+ "push": {
+ "name": "Notifiche push"
+ },
+ "profile": {
+ "name": "Modifica profilo"
+ },
+ "profileName": {
+ "name": "Modifica nome visualizzato"
+ },
+ "profileNote": {
+ "name": "Modifica descrizione"
+ },
+ "profileFields": {
+ "name": "Modifica metadati profilo"
+ },
+ "settings": {
+ "name": "Impostazioni app"
+ },
+ "webSettings": {
+ "name": "Altre impostazioni account"
+ },
+ "switch": {
+ "name": "Cambia account"
+ }
+ },
+ "fontSize": {
+ "showcase": "Toot di esempio",
+ "demo": "Questo toot è un esempio 😺️. Puoi scegliere diverse opzioni di grandezza del testo qui sotto.
Questa impostazione si applica solo al testo dei toot, non anche agli altri testi della app.
",
+ "availableSizes": "Dimensioni testo",
+ "sizes": {
+ "S": "S",
+ "M": "M - Predefinito",
+ "L": "L",
+ "XL": "XL",
+ "XXL": "XXL"
+ }
+ },
+ "profile": {
+ "cancellation": {
+ "title": "Modifiche non salvate",
+ "message": "Le tue modifiche non sono state salvate. Vuoi scartarle?",
+ "buttons": {
+ "cancel": "$t(common:buttons.cancel)",
+ "discard": "Scarta"
+ }
+ },
+ "feedback": {
+ "succeed": "{{type}} aggiornato",
+ "failed": "Aggiornamento di {{type}} fallito, per favore riprova."
+ },
+ "root": {
+ "name": {
+ "title": "Nome visualizzato"
+ },
+ "avatar": {
+ "title": "Foto profilo",
+ "description": "Sarà ridotta a 400x400 px"
+ },
+ "header": {
+ "title": "Immagine dell'intestazione",
+ "description": "Sarà ridotta a 1500x500 px"
+ },
+ "note": {
+ "title": "Biografia"
+ },
+ "fields": {
+ "title": "Metadati del profilo",
+ "total_one": "{{count}} campo",
+ "total_other": "{{count}} campi"
+ },
+ "visibility": {
+ "title": "Privacy dei post predefinita",
+ "options": {
+ "public": "Pubblico",
+ "unlisted": "Non listato",
+ "private": "Solo seguaci",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ },
+ "sensitive": {
+ "title": "Segna sempre i media come sensibili"
+ },
+ "lock": {
+ "title": "Blocca account",
+ "description": "Richiede che approvi i seguaci manualmente"
+ },
+ "bot": {
+ "title": "Questo account è un bot",
+ "description": "Questo account esegue operazioni automatiche e potrebbe non essere controllato da una persona"
+ }
+ },
+ "fields": {
+ "group": "Gruppo {{index}}",
+ "label": "Etichetta",
+ "content": "Contenuto"
+ }
+ },
+ "push": {
+ "notAvailable": "Il tuo dispositivo non supporta le notifiche push per tooot",
+ "enable": {
+ "direct": "Abilita notifiche push",
+ "settings": "Abilita nelle impostazioni"
+ },
+ "global": {
+ "heading": "Abilita per {{acct}}",
+ "description": "I messaggi dovranno attraversare i server di tooot"
+ },
+ "decode": {
+ "heading": "Mostra dettagli del messaggio",
+ "description": "I messaggi, che attraversano i server di tooot, sono cifrati per impostazione predefinita (ma puoi scegliere di disabilitare la cifratura). Il programma server è open source e abbiamo una politica no-log."
+ },
+ "default": {
+ "heading": "Predefinito"
+ },
+ "follow": {
+ "heading": "Nuovi seguaci"
+ },
+ "favourite": {
+ "heading": "Apprezzamenti"
+ },
+ "reblog": {
+ "heading": "Ricondivisioni"
+ },
+ "mention": {
+ "heading": "Menzioni"
+ },
+ "poll": {
+ "heading": "Novità sui sondaggi"
+ },
+ "howitworks": "Scopri come funziona il traversamento dei messaggi"
+ },
+ "root": {
+ "announcements": {
+ "content": {
+ "unread": "{{amount}} da leggere",
+ "read": "Tutto già letto",
+ "empty": "Vuoto"
+ }
+ },
+ "push": {
+ "content": {
+ "enabled": "Abilitato",
+ "disabled": "Disabilitato"
+ }
+ },
+ "update": {
+ "title": "Aggiorna all'ultima versione"
+ },
+ "logout": {
+ "button": "Esci dall'account",
+ "alert": {
+ "title": "Uscire dall'account?",
+ "message": "Se esci dal tuo account, dovrai rifare l'accesso",
+ "buttons": {
+ "logout": "Esci",
+ "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": "Lingua",
+ "options": {
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ },
+ "theme": {
+ "heading": "Tema",
+ "options": {
+ "auto": "Segui impostazioni di sistema",
+ "light": "Tema chiaro",
+ "dark": "Tema scuro",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ },
+ "darkTheme": {
+ "heading": "Tema scuro",
+ "options": {
+ "lighter": "Poco scuro",
+ "darker": "Molto scuro",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ },
+ "browser": {
+ "heading": "Apertura link",
+ "options": {
+ "internal": "Nella app",
+ "external": "Nel browser di sistema",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ },
+ "staticEmoji": {
+ "heading": "Usa emoji statiche",
+ "description": "Se la app crasha spesso quando all'apertura della lista di emoji, puoi provare ad attivare le emoji statiche."
+ },
+ "feedback": {
+ "heading": "Richiedi funzionalità"
+ },
+ "support": {
+ "heading": "Supporta tooot"
+ },
+ "review": {
+ "heading": "Recensisci tooot"
+ },
+ "contact": {
+ "heading": "Contatta tooot"
+ },
+ "analytics": {
+ "heading": "Aiutaci a migliorare",
+ "description": "Vengono raccolti dati di utilizzo anonimi"
+ },
+ "version": "Versione di tooot: v{{version}}",
+ "instanceVersion": "Versione dell'istanza Mastodon: v{{version}}"
+ },
+ "switch": {
+ "existing": "Scegli un account già inserito",
+ "new": "Accedi ad un'istanza"
+ }
+ },
+ "shared": {
+ "account": {
+ "actions": {
+ "accessibilityLabel": "Azioni per l'utente {{user}}",
+ "accessibilityHint": "Puoi mutare, bloccare, segnalare o condividere l'utente"
+ },
+ "followed_by": " ti segue",
+ "moved": "Profilo trasferito",
+ "created_at": "Account creato il: {{date}}",
+ "summary": {
+ "statuses_count": "{{count}} toot",
+ "following_count": "$t(shared.users.accounts.following)",
+ "followers_count": "$t(shared.users.accounts.followers)"
+ },
+ "toots": {
+ "default": "Toot",
+ "all": "Toot e risposte"
+ }
+ },
+ "attachments": {
+ "name": "Media di <0 /><1>\"1>"
+ },
+ "search": {
+ "header": {
+ "prefix": "Cerca",
+ "placeholder": "qualcosa..."
+ },
+ "empty": {
+ "general": "Inserisci una parola chiave per cercare $t(screenTabs:shared.search.sections.accounts),$t(screenTabs:shared.search.sections.hashtags), o $t(screenTabs:shared.search.sections.statuses)",
+ "advanced": {
+ "header": "Ricerca avanzata",
+ "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": "Utente",
+ "hashtags": "Hashtag",
+ "statuses": "Toot"
+ },
+ "notFound": "Impossibile trovare {{searchTerm}} come {{type}}"
+ },
+ "toot": {
+ "name": "Discussioni"
+ },
+ "users": {
+ "accounts": {
+ "following": "{{count}} seguiti",
+ "followers": "{{count}} seguaci"
+ },
+ "statuses": {
+ "reblogged_by": "{{count}} ricondivisioni",
+ "favourited_by": "{{count}} apprezzamenti"
+ }
+ },
+ "history": {
+ "name": "Cronologia delle modifiche"
+ }
+ }
+}
\ No newline at end of file
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/timeline.json b/src/i18n/ko/components/timeline.json
index 5106e5ff..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,9 +167,21 @@
},
"status": {
"heading": "툿 정보",
+ "edit": {
+ "function": "",
+ "button": ""
+ },
"delete": {
"function": "툿 삭제",
- "button": "이 툿 삭제"
+ "button": "이 툿 삭제",
+ "alert": {
+ "title": "툿을 정말 삭제할까요?",
+ "message": "",
+ "buttons": {
+ "confirm": "삭제 확인",
+ "cancel": "$t(common:buttons.cancel)"
+ }
+ }
},
"deleteEdit": {
"function": "툿 삭제",
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 50acee3a..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": {
@@ -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 f1b89e16..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": "계정 전환"
}
@@ -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..37c27a79 100644
--- a/src/i18n/locales.ts
+++ b/src/i18n/locales.ts
@@ -1,5 +1,7 @@
const LOCALES = {
+ de: 'Deutsch',
en: 'English',
+ it: 'Italiano',
ko: '한국어',
vi: 'Tiếng Việt',
'zh-Hans': '简体中文'
diff --git a/src/i18n/vi/screens/tabs.json b/src/i18n/vi/screens/tabs.json
index 90427159..49e52146 100644
--- a/src/i18n/vi/screens/tabs.json
+++ b/src/i18n/vi/screens/tabs.json
@@ -251,6 +251,10 @@
"cancel": "$t(common:buttons.cancel)"
}
},
+ "staticEmoji": {
+ "heading": "Dùng emoji có sẵn",
+ "description": "Nếu app thường xuyên bị treo khi xem danh sách emoji, bạn hãy dùng emoji mặc định."
+ },
"feedback": {
"heading": "Đề xuất tính năng"
},
diff --git a/src/i18n/zh-Hans/screens/tabs.json b/src/i18n/zh-Hans/screens/tabs.json
index 47ba7c46..0b52b33c 100644
--- a/src/i18n/zh-Hans/screens/tabs.json
+++ b/src/i18n/zh-Hans/screens/tabs.json
@@ -251,6 +251,10 @@
"cancel": "$t(common:buttons.cancel)"
}
},
+ "staticEmoji": {
+ "heading": "使用静态表情",
+ "description": "如果您在查看表情列表时经常遇到应用闪退,您可以尝试使用静态表情。"
+ },
"feedback": {
"heading": "功能建议"
},
diff --git a/src/i18n/zh-Hant/common.json b/src/i18n/zh-Hant/common.json
index 0ccecbde..875ac770 100644
--- a/src/i18n/zh-Hant/common.json
+++ b/src/i18n/zh-Hant/common.json
@@ -1,5 +1,6 @@
{
"buttons": {
+ "OK": "OK",
"apply": "套用",
"cancel": "取消"
},
diff --git a/src/i18n/zh-Hant/components/timeline.json b/src/i18n/zh-Hant/components/timeline.json
new file mode 100644
index 00000000..78c85fbc
--- /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": "$t(screenTabs:shared.users.statuses.reblogged_by)"
+ },
+ "favourited_by": {
+ "accessibilityLabel": "{{count}} 個使用者喜歡此嘟文",
+ "accessibilityHint": "點擊可以取得使用者資訊",
+ "text": "$t(screenTabs:shared.users.statuses.favourited_by)"
+ },
+ "history": {
+ "accessibilityLabel": "嘟文被編輯了 {{count}} 次",
+ "accessibilityHint": "點擊查看編輯紀錄",
+ "text_one": "{{count}} 次編輯",
+ "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
index 7681c218..c8645c3e 100644
--- a/src/i18n/zh-Hant/screens.json
+++ b/src/i18n/zh-Hant/screens.json
@@ -10,5 +10,9 @@
"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/yarn.lock b/yarn.lock
index dc98f89d..f5262eec 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1309,6 +1309,27 @@
xcode "^3.0.1"
xml2js "0.4.23"
+"@expo/config-plugins@4.1.5", "@expo/config-plugins@^4.0.2":
+ version "4.1.5"
+ resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-4.1.5.tgz#9d357d2cda9c095e511b51583ede8a3b76174068"
+ integrity sha512-RVvU40RtZt12HavuDAe+LDIq9lHj7sheOfMEHdmpJ/uTA8pgvkbc56XF6JHQD+yRr6+uhhb+JnAasGq49dsQbw==
+ dependencies:
+ "@expo/config-types" "^45.0.0"
+ "@expo/json-file" "8.2.36"
+ "@expo/plist" "0.0.18"
+ "@expo/sdk-runtime-versions" "^1.0.0"
+ "@react-native/normalize-color" "^2.0.0"
+ chalk "^4.1.2"
+ debug "^4.3.1"
+ find-up "~5.0.0"
+ getenv "^1.0.0"
+ glob "7.1.6"
+ resolve-from "^5.0.0"
+ semver "^7.3.5"
+ slash "^3.0.0"
+ xcode "^3.0.1"
+ xml2js "0.4.23"
+
"@expo/config-plugins@^2.0.2":
version "2.0.4"
resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-2.0.4.tgz#955fd70a2aeefbe99ec71cecb1d7ea7b626dc79e"
@@ -1381,6 +1402,23 @@
slugify "^1.3.4"
sucrase "^3.20.0"
+"@expo/config@^6.0.6":
+ version "6.0.24"
+ resolved "https://registry.yarnpkg.com/@expo/config/-/config-6.0.24.tgz#3602da8fdfa817e290a52fb328fc8ed9d6bc61e7"
+ integrity sha512-OcACI1md1Yo5TQmUxxueJ/RaTlR2Mgl6KswTFOYCL1XJERF/jjAx95zhWXH+JQGdlM0yB0vqM6vB6GbUFRvLxA==
+ dependencies:
+ "@babel/code-frame" "~7.10.4"
+ "@expo/config-plugins" "4.1.5"
+ "@expo/config-types" "^45.0.0"
+ "@expo/json-file" "8.2.36"
+ getenv "^1.0.0"
+ glob "7.1.6"
+ require-from-string "^2.0.2"
+ resolve-from "^5.0.0"
+ semver "7.3.2"
+ slugify "^1.3.4"
+ sucrase "^3.20.0"
+
"@expo/configure-splash-screen@^0.6.0":
version "0.6.0"
resolved "https://registry.yarnpkg.com/@expo/configure-splash-screen/-/configure-splash-screen-0.6.0.tgz#07d97ee512fd859fcc09506ba3762fd6263ebc39"
@@ -1433,7 +1471,7 @@
tmp "^0.0.33"
tslib "^1.10.0"
-"@expo/image-utils@0.3.20", "@expo/image-utils@^0.3.18":
+"@expo/image-utils@0.3.20", "@expo/image-utils@^0.3.16":
version "0.3.20"
resolved "https://registry.yarnpkg.com/@expo/image-utils/-/image-utils-0.3.20.tgz#b8777a2ca18e331f084e62ee8e0f047a6fc52c16"
integrity sha512-NgF/80XENyCS+amwC0P6uk1fauEtUq7gijD19jvl2xknJaADq8M2dMCRHwWMVOXosr2v46f3Z++G/NjmyOVS7A==
@@ -4102,6 +4140,11 @@ expand-brackets@^2.1.4:
snapdragon "^0.8.1"
to-regex "^3.0.1"
+expo-application@~4.0.0:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/expo-application/-/expo-application-4.0.2.tgz#860dbd12132a56de7cf75fe7b5146b6cd97ed30e"
+ integrity sha512-ngTaFplTkWn0X45gMC+VNXGyJfGxX4wOwKmtr17rNMVWOQUhhLlyMkTj9bAamzsuwZh35l3S/eD/N1aMWWUwMw==
+
expo-application@~4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/expo-application/-/expo-application-4.1.0.tgz#e0214ff7cf73db5a5e97e609ffbab3cc98288030"
@@ -4145,6 +4188,14 @@ expo-constants@^13.1.1, expo-constants@~13.1.0, expo-constants@~13.1.1:
"@expo/config" "^6.0.14"
uuid "^3.3.2"
+expo-constants@~13.0.0:
+ version "13.0.2"
+ resolved "https://registry.yarnpkg.com/expo-constants/-/expo-constants-13.0.2.tgz#b489ecd575cc82a9a0b3dfbf2385d45a44300eb1"
+ integrity sha512-vGs/kI65vplPFvG8z4W1ariGEtVHHp9Avl28G0zJprt2v/q1E/BnXjwvFSBPc1GB+Zb/7crWSHWRwjaFULBjsg==
+ dependencies:
+ "@expo/config" "^6.0.6"
+ uuid "^3.3.2"
+
expo-crypto@10.2.0, expo-crypto@~10.2.0:
version "10.2.0"
resolved "https://registry.yarnpkg.com/expo-crypto/-/expo-crypto-10.2.0.tgz#86d16e7e93b62af37d9ded3d344744e94d6ab4e4"
@@ -4286,20 +4337,21 @@ expo-modules-core@0.9.2:
compare-versions "^3.4.0"
invariant "^2.2.4"
-expo-notifications@0.15.2:
- version "0.15.2"
- resolved "https://registry.yarnpkg.com/expo-notifications/-/expo-notifications-0.15.2.tgz#8c9d3b43624e7a08bfc12ccec714717bfeb30c10"
- integrity sha512-ZlOzQ8Lp1MgkwmiBsgg95nQHHbTOg8LHwmB816qxNKWeFvlyr/wQSgTZJNklL1uuv/+jC/YyKWoANfodahcAbQ==
+expo-notifications@0.14.1:
+ version "0.14.1"
+ resolved "https://registry.yarnpkg.com/expo-notifications/-/expo-notifications-0.14.1.tgz#fe2b122ed79488e754b7f993f9b802eaf60b51a3"
+ integrity sha512-0L+DFMQmVfMhonza8MFP4aI/6ADKEx/Mn5NzQlBZpo6PinpsPFpQP7of+pihx2onCkmeN8OIsLFS5O6QqzH3rA==
dependencies:
- "@expo/config-plugins" "^4.0.14"
- "@expo/image-utils" "^0.3.18"
+ "@expo/config-plugins" "^4.0.2"
+ "@expo/image-utils" "^0.3.16"
"@ide/backoff" "^1.0.0"
abort-controller "^3.0.0"
assert "^2.0.0"
badgin "^1.1.5"
- expo-application "~4.1.0"
- expo-constants "~13.1.0"
+ expo-application "~4.0.0"
+ expo-constants "~13.0.0"
fs-extra "^9.1.0"
+ unimodules-task-manager-interface "~7.1.0"
uuid "^3.4.0"
expo-random@12.2.0:
@@ -8586,6 +8638,11 @@ unicode-property-aliases-ecmascript@^2.0.0:
resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8"
integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==
+unimodules-task-manager-interface@~7.1.0:
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/unimodules-task-manager-interface/-/unimodules-task-manager-interface-7.1.1.tgz#1d48585012018971a0f0b62bc5ac53508a7addb4"
+ integrity sha512-vvtxJO3O6fJXvSc9qvgB2FS9xJk2nWG4NOvwCMmTmfblmvzGPFcTheOKzV7Z1dvjlqTZZ+TDqd5XOGa+0+NXVA==
+
union-value@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847"