Merge branch 'master' into feature/multistack-navigation

This commit is contained in:
Ammar Githam 2021-07-02 23:22:41 +09:00
commit 2f7a68341d
56 changed files with 370 additions and 771 deletions

View File

@ -60,16 +60,6 @@
"bug"
]
},
{
"login": "vojta-horanek",
"name": "Vojtěch Hořánek",
"avatar_url": "https://avatars.githubusercontent.com/u/12630566?v=4",
"profile": "https://vojtechh.eu/",
"contributions": [
"code",
"translation"
]
},
{
"login": "MeLlamoPablo",
"name": "Pablo Rodríguez",
@ -79,6 +69,33 @@
"code"
]
},
{
"login": "tcely",
"name": "tcely",
"avatar_url": "https://avatars.githubusercontent.com/u/138864?v=4",
"profile": "https://github.com/tcely",
"contributions": [
"code"
]
},
{
"login": "Vonter",
"name": "Vonter",
"avatar_url": "https://avatars.githubusercontent.com/u/25414711?v=4",
"profile": "https://github.com/Vonter",
"contributions": [
"code"
]
},
{
"login": "raniapl",
"name": "Rania Pilioura",
"avatar_url": "https://avatars.githubusercontent.com/u/56370534?v=4",
"profile": "https://github.com/raniapl",
"contributions": [
"code"
]
},
{
"login": "stamatiap",
"name": "Stamatia Papageorgiou",
@ -90,19 +107,29 @@
]
},
{
"login": "The-EDev",
"name": "Farook Al-Sammarraie",
"avatar_url": "https://avatars.githubusercontent.com/u/60552923?v=4",
"profile": "https://github.com/The-EDev",
"login": "Zopieux",
"name": "Alexandre Macabies",
"avatar_url": "https://avatars.githubusercontent.com/u/81353?v=4",
"profile": "https://github.com/Zopieux",
"contributions": [
"code"
]
},
{
"login": "Zopieux",
"name": "Alexandre Macabies",
"avatar_url": "https://avatars.githubusercontent.com/u/81353?v=4",
"profile": "https://github.com/Zopieux",
"login": "vojta-horanek",
"name": "Vojtěch Hořánek",
"avatar_url": "https://avatars.githubusercontent.com/u/12630566?v=4",
"profile": "https://vojtechh.eu/",
"contributions": [
"code",
"translation"
]
},
{
"login": "The-EDev",
"name": "Farook Al-Sammarraie",
"avatar_url": "https://avatars.githubusercontent.com/u/60552923?v=4",
"profile": "https://github.com/The-EDev",
"contributions": [
"code"
]
@ -135,6 +162,17 @@
"financial"
]
},
{
"login": "Martin5001",
"name": "Martin Krejčí",
"avatar_url": "https://avatars.githubusercontent.com/u/35201200?v=4",
"profile": "https://github.com/Martin5001",
"contributions": [
"bug",
"ideas",
"translation"
]
},
{
"login": "Shadowspear123",
"name": "Shadowspear123",
@ -266,6 +304,15 @@
"translation"
]
},
{
"login": "Lego8486",
"name": "Ten_Lego",
"avatar_url": "https://avatars1.githubusercontent.com/u/47414485",
"profile": "https://github.com/Lego8486",
"contributions": [
"translation"
]
},
{
"login": "MoaufmKlo",
"name": "MoaufmKlo",
@ -338,6 +385,15 @@
"translation"
]
},
{
"login": "rex07",
"name": "Rex_sa",
"avatar_url": "https://avatars.githubusercontent.com/u/13156001?v=4",
"profile": "https://github.com/rex07",
"contributions": [
"translation"
]
},
{
"login": "rikishi0071",
"name": "rikishi0071",
@ -375,10 +431,10 @@
]
},
{
"login": "Lego8486",
"name": "Ten_Lego",
"avatar_url": "https://avatars1.githubusercontent.com/u/47414485",
"profile": "https://github.com/Lego8486",
"login": "Umeaboy",
"name": "Kristoffer Grundström",
"avatar_url": "https://avatars.githubusercontent.com/u/714473?v=4",
"profile": "https://github.com/Umeaboy",
"contributions": [
"translation"
]
@ -418,6 +474,15 @@
"contributions": [
"translation"
]
},
{
"login": "2hot2exist",
"name": "2hot2exist",
"avatar_url": "https://avatars.githubusercontent.com/u/84233003?v=4",
"profile": "https://github.com/2hot2exist",
"contributions": [
"translation"
]
}
],
"contributorsPerLine": 6,

View File

@ -9,7 +9,7 @@
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://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-BADGE:START - Do not remove or modify this section -->
[![All Contributors](https://img.shields.io/badge/all_contributors-44-orange.svg)](#contributors)
[![All Contributors](https://img.shields.io/badge/all_contributors-51-orange.svg)](#contributors)
<!-- ALL-CONTRIBUTORS-BADGE:END -->
Instagram client; previously known as InstaGrabber.
@ -59,59 +59,68 @@ Prominent contributors are listed here in the [all-contributors](https://allcont
<td align="center"><a href="https://github.com/zerrium"><img src="https://avatars.githubusercontent.com/u/58355441?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Zerrium</b></sub></a><br /><a href="https://github.com/austinhuang0131/barinsta/commits?author=zerrium" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/junhuicoding"><img src="https://avatars.githubusercontent.com/u/54289027?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Chua Jun Hui</b></sub></a><br /><a href="https://github.com/austinhuang0131/barinsta/commits?author=junhuicoding" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/andersonvom"><img src="https://avatars3.githubusercontent.com/u/69922?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Anderson Mesquita</b></sub></a><br /><a href="https://github.com/austinhuang0131/barinsta/commits?author=andersonvom" title="Code">💻</a> <a href="https://github.com/austinhuang0131/barinsta/issues?q=author%3Aandersonvom" title="Bug reports">🐛</a></td>
<td align="center"><a href="https://github.com/MeLlamoPablo"><img src="https://avatars.githubusercontent.com/u/11708035?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Pablo Rodríguez</b></sub></a><br /><a href="https://github.com/austinhuang0131/barinsta/commits?author=MeLlamoPablo" title="Code">💻</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/tcely"><img src="https://avatars.githubusercontent.com/u/138864?v=4?s=100" width="100px;" alt=""/><br /><sub><b>tcely</b></sub></a><br /><a href="https://github.com/austinhuang0131/barinsta/commits?author=tcely" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Vonter"><img src="https://avatars.githubusercontent.com/u/25414711?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Vonter</b></sub></a><br /><a href="https://github.com/austinhuang0131/barinsta/commits?author=Vonter" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/raniapl"><img src="https://avatars.githubusercontent.com/u/56370534?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Rania Pilioura</b></sub></a><br /><a href="https://github.com/austinhuang0131/barinsta/commits?author=raniapl" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/stamatiap"><img src="https://avatars.githubusercontent.com/u/57223967?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Stamatia Papageorgiou</b></sub></a><br /><a href="https://github.com/austinhuang0131/barinsta/commits?author=stamatiap" title="Code">💻</a> <a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/Zopieux"><img src="https://avatars.githubusercontent.com/u/81353?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alexandre Macabies</b></sub></a><br /><a href="https://github.com/austinhuang0131/barinsta/commits?author=Zopieux" title="Code">💻</a></td>
<td align="center"><a href="https://vojtechh.eu/"><img src="https://avatars.githubusercontent.com/u/12630566?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Vojtěch Hořánek</b></sub></a><br /><a href="https://github.com/austinhuang0131/barinsta/commits?author=vojta-horanek" title="Code">💻</a> <a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/MeLlamoPablo"><img src="https://avatars.githubusercontent.com/u/11708035?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Pablo Rodríguez</b></sub></a><br /><a href="https://github.com/austinhuang0131/barinsta/commits?author=MeLlamoPablo" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/stamatiap"><img src="https://avatars.githubusercontent.com/u/57223967?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Stamatia Papageorgiou</b></sub></a><br /><a href="https://github.com/austinhuang0131/barinsta/commits?author=stamatiap" title="Code">💻</a> <a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/The-EDev"><img src="https://avatars.githubusercontent.com/u/60552923?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Farook Al-Sammarraie</b></sub></a><br /><a href="https://github.com/austinhuang0131/barinsta/commits?author=The-EDev" title="Code">💻</a></td>
<td align="center"><a href="https://github.com/Zopieux"><img src="https://avatars.githubusercontent.com/u/81353?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alexandre Macabies</b></sub></a><br /><a href="https://github.com/austinhuang0131/barinsta/commits?author=Zopieux" title="Code">💻</a></td>
<td align="center"><a href="https://snajdovski.github.io"><img src="https://avatars2.githubusercontent.com/u/42580385?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Stefan Najdovski</b></sub></a><br /><a href="#design-snajdovski" title="Design">🎨</a> <a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/CrazyMarvin"><img src="https://avatars3.githubusercontent.com/u/15004217?v=4?s=100" width="100px;" alt=""/><br /><sub><b>CrazyMarvin</b></sub></a><br /><a href="#financial-CrazyMarvin" title="Financial">💵</a></td>
<td align="center"><a href="http://kevinthomas.dev"><img src="https://avatars2.githubusercontent.com/u/15370181?s=100" width="100px;" alt=""/><br /><sub><b>Kevin Thomas</b></sub></a><br /><a href="#financial-KevinNThomas" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/Martin5001"><img src="https://avatars.githubusercontent.com/u/35201200?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Martin Krejčí</b></sub></a><br /><a href="https://github.com/austinhuang0131/barinsta/issues?q=author%3AMartin5001" title="Bug reports">🐛</a> <a href="#ideas-Martin5001" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/Shadowspear123"><img src="https://avatars1.githubusercontent.com/u/50462281?s=100" width="100px;" alt=""/><br /><sub><b>Shadowspear123</b></sub></a><br /><a href="#blog-Shadowspear123" title="Blogposts">📝</a> <a href="https://github.com/austinhuang0131/barinsta/issues?q=author%3AShadowspear123" title="Bug reports">🐛</a> <a href="#ideas-Shadowspear123" title="Ideas, Planning, & Feedback">🤔</a> <a href="#question-Shadowspear123" title="Answering Questions">💬</a></td>
</tr>
<tr>
<td align="center"><a href="https://kevinthomas.dev"><img src="https://avatars2.githubusercontent.com/u/15370181?s=100" width="100px;" alt=""/><br /><sub><b>Kevin Thomas</b></sub></a><br /><a href="#financial-KevinNThomas" title="Financial">💵</a></td>
<td align="center"><a href="https://github.com/Shadowspear123"><img src="https://avatars1.githubusercontent.com/u/50462281?s=100" width="100px;" alt=""/><br /><sub><b>Shadowspear123</b></sub></a><br /><a href="#blog-Shadowspear123" title="Blogposts">📝</a> <a href="https://github.com/austinhuang0131/barinsta/issues?q=author%3AShadowspear123" title="Bug reports">🐛</a> <a href="#ideas-Shadowspear123" title="Ideas, Planning, & Feedback">🤔</a> <a href="#question-Shadowspear123" title="Answering Questions">💬</a></td>
<td align="center"><a href="https://github.com/RickyM7"><img src="https://avatars3.githubusercontent.com/u/24703825?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Ricardo</b></sub></a><br /><a href="https://github.com/austinhuang0131/barinsta/issues?q=author%3ARickyM7" title="Bug reports">🐛</a> <a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/Akrai"><img src="https://avatars1.githubusercontent.com/u/5624597?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Akrai</b></sub></a><br /><a href="#ideas-Akrai" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/avtkal"><img src="https://avatars.githubusercontent.com/u/63205014?v=4?s=100" width="100px;" alt=""/><br /><sub><b>avtkal</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/cizordj"><img src="https://avatars2.githubusercontent.com/u/32869222?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Cézar Augusto</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/dimitrist19"><img src="https://avatars.githubusercontent.com/u/56406468?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Dimitris T</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/farzadx"><img src="https://avatars2.githubusercontent.com/u/70059397?v=4?s=100" width="100px;" alt=""/><br /><sub><b>farzadx</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/faydin"><img src="https://avatars2.githubusercontent.com/u/22706676?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Fatih Aydın</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/fouze555"><img src="https://avatars3.githubusercontent.com/u/71935341?v=4?s=100" width="100px;" alt=""/><br /><sub><b>fouze555</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/Galang23"><img src="https://avatars3.githubusercontent.com/u/13700948?s=100" width="100px;" alt=""/><br /><sub><b>Galang23</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/initdebugs"><img src="https://avatars0.githubusercontent.com/u/75781464?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Initdebugs</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
</tr>
<tr>
<td align="center"><a href="https://janek.xyz/"><img src="https://avatars3.githubusercontent.com/u/8365659?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jakub Janek</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/GenosseFlosse"><img src="https://avatars.githubusercontent.com/u/59205524?v=4?s=100" width="100px;" alt=""/><br /><sub><b>GenosseFlosse</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
</tr>
<tr>
<td align="center"><a href="https://becauseofprog.fr/"><img src="https://avatars3.githubusercontent.com/u/24623168?s=100" width="100px;" alt=""/><br /><sub><b>kernoeb</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/Lego8486"><img src="https://avatars1.githubusercontent.com/u/47414485?s=100" width="100px;" alt=""/><br /><sub><b>Ten_Lego</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/MoaufmKlo"><img src="https://avatars1.githubusercontent.com/u/45636897?s=100" width="100px;" alt=""/><br /><sub><b>MoaufmKlo</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/nalinalini"><img src="https://avatars0.githubusercontent.com/u/65640431?v=4?s=100" width="100px;" alt=""/><br /><sub><b>nalinalini</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/peterge1998"><img src="https://avatars2.githubusercontent.com/u/47355238?s=100" width="100px;" alt=""/><br /><sub><b>peterge1998</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/PierreM0"><img src="https://avatars3.githubusercontent.com/u/71077853?v=4?s=100" width="100px;" alt=""/><br /><sub><b>PierreM0</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/PierreM0"><img src="https://avatars3.githubusercontent.com/u/71077853?v=4?s=100" width="100px;" alt=""/><br /><sub><b>PierreM0</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/Pyrobauve"><img src="https://avatars.githubusercontent.com/u/48654473?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Pyrobauve</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/RAMAR-RAR"><img src="https://avatars3.githubusercontent.com/u/47423745?s=100" width="100px;" alt=""/><br /><sub><b>RAMAR-RAR</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/rohang02"><img src="https://avatars3.githubusercontent.com/u/47921164?v=4?s=100" width="100px;" alt=""/><br /><sub><b>rohang02</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/retiolus"><img src="https://avatars1.githubusercontent.com/u/65604466?v=4?s=100" width="100px;" alt=""/><br /><sub><b>retiolus</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/rex07"><img src="https://avatars.githubusercontent.com/u/13156001?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Rex_sa</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/rikishi0071"><img src="https://avatars3.githubusercontent.com/u/18183855?v=4?s=100" width="100px;" alt=""/><br /><sub><b>rikishi0071</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
</tr>
<tr>
<td align="center"><a href="https://gitlab.com/sandboiii"><img src="https://avatars.githubusercontent.com/u/17468894?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Alexey Peschany</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/Sitavi"><img src="https://avatars.githubusercontent.com/u/80586127?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Sitavi</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://stillu.cc/"><img src="https://avatars2.githubusercontent.com/u/5843208?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Still Hsu</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/Lego8486"><img src="https://avatars1.githubusercontent.com/u/47414485?s=100" width="100px;" alt=""/><br /><sub><b>Ten_Lego</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/Umeaboy"><img src="https://avatars.githubusercontent.com/u/714473?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Kristoffer Grundström</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/wagnim"><img src="https://avatars0.githubusercontent.com/u/30241419?s=100" width="100px;" alt=""/><br /><sub><b>wagnim</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/wokija"><img src="https://avatars.githubusercontent.com/u/14982166?v=4?s=100" width="100px;" alt=""/><br /><sub><b>wokija</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/ysakamoto"><img src="https://avatars3.githubusercontent.com/u/1331642?v=4?s=100" width="100px;" alt=""/><br /><sub><b>ysakamoto</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/ZDVokoun"><img src="https://avatars.githubusercontent.com/u/76393152?v=4?s=100" width="100px;" alt=""/><br /><sub><b>ZDVokoun</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
<td align="center"><a href="https://github.com/2hot2exist"><img src="https://avatars.githubusercontent.com/u/84233003?v=4?s=100" width="100px;" alt=""/><br /><sub><b>2hot2exist</b></sub></a><br /><a href="https://crowdin.com/project/instagrabber" title="Translation">🌍</a></td>
</tr>
</table>

View File

@ -180,6 +180,7 @@ dependencies {
implementation "androidx.constraintlayout:constraintlayout:2.0.4"
implementation "androidx.preference:preference:1.1.1"
implementation 'androidx.palette:palette:1.0.0'
implementation 'androidx.documentfile:documentfile:1.0.1'
implementation 'com.google.guava:guava:27.0.1-android'

View File

@ -52,7 +52,7 @@ class CameraActivity : BaseLanguageActivity() {
setContentView(binding.root)
Utils.transparentStatusBar(this, true, false)
displayManager = getSystemService(DISPLAY_SERVICE) as DisplayManager
outputDirectory = DownloadUtils.getCameraDir()
outputDirectory = DownloadUtils.cameraDir
cameraExecutor = Executors.newSingleThreadExecutor()
displayManager.registerDisplayListener(displayListener, null)
binding.viewFinder.post {

View File

@ -226,7 +226,7 @@ public final class FeedAdapterV2 extends ListAdapter<Media, RecyclerView.ViewHol
void onCommentsClick(final Media feedModel);
void onDownloadClick(final Media feedModel, final int childPosition);
void onDownloadClick(final Media feedModel, final int childPosition, final View popupLocation);
void onEmailClick(final String emailId);

View File

@ -28,7 +28,7 @@ public class FeedItemCallbackAdapter implements FeedAdapterV2.FeedItemCallback {
public void onCommentsClick(final Media media) {}
@Override
public void onDownloadClick(final Media media, final int childPosition) {}
public void onDownloadClick(final Media media, final int childPosition, final View popupLocation) {}
@Override
public void onEmailClick(final String emailId) {}

View File

@ -1,104 +0,0 @@
package awais.instagrabber.adapters;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.ListAdapter;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import java.util.List;
public abstract class MultiSelectListAdapter<T extends MultiSelectListAdapter.Selectable, VH extends RecyclerView.ViewHolder> extends
ListAdapter<T, VH> {
private boolean isSelecting;
private OnItemClickListener<T> internalOnItemClickListener;
private OnItemLongClickListener<T> internalOnLongItemClickListener;
private final List<T> selectedItems = new ArrayList<>();
protected MultiSelectListAdapter(@NonNull final DiffUtil.ItemCallback<T> diffCallback,
final OnItemClickListener<T> clickListener,
final OnItemLongClickListener<T> longClickListener) {
super(diffCallback);
internalOnItemClickListener = (item, position) -> {
if (isSelecting) {
toggleSelection(item, position);
}
if (clickListener == null) {
return;
}
clickListener.onItemClick(item, position);
};
internalOnLongItemClickListener = (item, position) -> {
if (!isSelecting) {
isSelecting = true;
}
toggleSelection(item, position);
if (longClickListener == null) {
return true;
}
return longClickListener.onItemLongClick(item, position);
};
}
public OnItemClickListener<T> getInternalOnItemClickListener() {
return internalOnItemClickListener;
}
public OnItemLongClickListener<T> getInternalOnLongItemClickListener() {
return internalOnLongItemClickListener;
}
private void toggleSelection(final T item, final int position) {
if (item == null) {
return;
}
if (selectedItems.size() >= 100) {
// Toast.makeText(mainActivity, R.string.downloader_too_many, Toast.LENGTH_SHORT);
return;
}
if (item.isSelected()) {
item.setSelected(false);
selectedItems.remove(item);
} else {
item.setSelected(true);
selectedItems.add(item);
}
if (selectedItems.size() == 0) {
isSelecting = false;
}
notifyItemChanged(position);
}
public boolean isSelecting() {
return isSelecting;
}
public List<T> getSelectedModels() {
return selectedItems;
}
public void clearSelection() {
for (final T item : selectedItems) {
item.setSelected(false);
}
selectedItems.clear();
isSelecting = false;
notifyDataSetChanged();
}
public interface Selectable {
boolean isSelected();
void setSelected(boolean selected);
}
public interface OnItemClickListener<T> {
void onItemClick(T item, int position);
}
public interface OnItemLongClickListener<T> {
boolean onItemLongClick(T item, int position);
}
}

View File

@ -122,7 +122,6 @@ public final class CommentViewHolder extends RecyclerView.ViewHolder {
}
private void setLikes(@NonNull final Comment comment, final boolean isReply) {
// final String likesString = itemView.getResources().getQuantityString(R.plurals.likes_count, likes, likes);
binding.likes.setText(String.valueOf(comment.getCommentLikeCount()));
binding.likes.setOnLongClickListener(v -> {
if (commentCallback == null) return false;
@ -150,7 +149,6 @@ public final class CommentViewHolder extends RecyclerView.ViewHolder {
final int replies = comment.getChildCommentCount();
binding.replies.setVisibility(View.VISIBLE);
final String text = isReply ? "" : String.valueOf(replies);
// final String string = itemView.getResources().getQuantityString(R.plurals.replies_count, replies, replies);
binding.replies.setText(text);
binding.replies.setOnClickListener(v -> {
if (commentCallback == null) return;

View File

@ -47,7 +47,9 @@ public abstract class FeedItemViewHolder extends RecyclerView.ViewHolder {
setupComments(media);
setupCaption(media);
if (media.getType() != MediaItemType.MEDIA_TYPE_SLIDER) {
bottomBinding.btnDownload.setOnClickListener(v -> feedItemCallback.onDownloadClick(media, -1));
bottomBinding.btnDownload.setOnClickListener(v ->
feedItemCallback.onDownloadClick(media, -1, null)
);
}
bindItem(media);
}

View File

@ -59,11 +59,15 @@ public class FeedSliderViewHolder extends FeedItemViewHolder {
final String text = (position + 1) + "/" + sliderItemLen;
binding.mediaCounter.setText(text);
setDimensions(binding.mediaList, sliderItems.get(position));
binding.itemFeedBottom.btnDownload.setOnClickListener(v -> feedItemCallback.onDownloadClick(feedModel, position));
binding.itemFeedBottom.btnDownload.setOnClickListener(v ->
feedItemCallback.onDownloadClick(feedModel, position, binding.itemFeedBottom.btnDownload)
);
}
});
setDimensions(binding.mediaList, sliderItems.get(0));
binding.itemFeedBottom.btnDownload.setOnClickListener(v -> feedItemCallback.onDownloadClick(feedModel, 0));
binding.itemFeedBottom.btnDownload.setOnClickListener(v ->
feedItemCallback.onDownloadClick(feedModel, 0, binding.itemFeedBottom.btnDownload)
);
adapter.submitList(sliderItems);
}

View File

@ -126,10 +126,10 @@ public class CollectionPostsFragment extends Fragment implements SwipeRefreshLay
}
@Override
public void onDownloadClick(final Media feedModel, final int childPosition) {
public void onDownloadClick(final Media feedModel, final int childPosition, final View popupLocation) {
final Context context = getContext();
if (context == null) return;
DownloadUtils.showDownloadDialog(context, feedModel, childPosition);
DownloadUtils.showDownloadDialog(context, feedModel, childPosition, popupLocation);
}
@Override

View File

@ -145,10 +145,10 @@ public class HashTagFragment extends Fragment implements SwipeRefreshLayout.OnRe
}
@Override
public void onDownloadClick(final Media feedModel, final int childPosition) {
public void onDownloadClick(final Media feedModel, final int childPosition, final View popupLocation) {
final Context context = getContext();
if (context == null) return;
DownloadUtils.showDownloadDialog(context, feedModel, childPosition);
DownloadUtils.showDownloadDialog(context, feedModel, childPosition, popupLocation);
}
@Override

View File

@ -139,10 +139,10 @@ public class LocationFragment extends Fragment implements SwipeRefreshLayout.OnR
}
@Override
public void onDownloadClick(final Media feedModel, final int childPosition) {
public void onDownloadClick(final Media feedModel, final int childPosition, final View popupLocation) {
final Context context = getContext();
if (context == null) return;
DownloadUtils.showDownloadDialog(context, feedModel, childPosition);
DownloadUtils.showDownloadDialog(context, feedModel, childPosition, popupLocation);
}
@Override

View File

@ -446,7 +446,7 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
private void setupDownload() {
bottom.download.setOnClickListener(v -> {
DownloadUtils.showDownloadDialog(context, viewModel.getMedia(), sliderPosition);
DownloadUtils.showDownloadDialog(context, viewModel.getMedia(), sliderPosition, bottom.download);
});
TooltipCompat.setTooltipText(bottom.download, getString(R.string.action_download));
}
@ -744,12 +744,6 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
final Media media = viewModel.getMedia();
final User profileModel = media.getUser();
if (profileModel == null) return;
final boolean isPrivate = profileModel.isPrivate();
if (isPrivate) {
final Context context = getContext();
if (context == null) return;
// Toast.makeText(context, R.string.share_private_post, Toast.LENGTH_LONG).show();
}
if (viewModel.isLoggedIn()) {
final Context context = getContext();
if (context == null) return;
@ -776,7 +770,7 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
}
return true;
} else if (itemId == R.id.share) {
shareLink(media, isPrivate);
shareLink(media, profileModel.isPrivate());
return true;
}
return false;
@ -784,7 +778,7 @@ public class PostViewV2Fragment extends Fragment implements EditTextDialogFragme
popupMenu.show();
return;
}
shareLink(media, isPrivate);
shareLink(media, false);
});
}

View File

@ -109,10 +109,10 @@ public final class SavedViewerFragment extends Fragment implements SwipeRefreshL
}
@Override
public void onDownloadClick(final Media feedModel, final int childPosition) {
public void onDownloadClick(final Media feedModel, final int childPosition, final View popupLocation) {
final Context context = getContext();
if (context == null) return;
DownloadUtils.showDownloadDialog(context, feedModel, childPosition);
DownloadUtils.showDownloadDialog(context, feedModel, childPosition, popupLocation);
}
@Override

View File

@ -473,11 +473,11 @@ public class StoryViewerFragment extends Fragment {
poll = (PollSticker) tag;
final List<Tally> tallies = poll.getTallies();
final String[] choices = tallies.stream()
.map(t -> (poll.getViewerVote() == tallies.indexOf(t) ? "" : "")
.map(t -> (poll.getViewerVote() != null && poll.getViewerVote() == tallies.indexOf(t) ? "" : "")
+ t.getText() + " (" + t.getCount() + ")" )
.toArray(String[]::new);
final ArrayAdapter adapter = new ArrayAdapter<>(context, android.R.layout.simple_list_item_1, choices);
if (poll.getViewerVote() > -1) {
if (poll.getViewerVote() != null) {
new AlertDialog.Builder(context)
.setTitle(R.string.voted_story_poll)
.setAdapter(adapter, null)
@ -577,16 +577,17 @@ public class StoryViewerFragment extends Fragment {
.setPositiveButton(R.string.cancel, null)
.show();
} else if (tag instanceof QuizSticker) {
quiz = (QuizSticker) tag;
final List<Tally> tallies = quiz.getTallies();
final String[] choices = tallies.stream().map(
t -> (quiz.getViewerAnswer() == tallies.indexOf(t) ? "" : "") +
t -> (quiz.getViewerAnswer() != null && quiz.getViewerAnswer() == tallies.indexOf(t) ? "" : "") +
(quiz.getCorrectAnswer() == tallies.indexOf(t) ? "*** " : "") +
t.getText() + " (" + t.getCount() + ")"
).toArray(String[]::new);
new AlertDialog.Builder(context)
.setTitle(quiz.getViewerAnswer() > -1 ? getString(R.string.story_quizzed) : quiz.getQuestion())
.setTitle(quiz.getViewerAnswer() != null ? getString(R.string.story_quizzed) : quiz.getQuestion())
.setAdapter(new ArrayAdapter<>(context, android.R.layout.simple_list_item_1, choices), (d, w) -> {
if (quiz.getViewerAnswer() == -1) {
if (quiz.getViewerAnswer() == null) {
sticking = true;
storiesRepository.respondToQuiz(
csrfToken,
@ -901,7 +902,7 @@ public class StoryViewerFragment extends Fragment {
}
lastSlidePos = slidePos;
final MediaItemType itemType = currentStory.getMediaType();
final MediaItemType itemType = currentStory.getType();
url = itemType == MediaItemType.MEDIA_TYPE_IMAGE
? ResponseBodyUtils.getImageUrl(currentStory)
@ -966,7 +967,7 @@ public class StoryViewerFragment extends Fragment {
}
if (currentStory.getStoryCta() != null) {
final StoryCta swipeUp = currentStory.getStoryCta().get(0).getLinks();
final StoryCta swipeUp = currentStory.getStoryCta().get(0).getLinks().get(0);
binding.swipeUp.setVisibility(View.VISIBLE);
binding.swipeUp.setText(currentStory.getLinkText());
final String swipeUpUrl = swipeUp.getWebUri();

View File

@ -120,10 +120,10 @@ public class TopicPostsFragment extends Fragment implements SwipeRefreshLayout.O
}
@Override
public void onDownloadClick(final Media feedModel, final int childPosition) {
public void onDownloadClick(final Media feedModel, final int childPosition, final View popupLocation) {
final Context context = getContext();
if (context == null) return;
DownloadUtils.showDownloadDialog(context, feedModel, childPosition);
DownloadUtils.showDownloadDialog(context, feedModel, childPosition, popupLocation);
}
@Override

View File

@ -116,10 +116,10 @@ public class FeedFragment extends Fragment implements SwipeRefreshLayout.OnRefre
}
@Override
public void onDownloadClick(final Media feedModel, final int childPosition) {
public void onDownloadClick(final Media feedModel, final int childPosition, final View popupLocation) {
final Context context = getContext();
if (context == null) return;
DownloadUtils.showDownloadDialog(context, feedModel, childPosition);
DownloadUtils.showDownloadDialog(context, feedModel, childPosition, popupLocation);
}
@Override

View File

@ -127,8 +127,8 @@ class ProfileFragment : Fragment(), OnRefreshListener, ConfirmDialogFragmentCall
NavHostFragment.findNavController(this@ProfileFragment).navigate(commentsAction)
}
override fun onDownloadClick(media: Media?, childPosition: Int) {
DownloadUtils.showDownloadDialog(context ?: return, media ?: return, childPosition)
override fun onDownloadClick(media: Media?, childPosition: Int, popupLocation: View) {
DownloadUtils.showDownloadDialog(context ?: return, media ?: return, childPosition, popupLocation)
}
override fun onEmailClick(emailId: String?) {

View File

@ -6,8 +6,8 @@ import awais.instagrabber.repositories.responses.Location
import awais.instagrabber.repositories.responses.User
data class PollSticker(
val pollId: Long?,
val pollId: Long,
val question: String?,
val tallies: List<Tally>?,
var viewerVote: Int = -1
val tallies: List<Tally>,
var viewerVote: Int?
) : Serializable

View File

@ -7,6 +7,6 @@ import awais.instagrabber.repositories.responses.User
data class QuestionSticker(
val questionType: String?,
val questionId: Long?,
val question: String?
val questionId: Long,
val question: String
) : Serializable

View File

@ -8,7 +8,7 @@ import awais.instagrabber.repositories.responses.User
data class QuizSticker(
val quizId: Long?,
val question: String?,
val tallies: List<Tally>?,
var viewerAnswer: Int? = -1,
val correctAnswer: Int?
val tallies: List<Tally>,
var viewerAnswer: Int?,
val correctAnswer: Int
) : Serializable

View File

@ -1,6 +1,7 @@
package awais.instagrabber.repositories.responses.stories
import awais.instagrabber.models.enums.MediaItemType
import awais.instagrabber.models.enums.MediaItemType.Companion.valueOf
import awais.instagrabber.repositories.responses.ImageVersions2
import awais.instagrabber.repositories.responses.MediaCandidate
import awais.instagrabber.repositories.responses.User
@ -9,36 +10,36 @@ import java.io.Serializable
data class StoryMedia(
// inherited from Media
val pk: String? = null,
val id: String? = null,
val takenAt: Long = -1,
val user: User? = null,
val canReshare: Boolean = false,
val imageVersions2: ImageVersions2? = null,
val originalWidth: Int = 0,
val originalHeight: Int = 0,
val mediaType: MediaItemType? = null,
val isReelMedia: Boolean = false,
val videoVersions: List<MediaCandidate>? = null,
val hasAudio: Boolean = false,
val videoDuration: Double = 0.0,
val viewCount: Long = 0,
val title: String? = null,
// story-specific
val canReply: Boolean = false,
val linkText: String? = null, // required for story_cta
// stickers
val reelMentions: List<StorySticker>? = null,
val storyHashtags: List<StorySticker>? = null,
val storyLocations: List<StorySticker>? = null,
val storyFeedMedia: List<StorySticker>? = null,
val storyPolls: List<StorySticker>? = null,
val storyQuestions: List<StorySticker>? = null,
val storyQuizs: List<StorySticker>? = null,
val storyCta: List<StorySticker>? = null,
val storySliders: List<StorySticker>? = null,
// spotify/soundcloud button, not a sticker
val storyAppAttribution: StoryAppAttribution? = null
val pk: String? = null,
val id: String? = null,
val takenAt: Long = -1,
val user: User? = null,
val canReshare: Boolean = false,
val imageVersions2: ImageVersions2? = null,
val originalWidth: Int = 0,
val originalHeight: Int = 0,
val mediaType: Int = 0,
val isReelMedia: Boolean = false,
val videoVersions: List<MediaCandidate>? = null,
val hasAudio: Boolean = false,
val videoDuration: Double = 0.0,
val viewCount: Long = 0,
val title: String? = null,
// story-specific
val canReply: Boolean = false,
val linkText: String? = null, // required for story_cta
// stickers
val reelMentions: List<StorySticker>? = null,
val storyHashtags: List<StorySticker>? = null,
val storyLocations: List<StorySticker>? = null,
val storyFeedMedia: List<StorySticker>? = null,
val storyPolls: List<StorySticker>? = null,
val storyQuestions: List<StorySticker>? = null,
val storyQuizs: List<StorySticker>? = null,
val storyCta: List<StorySticker>? = null,
val storySliders: List<StorySticker>? = null,
// spotify/soundcloud button, not a sticker
val storyAppAttribution: StoryAppAttribution? = null
) : Serializable {
private var dateString: String? = null
var position = 0
@ -48,6 +49,9 @@ data class StoryMedia(
// val date: String by lazy {
// if (takenAt <= 0) "" else Utils.datetimeParser.format(Date(takenAt * 1000L))
// }
val type: MediaItemType?
get() = valueOf(mediaType)
val date: String
get() {
if (takenAt <= 0) return ""

View File

@ -14,6 +14,6 @@ data class StorySticker(
val pollSticker: PollSticker?, // story_polls
val questionSticker: QuestionSticker?, // story_questions
val quizSticker: QuizSticker?, // story_quizs
val links: StoryCta?, // story_cta, requires link_text from the story
val links: List<StoryCta?>?, // story_cta, requires link_text from the story
val sliderSticker: SliderSticker? // story_sliders
) : Serializable

View File

@ -1,14 +1,16 @@
package awais.instagrabber.utils
import android.content.Context
import android.content.DialogInterface
import android.content.UriPermission
import android.net.Uri
import android.provider.DocumentsContract
import android.util.Log
import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import androidx.core.util.Pair
import android.view.MenuItem
import android.view.View
import androidx.appcompat.view.ContextThemeWrapper
import androidx.appcompat.widget.PopupMenu
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
import androidx.documentfile.provider.DocumentFile
import androidx.work.*
import awais.instagrabber.R
@ -16,6 +18,7 @@ import awais.instagrabber.fragments.settings.PreferenceKeys
import awais.instagrabber.models.enums.MediaItemType
import awais.instagrabber.repositories.responses.Media
import awais.instagrabber.repositories.responses.stories.StoryMedia
import awais.instagrabber.utils.AppExecutors.tasksThread
import awais.instagrabber.utils.TextUtils.isEmpty
import awais.instagrabber.workers.DownloadWorker
import com.google.gson.Gson
@ -24,6 +27,7 @@ import java.io.IOException
import java.io.OutputStreamWriter
import java.util.*
import java.util.regex.Pattern
import kotlin.math.abs
object DownloadUtils {
@ -36,6 +40,8 @@ object DownloadUtils {
private const val DIR_RECORDINGS = "Sent Recordings"
private const val DIR_TEMP = "Temp"
private const val DIR_BACKUPS = "Backups"
private const val MIME_DIR = DocumentsContract.Document.MIME_TYPE_DIR
private val dirMap: MutableMap<String, DocumentFile?> = mutableMapOf()
private var root: DocumentFile? = null
@JvmStatic
@Throws(ReselectDocumentTreeException::class)
@ -48,18 +54,15 @@ object DownloadUtils {
}
val uri = Uri.parse(barinstaDirUri)
if (!barinstaDirUri!!.startsWith("content://com.android.externalstorage.documents")) {
// reselect the folder in selector view
throw ReselectDocumentTreeException(uri)
}
val existingPermissions = context.contentResolver.persistedUriPermissions
if (existingPermissions.isEmpty()) {
// reselect the folder in selector view
throw ReselectDocumentTreeException(uri)
}
val anyMatch = existingPermissions.stream()
.anyMatch { uriPermission: UriPermission -> uriPermission.uri == uri }
if (!anyMatch) {
// reselect the folder in selector view
throw ReselectDocumentTreeException(uri)
}
root = DocumentFile.fromTreeUri(context, uri)
@ -68,155 +71,152 @@ object DownloadUtils {
throw ReselectDocumentTreeException(uri)
}
Utils.settingsHelper.putString(PreferenceKeys.PREF_BARINSTA_DIR_URI, uri.toString())
// set up directories
val dirKeys = mapOf(
DIR_DOWNLOADS to MIME_DIR,
DIR_CAMERA to MIME_DIR,
DIR_EDIT to MIME_DIR,
DIR_RECORDINGS to MIME_DIR,
DIR_TEMP to MIME_DIR,
DIR_BACKUPS to MIME_DIR
)
dirMap.putAll(checkFiles(context, root, dirKeys, true))
}
fun destroy() {
root = null
dirMap.clear()
}
fun getDownloadDir(vararg dirs: String?): DocumentFile? {
if (root == null) {
return null
fun checkFiles(context: Context,
parent: DocumentFile?,
queries: Map<String, String>, // <file name, mime type>
create: Boolean
): Map<String, DocumentFile?> {
// first we'll find existing ones
val result: MutableMap<String, DocumentFile?> = mutableMapOf()
if (root == null || parent == null || !parent.isDirectory) return result.toMap()
val docId = DocumentsContract.getDocumentId(parent.uri)
val docUri = DocumentsContract.buildChildDocumentsUriUsingTree(root!!.uri, docId)
val docCursor = context.contentResolver.query(
docUri, arrayOf(
DocumentsContract.Document.COLUMN_DISPLAY_NAME,
DocumentsContract.Document.COLUMN_DOCUMENT_ID,
DocumentsContract.Document.COLUMN_MIME_TYPE
), null, null, null
)
if (docCursor == null) return result.toMap()
while (docCursor.moveToNext()) {
val q = queries.get(docCursor.getString(0))
if (q == null || !docCursor.getString(2).equals(q)) continue
val fileUri = DocumentsContract.buildDocumentUriUsingTree(parent.uri, docCursor.getString(1))
val dir = if (q.equals(MIME_DIR)) DocumentFile.fromTreeUri(context, fileUri)
else DocumentFile.fromSingleUri(context, fileUri)
result.put(docCursor.getString(0), dir)
if (result.size >= queries.size) break
}
var subDir = root
for (dir in dirs) {
if (subDir == null || isEmpty(dir)) continue
val subDirFile = subDir.findFile(dir!!)
val exists = subDirFile != null && subDirFile.exists()
subDir = if (exists) subDirFile else subDir.createDirectory(dir)
docCursor.close()
// next we'll create inexistent ones, if necessary
if (create) {
for (k in queries) {
if (result.get(k.key) == null) {
result.put(k.key, if (MIME_DIR.equals(k.value)) parent.createDirectory(k.key)
else parent.createFile(k.value, k.key))
}
}
}
return subDir
return result.toMap()
}
fun getRootDir(dir: String): DocumentFile? {
if (root == null) return null
return dirMap.get(dir)
}
@JvmStatic
val downloadDir: DocumentFile?
get() = getDownloadDir(DIR_DOWNLOADS)
get() = getRootDir(DIR_DOWNLOADS)
@JvmStatic
fun getCameraDir(): DocumentFile? {
return getDownloadDir(DIR_CAMERA)
val cameraDir: DocumentFile?
get() = getRootDir(DIR_CAMERA)
@JvmStatic
fun getImageEditDir(sessionId: String?, context: Context): DocumentFile? {
val editRoot = getRootDir(DIR_EDIT)
if (sessionId == null) return editRoot
return checkFiles(context,
editRoot,
mapOf(sessionId to MIME_DIR),
true).get(sessionId)
}
@JvmStatic
fun getImageEditDir(sessionId: String?): DocumentFile? {
return getDownloadDir(DIR_EDIT, sessionId)
}
fun getRecordingsDir(): DocumentFile? {
return getDownloadDir(DIR_RECORDINGS)
}
val recordingsDir: DocumentFile?
get() = getRootDir(DIR_RECORDINGS)
@JvmStatic
fun getBackupsDir(): DocumentFile? {
return getDownloadDir(DIR_BACKUPS)
}
val backupsDir: DocumentFile?
get() = getRootDir(DIR_BACKUPS)
// @Nullable
// private static DocumentFile getDownloadDir(@NonNull final Context context, @Nullable final String username) {
// return getDownloadDir(context, username, false);
// }
private fun getDownloadDir(
context: Context?,
username: String?
context: Context,
username: String?,
shouldCreate: Boolean
): DocumentFile? {
val userFolderPaths: List<String> = getSubPathForUserFolder(username)
var dir = root
for (dirName in userFolderPaths) {
val file = dir!!.findFile(dirName)
if (file != null) {
dir = file
continue
}
dir = dir.createDirectory(dirName)
if (dir == null) break
}
// final String joined = android.text.TextUtils.join("/", userFolderPaths);
// final Uri userFolderUri = DocumentsContract.buildDocumentUriUsingTree(root.getUri(), joined);
// final DocumentFile userFolder = DocumentFile.fromSingleUri(context, userFolderUri);
if (context != null && (dir == null || !dir.exists())) {
Toast.makeText(context, R.string.error_creating_folders, Toast.LENGTH_SHORT).show()
return null
}
return dir
if (!Utils.settingsHelper.getBoolean(PreferenceKeys.DOWNLOAD_USER_FOLDER) || username.isNullOrEmpty())
return downloadDir
return checkFiles(context,
downloadDir,
mapOf(username to MIME_DIR),
shouldCreate).get(username)
}
private fun getSubPathForUserFolder(username: String?): MutableList<String> {
val list: MutableList<String> = ArrayList()
if (!Utils.settingsHelper.getBoolean(PreferenceKeys.DOWNLOAD_USER_FOLDER) ||
username.isNullOrEmpty()) {
list.add(DIR_DOWNLOADS)
return list
}
val finalUsername = if (username.startsWith("@")) username.substring(1) else username
list.add(DIR_DOWNLOADS)
list.add(finalUsername)
return list
}
private fun getTempDir(): DocumentFile? {
var file = root!!.findFile(DIR_TEMP)
if (file == null) {
file = root!!.createDirectory(DIR_TEMP)
}
return file
}
private val tempDir: DocumentFile?
get() = getRootDir(DIR_TEMP)
private fun getDownloadSavePaths(
paths: MutableList<String>,
postId: String?,
displayUrl: String?
): Pair<List<String>, String?>? {
return getDownloadSavePaths(paths, postId, "", displayUrl, "")
): Pair<String, String> {
return getDownloadFileName(postId, "", displayUrl, "")
}
private fun getDownloadSavePaths(
paths: MutableList<String>,
postId: String?,
displayUrl: String,
username: String
): Pair<List<String>, String?>? {
return getDownloadSavePaths(paths, postId, "", displayUrl, username)
): Pair<String, String> {
return getDownloadFileName(postId, "", displayUrl, username)
}
private fun getDownloadChildSavePaths(
paths: MutableList<String>,
postId: String?,
childPosition: Int,
url: String?,
username: String
): Pair<List<String>, String?>? {
): Pair<String, String> {
val sliderPostfix = "_slide_$childPosition"
return getDownloadSavePaths(paths, postId, sliderPostfix, url, username)
return getDownloadFileName(postId, sliderPostfix, url, username)
}
private fun getDownloadSavePaths(
paths: MutableList<String>?,
private fun getDownloadFileName(
postId: String?,
sliderPostfix: String,
displayUrl: String?,
username: String
): Pair<List<String>, String?>? {
if (paths == null) return null
): Pair<String, String> {
val extension = getFileExtensionFromUrl(displayUrl)
val usernamePrepend = if (isEmpty(username)) "" else username + "_"
val fileName = usernamePrepend + postId + sliderPostfix + extension
// return new File(finalDir, fileName);
// DocumentFile file = finalDir.findFile(fileName);
// if (file == null) {
val mimeType = Utils.mimeTypeMap.getMimeTypeFromExtension(
if (extension.startsWith(".")) extension.substring(1) else extension
)
// file = finalDir.createFile(mimeType, fileName);
// }
paths.add(fileName)
return Pair(paths, mimeType)
return Pair(fileName, mimeType!!)
}
// public static DocumentFile getTempFile() {
// return getTempFile(null, null);
// }
fun getTempFile(fileName: String?, extension: String): DocumentFile? {
val dir = getTempDir()
val dir = tempDir
var name = fileName
if (isEmpty(name)) {
name = UUID.randomUUID().toString()
@ -284,26 +284,23 @@ object DownloadUtils {
if (user != null) {
username = user.username
}
val userFolderPaths: List<String> = getSubPathForUserFolder(username)
val userFolder = getDownloadDir(context, username, false)
if (userFolder == null) return checkList
when (media.type) {
MediaItemType.MEDIA_TYPE_IMAGE, MediaItemType.MEDIA_TYPE_VIDEO -> {
val url =
if (media.type == MediaItemType.MEDIA_TYPE_VIDEO) ResponseBodyUtils.getVideoUrl(
media
) else ResponseBodyUtils.getImageUrl(media)
val file = getDownloadSavePaths(ArrayList(userFolderPaths), media.code, url, "")
val fileExists = file!!.first != null && checkPathExists(file.first, context)
var usernameFileExists = false
if (!fileExists) {
val usernameFile = getDownloadSavePaths(
ArrayList(userFolderPaths), media.code, url, username
)
usernameFileExists = usernameFile!!.first != null && checkPathExists(usernameFile.first, context)
}
checkList.add(fileExists || usernameFileExists)
val fileName = getDownloadSavePaths(media.code, url)
val fileNameWithUser = getDownloadSavePaths(media.code, url, username)
val files = checkFiles(context, userFolder, mapOf(fileName, fileNameWithUser), false)
checkList.add(files.size > 0)
}
MediaItemType.MEDIA_TYPE_SLIDER -> {
val sliderItems = media.carouselMedia
val fileNames: MutableMap<String, String> = mutableMapOf()
val filePairs: MutableMap<String, String> = mutableMapOf()
var i = 0
while (i < sliderItems!!.size) {
val child = sliderItems[i]
@ -311,20 +308,17 @@ object DownloadUtils {
if (child.type == MediaItemType.MEDIA_TYPE_VIDEO) ResponseBodyUtils.getVideoUrl(
child
) else ResponseBodyUtils.getImageUrl(child)
val file = getDownloadChildSavePaths(
ArrayList(userFolderPaths), media.code, i + 1, url, ""
)
val fileExists = file!!.first != null && checkPathExists(file.first, context)
var usernameFileExists = false
if (!fileExists) {
val usernameFile = getDownloadChildSavePaths(
ArrayList(userFolderPaths), media.code, i + 1, url, username
)
usernameFileExists = usernameFile!!.first != null && checkPathExists(usernameFile.first, context)
}
checkList.add(fileExists || usernameFileExists)
val fileName = getDownloadChildSavePaths(media.code, i+1, url, "")
val fileNameWithUser = getDownloadChildSavePaths(media.code, i+1, url, username)
fileNames.put(fileName.first, fileName.second)
fileNames.put(fileNameWithUser.first, fileNameWithUser.second)
filePairs.put(fileName.first, fileNameWithUser.first)
i++
}
val files = checkFiles(context, userFolder, fileNames, false)
for (p in filePairs) {
checkList.add(files.get(p.key) != null || files.get(p.value) != null)
}
}
else -> {
}
@ -332,61 +326,32 @@ object DownloadUtils {
return checkList
}
private fun checkPathExists(paths: List<String>, context: Context): Boolean {
if (root == null) return false
val uri = root!!.uri
var found = false
var docId = DocumentsContract.getTreeDocumentId(uri)
for (path in paths) {
val docUri = DocumentsContract.buildChildDocumentsUriUsingTree(uri, docId)
val docCursor = context.contentResolver.query(
docUri, arrayOf(
DocumentsContract.Document.COLUMN_DISPLAY_NAME,
DocumentsContract.Document.COLUMN_DOCUMENT_ID
), null, null, null
)
if (docCursor == null) return false
while (docCursor.moveToNext() && !found) {
if (path.equals(docCursor.getString(0))) {
docId = docCursor.getString(1)
found = true
}
}
docCursor.close()
if (!found) return false
found = false
}
return true
}
@JvmStatic
fun showDownloadDialog(
context: Context,
feedModel: Media,
childPosition: Int
childPosition: Int,
popupLocation: View?
) {
if (childPosition >= 0) {
val clickListener =
DialogInterface.OnClickListener { dialog: DialogInterface, which: Int ->
when (which) {
0 -> download(context, feedModel, childPosition)
1 -> download(context, feedModel)
DialogInterface.BUTTON_NEGATIVE -> dialog.dismiss()
else -> dialog.dismiss()
}
}
val items = arrayOf(
context.getString(R.string.post_viewer_download_current),
context.getString(R.string.post_viewer_download_album)
)
AlertDialog.Builder(context)
.setTitle(R.string.post_viewer_download_dialog_title)
.setItems(items, clickListener)
.setNegativeButton(R.string.cancel, null)
.show()
if (childPosition == -1 || popupLocation == null) {
download(context, feedModel)
return
}
download(context, feedModel)
val themeWrapper = ContextThemeWrapper(context, R.style.popupMenuStyle)
val popupMenu = PopupMenu(themeWrapper, popupLocation)
val menu = popupMenu.menu
menu.add(0, R.id.download_current, 0, R.string.post_viewer_download_current)
menu.add(0, R.id.download_all, 1, R.string.post_viewer_download_album)
popupMenu.setOnMenuItemClickListener { item: MenuItem ->
val itemId = item.itemId
if (itemId == R.id.download_current) {
download(context, feedModel, childPosition)
} else if (itemId == R.id.download_all) {
download(context, feedModel)
}
false
}
popupMenu.show()
}
@JvmStatic
@ -394,27 +359,19 @@ object DownloadUtils {
context: Context,
storyModel: StoryMedia
) {
val downloadDir = getDownloadDir(context, storyModel.user?.username) ?: return
val downloadDir = getDownloadDir(context, storyModel.user?.username, true) ?: return
val url =
if (storyModel.mediaType == MediaItemType.MEDIA_TYPE_VIDEO) ResponseBodyUtils.getVideoUrl(storyModel)
if (storyModel.type == MediaItemType.MEDIA_TYPE_VIDEO) ResponseBodyUtils.getVideoUrl(storyModel)
else ResponseBodyUtils.getImageUrl(storyModel)
val extension = getFileExtensionFromUrl(url)
val baseFileName = (storyModel.id + "_"
+ storyModel.takenAt + extension)
val mimeType = Utils.mimeTypeMap.getMimeTypeFromExtension(extension)
val baseFileName = storyModel.id + "_" + storyModel.takenAt + extension
val usernamePrepend =
if (Utils.settingsHelper.getBoolean(PreferenceKeys.DOWNLOAD_PREPEND_USER_NAME)
&& storyModel.user?.username != null
) storyModel.user.username + "_" else ""
val fileName = usernamePrepend + baseFileName
var saveFile = downloadDir.findFile(fileName)
if (saveFile == null) {
val mimeType = Utils.mimeTypeMap.getMimeTypeFromExtension(
if (extension.startsWith(".")) extension.substring(1) else extension
)
?: return
saveFile = downloadDir.createFile(mimeType, fileName)
}
// final File saveFile = new File(downloadDir, fileName);
var saveFile = checkFiles(context, downloadDir, mapOf(fileName to mimeType!!), true).get(fileName)
download(context, url, saveFile)
}
@ -428,12 +385,28 @@ object DownloadUtils {
download(context, listOf(feedModel), position)
}
// this must be used for bulk download, but ONLY bulk download
@JvmStatic
fun download(
context: Context,
feedModels: List<Media>
) {
download(context, feedModels, -1)
val builder = NotificationCompat.Builder(context, Constants.DOWNLOAD_CHANNEL_ID)
.setCategory(NotificationCompat.CATEGORY_PROGRESS)
.setSmallIcon(R.drawable.ic_download)
.setOngoing(true)
.setProgress(1, 0, true)
.setAutoCancel(false)
.setOnlyAlertOnce(true)
.setContentTitle(context.getString(R.string.downloader_preparing))
val notification = builder.build()
val nid = abs(UUID.randomUUID().hashCode())
val nManager = NotificationManagerCompat.from(context.applicationContext)
nManager.notify(nid, notification)
tasksThread.execute {
download(context, feedModels, -1)
nManager.cancel(nid)
}
}
private fun download(
@ -441,11 +414,12 @@ object DownloadUtils {
feedModels: List<Media>,
childPositionIfSingle: Int
) {
val map: MutableMap<String, DocumentFile> = HashMap()
val map: MutableMap<String, Pair<String, String>> = HashMap()
val fileMap: MutableMap<String, DocumentFile?> = HashMap()
for (media in feedModels) {
val mediaUser = media.user
val username = mediaUser?.username ?: ""
val userFolderPaths = getSubPathForUserFolder(username)
val dir = getDownloadDir(context, username, true)
when (media.type) {
MediaItemType.MEDIA_TYPE_IMAGE, MediaItemType.MEDIA_TYPE_VIDEO -> {
val url = getUrlOfType(media)
@ -459,9 +433,8 @@ object DownloadUtils {
fileName = mediaUser.username + "_" + fileName
}
}
val pair = getDownloadSavePaths(userFolderPaths, fileName, url)
val file = createFile(pair!!) ?: continue
map[url!!] = file
val pair = getDownloadSavePaths(fileName, url)
map[url!!] = pair
}
MediaItemType.MEDIA_TYPE_VOICE -> {
val url = getUrlOfType(media)
@ -469,9 +442,8 @@ object DownloadUtils {
if (mediaUser != null) {
fileName = mediaUser.username + "_" + fileName
}
val pair = getDownloadSavePaths(userFolderPaths, fileName, url)
val file = createFile(pair!!) ?: continue
map[url!!] = file
val pair = getDownloadSavePaths(fileName, url)
map[url!!] = pair
}
MediaItemType.MEDIA_TYPE_SLIDER -> {
val sliderItems = media.carouselMedia
@ -485,43 +457,18 @@ object DownloadUtils {
val url = getUrlOfType(child)
val usernamePrepend =
if (Utils.settingsHelper.getBoolean(PreferenceKeys.DOWNLOAD_PREPEND_USER_NAME) && mediaUser != null) mediaUser.username else ""
val pair = getDownloadChildSavePaths(
ArrayList(userFolderPaths), media.code, i + 1, url, usernamePrepend
)
val file = createFile(pair!!)
if (file == null) {
i++
continue
}
map[url!!] = file
val pair = getDownloadChildSavePaths(media.code, i + 1, url, usernamePrepend)
map[url!!] = pair
i++
}
}
}
fileMap.putAll(checkFiles(context, dir, map.values.toMap(), true))
}
if (map.isEmpty()) return
download(context, map)
}
private fun createFile(pair: Pair<List<String>, String?>): DocumentFile? {
if (root == null) return null
if (pair.first == null || pair.second == null) return null
var dir = root
val first = pair.first
for (i in first.indices) {
val name = first[i]
val file = dir!!.findFile(name)
if (file != null) {
dir = file
continue
}
dir = if (i == first.size - 1) dir.createFile(
pair.second!!,
name
) else dir.createDirectory(name)
if (dir == null) break
}
return dir
if (map.isEmpty() || fileMap.isEmpty()) return
val resultMap: MutableMap<String, DocumentFile?> = mutableMapOf()
map.mapValuesTo(resultMap) { fileMap.get(it.value.first) }
download(context, resultMap)
}
private fun getUrlOfType(media: Media): String? {
@ -559,7 +506,7 @@ object DownloadUtils {
download(context, Collections.singletonMap(url!!, filePath))
}
private fun download(context: Context?, urlFilePathMap: Map<String, DocumentFile>) {
private fun download(context: Context?, urlFilePathMap: Map<String, DocumentFile?>) {
if (context == null) return
val constraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)

View File

@ -34,7 +34,7 @@ class DirectThreadViewModel(
// private static final String ERROR_INVALID_THREAD = "Invalid thread";
private val contentResolver: ContentResolver = application.contentResolver
private val recordingsDir: DocumentFile? = DownloadUtils.getRecordingsDir()
private val recordingsDir: DocumentFile? = DownloadUtils.recordingsDir
private var voiceRecorder: VoiceRecorder? = null
private lateinit var threadManager: ThreadManager

View File

@ -59,7 +59,7 @@ public class ImageEditViewModel extends AndroidViewModel {
public ImageEditViewModel(final Application application) {
super(application);
sessionId = LocalDateTime.now().format(SIMPLE_DATE_FORMAT);
outputDir = DownloadUtils.getImageEditDir(sessionId);
outputDir = DownloadUtils.getImageEditDir(sessionId, application);
destinationFile = outputDir.createFile(MIME_TYPE, RESULT + ".jpg");
destinationUri = destinationFile.getUri();
cropDestinationUri = outputDir.createFile(MIME_TYPE, CROP + ".jpg").getUri();

View File

@ -393,9 +393,10 @@ class DownloadWorker(context: Context, workerParams: WorkerParameters) : Corouti
class Builder {
private var urlToFilePathMap: MutableMap<String, String> = mutableMapOf()
fun setUrlToFilePathMap(urlToFilePathMap: Map<String, DocumentFile>): Builder {
fun setUrlToFilePathMap(urlToFilePathMap: Map<String, DocumentFile?>): Builder {
this.urlToFilePathMap = urlToFilePathMap
.mapValues { it.value.uri.toString() }
.filter{ it.value != null }
.mapValues { it.value!!.uri.toString() }
.toMutableMap()
return this
}

View File

@ -40,8 +40,6 @@
<string name="save_to_folder">حفظ في مجلد مخصص</string>
<string name="select_folder">تحديد مجلد</string>
<string name="theme_settings">السمة</string>
<string name="login_settings">فقط يؤثر على المستخدمين المسجلين:</string>
<string name="anonymous_settings">يؤثر فقط على مستخدمين مجهولين:</string>
<string name="select_language">اللغة</string>
<plurals name="main_posts_count">
<item quantity="zero">%s\nPosts</item>
@ -125,10 +123,7 @@
<string name="saved">تم الحفظ</string>
<string name="tagged">مشار إليها</string>
<string name="dm_person">الرسالة</string>
<string name="like_without_count">اعجاب</string>
<string name="unlike_without_count">إلغاء الإعجاب</string>
<string name="bookmark">Bookmark</string>
<string name="unbookmark">Unbookmark</string>
<string name="follow">Follow</string>
<string name="unfollow">Unfollow</string>
<string name="favorite_short" comment="Adjective, not verb">Favorite</string>
@ -156,7 +151,6 @@
<string name="dialog_export_failed">Failed to export!</string>
<string name="refresh">Refresh</string>
<string name="get_cookies">Get cookies</string>
<string name="desktop_2fa">Desktop Mode</string>
<string name="time_settings_title_custom">Use custom format</string>
<string name="time_settings_title_separator">Separator</string>
<string name="time_settings_title_time_format">Time Format</string>
@ -223,14 +217,8 @@
<string name="downloader_error_creating_folder">Error creating folder!</string>
<string name="downloader_error_download_file">Error downloading file</string>
<string name="downloader_too_many">You can only download 100 posts at a time. Don\'t be too greedy!</string>
<string name="comment_viewer_copy_comment">Copy comment</string>
<string name="comment_viewer_see_likers">View comment likers</string>
<string name="comment_viewer_reply_comment">Reply to comment</string>
<string name="comment_viewer_like_comment">Like comment</string>
<string name="comment_viewer_unlike_comment">Unlike comment</string>
<string name="comment_viewer_translate_comment">Translate comment</string>
<string name="comment_viewer_delete_comment">Delete comment</string>
<string name="comment_send_empty_comment">No empty comments!</string>
<string name="comment_view_mention_user_search">Do you want to search the username?</string>
<string name="comment_view_mention_hash_search">Do you want to search the hashtag?</string>
<string name="followers_type_followers">Followers</string>

View File

@ -40,8 +40,6 @@
<string name="save_to_folder">Desa a una carpeta personalitzada</string>
<string name="select_folder">Selecciona la carpeta</string>
<string name="theme_settings">Tema</string>
<string name="login_settings">Només afecta als usuaris amb sessió iniciada:</string>
<string name="anonymous_settings">Només afecta als usuaris anònims:</string>
<string name="select_language">Llengua</string>
<plurals name="main_posts_count">
<item quantity="one">%s\nPublicació</item>
@ -109,10 +107,7 @@
<string name="saved">Desat</string>
<string name="tagged">Etiquetat</string>
<string name="dm_person">Missatge</string>
<string name="like_without_count">M\'agrada</string>
<string name="unlike_without_count">Desfer \"m\'agrada\"</string>
<string name="bookmark">Marcador</string>
<string name="unbookmark">Desfer marcador</string>
<string name="follow">Seguir</string>
<string name="unfollow">Deixar de seguir</string>
<string name="favorite_short" comment="Adjective, not verb">Preferit</string>
@ -140,7 +135,6 @@
<string name="dialog_export_failed">No s\'ha pogut exportar!</string>
<string name="refresh">Actualitzar</string>
<string name="get_cookies">Obtenir cookies</string>
<string name="desktop_2fa">Mode escriptori</string>
<string name="time_settings_title_custom">Utilitza un format personalitzat</string>
<string name="time_settings_title_separator">Separador</string>
<string name="time_settings_title_time_format">Format d\'hora</string>
@ -207,14 +201,8 @@
<string name="downloader_error_creating_folder">S\'ha produït un error en crear la carpeta!</string>
<string name="downloader_error_download_file">S\'ha produït un error en descarregar l\'arxiu</string>
<string name="downloader_too_many">Només pots descarregar 100 publicacions alhora. No siguis massa cobdiciós!</string>
<string name="comment_viewer_copy_comment">Copiar el comentari</string>
<string name="comment_viewer_see_likers">Veure m\'agrades del comentari</string>
<string name="comment_viewer_reply_comment">Respondre al comentari</string>
<string name="comment_viewer_like_comment">Donar \"m\'agrada\" al comentari</string>
<string name="comment_viewer_unlike_comment">Treure \"m\'agrada\" al comentari</string>
<string name="comment_viewer_translate_comment">Traduir comentari</string>
<string name="comment_viewer_delete_comment">Esborrar comentari</string>
<string name="comment_send_empty_comment">No als comentaris buits!</string>
<string name="comment_view_mention_user_search">Vols cercar el nom d\'usuari?</string>
<string name="comment_view_mention_hash_search">Vols cercar l\'etiqueta?</string>
<string name="followers_type_followers">Seguidors</string>

View File

@ -40,8 +40,6 @@
<string name="save_to_folder">Uložit do vlastní složky</string>
<string name="select_folder">Vybrat složku</string>
<string name="theme_settings">Motiv</string>
<string name="login_settings">Týká se pouze přihlášených uživatelů:</string>
<string name="anonymous_settings">Týká se pouze anonymních uživatelů:</string>
<string name="select_language">Jazyk</string>
<plurals name="main_posts_count">
<item quantity="one">%s\nPříspěvek</item>
@ -117,10 +115,7 @@
<string name="saved">Uložené</string>
<string name="tagged">Označení</string>
<string name="dm_person">Zpráva</string>
<string name="like_without_count">To se mi líbí</string>
<string name="unlike_without_count">Už se mi to nelíbí</string>
<string name="bookmark">Přidat do záložek</string>
<string name="unbookmark">Odebrat záložku</string>
<string name="follow">Sledovat</string>
<string name="unfollow">Přestat sledovat</string>
<string name="favorite_short" comment="Adjective, not verb">Oblíbené</string>
@ -148,7 +143,6 @@
<string name="dialog_export_failed">Export se nezdařil!</string>
<string name="refresh">Načíst znovu</string>
<string name="get_cookies">Získat cookies</string>
<string name="desktop_2fa">Režim počítače</string>
<string name="time_settings_title_custom">Použít vlastní formát</string>
<string name="time_settings_title_separator">Oddělovač</string>
<string name="time_settings_title_time_format">Formát času</string>
@ -215,14 +209,8 @@
<string name="downloader_error_creating_folder">Chyba při vytváření složky!</string>
<string name="downloader_error_download_file">Chyba při stahování souboru</string>
<string name="downloader_too_many">Můžete stahovat pouze 100 příspěvků najednou. Nebuďte příliš chamtiví!</string>
<string name="comment_viewer_copy_comment">Kopírovat komentář</string>
<string name="comment_viewer_see_likers">Zobrazit, komu se komentář líbí</string>
<string name="comment_viewer_reply_comment">Odpovědět na komentář</string>
<string name="comment_viewer_like_comment">Označit komentář lajkem</string>
<string name="comment_viewer_unlike_comment">Odebrat lajk z komentáře</string>
<string name="comment_viewer_translate_comment">Přeložit komentář</string>
<string name="comment_viewer_delete_comment">Odstranit komentář</string>
<string name="comment_send_empty_comment">Žádné prázdné komentáře!</string>
<string name="comment_view_mention_user_search">Chcete vyhledat uživatelské jméno?</string>
<string name="comment_view_mention_hash_search">Chcete vyhledat hashtag?</string>
<string name="followers_type_followers">Sledující</string>

View File

@ -40,8 +40,6 @@
<string name="save_to_folder">In benutzerdefiniertem Ordner speichern</string>
<string name="select_folder">Ordner auswählen</string>
<string name="theme_settings">Design</string>
<string name="login_settings">Betrifft nur angemeldete Benutzer:</string>
<string name="anonymous_settings">Betrifft nur anonyme Benutzer:</string>
<string name="select_language">Sprache</string>
<plurals name="main_posts_count">
<item quantity="one">%s\nBeitrag</item>
@ -109,10 +107,7 @@
<string name="saved">Gespeichert</string>
<string name="tagged">Markiert</string>
<string name="dm_person">Nachricht</string>
<string name="like_without_count">Gefällt mir</string>
<string name="unlike_without_count">Gefällt mir nicht mehr</string>
<string name="bookmark">Lesezeichen</string>
<string name="unbookmark">Lesezeichen entfernen</string>
<string name="follow">Folgen</string>
<string name="unfollow">Nicht mehr folgen</string>
<string name="favorite_short" comment="Adjective, not verb">Favorit</string>
@ -140,7 +135,6 @@
<string name="dialog_export_failed">Export fehlgeschlagen!</string>
<string name="refresh">Aktualisieren</string>
<string name="get_cookies">Cookies abrufen</string>
<string name="desktop_2fa">Desktop Modus</string>
<string name="time_settings_title_custom">Eigenes Format verwenden</string>
<string name="time_settings_title_separator">Trennzeichen</string>
<string name="time_settings_title_time_format">Zeiformat</string>
@ -207,14 +201,8 @@
<string name="downloader_error_creating_folder">Fehler beim Erstellen des Ordners!</string>
<string name="downloader_error_download_file">Fehler beim Dateidownload</string>
<string name="downloader_too_many">Du kannst nur 100 Beiträge gleichzeitig herunterladen. Sei nicht zu gierig!</string>
<string name="comment_viewer_copy_comment">Kommentar kopieren</string>
<string name="comment_viewer_see_likers">Kommentar-Liker ansehen</string>
<string name="comment_viewer_reply_comment">Auf Kommentar antworten</string>
<string name="comment_viewer_like_comment">Kommentar gefällt mir</string>
<string name="comment_viewer_unlike_comment">Kommentar gefällt mir nicht mehr</string>
<string name="comment_viewer_translate_comment">Kommentar übersetzen</string>
<string name="comment_viewer_delete_comment">Kommentar löschen</string>
<string name="comment_send_empty_comment">Keine leeren Kommentare!</string>
<string name="comment_view_mention_user_search">Möchtest du nach dem Benutzernamen suchen?</string>
<string name="comment_view_mention_hash_search">Möchtest du nach dem Hashtag suchen?</string>
<string name="followers_type_followers">Abonnenten</string>

View File

@ -40,8 +40,6 @@
<string name="save_to_folder">Αποθήκευση σε προσαρμοσμένο φάκελο</string>
<string name="select_folder">Επιλογή φακέλου</string>
<string name="theme_settings">Θέμα</string>
<string name="login_settings">Επηρεάζει μόνο τους συνδεδεμένους χρήστες:</string>
<string name="anonymous_settings">Επηρεάζει μόνο τους ανώνυμους χρήστες:</string>
<string name="select_language">Γλώσσα</string>
<plurals name="main_posts_count">
<item quantity="one">%s\nΔημοσίευση</item>
@ -109,10 +107,7 @@
<string name="saved">Αποθηκευμένα</string>
<string name="tagged">Ετικέτες</string>
<string name="dm_person">Μήνυμα</string>
<string name="like_without_count">Μου αρέσει</string>
<string name="unlike_without_count">Δε μου αρέσει</string>
<string name="bookmark">Αποθήκευση σαν σελιδοδείκτης</string>
<string name="unbookmark">Διαγραφή σελιδοδείκτη</string>
<string name="follow">Ακολουθήστε</string>
<string name="unfollow">Να μην ακολουθώ</string>
<string name="favorite_short" comment="Adjective, not verb">Αγαπημένα</string>
@ -140,7 +135,6 @@
<string name="dialog_export_failed">Η εξαγωγή απέτυχε!</string>
<string name="refresh">Ανανέωση</string>
<string name="get_cookies">Λήψη cookies</string>
<string name="desktop_2fa">Λειτουργία Επιφάνειας Εργασίας</string>
<string name="time_settings_title_custom">Χρήση προσαρμοσμένης μορφής</string>
<string name="time_settings_title_separator">Διαχωριστικό</string>
<string name="time_settings_title_time_format">Μορφή Ώρας</string>
@ -207,14 +201,8 @@
<string name="downloader_error_creating_folder">Σφάλμα κατά τη δημιουργία φακέλου!</string>
<string name="downloader_error_download_file">Σφάλμα λήψης αρχείου</string>
<string name="downloader_too_many">Μπορείτε να καταφορτώσετε μόνο 100 δημοσιεύσεις τη φορά. Μην είστε τόσο άπληστος!</string>
<string name="comment_viewer_copy_comment">Αντιγραφή σχολίου</string>
<string name="comment_viewer_see_likers">Προβολή όσων δήλωσαν ότι τους αρέσει το σχόλιο</string>
<string name="comment_viewer_reply_comment">Απάντηση στο σχόλιο</string>
<string name="comment_viewer_like_comment">Επισήμανση ως «Μου Αρέσει»</string>
<string name="comment_viewer_unlike_comment">Κατάργηση του «Μου Αρέσει»</string>
<string name="comment_viewer_translate_comment">Μετάφραση σχολίου</string>
<string name="comment_viewer_delete_comment">Διαγραφή σχολίου</string>
<string name="comment_send_empty_comment">Όχι κενά σχόλια!</string>
<string name="comment_view_mention_user_search">Θέλετε να αναζητήσετε το όνομα χρήστη;</string>
<string name="comment_view_mention_hash_search">Θέλετε να αναζητήσετε το hashtag;</string>
<string name="followers_type_followers">Ακόλουθοι</string>

View File

@ -40,8 +40,6 @@
<string name="save_to_folder">Descargar en carpeta personalizada</string>
<string name="select_folder">Seleccionar carpeta</string>
<string name="theme_settings">Tema</string>
<string name="login_settings">Sólo afecta a cuentas que han iniciado sesión:</string>
<string name="anonymous_settings">Sólo afecta a usuarios anónimos:</string>
<string name="select_language">Idioma</string>
<plurals name="main_posts_count">
<item quantity="one">%s\nPublicación</item>
@ -109,10 +107,7 @@
<string name="saved">Guardado</string>
<string name="tagged">Etiquetado</string>
<string name="dm_person">Mensaje</string>
<string name="like_without_count">Me gusta</string>
<string name="unlike_without_count">No me gusta</string>
<string name="bookmark">Añadir marcador</string>
<string name="unbookmark">Quitar marcador</string>
<string name="follow">Seguir</string>
<string name="unfollow">Dejar de seguir</string>
<string name="favorite_short" comment="Adjective, not verb">Agregar a favoritos</string>
@ -140,7 +135,6 @@
<string name="dialog_export_failed">¡Falló la exportación!</string>
<string name="refresh">Actualizar</string>
<string name="get_cookies">Obtener cookies</string>
<string name="desktop_2fa">Modo escritorio</string>
<string name="time_settings_title_custom">Usar formato personalizado</string>
<string name="time_settings_title_separator">Separador</string>
<string name="time_settings_title_time_format">Formato de tiempo</string>
@ -207,14 +201,8 @@
<string name="downloader_error_creating_folder">¡Error al crear carpeta!</string>
<string name="downloader_error_download_file">Error al descargar archivo</string>
<string name="downloader_too_many">Sólo puedes descargar 100 publicaciones a la vez. ¡No seas abaricioso!</string>
<string name="comment_viewer_copy_comment">Copiar comentario</string>
<string name="comment_viewer_see_likers">Ver me gustas del comentario</string>
<string name="comment_viewer_reply_comment">Responder a comentario</string>
<string name="comment_viewer_like_comment">Dar me gusta a comentario</string>
<string name="comment_viewer_unlike_comment">Quitar me gusta a comentario</string>
<string name="comment_viewer_translate_comment">Traducir comentario</string>
<string name="comment_viewer_delete_comment">Eliminar comentario</string>
<string name="comment_send_empty_comment">¡No hay comentarios vacíos!</string>
<string name="comment_view_mention_user_search">¿Quieres buscar el nombre de usuario?</string>
<string name="comment_view_mention_hash_search">¿Quieres buscar el hashtag?</string>
<string name="followers_type_followers">Seguidores</string>

View File

@ -40,8 +40,6 @@
<string name="save_to_folder">Gorde pertsonalizatutako karpetan</string>
<string name="select_folder">Hautatu karpeta</string>
<string name="theme_settings">Gaia</string>
<string name="login_settings">Saioa hasi duten erabiltzaileei soilik eragiten die:</string>
<string name="anonymous_settings">Erabiltzaile anonimoei soilik eragiten die:</string>
<string name="select_language">Hizkuntza</string>
<plurals name="main_posts_count">
<item quantity="one">%s\nPost</item>
@ -109,10 +107,7 @@
<string name="saved">Gordeta</string>
<string name="tagged">Etiketatuta</string>
<string name="dm_person">Mezua</string>
<string name="like_without_count">Atsegitea</string>
<string name="unlike_without_count">Ez dut atsegin</string>
<string name="bookmark">Laster-marka</string>
<string name="unbookmark">Laster-marka kendu</string>
<string name="follow">Jarraitu</string>
<string name="unfollow">Jarraitzeari utzi</string>
<string name="favorite_short" comment="Adjective, not verb">Gogokoa</string>
@ -140,7 +135,6 @@
<string name="dialog_export_failed">Esportatzeak huts egin du!</string>
<string name="refresh">Freskatu</string>
<string name="get_cookies">Eskuratu cookieak</string>
<string name="desktop_2fa">Mahaigaineko modua</string>
<string name="time_settings_title_custom">Erabili pertsonalizatutako formatua</string>
<string name="time_settings_title_separator">Bereizlea</string>
<string name="time_settings_title_time_format">Ordu-formatua</string>
@ -207,14 +201,8 @@
<string name="downloader_error_creating_folder">Errorea karpeta sortzean!</string>
<string name="downloader_error_download_file">Errorea fitxategia deskargatzean</string>
<string name="downloader_too_many">100 bidalketa deskargatu ditzakezu une berean. Ez izan gutiziatsu!</string>
<string name="comment_viewer_copy_comment">Kopiatu iruzkina</string>
<string name="comment_viewer_see_likers">Ikusi iruzkinen atsegiteak</string>
<string name="comment_viewer_reply_comment">Erantzun iruzkinari</string>
<string name="comment_viewer_like_comment">Atsegin iruzkina</string>
<string name="comment_viewer_unlike_comment">Ez dut atsegin</string>
<string name="comment_viewer_translate_comment">Itzuli iruzkina</string>
<string name="comment_viewer_delete_comment">Delete comment</string>
<string name="comment_send_empty_comment">Iruzkin hutsik ez!</string>
<string name="comment_view_mention_user_search">Erabiltzaile-izena bilatu nahi duzu?</string>
<string name="comment_view_mention_hash_search">Traol-hitza bilatu nahi duzu?</string>
<string name="followers_type_followers">Jarraitzaileak</string>

View File

@ -40,8 +40,6 @@
<string name="save_to_folder">ذخیره در پوشه سفارشی</string>
<string name="select_folder">انتخاب پوشه</string>
<string name="theme_settings">پوسته</string>
<string name="login_settings">فقط بر کاربران وارد شده اثر دارد:</string>
<string name="anonymous_settings">فقط بر کاربران ناشناس اثر دارد:</string>
<string name="select_language">زبان</string>
<plurals name="main_posts_count">
<item quantity="one">%s\n پست</item>
@ -110,10 +108,7 @@
<string name="saved">ذخیره شد</string>
<string name="tagged">تگ شده</string>
<string name="dm_person">پیام</string>
<string name="like_without_count">پسند</string>
<string name="unlike_without_count">ناپسند</string>
<string name="bookmark">نشانک</string>
<string name="unbookmark">حذف نشانک</string>
<string name="follow">پی‌گرفتن</string>
<string name="unfollow">پایان پی‌گرفتن</string>
<string name="favorite_short" comment="Adjective, not verb">برگزیده‌</string>
@ -141,7 +136,6 @@
<string name="dialog_export_failed">پشتبان گیری با موفقیت نبود!</string>
<string name="refresh">تازه سازی</string>
<string name="get_cookies">گرفتن کوکی ها</string>
<string name="desktop_2fa">حالت دسکتاپ</string>
<string name="time_settings_title_custom">استفاده از فرمت سفارشی</string>
<string name="time_settings_title_separator">تفکیک کننده</string>
<string name="time_settings_title_time_format">فرمت زمان</string>
@ -208,14 +202,8 @@
<string name="downloader_error_creating_folder">خطا در ایجاد پوشه!</string>
<string name="downloader_error_download_file">خطا در دانلود فایل</string>
<string name="downloader_too_many">شما فقط 100 پست در یک زمان میتوانید دانلود کنید. خیلی حریص نباشید!</string>
<string name="comment_viewer_copy_comment">کپی دیدگاه</string>
<string name="comment_viewer_see_likers">View comment likers</string>
<string name="comment_viewer_reply_comment">پاسخ به دیدگاه</string>
<string name="comment_viewer_like_comment">پسندیدن دیدگاه</string>
<string name="comment_viewer_unlike_comment">نپسندیدن دیدگاه</string>
<string name="comment_viewer_translate_comment">گرداندن دیدگاه</string>
<string name="comment_viewer_delete_comment">Delete comment</string>
<string name="comment_send_empty_comment">بدون دیدگاه تهی!</string>
<string name="comment_view_mention_user_search">ایا میخواهید نام کاربری جستوجو کنید ؟</string>
<string name="comment_view_mention_hash_search">آیا میخواهید هشتگ جستوجو کنید؟</string>
<string name="followers_type_followers">پیگیران</string>

View File

@ -40,8 +40,6 @@
<string name="save_to_folder">Enregistrer dans un dossier personnalisé</string>
<string name="select_folder">Sélectionnez un dossier</string>
<string name="theme_settings">Thème</string>
<string name="login_settings">N\'affecte que les utilisateurs connectés :</string>
<string name="anonymous_settings">N\'affecte que les utilisateurs anonymes:</string>
<string name="select_language">Langues</string>
<plurals name="main_posts_count">
<item quantity="one">%s\nPublication</item>
@ -109,10 +107,7 @@
<string name="saved">Sauvegardé</string>
<string name="tagged">Taggé</string>
<string name="dm_person">Message</string>
<string name="like_without_count">J\'aime</string>
<string name="unlike_without_count">Ne plus aimer</string>
<string name="bookmark">Ajouter aux marque-pages</string>
<string name="unbookmark">Retirer des marque-pages</string>
<string name="follow">Suivre</string>
<string name="unfollow">Ne plus suivre</string>
<string name="favorite_short" comment="Adjective, not verb">Mettre en favoris</string>
@ -140,7 +135,6 @@
<string name="dialog_export_failed">Erreur d\'exportation!</string>
<string name="refresh">Actualiser</string>
<string name="get_cookies">Récupérer les cookies</string>
<string name="desktop_2fa">Mode desktop</string>
<string name="time_settings_title_custom">Utiliser un format personnalisé</string>
<string name="time_settings_title_separator">Séparateur</string>
<string name="time_settings_title_time_format">Format de l\'heure</string>
@ -207,14 +201,8 @@
<string name="downloader_error_creating_folder">Erreur de création de dossier !</string>
<string name="downloader_error_download_file">Erreur de téléchargement du fichier</string>
<string name="downloader_too_many">Vous ne pouvez télécharger que 100 publications à la fois. Ne soyez pas trop gourmands !</string>
<string name="comment_viewer_copy_comment">Copier le commentaire</string>
<string name="comment_viewer_see_likers">Voir les \"j\'aime\" du commentaire</string>
<string name="comment_viewer_reply_comment">Répondre au commentaire</string>
<string name="comment_viewer_like_comment">Aimer le commentaire</string>
<string name="comment_viewer_unlike_comment">Retirer le j\'aime du commentaire</string>
<string name="comment_viewer_translate_comment">Traduire le commentaire</string>
<string name="comment_viewer_delete_comment">Supprimer le commentaire</string>
<string name="comment_send_empty_comment">Aucun commentaire vide !</string>
<string name="comment_view_mention_user_search">Souhaitez-vous faire une recherche sur le nom d\'utilisateur ?</string>
<string name="comment_view_mention_hash_search">Souhaitez-vous faire une recherch sur le hashtag ?</string>
<string name="followers_type_followers">Abonnés</string>

View File

@ -40,8 +40,6 @@
<string name="save_to_folder">खुद के द्बारा निर्धारित फोल्डर पे रखें</string>
<string name="select_folder">फोल्डर का चयन करें</string>
<string name="theme_settings">थीम</string>
<string name="login_settings">सिर्फ लग इन किए हुए ब्यबहारकारी के लिये</string>
<string name="anonymous_settings">गुमनामी लोगों के लिये</string>
<string name="select_language">भाषा</string>
<plurals name="main_posts_count">
<item quantity="one">%s\nपोस्ट</item>
@ -110,10 +108,7 @@
<string name="saved">सेव किया</string>
<string name="tagged">टैग किये</string>
<string name="dm_person">संदेश</string>
<string name="like_without_count">पसन्द</string>
<string name="unlike_without_count">नापसंद</string>
<string name="bookmark">बुकमार्क</string>
<string name="unbookmark">बुकमार्क न करें</string>
<string name="follow">अनुसरण करे</string>
<string name="unfollow">अनुसरण ना करें</string>
<string name="favorite_short" comment="Adjective, not verb">पसंदीदा</string>
@ -141,7 +136,6 @@
<string name="dialog_export_failed">निर्यात करने में विफल!</string>
<string name="refresh">ताज़ा करें:</string>
<string name="get_cookies">कुकिज पायें</string>
<string name="desktop_2fa">डेस्कटप मोड करें</string>
<string name="time_settings_title_custom">कस्टम फर्माट ब्यबहार करें</string>
<string name="time_settings_title_separator">सेपरेटर</string>
<string name="time_settings_title_time_format">समय का स्बरुप</string>
@ -208,14 +202,8 @@
<string name="downloader_error_creating_folder">फोलडर बनाने में त्रुटि!</string>
<string name="downloader_error_download_file">फ़ाइल डाउनलोड करने में त्रुटि</string>
<string name="downloader_too_many">आप सिर्फ १०० पोस्टस एक बार में डाउनलोड कर सकते हैं. ज्यादा लोभी बनना हानिकारक हैं!</string>
<string name="comment_viewer_copy_comment">टिप्पणी कॉपी करें</string>
<string name="comment_viewer_see_likers">View comment likers</string>
<string name="comment_viewer_reply_comment">टिप्पणी का जवाब दें</string>
<string name="comment_viewer_like_comment">टिप्पणी को पसन्द करें</string>
<string name="comment_viewer_unlike_comment">टिप्पणी को पसन्द न करें</string>
<string name="comment_viewer_translate_comment">टिप्पणी का अनुवाद करें</string>
<string name="comment_viewer_delete_comment">टिप्पणी हटाएं</string>
<string name="comment_send_empty_comment">रिक्त टिप्पणी न करें!</string>
<string name="comment_view_mention_user_search">युज़रनेम को ढूंढ़ना चाहते हैं?</string>
<string name="comment_view_mention_hash_search">हैशटैग को ढूंढ़ना चाहते हैं?</string>
<string name="followers_type_followers">अनुयायी</string>

View File

@ -40,8 +40,6 @@
<string name="save_to_folder">Simpan ke folder khusus</string>
<string name="select_folder">Pilih folder</string>
<string name="theme_settings">Tema</string>
<string name="login_settings">Hanya memengaruhi pengguna yang sudah masuk:</string>
<string name="anonymous_settings">Hanya memengaruhi pengguna anonim:</string>
<string name="select_language">Bahasa</string>
<plurals name="main_posts_count">
<item quantity="other">%s\nKiriman</item>
@ -105,10 +103,7 @@
<string name="saved">Tersimpan</string>
<string name="tagged">Ditandai</string>
<string name="dm_person">Pesan</string>
<string name="like_without_count">Suka</string>
<string name="unlike_without_count">Batal Suka</string>
<string name="bookmark">Markah</string>
<string name="unbookmark">Batalkan Markah</string>
<string name="follow">Ikuti</string>
<string name="unfollow">Batal Ikuti</string>
<string name="favorite_short" comment="Adjective, not verb">Favorit</string>
@ -136,7 +131,6 @@
<string name="dialog_export_failed">Gagal mengekspor!</string>
<string name="refresh">Muat ulang</string>
<string name="get_cookies">Dapatkan cookies</string>
<string name="desktop_2fa">Desktop Mode\nuntuk 2FA</string>
<string name="time_settings_title_custom">Gunakan format suaian</string>
<string name="time_settings_title_separator">Pemisah</string>
<string name="time_settings_title_time_format">Format Jam</string>
@ -203,14 +197,8 @@
<string name="downloader_error_creating_folder">Galat membuat folder!</string>
<string name="downloader_error_download_file">Galat mengunduh berkas</string>
<string name="downloader_too_many">Anda hanya dapat mengunduh 100 kiriman saat bersamaan. Jangan serakah-serakah!</string>
<string name="comment_viewer_copy_comment">Salin komentar</string>
<string name="comment_viewer_see_likers">Lihat penyuka komentar</string>
<string name="comment_viewer_reply_comment">Balas komentar</string>
<string name="comment_viewer_like_comment">Suka komentar</string>
<string name="comment_viewer_unlike_comment">Batal suka komentar</string>
<string name="comment_viewer_translate_comment">Terjemahkan komentar</string>
<string name="comment_viewer_delete_comment">Delete comment</string>
<string name="comment_send_empty_comment">Ups, komentar kosong!</string>
<string name="comment_view_mention_user_search">Apakah anda ingin mencari nama pengguna ini?</string>
<string name="comment_view_mention_hash_search">Apakah anda ingin mencari tagar ini?</string>
<string name="followers_type_followers">Pengikut</string>

View File

@ -40,8 +40,6 @@
<string name="save_to_folder">Salva alla cartella personalizzata</string>
<string name="select_folder">Seleziona cartella</string>
<string name="theme_settings">Tema</string>
<string name="login_settings">Influenza solo gli utenti connessi:</string>
<string name="anonymous_settings">Influenza solo gli utenti anonimi:</string>
<string name="select_language">Lingua</string>
<plurals name="main_posts_count">
<item quantity="one">%s\nPubblicazione</item>
@ -109,10 +107,7 @@
<string name="saved">Salvati</string>
<string name="tagged">Taggati</string>
<string name="dm_person">Messaggio</string>
<string name="like_without_count">Mi Piace</string>
<string name="unlike_without_count">Non mi Piace</string>
<string name="bookmark">Contrassegna</string>
<string name="unbookmark">Rimuovi dai preferiti</string>
<string name="follow">Segui</string>
<string name="unfollow">Non Seguire Più</string>
<string name="favorite_short" comment="Adjective, not verb">Preferito</string>
@ -140,7 +135,6 @@
<string name="dialog_export_failed">Impossibile esportare!</string>
<string name="refresh">Ricarica</string>
<string name="get_cookies">Ottieni cookie</string>
<string name="desktop_2fa">Modalità Desktop</string>
<string name="time_settings_title_custom">Usa formato personalizzato</string>
<string name="time_settings_title_separator">Separatore</string>
<string name="time_settings_title_time_format">Formato Ora</string>
@ -207,14 +201,8 @@
<string name="downloader_error_creating_folder">Errore creando la cartella!</string>
<string name="downloader_error_download_file">Errore scaricando il file</string>
<string name="downloader_too_many">Puoi scaricare solo 100 post per volta. Non essere troppo avido!</string>
<string name="comment_viewer_copy_comment">Copia commento</string>
<string name="comment_viewer_see_likers">Visualizza i mi piace del commento</string>
<string name="comment_viewer_reply_comment">Rispondi al commento</string>
<string name="comment_viewer_like_comment">Mi Piace il commento</string>
<string name="comment_viewer_unlike_comment">Il commento Non mi Piace Più</string>
<string name="comment_viewer_translate_comment">Traduci commento</string>
<string name="comment_viewer_delete_comment">Elimina commento</string>
<string name="comment_send_empty_comment">Nessun commento vuoto!</string>
<string name="comment_view_mention_user_search">Vuoi cercare il nome utente?</string>
<string name="comment_view_mention_hash_search">Vuoi cercare l\'hashtag?</string>
<string name="followers_type_followers">Seguaci</string>

View File

@ -40,8 +40,6 @@
<string name="save_to_folder">カスタムフォルダーに保存</string>
<string name="select_folder">フォルダーを選択</string>
<string name="theme_settings">テーマ</string>
<string name="login_settings">ログインユーザーにのみ影響します:</string>
<string name="anonymous_settings">匿名ユーザーにのみ影響します:</string>
<string name="select_language">言語</string>
<plurals name="main_posts_count">
<item quantity="other">%s\n件</item>
@ -105,10 +103,7 @@
<string name="saved">保存</string>
<string name="tagged">タグ付き</string>
<string name="dm_person">メッセージ</string>
<string name="like_without_count">いいね!</string>
<string name="unlike_without_count">いいね!を取り消す</string>
<string name="bookmark">ブックマーク</string>
<string name="unbookmark">ブックマークを解除する</string>
<string name="follow">フォローする</string>
<string name="unfollow">フォローを解除</string>
<string name="favorite_short" comment="Adjective, not verb">お気に入り</string>
@ -136,7 +131,6 @@
<string name="dialog_export_failed">エクスポートに失敗しました!</string>
<string name="refresh">更新</string>
<string name="get_cookies">Cookie を取得する</string>
<string name="desktop_2fa">デスクトップモード</string>
<string name="time_settings_title_custom">カスタム形式を使用する</string>
<string name="time_settings_title_separator">区切り記号</string>
<string name="time_settings_title_time_format">時刻形式</string>
@ -203,14 +197,8 @@
<string name="downloader_error_creating_folder">フォルダの作成中にエラーが発生しました!</string>
<string name="downloader_error_download_file">ダウンロード中にエラーが発生しました</string>
<string name="downloader_too_many">一度に100個までの投稿しかダウンロードできません。取り過ぎ注意</string>
<string name="comment_viewer_copy_comment">コメントをコピー</string>
<string name="comment_viewer_see_likers">コメントにいいね!したユーザーを表示</string>
<string name="comment_viewer_reply_comment">コメントに返信</string>
<string name="comment_viewer_like_comment">コメントに いいね!</string>
<string name="comment_viewer_unlike_comment">コメントのいいね!を取り消す</string>
<string name="comment_viewer_translate_comment">コメントを翻訳</string>
<string name="comment_viewer_delete_comment">コメントを削除</string>
<string name="comment_send_empty_comment">メッセージが未入力です!</string>
<string name="comment_view_mention_user_search">ユーザー名を検索しますか?</string>
<string name="comment_view_mention_hash_search">ハッシュタグを検索しますか?</string>
<string name="followers_type_followers">フォロワー</string>

View File

@ -40,8 +40,6 @@
<string name="save_to_folder">Save to custom folder</string>
<string name="select_folder">폴더 선택</string>
<string name="theme_settings">테마</string>
<string name="login_settings">Only affects logged-in users:</string>
<string name="anonymous_settings">Only affects anonymous users:</string>
<string name="select_language">언어</string>
<plurals name="main_posts_count">
<item quantity="other">%s\n게시물</item>
@ -105,10 +103,7 @@
<string name="saved">저장됨</string>
<string name="tagged">태그됨</string>
<string name="dm_person">메시지</string>
<string name="like_without_count">좋아요</string>
<string name="unlike_without_count">좋아요 취소</string>
<string name="bookmark">북마크 하기</string>
<string name="unbookmark">북마크에서 제거</string>
<string name="follow">팔로우</string>
<string name="unfollow">팔로우 취소</string>
<string name="favorite_short" comment="Adjective, not verb">즐겨찾기</string>
@ -136,7 +131,6 @@
<string name="dialog_export_failed">Failed to export!</string>
<string name="refresh">새로고침</string>
<string name="get_cookies">Get cookies</string>
<string name="desktop_2fa">Desktop Mode</string>
<string name="time_settings_title_custom">Use custom format</string>
<string name="time_settings_title_separator">Separator</string>
<string name="time_settings_title_time_format">시간 형식</string>
@ -203,14 +197,8 @@
<string name="downloader_error_creating_folder">Error creating folder!</string>
<string name="downloader_error_download_file">Error downloading file</string>
<string name="downloader_too_many">You can only download 100 posts at a time. Don\'t be too greedy!</string>
<string name="comment_viewer_copy_comment">댓글 복사</string>
<string name="comment_viewer_see_likers">좋아요 보기</string>
<string name="comment_viewer_reply_comment">답글 달기</string>
<string name="comment_viewer_like_comment">댓글 좋아요</string>
<string name="comment_viewer_unlike_comment">댓글 좋아요 삭제</string>
<string name="comment_viewer_translate_comment">댓글 번역</string>
<string name="comment_viewer_delete_comment">댓글 삭제</string>
<string name="comment_send_empty_comment">빈 댓글이 안 됍니다.</string>
<string name="comment_view_mention_user_search">Do you want to search the username?</string>
<string name="comment_view_mention_hash_search">Do you want to search the hashtag?</string>
<string name="followers_type_followers">팔로워</string>

View File

@ -40,8 +40,6 @@
<string name="save_to_folder">Зачувај во друга папка</string>
<string name="select_folder">Одбери папка</string>
<string name="theme_settings">Тема</string>
<string name="login_settings">Влијае само на корисниците кои се најавени:</string>
<string name="anonymous_settings">Влијае на анонимните корисници:</string>
<string name="select_language">Јазик</string>
<plurals name="main_posts_count">
<item quantity="one">%s\nОбјава</item>
@ -109,10 +107,7 @@
<string name="saved">Зачувано</string>
<string name="tagged">Означен</string>
<string name="dm_person">Порака</string>
<string name="like_without_count">Лајк</string>
<string name="unlike_without_count">Дислајк</string>
<string name="bookmark">Обележи</string>
<string name="unbookmark">Одобележи</string>
<string name="follow">Следи</string>
<string name="unfollow">Одследи</string>
<string name="favorite_short" comment="Adjective, not verb">Омилен</string>
@ -140,7 +135,6 @@
<string name="dialog_export_failed">Неуспешно експортиање!</string>
<string name="refresh">Обнови</string>
<string name="get_cookies">Превземи колачиња</string>
<string name="desktop_2fa">Десктоп изглед</string>
<string name="time_settings_title_custom">Користи свој формат</string>
<string name="time_settings_title_separator">Разделувач</string>
<string name="time_settings_title_time_format">Формат на време</string>
@ -207,14 +201,8 @@
<string name="downloader_error_creating_folder">Фатална грешка при креирање папка!</string>
<string name="downloader_error_download_file">Фатална грешка при превзамање фајл</string>
<string name="downloader_too_many">Можете само 100 постови наеднаш да превземите. Не бидете алчни!</string>
<string name="comment_viewer_copy_comment">Копирај Коментар</string>
<string name="comment_viewer_see_likers">Прегледај лајкови на коментар</string>
<string name="comment_viewer_reply_comment">Одговори на коментар</string>
<string name="comment_viewer_like_comment">Лајкни коментар</string>
<string name="comment_viewer_unlike_comment">Одлајкни коментар</string>
<string name="comment_viewer_translate_comment">Преведи коментар</string>
<string name="comment_viewer_delete_comment">Избриши коментар</string>
<string name="comment_send_empty_comment">Не смее празни коментари!</string>
<string name="comment_view_mention_user_search">Дали сакате да го пребарате ова корисничко име?</string>
<string name="comment_view_mention_hash_search">Дали сакате да го пребарате овај хаштаг?</string>
<string name="followers_type_followers">Следачи</string>

View File

@ -40,8 +40,6 @@
<string name="save_to_folder">Opslaan in aangepaste map</string>
<string name="select_folder">Selecteer map</string>
<string name="theme_settings">Thema</string>
<string name="login_settings">Heeft alleen invloed op ingelogde gebruikers:</string>
<string name="anonymous_settings">Heeft alleen invloed op anonieme gebruikers:</string>
<string name="select_language">Taal</string>
<plurals name="main_posts_count">
<item quantity="one">%s\nPost</item>
@ -109,10 +107,7 @@
<string name="saved">Opgeslagen</string>
<string name="tagged">Getagd</string>
<string name="dm_person">Bericht</string>
<string name="like_without_count">Vind ik leuk</string>
<string name="unlike_without_count">Vind ik niet meer leuk</string>
<string name="bookmark">Toevoegen aan favorieten</string>
<string name="unbookmark">Verwijderen uit favorieten</string>
<string name="follow">Volg</string>
<string name="unfollow">Ontvolg</string>
<string name="favorite_short" comment="Adjective, not verb">Toevoegen aan favorieten</string>
@ -140,7 +135,6 @@
<string name="dialog_export_failed">Exporteren mislukt!</string>
<string name="refresh">Ververs</string>
<string name="get_cookies">Cookies ophalen</string>
<string name="desktop_2fa">Desktop Modus</string>
<string name="time_settings_title_custom">Aangepaste indeling gebruiken</string>
<string name="time_settings_title_separator">Scheidingsteken</string>
<string name="time_settings_title_time_format">Tijdnotatie</string>
@ -207,14 +201,8 @@
<string name="downloader_error_creating_folder">Fout bij aanmaken map!</string>
<string name="downloader_error_download_file">Fout bij downloaden bestand</string>
<string name="downloader_too_many">Je kunt slechts 100 berichten per keer downloaden. Wees niet te hebberig!</string>
<string name="comment_viewer_copy_comment">Kopieer reactie</string>
<string name="comment_viewer_see_likers">Bekijk reacties likers</string>
<string name="comment_viewer_reply_comment">Reageer op opmerking</string>
<string name="comment_viewer_like_comment">Vind reactie leuk</string>
<string name="comment_viewer_unlike_comment">Vind reactie niet meer leuk</string>
<string name="comment_viewer_translate_comment">Reactie vertalen</string>
<string name="comment_viewer_delete_comment">Verwijder reactie</string>
<string name="comment_send_empty_comment">Geen lege reacties!</string>
<string name="comment_view_mention_user_search">Wil je de gebruikersnaam zoeken?</string>
<string name="comment_view_mention_hash_search">Wil je de hashtag zoeken?</string>
<string name="followers_type_followers">Volgers</string>

View File

@ -40,8 +40,6 @@
<string name="save_to_folder">ନିଜେ ସ୍ଥିର କରିଥିବା ଫୋଲଡର ରେ ରଖ।</string>
<string name="select_folder">ଫୋଲ୍‌ଡର୍‌ ଚୟନ କରନ୍ତୁ</string>
<string name="theme_settings">ଥିମ</string>
<string name="login_settings">କେବଳ ଲଗ ଇନ ହୋଇଥିବା ବ୍ୟବହାରକାରୀଙ୍କ ପାଇଁ:</string>
<string name="anonymous_settings">କେବଳ ଲଗ ଇନ ହୋଇନଥିବା ବ୍ୟବହାରକାରୀଙ୍କ ପାଇଁ:</string>
<string name="select_language">ଭାଷା</string>
<plurals name="main_posts_count">
<item quantity="one">%s\nPost</item>
@ -109,10 +107,7 @@
<string name="saved">ସଞ୍ଚୟ ହେଲା</string>
<string name="tagged">ଟ୍ୟାଗ୍ କରିଛନ୍ତି</string>
<string name="dm_person">ସନ୍ଦେଶ</string>
<string name="like_without_count">ପସନ୍ଦ କରନ୍ତୁ</string>
<string name="unlike_without_count">Unlike</string>
<string name="bookmark">Bookmark</string>
<string name="unbookmark">Unbookmark</string>
<string name="follow">Follow</string>
<string name="unfollow">Unfollow</string>
<string name="favorite_short" comment="Adjective, not verb">Favorite</string>
@ -140,7 +135,6 @@
<string name="dialog_export_failed">Failed to export!</string>
<string name="refresh">Refresh</string>
<string name="get_cookies">Get cookies</string>
<string name="desktop_2fa">Desktop Mode</string>
<string name="time_settings_title_custom">Use custom format</string>
<string name="time_settings_title_separator">Separator</string>
<string name="time_settings_title_time_format">Time Format</string>
@ -207,14 +201,8 @@
<string name="downloader_error_creating_folder">Error creating folder!</string>
<string name="downloader_error_download_file">Error downloading file</string>
<string name="downloader_too_many">You can only download 100 posts at a time. Don\'t be too greedy!</string>
<string name="comment_viewer_copy_comment">Copy comment</string>
<string name="comment_viewer_see_likers">View comment likers</string>
<string name="comment_viewer_reply_comment">Reply to comment</string>
<string name="comment_viewer_like_comment">Like comment</string>
<string name="comment_viewer_unlike_comment">Unlike comment</string>
<string name="comment_viewer_translate_comment">Translate comment</string>
<string name="comment_viewer_delete_comment">Delete comment</string>
<string name="comment_send_empty_comment">No empty comments!</string>
<string name="comment_view_mention_user_search">Do you want to search the username?</string>
<string name="comment_view_mention_hash_search">Do you want to search the hashtag?</string>
<string name="followers_type_followers">Followers</string>

View File

@ -40,8 +40,6 @@
<string name="save_to_folder">Zapisz w folderze niestandardowym</string>
<string name="select_folder">Wybierz folder</string>
<string name="theme_settings">Motyw</string>
<string name="login_settings">Dotyczy tylko zalogowanych użytkowników:</string>
<string name="anonymous_settings">Dotyczy tylko anonimowych użytkowników:</string>
<string name="select_language">Język</string>
<plurals name="main_posts_count">
<item quantity="one">%s\npost</item>
@ -117,10 +115,7 @@
<string name="saved">Zapisane</string>
<string name="tagged">Oznaczono</string>
<string name="dm_person">Message</string>
<string name="like_without_count">Polub</string>
<string name="unlike_without_count">Cofnij polubienie</string>
<string name="bookmark">Zapisz</string>
<string name="unbookmark">Usuń z zapisanych</string>
<string name="follow">Obserwuj</string>
<string name="unfollow">Przestań obserwować</string>
<string name="favorite_short" comment="Adjective, not verb">Ulubiony</string>
@ -148,7 +143,6 @@
<string name="dialog_export_failed">Eksportowanie nie powiodło się!</string>
<string name="refresh">Odśwież</string>
<string name="get_cookies">Pobierz ciasteczka</string>
<string name="desktop_2fa">Tryb PC</string>
<string name="time_settings_title_custom">Niestandardowy format</string>
<string name="time_settings_title_separator">Separator</string>
<string name="time_settings_title_time_format">Format czasu</string>
@ -215,14 +209,8 @@
<string name="downloader_error_creating_folder">Błąd podczas tworzenia folderu!</string>
<string name="downloader_error_download_file">Błąd podczas pobierania pliku</string>
<string name="downloader_too_many">Możesz pobrać tylko 100 postów jednocześnie. Nie bądź zbyt chciwy!</string>
<string name="comment_viewer_copy_comment">Skopiuj komentarz</string>
<string name="comment_viewer_see_likers">Wyświetl polubienia komentarzy</string>
<string name="comment_viewer_reply_comment">Odpowiedz na komentarz</string>
<string name="comment_viewer_like_comment">Polub komentarz</string>
<string name="comment_viewer_unlike_comment">Usuń polubienie komentarza</string>
<string name="comment_viewer_translate_comment">Tłumacz komentarz</string>
<string name="comment_viewer_delete_comment">Usuń komentarz</string>
<string name="comment_send_empty_comment">Brak komentarzy!</string>
<string name="comment_view_mention_user_search">Czy chcesz wyszukać przy pomocy nazwy użytkownika?</string>
<string name="comment_view_mention_hash_search">Czy chcesz wyszukać przy pomocy hashtag\'a?</string>
<string name="followers_type_followers">Obserwujący</string>

View File

@ -40,8 +40,6 @@
<string name="save_to_folder">Salvar em pasta personalizada</string>
<string name="select_folder">Selecionar pasta</string>
<string name="theme_settings">Tema</string>
<string name="login_settings">Afeta apenas usuários logados:</string>
<string name="anonymous_settings">Afeta apenas usuários anônimos:</string>
<string name="select_language">Idioma</string>
<plurals name="main_posts_count">
<item quantity="one">%s\nPublicação</item>
@ -109,10 +107,7 @@
<string name="saved">Salvo</string>
<string name="tagged">Marcado</string>
<string name="dm_person">Mensagem</string>
<string name="like_without_count">Curtir</string>
<string name="unlike_without_count">Descurtir</string>
<string name="bookmark">Salvar</string>
<string name="unbookmark">Remover</string>
<string name="follow">Seguir</string>
<string name="unfollow">Deixar de seguir</string>
<string name="favorite_short" comment="Adjective, not verb">Favorito</string>
@ -140,7 +135,6 @@
<string name="dialog_export_failed">Falha ao exportar!</string>
<string name="refresh">Atualizar</string>
<string name="get_cookies">Obter cookies</string>
<string name="desktop_2fa">Modo Desktop</string>
<string name="time_settings_title_custom">Usar formato personalizado</string>
<string name="time_settings_title_separator">Separador</string>
<string name="time_settings_title_time_format">Formato de hora</string>
@ -207,14 +201,8 @@
<string name="downloader_error_creating_folder">Erro ao criar pasta!</string>
<string name="downloader_error_download_file">Erro ao baixar arquivo</string>
<string name="downloader_too_many">Você só pode baixar 100 publicações por vez. Não seja tão ganancioso!</string>
<string name="comment_viewer_copy_comment">Copiar comentário</string>
<string name="comment_viewer_see_likers">Ver quem curtiu o comentário</string>
<string name="comment_viewer_reply_comment">Responder comentário</string>
<string name="comment_viewer_like_comment">Curtir comentário</string>
<string name="comment_viewer_unlike_comment">Descurtir comentário</string>
<string name="comment_viewer_translate_comment">Traduzir comentário</string>
<string name="comment_viewer_delete_comment">Excluir comentário</string>
<string name="comment_send_empty_comment">Comentário em branco!</string>
<string name="comment_view_mention_user_search">Você quer buscar o nome de usuário?</string>
<string name="comment_view_mention_hash_search">Você quer buscar a hashtag?</string>
<string name="followers_type_followers">Seguidores</string>

View File

@ -40,8 +40,6 @@
<string name="save_to_folder">Сохранить в пользовательскую папку</string>
<string name="select_folder">Выбрать папку</string>
<string name="theme_settings">Тема</string>
<string name="login_settings">Затрагивает только авторизованных пользователей:</string>
<string name="anonymous_settings">Затрагивает только анонимных пользователей:</string>
<string name="select_language">Язык</string>
<plurals name="main_posts_count">
<item quantity="one">%s\nПубликация</item>
@ -117,10 +115,7 @@
<string name="saved">Сохранено</string>
<string name="tagged">Отмечено</string>
<string name="dm_person">Сообщение</string>
<string name="like_without_count">Нравится</string>
<string name="unlike_without_count">Не нравится</string>
<string name="bookmark">Закладка</string>
<string name="unbookmark">Снять закладку</string>
<string name="follow">Подписаться</string>
<string name="unfollow">Отписаться</string>
<string name="favorite_short" comment="Adjective, not verb">В избранное</string>
@ -148,7 +143,6 @@
<string name="dialog_export_failed">Не удалось экспортировать!</string>
<string name="refresh">Обновить</string>
<string name="get_cookies">Получить файлы cookie</string>
<string name="desktop_2fa">Режим настольного ПК</string>
<string name="time_settings_title_custom">Использовать пользовательский формат</string>
<string name="time_settings_title_separator">Разделитель</string>
<string name="time_settings_title_time_format">Формат времени</string>
@ -215,14 +209,8 @@
<string name="downloader_error_creating_folder">Ошибка при создании папки!</string>
<string name="downloader_error_download_file">Ошибка при скачивании файла</string>
<string name="downloader_too_many">Вы можете скачать только 100 сообщений за раз. Не будьте слишком жадным!</string>
<string name="comment_viewer_copy_comment">Копировать комментарий</string>
<string name="comment_viewer_see_likers">Просмотр симпатий комментария</string>
<string name="comment_viewer_reply_comment">Ответить на комментарий</string>
<string name="comment_viewer_like_comment">Мне нравится комментарий</string>
<string name="comment_viewer_unlike_comment">Не нравится комментарий</string>
<string name="comment_viewer_translate_comment">Перевести комментарий</string>
<string name="comment_viewer_delete_comment">Удалить комментарий</string>
<string name="comment_send_empty_comment">Нет пустых комментариев!</string>
<string name="comment_view_mention_user_search">Вы хотите найти имя пользователя?</string>
<string name="comment_view_mention_hash_search">Вы хотите найти хештэг?</string>
<string name="followers_type_followers">Подписчики</string>

View File

@ -40,8 +40,6 @@
<string name="save_to_folder">Uložiť do vlastného priečinku</string>
<string name="select_folder">Vybrať priečinok</string>
<string name="theme_settings">Téma</string>
<string name="login_settings">Platí iba pre prihlásených užívateľov:</string>
<string name="anonymous_settings">Platí iba pre neprihlásených užívateľov:</string>
<string name="select_language">Jazyk</string>
<plurals name="main_posts_count">
<item quantity="one">%s\nPríspevok</item>
@ -117,10 +115,7 @@
<string name="saved">Uložené</string>
<string name="tagged">Označené</string>
<string name="dm_person">Správa</string>
<string name="like_without_count">Páči sa</string>
<string name="unlike_without_count">Nepáči sa</string>
<string name="bookmark">Záložka</string>
<string name="unbookmark">Zrušiť záložku</string>
<string name="follow">Sledovať</string>
<string name="unfollow">Zrušiť sledovanie</string>
<string name="favorite_short" comment="Adjective, not verb">Obľúbené</string>
@ -148,7 +143,6 @@
<string name="dialog_export_failed">Export zlyhal!</string>
<string name="refresh">Obnoviť</string>
<string name="get_cookies">Získať cookies</string>
<string name="desktop_2fa">Režim desktop</string>
<string name="time_settings_title_custom">Použiť vlastný formát</string>
<string name="time_settings_title_separator">Oddeľovač</string>
<string name="time_settings_title_time_format">Formát času</string>
@ -215,14 +209,8 @@
<string name="downloader_error_creating_folder">Chyba pri vytváraní priečinka!</string>
<string name="downloader_error_download_file">Chyba pri sťahovaní súboru</string>
<string name="downloader_too_many">Môžeš stiahnuť len 100 príspevkov v jeden čas. Nebuď chamtivý/á!</string>
<string name="comment_viewer_copy_comment">Kopírovať komentár</string>
<string name="comment_viewer_see_likers">Ľudia čo označili \"páči sa mi\"</string>
<string name="comment_viewer_reply_comment">Odpovedať na komentár</string>
<string name="comment_viewer_like_comment">Páči sa mi</string>
<string name="comment_viewer_unlike_comment">Nepáči sa mi</string>
<string name="comment_viewer_translate_comment">Preložiť komentár</string>
<string name="comment_viewer_delete_comment">Delete comment</string>
<string name="comment_send_empty_comment">Komentár je prázdny!</string>
<string name="comment_view_mention_user_search">Chcete vyhľadať používeteľské meno?</string>
<string name="comment_view_mention_hash_search">Chcete vyhľadať hashtag?</string>
<string name="followers_type_followers">Sledovatelia</string>

View File

@ -40,8 +40,6 @@
<string name="save_to_folder">Spara till en anpassad mapp</string>
<string name="select_folder">Välj mapp</string>
<string name="theme_settings">Tema</string>
<string name="login_settings">Påverkar endast inloggade användare:</string>
<string name="anonymous_settings">Påverkar endast anonyma användare:</string>
<string name="select_language">Språk</string>
<plurals name="main_posts_count">
<item quantity="one">%s\nPost</item>
@ -109,10 +107,7 @@
<string name="saved">Sparade</string>
<string name="tagged">Taggade</string>
<string name="dm_person">Meddelande</string>
<string name="like_without_count">Gilla</string>
<string name="unlike_without_count">Sluta gilla</string>
<string name="bookmark">Bokmärk</string>
<string name="unbookmark">Ta bort bokmärke</string>
<string name="follow">Följ</string>
<string name="unfollow">Sluta följa</string>
<string name="favorite_short" comment="Adjective, not verb">Favorit</string>
@ -140,7 +135,6 @@
<string name="dialog_export_failed">Misslyckades med exportering!</string>
<string name="refresh">Uppdatera</string>
<string name="get_cookies">Hämta kakor</string>
<string name="desktop_2fa">Skrivbordsläge</string>
<string name="time_settings_title_custom">Använd anpassat format</string>
<string name="time_settings_title_separator">Avskiljare</string>
<string name="time_settings_title_time_format">Tidsformat</string>
@ -207,14 +201,8 @@
<string name="downloader_error_creating_folder">Error creating folder!</string>
<string name="downloader_error_download_file">Error downloading file</string>
<string name="downloader_too_many">Du kan endast ladda ner 100 inlägg åt gången. Var inte för girig!</string>
<string name="comment_viewer_copy_comment">Kopiera kommentaren</string>
<string name="comment_viewer_see_likers">Visa gillare av kommentaren</string>
<string name="comment_viewer_reply_comment">Svara till kommentaren</string>
<string name="comment_viewer_like_comment">Gilla kommentaren</string>
<string name="comment_viewer_unlike_comment">Sluta gilla kommentaren</string>
<string name="comment_viewer_translate_comment">Översätt kommentaren</string>
<string name="comment_viewer_delete_comment">Delete comment</string>
<string name="comment_send_empty_comment">Inga tomma kommentarer!</string>
<string name="comment_view_mention_user_search">Vill du söka på användarnamnet?</string>
<string name="comment_view_mention_hash_search">Vill du söka på hash-taggen?</string>
<string name="followers_type_followers">Följare</string>

View File

@ -40,8 +40,6 @@
<string name="save_to_folder">Şu klasöre kaydet:</string>
<string name="select_folder">Klasörü seçin</string>
<string name="theme_settings">Tema</string>
<string name="login_settings">Sadece giriş yapılmış hesapları etkiler:</string>
<string name="anonymous_settings">Sadece anonim hesapları etkiler:</string>
<string name="select_language">Dil</string>
<plurals name="main_posts_count">
<item quantity="one">%s\nGönderi</item>
@ -109,10 +107,7 @@
<string name="saved">Kaydedilenler</string>
<string name="tagged">Etiketlenilenler</string>
<string name="dm_person">Mesaj</string>
<string name="like_without_count">Beğen</string>
<string name="unlike_without_count">Beğenmekten Vazgeç</string>
<string name="bookmark">Yer İşareti Koy</string>
<string name="unbookmark">Yer İşaretini Kaldır</string>
<string name="follow">Takip Et</string>
<string name="unfollow">Takipten Çık</string>
<string name="favorite_short" comment="Adjective, not verb">Favorilere Ekle</string>
@ -140,7 +135,6 @@
<string name="dialog_export_failed">Dışa aktarılamadı!</string>
<string name="refresh">Yenile</string>
<string name="get_cookies">Çerezleri al</string>
<string name="desktop_2fa">Masaüstü Modu</string>
<string name="time_settings_title_custom">Özel biçim kullan</string>
<string name="time_settings_title_separator">Ayırıcı</string>
<string name="time_settings_title_time_format">Zaman Biçimi</string>
@ -207,14 +201,8 @@
<string name="downloader_error_creating_folder">Klasör oluşturma hatası!</string>
<string name="downloader_error_download_file">Dosya indirme hatası</string>
<string name="downloader_too_many">Tek seferde en fazla 100 gönderi indirebilirsin, açgözlü olma!</string>
<string name="comment_viewer_copy_comment">Yorumu kopyala</string>
<string name="comment_viewer_see_likers">Yorumu beğenenleri gör</string>
<string name="comment_viewer_reply_comment">Yoruma cevap ver</string>
<string name="comment_viewer_like_comment">Yorumu beğen</string>
<string name="comment_viewer_unlike_comment">Yorum beğenisini geri al</string>
<string name="comment_viewer_translate_comment">Yorumu çevir</string>
<string name="comment_viewer_delete_comment">Delete comment</string>
<string name="comment_send_empty_comment">Boş yorum yapılamaz!</string>
<string name="comment_view_mention_user_search">Kullanıcı adını aratmak istiyor musun?</string>
<string name="comment_view_mention_hash_search">Etiketi aratmak istiyor musun?</string>
<string name="followers_type_followers">Takipçiler</string>

View File

@ -40,8 +40,6 @@
<string name="save_to_folder">Lưu vào thư mục tùy chọn</string>
<string name="select_folder">Chọn thư mục</string>
<string name="theme_settings">Giao diện</string>
<string name="login_settings">Chỉ ảnh hưởng người dùng đã đăng nhập:</string>
<string name="anonymous_settings">Chỉ ảnh hưởng người dùng ẩn danh:</string>
<string name="select_language">Ngôn ngữ</string>
<plurals name="main_posts_count">
<item quantity="other">%s\nBài đăng</item>
@ -105,10 +103,7 @@
<string name="saved">Đã lưu</string>
<string name="tagged">Đã gắn thẻ</string>
<string name="dm_person">Tin nhắn</string>
<string name="like_without_count">Thích</string>
<string name="unlike_without_count">Bỏ thích</string>
<string name="bookmark">Dấu trang</string>
<string name="unbookmark">Gỡ dấu trang</string>
<string name="follow">Theo dõi</string>
<string name="unfollow">Bỏ theo dõi</string>
<string name="favorite_short" comment="Adjective, not verb">Yêu thích</string>
@ -136,7 +131,6 @@
<string name="dialog_export_failed">Xuất dữ liệu thất bại!</string>
<string name="refresh">Làm mới</string>
<string name="get_cookies">Lấy cookies</string>
<string name="desktop_2fa">Chế độ máy tính</string>
<string name="time_settings_title_custom">Dùng định dạng tuỳ chỉnh</string>
<string name="time_settings_title_separator">Phân cách</string>
<string name="time_settings_title_time_format">Định dạng Thời gian</string>
@ -203,14 +197,8 @@
<string name="downloader_error_creating_folder">Lỗi khi tạo thư mục!</string>
<string name="downloader_error_download_file">Lỗi khi tải xuống tệp</string>
<string name="downloader_too_many">Bạn chỉ có thể tải xuống 100 bài cùng một lúc. Đừng tham lam quá!</string>
<string name="comment_viewer_copy_comment">Sao chép bình luận</string>
<string name="comment_viewer_see_likers">Xem những người đã thích bình luận</string>
<string name="comment_viewer_reply_comment">Trả lời bình luận</string>
<string name="comment_viewer_like_comment">Thích bình luận</string>
<string name="comment_viewer_unlike_comment">Bỏ thích bình luận</string>
<string name="comment_viewer_translate_comment">Dịch bình luận</string>
<string name="comment_viewer_delete_comment">Xóa bình luận</string>
<string name="comment_send_empty_comment">Không được để trống bình luận!</string>
<string name="comment_view_mention_user_search">Bạn có muốn tìm tên người dùng không?</string>
<string name="comment_view_mention_hash_search">Bạn có muốn tìm hashtag không?</string>
<string name="followers_type_followers">Người theo dõi</string>

View File

@ -40,8 +40,6 @@
<string name="save_to_folder">保存至自定义文件夹</string>
<string name="select_folder">选择文件夹</string>
<string name="theme_settings">主题</string>
<string name="login_settings">仅影响登录用户:</string>
<string name="anonymous_settings">仅影响匿名用户:</string>
<string name="select_language">语言</string>
<plurals name="main_posts_count">
<item quantity="other">%s\n帖子</item>
@ -105,10 +103,7 @@
<string name="saved">已保存</string>
<string name="tagged">已标记</string>
<string name="dm_person">消息</string>
<string name="like_without_count"></string>
<string name="unlike_without_count">取消点赞</string>
<string name="bookmark">加入收藏</string>
<string name="unbookmark">解除收藏</string>
<string name="follow">关注</string>
<string name="unfollow">脱粉</string>
<string name="favorite_short" comment="Adjective, not verb">加入收藏</string>
@ -136,7 +131,6 @@
<string name="dialog_export_failed">导出失败!</string>
<string name="refresh">刷新</string>
<string name="get_cookies">获取 cookies</string>
<string name="desktop_2fa">桌面版</string>
<string name="time_settings_title_custom">使用自定义格式</string>
<string name="time_settings_title_separator">分界</string>
<string name="time_settings_title_time_format">时间格式</string>
@ -203,14 +197,8 @@
<string name="downloader_error_creating_folder">创建文件夹时出错!</string>
<string name="downloader_error_download_file">下载文件时出错</string>
<string name="downloader_too_many">您一次只能下载100个帖子。切勿贪得无厌</string>
<string name="comment_viewer_copy_comment">复制评论</string>
<string name="comment_viewer_see_likers">查看评论赞</string>
<string name="comment_viewer_reply_comment">回复评论</string>
<string name="comment_viewer_like_comment">赞评论</string>
<string name="comment_viewer_unlike_comment">取消赞</string>
<string name="comment_viewer_translate_comment">翻译评论</string>
<string name="comment_viewer_delete_comment">删除评论</string>
<string name="comment_send_empty_comment">评论要写字的!</string>
<string name="comment_view_mention_user_search">要搜索用户名吗?</string>
<string name="comment_view_mention_hash_search">要搜索标签吗?</string>
<string name="followers_type_followers">粉丝</string>

View File

@ -40,8 +40,6 @@
<string name="save_to_folder">儲存到自定義資料夾</string>
<string name="select_folder">選擇資料夾</string>
<string name="theme_settings">主題</string>
<string name="login_settings">僅影響已登入用戶:</string>
<string name="anonymous_settings">僅影響匿名用戶:</string>
<string name="select_language">語言</string>
<plurals name="main_posts_count">
<item quantity="other">%s\n貼文</item>
@ -105,10 +103,7 @@
<string name="saved">已儲存</string>
<string name="tagged">已標記</string>
<string name="dm_person">訊息</string>
<string name="like_without_count"></string>
<string name="unlike_without_count">收回讚</string>
<string name="bookmark">書籤</string>
<string name="unbookmark">自書籤中移除</string>
<string name="follow">追蹤</string>
<string name="unfollow">取消追蹤</string>
<string name="favorite_short" comment="Adjective, not verb">收藏</string>
@ -136,7 +131,6 @@
<string name="dialog_export_failed">匯出失敗!</string>
<string name="refresh">重新整理</string>
<string name="get_cookies">取得 Cookies</string>
<string name="desktop_2fa">桌面模式</string>
<string name="time_settings_title_custom">使用自定義格式</string>
<string name="time_settings_title_separator">分隔</string>
<string name="time_settings_title_time_format">時間格式</string>
@ -203,14 +197,8 @@
<string name="downloader_error_creating_folder">建立資料夾時出錯!</string>
<string name="downloader_error_download_file">下載檔案時出錯</string>
<string name="downloader_too_many">您一次只能下載100個文章。不要太貪心</string>
<string name="comment_viewer_copy_comment">複製評論</string>
<string name="comment_viewer_see_likers">查看為此評論點讚的用戶</string>
<string name="comment_viewer_reply_comment">回覆評論</string>
<string name="comment_viewer_like_comment">對此評論說讚</string>
<string name="comment_viewer_unlike_comment">收回評論的讚</string>
<string name="comment_viewer_translate_comment">翻譯評論</string>
<string name="comment_viewer_delete_comment">刪除評論</string>
<string name="comment_send_empty_comment">無空評論!</string>
<string name="comment_view_mention_user_search">您要搜尋用戶名嗎?</string>
<string name="comment_view_mention_hash_search">您要搜尋主題標籤嗎?</string>
<string name="followers_type_followers">追蹤者</string>

View File

@ -6,4 +6,6 @@
<item name="detail" type="id" />
<item name="copy" type="id" />
<item name="share_dm" type="id" />
<item name="download_current" type="id" />
<item name="download_all" type="id" />
</resources>

View File

@ -5,8 +5,6 @@
<string name="action_dms">Direct Messages</string>
<string name="action_settings">Settings</string>
<string name="action_download">Download</string>
<string name="action_github" translatable="false">GitHub</string>
<string name="action_fdroid" translatable="false">F-Droid</string>
<string name="action_search">Search username…</string>
<string name="action_compare">Compare</string>
<string name="clipboard_error">Error copying text</string>
@ -44,8 +42,6 @@
<string name="save_to_folder">Save to custom folder</string>
<string name="select_folder">Select folder</string>
<string name="theme_settings">Theme</string>
<string name="login_settings">Only affects logged-in users:</string>
<string name="anonymous_settings">Only affects anonymous users:</string>
<string name="select_language">Language</string>
<plurals name="main_posts_count">
<item quantity="one">%s\nPost</item>
@ -73,7 +69,7 @@
<string name="be_patient">Be patient!</string>
<string name="view_story_post">View Post</string>
<string name="view_post">View Post</string>
<string name="spotify">Spotify</string>
<string name="spotify" translatable="false">Spotify</string>
<string name="vote_story_poll">Vote</string>
<string name="votef_story_poll">Vote successful!</string>
<string name="voted_story_poll">You have already voted!</string>
@ -114,10 +110,7 @@
<string name="saved">Saved</string>
<string name="tagged">Tagged</string>
<string name="dm_person">Message</string>
<string name="like_without_count">Like</string>
<string name="unlike_without_count">Unlike</string>
<string name="bookmark">Bookmark</string>
<string name="unbookmark">Unbookmark</string>
<string name="follow">Follow</string>
<string name="unfollow">Unfollow</string>
<string name="favorite_short" comment="Adjective, not verb">Favorite</string>
@ -145,7 +138,6 @@
<string name="dialog_export_failed">Failed to export!</string>
<string name="refresh">Refresh</string>
<string name="get_cookies">Get cookies</string>
<string name="desktop_2fa">Desktop Mode</string>
<string name="time_settings_title_custom">Use custom format</string>
<string name="time_settings_title_separator">Separator</string>
<string name="time_settings_title_time_format">Time Format</string>
@ -205,6 +197,7 @@
<string name="direct_download_desc">Downloads posts directly to the phone!</string>
<string name="direct_download_loading">Fetching post(s)</string>
<string name="downloader_complete">Download completed</string>
<string name="downloader_preparing">Preparing to download…</string>
<string name="downloader_downloading_post">Downloading post…</string>
<string name="downloader_downloading_media">Downloading media</string>
<string name="downloader_downloading_pfp">Downloading profile picture</string>
@ -212,14 +205,8 @@
<string name="downloader_error_creating_folder">Error creating folder!</string>
<string name="downloader_error_download_file">Error downloading file</string>
<string name="downloader_too_many">You can only download 100 posts at a time. Don\'t be too greedy!</string>
<string name="comment_viewer_copy_comment">Copy comment</string>
<string name="comment_viewer_see_likers">View comment likers</string>
<string name="comment_viewer_reply_comment">Reply to comment</string>
<string name="comment_viewer_like_comment">Like comment</string>
<string name="comment_viewer_unlike_comment">Unlike comment</string>
<string name="comment_viewer_translate_comment">Translate comment</string>
<string name="comment_viewer_delete_comment">Delete comment</string>
<string name="comment_send_empty_comment">No empty comments!</string>
<string name="comment_view_mention_user_search">Do you want to search the username?</string>
<string name="comment_view_mention_hash_search">Do you want to search the hashtag?</string>
<string name="followers_type_followers">Followers</string>