Soapbox FE --> Soapbox
This commit is contained in:
parent
c29bf4040a
commit
5fec9c580b
51 changed files with 83 additions and 94 deletions
29
README.md
29
README.md
|
@ -1,9 +1,8 @@
|
||||||
# Soapbox FE
|
# Soapbox
|
||||||
|
|
||||||
![Soapbox FE Screenshot](soapbox-screenshot.png)
|
![Soapbox Screenshot](soapbox-screenshot.png)
|
||||||
|
|
||||||
**Soapbox FE** is a frontend for Mastodon and Pleroma with a focus on custom branding and ease of use.
|
**Soapbox** is a frontend for Mastodon and Pleroma with a focus on custom branding and ease of use.
|
||||||
It's part of the [Soapbox](https://soapbox.pub) project.
|
|
||||||
|
|
||||||
## Try it out
|
## Try it out
|
||||||
|
|
||||||
|
@ -11,11 +10,11 @@ Visit https://fe.soapbox.pub/ and point it to your favorite instance.
|
||||||
|
|
||||||
## :rocket: Deploy on Pleroma
|
## :rocket: Deploy on Pleroma
|
||||||
|
|
||||||
Installing Soapbox FE on an existing Pleroma server is extremely easy.
|
Installing Soapbox on an existing Pleroma server is extremely easy.
|
||||||
Just ssh into the server and download a .zip of the latest build:
|
Just ssh into the server and download a .zip of the latest build:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
curl -L https://gitlab.com/soapbox-pub/soapbox-fe/-/jobs/artifacts/v2.0.0/download?job=build-production -o soapbox-fe.zip
|
curl -L https://gitlab.com/soapbox-pub/soapbox-fe/-/jobs/artifacts/develop/download?job=build-production -o soapbox-fe.zip
|
||||||
```
|
```
|
||||||
|
|
||||||
Then unpack it into Pleroma's `instance` directory:
|
Then unpack it into Pleroma's `instance` directory:
|
||||||
|
@ -25,11 +24,11 @@ busybox unzip soapbox-fe.zip -o -d /opt/pleroma/instance
|
||||||
```
|
```
|
||||||
|
|
||||||
**That's it!** :tada:
|
**That's it!** :tada:
|
||||||
**Soapbox FE is installed.**
|
**Soapbox is installed.**
|
||||||
The change will take effect immediately, just refresh your browser tab.
|
The change will take effect immediately, just refresh your browser tab.
|
||||||
It's not necessary to restart the Pleroma service.
|
It's not necessary to restart the Pleroma service.
|
||||||
|
|
||||||
To remove Soapbox FE and revert to the default pleroma-fe, simply `rm /opt/pleroma/instance/static/index.html` (you can delete other stuff in there too, but be careful not to delete your own HTML files).
|
To remove Soapbox and revert to the default pleroma-fe, simply `rm /opt/pleroma/instance/static/index.html` (you can delete other stuff in there too, but be careful not to delete your own HTML files).
|
||||||
|
|
||||||
## :elephant: Deploy on Mastodon
|
## :elephant: Deploy on Mastodon
|
||||||
|
|
||||||
|
@ -37,7 +36,7 @@ See [Installing Soapbox over Mastodon](https://docs.soapbox.pub/frontend/adminis
|
||||||
|
|
||||||
## How does it work?
|
## How does it work?
|
||||||
|
|
||||||
Soapbox FE is a [single-page application (SPA)](https://en.wikipedia.org/wiki/Single-page_application) that runs entirely in the browser with JavaScript.
|
Soapbox is a [single-page application (SPA)](https://en.wikipedia.org/wiki/Single-page_application) that runs entirely in the browser with JavaScript.
|
||||||
|
|
||||||
It has a single HTML file, `index.html`, responsible only for loading the required JavaScript and CSS.
|
It has a single HTML file, `index.html`, responsible only for loading the required JavaScript and CSS.
|
||||||
It interacts with the backend through [XMLHttpRequest (XHR)](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest).
|
It interacts with the backend through [XMLHttpRequest (XHR)](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest).
|
||||||
|
@ -115,9 +114,9 @@ All configuration is optional, except `NODE_ENV`.
|
||||||
#### `NODE_ENV`
|
#### `NODE_ENV`
|
||||||
|
|
||||||
The Node environment.
|
The Node environment.
|
||||||
Soapbox FE checks for the following options:
|
Soapbox checks for the following options:
|
||||||
|
|
||||||
- `development` - What you should use while developing Soapbox FE.
|
- `development` - What you should use while developing Soapbox.
|
||||||
- `production` - Use when compiling to deploy to a live server.
|
- `production` - Use when compiling to deploy to a live server.
|
||||||
- `test` - Use when running automated tests.
|
- `test` - Use when running automated tests.
|
||||||
|
|
||||||
|
@ -193,19 +192,19 @@ More details can be found in [Customizing Soapbox](docs/customization.md).
|
||||||
|
|
||||||
# License & Credits
|
# License & Credits
|
||||||
|
|
||||||
Soapbox FE is based on [Gab Social](https://code.gab.com/gab/social/gab-social)'s frontend which is in turn based on [Mastodon](https://github.com/tootsuite/mastodon/)'s frontend.
|
Soapbox is based on [Gab Social](https://code.gab.com/gab/social/gab-social)'s frontend which is in turn based on [Mastodon](https://github.com/tootsuite/mastodon/)'s frontend.
|
||||||
|
|
||||||
- `static/sounds/chat.mp3` and `static/sounds/chat.oga` are from [notificationsounds.com](https://notificationsounds.com/notification-sounds/intuition-561) licensed under CC BY 4.0.
|
- `static/sounds/chat.mp3` and `static/sounds/chat.oga` are from [notificationsounds.com](https://notificationsounds.com/notification-sounds/intuition-561) licensed under CC BY 4.0.
|
||||||
|
|
||||||
Soapbox FE is free software: you can redistribute it and/or modify
|
Soapbox is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU Affero General Public License as published by
|
it under the terms of the GNU Affero General Public License as published by
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
(at your option) any later version.
|
(at your option) any later version.
|
||||||
|
|
||||||
Soapbox FE is distributed in the hope that it will be useful,
|
Soapbox is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU Affero General Public License for more details.
|
GNU Affero General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU Affero General Public License
|
You should have received a copy of the GNU Affero General Public License
|
||||||
along with Soapbox FE. If not, see <https://www.gnu.org/licenses/>.
|
along with Soapbox. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
|
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "El borrador va perdese si coles de Soapbox FE.",
|
"ui.beforeunload": "El borrador va perdese si coles de Soapbox.",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "Drag & drop to upload",
|
"upload_area.title": "Drag & drop to upload",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} বাকি আছে",
|
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} বাকি আছে",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} কথা বলছে",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} কথা বলছে",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "যে পর্যন্ত এটা লেখা হয়েছে, Soapbox FE থেকে চলে গেলে এটা মুছে যাবে।",
|
"ui.beforeunload": "যে পর্যন্ত এটা লেখা হয়েছে, Soapbox থেকে চলে গেলে এটা মুছে যাবে।",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "টেনে এখানে ছেড়ে দিলে এখানে যুক্ত করা যাবে",
|
"upload_area.title": "টেনে এখানে ছেড়ে দিলে এখানে যুক্ত করা যাবে",
|
||||||
|
|
|
@ -1042,7 +1042,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {# segon} other {# segons}} restants",
|
"time_remaining.seconds": "{number, plural, one {# segon} other {# segons}} restants",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {persona} other {persones}} parlant-hi",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {persona} other {persones}} parlant-hi",
|
||||||
"trends.title": "Tendències",
|
"trends.title": "Tendències",
|
||||||
"ui.beforeunload": "El teu esborrany es perdrà si surts de Soapbox FE.",
|
"ui.beforeunload": "El teu esborrany es perdrà si surts de Soapbox.",
|
||||||
"unauthorized_modal.text": "Heu d'iniciar sessió per fer això.",
|
"unauthorized_modal.text": "Heu d'iniciar sessió per fer això.",
|
||||||
"unauthorized_modal.title": "Registrar-se a {site_title}",
|
"unauthorized_modal.title": "Registrar-se a {site_title}",
|
||||||
"upload_area.title": "Arrossega i deixa anar per a carregar",
|
"upload_area.title": "Arrossega i deixa anar per a carregar",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {# siconda ferma} other {# siconde fermanu}}",
|
"time_remaining.seconds": "{number, plural, one {# siconda ferma} other {# siconde fermanu}}",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} parlanu",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} parlanu",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "A bruttacopia sarà persa s'ellu hè chjosu Soapbox FE.",
|
"ui.beforeunload": "A bruttacopia sarà persa s'ellu hè chjosu Soapbox.",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "Drag & drop per caricà un fugliale",
|
"upload_area.title": "Drag & drop per caricà un fugliale",
|
||||||
|
|
|
@ -1042,7 +1042,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {Zbývá # sekunda} few {Zbývají # sekundy} many {Zbývá # sekundy} other {Zbývá # sekund}}",
|
"time_remaining.seconds": "{number, plural, one {Zbývá # sekunda} few {Zbývají # sekundy} many {Zbývá # sekundy} other {Zbývá # sekund}}",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {člověk} few {lidé} many {lidí} other {lidí}} hovoří",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {člověk} few {lidé} many {lidí} other {lidí}} hovoří",
|
||||||
"trends.title": "Trendy",
|
"trends.title": "Trendy",
|
||||||
"ui.beforeunload": "Váš koncept se ztratí, pokud Soapbox FE opustíte.",
|
"ui.beforeunload": "Váš koncept se ztratí, pokud Soapbox opustíte.",
|
||||||
"unauthorized_modal.text": "Pro toto musíte být přihlášen/a.",
|
"unauthorized_modal.text": "Pro toto musíte být přihlášen/a.",
|
||||||
"unauthorized_modal.title": "Registrovat se na {site_title}",
|
"unauthorized_modal.title": "Registrovat se na {site_title}",
|
||||||
"upload_area.title": "Přetažením nahrajete",
|
"upload_area.title": "Přetažením nahrajete",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {# eiliad} other {# o eiliadau}} ar ôl",
|
"time_remaining.seconds": "{number, plural, one {# eiliad} other {# o eiliadau}} ar ôl",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} yn siarad",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} yn siarad",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "Mi fyddwch yn colli eich drafft os gadewch Soapbox FE.",
|
"ui.beforeunload": "Mi fyddwch yn colli eich drafft os gadewch Soapbox.",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "Llusgwch & gollwing i uwchlwytho",
|
"upload_area.title": "Llusgwch & gollwing i uwchlwytho",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {# sekund} other {# sekunder}} tilbage",
|
"time_remaining.seconds": "{number, plural, one {# sekund} other {# sekunder}} tilbage",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {personer}} snakker",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {personer}} snakker",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "Din kladde vil gå tabt hvis du forlader Soapbox FE.",
|
"ui.beforeunload": "Din kladde vil gå tabt hvis du forlader Soapbox.",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "Træk og slip for at uploade",
|
"upload_area.title": "Træk og slip for at uploade",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {# Sekunde} other {# Sekunden}} verbleibend",
|
"time_remaining.seconds": "{number, plural, one {# Sekunde} other {# Sekunden}} verbleibend",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, eine {Person} other {Personen}} reden darüber",
|
"trends.count_by_accounts": "{count} {rawCount, plural, eine {Person} other {Personen}} reden darüber",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "Dein Entwurf geht verloren, wenn du Soapbox FE verlässt.",
|
"ui.beforeunload": "Dein Entwurf geht verloren, wenn du Soapbox verlässt.",
|
||||||
"unauthorized_modal.text": "Für diese Aktion musst Du angemeldet sein.",
|
"unauthorized_modal.text": "Für diese Aktion musst Du angemeldet sein.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "Zum Hochladen hereinziehen",
|
"upload_area.title": "Zum Hochladen hereinziehen",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "απομένουν {number, plural, one {# δευτερόλεπτο} other {# δευτερόλεπτα}}",
|
"time_remaining.seconds": "απομένουν {number, plural, one {# δευτερόλεπτο} other {# δευτερόλεπτα}}",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} μιλάνε",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} μιλάνε",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "Το προσχέδιό σου θα χαθεί αν φύγεις από το Soapbox FE.",
|
"ui.beforeunload": "Το προσχέδιό σου θα χαθεί αν φύγεις από το Soapbox.",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "Drag & drop για να ανεβάσεις",
|
"upload_area.title": "Drag & drop για να ανεβάσεις",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {# sekundo} other {# sekundoj}} restas",
|
"time_remaining.seconds": "{number, plural, one {# sekundo} other {# sekundoj}} restas",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {persono} other {personoj}} parolas",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {persono} other {personoj}} parolas",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "Via malneto perdiĝos se vi eliras de Soapbox FE.",
|
"ui.beforeunload": "Via malneto perdiĝos se vi eliras de Soapbox.",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "Altreni kaj lasi por alŝuti",
|
"upload_area.title": "Altreni kaj lasi por alŝuti",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "{number, plural,one {queda # segundo} other {quedan # segundos}}",
|
"time_remaining.seconds": "{number, plural,one {queda # segundo} other {quedan # segundos}}",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {persona} other {personas}} hablando",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {persona} other {personas}} hablando",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "Tu borrador se perderá si abandonás Soapbox FE.",
|
"ui.beforeunload": "Tu borrador se perderá si abandonás Soapbox.",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "Para subir, arrastrá y soltá",
|
"upload_area.title": "Para subir, arrastrá y soltá",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {# segundo restante} other {# segundos restantes}}",
|
"time_remaining.seconds": "{number, plural, one {# segundo restante} other {# segundos restantes}}",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {persona} other {personas}} hablando",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {persona} other {personas}} hablando",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "Tu borrador se perderá si sales de Soapbox FE.",
|
"ui.beforeunload": "Tu borrador se perderá si sales de Soapbox.",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "Arrastra y suelta para subir",
|
"upload_area.title": "Arrastra y suelta para subir",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {# sekund} other {# sekundit}} left",
|
"time_remaining.seconds": "{number, plural, one {# sekund} other {# sekundit}} left",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {inimene} other {inimesed}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {inimene} other {inimesed}} talking",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "Sinu mustand läheb kaotsi, kui lahkud Soapbox FE.",
|
"ui.beforeunload": "Sinu mustand läheb kaotsi, kui lahkud Soapbox.",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "Lohista & aseta üleslaadimiseks",
|
"upload_area.title": "Lohista & aseta üleslaadimiseks",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {segundo #} other {# segundo}} amaitzeko",
|
"time_remaining.seconds": "{number, plural, one {segundo #} other {# segundo}} amaitzeko",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} hitz egiten",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} hitz egiten",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "Zure zirriborroa galduko da Soapbox FE uzten baduzu.",
|
"ui.beforeunload": "Zure zirriborroa galduko da Soapbox uzten baduzu.",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "Arrastatu eta jaregin igotzeko",
|
"upload_area.title": "Arrastatu eta jaregin igotzeko",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} restantes",
|
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} restantes",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {personne} other {personnes}} discutent",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {personne} other {personnes}} discutent",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "Votre brouillon sera perdu si vous quittez Soapbox FE.",
|
"ui.beforeunload": "Votre brouillon sera perdu si vous quittez Soapbox.",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "Glissez et déposez pour envoyer",
|
"upload_area.title": "Glissez et déposez pour envoyer",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {# segundo} other {# segundos}} restantes",
|
"time_remaining.seconds": "{number, plural, one {# segundo} other {# segundos}} restantes",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} outras {people}} conversando",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} outras {people}} conversando",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "O borrador perderase se sae de Soapbox FE.",
|
"ui.beforeunload": "O borrador perderase se sae de Soapbox.",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "Arrastre e solte para subir",
|
"upload_area.title": "Arrastre e solte para subir",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {# másodperc} other {# másodperc}} van hátra",
|
"time_remaining.seconds": "{number, plural, one {# másodperc} other {# másodperc}} van hátra",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {résztvevő} other {résztvevő}} beszélget",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {résztvevő} other {résztvevő}} beszélget",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "A piszkozatod el fog veszni, ha elhagyod a Soapbox FE-t.",
|
"ui.beforeunload": "A piszkozatod el fog veszni, ha elhagyod a Soapbox-t.",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "Húzd ide a feltöltéshez",
|
"upload_area.title": "Húzd ide a feltöltéshez",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
|
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "Naskah anda akan hilang jika anda keluar dari Soapbox FE.",
|
"ui.beforeunload": "Naskah anda akan hilang jika anda keluar dari Soapbox.",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "Seret & lepaskan untuk mengunggah",
|
"upload_area.title": "Seret & lepaskan untuk mengunggah",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {# secondo} other {# secondi}} rimasti",
|
"time_remaining.seconds": "{number, plural, one {# secondo} other {# secondi}} rimasti",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {persona ne sta} other {persone ne stanno}} parlando",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {persona ne sta} other {persone ne stanno}} parlando",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "La bozza andrà persa se esci da Soapbox FE.",
|
"ui.beforeunload": "La bozza andrà persa se esci da Soapbox.",
|
||||||
"unauthorized_modal.text": "Devi eseguire l'autenticazione per fare questo",
|
"unauthorized_modal.text": "Devi eseguire l'autenticazione per fare questo",
|
||||||
"unauthorized_modal.title": "Iscriviti su {site_title}",
|
"unauthorized_modal.title": "Iscriviti su {site_title}",
|
||||||
"upload_area.title": "Trascina per caricare",
|
"upload_area.title": "Trascina per caricare",
|
||||||
|
|
|
@ -1042,7 +1042,7 @@
|
||||||
"time_remaining.seconds": "残り{number}秒",
|
"time_remaining.seconds": "残り{number}秒",
|
||||||
"trends.count_by_accounts": "{count}人が投稿",
|
"trends.count_by_accounts": "{count}人が投稿",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "Soapbox FEから離れると送信前の投稿は失われます。",
|
"ui.beforeunload": "Soapboxから離れると送信前の投稿は失われます。",
|
||||||
"unauthorized_modal.text": "ログインする必要があります。",
|
"unauthorized_modal.text": "ログインする必要があります。",
|
||||||
"unauthorized_modal.title": "{site_title}へ新規登録",
|
"unauthorized_modal.title": "{site_title}へ新規登録",
|
||||||
"upload_area.title": "ドラッグ&ドロップでアップロード",
|
"upload_area.title": "ドラッグ&ドロップでアップロード",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {# секунд} other {# секунд}}",
|
"time_remaining.seconds": "{number, plural, one {# секунд} other {# секунд}}",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} жазған екен",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} жазған екен",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "Soapbox FE желісінен шықсаңыз, нобайыңыз сақталмайды.",
|
"ui.beforeunload": "Soapbox желісінен шықсаңыз, нобайыңыз сақталмайды.",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "Жүктеу үшін сүйреп әкеліңіз",
|
"upload_area.title": "Жүктеу үшін сүйреп әкеліңіз",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {# seconde} other {# seconden}} te gaan",
|
"time_remaining.seconds": "{number, plural, one {# seconde} other {# seconden}} te gaan",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {persoon praat} other {mensen praten}} hierover",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {persoon praat} other {mensen praten}} hierover",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "Je concept zal verloren gaan als je Soapbox FE verlaat.",
|
"ui.beforeunload": "Je concept zal verloren gaan als je Soapbox verlaat.",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "Hiernaar toe slepen om te uploaden",
|
"upload_area.title": "Hiernaar toe slepen om te uploaden",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
|
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "Din kladd vil bli forkastet om du forlater Soapbox FE.",
|
"ui.beforeunload": "Din kladd vil bli forkastet om du forlater Soapbox.",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "Dra og slipp for å laste opp",
|
"upload_area.title": "Dra og slipp for å laste opp",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "demòra{number, plural, one { # segonda} other {n # segondas}}",
|
"time_remaining.seconds": "demòra{number, plural, one { # segonda} other {n # segondas}}",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "Vòstre brolhon serà perdut se quitatz Soapbox FE.",
|
"ui.beforeunload": "Vòstre brolhon serà perdut se quitatz Soapbox.",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "Lisatz e depausatz per mandar",
|
"upload_area.title": "Lisatz e depausatz per mandar",
|
||||||
|
|
|
@ -1218,7 +1218,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {Pozostała # sekunda} few {Pozostały # sekundy} many {Pozostało # sekund} other {Pozostało # sekund}}",
|
"time_remaining.seconds": "{number, plural, one {Pozostała # sekunda} few {Pozostały # sekundy} many {Pozostało # sekund} other {Pozostało # sekund}}",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {osoba rozmawia} few {osoby rozmawiają} other {osób rozmawia}} o tym",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {osoba rozmawia} few {osoby rozmawiają} other {osób rozmawia}} o tym",
|
||||||
"trends.title": "Trendy",
|
"trends.title": "Trendy",
|
||||||
"ui.beforeunload": "Utracisz tworzony wpis, jeżeli opuścisz Soapbox FE.",
|
"ui.beforeunload": "Utracisz tworzony wpis, jeżeli opuścisz Soapbox.",
|
||||||
"unauthorized_modal.footer": "Masz już konto? {login}.",
|
"unauthorized_modal.footer": "Masz już konto? {login}.",
|
||||||
"unauthorized_modal.text": "Musisz się zalogować, aby to zrobić.",
|
"unauthorized_modal.text": "Musisz się zalogować, aby to zrobić.",
|
||||||
"unauthorized_modal.title": "Zarejestruj się na {site_title}",
|
"unauthorized_modal.title": "Zarejestruj się na {site_title}",
|
||||||
|
@ -1244,4 +1244,4 @@
|
||||||
"video.play": "Odtwórz",
|
"video.play": "Odtwórz",
|
||||||
"video.unmute": "Cofnij wyciszenie",
|
"video.unmute": "Cofnij wyciszenie",
|
||||||
"who_to_follow.title": "Kogo obserwować"
|
"who_to_follow.title": "Kogo obserwować"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {# segundo restante} other {# segundos restantes}}",
|
"time_remaining.seconds": "{number, plural, one {# segundo restante} other {# segundos restantes}}",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {pessoa} other {pessoas}} falando sobre",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {pessoa} other {pessoas}} falando sobre",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "Seu rascunho será perdido se você sair do Soapbox FE.",
|
"ui.beforeunload": "Seu rascunho será perdido se você sair do Soapbox.",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "Arraste e solte para enviar",
|
"upload_area.title": "Arraste e solte para enviar",
|
||||||
|
|
|
@ -1042,7 +1042,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {# segundo restante} other {# segundos restantes}}",
|
"time_remaining.seconds": "{number, plural, one {# segundo restante} other {# segundos restantes}}",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {pessoa} other {pessoas}} estão a falar sobre",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {pessoa} other {pessoas}} estão a falar sobre",
|
||||||
"trends.title": "Atualidade",
|
"trends.title": "Atualidade",
|
||||||
"ui.beforeunload": "O teu rascunho será perdido se abandonares o Soapbox FE.",
|
"ui.beforeunload": "O teu rascunho será perdido se abandonares o Soapbox.",
|
||||||
"unauthorized_modal.text": "Deves ter a sessão iniciada para realizares essa ação.",
|
"unauthorized_modal.text": "Deves ter a sessão iniciada para realizares essa ação.",
|
||||||
"unauthorized_modal.title": "Registar no {site_title}",
|
"unauthorized_modal.title": "Registar no {site_title}",
|
||||||
"upload_area.title": "Arrasta e larga para enviar",
|
"upload_area.title": "Arrasta e larga para enviar",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {осталась # секунду} few {осталось # секунды} many {осталось # секунд} other {осталось # секунд}}",
|
"time_remaining.seconds": "{number, plural, one {осталась # секунду} few {осталось # секунды} many {осталось # секунд} other {осталось # секунд}}",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {человек говорит} few {человека говорят} other {человек говорят}} про это",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {человек говорит} few {человека говорят} other {человек говорят}} про это",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "Ваш черновик будет утерян, если вы покинете Soapbox FE.",
|
"ui.beforeunload": "Ваш черновик будет утерян, если вы покинете Soapbox.",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "Перетащите сюда, чтобы загрузить",
|
"upload_area.title": "Перетащите сюда, чтобы загрузить",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "Ostáva {number, plural, one {# sekunda} few {# sekúnd} many {# sekúnd} other {# sekúnd}}",
|
"time_remaining.seconds": "Ostáva {number, plural, one {# sekunda} few {# sekúnd} many {# sekúnd} other {# sekúnd}}",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {človek vraví} other {ľudia vravia}}",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {človek vraví} other {ľudia vravia}}",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "Čo máš rozpísané sa stratí, ak opustíš Soapbox FE.",
|
"ui.beforeunload": "Čo máš rozpísané sa stratí, ak opustíš Soapbox.",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "Pretiahni a pusť pre nahratie",
|
"upload_area.title": "Pretiahni a pusť pre nahratie",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {# sekunda} other {# sekund}} je ostalo",
|
"time_remaining.seconds": "{number, plural, one {# sekunda} other {# sekund}} je ostalo",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {oseba} other {ljudi}} govori",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {oseba} other {ljudi}} govori",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "Vaš osnutek bo izgubljen, če zapustite Soapbox FEa.",
|
"ui.beforeunload": "Vaš osnutek bo izgubljen, če zapustite Soapboxa.",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "Za pošiljanje povlecite in spustite",
|
"upload_area.title": "Za pošiljanje povlecite in spustite",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
|
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person duke folur} other {persona që flasin}}",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person duke folur} other {persona që flasin}}",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "Skica juaj do të humbë nëse dilni nga Soapbox FE-i.",
|
"ui.beforeunload": "Skica juaj do të humbë nëse dilni nga Soapbox-i.",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "Merreni & vëreni që të ngarkohet",
|
"upload_area.title": "Merreni & vëreni që të ngarkohet",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
|
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "Ako napustite Soapbox FE, izgubićete napisani nacrt.",
|
"ui.beforeunload": "Ako napustite Soapbox, izgubićete napisani nacrt.",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "Prevucite ovde da otpremite",
|
"upload_area.title": "Prevucite ovde da otpremite",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
|
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {човек} other {људи}} прича",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {човек} other {људи}} прича",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "Ако напустите Soapbox FE, изгубићете написани нацрт.",
|
"ui.beforeunload": "Ако напустите Soapbox, изгубићете написани нацрт.",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "Превуците овде да отпремите",
|
"upload_area.title": "Превуците овде да отпремите",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {# sekund} other {# sekunder}} kvar",
|
"time_remaining.seconds": "{number, plural, one {# sekund} other {# sekunder}} kvar",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, en {person} andra {people}} pratar",
|
"trends.count_by_accounts": "{count} {rawCount, plural, en {person} andra {people}} pratar",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "Ditt utkast kommer att förloras om du lämnar Soapbox FE.",
|
"ui.beforeunload": "Ditt utkast kommer att förloras om du lämnar Soapbox.",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "Dra & släpp för att ladda upp",
|
"upload_area.title": "Dra & släpp för att ladda upp",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "เหลืออีก {number, plural, other {# วินาที}}",
|
"time_remaining.seconds": "เหลืออีก {number, plural, other {# วินาที}}",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, other {คน}}กำลังคุย",
|
"trends.count_by_accounts": "{count} {rawCount, plural, other {คน}}กำลังคุย",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "แบบร่างของคุณจะหายไปหากคุณออกจาก Soapbox FE",
|
"ui.beforeunload": "แบบร่างของคุณจะหายไปหากคุณออกจาก Soapbox",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "ลากแล้วปล่อยเพื่ออัปโหลด",
|
"upload_area.title": "ลากแล้วปล่อยเพื่ออัปโหลด",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {# saniye} other {# saniye}} kaldı",
|
"time_remaining.seconds": "{number, plural, one {# saniye} other {# saniye}} kaldı",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {kişi} other {kişi}} konuşuyor",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {kişi} other {kişi}} konuşuyor",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "Soapbox FE'dan ayrılırsanız taslağınız kaybolacak.",
|
"ui.beforeunload": "Soapbox'dan ayrılırsanız taslağınız kaybolacak.",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "Karşıya yükleme için sürükle bırak yapınız",
|
"upload_area.title": "Karşıya yükleme için sürükle bırak yapınız",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {# секунда} few {# секунди} other {# секунд}}",
|
"time_remaining.seconds": "{number, plural, one {# секунда} few {# секунди} other {# секунд}}",
|
||||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {людина} few {людини} many {людей} other {людей}} обговорюють це",
|
"trends.count_by_accounts": "{count} {rawCount, plural, one {людина} few {людини} many {людей} other {людей}} обговорюють це",
|
||||||
"trends.title": "Актуальні",
|
"trends.title": "Актуальні",
|
||||||
"ui.beforeunload": "Вашу чернетку буде втрачено, якщо ви покинете Soapbox FE.",
|
"ui.beforeunload": "Вашу чернетку буде втрачено, якщо ви покинете Soapbox.",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "Перетягніть сюди, щоб завантажити",
|
"upload_area.title": "Перетягніть сюди, щоб завантажити",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
|
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
|
||||||
"trends.count_by_accounts": "{count} 位用戶在討論",
|
"trends.count_by_accounts": "{count} 位用戶在討論",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "如果你現在離開 Soapbox FE,你的草稿內容將會被丟棄。",
|
"ui.beforeunload": "如果你現在離開 Soapbox,你的草稿內容將會被丟棄。",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "將檔案拖放至此上載",
|
"upload_area.title": "將檔案拖放至此上載",
|
||||||
|
|
|
@ -1044,7 +1044,7 @@
|
||||||
"time_remaining.seconds": "剩餘 {number, plural, one {# 秒} other {# 秒}}",
|
"time_remaining.seconds": "剩餘 {number, plural, one {# 秒} other {# 秒}}",
|
||||||
"trends.count_by_accounts": "{count} 位使用者在討論",
|
"trends.count_by_accounts": "{count} 位使用者在討論",
|
||||||
"trends.title": "Trends",
|
"trends.title": "Trends",
|
||||||
"ui.beforeunload": "如果離開 Soapbox FE,你的草稿將會不見。",
|
"ui.beforeunload": "如果離開 Soapbox,你的草稿將會不見。",
|
||||||
"unauthorized_modal.text": "You need to be logged in to do that.",
|
"unauthorized_modal.text": "You need to be logged in to do that.",
|
||||||
"unauthorized_modal.title": "Sign up for {site_title}",
|
"unauthorized_modal.title": "Sign up for {site_title}",
|
||||||
"upload_area.title": "拖放來上傳",
|
"upload_area.title": "拖放來上傳",
|
||||||
|
|
|
@ -21,7 +21,7 @@ export const federationRestrictionsDisclosed = (state: RootState): boolean => {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determine whether Soapbox FE is running in standalone mode.
|
* Determine whether Soapbox is running in standalone mode.
|
||||||
* Standalone mode runs separately from any backend and can login anywhere.
|
* Standalone mode runs separately from any backend and can login anywhere.
|
||||||
*/
|
*/
|
||||||
export const isStandalone = (state: RootState): boolean => {
|
export const isStandalone = (state: RootState): boolean => {
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
# Installing Soapbox FE on a subdomain
|
# Installing Soapbox on a subdomain
|
||||||
|
|
||||||
If you would like to retain Pleroma FE on your Pleroma server, but install Soapbox FE alongside it on a subdomain, you can do so by following these steps.
|
If you would like to retain Pleroma FE on your Pleroma server, but install Soapbox alongside it on a subdomain, you can do so by following these steps.
|
||||||
|
|
||||||
## 1. Download the build
|
## 1. Download the build
|
||||||
|
|
||||||
Create a directory on your system for Soapbox FE.
|
Create a directory on your system for Soapbox.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
mkdir -p /opt/soapbox
|
mkdir -p /opt/soapbox
|
||||||
|
@ -144,7 +144,7 @@ If that passed, reload Nginx:
|
||||||
systemctl reload nginx
|
systemctl reload nginx
|
||||||
```
|
```
|
||||||
|
|
||||||
If all is well, you should be able to visit the subdomain in your browser and access Soapbox FE!
|
If all is well, you should be able to visit the subdomain in your browser and access Soapbox!
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
# Installing Soapbox FE via YunoHost
|
# Installing Soapbox via YunoHost
|
||||||
|
|
||||||
If you want to install Soapbox FE to a Pleroma instance installed using [YunoHost](https://yunohost.org), you can do so by following these steps.
|
If you want to install Soapbox to a Pleroma instance installed using [YunoHost](https://yunohost.org), you can do so by following these steps.
|
||||||
|
|
||||||
## 1. Download the build
|
## 1. Download the build
|
||||||
|
|
||||||
First, download the latest build of Soapbox FE from GitLab.
|
First, download the latest build of Soapbox from GitLab.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
curl -L https://gitlab.com/soapbox-pub/soapbox-fe/-/jobs/artifacts/v1.3.0/download?job=build-production -o soapbox-fe.zip
|
curl -L https://gitlab.com/soapbox-pub/soapbox-fe/-/jobs/artifacts/v1.3.0/download?job=build-production -o soapbox-fe.zip
|
||||||
|
@ -18,7 +18,7 @@ Then, unzip the build to the Pleroma directory under YunoHost's directory:
|
||||||
busybox unzip soapbox-fe.zip -o -d /home/yunohost.app/pleroma/
|
busybox unzip soapbox-fe.zip -o -d /home/yunohost.app/pleroma/
|
||||||
```
|
```
|
||||||
|
|
||||||
**That's it! 🎉 Soapbox FE is installed.** The change will take effect immediately, just refresh your browser tab. It's not necessary to restart the Pleroma service.
|
**That's it! 🎉 Soapbox is installed.** The change will take effect immediately, just refresh your browser tab. It's not necessary to restart the Pleroma service.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Removing Soapbox
|
# Removing Soapbox
|
||||||
|
|
||||||
Removing Soapbox FE and reverting to Pleroma FE is really easy. Just run the following:
|
Removing Soapbox and reverting to Pleroma FE is really easy. Just run the following:
|
||||||
```
|
```
|
||||||
rm /opt/pleroma/instance/static/index.html
|
rm /opt/pleroma/instance/static/index.html
|
||||||
rm -R /opt/pleroma/instance/static/packs
|
rm -R /opt/pleroma/instance/static/packs
|
||||||
|
|
|
@ -2,17 +2,17 @@
|
||||||
|
|
||||||
You should always check the [release notes/changelog](https://gitlab.com/soapbox-pub/soapbox-fe/-/blob/develop/CHANGELOG.md) in case there are deprecations, special update changes, etc.
|
You should always check the [release notes/changelog](https://gitlab.com/soapbox-pub/soapbox-fe/-/blob/develop/CHANGELOG.md) in case there are deprecations, special update changes, etc.
|
||||||
|
|
||||||
Besides that, it's relatively pretty easy to update Soapbox FE. There's two ways to go about it: with the command line or with an unofficial script.
|
Besides that, it's relatively pretty easy to update Soapbox. There's two ways to go about it: with the command line or with an unofficial script.
|
||||||
|
|
||||||
## Updating with the command line
|
## Updating with the command line
|
||||||
|
|
||||||
To update Soapbox FE via the command line, do the following:
|
To update Soapbox via the command line, do the following:
|
||||||
|
|
||||||
```
|
```
|
||||||
# Download the build.
|
# Download the build.
|
||||||
curl -L https://gitlab.com/soapbox-pub/soapbox-fe/-/jobs/artifacts/v(latest.version.here)/download?job=build-production -o soapbox-fe.zip
|
curl -L https://gitlab.com/soapbox-pub/soapbox-fe/-/jobs/artifacts/develop/download?job=build-production -o soapbox-fe.zip
|
||||||
|
|
||||||
# Remove all the current Soapbox FE build in Pleroma's instance directory.
|
# Remove all the current Soapbox build in Pleroma's instance directory.
|
||||||
rm -R /opt/pleroma/instance/static/packs
|
rm -R /opt/pleroma/instance/static/packs
|
||||||
rm /opt/pleroma/instance/static/index.html
|
rm /opt/pleroma/instance/static/index.html
|
||||||
rm -R /opt/pleroma/instance/static/sounds
|
rm -R /opt/pleroma/instance/static/sounds
|
||||||
|
@ -21,16 +21,6 @@ rm -R /opt/pleroma/instance/static/sounds
|
||||||
busybox unzip soapbox-fe.zip -o -d /opt/pleroma/instance
|
busybox unzip soapbox-fe.zip -o -d /opt/pleroma/instance
|
||||||
```
|
```
|
||||||
|
|
||||||
## Updating with an unofficial script
|
|
||||||
|
|
||||||
You can also update Soapbox using [Sandia Mesa's updater bash script for Soapbox FE](https://code.sandiamesa.com/traboone/soapbox-update).
|
|
||||||
|
|
||||||
First, download the updater script if you haven't yet: ``sudo -Hu pleroma wget -P /var/lib/pleroma https://code.sandiamesa.com/traboone/soapbox-update/raw/branch/master/soapbox-update.sh -N``
|
|
||||||
|
|
||||||
Then, set the permissions of the updater script so that it can be executed: ``chmod u+x /var/lib/pleroma/soapbox-update.sh``
|
|
||||||
|
|
||||||
Finally, go to the Pleroma user's directory ``cd /var/lib/pleroma`` and then run ``sudo -Hu pleroma ./soapbox-update.sh``.
|
|
||||||
|
|
||||||
## After updating Soapbox
|
## After updating Soapbox
|
||||||
|
|
||||||
The changes take effect immediately, just refresh your browser tab. It's not necessary to restart the Pleroma service.
|
The changes take effect immediately, just refresh your browser tab. It's not necessary to restart the Pleroma service.
|
||||||
|
|
|
@ -87,7 +87,7 @@ The full app entity must be provided, for example:
|
||||||
"client_id": "cf5yI6ffXH1UcDkEApEIrtHpwCi5Tv9xmju8IKdMAkE",
|
"client_id": "cf5yI6ffXH1UcDkEApEIrtHpwCi5Tv9xmju8IKdMAkE",
|
||||||
"client_secret": "vHmSDpm6BJGUvR4_qWzmqWjfHcSYlZumxpFfohRwNNQ",
|
"client_secret": "vHmSDpm6BJGUvR4_qWzmqWjfHcSYlZumxpFfohRwNNQ",
|
||||||
"id": "7132",
|
"id": "7132",
|
||||||
"name": "Soapbox FE",
|
"name": "Soapbox",
|
||||||
"redirect_uri": "urn:ietf:wg:oauth:2.0:oob",
|
"redirect_uri": "urn:ietf:wg:oauth:2.0:oob",
|
||||||
"website": "https://soapbox.pub/",
|
"website": "https://soapbox.pub/",
|
||||||
"vapid_key": "BLElLQVJVmY_e4F5JoYxI5jXiVOYNsJ9p-amkykc9NcI-jwa9T1Y2GIbDqbY-HqC6ayPkfW4K4o9vgBFKYmkuS4"
|
"vapid_key": "BLElLQVJVmY_e4F5JoYxI5jXiVOYNsJ9p-amkykc9NcI-jwa9T1Y2GIbDqbY-HqC6ayPkfW4K4o9vgBFKYmkuS4"
|
||||||
|
@ -98,7 +98,7 @@ It is crucial that the app has the expected scopes.
|
||||||
You can obtain one with the following curl command (replace `MY_DOMAIN`):
|
You can obtain one with the following curl command (replace `MY_DOMAIN`):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
curl -X POST -H "Content-Type: application/json" -d '{"client_name": "Soapbox FE", "redirect_uris": "urn:ietf:wg:oauth:2.0:oob", "scopes": "read write follow push admin", "website": "https://soapbox.pub/"}' "https://MY_DOMAIN.com/api/v1/apps"
|
curl -X POST -H "Content-Type: application/json" -d '{"client_name": "Soapbox", "redirect_uris": "urn:ietf:wg:oauth:2.0:oob", "scopes": "read write follow push admin", "website": "https://soapbox.pub/"}' "https://MY_DOMAIN.com/api/v1/apps"
|
||||||
```
|
```
|
||||||
|
|
||||||
### Custom files (`custom/instance/*`)
|
### Custom files (`custom/instance/*`)
|
||||||
|
@ -114,7 +114,7 @@ Some use cases:
|
||||||
|
|
||||||
## Environment variables
|
## Environment variables
|
||||||
|
|
||||||
When compiling Soapbox FE, environment variables may be passed to change the build itself.
|
When compiling Soapbox, environment variables may be passed to change the build itself.
|
||||||
For example:
|
For example:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
|
@ -123,7 +123,7 @@ NODE_ENV="production" FE_BUILD_DIR="public" FE_SUBDIRECTORY="/soapbox" yarn buil
|
||||||
|
|
||||||
### `NODE_ENV`
|
### `NODE_ENV`
|
||||||
|
|
||||||
The environment to build Soapbox FE for.
|
The environment to build Soapbox for.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
|
|
||||||
|
@ -138,7 +138,7 @@ It's recommended to always build in `"production"` mode for live sites.
|
||||||
### `BACKEND_URL`
|
### `BACKEND_URL`
|
||||||
|
|
||||||
The base URL for API calls.
|
The base URL for API calls.
|
||||||
You only need to set this if Soapbox FE is hosted in a different place than the backend.
|
You only need to set this if Soapbox is hosted in a different place than the backend.
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
|
|
||||||
|
@ -159,7 +159,7 @@ Default: `"static"`
|
||||||
|
|
||||||
### `FE_SUBDIRECTORY`
|
### `FE_SUBDIRECTORY`
|
||||||
|
|
||||||
Subdirectory to host Soapbox FE out of.
|
Subdirectory to host Soapbox out of.
|
||||||
When hosting on a subdirectory, you must create a custom build for it.
|
When hosting on a subdirectory, you must create a custom build for it.
|
||||||
This option will set the imports in `index.html`, and the basename for routes in React.
|
This option will set the imports in `index.html`, and the basename for routes in React.
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# How it works
|
# How it works
|
||||||
|
|
||||||
Soapbox FE is a [single-page application (SPA)](https://en.wikipedia.org/wiki/Single-page_application) that runs entirely in the browser with JavaScript.
|
Soapbox is a [single-page application (SPA)](https://en.wikipedia.org/wiki/Single-page_application) that runs entirely in the browser with JavaScript.
|
||||||
|
|
||||||
It has a single HTML file, `index.html`, responsible only for loading the required JavaScript and CSS.
|
It has a single HTML file, `index.html`, responsible only for loading the required JavaScript and CSS.
|
||||||
It interacts with the backend through [XMLHttpRequest (XHR)](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest).
|
It interacts with the backend through [XMLHttpRequest (XHR)](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest).
|
||||||
|
|
|
@ -8,9 +8,9 @@ All configuration is optional, except `NODE_ENV`.
|
||||||
## `NODE_ENV`
|
## `NODE_ENV`
|
||||||
|
|
||||||
The Node environment.
|
The Node environment.
|
||||||
Soapbox FE checks for the following options:
|
Soapbox checks for the following options:
|
||||||
|
|
||||||
- `development` - What you should use while developing Soapbox FE.
|
- `development` - What you should use while developing Soapbox.
|
||||||
- `production` - Use when compiling to deploy to a live server.
|
- `production` - Use when compiling to deploy to a live server.
|
||||||
- `test` - Use when running automated tests.
|
- `test` - Use when running automated tests.
|
||||||
|
|
||||||
|
|
|
@ -8,12 +8,12 @@ First, follow the instructions to [install Pleroma](https://docs-develop.pleroma
|
||||||
|
|
||||||
## Install Soapbox
|
## Install Soapbox
|
||||||
|
|
||||||
The Soapbox frontend is the main component of Soapbox. Once you've installed Pleroma, installing Soapbox FE is a breeze.
|
The Soapbox frontend is the main component of Soapbox. Once you've installed Pleroma, installing Soapbox is a breeze.
|
||||||
|
|
||||||
First, ssh into the server and download a .zip of the latest build: ``curl -L https://gitlab.com/soapbox-pub/soapbox-fe/-/jobs/artifacts/v1.3.0/download?job=build-production -o soapbox-fe.zip``
|
First, ssh into the server and download a .zip of the latest build: ``curl -L https://gitlab.com/soapbox-pub/soapbox-fe/-/jobs/artifacts/develop/download?job=build-production -o soapbox-fe.zip``
|
||||||
|
|
||||||
Then unpack it into Pleroma's ``instance`` directory: ``busybox unzip soapbox-fe.zip -o -d /opt/pleroma/instance``
|
Then unpack it into Pleroma's ``instance`` directory: ``busybox unzip soapbox-fe.zip -o -d /opt/pleroma/instance``
|
||||||
|
|
||||||
**That's it! 🎉 Soapbox FE is installed.** The change will take effect immediately, just refresh your browser tab. It's not necessary to restart the Pleroma service.
|
**That's it! 🎉 Soapbox is installed.** The change will take effect immediately, just refresh your browser tab. It's not necessary to restart the Pleroma service.
|
||||||
|
|
||||||
***For OTP releases,*** *unpack to /var/lib/pleroma instead.*
|
***For OTP releases,*** *unpack to /var/lib/pleroma instead.*
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
{
|
{
|
||||||
"name": "soapbox-fe",
|
"name": "soapbox-fe",
|
||||||
"displayName": "Soapbox FE",
|
"displayName": "Soapbox",
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"description": "Soapbox frontend for Pleroma.",
|
"description": "Soapbox frontend for the Fediverse.",
|
||||||
"homepage": "https://soapbox.pub/",
|
"homepage": "https://soapbox.pub/",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
|
|
@ -52,7 +52,7 @@ Use yarn "manage:translations -- --help" for usage information
|
||||||
|
|
||||||
const usage = `Usage: yarn manage:translations [OPTIONS] [LANGUAGES]
|
const usage = `Usage: yarn manage:translations [OPTIONS] [LANGUAGES]
|
||||||
|
|
||||||
Manage JavaScript translation files in Soapbox FE. Generates and update translations in translationsDirectory: ${translationsDirectory}
|
Manage JavaScript translation files in Soapbox. Generates and update translations in translationsDirectory: ${translationsDirectory}
|
||||||
|
|
||||||
LANGUAGES
|
LANGUAGES
|
||||||
The RFC5646 language tag for the language you want to test or fix. If you want to input multiple languages, separate them with space.
|
The RFC5646 language tag for the language you want to test or fix. If you want to input multiple languages, separate them with space.
|
||||||
|
|
Loading…
Reference in a new issue