From 0c68db6f823fe8f4e668b909718a1b7390ff4d6c Mon Sep 17 00:00:00 2001 From: Ed L Date: Sun, 24 Jan 2021 14:56:53 +0000 Subject: [PATCH 01/11] make the readme a bit less messy --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 1fe4a522..ee6ef309 100755 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -**THERE ARE CURRENTLY NO OFFICIAL GOOGLE PLAY RELEASES. PLEASE REPORT ANY OCCURRENCES TO US.** +## THERE ARE CURRENTLY NO OFFICIAL GOOGLE PLAY RELEASES. PLEASE REPORT ANY OCCURRENCES TO US. Barinsta logo @@ -12,7 +12,7 @@ [![All Contributors](https://img.shields.io/badge/all_contributors-32-orange.svg)](#contributors) -We're previously known as InstaGrabber. +Instagram client; previously known as InstaGrabber. For documentation, visit [Barinsta.AustinHuang.me](https://barinsta.austinhuang.me). @@ -25,6 +25,8 @@ For documentation, visit [Barinsta.AustinHuang.me](https://barinsta.austinhuang. Version status: ![F-Droid](https://img.shields.io/f-droid/v/me.austinhuang.instagrabber.svg) vs. ![GitHub](https://img.shields.io/github/release/austinhuang0131/barinsta.svg?logo=github) +## Screenshots + Profile Post Comments @@ -103,7 +105,7 @@ Prominent contributors are listed here in the [all-contributors](https://allcont ## License -This app's predecessor, InstaGrabber, is originally made by [@AwaisKing](https://github.com/AwaisKing) on [GitLab](https://gitlab.com/AwaisKing/instagrabber). +This app's predecessor, InstaGrabber, was originally made by [@AwaisKing](https://github.com/AwaisKing) on [GitLab](https://gitlab.com/AwaisKing/instagrabber). Barinsta Copyright (C) 2020-2021 Austin Huang From 1c8f18a75d1cf3a9139107205b13b39c65d5a5e3 Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Tue, 2 Feb 2021 11:12:10 -0500 Subject: [PATCH 02/11] Update questions.md --- .github/ISSUE_TEMPLATE/questions.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/questions.md b/.github/ISSUE_TEMPLATE/questions.md index aff97d3e..c5a9012a 100644 --- a/.github/ISSUE_TEMPLATE/questions.md +++ b/.github/ISSUE_TEMPLATE/questions.md @@ -1,19 +1,16 @@ --- name: General questions & feedback -about: These should be submitted to either one of our chatrooms, or r/barinsta on reddit. +about: These should be submitted to either one of our chatrooms, the discussions, or r/barinsta on reddit. title: "[Q]" labels: question assignees: '' --- - +STOP!!! STOP!!! STOP!!! From 0e9492e08003b2a42ad66db4ba21833f0d6e8c7b Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Fri, 12 Feb 2021 22:41:46 -0500 Subject: [PATCH 03/11] New Crowdin updates (#557) * New translations arrays.xml (Polish) * New translations strings.xml (Polish) * New translations strings.xml (Portuguese, Brazilian) * New translations strings.xml (Macedonian) * New translations arrays.xml (Macedonian) * New translations arrays.xml (Persian) * New translations strings.xml (Persian) * New translations strings.xml (Macedonian) * New translations strings.xml (Macedonian) * New translations strings.xml (Macedonian) * New translations arrays.xml (Basque) * New translations strings.xml (Basque) * New translations strings.xml (Basque) * New translations strings.xml (German) * New translations strings.xml (German) * New translations arrays.xml (German) * New translations strings.xml (Macedonian) * New translations strings.xml (Czech) * New translations strings.xml (Kannada) * New translations strings.xml (Hindi) * New translations strings.xml (Indonesian) * New translations strings.xml (Vietnamese) * New translations strings.xml (Chinese Traditional) * New translations strings.xml (Chinese Simplified) * New translations strings.xml (Turkish) * New translations strings.xml (Slovak) * New translations strings.xml (Italian) * New translations strings.xml (Spanish) * New translations strings.xml (Polish) * New translations strings.xml (French) * New translations strings.xml (German) * New translations strings.xml (Basque) * New translations strings.xml (Japanese) * New translations strings.xml (Dutch) * New translations strings.xml (Russian) * New translations strings.xml (Catalan) * New translations strings.xml (Persian) * New translations strings.xml (Portuguese, Brazilian) * New translations strings.xml (Odia) * Update source file strings.xml * New translations strings.xml (Chinese Simplified) * New translations strings.xml (Macedonian) * New translations strings.xml (French) * New translations strings.xml (Spanish) * New translations strings.xml (German) * New translations strings.xml (Portuguese, Brazilian) * New translations strings.xml (Czech) * New translations arrays.xml (Czech) * New translations strings.xml (Czech) * New translations strings.xml (Czech) * New translations strings.xml (Italian) * New translations arrays.xml (Italian) * New translations strings.xml (Italian) * New translations strings.xml (Russian) * New translations strings.xml (Catalan) * New translations strings.xml (Turkish) * New translations strings.xml (Turkish) * New translations arrays.xml (Turkish) * New translations strings.xml (Japanese) * New translations arrays.xml (Basque) * New translations arrays.xml (Basque) * New translations strings.xml (Basque) * New translations strings.xml (Basque) * New translations strings.xml (Basque) * New translations strings.xml (Basque) * New translations strings.xml (Polish) * New translations arrays.xml (Basque) * New translations strings.xml (Basque) * New translations arrays.xml (Basque) * New translations strings.xml (Basque) * New translations strings.xml (Basque) * New translations strings.xml (Basque) * New translations strings.xml (Japanese) * New translations strings.xml (Japanese) * New translations strings.xml (Macedonian) * New translations strings.xml (Slovak) * New translations strings.xml (Persian) * New translations arrays.xml (Persian) * New translations strings.xml (Persian) * New translations arrays.xml (Greek) * New translations strings.xml (Greek) * New translations arrays.xml (Greek) * New translations strings.xml (Greek) * New translations strings.xml (Greek) * New translations strings.xml (Greek) * New translations strings.xml (Hindi) * New translations strings.xml (Hindi) * New translations arrays.xml (Hindi) * New translations strings.xml (Hindi) * New translations strings.xml (Indonesian) * New translations strings.xml (Spanish) --- app/src/main/res/values-ca/strings.xml | 1 + app/src/main/res/values-cs/arrays.xml | 6 +- app/src/main/res/values-cs/strings.xml | 385 +++++++++++---------- app/src/main/res/values-de/arrays.xml | 2 +- app/src/main/res/values-de/strings.xml | 29 +- app/src/main/res/values-el/arrays.xml | 70 ++++ app/src/main/res/values-el/strings.xml | 343 ++++++++++++++++++ app/src/main/res/values-es/strings.xml | 5 +- app/src/main/res/values-eu/arrays.xml | 70 ++++ app/src/main/res/values-eu/strings.xml | 343 ++++++++++++++++++ app/src/main/res/values-fa/arrays.xml | 8 +- app/src/main/res/values-fa/strings.xml | 19 +- app/src/main/res/values-fr/strings.xml | 1 + app/src/main/res/values-hi/arrays.xml | 2 +- app/src/main/res/values-hi/strings.xml | 107 +++--- app/src/main/res/values-in/strings.xml | 5 +- app/src/main/res/values-it/arrays.xml | 6 +- app/src/main/res/values-it/strings.xml | 23 +- app/src/main/res/values-ja/strings.xml | 7 +- app/src/main/res/values-kn/strings.xml | 1 + app/src/main/res/values-mk/arrays.xml | 4 +- app/src/main/res/values-mk/strings.xml | 93 ++--- app/src/main/res/values-nl/strings.xml | 1 + app/src/main/res/values-or/strings.xml | 1 + app/src/main/res/values-pl/arrays.xml | 6 +- app/src/main/res/values-pl/strings.xml | 19 +- app/src/main/res/values-pt/strings.xml | 3 +- app/src/main/res/values-ru/strings.xml | 1 + app/src/main/res/values-sk/strings.xml | 1 + app/src/main/res/values-tr/arrays.xml | 6 +- app/src/main/res/values-tr/strings.xml | 13 +- app/src/main/res/values-vi/strings.xml | 1 + app/src/main/res/values-zh-rCN/strings.xml | 1 + app/src/main/res/values-zh-rTW/strings.xml | 1 + 34 files changed, 1216 insertions(+), 368 deletions(-) create mode 100644 app/src/main/res/values-el/arrays.xml create mode 100644 app/src/main/res/values-el/strings.xml create mode 100644 app/src/main/res/values-eu/arrays.xml create mode 100644 app/src/main/res/values-eu/strings.xml diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 6b891753..1da11b7a 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -54,6 +54,7 @@ %s Seguint Reproduir vídeos automàticament Silenciar sempre els vídeos + Mostrar sempre els subtítols Seleccionar el que s\'ha de descarregar Corrent Àlbum complet diff --git a/app/src/main/res/values-cs/arrays.xml b/app/src/main/res/values-cs/arrays.xml index ac397448..7b83c6cb 100644 --- a/app/src/main/res/values-cs/arrays.xml +++ b/app/src/main/res/values-cs/arrays.xml @@ -30,15 +30,15 @@ Světlý - Instagram default (Unread then read) + Výchozí chování Instagramu (nepřečteno pak přečteno) Od nejnovějších po nejstarší Od nejstarších po nejnovější Žádný \@ - at - on + v + ze dne \| - diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index e9413f87..bb4cba31 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -23,7 +23,7 @@ Oblíbené Objevit Komentáře - Activity + Aktivita Zvýraznit: %s Zkontrolovat aktualizace při spuštění Stáhnout příspěvky do složek s uživatelským jménem @@ -31,16 +31,16 @@ Autor příběhu bude vědět, že jsi si ho zobrazili Označovat přímou zprávu po zobrazení jako zobrazenou Ostatní členové uvidí, že jste si ji ji zobrazili - Enable activity notifications - Feed stories sort - Error loading profile!\nTry logging in and search again. - Error creating Download folder(s). + Povolit oznámení o aktivitě + Řazení příběhů feedu + Chyba při načítání profilu!\nZkuste se znovu přihlásit a vyhledat znovu. + Chyba při vytváření složky(ek) stahování. Uložit do vlastní složky Vybrat adresář Motiv - Only affects logged-in users: - Only affects anonymous users: - Use Instadp for high definition profile pictures + Týká se pouze přihlášených uživatelů: + Týká se pouze anonymních uživatelů: + Použít Instadp pro profilové obrázky s vysokým rozlišením Importovat/exportovat Jazyk @@ -55,12 +55,13 @@ %s sledujících %s sledujících - %s Following + %s sleduje Videa spouštět automaticky Vždy ztlumit videa + Vždy zobrazovat titulek příspěvku Vyberte, co stáhnout - Current - Whole Album + Současné + Celé album Zobrazit příběhy Žádné další příběhy! Buďte trpěliví! @@ -71,65 +72,65 @@ Hlasování úspěšné! Už jste hlasoval! Odpovědět - Answer… - Answer successful! + Odpovědět… + Odpověď byla úspěšná! - %d response averaging %s - %d responses averaging %s - %d responses averaging %s - %d responses averaging %s + %d odpověď, průměrně %s + %d odpovědí, průměrně %s + %d odpovědí, průměrně %s + %d odpovědí, průměrně %s - Your answer: %s - Reply to story - Reply… + Vaše odpověď: %s + Odpovědět na příběh + Odpovědět… Kvíz - Slider - You have already answered! + Posuvník + Už jste odpověděli! Zmínky Tento účet je soukromý - You won\'t be able to access posts after unfollowing! Are you sure? - You can log in via More -> Account on the bottom-right corner or you can view public accounts without login! - You can swipe left/right for explore/feed, or search something below! + Po zrušení sledování nebudete mít přístup k příspěvkům! Jste si jisti? + Můžete se přihlásit přes Více -> Účet v pravém dolním rohu nebo můžete zobrazit veřejné účty bez přihlášení! + Můžete posunout vlevo/vpravo pro objevit/feed nebo něco hledat níže! Tento účet nezveřejnil žádné příspěvky - No Such Posts! - Current version: v%s - read more… + Žádné takové příspěvky! + Aktuální verze: v%s + číst více… Přihlásit se Odhlásit se - Browse Instagram anonymously + Procházet Instagram anonymně Odstranit všechny účty Tato akce odstraní všechny přidané účty z aplikace!\nChcete-li odstranit jen jeden účet, dlouze ho podržte v přepínači účtů.\nChcete stále pokračovat? - Date format - Liked - Saved - Tagged - Message + Formát data + Oblíbené + Uložené + Označeno + Zpráva To se mi líbí Už se mi to nelíbí - Bookmark - Unbookmark + Přidat do záložek + Zrušit záložku Sledovat - Unfollow - Favorite - Unfavorite + Přestat sledovat + Přidat do oblíbených + Odebrat z oblíbených Zablokovat Odblokovat Omezit Zrušit omezení - Copy bio - Translate bio - Mutual - Following - Follower + Kopírovat bio + Přeložit bio + vzájemní + Sleduje + Sledující Mapa Exportovat Importovat - Export Logins + Exportovat přihlášení Účty Nastavení Oblíbené Importovat nastavení - Import Logins + Importovat přihlášení Importovat účty Importovat oblíbené Úspěšně importováno! @@ -139,9 +140,9 @@ Heslo nebylo vyplněno! Načíst znovu Získat cookies - Desktop Mode - Use custom format - Separator + Režim stolního počítače + Použít vlastní formát + Oddělovač Formát času Formát datumu Náhled @@ -152,110 +153,110 @@ Zobrazit příběh Zobrazit profilovou fotku Vy - Shared a link - Shared a media - Shared a timed message - Replied to a story - Reacted on a story - Mentioned in a story + Sdílel(a) odkaz + Sdílel(a) média + Sdílel(a) časovanou zprávu + Odpověděl(a) na příběh + Reagoval(a) na příběh + Zmíněn v příběhu Nepodporovaný typ zprávy Otevřít odkaz Zkopírovat text Stáhnout přílohu - Like message - Unlike message - Unsend message - View author profile - Post shared from %s - Unknown media type - Media expired! - Delivered + Zpráva se mi líbí + Zpráva se mi nelíbí + Zrušit odeslání zprávy + Zobrazit profil autora + Příspěvek sdílený od %s + Neznámý typ médií + Média vypršela! + Doručeno Odesláno Otevřeno Znovu přehráno Odesílám… Blokován - Suggested - Screenshotted - Cannot deliver - Great success! + Navrhované + Udělán snímek obrazovky + Nelze doručit + Skvělý úspěch! Opustit Chcete opustit tento chat? Vyhodit - Left users - Download directly - Downloads posts directly to the phone! - Fetching post(s) - Please grant permissions and try downloading again! - Download started - Download completed - Downloading post… - Downloading media - Downloading profile picture - File downloaded in Downloads folder! - Unknown error occurred!!! - Error creating folder! - Error downloading file - You can only download 100 posts at a time. Don\'t be too greedy! - Copy username - Copy comment - View comment likers - Reply to comment - Like comment - Unlike comment + Uživatelé, kteří skupinu opustili + Stáhnout přímo + Stahuje příspěvky přímo do telefonu! + Načítání příspěvků + Prosím, udělte oprávnění a zkuste znovu stáhnout! + Stahování bylo zahájeno + Stahování bylo dokončeno + Stahování příspěvku… + Stahuji média + Stahování profilového obrázku + Soubor stažen ve složce Stažení! + Vyskytla se neznámá chyba! + Chyba při vytváření složky! + Chyba při stahování souboru + Můžete stahovat pouze 100 příspěvků najednou. Nebuďte příliš chamtiví! + Kopírovat uživatelské jméno + Kopírovat komentář + Zobrazit, komu se komentář líbí + Odpovědět na komentář + Označit komentář lajkem + Odebrat lajk z komentáře Přeložit komentář Odstranit komentář - No empty comments! - Do you want to search the username? - Do you want to search the hashtag? - Followers - Following - Comparing followers & following - Both following each other - not following %s - %s is not following + Žádné prázdné komentáře! + Chcete vyhledat uživatelské jméno? + Chcete vyhledat hashtag? + Sledující + Sleduje + Porovnávaní sledovaných & sledujících + Oba(ě) se navzájem sledují + nesleduje %s + %s nesleduje Chyba při načítání souborů cookies Napsat nový komentář… Napsat novou zprávu… - Liked your post - Commented on your post: - Started following you - Mentioned you: - Tagged you in a post - Requested following you - Approve request - Reject request - Share this public post to… - This is a private post! Share to those who can view them! - This category is somehow empty… - An update is available! (%s) - Reminder: If you downloaded from F-Droid, you must update from it! Same applies for GitHub. - Thank you for updating Barinsta! + Líbí se mu Váš příspěvek + Okomentoval Váš příspěvek: + Vás začal sledovat + Zmínil vás: + vás označil(a) v příspěvku + Požádal(a) o sledování + Schválit žádost + Zamítnout žádost + Sdílejte tento veřejný příspěvek na… + Toto je soukromý příspěvek! Sdílejte jej s těmi, kdo jej může vidět! + Tato kategorie je nějak prázdná… + Je k dispozici aktualizace! (%s) + Připomínka: Pokud jste aplikaci stáhli z F-Droidu, musíte ji z něj i aktualizovat! To stejné platí pro GitHub. + Děkujeme, že jste aktualizovali Barinstu! Aplikace spadla Oops.. aplikace se zhroutila, ale nebojte se, můžete poslat chybové hlášení vývojáři, abyste mu pomohli vyřešit tuto chybu. (: - Activity - Story archive - Suggested users - Select Picture - Uploading… - You have: - %d follows - %d comments - %d comment likes - %d usertags - %d likes - You logged out before clicking this notification?! + Aktivita + Archiv příběhů + Navrhovaní uživatelé + Vybrat obrázek + Nahrávání… + Máte: + %d sleduje + %d komentářů + %d lajků komentáře + %d uživatelských štítků + %d se líbí + Odhlásili jste se před kliknutím na toto oznámení? Feed - Profile - More + Profil + Více DM - %d selected - Successfully logged out! + %d vybráno + Odhlášení proběhlo úspěšně! Informace - Mark as seen - Do not show again until next update + Označit jako přečtené + Do další aktualizace znovu nezobrazovat Verze - Start screen + Úvodní obrazovka Obecné Motiv Stažené @@ -263,60 +264,60 @@ Účet Nejde se vám přihlásit? Prostě přidejte účet znovu. Přidat účet - License (English only) - Visit our website - Get support, discuss, meet others, and have fun! - See our source code on GitHub - Audit, star, report bugs, contribute, and have fun (again)! - Send feedback by email - Third-Party Attributions - The following third-party open-source libraries are used: - Reminder - Please use this app responsibly. Downloaded images should only be used for purposes allowed by applicable laws. - White - Black - Light theme - Dark theme - Barista + Licence (pouze anglicky) + Navštivte náš web + Získejte podporu, diskutujte, setkávejte se s ostatními a bavte se! + Podívejte se na náš zdrojový kód na GitHub + Auditujte, označte hvězdou, nahlaste chyby, přispívejte a mějte zábava (znovu)! + Poslat zpětnou vazbu e-mailem + Atributy třetích stran + Následující open-source knihovny třetích stran jsou použity: + Upozornění + Používejte tuto aplikaci odpovědně. Stažené obrázky by měly být použity pouze pro účely povolené platnými zákony. + Bílá + Černá + Světlý vzhled + Tmavý vzhled + Kávový Material Dark - Added to Favorites - Favorited - Favorite + Přidáno do oblíbených + Oblíbeno + Přidat do oblíbených Účty Hashtagy Místa - Unknown - Removed from Favourites - Backup & Restore User Settings - Back up app settings, account login information, and/or favorites data to a plain text or encrypted backup file for later restoration. - If you\'re backing up login info, treat the file as confidential: Keep them somewhere safe! - Create new backup file - Restore from existing backup file - File: + Neznámý + Odebráno z oblíbených + Zálohovat & Obnovit uživatelská nastavení + Zálohuje nastavení aplikace, přihlašovací údaje a/nebo oblíbená data do prostého textu nebo šifrovaného souboru pro pozdější obnovu. + Pokud zálohujete přihlašovací údaje, zacházejte se souborem důvěrně: Uchovejte ho někde v bezpečí! + Vytvořit nový soubor zálohy + Obnovit z existující zálohy + Soubor: Zadejte heslo - Select a backup file (.zaai/.backup) + Vyberte soubor zálohy (.zaai/.backup) Použít Uložit - Caption - Edit caption... - Translate caption... - Video player timeline - Liking… - Like unsuccessful - Unlike unsuccessful - Unliking… - Controls - Saving… - Removing… - Save unsuccessful - Remove unsuccessful - Downloading… - Download item %d of %d - Delete - Comment - Layout - Feed stories - Opening post... + Titulek + Upravit titulek... + Přeložit titulek... + Časová osa přehrávače videa + Označuji jako oblíbené… + Lajkování bylo neúspěšné + Odstraňování lajku bylo neúspěšné + Odstraňuji označení jako oblíbené… + Ovládací prvky + Ukládání… + Odstraňování… + Uložení se nezdařilo + Odstranění se nezdařilo + Stahuji… + Stáhnout položku %d z %d + Vymazat + Komentovat + Rozložení + Feed příběhů + Otevírání příspěvku... Sdílet Styl rozložení Počet sloupců @@ -329,26 +330,26 @@ Zobrazit mezery v mřížce Zakázat animace Počkejte prosím nejdříve na dokončení aktuální úlohy! - Depending on user counts, this can take a while to load. Please be patient. - Post not found! - No app found which opens urls + V závislosti na počtu uživatelů to může chvíli trvat. Buďte trpěliví. + Příspěvek nebyl nalezen! + Nebyla nalezena žádná aplikace, která by otevřela URL - %d like - %d likes - %d likes - %d likes + %d se líbí + %d se líbí + %d se líbí + %d se líbí - %d comment - %d comments - %d comments - %d comments + %d komentář + %d komentáře + %d komentářů + %d komentářů - %s story - %s stories - %s stories - %s stories + %s příběh + %s příběhy + %s příběhů + %s příběhů Přístup k úložišti nebyl udělen! diff --git a/app/src/main/res/values-de/arrays.xml b/app/src/main/res/values-de/arrays.xml index 1e38b7a0..af1a6943 100644 --- a/app/src/main/res/values-de/arrays.xml +++ b/app/src/main/res/values-de/arrays.xml @@ -30,7 +30,7 @@ Hell - Instagram default (Unread then read) + Instagram Standard (ungelesen, dann gelesen) Vom Neuesten zum Ältesten Vom Ältesten zum Neuesten diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index a5bf0edc..8a1a2f81 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -32,7 +32,7 @@ Direktnachrichten nach dem Ansehen als gesehen markieren Andere Mitglieder werden wissen, dass du sie gesehen hast Aktivitätsbenachrichtigungen aktivieren - Feed stories sort + Sortierung Storyfeed Fehler beim Laden des Profils!\nVersuche dich einzuloggen und erneut zu suchen. Fehler beim Erstellen von Download-Ordner(n). In benutzerdefiniertem Ordner speichern @@ -54,6 +54,7 @@ %s Abonniert Videos automatisch abspielen Videos immer stummschalten + Bildtext immer anzeigen Datei zum Download auswählen Aktuell Gesamtes Album @@ -112,7 +113,7 @@ Nicht mehr einschränken Steckbrief kopieren Steckbrief übersetzen - Mutual + Gegenseitig Abonniert Abonnent Karte @@ -176,7 +177,7 @@ Verlassen Chat verlassen? Entfernen - Left users + Ehemalige Benutzer Direkt herunterladen Lade Posts direkt auf das Handy herunter! Beiträgen abrufen @@ -193,7 +194,7 @@ Du kannst nur 100 Beiträge gleichzeitig herunterladen. Sei nicht zu gierig! Benutzername kopieren Kommentar kopieren - View comment likers + Kommentar-Liker ansehen Auf Kommentar antworten Kommentar gefällt mir Kommentar gefällt mir nicht mehr @@ -228,8 +229,8 @@ App abgestürzt Hoppla.. die App ist abgestürzt, aber keine Sorge — du kannst Fehlerberichte an den Entwickler senden, um ihm zu helfen, das Problem zu beheben. (: Aktivität - Story archive - Suggested users + Story-Archiv + Vorgeschlagene Benutzer Bild auswählen Hochladen… Du hast: @@ -281,11 +282,11 @@ Standorte Unbekannt Aus Favoriten entfernt - Backup & Restore User Settings - Back up app settings, account login information, and/or favorites data to a plain text or encrypted backup file for later restoration. - If you\'re backing up login info, treat the file as confidential: Keep them somewhere safe! - Create new backup file - Restore from existing backup file + Sichern & Wiederherstellen der Benutzerdaten + Sichern Sie App-Einstellungen, Account-Login-Daten und/oder Favoriten in einer Klartextdatei oder verschlüsselten Datei für eine spätere Wiederherstellung. + Wenn Sie die Login-Informationen sichern möchten, behandeln Sie die Datei als vertraulich: Speichern Sie sie an einem sicheren Ort! + Erstelle neue Sicherungsdatei + Wiederherstellen aus existierender Sicherungsdatei Datei: Passwort eingeben Wähle eine Sicherungsdatei (.zaai/.backup) @@ -309,7 +310,7 @@ Löschen Kommentar Layout - Feed stories + Storyfeed Öffne Beitrag... Teilen Layoutstil @@ -335,8 +336,8 @@ %d Kommentare - %s story - %s stories + %s Story + %s Stories Speicher-Zugriff nicht erteilt! diff --git a/app/src/main/res/values-el/arrays.xml b/app/src/main/res/values-el/arrays.xml new file mode 100644 index 00000000..f2aa5e72 --- /dev/null +++ b/app/src/main/res/values-el/arrays.xml @@ -0,0 +1,70 @@ + + + + Προεπιλογή Συστήματος + English + Français + Español + 简体中文 + Bahasa Indonesia + Italiano + Deutsch + Polski + Türkçe + Português (Brasil) + پارسی + Македонски + Tiếng Việt + 繁體中文 + Català + Русский + हिन्दी + Nederlands + Slovenčina + 日本語 + + + Αυτόματα / Ακολούθηση Συστήματος + Αυτόματα / Ακολούθηση Μπαταρίας + Σκούρο + Φωτεινό + + + Προεπιλεγμένο του Instagram(Αδιάβαστο και μετά διαβασμένο) + Από το νεότερο στο παλαιότερο + Από το παλαιότερο στο νεότερο + + + Κανένα + \@ + στο + πάνω + \| + - + + + @string/title_dm + @string/feed + @string/profile + @string/title_discover + @string/more + + + @string/light_white_theme + @string/light_barinsta_theme + @string/light_bibliogram_theme + + + @style/AppTheme.Light.White + @style/AppTheme.Light.Barinsta + @style/AppTheme.Light.Bibliogram + + + @string/dark_black_theme + @string/dark_material_dark_theme + + + @style/AppTheme.Dark.Black + @style/AppTheme.Dark.MaterialDark + + diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml new file mode 100644 index 00000000..30f773db --- /dev/null +++ b/app/src/main/res/values-el/strings.xml @@ -0,0 +1,343 @@ + + + Σχετικά με + Απευθείας Μηνύματα + Ρυθμίσεις + Λήψη + Αναζήτηση ονόματος χρήστη... + Σύγκριση + Σφάλμα κατά την αντιγραφή κειμένου + Αντιγράφηκε στο clipboard! + Αναφορά + Κωδικός Πρόσβασης (Το μέγιστο 32 χαρακτήρες) + Ορισμός κωδικού πρόσβασης (Το μέγιστο 32 χαρακτήρες) + Κωδικός Πρόσβασης + Εντάξει + Ναι + Ακύρωση + Όχι + Επιβεβαίωση + Πάνω + Να μην εμφανιστεί ξανά + Τρέχων Κατάλογος + Αγαπημένα + Ανακαλύψτε + Σχόλια + Δραστηριότητα + Καλύτερες Στιγμές: %s + Έλεγχος για ενημερώσεις στο ξεκίνημα + Λήψη δημοσίευσης στους φακέλους με ονόματα χρηστών + Επισήμανση ιστοριών ως προβληθέντων μετά την προβολή + Ο συντάκτης της ιστορίας θα ξέρει ότι την προβάλατε + Σήμανση ΠΜ ως αναγνωσμένου μετά την προβολή + Άλλα μέλη θα γνωρίζουν πως το προβάλατε + Ενεργοποίηση ειδοποιήσεων δραστηριότητας + Ταξινόμηση ροής ιστορίων + Σφάλμα κατά τη φόρτωση προφίλ!\nΔοκιμάστε να συνδεθείτε και να αναζητήσετε ξανά. + Σφάλμα κατά τη δημιουργία φακέλου/ων λήψης. + Αποθήκευση σε προσαρμοσμένο φάκελο + Επιλογή Φακέλου + Θέμα + Επηρεάζει μόνο τους συνδεδεμένους χρήστες: + Επηρεάζει μόνο ανώνυμους χρήστες: + Χρήση Instadp για εικόνες προφίλ υψηλής ευκρίνειας + Εισαγωγή/Εξαγωγή + Γλώσσα + + %s Δημοσίευση + %s Δημοσιεύσεις + + + %s Ακόλουθος + %s Ακόλουθοι + + %s Ακολουθείται + Παίζε αυτόματα τα βίντεο + Πάντα βάζε τα βίντεο σε σιγή + Να εμφανίζονται πάντα οι λεζάντες δημοσιέυσεων + Επιλογή τι να κατεβεί + Συγκεκριμένο + Ολόκληρο Άλμπουμ + Εμφάνιση Ιστοριών + Δεν υπάρχουν άλλες ιστορίες! + Κάντε υπομονή! + Προβολη Δημοσίευσης + Προβολή Δημοσίευσης + Spotify + Ψηφίστε + Η ψήφος ήταν επιτυχής! + Έχετε ήδη ψηφίσει! + Ανταπόκριση + Απάντηση… + Η απάντηση ήταν επιτυχής! + + %d απόκριση κατά μέσο όρο%s + %d αποκρίσεις κατά μέσο όρο %s + + Η απάντησή σας: %s + Απάντηση στην ιστορία + Απάντηση… + Κουίζ + Slider + Έχετε ήδη απαντήσει! + Αναφορές + Αυτός ο Λογαριασμός είναι Ιδιωτικός + Δεν θα έχετε πρόσβαση σε δημοσιεύσεις μετά από την άρση ακολούθησης! Είστε σίγουροι; + Μπορείτε να συνδεθείτε μέσω του Περισσότερα-> Λογαριασμός στην κάτω δεξιά γωνία ή μπορείτε να δείτε δημόσιους λογαριασμούς χωρίς σύνδεση! + Μπορείτε να σύρετε προς τα αριστερά/δεξιά για εξερεύνηση/τροφοδοσία ή να αναζητήσετε κάτι παρακάτω! + Αυτός ο Λογαριασμός δεν έχει Δημοσιεύσεις + Δεν Υπάρχουν Τέτοιες Δημοσιεύσεις! + Τρέχουσα έκδοση: v%s + διαβάστε περισσότερα… + Σύνδεση + Αποσύνδεση + Περιήγηση στο Instagram ανώνυμα + Αφαίρεση όλων των λογαριασμών + Αυτό θα καταργήσει όλους τους λογαριασμούς που έχουν προστεθέι στην εφαρμογή!\nΓια να καταργήσετε μόνο έναν λογαριασμό, πατήστε παρατεταμένα το λογαριασμό από το διάλογο εναλλαγής λογαριασμού.\nΘέλετε να συνεχίσετε; + Μορφή ημερομηνίας + Επισημασμένο ως \"Μου αρέσει\" + Αποθηκεύτηκε + Επισημάνθηκε η ετικέτα + Μήνυμα + Μου αρέσει + Δεν μου αρέσει + Αποθήκευση σαν σελιδοδείκτης + Διαγραφή σελιδοδείκτη + Ακολουθήστε + Κατάργηση ακολούθησης + Προσθήκη στα αγαπημένα + Αφαίρεση από αγαπημένα + Αποκλεισμός + Άρση αποκλεισμού + Περιορισμός + Άρση Περιορισμού + Αντιγραφή βιογραφικού + Μετάφραση βιογραφικού + Κοινά + Ακολουθείτε + Ακόλουθος + Χάρτης + Εξαγωγή + Εισαγωγή + Εξεγωγή Συνδέσεων + Λογαριασμοί + Ρυθμίσεις + Αγαπημένα + Εισαγωγή ρυθμίσεων + Εισαγωγή Συνδέσεων + Εισαγωγή λογαριασμών + Εισαγωγή Αγαπημένων + Η εισαγωγή ήταν επιτυχής! + Η εισαγωγή ήταν ανεπιτυχής! + Η εξαγωγή ήταν επιτυχής! + Η εξαγωγή απέτυχε! + Ο κωδικός πρόσβασης είναι κενός! + Επαναφόρτωση + Λήψη cookies + Λειτουργία Επιφάνειας Εργασίας + Χρήση προσαρμοσμένης μορφής + Διαχωριστικό + Μορφή Ώρας + Μορφή Ημερομηνίας + Προεπισκόπηση + Εναλλαγή θέσεων ώρας και ημερομηνίας + Αδυναμία διαγραφής λογαριασμού που χρησιμοποιείται αυτή την στιγμή + Είστε βέβαιοι ότι θέλετε να διαγράψετε το \'%s\'; + Άνοιγμα προφίλ + Προβολή ιστορίας + Προβολή εικόνας προφίλ + Εσείς + Μοιράστηκε έναν σύνδεσμο + Μοιράστηκε πολυμέσο + Κοινοποίηθηκε ένα χρονικό μήνυμα + Απάντησε σε μια ιστορία + Αντέδρασε σε μια ιστορία + Αναφερθήκατε σε μια ιστορία + Μη υποστηριζόμενος τύπος μηνύματος + Άνοιγμα συνδέσμου + Αντιγραφή κειμένου + Λήψη συνημμένου + Μαρκάρισμα μηνύματος ως \'Μου Αρέσει\' + Αναίρεση \'Μου Αρέσει\' από το μήνυμα + Κατάργηση αποστολής μηνύματος + Προβολή προφίλ του συγγραφέα + Η ανάρτηση κοινοποιήθηκε από %s + Άγνωστος τύπος πολυμέσου + Το πολυμέσο έχει λήξει! + Παραδόθηκε + Έχει σταλεί + Ανοίχτηκε + Ξαναπαίχτηκε + Γίνεται Αποστολή… + Αποκλείστηκε + Προτεινόμενη + Τραβήχθηκε στιγμιότυπο οθόνης + Αδυναμία παράδοσης + Μεγάλη επιτυχία! + Αποχώρηση + Αποχώρηση από αυτήν τη συνομιλία; + Διώξιμο + Χρήστες που αποχώρησαν + Απευθείας λήψη + Λήψεις δημοσιεύσεων απευθείας στο τηλέφωνο! + Ανάκτηση δημοσιεύσης/εων + Παρακαλούμε παραχωρήστε τις απαιτούμενες άδειες και ξαναδοκιμάστε να το κατεβάσετε! + Η λήψη ξεκίνησε + Η λήψη ολοκληρώθηκε + Γίνεται λήψη της δημοσίευσης… + Γίνεται λήψη πολυμέσων + Γίνεται λήψη εικόνας προφίλ + Το αρχείο κατέβηκε στον φάκελο Λήψεις! + Προέκυψε ένα άγνωστο σφάλμα!!! + Σφάλμα κατά την δημιουργία φακέλου! + Σφάλμα λήψης αρχείου + Μπορείτε να κατεβάσετε μόνο 100 δημοσιεύσεις κάθε φορά. Μην είστε τόσο άπληστοι! + Αντιγραφή ονόματος χρήστη + Αντιγραφή σχολίου + Προβολή αυτών που μάρκαραν το σχόλιο ως \'Μου Αρέσει\' + Απάντηση στο σχόλιο + Επισήμανση σχολίου ως \'Μου Αρέσει\' + Αφαίρεση \'Μου Αρέσει\' από το σχόλιο + Μετάφραση σχολίου + Διαγραφή σχολίου + Δεν υπάρχουν κενά σχόλια! + Θέλετε να αναζητήσετε το όνομα χρήστη; + Θέλετε να αναζητήσετε το hashtag; + Ακόλουθοι + Ακολουθείτε + Σύγκριση ακολούθων & ακολούθείται + Και οι δύο ακολουθιέστε μεταξύ σας + δεν ακολουθεί %s + %s δεν ακολουθεί + Σφάλμα κατά την φόρτωση των cookies + Γράψτε νεο σχόλιο… + Σύνταξη νέου μηνύματος… + Του άρεσε η δημοσίευση σας + Σχολιάστηκε στην δημοσίευση σας: + Ξεκίνησε να σας ακολουθεί + Σας ανέφερε: + Πρόσθεσε την ετικέτα σας σε μία δημοσίευση + Έκανε αίτημα να σας ακολουθήσει + Έγκριση αιτήματος + Απόρριψη αιτήματος + Μοιραστείτε αυτή τη δημόσια δημοσίευση στο… + Αυτή είναι μια ιδιωτική ανάρτηση! Μοιραστείτε την με αυτούς που μπορούν να την δουν! + Αυτή η κατηγορία είναι κάπως κενή… + Υπάρχει διαθέσιμη ενημέρωση! (%s) + Υπενθύμιση: Εάν το έχετε κατεβάσει από το F-Droid, πρέπει να το ενημερώσετε από αυτό! Το ίδιο ισχύει και για το GitHub. + Ευχαριστούμε που ενημερώσατε το Barinsta! + Η εφαρμογή συνετρίβη + Ουπς.. Η εφαρμογή συνετρίβη, αλλά μην ανησυχείτε, μπορείτε να αναφέρετε το σφάλμα στον προγραμματιστή για να τον βοηθήσετε να διορθώσει το πρόβλημα. (: + Δραστηριότητα + Αρχειοθήκη ιστοριών + Προτεινόμενοι χρήστες + Επιλέξτε Εικόνα + Μεταφόρτωση… + Έχετε: + %d ακόλουθοι + %d σχόλια + %d επισημάνσεις \'Μου Αρέσει\' σε σχόλια + %d ετικέτες χρήστη + %d επισημάνσεις \"Μου αρέσει\" + Αποσυνδεθήκατε πριν κάνετε κλικ σε αυτή την ειδοποίηση;! + Ροή + Προφίλ + Περισσότερα + ΠΜ + %d επιλέχθηκε + Η αποσύνδεση ήταν επιτυχής! + Πληροφορίες + Σήμανση ως αναγνωσμένο + Να μην εμφανιστεί ξανά μέχρι την επόμενη ενημέρωση + Έκδοση + Οθόνη εκκίνησης + Γενικά + Θέμα + Λήψεις + Τοποθεσία + Λογαριασμός + Η συγκεκριμένη σύνδεση δεν λειτουργεί; Απλά ξαναπροσθέστε τον λογαριασμό. + Προσθήκη λογαριασμού + Άδεια (μόνο στα Αγγλικά) + Επισκεφθείτε την ιστοσελίδα μας + Λάβετε υποστήριξη, συζητήστε, συναντήστε άλλους, και διασκεδάστε! + Δείτε τον πηγαίο κώδικα μας στο GitHub + Ελέγχου, μαρκάρισμα με αστέρια, αναφορά σφαλμάτων, συνεισφορές, και διασκέδαση (ξανά)! + Αποστολή σχολίων μέσω ηλ. ταχυδρομείου + Αποδόσεις Τρίτων + Χρησιμοποιούνται οι ακόλουθες τρίτες βιβλιοθήκες ανοιχτού κώδικα: + Υπενθύμιση + Παρακαλούμε χρησιμοποιήστε αυτήν την εφαρμογή υπεύθυνα. Οι ληφθείσες εικόνες πρέπει να χρησιμοποιούνται μόνο για σκοπούς που επιτρέπονται από τους ισχύοντες νόμους. + Άσπρο + Μαύρο + Φωτείνο θέμα + Σκοτεινό θέμα + Barista + Σκοτεινό Material + Προστέθηκε στα Αγαπημένα + Μαρκαρισμένο ως \'Αγαπημένο\' + Αγαπημένο + Λογαριασμοί + Hashtags + Τοποθεσίες + Άγνωστο + Αφαιρέθηκε από τα Αγαπημένα + Ρυθμίσεις αντιγράφων ασφαλείας & επαναφοράς + Δημιουργήστε αντίγραφα ασφαλείας των ρυθμίσεων εφαρμογών, των πληροφοριών σύνδεσης λογαριασμού, ή/και των αγαπημένων σας σε ένα απλό κείμενο ή κρυπτογραφημένο αρχείο αντίγραφου ασφαλείας για μεταγενέστερη επαναφορά. + Αν δημιουργείτε αντίγραφα ασφαλείας των πληροφοριών σύνδεσης, αντιμετωπίζετε το αρχείο ως απόρρητο: Κρατήστε το κάπου που είναι ασφαλές! + Δημιουργία νέου αρχείου αντιγράφου ασφαλείας + Επαναφορά από υπάρχον αρχείο αντιγράφου ασφαλείας + Αρχείο: + Εισαγωγή κωδικού πρόσβασης + Επιλέξτε ένα αρχείο αντιγράφου ασφαλείας (.zaai/.backup) + Εφαρμογή + Αποθήκευση + Λεζάντα + Επεξεργασία λεζάντας... + Μετάφραση λεζάντας... + Χρονοδιάγραμμα αναπαραγωγού βίντεο + Μαρκάρισμα ως \'Μου Αρέσει\'… + Το μαρκάρισμα ως \'Μου Αρέσει\' ήταν ανεπιτυχές + Η κατάργηση \'Μου Αρέσει\' ήταν ανεπιτυχής + Κατάργηση \'Μου Αρέσει\'… + Στοιχεία ελέγχου + Αποθήκευση… + Αφαίρεση… + Η αποθήκευση ΔΕΝ ήταν επιτυχής + Η αφαίρεση ΔΕΝ ήταν επιτυχής + Γίνεται λήψη… + Λήψη στοιχείου %d από %d + Διαγραφή + Σχόλιο + Διάταξη + Ροή ιστοριών + Άνοιγμα δημοσίευσης... + Κοινοποίηση + Στυλ διάταξης + Πλήθος στηλών + 2 + 3 + Εμφάνιση ονομάτων + Προβολή άβαταρ + Μέγεθος άβαταρ + Γωνίες + Εμφάνιση διάταξης πλέγματος + Απενεργοποίηση των εφέ + Παρακαλούμε περιμένετε να ολοκληρωθεί πρώτα η τρέχουσα εργασία! + Ανάλογα με τις μετρήσεις του χρήστη, αυτό μπορεί να πάρει λίγο χρόνο για να φορτωθεί. Μείνετε υπομονετικοί. + Η δημοσίευση δεν βρέθηκε! + Δεν βρέθηκε εφαρμογή που να ανοίγει urls + + %d επισήμανση \"Μου αρέσει\" + %d επισημάνσεις \"Μου αρέσει\" + + + %d σχόλιο + %d σχόλια + + + %s ιστορία + %s ιστορίες + + Δεν παραχωρήθηκε άδεια για πρόσβαση στον χώρο αποθήκευσης! + diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index ff7059a5..a99427cd 100755 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -54,6 +54,7 @@ %s seguidos Autorreproducir vídeos Siempre silenciar vídeos + Mostrar siempre subtítulos del post Seleccionar qué descargar Actual Todo el álbum @@ -206,8 +207,8 @@ Siguiendo Comparando seguidores & seguidos Ambos se siguen mutuamente - no está siguiendo %s - %s no está siguiendo + No sigue a %s + %s no sigue a Error al cargar cookies Escribir un nuevo comentario… Escribir un mensaje nuevo… diff --git a/app/src/main/res/values-eu/arrays.xml b/app/src/main/res/values-eu/arrays.xml new file mode 100644 index 00000000..fa427545 --- /dev/null +++ b/app/src/main/res/values-eu/arrays.xml @@ -0,0 +1,70 @@ + + + + Sistemaren lehenetsia + English + Français + Español + 简体中文 + Bahasa Indonesia + Italiano + Deutsch + Polski + Türkçe + Português (Brasil) + پارسی + Македонски + Tiếng Việt + 繁體中文 + Català + Русский + हिन्दी + Nederlands + Slovenčina + 日本語 + + + Automatikoa / Jarraitu sistema + Automatikoa / Jarraitu bateria + Iluna + Argia + + + Instagrameko lehenetsia (Ez irakurrita, gero irakurrita) + Berrienetik zaharrenera + Zaharrenetik berrienera + + + Bat ere ez + \@ + - + , + \| + - + + + @string/title_dm + @string/feed + @string/profile + @string/title_discover + @string/more + + + @string/light_white_theme + @string/light_barinsta_theme + @string/light_bibliogram_theme + + + @style/AppTheme.Light.White + @style/AppTheme.Light.Barinsta + @style/AppTheme.Light.Bibliogram + + + @string/dark_black_theme + @string/dark_material_dark_theme + + + @style/AppTheme.Dark.Black + @style/AppTheme.Dark.MaterialDark + + diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml new file mode 100644 index 00000000..e2495e57 --- /dev/null +++ b/app/src/main/res/values-eu/strings.xml @@ -0,0 +1,343 @@ + + + Honi buruz + Mezu zuzenak + Ezarpenak + Deskargatu + Bilatu erabiltzaile-izena… + Alderatu + Errorea testua kopiatzean + Arbelera kopiatu da! + Salatu + Pasahitza (32 karak. gehienez) + Ezarri pasahitza (32 karak. gehienez) + Pasahitza + Ados + Bai + Utzi + Ez + Baieztatu + Gora + Ez erakutsi berriro + Uneko direktorioa + Gogokoak + Aurkitu + Iruzkinak + Jarduera + Nabarmendua: %s + Bilatu eguneratzeak abioan + Deskargatu bidalketak erabiltzaile-izena duten karpetetara + Markatu istorioak ikusita gisa ikusi ondoren + Istorioaren egileak ikusi duzula jakingo du + Markatu MZ ikusita gisa ikusi ondoren + Beste kideek ikusi duzula jakingo dute + Gaitu jarduera-jakinarazpenak + Istorioen jarioaren sailkapena + Errorea profila kargatzean!\nSaiatu saioa hasten eta bilatu berriro. + Errorea deskargen karpeta(k) sortzen. + Gorde pertsonalizatutako karpetan + Hautatu karpeta + Gaia + Saioa hasi duten erabiltzaileei soilik eragiten die: + Erabiltzaile anonimoei soilik eragiten die: + Erabili Instadp bereizmen handiko profil-irudietarako + Inportatu/Esportatu + Hizkuntza + + Bidalketa %s + %s bidalketa + + + Jarraitzaile %s + %s jarraitzaile + + %s jarraituak + Erreproduzitu bideoak automatikoki + Mututu bideoak beti + Erakutsi argazki-oina beti + Hautatu zer deskargatu + Unekoa + Album osoa + Erakutsi istorioak + Istorio gehiagorik ez + Itxaron + Ikusi bidalketa + Ikusi bidalketa + Spotify + Bozkatu + Bozka ongi bidali da! + Jada bozkatu duzu! + Erantzun + Erantzun… + Erantzuna ongi bidali da! + + %d response averaging %s + %d responses averaging %s + + Zure erantzuna: %s + Erantzun istorioa + Erantzun… + Lehiaketa + Slider + Dagoeneko erantzun duzu! + Aipamenak + Kontu hau pribatua da + Ezingo dituzu bidalketak ikusi jarraitzeari utzi ondoren. Ziur zaude? + You can log in via More -> Account on the bottom-right corner or you can view public accounts without login! + You can swipe left/right for explore/feed, or search something below! + Kontu honek bidalketarik ez du + Bidalketarik ez! + Uneko bertsioa: v%s + irakurri gehiago… + Hasi saioa + Amaitu saioa + Nabigatu Instagramen anonimoki + Kendu kontu guztiak + This will remove all added accounts from the app!\nTo remove just one account, long tap the account from the account switcher dialog.\nDo you want to continue? + Data-formatua + Atsegiteak + Gordeta + Etiketatuta + Mezua + Atsegitea + Ez dut atsegin + Laster-marka + Laster-marka kendu + Jarraitu + Jarraitzeari utzi + Gogokoa + Gogokoetatik kendu + Blokeatu + Desblokeatu + Mugatu + Muga kendu + Kopiatu biografia + Itzuli biografia + Alde bikoa + Jarraituak + Jarraitzaile + Mapa + Esportatu + Inportatu + Esportatu saio-hasierak + Kontuak + Ezarpenak + Gogokoak + Inportatu ezarpenak + Inportatu saio-hasierak + Inportatu kontuak + Inportatu gogokoak + Ongi inportatu da! + Inportatzeak huts egin du! + Ongi esportatu da! + Esportatzeak huts egin du! + Pasahitza hutsik dago! + Freskatu + Eskuratu cookieak + Mahaigaineko modua + Erabili pertsonalizatutako formatua + Bereizlea + Ordu-formatua + Data-formatua + Aurrebista + Aldatu ordua eta dataren posizioa + Ezin da unean erabiltzen ari zaren kontua ezabatu + Ziur zaude \"%s\" ezabatu nahi duzula? + Ireki profila + Ikusi istorioa + Ikusi profil-irudia + Zu + Partekatutako esteka + Partekatutako multimedia + Denboraz neurtutako mezua partekatu du + Erantzundako istorioa + Istorio batera erreakzionatu du + Istorio batean aipatu zaitu + Mezu mota ez da onartzen + Ireki esteka + Kopiatu testua + Deskargatu eranskina + Atsegin mezua + Atsegina kendu mezuari + Ezabatu mezua + Ikusi MZren autorearen profila + Bidalketa hemendik partekatu da: %s + Multimedia mota ezezaguna + Multimedia iraungi da! + Iritsi da + Bidalita + Irekita + Berriro erreproduzituta + Bidaltzen… + Blokeatuta + Iradokita + Pantaila-argazkia aterata + Ez da iritsi + Behar bezala gauzatu da + Utzi + Utzi txat hau? + Bota + Joan diren erabiltzaileak + Deskargatu zuzenean + Bidalketak telefonora zuzenean deskargatzen ditu + Fetching post(s) + Baimenak eman eta saiatu berriro deskargatzen + Deskarga hasita + Deskarga burutu da + Bidalketa deskargatzen… + Multimedia deskargatzen + Profil-irudia deskargatzen + Fitxategia deskargak karpetan deskargatu da + Errore ezezaguna gertatu da + Errorea karpeta sortzean! + Errorea fitxategia deskargatzean + 100 bidalketa deskargatu ditzakezu une berean. Ez izan gutiziatsu! + Kopiatu erabiltzaile-izena + Kopiatu iruzkina + Ikusi iruzkinen atsegiteak + Erantzun iruzkinari + Atsegin iruzkina + Ez dut atsegin + Itzuli iruzkina + Ezabatu iruzkina + Iruzkin hutsik ez! + Erabiltzaile-izena bilatu nahi duzu? + Traol-hitza bilatu nahi duzu? + Jarraitzaileak + Jarraituak + Jarraitzaileak eta jarraituak konparatzen + Elkarri jarraitzen diozue + ez jarraitzen %s + %s(e)k ez zaitu jarraitzen + Errorea cookieak kargatzean + Idatzi iruzkin berria… + Idatzi mezu berria… + Zure bidalketa atsegin du + Zure bidalketan iruzkindu du: + Zu jarraitzen hasi da + Aipatu zaitu: + Bidalketa batean etiketatu zaitu + Zu jarraitzeko eskaera egin du + Onartu eskaera + Baztertu eskaera + Partekatu bidalketa publiko hau… + Bidalketa pribatua da. Partekatu ikus dezaketen horiekin! + Kategoria hau hutsik dago… + Eguneratze bat eskuragarri dago (%s) + F-Droidetik deskargatu baduzu, bertatik eguneratu behar duzu. GitHubekin ere hori egin behar da. + Eskerrik asko Barinsta eguneratzeagatik! + Aplikazioa kraskatu da + Hara! Aplikazioa kraskatu da, baina ez kezkatu, errore-txostena garatzaileari bidali diezaiokezu arazoa konpondu dezan. + Jarduera + Istorio-artxiboa + Iradokitutako erabiltzaileak + Hautatu irudia + Igotzen… + Duzuna: + %d jarraitzaile + %d iruzkin + %d iruzkin-atsegite + %d erabiltzaile-etiketak + %d atsegite + You logged out before clicking this notification?! + Jarioa + Profila + Gehiago + MZ + %d hautatua + Saioa ongi itxi da! + Informazioa + Markatu ikusita gisa + Ez erakutsi hurrengo eguneratzera arte + Bertsioa + Hasierako pantaila + Orokorra + Gaia + Deskargak + Lokala + Kontua + Uneko saio-hasiera ez dabil? Gehitu kontua berriro. + Gehitu kontua + Lizentzia (Ingelesa soilik) + Ikusi gure webgunea + Get support, discuss, meet others, and have fun! + Ikusi iturburu kodea GitHuben + Kodea ikusi, parte hartu eta gozatu! + Bidali atzeraelikadura eposta bidez + Hirugarrenen atribuzioak + The following third-party open-source libraries are used: + Oroigarria + Please use this app responsibly. Downloaded images should only be used for purposes allowed by applicable laws. + Zuria + Beltza + Gai argia + Gai iluna + Akeita + Beltz materiala + Gogokoetara gehituta + Gogokotua + Gogokotu + Kontuak + Traolak + Kokalekuak + Ezezaguna + Gogokoetatik kenduta + Backup & Restore User Settings + Back up app settings, account login information, and/or favorites data to a plain text or encrypted backup file for later restoration. + If you\'re backing up login info, treat the file as confidential: Keep them somewhere safe! + Create new backup file + Restore from existing backup file + Fitxategia: + Sartu pasahitza + Select a backup file (.zaai/.backup) + Ezarri + Gorde + Argazki-oina + Editatu argazki-oina... + Itzuli argazki-oina... + Video player timeline + Atsegiten… + Like unsuccessful + Unlike unsuccessful + Atsegitea kentzen… + Kontrolak + Gordetzen… + Kentzen… + Save unsuccessful + Remove unsuccessful + Deskargatzen… + Download item %d of %d + Ezabatu + Iruzkina + Antolamendua + Istorioen jarioa + Bidalketa irekitzen... + Partekatu + Diseinua + Zutabe kopurua + 2 + 3 + Erakutsi izenak + Erakutsi avatarrak + Avatarraren tamaina + Ertzak + Erakutsi sareta-tartea + Desgaitu animazioa + Itxaron uneko zeregina burutu arte! + Erabiltzaile kopuruaren arabera, honek kargatzen tardatu dezake. Itxaron. + Bidalketa ez da aurkitu! + URLak irekiko dituen aplikaziorik ez da aurkitu + + atsegite %d + %d atsegite + + + Iruzkin %d + %d iruzkin + + + Istorio %s + %s istorio + + Biltegiratze-baimenik ez da eman! + diff --git a/app/src/main/res/values-fa/arrays.xml b/app/src/main/res/values-fa/arrays.xml index 3f66523c..3c150a28 100644 --- a/app/src/main/res/values-fa/arrays.xml +++ b/app/src/main/res/values-fa/arrays.xml @@ -1,7 +1,7 @@ - پیشگزیده سامانه + پیـشـگزیده سامانه English Français Español @@ -24,8 +24,8 @@ 日本語 - خودکار / پیروی از سامانه - خودکار / پیروی از باتری + خودکار / پیرو سامانه + خودکار / پیرو باتری تیره روشن @@ -38,7 +38,7 @@ هیچکدام \@ در - روشن + در \| - diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml index cfb7e714..5b8d0afd 100644 --- a/app/src/main/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -44,24 +44,25 @@ وارد کردن/خروجی گرفتن زبان - %s Post - %s Posts + %s فرسته + %s فرسته - %s Follower - %s Followers + %s پیگیر + %s پیگیر %s Following پخش خودکار فیلم ها همیشه فیلم هارو بی صدا کن + Always show post captions انتخاب کن چی دانلود کنی کنونی آلبوم کامل نمایش استوری ها استوری بیشتری نیست! صبور باشید! - نگریستن پیک - نگریستن پیک + دیدن فرسته + دیدن فرسته Spotify رای دادن رای با موفقیت بود! @@ -114,8 +115,8 @@ Copy bio Translate bio Mutual - Following - Follower + پیگیری + پیگیر نقشه صادر کردن وارد کردن @@ -291,7 +292,7 @@ رمز عبور را وارد کنید یک فایل پشتیبان گیری انتخاب کنید (.zaai/.backup) گماشتن - Save + اندوختن Caption Edit caption... Translate caption... diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index bcc4529b..38c96bab 100755 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -54,6 +54,7 @@ %s Abonnements Lecture automatique des vidéos Toujours couper le son des vidéos + Toujours afficher les sous-titres de publication Sélectionnez ce que vous souhaitez télécharger Actuel Album complet diff --git a/app/src/main/res/values-hi/arrays.xml b/app/src/main/res/values-hi/arrays.xml index 8b0210c5..458c23f0 100644 --- a/app/src/main/res/values-hi/arrays.xml +++ b/app/src/main/res/values-hi/arrays.xml @@ -26,7 +26,7 @@ सिस्टम के अनुसार बैटरी स्तर के अनुसार - काला + गहरा हल्का diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index e7cfd899..19c6d29b 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -6,8 +6,8 @@ डाउनलोड करें ब्यबहारकारीयों के ब्यबहृत नाम ढुंढे... तुलना करें - लेखा उतारने में त्रुटि - क्लिपबोर्ड पर नक़ल किया + लेख कॉपी करने में त्रुटि + क्लिपबोर्ड में कॉपी हो गया है रिपोर्ट करें पासवर्ड (सर्बाधिक ३२ वर्ण) पासवर्ड तैयार करें (सर्बाधिक ३२ वर्ण) @@ -18,7 +18,7 @@ नहीं पुष्टि करें ऊपर - फिर से मत दिखाओ + दोबारा न दिखाएं बर्तमान फोल्डर पसंदीदा खोजिए @@ -54,6 +54,7 @@ %s Following वीडियो ऑटोप्ले करें सर्बदा वीडियो को शब्दहिन रखें + Always show post captions डाउनलोड करने के लिए चयन करें वर्तमान सम्पूर्ण आलबम @@ -111,7 +112,7 @@ अनब्ल़ॉक करें प्रतिबंध लगाए प्रतिबंध न लगाए - Copy bio + विवरण कॉपी करें Translate bio Mutual Following @@ -119,16 +120,16 @@ नक्शा निर्यात करें आयात करें - लग इनस निर्यात करें - खाताए - सेटिंग + लोगिन्स निर्यात करें + खाते + सेटिंग्स पसंदीदा सेटिंग्स आयात करें लॉगिन आयात करें एकाउॅटस आयात करें पसंदिदा आयात करें सफलतापूर्वक इम्पोर्ट किया गया! - आयात करने में विफल रहा है! + आयात करने में विफल रहा! सफलतापूर्वक निर्यात किया! निर्यात करने में विफल! पासवर्ड खाली है! @@ -155,7 +156,7 @@ स्टोरि पे आपको उल्लेख किया सन्देश प्रकार असमर्थित है लिंक खोलो - पाठ की प्रतिलिपि बनाएं + लेख कॉपी करें अनुलग्नक डाउनलोड करें सन्देश को पसन्द करें सन्देश को पसन्द न करें @@ -172,10 +173,10 @@ अवरोधित सुझाव स्क्रीनशॉट किया - पहुॅचा नहिं जा सकता - बडा सफलता! + पहुॅचा नहीं जा सकता + बड़ी सफलता! छोड़ दें - इसी बार्तालाप को छोड दें? + इस बार्तालाप को छोड दें? बाहर निकालें अवशेष ब्यबहारकारी सीधे डाउनलोड करें @@ -187,24 +188,24 @@ डाउनलोड जारी है… मिडीया डाउनलोड हो रहा है प्रोफाइल चित्र डाउनलोड करें - फाइल डाउनलोड फोल्डर पे डाउनलोड हो गया! + फाइल डाउनलोड फोल्डर में डाउनलोड हो गया! अज्ञात त्रुटि आई !!! फोलडर बनाने में त्रुटि! फ़ाइल डाउनलोड करने में त्रुटि आप सिर्फ १०० पोस्टस एक बार में डाउनलोड कर सकते हैं. ज्यादा लोभी बनना हानिकारक हैं! - उपयोगकर्ता नाम की प्रतिलिपि बनाएँ - टिप्पणी की प्रतिलिपि बनाएँ + युज़रनेम कॉपी करें + टिप्पणी कॉपी करें View comment likers टिप्पणी का जवाब दें टिप्पणी को पसन्द करें टिप्पणी को पसन्द न करें Translate comment - टिप्पणी हटा दें + टिप्पणी हटाएँ रिक्त टिप्पणी न करें! - ब्यबहारकारी के नाम ढूंढने चाहते हैं? - हाजट्याग को ढूंढने चाहते हैं? + युज़रनेम को ढूंढ़ना चाहते हैं? + हैशटैग को ढूंढ़ना चाहते हैं? अनुयायी - फ़ॉलो कर रहे हैं + आप फ़ॉलो कर रहे हैं फलोअर्स & फलोइंग के तुलना एक दुसरे को फोलो कर रहें हैं फोलो नहीं कर रहा %s @@ -223,12 +224,12 @@ इसी सार्वजनिक पोस्ट को भेजें... यह एक गुप्त पोस्ट है! उन लोगों को बांटना जो उन्हें देख सकते हैं! यह वर्ग रिक्त है... - नया अद्यतन उपलब्ध! (%s) - याद रखें: अगर आप f-droid से डाउनलोड किया है तो उसी से ही अपडेट करें! Github के लिये भी बही। - बारइनष्टा को अद्दतन करने के लिए धन्यबाद! + नया संस्करण उपलब्ध है! (%s) + याद रखें: अगर आपने f-droid से डाउनलोड किया है तो उसी से ही अपडेट करें! Github के लिये भी बही। + बरिन्स्टा को अपडेट करने के लिए धन्यबाद! एप में त्रुटि हुयी। Oops.. the app crashed, but don\'t worry you can send error report to the developer to help him fix the issue. (: - कार्यकलाप + गतिविधि Story archive Suggested users चित्र का चयन करें @@ -240,7 +241,7 @@ %d usertags %d likes You logged out before clicking this notification?! - Feed + फ़ीड Profile More DM @@ -250,38 +251,38 @@ Mark as seen Do not show again until next update संस्करण - Start screen - General - Theme - Downloads + प्रारंभ पृष्ठ + सामान्य + थीम + डाउनलोड Locale - Account + खाता Current login not working? Simply add the account again. - Add account + खाता जोड़ें License (English only) - Visit our website + हमारी वेबसाइट पर जाएं Get support, discuss, meet others, and have fun! - See our source code on GitHub + Github मे सोर्स कोड देखें Audit, star, report bugs, contribute, and have fun (again)! Send feedback by email Third-Party Attributions The following third-party open-source libraries are used: - Reminder + रिमाइन्डर Please use this app responsibly. Downloaded images should only be used for purposes allowed by applicable laws. - White - Black - Light theme - Dark theme - Barista + सफेद + काला + हल्के रंग का थीम + गहरे रंग की थीम + कॉफ़ी Material Dark Added to Favorites Favorited Favorite - Accounts - Hashtags - Locations - Unknown - Removed from Favourites + खाते + हैशटैग्स + स्थान + अज्ञात + पसंदीदा से हटाया Backup & Restore User Settings Back up app settings, account login information, and/or favorites data to a plain text or encrypted backup file for later restoration. If you\'re backing up login info, treat the file as confidential: Keep them somewhere safe! @@ -290,11 +291,11 @@ File: पासवर्ड दर्ज करें Select a backup file (.zaai/.backup) - Apply - Save - Caption - Edit caption... - Translate caption... + लागू करें + सेव करें + कैप्शन + कैप्शन का संपादन करें + कैप्शन का अनुवाद करें Video player timeline Liking… Like unsuccessful @@ -305,9 +306,9 @@ Removing… Save unsuccessful Remove unsuccessful - Downloading… + डाउनलोड हो रहा है... Download item %d of %d - Delete + हटाएँ Comment Layout Feed stories @@ -320,12 +321,12 @@ Show names Show avatars Avatar size - Corners + कोने Show grid gap Disable animation Please wait for the current task to complete first! Depending on user counts, this can take a while to load. Please be patient. - Post not found! + पोस्ट नहीं मिली No app found which opens urls %d like @@ -339,5 +340,5 @@ %s story %s stories - Storage permission not granted! + स्टोरेज की अनुमति नहीं दी गई diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index 8b3397f0..0d7b5841 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -1,10 +1,10 @@ Tentang - Pesan Langsung + Pesan Pengaturan Unduh - Cari Pengguna… + Cari pengguna… Bandingkan Galat menyalin tulisan Tersalin! @@ -52,6 +52,7 @@ %s Diikuti Otomatis putar video Selalu bisukan video + Always show post captions Pilih apa yang akan diunduh Foto ini saja Semua foto diff --git a/app/src/main/res/values-it/arrays.xml b/app/src/main/res/values-it/arrays.xml index 53c9cf9e..5223841d 100755 --- a/app/src/main/res/values-it/arrays.xml +++ b/app/src/main/res/values-it/arrays.xml @@ -30,9 +30,9 @@ Chiaro - Instagram default (Unread then read) - From newest to oldest - From oldest to newest + Instagram predefinito (non letto quindi leggi) + Dal più recente al più vecchio + Dal più vecchio al più recente Nessuno diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 54b45f0e..413796e3 100755 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -32,7 +32,7 @@ Segna il DM come visto dopo la visualizzazione Altri membri sapranno che lo hai visualizzato Abilita notifiche attività - Feed stories sort + Ordinamento storie feed Errore caricando il profilo!\nProva ad accedere e cercare ancora. Errore creando le cartelle di Download. Salva alla cartella personalizzata @@ -54,6 +54,7 @@ %s Seguiti Riproduzione automatica video Silenzia sempre i video + Mostra sempre le didascalie dei post Seleziona cosa scaricare Corrente Album Intero @@ -228,8 +229,8 @@ L\'app è crashata Ops... l\'app è crashata, ma non preoccuparti, puoi inviare una segnalazione dell\'errore allo sviluppatore per aiutarlo a risolvere il problema. (: Attività - Story archive - Suggested users + Archivio storie + Utenti suggeriti Seleziona Immagine Caricamento… Hai: @@ -281,11 +282,11 @@ Luoghi Sconosciuto Rimosso dai Preferiti - Backup & Restore User Settings - Back up app settings, account login information, and/or favorites data to a plain text or encrypted backup file for later restoration. - If you\'re backing up login info, treat the file as confidential: Keep them somewhere safe! - Create new backup file - Restore from existing backup file + Salva & Ripristina Impostazioni Utente + Esegui il salvataggio delle impostazioni dell’app, delle informazioni di accesso dell\'account e/o dei dati preferiti in un semplice testo o in un file di backup crittografato per il ripristino successivo. + Se stai effettuando il salvataggio delle informazioni di accesso, tratta il file come confidenziale: Tienilo in qualche posto al sicuro! + Crea un nuovo file di salvataggio + Ripristina da file di salvataggio esistente File: Inserisci password Selezionare un file di backup (.zaai/.backup) @@ -309,7 +310,7 @@ Elimina Commento Disposizione - Feed stories + Feed storie Aprendo il post... Condividi Stile disposizione @@ -335,8 +336,8 @@ %d commenti - %s story - %s stories + %s storia + %s storie Permesso di archiviazione non garantito! diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 1c8f4f85..80491b7a 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -52,6 +52,7 @@ %s フォロー中 動画を自動再生する 動画を常にミュートする + キャプションを常に表示 ダウンロード対象を選択 この画像 アルバム全体 @@ -112,7 +113,7 @@ 相互フォロー フォロー中 フォロワー - Map + マップ エクスポート インポート ログイン情報をエクスポート @@ -166,14 +167,14 @@ 再生済み 送信中… ブロック済 - Suggested + おすすめ スクリーンショット撮影済み 配信できません 成功! 退出する チャットを終了しますか? キックする - Left users + 退出したユーザー 直接ダウンロードする 投稿を直接ダウンロード! 投稿を取得中 diff --git a/app/src/main/res/values-kn/strings.xml b/app/src/main/res/values-kn/strings.xml index fa9471c4..76d46845 100644 --- a/app/src/main/res/values-kn/strings.xml +++ b/app/src/main/res/values-kn/strings.xml @@ -54,6 +54,7 @@ %s Following Autoplay videos Always mute videos + Always show post captions Select what to download Current Whole Album diff --git a/app/src/main/res/values-mk/arrays.xml b/app/src/main/res/values-mk/arrays.xml index 04217584..8590e3ca 100644 --- a/app/src/main/res/values-mk/arrays.xml +++ b/app/src/main/res/values-mk/arrays.xml @@ -32,13 +32,13 @@ Стандардно (Од непрочитано па прочитано) Од најнови до најстари - Од најнови до најстари + Од најстари до најнови Ништо \@ на - уклучи + на \| - diff --git a/app/src/main/res/values-mk/strings.xml b/app/src/main/res/values-mk/strings.xml index 1c20d80a..78a0491f 100644 --- a/app/src/main/res/values-mk/strings.xml +++ b/app/src/main/res/values-mk/strings.xml @@ -1,6 +1,6 @@ - За Проектот + За Директни Пораки Опции Превземи @@ -25,23 +25,23 @@ Коментари Активности Важни Приказни: %s - Провери за надоградба при почеток на апликацијата - Превземи постови во фолдерот со кориснички имиња - Означи ги приказните како видени после нивно отварање + Провери за ажурирање + Превземи објави во папката со кориснички имиња + Означи ги приказните како видени Авторот на приказната ќе знае дека сте ја погледнале приказната - Означи порака како видена при отварање - Другите членови ќе знаат дека си ја виделе содржината на пораката + Означи порака како видена + Другите членови ќе знаат дека сте ја виделе содржината на пораката Овозможи нотификации Сортирање на објави - Фатална Грека при отварање на профилот!\nПробајте повторно да се логирате и да пребарате. - Фатална Грешка при креирање на фолдер(и). - Зачувај во сопствена папка - Одбери фолдер + Грешка при отварање на профилот!\nПробајте повторно. + Фатална Грешка при креирање на папка(и). + Зачувај во друга папка + Одбери папка Тема - Влијае само на корисниците кои се логирани: + Влијае само на корисниците кои се најавени: Влијае на анонимните корисници: Користи Instadp за профили со висока резолуција - Експорт/Импорт + Импорт/Експорт Јазик %s Објава @@ -51,10 +51,11 @@ %s Следач %s Следачи - %s Следбеници + %s Следиш Autoplay на видеа Секогаш гледај видеа без звук - Селектирај што сакаш да превземеш + Секогаш прикажувај наслов + Одбери што сакаш да превземеш Тековен Цел Албум Прикажи приказни @@ -70,7 +71,7 @@ Одговор… Одговарњето беше успешно! - %d одговор со просек од %s + %d одговор со просек %s %d одговори со просек %s Твојот одговор: %s @@ -80,23 +81,23 @@ Лизгач Вие веќе одговоривте! Спомнувања - Овoј корисник има приватен профил + Корисникот има приватен профил Наме да можете да гледате објави и приказни од овој корисник ако го Одследите! Дали сте сигурни? - Можете да се логирате преку Повеќе -> Акаунт кој се наоѓа долу десно или можете да гледате Отворени акаунти без да се логирате! + Можете да се најавите преку Повеќе -> Корисничата сметка која се наоѓа долу десно или само можете да гледате Отворени профили без да се логирате! Можете да лизгате со прстот лево/десно за да се движите помеѓу опции, или пребарајте некој корисник долу! Овој корисник нема објави Не постојат такви објави! - Инсталирана верзија: v%s + Сегашна верзија: v%s прочитај повеќе… - Логирај се - Одлогирај се + Најави се + Одјави се Пребарувај инстаграм анонимно Отстрани ги сите кориснички сметки Ова ќе ги отстране сите кориснички сметки од апликацијата!\n За да отстраните само една корисничка сметка држете со прстот на сметката\n Дали сакате да продолжите? Формат на датум Лајкнато Зачувано - Тагнато + Означен Порака Лајк Дислајк @@ -106,32 +107,32 @@ Одследи Омилен Одомилен - Блокни + Блокирај Одблокни Ограничи Одограничи Копирај био Преведи био Блиски - Оние кои ги следиш + Следиш Следач - Мапа + Карта Експорт Импорт - Експортни Логирање - Акаунт + Експортни Најава + Корисничка сметка Подесувања Омилени Импортирај Опции - Импортирај Логирање - Импортирај Акаунти + Импортирај Најава + Импортирај кориснички сметки Импортирај Омилени Успешно импортирање! Неуспешно Импортирање! Успешно експортиање! Неуспешно експортиање! Полето за лозинка е празно! - Рефреширај + Обнови Превземи колачиња Десктоп изглед Користи свој формат @@ -139,8 +140,8 @@ Формат на време Формат на датум Преглед - Премести ги местата на датата и времето - Неможе да избришите сметка во корист + Замени ги местата на датумот и времето + Неможе да избришите сметка која се користи Дали сте сигурни дека сакате да избришите \'%s\'? Отвори Профил Погледни приказна @@ -178,20 +179,20 @@ Кикни Поранешни корисници Превземи директно - Превземи објави од твојот смарт-телефон! + Превземи објави во твојот телефон! Се превземаат објава(ви) - Ве молиме одобрете ги дозволите и пробајте повторно да превземите! + Ве молиме дозволете ги барањата и пробајте повторно да превземите! Превзмањето започна - Превземањето е готово + Преземањето е завршено Превземање на Објава… Се превзема медиум Се превзема профилната слика - Фајлот беше превземен во фолдерот Downloads! + Фајлот беше превземен во папката Downloads! Непозната Фатална Грешка!!! - Фатална грешка при креирање фолдер! + Фатална грешка при креирање папка! Фатална грешка при превзамање фајл Можете само 100 постови наеднаш да превземите. Не бидете алчни! - Копирај username + Копирај корисничко име Копирај Коментар Прегледај лајкови на коментар Одговори на коментар @@ -238,26 +239,26 @@ %d лајкови на коментари %d корисничи тагови %d лајкови - Се одлогиравте пред да кликните на нотификацијата?! + Се одјавивте пред да притисните на нотификацијата?! Објави Профил Повеќе Пораки %d селктирано - Успешно се одлогиравте! + Успешно се одјавивте! Информации - Означи како видено(seen) - Прескокни надоградување + Означи како видено + Прескокни ажурирање Верзија Почетна страна - Генерално - Тема + Општо + Изглед Превземања Јазик Сметка - Сегашното логирање не работи? Едноставно само релогирајте се. - Додади сметка - Лиценца (English only) + Сегашното најавување не работи? Пробајте повторно. + Додадете сметка + Лиценца (само на Англиски) Посете ја нашата веб-страна Пронајдете подршка, дискутирајте, запознајте се со други, и забавувајте се! Погледнете го изворниот код на GitHub diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 8f1b8d04..413f734d 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -54,6 +54,7 @@ %s Volgend Video\'s automatisch afspelen Video\'s altijd dempen + Always show post captions Selecteer wat je wil downloaden Huidige Volledige Album diff --git a/app/src/main/res/values-or/strings.xml b/app/src/main/res/values-or/strings.xml index 12c423a6..1e4c9253 100644 --- a/app/src/main/res/values-or/strings.xml +++ b/app/src/main/res/values-or/strings.xml @@ -54,6 +54,7 @@ %s ଅନୁସରଣ କରୁଛନ୍ତି ଭିଡ଼ିଓ ସ୍ୱତଃ ଚାଲୁ କର ସର୍ବଦା ଭିଡ଼ିଓକୁ ଶବ୍ଦହୀନ ରଖ + Always show post captions ଡାଉନଲୋଡ଼ କରିବା ପାଇଁ ଚୟନ କରନ୍ତୁ ସମ୍ପ୍ରତି ସମସ୍ତ ଆଲବମ diff --git a/app/src/main/res/values-pl/arrays.xml b/app/src/main/res/values-pl/arrays.xml index 8eadec1f..b60ed297 100644 --- a/app/src/main/res/values-pl/arrays.xml +++ b/app/src/main/res/values-pl/arrays.xml @@ -30,9 +30,9 @@ Jasny - Instagram default (Unread then read) - From newest to oldest - From oldest to newest + Domyślne ustawienia + Od najnowszych do najstarszych + Od najstarszych do najnowszych Brak diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 98731019..ce85a0cb 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -32,7 +32,7 @@ Oznacz wiadomość jako przeczytaną Inni użytkownicy będą wiedzieli, że to wyświetliłeś Włącz powiadomienia o aktywności - Feed stories sort + Sortowanie relacji Błąd ładowania profilu!\nSpróbuj zalogować się i wyszukać ponownie. Błąd podczas tworzenia folderu(ów) pobierania. Zapisz w folderze niestandardowym @@ -58,6 +58,7 @@ %s obserwowanych Automatyczne odtwarzanie filmów Zawsze wyciszaj filmy + Zawsze pokazuj napisy postów Wybierz, co chcesz pobrać Bieżący Cały album @@ -234,8 +235,8 @@ Aplikacja uległa awarii Ups.. aplikacja uległa awarii, ale nie martw się, możesz wysłać raport o błędzie do dewelopera, aby pomóc mu rozwiązać ten problem (: Aktywność - Story archive - Suggested users + Archiwum relacji + Proponowani użytkownicy Wybierz obraz Przesyłanie… Masz: @@ -248,7 +249,7 @@ Aktualności Profil Więcej - Wiadomość bezpośrednia + PW %d wybranych Wylogowano pomyślnie! Informacje @@ -315,7 +316,7 @@ Usuń Komentarz Układ - Feed stories + Relacje Otwieranie wpisu... Udostępnij Styl układu @@ -345,10 +346,10 @@ %d komentarzy - %s story - %s stories - %s stories - %s stories + %s relacja + %s relacji + %s relacji + %s relacji Nie przyznano uprawnień do pamięci! diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index b1110631..37401860 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -54,6 +54,7 @@ %s Seguindo Reprodução automática de vídeos Sempre silenciar vídeos + Sempre mostrar as legendas das publicações Selecionar o que baixar Atual Álbum Inteiro @@ -266,7 +267,7 @@ Atribuições de terceiros São usadas as seguintes bibliotecas de código aberto de terceiros: Lembrete - Por favor, use este app com responsabilidade. Imagens baixadas devem ser usadas apenas para fins permitidos pelas leis aplicáveis. + Por favor, use este aplicativo de forma responsável. As imagens baixadas só devem ser usadas para fins permitidos pelas leis aplicáveis. Branco Preto Tema claro diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 127c8561..e406aa06 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -58,6 +58,7 @@ %s Последователей Автовоспроизведение видео Всегда заглушать видео + Всегда отображать подписи к постам Выберите, что скачивать Текущая Целый альбом diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 15a7eb30..64868a28 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -58,6 +58,7 @@ %s Sleduje Automaticky prehrávať videá Vždy stíšiť videá + Vždy zobraziť popis príspevku Vybrať čo stiahnuť Aktuálne Celý album diff --git a/app/src/main/res/values-tr/arrays.xml b/app/src/main/res/values-tr/arrays.xml index 05352c26..1930ed22 100644 --- a/app/src/main/res/values-tr/arrays.xml +++ b/app/src/main/res/values-tr/arrays.xml @@ -30,9 +30,9 @@ Açık - Instagram default (Unread then read) - From newest to oldest - From oldest to newest + Instagram varsayılanı (önce görülmemişler sonra görülmüşler) + Yeniden eskiye + Eskiden yeniye Hiçbiri diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 9a3abe08..8ec4ea5f 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -32,7 +32,7 @@ DM\'leri gördükten sonra görüldü olarak işaretle Diğerleri gördüğünüzü bilecek Hareketler için bildirimleri aktifleştir - Feed stories sort + Hikaye akışını sınıflandır Profili yüklerken hata oluştu!\nGiriş yapıp tekrar deneyin. İndirilenler klasörü(leri) oluşturulamadı. Şu klasöre kaydet: @@ -54,6 +54,7 @@ %s Takip Videoları otomatik oynat Videoları her zaman sustur + Gönderi başlıklarını her zaman göster İndirmek için seçin Güncel Tüm Albüm @@ -228,8 +229,8 @@ Uygulama çöktü Amanın.. uygulama çöktü, ama telaşlanma. Geliştiriciye hata raporu yollayarak sorunun çözülmesine yardımcı olabilirsin. (: Hareketler - Story archive - Suggested users + Hikaye arşivi + Önerilen kullanıcılar Resim Seç Yükleniyor… Sahip olduğun: @@ -309,7 +310,7 @@ Sil Yorum yap Yerleşim - Feed stories + Hikaye akışı Gönderi açılıyor... Paylaş Yerleşim biçimi @@ -335,8 +336,8 @@ %d yorum - %s story - %s stories + %s hikaye + %s hikaye Depolama izni verilmedi! diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index c982d455..12ff297c 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -52,6 +52,7 @@ %s Following Tự động phát video Luôn luôn tắt âm thanh video + Always show post captions Chọn cái để tải xuống Hiện tại Cả album diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 23924d65..877382cd 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -52,6 +52,7 @@ %s 关注 自动播放视频 视频默认静音 + 总是显示帖子标题 选择要下载的 当前照片 整个图集 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 099c45db..87d35a40 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -52,6 +52,7 @@ %s 追蹤中 自動播放影片 永遠自動靜音影片 + Always show post captions 選擇要下載的內容 當前照片 整個相簿 From 90de5bd23e1d4881d6b863a47dcde7e86e0e2e5c Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Sun, 14 Feb 2021 17:58:31 -0500 Subject: [PATCH 04/11] contributors --- .all-contributorsrc | 64 ++++++++++++++++++++++++++++++++++++++------- README.md | 21 ++++++++++----- 2 files changed, 68 insertions(+), 17 deletions(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index 3e8bb4a7..34959778 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -91,16 +91,6 @@ "question" ] }, - { - "login": "alin-1", - "name": "ALIN", - "avatar_url": "https://avatars2.githubusercontent.com/u/13281020?v=4", - "profile": "https://alin.atwebpages.com/", - "contributions": [ - "bug", - "ideas" - ] - }, { "login": "RickyM7", "name": "Ricardo", @@ -131,6 +121,15 @@ "translation" ] }, + { + "login": "avtkal", + "name": "avtkal", + "avatar_url": "https://avatars.githubusercontent.com/u/63205014?v=4", + "profile": "https://github.com/avtkal", + "contributions": [ + "translation" + ] + }, { "login": "cizordj", "name": "Cézar Augusto", @@ -140,6 +139,15 @@ "translation" ] }, + { + "login": "dimitrist19", + "name": "Dimitris T", + "avatar_url": "https://avatars.githubusercontent.com/u/56406468?v=4", + "profile": "https://github.com/dimitrist19", + "contributions": [ + "translation" + ] + }, { "login": "farzadx", "name": "farzadx", @@ -194,6 +202,15 @@ "translation" ] }, + { + "login": "GenosseFlosse", + "name": "GenosseFlosse", + "avatar_url": "https://avatars.githubusercontent.com/u/59205524?v=4", + "profile": "https://github.com/GenosseFlosse", + "contributions": [ + "translation" + ] + }, { "login": "kernoeb", "name": "kernoeb", @@ -275,6 +292,15 @@ "translation" ] }, + { + "login": "sandboiii", + "name": "Alexey Peschany", + "avatar_url": "https://avatars.githubusercontent.com/u/17468894?v=4", + "profile": "https://gitlab.com/sandboiii", + "contributions": [ + "translation" + ] + }, { "login": "Still34", "name": "Still Hsu", @@ -302,6 +328,15 @@ "translation" ] }, + { + "login": "wokija", + "name": "wokija", + "avatar_url": "https://avatars.githubusercontent.com/u/14982166?v=4", + "profile": "https://github.com/wokija", + "contributions": [ + "translation" + ] + }, { "login": "ysakamoto", "name": "ysakamoto", @@ -310,6 +345,15 @@ "contributions": [ "translation" ] + }, + { + "login": "ZDVokoun", + "name": "ZDVokoun", + "avatar_url": "https://avatars.githubusercontent.com/u/76393152?v=4", + "profile": "https://github.com/ZDVokoun", + "contributions": [ + "translation" + ] } ], "contributorsPerLine": 6, diff --git a/README.md b/README.md index ee6ef309..77e3e1dc 100755 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](http://makeapullrequest.com) [![GPLv3 license](https://img.shields.io/badge/License-GPLv3-blue.svg)](./LICENSE) [![GitHub stars](https://img.shields.io/github/stars/austinhuang0131/instagrabber.svg?style=social&label=Star)](https://GitHub.com/austinhuang0131/barinsta/stargazers/) -[![All Contributors](https://img.shields.io/badge/all_contributors-32-orange.svg)](#contributors) +[![All Contributors](https://img.shields.io/badge/all_contributors-37-orange.svg)](#contributors) Instagram client; previously known as InstaGrabber. @@ -64,39 +64,46 @@ Prominent contributors are listed here in the [all-contributors](https://allcont
Kevin Thomas

💵
Shadowspear123

📝 🐛 🤔 💬 -
ALIN

🐛 🤔
Ricardo

🐛 🌍
Airikr

🤔 💬
Akrai

🤔 🌍 +
avtkal

🌍
Cézar Augusto

🌍 +
Dimitris T

🌍
farzadx

🌍
Fatih Aydın

🌍
fouze555

🌍
Galang23

🌍 -
Initdebugs

🌍 +
Initdebugs

🌍
Jakub Janek

🌍 +
GenosseFlosse

🌍
kernoeb

🌍
MoaufmKlo

🌍
nalinalini

🌍 -
peterge1998

🌍 -
PierreM0

🌍 +
peterge1998

🌍 +
PierreM0

🌍
RAMAR-RAR

🌍
rohang02

🌍
retiolus

🌍
rikishi0071

🌍 -
Still Hsu

🌍 -
Ten_Lego

🌍 +
Alexey Peschany

🌍 +
Still Hsu

🌍 +
Ten_Lego

🌍
wagnim

🌍 +
wokija

🌍
ysakamoto

🌍 + +
ZDVokoun

🌍 + From a623022934b2981f71009031b982d6b7a018371b Mon Sep 17 00:00:00 2001 From: sigaloid <69441971+sigaloid@users.noreply.github.com> Date: Thu, 18 Feb 2021 21:53:31 +0000 Subject: [PATCH 05/11] Increase thread message limit I've had no issues going as high as 40 messages every few seconds. May make the loading time longer, though. I think a slider in the settings to set the thread and thread message limit would be ideal, since I rarely want to load any more than the top 2-3 threads, but it would be better to load more messages in those threads. But on my device, 10 is too low and a lot of time is spent loading old messages. --- .../awais/instagrabber/webservices/DirectMessagesService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/awais/instagrabber/webservices/DirectMessagesService.java b/app/src/main/java/awais/instagrabber/webservices/DirectMessagesService.java index c4db80f2..2b3670c9 100644 --- a/app/src/main/java/awais/instagrabber/webservices/DirectMessagesService.java +++ b/app/src/main/java/awais/instagrabber/webservices/DirectMessagesService.java @@ -413,7 +413,7 @@ public class DirectMessagesService extends BaseService { public Call fetchPendingInbox(final String cursor, final long seqId) { final ImmutableMap.Builder queryMapBuilder = ImmutableMap.builder() .put("visual_message_return_type", "unseen") - .put("thread_message_limit", 10) + .put("thread_message_limit", 20) .put("persistentBadging", true) .put("limit", 10); if (!TextUtils.isEmpty(cursor)) { From bbe3d9c5887d220bf0a8046196d58e76072d1066 Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Thu, 18 Feb 2021 19:51:09 -0500 Subject: [PATCH 06/11] general maintenance 1. Close #689 2. Greek and Basque 3. Fix/add several strings 4. Fix launch crash 5. Fix staggered grid sidecar bug --- .../instagrabber/InstaGrabberApplication.java | 12 ---- .../viewholder/FeedGridItemViewHolder.java | 4 ++ .../DirectInboxItemViewHolder.java | 69 ++++++++++--------- .../viewholder/feed/FeedItemViewHolder.java | 28 ++++---- .../fragments/StoryListViewerFragment.java | 18 +++-- .../awais/instagrabber/utils/FlavorTown.java | 13 +++- .../awais/instagrabber/utils/LocaleUtils.java | 44 ++++++------ .../instagrabber/utils/UserAgentUtils.java | 4 +- .../webservices/StoriesService.java | 1 - app/src/main/res/values/arrays.xml | 2 + app/src/main/res/values/strings.xml | 24 ++++++- 11 files changed, 128 insertions(+), 91 deletions(-) diff --git a/app/src/main/java/awais/instagrabber/InstaGrabberApplication.java b/app/src/main/java/awais/instagrabber/InstaGrabberApplication.java index 6d3d4f7d..c5cd0d69 100644 --- a/app/src/main/java/awais/instagrabber/InstaGrabberApplication.java +++ b/app/src/main/java/awais/instagrabber/InstaGrabberApplication.java @@ -12,13 +12,11 @@ import com.facebook.imagepipeline.core.ImagePipelineConfig; import java.net.CookieHandler; import java.text.SimpleDateFormat; import java.util.UUID; -import java.util.concurrent.ThreadLocalRandom; import awais.instagrabber.utils.Constants; import awais.instagrabber.utils.LocaleUtils; import awais.instagrabber.utils.SettingsHelper; import awais.instagrabber.utils.TextUtils; -import awais.instagrabber.utils.UserAgentUtils; import awaisomereport.CrashReporter; import awaisomereport.LogCollector; @@ -87,15 +85,5 @@ public final class InstaGrabberApplication extends Application { if (TextUtils.isEmpty(settingsHelper.getString(Constants.DEVICE_UUID))) { settingsHelper.putString(Constants.DEVICE_UUID, UUID.randomUUID().toString()); } - - if (settingsHelper.getInteger(Constants.BROWSER_UA_CODE) == -1) { - int randomNum = ThreadLocalRandom.current().nextInt(0, UserAgentUtils.browsers.length); - settingsHelper.putInteger(Constants.BROWSER_UA_CODE, randomNum); - } - - if (settingsHelper.getInteger(Constants.APP_UA_CODE) == -1) { - int randomNum = ThreadLocalRandom.current().nextInt(0, UserAgentUtils.devices.length); - settingsHelper.putInteger(Constants.APP_UA_CODE, randomNum); - } } } \ No newline at end of file diff --git a/app/src/main/java/awais/instagrabber/adapters/viewholder/FeedGridItemViewHolder.java b/app/src/main/java/awais/instagrabber/adapters/viewholder/FeedGridItemViewHolder.java index 81e60562..c6e1d571 100644 --- a/app/src/main/java/awais/instagrabber/adapters/viewholder/FeedGridItemViewHolder.java +++ b/app/src/main/java/awais/instagrabber/adapters/viewholder/FeedGridItemViewHolder.java @@ -83,6 +83,10 @@ public class FeedGridItemViewHolder extends RecyclerView.ViewHolder { final Media child = sliderItems.get(0); if (child != null) { thumbnailUrl = ResponseBodyUtils.getThumbUrl(child); + if (layoutPreferences.getType() == STAGGERED_GRID) { + final float childAspectRatio = (float) child.getOriginalWidth() / child.getOriginalHeight(); + binding.postImage.setAspectRatio(childAspectRatio); + } } } typeIconRes = R.drawable.ic_checkbox_multiple_blank_stroke; diff --git a/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectInboxItemViewHolder.java b/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectInboxItemViewHolder.java index 9ce8ed84..a4e9042e 100644 --- a/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectInboxItemViewHolder.java +++ b/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectInboxItemViewHolder.java @@ -1,5 +1,6 @@ package awais.instagrabber.adapters.viewholder.directmessages; +import android.content.res.Resources; import android.graphics.Typeface; import android.view.View; @@ -126,13 +127,14 @@ public final class DirectInboxItemViewHolder extends RecyclerView.ViewHolder { private void setSubtitle(@NonNull final DirectThread thread) { // If there is an unopened raven media, give it highest priority + final Resources resources = itemView.getResources(); final DirectThreadDirectStory directStory = thread.getDirectStory(); final long viewerId = thread.getViewerId(); if (directStory != null && !directStory.getItems().isEmpty()) { final DirectItem item = directStory.getItems().get(0); final MediaItemType mediaType = item.getVisualMedia().getMedia().getMediaType(); - final String username = getUsername(thread.getUsers(), item.getUserId(), viewerId); - final String subtitle = getMediaSpecificSubtitle(username, mediaType); + final String username = getUsername(thread.getUsers(), item.getUserId(), viewerId, resources); + final String subtitle = getMediaSpecificSubtitle(username, resources, mediaType); binding.subtitle.setText(subtitle); return; } @@ -144,7 +146,7 @@ public final class DirectInboxItemViewHolder extends RecyclerView.ViewHolder { final String username = getUsername(thread.getUsers(), senderId, viewerId); String message = ""; if (itemType == null) { - message = "Unsupported message"; + message = resources.getString(R.string.dms_inbox_raven_message_unknown); } else { switch (itemType) { case TEXT: @@ -160,20 +162,20 @@ public final class DirectInboxItemViewHolder extends RecyclerView.ViewHolder { message = item.getPlaceholder().getMessage(); break; case MEDIA_SHARE: - subtitle = String.format("%s shared a post", username != null ? username : ""); + subtitle = resources.getString(R.string.dms_inbox_shared_post, username != null ? username : "", item.getMediaShare().getUser().getUsername()); break; case ANIMATED_MEDIA: - subtitle = String.format("%s shared a gif", username != null ? username : ""); + subtitle = resources.getString(R.string.dms_inbox_shared_gif, username != null ? username : ""); break; case PROFILE: - subtitle = String.format("%s shared a profile: @%s", username != null ? username : "", item.getProfile().getUsername()); + subtitle = resources.getString(R.string.dms_inbox_shared_profile, username != null ? username : "", item.getProfile().getUsername()); break; case LOCATION: - subtitle = String.format("%s shared a location: %s", username != null ? username : "", item.getLocation().getName()); + subtitle = resources.getString(R.string.dms_inbox_shared_location, username != null ? username : "", item.getLocation().getName()); break; case MEDIA: { final MediaItemType mediaType = item.getMedia().getMediaType(); - subtitle = getMediaSpecificSubtitle(username, mediaType); + subtitle = getMediaSpecificSubtitle(username, resources, mediaType); break; } case STORY_SHARE: { @@ -181,17 +183,16 @@ public final class DirectInboxItemViewHolder extends RecyclerView.ViewHolder { if (reelType == null) { subtitle = item.getStoryShare().getTitle(); } else { - String format = "%s shared a story by @%s"; - if (reelType.equals("highlight_reel")) { - format = "%s shared a story highlight by @%s"; - } - subtitle = String.format(format, username != null ? username : "", + final int format = reelType.equals("highlight_reel") + ? R.string.dms_inbox_shared_highlight + : R.string.dms_inbox_shared_story; + subtitle = resources.getString(format, username != null ? username : "", item.getStoryShare().getMedia().getUser().getUsername()); } break; } case VOICE_MEDIA: - subtitle = String.format("%s sent a voice message", username != null ? username : ""); + subtitle = resources.getString(R.string.dms_inbox_shared_voice, username != null ? username : ""); break; case ACTION_LOG: subtitle = item.getActionLog().getDescription(); @@ -200,15 +201,15 @@ public final class DirectInboxItemViewHolder extends RecyclerView.ViewHolder { subtitle = item.getVideoCallEvent().getDescription(); break; case CLIP: - subtitle = String.format("%s shared a clip by @%s", username != null ? username : "", - item.getClip().getClip().getUser().getUsername()); + subtitle = resources.getString(R.string.dms_inbox_shared_clip, username != null ? username : "", + item.getClip().getClip().getUser().getUsername()); break; case FELIX_SHARE: - subtitle = String.format("%s shared an IGTV video by @%s", username != null ? username : "", - item.getFelixShare().getVideo().getUser().getUsername()); + subtitle = resources.getString(R.string.dms_inbox_shared_igtv, username != null ? username : "", + item.getFelixShare().getVideo().getUser().getUsername()); break; case RAVEN_MEDIA: - subtitle = getRavenMediaSubtitle(item, username); + subtitle = getRavenMediaSubtitle(item, resources, username); break; case REEL_SHARE: final DirectItemReelShare reelShare = item.getReelShare(); @@ -220,9 +221,9 @@ public final class DirectInboxItemViewHolder extends RecyclerView.ViewHolder { switch (reelType) { case "reply": if (viewerId == item.getUserId()) { - subtitle = String.format("You replied to their story: %s", reelShare.getText()); + subtitle = resources.getString(R.string.dms_inbox_replied_story_outgoing, reelShare.getText()); } else { - subtitle = String.format("%s replied to your story: %s", username != null ? username : "", reelShare.getText()); + subtitle = resources.getString(R.string.dms_inbox_replied_story_incoming, username != null ? username : "", reelShare.getText()); } break; case "mention": @@ -230,17 +231,17 @@ public final class DirectInboxItemViewHolder extends RecyclerView.ViewHolder { // You mentioned the other person final long mentionedUserId = item.getReelShare().getMentionedUserId(); final String otherUsername = getUsername(thread.getUsers(), mentionedUserId, viewerId); - subtitle = String.format("You mentioned @%s in your story", otherUsername); + subtitle = resources.getString(R.string.dms_inbox_mentioned_story_outgoing, otherUsername); } else { // They mentioned you - subtitle = String.format("%s mentioned you in their story", username != null ? username : ""); + subtitle = resources.getString(R.string.dms_inbox_mentioned_story_incoming, username != null ? username : ""); } break; case "reaction": if (viewerId == item.getUserId()) { - subtitle = String.format("You reacted to their story: %s", reelShare.getText()); + subtitle = resources.getString(R.string.dms_inbox_reacted_story_outgoing, reelShare.getText()); } else { - subtitle = String.format("%s reacted to your story: %s", username != null ? username : "", reelShare.getText()); + subtitle = resources.getString(R.string.dms_inbox_reacted_story_incoming, username != null ? username : "", reelShare.getText()); } break; default: @@ -249,7 +250,7 @@ public final class DirectInboxItemViewHolder extends RecyclerView.ViewHolder { } break; default: - message = "Unsupported message"; + message = resources.getString(R.string.dms_inbox_raven_message_unknown); } } if (subtitle == null) { @@ -263,10 +264,10 @@ public final class DirectInboxItemViewHolder extends RecyclerView.ViewHolder { binding.subtitle.setText(subtitle != null ? subtitle : ""); } - private String getMediaSpecificSubtitle(final String username, final MediaItemType mediaType) { - final String userSharedAnImage = String.format("%s shared an image", username != null ? username : ""); - final String userSharedAVideo = String.format("%s shared a video", username != null ? username : ""); - final String userSentAMessage = String.format("%s sent a message", username != null ? username : ""); + private String getMediaSpecificSubtitle(final String username, final Resources resources, final MediaItemType mediaType) { + final String userSharedAnImage = resources.getString(R.string.dms_inbox_shared_image, username != null ? username : ""); + final String userSharedAVideo = resources.getString(R.string.dms_inbox_shared_video, username != null ? username : ""); + final String userSentAMessage = resources.getString(R.string.dms_inbox_shared_message, username != null ? username : ""); String subtitle; switch (mediaType) { case MEDIA_TYPE_IMAGE: @@ -283,6 +284,7 @@ public final class DirectInboxItemViewHolder extends RecyclerView.ViewHolder { } private String getRavenMediaSubtitle(final DirectItem item, + final Resources resources, final String username) { String subtitle = "↗ "; final DirectItemVisualMedia visualMedia = item.getVisualMedia(); @@ -325,15 +327,16 @@ public final class DirectInboxItemViewHolder extends RecyclerView.ViewHolder { return subtitle; } final MediaItemType mediaType = visualMedia.getMedia().getMediaType(); - subtitle = getMediaSpecificSubtitle(username, mediaType); + subtitle = getMediaSpecificSubtitle(username, resources, mediaType); return subtitle; } private String getUsername(final List users, final long userId, - final long viewerId) { + final long viewerId, + final Resources resources) { if (userId == viewerId) { - return "You"; + return resources.getString(R.string.you); } final Optional senderOptional = users.stream() .filter(Objects::nonNull) diff --git a/app/src/main/java/awais/instagrabber/adapters/viewholder/feed/FeedItemViewHolder.java b/app/src/main/java/awais/instagrabber/adapters/viewholder/feed/FeedItemViewHolder.java index 9184b895..2def1d07 100644 --- a/app/src/main/java/awais/instagrabber/adapters/viewholder/feed/FeedItemViewHolder.java +++ b/app/src/main/java/awais/instagrabber/adapters/viewholder/feed/FeedItemViewHolder.java @@ -115,19 +115,21 @@ public abstract class FeedItemViewHolder extends RecyclerView.ViewHolder { private void setupLocation(@NonNull final Media media) { final Location location = media.getLocation(); - final String locationName = location.getName(); - if (TextUtils.isEmpty(locationName)) { - topBinding.location.setVisibility(View.GONE); - topBinding.title.setLayoutParams(new RelativeLayout.LayoutParams( - RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT - )); - } else { - topBinding.location.setVisibility(View.VISIBLE); - topBinding.location.setText(locationName); - topBinding.title.setLayoutParams(new RelativeLayout.LayoutParams( - RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT - )); - topBinding.location.setOnClickListener(v -> feedItemCallback.onLocationClick(media)); + if (location != null) { + final String locationName = location.getName(); + if (TextUtils.isEmpty(locationName)) { + topBinding.location.setVisibility(View.GONE); + topBinding.title.setLayoutParams(new RelativeLayout.LayoutParams( + RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT + )); + } else { + topBinding.location.setVisibility(View.VISIBLE); + topBinding.location.setText(locationName); + topBinding.title.setLayoutParams(new RelativeLayout.LayoutParams( + RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT + )); + topBinding.location.setOnClickListener(v -> feedItemCallback.onLocationClick(media)); + } } } diff --git a/app/src/main/java/awais/instagrabber/fragments/StoryListViewerFragment.java b/app/src/main/java/awais/instagrabber/fragments/StoryListViewerFragment.java index c712c058..880af8f5 100644 --- a/app/src/main/java/awais/instagrabber/fragments/StoryListViewerFragment.java +++ b/app/src/main/java/awais/instagrabber/fragments/StoryListViewerFragment.java @@ -87,12 +87,20 @@ public final class StoryListViewerFragment extends Fragment implements SwipeRefr private final ServiceCallback cb = new ServiceCallback() { @Override public void onSuccess(final ArchiveFetchResponse result) { - endCursor = result.getNextCursor(); - final List models = archivesViewModel.getList().getValue(); - final List modelsCopy = models == null ? new ArrayList<>() : new ArrayList<>(models); - modelsCopy.addAll(result.getResult()); - archivesViewModel.getList().postValue(modelsCopy); binding.swipeRefreshLayout.setRefreshing(false); + if (result == null) { + try { + final Context context = getContext(); + Toast.makeText(context, R.string.empty_list, Toast.LENGTH_SHORT).show(); + } catch (Exception ignored) {} + } + else { + endCursor = result.getNextCursor(); + final List models = archivesViewModel.getList().getValue(); + final List modelsCopy = models == null ? new ArrayList<>() : new ArrayList<>(models); + modelsCopy.addAll(result.getResult()); + archivesViewModel.getList().postValue(modelsCopy); + } } @Override diff --git a/app/src/main/java/awais/instagrabber/utils/FlavorTown.java b/app/src/main/java/awais/instagrabber/utils/FlavorTown.java index d37d1ce9..de4f7cb6 100755 --- a/app/src/main/java/awais/instagrabber/utils/FlavorTown.java +++ b/app/src/main/java/awais/instagrabber/utils/FlavorTown.java @@ -21,6 +21,7 @@ import androidx.appcompat.app.AppCompatActivity; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Locale; +import java.util.concurrent.ThreadLocalRandom; import javax.security.cert.CertificateException; import javax.security.cert.X509Certificate; @@ -103,10 +104,18 @@ public final class FlavorTown { public static void changelogCheck(@NonNull final Context context) { if (settingsHelper.getInteger(Constants.PREV_INSTALL_VERSION) < BuildConfig.VERSION_CODE) { - final int appUaCode = settingsHelper.getInteger(Constants.APP_UA_CODE); + int appUaCode = settingsHelper.getInteger(Constants.APP_UA_CODE); + int browserUaCode = settingsHelper.getInteger(Constants.BROWSER_UA_CODE); + if (browserUaCode == -1) { + browserUaCode = ThreadLocalRandom.current().nextInt(0, UserAgentUtils.browsers.length); + settingsHelper.putInteger(Constants.BROWSER_UA_CODE, browserUaCode); + } + if (appUaCode == -1) { + appUaCode = ThreadLocalRandom.current().nextInt(0, UserAgentUtils.devices.length); + settingsHelper.putInteger(Constants.APP_UA_CODE, appUaCode); + } final String appUa = UserAgentUtils.generateAppUA(appUaCode, LocaleUtils.getCurrentLocale().getLanguage()); settingsHelper.putString(Constants.APP_UA, appUa); - final int browserUaCode = settingsHelper.getInteger(Constants.BROWSER_UA_CODE); final String browserUa = UserAgentUtils.generateBrowserUA(browserUaCode); settingsHelper.putString(Constants.BROWSER_UA, browserUa); Toast.makeText(context, R.string.updated, Toast.LENGTH_SHORT).show(); diff --git a/app/src/main/java/awais/instagrabber/utils/LocaleUtils.java b/app/src/main/java/awais/instagrabber/utils/LocaleUtils.java index b9b25462..960bd8a6 100755 --- a/app/src/main/java/awais/instagrabber/utils/LocaleUtils.java +++ b/app/src/main/java/awais/instagrabber/utils/LocaleUtils.java @@ -57,26 +57,30 @@ public final class LocaleUtils { if (TextUtils.isEmpty(appLanguageSettings)) return null; final int appLanguageIndex = Integer.parseInt(appLanguageSettings); - if (appLanguageIndex == 1) return "en"; - if (appLanguageIndex == 2) return "fr"; - if (appLanguageIndex == 3) return "es"; - if (appLanguageIndex == 4) return "zh_CN"; - if (appLanguageIndex == 5) return "in"; - if (appLanguageIndex == 6) return "it"; - if (appLanguageIndex == 7) return "de"; - if (appLanguageIndex == 8) return "pl"; - if (appLanguageIndex == 9) return "tr"; - if (appLanguageIndex == 10) return "pt"; - if (appLanguageIndex == 11) return "fa"; - if (appLanguageIndex == 12) return "mk"; - if (appLanguageIndex == 13) return "vi"; - if (appLanguageIndex == 14) return "zh_TW"; - if (appLanguageIndex == 15) return "ca"; - if (appLanguageIndex == 16) return "ru"; - if (appLanguageIndex == 17) return "hi"; - if (appLanguageIndex == 18) return "nl"; - if (appLanguageIndex == 19) return "sk"; - if (appLanguageIndex == 20) return "ja"; + switch (appLanguageIndex) { + case 1: return "en"; + case 2: return "fr"; + case 3: return "es"; + case 4: return "zh_CN"; + case 5: return "in"; + case 6: return "it"; + case 7: return "de"; + case 8: return "pl"; + case 9: return "tr"; + case 10: return "pt"; + case 11: return "fa"; + case 12: return "mk"; + case 13: return "vi"; + case 14: return "zh_TW"; + case 15: return "ca"; + case 16: return "ru"; + case 17: return "hi"; + case 18: return "nl"; + case 19: return "sk"; + case 20: return "ja"; + case 21: return "el"; + case 22: return "eu"; + } return null; } diff --git a/app/src/main/java/awais/instagrabber/utils/UserAgentUtils.java b/app/src/main/java/awais/instagrabber/utils/UserAgentUtils.java index c9397cdc..63c1f0a1 100644 --- a/app/src/main/java/awais/instagrabber/utils/UserAgentUtils.java +++ b/app/src/main/java/awais/instagrabber/utils/UserAgentUtils.java @@ -18,8 +18,8 @@ public class UserAgentUtils { "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.2 Safari/605.1.15" }; // use APKpure, assume x86 - private static final String igVersion = "169.3.0.30.135"; - private static final String igVersionCode = "264009054"; + private static final String igVersion = "175.1.0.25.119"; + private static final String igVersionCode = "273907115"; // only pick the ones that has width 1440 for maximum download quality public static final String[] devices = { // https://github.com/dilame/instagram-private-api/blob/master/src/samples/devices.json diff --git a/app/src/main/java/awais/instagrabber/webservices/StoriesService.java b/app/src/main/java/awais/instagrabber/webservices/StoriesService.java index 6cd3e43e..bc6ca65a 100644 --- a/app/src/main/java/awais/instagrabber/webservices/StoriesService.java +++ b/app/src/main/java/awais/instagrabber/webservices/StoriesService.java @@ -276,7 +276,6 @@ public class StoriesService extends BaseService { form.put("include_suggested_highlights", "false"); form.put("is_in_archive_home", "true"); form.put("include_cover", "1"); - form.put("timezone_offset", String.valueOf((float) TimeZone.getDefault().getRawOffset() / 1000)); if (!TextUtils.isEmpty(maxId)) { form.put("max_id", maxId); // NOT TESTED } diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 3b5e8a70..49bcf692 100755 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -22,6 +22,8 @@ Nederlands Slovenčina 日本語 + Ελληνικά + Euskara
Auto / Follow System diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4c1c4078..433a642a 100755 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -39,7 +39,7 @@ Error loading profile! Is the username valid? If so, you may be ratelimited. Error loading profile! Is the username valid? Or did they block you? Error loading hashtag! Is the name valid? - Error loading hashtag! Is the URL valid? + Error loading location! Is the URL valid? Error creating Download folder(s). Save to custom folder Select folder @@ -166,7 +166,7 @@ Replied to a story Reacted on a story Mentioned in a story - Unsupported message type + Unsupported message type Open link Copy text Download attachment @@ -174,7 +174,24 @@ Unlike message Unsend message View author profile - Post shared from %s + %s shared a post by @%s + %s shared an image + %s shared a video + %s sent a message + %s shared a gif + %s shared a profile: @%s + %s shared a location: %s + %s shared a story highlight by @%s + %s shared a story by @%s + %s sent a voice message + %s shared a clip by @%s + %s shared an IGTV video by @%s + You replied to their story: %s + %s replied to your story: %s + You reacted to their story: %s + %s reacted to your story: %s + You mentioned @%s in your story + %s mentioned you in their story Unknown media type Media expired! Delivered @@ -431,4 +448,5 @@ Accept request from %1s (%2s)? Decline Accept + You From d10e95c5292a28a25b4fc3a0972ca031c8c8e5b7 Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Thu, 18 Feb 2021 19:57:38 -0500 Subject: [PATCH 07/11] oops, better handling --- .../adapters/viewholder/feed/FeedItemViewHolder.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/awais/instagrabber/adapters/viewholder/feed/FeedItemViewHolder.java b/app/src/main/java/awais/instagrabber/adapters/viewholder/feed/FeedItemViewHolder.java index 2def1d07..860bd027 100644 --- a/app/src/main/java/awais/instagrabber/adapters/viewholder/feed/FeedItemViewHolder.java +++ b/app/src/main/java/awais/instagrabber/adapters/viewholder/feed/FeedItemViewHolder.java @@ -115,7 +115,13 @@ public abstract class FeedItemViewHolder extends RecyclerView.ViewHolder { private void setupLocation(@NonNull final Media media) { final Location location = media.getLocation(); - if (location != null) { + if (location == null) { + topBinding.location.setVisibility(View.GONE); + topBinding.title.setLayoutParams(new RelativeLayout.LayoutParams( + RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT + )); + } + else { final String locationName = location.getName(); if (TextUtils.isEmpty(locationName)) { topBinding.location.setVisibility(View.GONE); From 8950ed488d6092e8df09624e51d57aa62c069cba Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Fri, 19 Feb 2021 17:59:05 -0500 Subject: [PATCH 08/11] actually fix #319 and also convert more hardcoded strings --- .../DirectInboxItemViewHolder.java | 4 +- .../DirectItemRavenMediaViewHolder.java | 15 +++--- .../DirectItemReelShareViewHolder.java | 6 +-- .../DirectItemStoryShareViewHolder.java | 9 ++-- .../directmessages/DirectItemViewHolder.java | 23 +++++---- .../fragments/StoryViewerFragment.java | 48 ++++++++++++++----- .../DirectMessageThreadFragment.java | 9 ++-- app/src/main/res/values/strings.xml | 26 ++++++++++ 8 files changed, 97 insertions(+), 43 deletions(-) diff --git a/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectInboxItemViewHolder.java b/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectInboxItemViewHolder.java index a4e9042e..85373901 100644 --- a/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectInboxItemViewHolder.java +++ b/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectInboxItemViewHolder.java @@ -143,7 +143,7 @@ public final class DirectInboxItemViewHolder extends RecyclerView.ViewHolder { final long senderId = item.getUserId(); final DirectItemType itemType = item.getItemType(); String subtitle = null; - final String username = getUsername(thread.getUsers(), senderId, viewerId); + final String username = getUsername(thread.getUsers(), senderId, viewerId, resources); String message = ""; if (itemType == null) { message = resources.getString(R.string.dms_inbox_raven_message_unknown); @@ -230,7 +230,7 @@ public final class DirectInboxItemViewHolder extends RecyclerView.ViewHolder { if (viewerId == item.getUserId()) { // You mentioned the other person final long mentionedUserId = item.getReelShare().getMentionedUserId(); - final String otherUsername = getUsername(thread.getUsers(), mentionedUserId, viewerId); + final String otherUsername = getUsername(thread.getUsers(), mentionedUserId, viewerId, resources); subtitle = resources.getString(R.string.dms_inbox_mentioned_story_outgoing, otherUsername); } else { // They mentioned you diff --git a/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemRavenMediaViewHolder.java b/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemRavenMediaViewHolder.java index 090bb689..1b68efa6 100644 --- a/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemRavenMediaViewHolder.java +++ b/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemRavenMediaViewHolder.java @@ -10,6 +10,7 @@ import com.facebook.drawee.drawable.ScalingUtils; import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder; import com.facebook.drawee.generic.RoundingParams; +import awais.instagrabber.R; import awais.instagrabber.adapters.DirectItemsAdapter.DirectItemCallback; import awais.instagrabber.databinding.LayoutDmBaseBinding; import awais.instagrabber.databinding.LayoutDmRavenMediaBinding; @@ -118,28 +119,28 @@ public class DirectItemRavenMediaViewHolder extends DirectItemViewHolder { if (viewMode != RavenMediaViewMode.PERMANENT) { final MediaItemType mediaType = media.getMediaType(); final boolean expired = media.getPk() == null; - final String info; + final int info; switch (mediaType) { case MEDIA_TYPE_IMAGE: if (expired) { - info = "Image has expired"; + info = R.string.raven_image_expired; break; } - info = "Image will expire when seen"; + info = R.string.raven_image_info; break; case MEDIA_TYPE_VIDEO: if (expired) { - info = "Video has expired"; + info = R.string.raven_video_expired; break; } - info = "Video will expire when seen"; + info = R.string.raven_video_info; break; default: if (expired) { - info = "Message has expired"; + info = R.string.raven_msg_expired; break; } - info = "Message will expire when seen"; + info = R.string.raven_msg_info; break; } binding.expiryInfo.setVisibility(View.VISIBLE); diff --git a/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemReelShareViewHolder.java b/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemReelShareViewHolder.java index 9abcc8a7..7ae6b5d8 100644 --- a/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemReelShareViewHolder.java +++ b/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemReelShareViewHolder.java @@ -107,7 +107,7 @@ public class DirectItemReelShareViewHolder extends DirectItemViewHolder { private void setReply(final MessageDirection messageDirection, final DirectItemReelShare reelShare, final boolean isSelf) { - final String info = isSelf ? "You replied to their story" : "They replied to your story"; + final int info = isSelf ? R.string.replied_story_outgoing : R.string.replied_story_incoming; binding.shareInfo.setText(info); binding.reaction.setVisibility(View.GONE); final String text = reelShare.getText(); @@ -122,7 +122,7 @@ public class DirectItemReelShareViewHolder extends DirectItemViewHolder { final DirectItemReelShare reelShare, final boolean isSelf, final boolean expired) { - final String info = isSelf ? "You reacted to their story" : "They reacted to your story"; + final int info = isSelf ? R.string.reacted_story_outgoing : R.string.reacted_story_incoming; binding.shareInfo.setText(info); binding.message.setVisibility(View.GONE); final String text = reelShare.getText(); @@ -139,7 +139,7 @@ public class DirectItemReelShareViewHolder extends DirectItemViewHolder { } private void setMention(final boolean isSelf) { - final String info = isSelf ? "You mentioned them in your story" : "Mentioned you in their story"; + final int info = isSelf ? R.string.mentioned_story_outgoing : R.string.mentioned_story_incoming; binding.shareInfo.setText(info); binding.message.setVisibility(View.GONE); binding.reaction.setVisibility(View.GONE); diff --git a/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemStoryShareViewHolder.java b/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemStoryShareViewHolder.java index 869e0ca8..c5a81993 100644 --- a/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemStoryShareViewHolder.java +++ b/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemStoryShareViewHolder.java @@ -1,5 +1,6 @@ package awais.instagrabber.adapters.viewholder.directmessages; +import android.content.res.Resources; import android.view.View; import android.view.ViewGroup; @@ -11,6 +12,7 @@ import com.facebook.drawee.drawable.ScalingUtils; import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder; import com.facebook.drawee.generic.RoundingParams; +import awais.instagrabber.R; import awais.instagrabber.adapters.DirectItemsAdapter.DirectItemCallback; import awais.instagrabber.databinding.LayoutDmBaseBinding; import awais.instagrabber.databinding.LayoutDmStoryShareBinding; @@ -41,17 +43,18 @@ public class DirectItemStoryShareViewHolder extends DirectItemViewHolder { @Override public void bindItem(final DirectItem item, final MessageDirection messageDirection) { - String format = "@%s's story"; + final Resources resources = itemView.getResources(); + int format = R.string.story_share; final String reelType = item.getStoryShare().getReelType(); if (reelType == null || item.getStoryShare().getMedia() == null) { setExpiredStoryInfo(item); return; } if (reelType.equals("highlight_reel")) { - format = "@%s's story highlight"; + format = R.string.story_share_highlight; } final User user = item.getStoryShare().getMedia().getUser(); - final String info = String.format(format, user != null ? user.getUsername() : ""); + final String info = resources.getString(format, user != null ? user.getUsername() : ""); binding.shareInfo.setText(info); binding.text.setVisibility(View.GONE); binding.ivMediaPreview.setController(null); diff --git a/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemViewHolder.java b/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemViewHolder.java index 739a4a66..571568bb 100644 --- a/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemViewHolder.java +++ b/app/src/main/java/awais/instagrabber/adapters/viewholder/directmessages/DirectItemViewHolder.java @@ -224,6 +224,7 @@ public abstract class DirectItemViewHolder extends RecyclerView.ViewHolder imple final List users) { final DirectItem replied = item.getRepliedToMessage(); final DirectItemType itemType = replied.getItemType(); + final Resources resources = itemView.getResources(); String text = null; String url = null; switch (itemType) { @@ -243,7 +244,7 @@ public abstract class DirectItemViewHolder extends RecyclerView.ViewHolder imple url = ResponseBodyUtils.getThumbUrl(replied.getVisualMedia().getMedia().getImageVersions2()); break; case VOICE_MEDIA: - text = "Voice message"; + text = resources.getString(R.string.voice_message); break; case MEDIA_SHARE: Media mediaShare = replied.getMediaShare(); @@ -282,7 +283,7 @@ public abstract class DirectItemViewHolder extends RecyclerView.ViewHolder imple return; } setReplyGravity(messageDirection); - final String info = setReplyInfo(item, replied, users); + final String info = setReplyInfo(item, replied, users, resources); binding.replyInfo.setVisibility(View.VISIBLE); binding.replyInfo.setText(info); binding.quoteLine.setVisibility(View.VISIBLE); @@ -295,7 +296,6 @@ public abstract class DirectItemViewHolder extends RecyclerView.ViewHolder imple } binding.replyImage.setVisibility(View.GONE); final Drawable background = binding.replyText.getBackground().mutate(); - final Resources resources = itemView.getResources(); background.setTint(replied.getUserId() != currentUser.getPk() ? resources.getColor(R.color.grey_600) : resources.getColor(R.color.deep_purple_400)); @@ -306,30 +306,33 @@ public abstract class DirectItemViewHolder extends RecyclerView.ViewHolder imple private String setReplyInfo(final DirectItem item, final DirectItem replied, - final List users) { + final List users, + final Resources resources) { final long repliedToUserId = replied.getUserId(); if (repliedToUserId == item.getUserId() && item.getUserId() == currentUser.getPk()) { // User replied to own message - return "You replied to yourself"; + return resources.getString(R.string.replied_to_yourself); } if (repliedToUserId == item.getUserId()) { // opposite user replied to their own message - return "Replied to themself"; + return resources.getString(R.string.replied_to_themself); } final User user = getUser(repliedToUserId, users); final String repliedToUsername = user != null ? user.getUsername() : ""; if (item.getUserId() == currentUser.getPk()) { - return !thread.isGroup() ? "You replied" : String.format("You replied to %s", repliedToUsername); + return thread.isGroup() + ? resources.getString(R.string.replied_you_group, repliedToUsername) + : resources.getString(R.string.replied_you); } if (repliedToUserId == currentUser.getPk()) { - return "Replied to you"; + return resources.getString(R.string.replied_to_you); } - return String.format("Replied to %s", repliedToUsername); + return resources.getString(R.string.replied_group, repliedToUsername); } private void setForwardInfo(final MessageDirection direction) { binding.replyInfo.setVisibility(View.VISIBLE); - binding.replyInfo.setText(direction == MessageDirection.OUTGOING ? "You forwarded a message" : "Forwarded a message"); + binding.replyInfo.setText(direction == MessageDirection.OUTGOING ? R.string.forward_outgoing : R.string.forward_incoming); } private void setReplyGravity(final MessageDirection messageDirection) { diff --git a/app/src/main/java/awais/instagrabber/fragments/StoryViewerFragment.java b/app/src/main/java/awais/instagrabber/fragments/StoryViewerFragment.java index c7345228..ea38abe8 100644 --- a/app/src/main/java/awais/instagrabber/fragments/StoryViewerFragment.java +++ b/app/src/main/java/awais/instagrabber/fragments/StoryViewerFragment.java @@ -490,15 +490,21 @@ public class StoryViewerFragment extends Fragment { @Override public void onSuccess(final StoryStickerResponse result) { sticking = false; - poll.setMyChoice(w); - Toast.makeText(context, R.string.votef_story_poll, Toast.LENGTH_SHORT).show(); + try { + poll.setMyChoice(w); + Toast.makeText(context, R.string.votef_story_poll, Toast.LENGTH_SHORT).show(); + } + catch (Exception ignored) {} } @Override public void onFailure(final Throwable t) { sticking = false; Log.e(TAG, "Error responding", t); - Toast.makeText(context, R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show(); + try { + Toast.makeText(context, R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show(); + } + catch (Exception ignored) {} } }); } @@ -525,14 +531,20 @@ public class StoryViewerFragment extends Fragment { @Override public void onSuccess(final StoryStickerResponse result) { sticking = false; - Toast.makeText(context, R.string.answered_story, Toast.LENGTH_SHORT).show(); + try { + Toast.makeText(context, R.string.answered_story, Toast.LENGTH_SHORT).show(); + } + catch (Exception ignored) {} } @Override public void onFailure(final Throwable t) { sticking = false; Log.e(TAG, "Error responding", t); - Toast.makeText(context, R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show(); + try { + Toast.makeText(context, R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show(); + } + catch (Exception ignored) {} } }); }) @@ -565,15 +577,21 @@ public class StoryViewerFragment extends Fragment { @Override public void onSuccess(final StoryStickerResponse result) { sticking = false; - quiz.setMyChoice(w); - Toast.makeText(context, R.string.answered_story, Toast.LENGTH_SHORT).show(); - } + try { + quiz.setMyChoice(w); + Toast.makeText(context, R.string.answered_story, Toast.LENGTH_SHORT).show(); + } + catch (Exception ignored) {} + } @Override public void onFailure(final Throwable t) { sticking = false; Log.e(TAG, "Error responding", t); - Toast.makeText(context, R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show(); + try { + Toast.makeText(context, R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show(); + } + catch (Exception ignored) {} } }); } @@ -631,15 +649,21 @@ public class StoryViewerFragment extends Fragment { @Override public void onSuccess(final StoryStickerResponse result) { sticking = false; - slider.setMyChoice(sliderValue); - Toast.makeText(context, R.string.answered_story, Toast.LENGTH_SHORT).show(); + try { + slider.setMyChoice(sliderValue); + Toast.makeText(context, R.string.answered_story, Toast.LENGTH_SHORT).show(); + } + catch (Exception ignored) {} } @Override public void onFailure(final Throwable t) { sticking = false; Log.e(TAG, "Error responding", t); - Toast.makeText(context, R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show(); + try { + Toast.makeText(context, R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show(); + } + catch (Exception ignored) {} } }); }) diff --git a/app/src/main/java/awais/instagrabber/fragments/directmessages/DirectMessageThreadFragment.java b/app/src/main/java/awais/instagrabber/fragments/directmessages/DirectMessageThreadFragment.java index 0eb2fc61..7fa55fea 100644 --- a/app/src/main/java/awais/instagrabber/fragments/directmessages/DirectMessageThreadFragment.java +++ b/app/src/main/java/awais/instagrabber/fragments/directmessages/DirectMessageThreadFragment.java @@ -116,9 +116,6 @@ public class DirectMessageThreadFragment extends Fragment implements DirectReact private static final int STORAGE_PERM_REQUEST_CODE = 8020; private static final int AUDIO_RECORD_PERM_REQUEST_CODE = 1000; private static final int CAMERA_REQUEST_CODE = 200; - private static final String UPDATING_TITLE = "Updating..."; - private static final String MESSAGE_LABEL = "Message"; - private static final String HOLD_TO_RECORD_AUDIO_LABEL = "Press and hold to record audio"; private static final String TRANSLATION_Y = "translationY"; private DirectItemsAdapter itemsAdapter; @@ -567,7 +564,7 @@ public class DirectMessageThreadFragment extends Fragment implements DirectReact viewModel.getThreadTitle().observe(getViewLifecycleOwner(), this::setTitle); viewModel.getFetching().observe(getViewLifecycleOwner(), fetching -> { if (fetching) { - setTitle(UPDATING_TITLE); + setTitle(getString(R.string.dms_thread_updating)); return; } setTitle(viewModel.getThreadTitle().getValue()); @@ -876,7 +873,7 @@ public class DirectMessageThreadFragment extends Fragment implements DirectReact if (inputMode != null && inputMode == 1) return; final Context context = getContext(); if (context == null) return; - tooltip.setText(HOLD_TO_RECORD_AUDIO_LABEL); + tooltip.setText(R.string.dms_thread_audio_hint); setMicToSendIcon(); binding.recordView.setMinMillis(1000); binding.recordView.setOnRecordListener(new RecordView.OnRecordListener() { @@ -925,7 +922,7 @@ public class DirectMessageThreadFragment extends Fragment implements DirectReact } }); binding.recordView.setOnBasketAnimationEndListener(() -> { - binding.input.setHint(MESSAGE_LABEL); + binding.input.setHint(R.string.dms_thread_message_hint); binding.gallery.setVisibility(View.VISIBLE); binding.camera.setVisibility(View.VISIBLE); }); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 433a642a..9b56d36e 100755 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -203,6 +203,9 @@ Suggested Screenshotted Cannot deliver + Message... + Press and hold to record audio + Updating... Great success! Leave chat Leave this chat? @@ -427,10 +430,33 @@ Reply Tap to remove Forward + You forwarded a message + Forwarded a message Add Send Replying to yourself Replying to %s + You replied to yourself + You replied to you + You replied + You replied to %s + Replied to %s + Replied to you + Replied to themself + You reacted to their story + Reacted to your story + You mentioned them in your story + Mentioned you in their story + You replied to their story + Replied to your story + Image has expired + Image will expire when seen + Video has expired + Video will expire when seen + Message has expired + Message will expire when seen + @%s\'s story + @%s\'s story highlight Photo Video Voice message From 60ec1f593660d52de54a7721009c2f053cda9c6a Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Fri, 19 Feb 2021 20:46:06 -0500 Subject: [PATCH 09/11] oops --- app/src/main/res/values/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9b56d36e..704bdad7 100755 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -437,7 +437,6 @@ Replying to yourself Replying to %s You replied to yourself - You replied to you You replied You replied to %s Replied to %s From 20d9a3935bc26717cb3d7cabbcf9bec70621bab0 Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Tue, 23 Feb 2021 22:02:13 -0500 Subject: [PATCH 10/11] close #717 and fix looper toast issue --- .../fragments/CommentsViewerFragment.java | 22 ++++++++-------- .../fragments/FollowViewerFragment.java | 5 ++-- .../fragments/HashTagFragment.java | 25 ++++++++++--------- 3 files changed, 28 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/awais/instagrabber/fragments/CommentsViewerFragment.java b/app/src/main/java/awais/instagrabber/fragments/CommentsViewerFragment.java index d40f8608..af9af998 100644 --- a/app/src/main/java/awais/instagrabber/fragments/CommentsViewerFragment.java +++ b/app/src/main/java/awais/instagrabber/fragments/CommentsViewerFragment.java @@ -94,17 +94,12 @@ public final class CommentsViewerFragment extends BottomSheetDialogFragment impl commentsViewModel.getList().postValue(list); } binding.swipeRefreshLayout.setRefreshing(false); - stopCurrentExecutor(); + stopCurrentExecutor(false); } @Override public void onFailure(Throwable t) { - try { - Toast.makeText(getContext(), t.getMessage(), Toast.LENGTH_SHORT).show(); - binding.swipeRefreshLayout.setRefreshing(false); - stopCurrentExecutor(); - } - catch(Throwable e) {} + stopCurrentExecutor(true); } }; @@ -227,7 +222,7 @@ public final class CommentsViewerFragment extends BottomSheetDialogFragment impl endCursor = null; lazyLoader.resetState(); commentsViewModel.getList().postValue(Collections.emptyList()); - stopCurrentExecutor(); + stopCurrentExecutor(false); currentlyRunning = new CommentsFetcher(shortCode, "", fetchListener).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } @@ -276,7 +271,7 @@ public final class CommentsViewerFragment extends BottomSheetDialogFragment impl endCursor = null; }); binding.rvComments.addOnScrollListener(lazyLoader); - stopCurrentExecutor(); + stopCurrentExecutor(false); onRefresh(); } @@ -462,7 +457,7 @@ public final class CommentsViewerFragment extends BottomSheetDialogFragment impl NavHostFragment.findNavController(this).navigate(action); } - private void stopCurrentExecutor() { + private void stopCurrentExecutor(@NonNull final boolean failed) { if (currentlyRunning != null) { try { currentlyRunning.cancel(true); @@ -470,6 +465,13 @@ public final class CommentsViewerFragment extends BottomSheetDialogFragment impl if (BuildConfig.DEBUG) Log.e(TAG, "", e); } } + if (failed) { + try { + Toast.makeText(getContext(), t.getMessage(), Toast.LENGTH_SHORT).show(); + binding.swipeRefreshLayout.setRefreshing(false); + } + catch(Throwable e) {} + } } @Nullable diff --git a/app/src/main/java/awais/instagrabber/fragments/FollowViewerFragment.java b/app/src/main/java/awais/instagrabber/fragments/FollowViewerFragment.java index 8112d497..42fcee57 100644 --- a/app/src/main/java/awais/instagrabber/fragments/FollowViewerFragment.java +++ b/app/src/main/java/awais/instagrabber/fragments/FollowViewerFragment.java @@ -348,16 +348,17 @@ public final class FollowViewerFragment extends Fragment implements SwipeRefresh loading = false; final ArrayList groups = new ArrayList<>(1); - if (isCompare) { + if (isCompare && followingModels != null && followersModels != null && allFollowing != null) { if (followingModels != null && followingModels.size() > 0) groups.add(new ExpandableGroup(resources.getString(R.string.followers_not_following, username), followingModels)); if (followersModels != null && followersModels.size() > 0) groups.add(new ExpandableGroup(resources.getString(R.string.followers_not_follower, namePost), followersModels)); if (allFollowing != null && allFollowing.size() > 0) groups.add(new ExpandableGroup(resources.getString(R.string.followers_both_following), allFollowing)); - } else { + } else if (followModels != null) { groups.add(new ExpandableGroup(type, followModels)); } + else return; adapter = new FollowAdapter(clickListener, groups); adapter.toggleGroup(0); binding.rvFollow.setAdapter(adapter); diff --git a/app/src/main/java/awais/instagrabber/fragments/HashTagFragment.java b/app/src/main/java/awais/instagrabber/fragments/HashTagFragment.java index 845da1c6..12b9b413 100644 --- a/app/src/main/java/awais/instagrabber/fragments/HashTagFragment.java +++ b/app/src/main/java/awais/instagrabber/fragments/HashTagFragment.java @@ -91,7 +91,7 @@ public class HashTagFragment extends Fragment implements SwipeRefreshLayout.OnRe private boolean hasStories = false; private boolean opening = false; private String hashtag; - private HashtagModel hashtagModel; + private HashtagModel hashtagModel = null; private ActionMode actionMode; private StoriesService storiesService; private AsyncTask currentlyExecuting; @@ -373,22 +373,12 @@ public class HashTagFragment extends Fragment implements SwipeRefreshLayout.OnRe public void onResult(final HashtagModel result) { hashtagModel = result; binding.swipeRefreshLayout.setRefreshing(false); - final Context context = getContext(); - if (context == null) return; - if (hashtagModel == null) { - Toast.makeText(context, R.string.error_loading_hashtag, Toast.LENGTH_SHORT).show(); - binding.swipeRefreshLayout.setEnabled(false); - return; - } - setTitle(); setHashtagDetails(); - setupPosts(); - fetchStories(); } @Override public void onFailure(Throwable t) { - Toast.makeText(getContext(), t.getMessage(), Toast.LENGTH_SHORT).show(); + setHashtagDetails(); } }).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } @@ -406,6 +396,17 @@ public class HashTagFragment extends Fragment implements SwipeRefreshLayout.OnRe } private void setHashtagDetails() { + if (hashtagModel == null) { + try { + Toast.makeText(getContext(), R.string.error_loading_hashtag, Toast.LENGTH_SHORT).show(); + binding.swipeRefreshLayout.setEnabled(false); + } + catch (Exception ignored) {} + return; + } + setTitle(); + setupPosts(); + fetchStories(); if (isLoggedIn) { hashtagDetailsBinding.btnFollowTag.setVisibility(View.VISIBLE); hashtagDetailsBinding.btnFollowTag.setText(hashtagModel.getFollowing() ? R.string.unfollow : R.string.follow); From 605ddd363598c5b79b4771e2cfc2073c50d190c4 Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Tue, 23 Feb 2021 22:34:50 -0500 Subject: [PATCH 11/11] oop --- .../fragments/CommentsViewerFragment.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/awais/instagrabber/fragments/CommentsViewerFragment.java b/app/src/main/java/awais/instagrabber/fragments/CommentsViewerFragment.java index af9af998..6fa829a1 100644 --- a/app/src/main/java/awais/instagrabber/fragments/CommentsViewerFragment.java +++ b/app/src/main/java/awais/instagrabber/fragments/CommentsViewerFragment.java @@ -94,12 +94,12 @@ public final class CommentsViewerFragment extends BottomSheetDialogFragment impl commentsViewModel.getList().postValue(list); } binding.swipeRefreshLayout.setRefreshing(false); - stopCurrentExecutor(false); + stopCurrentExecutor(null); } @Override public void onFailure(Throwable t) { - stopCurrentExecutor(true); + stopCurrentExecutor(t); } }; @@ -222,7 +222,7 @@ public final class CommentsViewerFragment extends BottomSheetDialogFragment impl endCursor = null; lazyLoader.resetState(); commentsViewModel.getList().postValue(Collections.emptyList()); - stopCurrentExecutor(false); + stopCurrentExecutor(null); currentlyRunning = new CommentsFetcher(shortCode, "", fetchListener).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } @@ -271,7 +271,7 @@ public final class CommentsViewerFragment extends BottomSheetDialogFragment impl endCursor = null; }); binding.rvComments.addOnScrollListener(lazyLoader); - stopCurrentExecutor(false); + stopCurrentExecutor(null); onRefresh(); } @@ -457,7 +457,7 @@ public final class CommentsViewerFragment extends BottomSheetDialogFragment impl NavHostFragment.findNavController(this).navigate(action); } - private void stopCurrentExecutor(@NonNull final boolean failed) { + private void stopCurrentExecutor(final Throwable t) { if (currentlyRunning != null) { try { currentlyRunning.cancel(true); @@ -465,7 +465,7 @@ public final class CommentsViewerFragment extends BottomSheetDialogFragment impl if (BuildConfig.DEBUG) Log.e(TAG, "", e); } } - if (failed) { + if (t != null) { try { Toast.makeText(getContext(), t.getMessage(), Toast.LENGTH_SHORT).show(); binding.swipeRefreshLayout.setRefreshing(false);