From 72606388ff688211b7f4df066a7ad2a6a58ff1c2 Mon Sep 17 00:00:00 2001 From: Eliot Berriot <contact@eliotberriot.com> Date: Fri, 8 Mar 2019 12:37:02 +0100 Subject: [PATCH] Fixed broken extraction of contexts --- CONTRIBUTING.rst | 6 +- front/src/components/About.vue | 8 +-- front/src/components/Footer.vue | 30 ++++---- front/src/components/Home.vue | 48 ++++++------- front/src/components/PageNotFound.vue | 6 +- front/src/components/SetInstanceModal.vue | 20 +++--- front/src/components/ShortcutsModal.vue | 4 +- front/src/components/Sidebar.vue | 56 +++++++-------- front/src/components/admin/SettingsGroup.vue | 6 +- front/src/components/audio/EmbedWizard.vue | 16 ++--- front/src/components/audio/PlayButton.vue | 12 ++-- front/src/components/audio/Player.vue | 6 +- front/src/components/audio/Search.vue | 10 +-- front/src/components/audio/album/Card.vue | 10 +-- front/src/components/audio/artist/Card.vue | 8 +-- front/src/components/audio/track/Row.vue | 2 +- front/src/components/audio/track/Table.vue | 8 +-- front/src/components/auth/Login.vue | 18 ++--- front/src/components/auth/Logout.vue | 4 +- front/src/components/auth/Profile.vue | 4 +- front/src/components/auth/Settings.vue | 54 +++++++------- .../src/components/auth/SubsonicTokenForm.vue | 30 ++++---- front/src/components/common/ActionTable.vue | 26 +++---- front/src/components/common/CopyInput.vue | 4 +- .../src/components/common/DangerousButton.vue | 6 +- front/src/components/common/Duration.vue | 4 +- front/src/components/common/EmptyState.vue | 4 +- front/src/components/favorites/List.vue | 14 ++-- .../favorites/TrackFavoriteIcon.vue | 4 +- .../components/federation/LibraryWidget.vue | 2 +- front/src/components/instance/Stats.vue | 18 ++--- front/src/components/library/Album.vue | 22 +++--- front/src/components/library/Albums.vue | 14 ++-- front/src/components/library/Artist.vue | 26 +++---- front/src/components/library/Artists.vue | 14 ++-- front/src/components/library/EditCard.vue | 32 ++++----- front/src/components/library/EditForm.vue | 28 ++++---- front/src/components/library/FileUpload.vue | 40 +++++------ front/src/components/library/Home.vue | 8 +-- front/src/components/library/Library.vue | 10 +-- front/src/components/library/Radios.vue | 20 +++--- front/src/components/library/TrackBase.vue | 18 ++--- front/src/components/library/TrackDetail.vue | 36 +++++----- front/src/components/library/TrackEdit.vue | 4 +- .../src/components/library/radios/Builder.vue | 32 ++++----- .../src/components/library/radios/Filter.vue | 6 +- .../manage/library/EditsCardList.vue | 22 +++--- .../manage/moderation/AccountsTable.vue | 28 ++++---- .../manage/moderation/DomainsTable.vue | 24 +++---- .../manage/moderation/InstancePolicyCard.vue | 18 ++--- .../manage/moderation/InstancePolicyForm.vue | 30 ++++---- .../manage/users/InvitationForm.vue | 12 ++-- .../manage/users/InvitationsTable.vue | 30 ++++---- .../components/manage/users/UsersTable.vue | 38 +++++----- .../src/components/moderation/FilterModal.vue | 20 +++--- front/src/components/playlists/Card.vue | 2 +- front/src/components/playlists/Editor.vue | 20 +++--- front/src/components/playlists/Form.vue | 16 ++--- .../components/playlists/PlaylistModal.vue | 20 +++--- .../playlists/TrackPlaylistIcon.vue | 2 +- front/src/components/radios/Button.vue | 4 +- front/src/components/radios/Card.vue | 2 +- front/src/views/Notifications.vue | 10 +-- front/src/views/admin/Settings.vue | 2 +- front/src/views/admin/library/Base.vue | 2 +- front/src/views/admin/library/EditsList.vue | 2 +- .../views/admin/moderation/AccountsDetail.vue | 72 +++++++++---------- .../views/admin/moderation/AccountsList.vue | 2 +- front/src/views/admin/moderation/Base.vue | 4 +- .../views/admin/moderation/DomainsDetail.vue | 54 +++++++------- .../views/admin/moderation/DomainsList.vue | 8 +-- front/src/views/admin/users/Base.vue | 4 +- .../src/views/admin/users/InvitationsList.vue | 2 +- front/src/views/admin/users/UsersList.vue | 2 +- front/src/views/auth/EmailConfirm.vue | 16 ++--- front/src/views/auth/PasswordReset.vue | 12 ++-- front/src/views/auth/PasswordResetConfirm.vue | 18 ++--- front/src/views/content/Base.vue | 4 +- front/src/views/content/Home.vue | 16 ++--- front/src/views/content/libraries/Card.vue | 6 +- front/src/views/content/libraries/Detail.vue | 34 ++++----- .../views/content/libraries/DetailArea.vue | 2 +- .../views/content/libraries/FilesTable.vue | 42 +++++------ front/src/views/content/libraries/Form.vue | 24 +++---- front/src/views/content/libraries/Home.vue | 8 +-- front/src/views/content/libraries/Quota.vue | 42 +++++------ front/src/views/content/libraries/Upload.vue | 2 +- front/src/views/content/remote/Card.vue | 36 +++++----- front/src/views/content/remote/Home.vue | 10 +-- front/src/views/content/remote/ScanForm.vue | 4 +- front/src/views/playlists/Detail.vue | 18 ++--- front/src/views/playlists/List.vue | 16 ++--- front/src/views/radios/Detail.vue | 8 +-- 93 files changed, 764 insertions(+), 764 deletions(-) diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 1d0fbf940..c2614425a 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -363,17 +363,17 @@ Translations in HTML use the ``<translate>`` tag:: <template> <div> - <h1><translate :translate-context="'Content/Profile/Header'">User profile</translate></h1> + <h1><translate translate-context="Content/Profile/Header">User profile</translate></h1> <p> <translate - :translate-context="'Content/Profile/Paragraph'" + translate-context="Content/Profile/Paragraph" :translate-params="{username: 'alice'}"> You are logged in as %{ username } </translate> </p> <p> <translate - :translate-context="'Content/Profile/Paragraph'" + translate-context="Content/Profile/Paragraph" translate-plural="You have %{ count } new messages, that's a lot!" :translate-n="unreadMessagesCount" :translate-params="{count: unreadMessagesCount}"> diff --git a/front/src/components/About.vue b/front/src/components/About.vue index f29f960f8..90c19d75f 100644 --- a/front/src/components/About.vue +++ b/front/src/components/About.vue @@ -3,10 +3,10 @@ <section class="ui vertical center aligned stripe segment"> <div class="ui text container"> <h1 class="ui huge header"> - <translate :translate-context="'Content/About/Title/Short, Noun'" v-if="instance.name.value" :translate-params="{instance: instance.name.value}"> + <translate translate-context="Content/About/Title/Short, Noun" v-if="instance.name.value" :translate-params="{instance: instance.name.value}"> About %{ instance } </translate> - <translate :translate-context="'Content/About/Title/Short, Noun'" v-else>About this instance</translate> + <translate translate-context="Content/About/Title/Short, Noun" v-else>About this instance</translate> </h1> <stats></stats> </div> @@ -15,12 +15,12 @@ <div class="ui middle aligned stackable text container"> <p - v-if="!instance.short_description.value && !instance.long_description.value"><translate :translate-context="'Content/About/Paragraph'">Unfortunately, the owners of this instance did not yet take the time to complete this page.</translate></p> + v-if="!instance.short_description.value && !instance.long_description.value"><translate translate-context="Content/About/Paragraph">Unfortunately, the owners of this instance did not yet take the time to complete this page.</translate></p> <router-link class="ui button" v-if="$store.state.auth.availablePermissions['settings']" :to="{path: '/manage/settings', hash: 'instance'}"> - <i class="pencil icon"></i><translate :translate-context="'Content/Settings/Button.Label/Verb'">Edit instance info</translate> + <i class="pencil icon"></i><translate translate-context="Content/Settings/Button.Label/Verb">Edit instance info</translate> </router-link> <div class="ui hidden divider"></div> </div> diff --git a/front/src/components/Footer.vue b/front/src/components/Footer.vue index 00ec4f79c..c776a9b85 100644 --- a/front/src/components/Footer.vue +++ b/front/src/components/Footer.vue @@ -4,22 +4,22 @@ <div class="ui stackable equal height stackable grid"> <section class="four wide column"> <h4 class="ui header"> - <translate :translate-context="'Footer/About/Title'" :translate-params="{instanceName: instanceHostname}" >About %{instanceName}</translate> + <translate translate-context="Footer/About/Title" :translate-params="{instanceName: instanceHostname}" >About %{instanceName}</translate> </h4> <div class="ui link list"> <router-link class="item" to="/about"> - <translate :translate-context="'Footer/About/List item.Link'">About page</translate> + <translate translate-context="Footer/About/List item.Link">About page</translate> </router-link> <div class="item" v-if="version"> - <translate :translate-context="'Footer/*/List item'" :translate-params="{version: version}" >Version %{version}</translate> + <translate translate-context="Footer/*/List item" :translate-params="{version: version}" >Version %{version}</translate> </div> <div role="button" class="item" @click="$emit('show:set-instance-modal')" > - <translate :translate-context="'Footer/*/List item.Link'">Use another instance</translate> + <translate translate-context="Footer/*/List item.Link">Use another instance</translate> </div> </div> <div class="ui form"> <div class="ui field"> - <label><translate :translate-context="'Footer/Settings/Dropdown.Label/Short, Verb'">Change language</translate></label> + <label><translate translate-context="Footer/Settings/Dropdown.Label/Short, Verb">Change language</translate></label> <select class="ui dropdown" :value="$language.current" @change="$store.commit('ui/currentLanguage', $event.target.value)"> <option v-for="(language, key) in $language.available" :key="key" :value="key">{{ language }}</option> </select> @@ -29,29 +29,29 @@ <section class="four wide column"> <h4 v-translate class="ui header">Using Funkwhale</h4> <div class="ui link list"> - <a href="https://docs.funkwhale.audio" class="item" target="_blank"><translate :translate-context="'Footer/*/List item.Link/Short, Noun'">Documentation</translate></a> - <a href="https://docs.funkwhale.audio/users/apps.html" class="item" target="_blank"><translate :translate-context="'Footer/*/List item.Link'">Mobile and desktop apps</translate></a> - <div role="button" class="item" @click="$emit('show:shortcuts-modal')"><translate :translate-context="'Footer/*/List item.Link/Short, Noun'">Keyboard shortcuts</translate></div> + <a href="https://docs.funkwhale.audio" class="item" target="_blank"><translate translate-context="Footer/*/List item.Link/Short, Noun">Documentation</translate></a> + <a href="https://docs.funkwhale.audio/users/apps.html" class="item" target="_blank"><translate translate-context="Footer/*/List item.Link">Mobile and desktop apps</translate></a> + <div role="button" class="item" @click="$emit('show:shortcuts-modal')"><translate translate-context="Footer/*/List item.Link/Short, Noun">Keyboard shortcuts</translate></div> </div> </section> <section class="four wide column"> <h4 v-translate class="ui header">Getting help</h4> <div class="ui link list"> - <a href="https://socialhub.network/c/funkwhale" class="item" target="_blank"><translate :translate-context="'Footer/*/Listitem.Link'">Support forum</translate></a> - <a href="https://riot.im/app/#/room/#funkwhale-troubleshooting:matrix.org" class="item" target="_blank"><translate :translate-context="'Footer/*/List item.Link'">Chat room</translate></a> - <a href="https://dev.funkwhale.audio/funkwhale/funkwhale/issues" class="item" target="_blank"><translate :translate-context="'Footer/*/List item.Link'">Issue tracker</translate></a> + <a href="https://socialhub.network/c/funkwhale" class="item" target="_blank"><translate translate-context="Footer/*/Listitem.Link">Support forum</translate></a> + <a href="https://riot.im/app/#/room/#funkwhale-troubleshooting:matrix.org" class="item" target="_blank"><translate translate-context="Footer/*/List item.Link">Chat room</translate></a> + <a href="https://dev.funkwhale.audio/funkwhale/funkwhale/issues" class="item" target="_blank"><translate translate-context="Footer/*/List item.Link">Issue tracker</translate></a> </div> </section> <section class="four wide column"> <h4 v-translate class="ui header">About Funkwhale</h4> <div class="ui link list"> - <a href="https://funkwhale.audio" class="item" target="_blank"><translate :translate-context="'Footer/*/List item.Link'">Official website</translate></a> - <a href="https://contribute.funkwhale.audio" class="item" target="_blank"><translate :translate-context="'Footer/*/List item.Link'">Contribute</translate></a> - <a href="https://dev.funkwhale.audio/funkwhale/funkwhale" class="item" target="_blank"><translate :translate-context="'Footer/*/List item.Link'">Source code</translate></a> + <a href="https://funkwhale.audio" class="item" target="_blank"><translate translate-context="Footer/*/List item.Link">Official website</translate></a> + <a href="https://contribute.funkwhale.audio" class="item" target="_blank"><translate translate-context="Footer/*/List item.Link">Contribute</translate></a> + <a href="https://dev.funkwhale.audio/funkwhale/funkwhale" class="item" target="_blank"><translate translate-context="Footer/*/List item.Link">Source code</translate></a> </div> <div class="ui hidden divider"></div> <p> - <translate :translate-context="'Footer/*/List item.Link'">The funkwhale logo was kindly designed and provided by Francis Gading.</translate> + <translate translate-context="Footer/*/List item.Link">The funkwhale logo was kindly designed and provided by Francis Gading.</translate> </p> </section> </div> diff --git a/front/src/components/Home.vue b/front/src/components/Home.vue index 747121fd3..69ea0b9d9 100644 --- a/front/src/components/Home.vue +++ b/front/src/components/Home.vue @@ -3,15 +3,15 @@ <section class="ui vertical center aligned stripe segment"> <div class="ui text container"> <h1 class="ui huge header"> - <translate :translate-context="'Content/Home/Title/Verb'">Welcome on Funkwhale</translate> + <translate translate-context="Content/Home/Title/Verb">Welcome on Funkwhale</translate> </h1> - <p><translate :translate-context="'Content/Home/Title'">We think listening to music should be simple.</translate></p> + <p><translate translate-context="Content/Home/Title">We think listening to music should be simple.</translate></p> <router-link class="ui icon button" to="/about"> <i class="info icon"></i> - <translate :translate-context="'Content/Home/Button.Label/Verb'">Learn more about this instance</translate> + <translate translate-context="Content/Home/Button.Label/Verb">Learn more about this instance</translate> </router-link> <router-link class="ui icon teal button" to="/library"> - <translate :translate-context="'Content/Home/Button.Label/Verb'">Get me to the library</translate> + <translate translate-context="Content/Home/Button.Label/Verb">Get me to the library</translate> <i class="right arrow icon"></i> </router-link> </div> @@ -22,9 +22,9 @@ <div class="row"> <div class="eight wide left floated column"> <h2 class="ui header"> - <translate :translate-context="'Content/Home/Title'">Why funkwhale?</translate> + <translate translate-context="Content/Home/Title">Why funkwhale?</translate> </h2> - <p><translate :translate-context="'Content/Home/Paragraph'">That's simple: we loved Grooveshark and we want to build something even better.</translate></p> + <p><translate translate-context="Content/Home/Paragraph">That's simple: we loved Grooveshark and we want to build something even better.</translate></p> </div> <div class="four wide left floated column"> <img class="ui medium image" src="../assets/logo/logo.png" /> @@ -35,26 +35,26 @@ <div class="ui middle aligned stackable text container"> <div class="ui hidden divider"></div> <h2 class="ui header"> - <translate :translate-context="'Content/Home/Title'">Unlimited music</translate> + <translate translate-context="Content/Home/Title">Unlimited music</translate> </h2> - <p><translate :translate-context="'Content/Home/Paragraph'">Funkwhale is designed to make it easy to listen to music you like, or to discover new artists.</translate></p> + <p><translate translate-context="Content/Home/Paragraph">Funkwhale is designed to make it easy to listen to music you like, or to discover new artists.</translate></p> <div class="ui list"> <div class="item"> <i class="sound icon"></i> <div class="content"> - <translate :translate-context="'Content/Home/List item/Verb'">Click once, listen for hours using built-in radios</translate> + <translate translate-context="Content/Home/List item/Verb">Click once, listen for hours using built-in radios</translate> </div> </div> <div class="item"> <i class="heart icon"></i> <div class="content"> - <translate :translate-context="'Content/Home/List item/Verb'">Keep a track of your favorite songs</translate> + <translate translate-context="Content/Home/List item/Verb">Keep a track of your favorite songs</translate> </div> </div> <div class="item"> <i class="list icon"></i> <div class="content"> - <translate :translate-context="'Content/Home/List item'">Playlists? We got them</translate> + <translate translate-context="Content/Home/List item">Playlists? We got them</translate> </div> </div> </div> @@ -62,14 +62,14 @@ <div class="ui middle aligned stackable text container"> <div class="ui hidden divider"></div> <h2 class="ui header"> - <translate :translate-context="'Content/Home/Title'">A clean library</translate> + <translate translate-context="Content/Home/Title">A clean library</translate> </h2> - <p><translate :translate-context="'Content/Home/Paragraph'">Funkwhale takes care of handling your music</translate>.</p> + <p><translate translate-context="Content/Home/Paragraph">Funkwhale takes care of handling your music</translate>.</p> <div class="ui list"> <div class="item"> <i class="download icon"></i> <div class="content"> - <translate :translate-context="'Content/Home/List item/Verb'">Import music from various platforms, such as YouTube or SoundCloud</translate> + <translate translate-context="Content/Home/List item/Verb">Import music from various platforms, such as YouTube or SoundCloud</translate> </div> </div> <div class="item"> @@ -83,7 +83,7 @@ <div class="item"> <i class="plus icon"></i> <div class="content"> - <translate :translate-context="'Content/Home/List item'">Covers, lyrics, our goal is to have them all ;)</translate> + <translate translate-context="Content/Home/List item">Covers, lyrics, our goal is to have them all ;)</translate> </div> </div> </div> @@ -91,20 +91,20 @@ <div class="ui middle aligned stackable text container"> <div class="ui hidden divider"></div> <h2 class="ui header"> - <translate :translate-context="'Content/Home/Title'">Easy to use</translate> + <translate translate-context="Content/Home/Title">Easy to use</translate> </h2> - <p><translate :translate-context="'Content/Home/Paragraph'">Funkwhale is dead simple to use.</translate></p> + <p><translate translate-context="Content/Home/Paragraph">Funkwhale is dead simple to use.</translate></p> <div class="ui list"> <div class="item"> <i class="book icon"></i> <div class="content"> - <translate :translate-context="'Content/Home/List item'">No add-ons, no plugins : you only need a web library</translate> + <translate translate-context="Content/Home/List item">No add-ons, no plugins : you only need a web library</translate> </div> </div> <div class="item"> <i class="wizard icon"></i> <div class="content"> - <translate :translate-context="'Content/Home/List item'">Access your music from a clean interface that focus on what really matters</translate> + <translate translate-context="Content/Home/List item">Access your music from a clean interface that focus on what really matters</translate> </div> </div> </div> @@ -112,26 +112,26 @@ <div class="ui middle aligned stackable text container"> <div class="ui hidden divider"></div> <h2 class="ui header"> - <translate :translate-context="'Content/Home/Title'">Your music, your way</translate> + <translate translate-context="Content/Home/Title">Your music, your way</translate> </h2> - <p><translate :translate-context="'Content/Home/Paragraph'">Funkwhale is free and gives you control on your music.</translate></p> + <p><translate translate-context="Content/Home/Paragraph">Funkwhale is free and gives you control on your music.</translate></p> <div class="ui list"> <div class="item"> <i class="smile icon"></i> <div class="content"> - <translate :translate-context="'Content/Home/List item'">The plaform is free and open-source, you can install it and modify it without worries</translate> + <translate translate-context="Content/Home/List item">The plaform is free and open-source, you can install it and modify it without worries</translate> </div> </div> <div class="item"> <i class="protect icon"></i> <div class="content"> - <translate :translate-context="'Content/Home/List item'">We do not track you or bother you with ads</translate> + <translate translate-context="Content/Home/List item">We do not track you or bother you with ads</translate> </div> </div> <div class="item"> <i class="users icon"></i> <div class="content"> - <translate :translate-context="'Content/Home/List item'">You can invite friends and family to your instance so they can enjoy your music</translate> + <translate translate-context="Content/Home/List item">You can invite friends and family to your instance so they can enjoy your music</translate> </div> </div> </div> diff --git a/front/src/components/PageNotFound.vue b/front/src/components/PageNotFound.vue index bdee7db9f..4dce665bb 100644 --- a/front/src/components/PageNotFound.vue +++ b/front/src/components/PageNotFound.vue @@ -5,14 +5,14 @@ <h1 class="ui huge header"> <i class="warning icon"></i> <div class="content"> - <translate :translate-context="'Content/*/Title'">Page not found!</translate> + <translate translate-context="Content/*/Title">Page not found!</translate> </div> </h1> - <p><translate :translate-context="'Content/*/Paragraph'">Sorry, the page you asked for does not exist:</translate></p> + <p><translate translate-context="Content/*/Paragraph">Sorry, the page you asked for does not exist:</translate></p> <a :href="path">{{ path }}</a> <div class="ui hidden divider"></div> <router-link class="ui icon labeled right button" to="/"> - <translate :translate-context="'Content/*/Button.Label/Verb'">Go to home page</translate> + <translate translate-context="Content/*/Button.Label/Verb">Go to home page</translate> <i class="right arrow icon"></i> </router-link> </div> diff --git a/front/src/components/SetInstanceModal.vue b/front/src/components/SetInstanceModal.vue index 220043d9a..1ba5270b3 100644 --- a/front/src/components/SetInstanceModal.vue +++ b/front/src/components/SetInstanceModal.vue @@ -1,27 +1,27 @@ <template> <modal @update:show="$emit('update:show', $event); isError = false" :show="show"> - <div class="header"><translate :translate-context="'Popup/Instance/Title'">Choose your instance</translate></div> + <div class="header"><translate translate-context="Popup/Instance/Title">Choose your instance</translate></div> <div class="scrolling content"> <div v-if="isError" class="ui negative message"> - <div class="header"><translate :translate-context="'Popup/Instance/Error message.Title'">It is not possible to connect to the given URL</translate></div> + <div class="header"><translate translate-context="Popup/Instance/Error message.Title">It is not possible to connect to the given URL</translate></div> <ul class="list"> - <li><translate :translate-context="'Popup/Instance/Error message.List item'">The server might be down</translate></li> - <li><translate :translate-context="'Popup/Instance/Error message.List item'">The given address is not a Funkwhale server</translate></li> + <li><translate translate-context="Popup/Instance/Error message.List item">The server might be down</translate></li> + <li><translate translate-context="Popup/Instance/Error message.List item">The given address is not a Funkwhale server</translate></li> </ul> </div> <form class="ui form" @submit.prevent="checkAndSwitch(instanceUrl)"> - <p v-if="$store.state.instance.instanceUrl" class="description" :translate-context="'Popup/Login/Paragraph'" v-translate="{url: $store.state.instance.instanceUrl, hostname: instanceHostname }"> + <p v-if="$store.state.instance.instanceUrl" class="description" translate-context="Popup/Login/Paragraph" v-translate="{url: $store.state.instance.instanceUrl, hostname: instanceHostname }"> You are currently connected to <a href="%{ url }" target="_blank">%{ hostname } <i class="external icon"></i></a>. If you continue, you will be disconnected from your current instance and all your local data will be deleted. </p> <p v-else> - <translate :translate-context="'Popup/Instance/Paragraph'">To continue, please select the Funkwhale instance you want to connect to. Enter the address directly, or select one of the suggested choices.</translate> + <translate translate-context="Popup/Instance/Paragraph">To continue, please select the Funkwhale instance you want to connect to. Enter the address directly, or select one of the suggested choices.</translate> </p> <div class="field"> - <label><translate :translate-context="'Popup/Instance/Input.Label/Noun'">Instance URL</translate></label> + <label><translate translate-context="Popup/Instance/Input.Label/Noun">Instance URL</translate></label> <div class="ui action input"> <input type="text" v-model="instanceUrl" placeholder="https://funkwhale.server"> <button type="submit" :class="['ui', 'icon', {loading: isLoading}, 'button']"> - <translate :translate-context="'*/*/Button.Label/Verb'">Submit</translate> + <translate translate-context="*/*/Button.Label/Verb">Submit</translate> </button> </div> </div> @@ -29,13 +29,13 @@ <div class="ui hidden divider"></div> <form class="ui form" @submit.prevent=""> <div class="field"> - <label><translate :translate-context="'Popup/Instance/List.Label'">Suggested choices</translate></label> + <label><translate translate-context="Popup/Instance/List.Label">Suggested choices</translate></label> <button v-for="url in suggestedInstances" @click="checkAndSwitch(url)" class="ui basic button">{{ url }}</button> </div> </form> </div> <div class="actions"> - <div class="ui cancel button"><translate :translate-context="'*/*/Button.Label/Verb'">Cancel</translate></div> + <div class="ui cancel button"><translate translate-context="*/*/Button.Label/Verb">Cancel</translate></div> </div> </modal> </template> diff --git a/front/src/components/ShortcutsModal.vue b/front/src/components/ShortcutsModal.vue index e1c2a422c..362c5208a 100644 --- a/front/src/components/ShortcutsModal.vue +++ b/front/src/components/ShortcutsModal.vue @@ -1,7 +1,7 @@ <template> <modal @update:show="$emit('update:show', $event)" :show="show"> <header class="header"> - <translate :translate-context="'Popup/Keyboard shortcuts/Title'">Keyboard shortcuts</translate> + <translate translate-context="Popup/Keyboard shortcuts/Title">Keyboard shortcuts</translate> </header> <section class="scrolling content"> <table @@ -18,7 +18,7 @@ </table> </section> <footer class="actions"> - <div class="ui cancel button"><translate :translate-context="'Popup/Keyboard shortcuts/Button.Label/Verb'">Close</translate></div> + <div class="ui cancel button"><translate translate-context="Popup/Keyboard shortcuts/Button.Label/Verb">Close</translate></div> </footer> </modal> </template> diff --git a/front/src/components/Sidebar.vue b/front/src/components/Sidebar.vue index 31b35ebdc..0bbc271a4 100644 --- a/front/src/components/Sidebar.vue +++ b/front/src/components/Sidebar.vue @@ -16,13 +16,13 @@ <div class="menu-area"> <div class="ui compact fluid two item inverted menu"> - <a :class="[{active: selectedTab === 'library'}, 'item']" role="button" @click.prevent.stop="selectedTab = 'library'" data-tab="library"><translate :translate-context="'Sidebar/Library/Tab.Title/Verb'">Browse</translate></a> + <a :class="[{active: selectedTab === 'library'}, 'item']" role="button" @click.prevent.stop="selectedTab = 'library'" data-tab="library"><translate translate-context="Sidebar/Library/Tab.Title/Verb">Browse</translate></a> <a :class="[{active: selectedTab === 'queue'}, 'item']" role="button" @click.prevent.stop="selectedTab = 'queue'" data-tab="queue"> - <translate :translate-context="'Sidebar/Queue/Tab.Title/Noun'">Queue</translate> + <translate translate-context="Sidebar/Queue/Tab.Title/Noun">Queue</translate> <template v-if="queue.tracks.length === 0"> - <translate :translate-context="'Sidebar/Queue/Tab.Title'">(empty)</translate> + <translate translate-context="Sidebar/Queue/Tab.Title">(empty)</translate> </template> - <translate :translate-context="'Sidebar/Queue/Tab.Title'" v-else :translate-params="{index: queue.currentIndex + 1, length: queue.tracks.length}"> + <translate translate-context="Sidebar/Queue/Tab.Title" v-else :translate-params="{index: queue.currentIndex + 1, length: queue.tracks.length}"> (%{ index } of %{ length }) </translate> </a> @@ -32,76 +32,76 @@ <section :class="['ui', 'bottom', 'attached', {active: selectedTab === 'library'}, 'tab']" :aria-label="labels.mainMenu"> <nav class="ui inverted vertical large fluid menu" role="navigation" :aria-label="labels.mainMenu"> <div class="item"> - <header class="header"><translate :translate-context="'Sidebar/Profile/Title'">My account</translate></header> + <header class="header"><translate translate-context="Sidebar/Profile/Title">My account</translate></header> <div class="menu"> <router-link class="item" v-if="$store.state.auth.authenticated" :to="{name: 'profile', params: {username: $store.state.auth.username}}"> <i class="user icon"></i> - <translate :translate-context="'Sidebar/Profile/List item.Link'" :translate-params="{username: $store.state.auth.username}"> + <translate translate-context="Sidebar/Profile/List item.Link" :translate-params="{username: $store.state.auth.username}"> Logged in as %{ username } </translate> <img class="ui right floated circular tiny avatar image" v-if="$store.state.auth.profile.avatar.square_crop" v-lazy="$store.getters['instance/absoluteUrl']($store.state.auth.profile.avatar.square_crop)" /> </router-link> - <router-link class="item" v-if="$store.state.auth.authenticated" :to="{path: '/settings'}"><i class="setting icon"></i><translate :translate-context="'Sidebar/Settings/List item.Link/Noun'">Settings</translate></router-link> + <router-link class="item" v-if="$store.state.auth.authenticated" :to="{path: '/settings'}"><i class="setting icon"></i><translate translate-context="Sidebar/Settings/List item.Link/Noun">Settings</translate></router-link> <router-link class="item" v-if="$store.state.auth.authenticated" :to="{name: 'notifications'}"> <i class="feed icon"></i> - <translate :translate-context="'Sidebar/Notifications/List item.Link/Noun'">Notifications</translate> + <translate translate-context="Sidebar/Notifications/List item.Link/Noun">Notifications</translate> <div v-if="$store.state.ui.notifications.inbox > 0" :class="['ui', 'teal', 'label']"> {{ $store.state.ui.notifications.inbox }}</div> </router-link> - <router-link class="item" v-if="$store.state.auth.authenticated" :to="{name: 'logout'}"><i class="sign out icon"></i><translate :translate-context="'Sidebar/Login/List item.Link/Verb'">Logout</translate></router-link> + <router-link class="item" v-if="$store.state.auth.authenticated" :to="{name: 'logout'}"><i class="sign out icon"></i><translate translate-context="Sidebar/Login/List item.Link/Verb">Logout</translate></router-link> <template v-else> - <router-link class="item" :to="{name: 'login'}"><i class="sign in icon"></i><translate :translate-context="'Sidebar/Login/List item.Link/Verb'">Login</translate></router-link> + <router-link class="item" :to="{name: 'login'}"><i class="sign in icon"></i><translate translate-context="Sidebar/Login/List item.Link/Verb">Login</translate></router-link> <router-link class="item" :to="{path: '/signup'}"> <i class="corner add icon"></i> - <translate :translate-context="'Sidebar/Login/List item.Link/Verb'">Create an account</translate> + <translate translate-context="Sidebar/Login/List item.Link/Verb">Create an account</translate> </router-link> </template> </div> </div> <div class="item"> - <header class="header"><translate :translate-context="'Sidebar/Library/Title'">Music</translate></header> + <header class="header"><translate translate-context="Sidebar/Library/Title">Music</translate></header> <div class="menu"> - <router-link class="item" :to="{path: '/library'}"><i class="sound icon"></i><translate :translate-context="'Sidebar/Library/List item.Link/Verb'">Browse library</translate></router-link> - <router-link class="item" v-if="$store.state.auth.authenticated" :to="{path: '/favorites'}"><i class="heart icon"></i><translate :translate-context="'Sidebar/Favorites/List item.Link/Noun'">Favorites</translate></router-link> + <router-link class="item" :to="{path: '/library'}"><i class="sound icon"></i><translate translate-context="Sidebar/Library/List item.Link/Verb">Browse library</translate></router-link> + <router-link class="item" v-if="$store.state.auth.authenticated" :to="{path: '/favorites'}"><i class="heart icon"></i><translate translate-context="Sidebar/Favorites/List item.Link/Noun">Favorites</translate></router-link> <a @click="$store.commit('playlists/chooseTrack', null)" v-if="$store.state.auth.authenticated" class="item"> - <i class="list icon"></i><translate :translate-context="'Sidebar/Playlist/List item.Link/Noun'">Playlists</translate> + <i class="list icon"></i><translate translate-context="Sidebar/Playlist/List item.Link/Noun">Playlists</translate> </a> <router-link v-if="$store.state.auth.authenticated" - class="item" :to="{name: 'content.index'}"><i class="upload icon"></i><translate :translate-context="'Sidebar/Library/List item.Link/Verb'">Add content</translate></router-link> + class="item" :to="{name: 'content.index'}"><i class="upload icon"></i><translate translate-context="Sidebar/Library/List item.Link/Verb">Add content</translate></router-link> </div> </div> <div class="item" v-if="$store.state.auth.availablePermissions['settings'] || $store.state.auth.availablePermissions['moderation']"> - <header class="header"><translate :translate-context="'Sidebar/Admin/Title/Noun'">Administration</translate></header> + <header class="header"><translate translate-context="Sidebar/Admin/Title/Noun">Administration</translate></header> <div class="menu"> <router-link v-if="$store.state.auth.availablePermissions['settings']" class="item" :to="{path: '/manage/settings'}"> - <i class="settings icon"></i><translate :translate-context="'Sidebar/Admin/List item.Link/Noun'">Settings</translate> + <i class="settings icon"></i><translate translate-context="Sidebar/Admin/List item.Link/Noun">Settings</translate> </router-link> <router-link v-if="$store.state.auth.availablePermissions['settings']" class="item" :to="{name: 'manage.users.users.list'}"> - <i class="users icon"></i><translate :translate-context="'Sidebar/Admin/List item.Link/Noun'">Users</translate> + <i class="users icon"></i><translate translate-context="Sidebar/Admin/List item.Link/Noun">Users</translate> </router-link> <router-link v-if="$store.state.auth.availablePermissions['moderation']" class="item" :to="{name: 'manage.moderation.domains.list'}"> - <i class="shield icon"></i><translate :translate-context="'Sidebar/Moderation/List item.Link/Noun'">Moderation</translate> + <i class="shield icon"></i><translate translate-context="Sidebar/Moderation/List item.Link/Noun">Moderation</translate> </router-link> <router-link v-if="$store.state.auth.availablePermissions['library']" class="item" :to="{name: 'manage.library.edits', query: {q: 'is_approved:null'}}"> - <i class="book icon"></i><translate :translate-context="'Sidebar/Moderation/List item.Link/Noun'">Library</translate> + <i class="book icon"></i><translate translate-context="Sidebar/Moderation/List item.Link/Noun">Library</translate> <div v-if="$store.state.ui.notifications.pendingReviewEdits > 0" :title="labels.pendingReviewEdits" @@ -116,10 +116,10 @@ <i class="history icon"></i> <div class="content"> <div class="header"> - <translate :translate-context="'Sidebar/Queue/Message'">Do you want to restore your previous queue?</translate> + <translate translate-context="Sidebar/Queue/Message">Do you want to restore your previous queue?</translate> </div> <p> - <translate :translate-context="'Sidebar/Queue/Message'" + <translate translate-context="Sidebar/Queue/Message" translate-plural="%{ count } tracks" :translate-n="queue.previousQueue.tracks.length" :translate-params="{count: queue.previousQueue.tracks.length}"> @@ -127,8 +127,8 @@ </translate> </p> <div class="ui two buttons"> - <div @click="queue.restore()" class="ui basic inverted green button"><translate :translate-context="'*/*/*'">Yes</translate></div> - <div @click="queue.removePrevious()" class="ui basic inverted red button"><translate :translate-context="'*/*/*'">No</translate></div> + <div @click="queue.restore()" class="ui basic inverted green button"><translate translate-context="*/*/*">Yes</translate></div> + <div @click="queue.removePrevious()" class="ui basic inverted red button"><translate translate-context="*/*/*">No</translate></div> </div> </div> </div> @@ -167,10 +167,10 @@ <div v-if="$store.state.radios.running" class="ui black message"> <div class="content"> <div class="header"> - <i class="feed icon"></i> <translate :translate-context="'Sidebar/Player/Title'">You have a radio playing</translate> + <i class="feed icon"></i> <translate translate-context="Sidebar/Player/Title">You have a radio playing</translate> </div> - <p><translate :translate-context="'Sidebar/Player/Paragraph'">New tracks will be appended here automatically.</translate></p> - <div @click="$store.dispatch('radios/stop')" class="ui basic inverted red button"><translate :translate-context="'Sidebar/Player/Button.Label/Verb'">Stop radio</translate></div> + <p><translate translate-context="Sidebar/Player/Paragraph">New tracks will be appended here automatically.</translate></p> + <div @click="$store.dispatch('radios/stop')" class="ui basic inverted red button"><translate translate-context="Sidebar/Player/Button.Label/Verb">Stop radio</translate></div> </div> </div> </section> diff --git a/front/src/components/admin/SettingsGroup.vue b/front/src/components/admin/SettingsGroup.vue index cb1ddad27..dacae8f99 100644 --- a/front/src/components/admin/SettingsGroup.vue +++ b/front/src/components/admin/SettingsGroup.vue @@ -3,13 +3,13 @@ <div class="ui divider" /> <h3 class="ui header">{{ group.label }}</h3> <div v-if="errors.length > 0" class="ui negative message"> - <div class="header"><translate :translate-context="'Content/Settings/Error message.Title'">Error while saving settings</translate></div> + <div class="header"><translate translate-context="Content/Settings/Error message.Title">Error while saving settings</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> </ul> </div> <div v-if="result" class="ui positive message"> - <translate :translate-context="'Content/Settings/Paragraph'">Settings updated successfully.</translate> + <translate translate-context="Content/Settings/Paragraph">Settings updated successfully.</translate> </div> <p v-if="group.help">{{ group.help }}</p> <div v-for="setting in settings" class="ui field"> @@ -65,7 +65,7 @@ <button type="submit" :class="['ui', {'loading': isLoading}, 'right', 'floated', 'green', 'button']"> - <translate :translate-context="'Content/Settings/Button.Label/Short, Verb'">Save</translate> + <translate translate-context="Content/Settings/Button.Label/Short, Verb">Save</translate> </button> </form> </template> diff --git a/front/src/components/audio/EmbedWizard.vue b/front/src/components/audio/EmbedWizard.vue index ebb65b369..9c11fe7e5 100644 --- a/front/src/components/audio/EmbedWizard.vue +++ b/front/src/components/audio/EmbedWizard.vue @@ -4,26 +4,26 @@ <div class="two fields"> <div class="field"> <div class="field"> - <label for="embed-width"><translate :translate-context="'Popup/Embed/Input.Label'">Widget width</translate></label> - <p><translate :translate-context="'Popup/Embed/Paragraph'">Leave empty for a responsive widget</translate></p> + <label for="embed-width"><translate translate-context="Popup/Embed/Input.Label">Widget width</translate></label> + <p><translate translate-context="Popup/Embed/Paragraph">Leave empty for a responsive widget</translate></p> <input id="embed-width" type="number" v-model.number="width" min="0" step="10" /> </div> <template v-if="type != 'track'"> <br> <div class="field"> - <label for="embed-height"><translate :translate-context="'Popup/Embed/Input.Label'">Widget height</translate></label> + <label for="embed-height"><translate translate-context="Popup/Embed/Input.Label">Widget height</translate></label> <input id="embed-height" type="number" v-model="height" :min="minHeight" max="1000" step="10" /> </div> </template> </div> <div class="field"> - <button @click="copy" class="ui right teal labeled icon floated button"><i class="copy icon"></i><translate :translate-context="'Popup/*/Button.Label/Verb'">Copy</translate></button> - <label for="embed-width"><translate :translate-context="'Popup/Embed/Input.Label/Noun'">Embed code</translate></label> - <p><translate :translate-context="'Popup/Embed/Paragraph'">Copy/paste this code in your website HTML</translate></p> + <button @click="copy" class="ui right teal labeled icon floated button"><i class="copy icon"></i><translate translate-context="Popup/*/Button.Label/Verb">Copy</translate></button> + <label for="embed-width"><translate translate-context="Popup/Embed/Input.Label/Noun">Embed code</translate></label> + <p><translate translate-context="Popup/Embed/Paragraph">Copy/paste this code in your website HTML</translate></p> <textarea ref="textarea":value="embedCode" rows="5" readonly> </textarea> <div class="ui right"> - <p class="message" v-if=copied><translate :translate-context="'Content/*/Paragraph'">Text copied to clipboard!</translate></p> + <p class="message" v-if=copied><translate translate-context="Content/*/Paragraph">Text copied to clipboard!</translate></p> </div> </div> </div> @@ -31,7 +31,7 @@ <div class="preview"> <h3> <a :href="iframeSrc" target="_blank"> - <translate :translate-context="'Popup/Embed/Title/Noun'">Preview</translate> + <translate translate-context="Popup/Embed/Title/Noun">Preview</translate> </a> </h3> <iframe :width="frameWidth" :height="height" scrolling="no" frameborder="no" :src="iframeSrc"></iframe> diff --git a/front/src/components/audio/PlayButton.vue b/front/src/components/audio/PlayButton.vue index 932b79608..45d47afbe 100644 --- a/front/src/components/audio/PlayButton.vue +++ b/front/src/components/audio/PlayButton.vue @@ -7,25 +7,25 @@ :disabled="!playable" :class="buttonClasses.concat(['ui', {loading: isLoading}, {'mini': discrete}, {disabled: !playable}])"> <i :class="[playIconClass, 'icon']"></i> - <template v-if="!discrete && !iconOnly"><slot><translate :translate-context="'*/Queue/Button/Label/Short, Verb'">Play</translate></slot></template> + <template v-if="!discrete && !iconOnly"><slot><translate translate-context="*/Queue/Button/Label/Short, Verb">Play</translate></slot></template> </button> <div v-if="!discrete && !iconOnly" :class="['ui', {disabled: !playable && !filterableArtist}, 'floating', 'dropdown', {'icon': !dropdownOnly}, {'button': !dropdownOnly}]"> <i :class="dropdownIconClasses.concat(['icon'])" :title="title" ></i> <div class="menu"> <button class="item basic" ref="add" data-ref="add" :disabled="!playable" @click.stop.prevent="add" :title="labels.addToQueue"> - <i class="plus icon"></i><translate :translate-context="'*/Queue/Dropdown/Button/Label/Short'">Add to queue</translate> + <i class="plus icon"></i><translate translate-context="*/Queue/Dropdown/Button/Label/Short">Add to queue</translate> </button> <button class="item basic" ref="addNext" data-ref="addNext" :disabled="!playable" @click.stop.prevent="addNext()" :title="labels.playNext"> - <i class="step forward icon"></i><translate :translate-context="'*/Queue/Dropdown/Button/Label/Short'">Play next</translate> + <i class="step forward icon"></i><translate translate-context="*/Queue/Dropdown/Button/Label/Short">Play next</translate> </button> <button class="item basic" ref="playNow" data-ref="playNow" :disabled="!playable" @click.stop.prevent="addNext(true)" :title="labels.playNow"> - <i class="play icon"></i><translate :translate-context="'*/Queue/Dropdown/Button/Label/Short'">Play now</translate> + <i class="play icon"></i><translate translate-context="*/Queue/Dropdown/Button/Label/Short">Play now</translate> </button> <button v-if="track" class="item basic" :disabled="!playable" @click.stop.prevent="$store.dispatch('radios/start', {type: 'similar', objectId: track.id})" :title="labels.startRadio"> - <i class="feed icon"></i><translate :translate-context="'*/Queue/Dropdown/Button/Label/Short'">Start radio</translate> + <i class="feed icon"></i><translate translate-context="*/Queue/Dropdown/Button/Label/Short">Start radio</translate> </button> <button v-if="filterableArtist" class="item basic" :disabled="!filterableArtist" @click.stop.prevent="filterArtist" :title="labels.hideArtist"> - <i class="eye slash outline icon"></i><translate :translate-context="'*/Queue/Dropdown/Button/Label/Short'">Hide content from this artist</translate> + <i class="eye slash outline icon"></i><translate translate-context="*/Queue/Dropdown/Button/Label/Short">Hide content from this artist</translate> </button> </div> </div> diff --git a/front/src/components/audio/Player.vue b/front/src/components/audio/Player.vue index 2b1bd2968..53a0cb86a 100644 --- a/front/src/components/audio/Player.vue +++ b/front/src/components/audio/Player.vue @@ -70,14 +70,14 @@ </div> <div class="ui small warning message" v-if="currentTrack && errored"> <div class="header"> - <translate :translate-context="'Sidebar/Player/Error message.Title'">The track cannot be loaded</translate> + <translate translate-context="Sidebar/Player/Error message.Title">The track cannot be loaded</translate> </div> <p v-if="hasNext && playing && $store.state.player.errorCount < $store.state.player.maxConsecutiveErrors"> - <translate :translate-context="'Sidebar/Player/Error message.Paragraph'">The next track will play automatically in a few seconds…</translate> + <translate translate-context="Sidebar/Player/Error message.Paragraph">The next track will play automatically in a few seconds…</translate> <i class="loading spinner icon"></i> </p> <p> - <translate :translate-context="'Sidebar/Player/Error message.Paragraph'">You may have a connectivity issue.</translate> + <translate translate-context="Sidebar/Player/Error message.Paragraph">You may have a connectivity issue.</translate> </p> </div> <div class="two wide column controls ui grid"> diff --git a/front/src/components/audio/Search.vue b/front/src/components/audio/Search.vue index cdf933a61..74a96f450 100644 --- a/front/src/components/audio/Search.vue +++ b/front/src/components/audio/Search.vue @@ -1,6 +1,6 @@ <template> <div> - <h2><translate :translate-context="'Content/Search/Title'">Search for some music</translate></h2> + <h2><translate translate-context="Content/Search/Title">Search for some music</translate></h2> <div :class="['ui', {'loading': isLoading }, 'search']"> <div class="ui icon big input"> <i class="search icon"></i> @@ -8,22 +8,22 @@ </div> </div> <template v-if="query.length > 0"> - <h3 class="ui title"><translate :translate-context="'Content/Search/Title'">Artists</translate></h3> + <h3 class="ui title"><translate translate-context="Content/Search/Title">Artists</translate></h3> <div v-if="results.artists.length > 0"> <div class="ui cards"> <artist-card :key="artist.id" v-for="artist in results.artists" :artist="artist" ></artist-card> </div> </div> - <p v-else><translate :translate-context="'Content/Search/Paragraph'">No artist matched your query</translate></p> + <p v-else><translate translate-context="Content/Search/Paragraph">No artist matched your query</translate></p> </template> <template v-if="query.length > 0"> - <h3 class="ui title"><translate :translate-context="'Content/Search/Title'">Albums</translate></h3> + <h3 class="ui title"><translate translate-context="Content/Search/Title">Albums</translate></h3> <div v-if="results.albums.length > 0" class="ui stackable three column grid"> <div class="column" :key="album.id" v-for="album in results.albums"> <album-card class="fluid" :album="album" ></album-card> </div> </div> - <p v-else><translate :translate-context="'Content/Search/Paragraph'">No album matched your query</translate></p> + <p v-else><translate translate-context="Content/Search/Paragraph">No album matched your query</translate></p> </template> </div> </template> diff --git a/front/src/components/audio/album/Card.vue b/front/src/components/audio/album/Card.vue index 1f4021ef5..95c9d2f66 100644 --- a/front/src/components/audio/album/Card.vue +++ b/front/src/components/audio/album/Card.vue @@ -11,7 +11,7 @@ <div class="meta"> <span> <router-link tag="span" :to="{name: 'library.artists.detail', params: {id: album.artist.id }}"> - <translate :translate-context="'Content/Album/Card'" :translate-params="{artist: album.artist.name}">By %{ artist }</translate> + <translate translate-context="Content/Album/Card" :translate-params="{artist: album.artist.name}">By %{ artist }</translate> </router-link> </span><span class="time" v-if="album.release_date">– {{ album.release_date | year }}</span> </div> @@ -36,21 +36,21 @@ </table> <div class="center aligned segment" v-if="album.tracks.length > initialTracks"> <em v-if="!showAllTracks" @click="showAllTracks = true" class="expand"> - <translate :translate-context="'Content/Album/Card.Link/Verb'" :translate-params="{count: album.tracks.length - initialTracks}" :translate-n="album.tracks.length - initialTracks" translate-plural="Show %{ count } more tracks">Show %{ count } more track</translate> + <translate translate-context="Content/Album/Card.Link/Verb" :translate-params="{count: album.tracks.length - initialTracks}" :translate-n="album.tracks.length - initialTracks" translate-plural="Show %{ count } more tracks">Show %{ count } more track</translate> </em> <em v-else @click="showAllTracks = false" class="expand"> - <translate :translate-context="'Content/Album/Card.Link/Verb'">Collapse</translate> + <translate translate-context="Content/Album/Card.Link/Verb">Collapse</translate> </em> </div> </div> </div> <div class="extra content"> <play-button class="mini basic orange right floated" :tracks="album.tracks" :album="album"> - <translate :translate-context="'Content/Queue/Card.Button.Label/Short, Verb'">Play all</translate> + <translate translate-context="Content/Queue/Card.Button.Label/Short, Verb">Play all</translate> </play-button> <span> <i class="music icon"></i> - <translate :translate-context="'Content/Album/Card'" :translate-params="{count: album.tracks.length}" :translate-n="album.tracks.length" translate-plural="%{ count } tracks">%{ count } track</translate> + <translate translate-context="Content/Album/Card" :translate-params="{count: album.tracks.length}" :translate-n="album.tracks.length" translate-plural="%{ count } tracks">%{ count } track</translate> </span> </div> </div> diff --git a/front/src/components/audio/artist/Card.vue b/front/src/components/audio/artist/Card.vue index d0223ac2d..f5e89cc5c 100644 --- a/front/src/components/audio/artist/Card.vue +++ b/front/src/components/audio/artist/Card.vue @@ -28,10 +28,10 @@ </table> <div class="center aligned segment" v-if="artist.albums.length > initialAlbums"> <em v-if="!showAllAlbums" @click="showAllAlbums = true" class="expand"> - <translate :translate-context="'Content/Artist/Card.Link'" :translate-params="{count: artist.albums.length - initialAlbums}" :translate-n="artist.albums.length - initialAlbums" translate-plural="Show %{ count } more albums">Show 1 more album</translate> + <translate translate-context="Content/Artist/Card.Link" :translate-params="{count: artist.albums.length - initialAlbums}" :translate-n="artist.albums.length - initialAlbums" translate-plural="Show %{ count } more albums">Show 1 more album</translate> </em> <em v-else @click="showAllAlbums = false" class="expand"> - <translate :translate-context="'Content/Artist/Card.Link'">Collapse</translate> + <translate translate-context="Content/Artist/Card.Link">Collapse</translate> </em> </div> </div> @@ -39,10 +39,10 @@ <div class="extra content"> <span> <i class="sound icon"></i> - <translate :translate-context="'Content/Artist/Card'" :translate-params="{count: artist.albums.length}" :translate-n="artist.albums.length" translate-plural="%{ count } albums">1 album</translate> + <translate translate-context="Content/Artist/Card" :translate-params="{count: artist.albums.length}" :translate-n="artist.albums.length" translate-plural="%{ count } albums">1 album</translate> </span> <play-button :is-playable="isPlayable" class="mini basic orange right floated" :artist="artist"> - <translate :translate-context="'Content/Queue/Button.Label/Short, Verb'">Play all</translate> + <translate translate-context="Content/Queue/Button.Label/Short, Verb">Play all</translate> </play-button> </div> </div> diff --git a/front/src/components/audio/track/Row.vue b/front/src/components/audio/track/Row.vue index e48de8e51..690fe48f5 100644 --- a/front/src/components/audio/track/Row.vue +++ b/front/src/components/audio/track/Row.vue @@ -38,7 +38,7 @@ {{ time.parse(track.uploads[0].duration) }} </td> <td colspan="4" v-else> - <translate :translate-context="'*/*/*'">N/A</translate> + <translate translate-context="*/*/*">N/A</translate> </td> <td colspan="2" class="align right"> <track-favorite-icon class="favorite-icon" :track="track"></track-favorite-icon> diff --git a/front/src/components/audio/track/Table.vue b/front/src/components/audio/track/Table.vue index 910d8f98a..13506acae 100644 --- a/front/src/components/audio/track/Table.vue +++ b/front/src/components/audio/track/Table.vue @@ -5,10 +5,10 @@ <tr> <th></th> <th></th> - <th colspan="6"><translate :translate-context="'Content/Track/Table.Label'">Title</translate></th> - <th colspan="4"><translate :translate-context="'Content/Track/Table.Label'">Artist</translate></th> - <th colspan="4"><translate :translate-context="'Content/Track/Table.Label'">Album</translate></th> - <th colspan="4"><translate :translate-context="'Content/Track/Table.Label'">Duration</translate></th> + <th colspan="6"><translate translate-context="Content/Track/Table.Label">Title</translate></th> + <th colspan="4"><translate translate-context="Content/Track/Table.Label">Artist</translate></th> + <th colspan="4"><translate translate-context="Content/Track/Table.Label">Album</translate></th> + <th colspan="4"><translate translate-context="Content/Track/Table.Label">Duration</translate></th> <th colspan="2"></th> </tr> </thead> diff --git a/front/src/components/auth/Login.vue b/front/src/components/auth/Login.vue index 6a1b65cd3..50acc927a 100644 --- a/front/src/components/auth/Login.vue +++ b/front/src/components/auth/Login.vue @@ -2,20 +2,20 @@ <main class="main pusher" v-title="labels.title"> <section class="ui vertical stripe segment"> <div class="ui small text container"> - <h2><translate :translate-context="'Content/Login/Title/Verb'">Log in to your Funkwhale account</translate></h2> + <h2><translate translate-context="Content/Login/Title/Verb">Log in to your Funkwhale account</translate></h2> <form class="ui form" @submit.prevent="submit()"> <div v-if="error" class="ui negative message"> - <div class="header"><translate :translate-context="'Content/Login/Error message.Title'">We cannot log you in</translate></div> + <div class="header"><translate translate-context="Content/Login/Error message.Title">We cannot log you in</translate></div> <ul class="list"> - <li v-if="error == 'invalid_credentials'"><translate :translate-context="'Content/Login/Error message.List item/Call to action'">Please double-check your username/password couple is correct</translate></li> - <li v-else><translate :translate-context="'Content/Login/Error message/List item'">An unknown error happend, this can mean the server is down or cannot be reached</translate></li> + <li v-if="error == 'invalid_credentials'"><translate translate-context="Content/Login/Error message.List item/Call to action">Please double-check your username/password couple is correct</translate></li> + <li v-else><translate translate-context="Content/Login/Error message/List item">An unknown error happend, this can mean the server is down or cannot be reached</translate></li> </ul> </div> <div class="field"> <label> - <translate :translate-context="'Content/Login/Input.Label/Noun'">Username or email</translate> | + <translate translate-context="Content/Login/Input.Label/Noun">Username or email</translate> | <router-link :to="{path: '/signup'}"> - <translate :translate-context="'Content/Login/Link/Verb'">Create an account</translate> + <translate translate-context="Content/Login/Link/Verb">Create an account</translate> </router-link> </label> <input @@ -31,16 +31,16 @@ </div> <div class="field"> <label> - <translate :translate-context="'Content/Login/Input.Label'">Password</translate> | + <translate translate-context="Content/Login/Input.Label">Password</translate> | <router-link :to="{name: 'auth.password-reset', query: {email: credentials.username}}"> - <translate :translate-context="'Content/Login/Link/Verb'">Reset your password</translate> + <translate translate-context="Content/Login/Link/Verb">Reset your password</translate> </router-link> </label> <password-input :index="2" required v-model="credentials.password" /> </div> <button tabindex="3" :class="['ui', {'loading': isLoading}, 'right', 'floated', 'green', 'button']" type="submit"> - <translate :translate-context="'Content/Login/Button.Label/Verb'">Login</translate> + <translate translate-context="Content/Login/Button.Label/Verb">Login</translate> </button> </form> </div> diff --git a/front/src/components/auth/Logout.vue b/front/src/components/auth/Logout.vue index 3582d6367..84efcd1f0 100644 --- a/front/src/components/auth/Logout.vue +++ b/front/src/components/auth/Logout.vue @@ -3,10 +3,10 @@ <section class="ui vertical stripe segment"> <div class="ui small text container"> <h2> - <translate :translate-context="'Content/Login/Title'">Are you sure you want to log out?</translate> + <translate translate-context="Content/Login/Title">Are you sure you want to log out?</translate> </h2> <p v-translate="{username: $store.state.auth.username}">You are currently logged in as %{ username }</p> - <button class="ui button" @click="$store.dispatch('auth/logout')"><translate :translate-context="'Content/Login/Button.Label'">Yes, log me out!</translate></button> + <button class="ui button" @click="$store.dispatch('auth/logout')"><translate translate-context="Content/Login/Button.Label">Yes, log me out!</translate></button> </div> </section> </main> diff --git a/front/src/components/auth/Profile.vue b/front/src/components/auth/Profile.vue index 1aaafd102..0f82b6610 100644 --- a/front/src/components/auth/Profile.vue +++ b/front/src/components/auth/Profile.vue @@ -14,14 +14,14 @@ </div> </h2> <div class="ui basic green label"> - <translate :translate-context="'Content/Profile/Button.Paragraph'">This is you!</translate> + <translate translate-context="Content/Profile/Button.Paragraph">This is you!</translate> </div> <a v-if="profile.is_staff" class="ui yellow label" :href="$store.getters['instance/absoluteUrl']('/api/admin')" target="_blank"> <i class="star icon"></i> - <translate :translate-context="'Content/Profile/Button.Label'">Staff member</translate> + <translate translate-context="Content/Profile/Button.Label">Staff member</translate> </a> </div> </template> diff --git a/front/src/components/auth/Settings.vue b/front/src/components/auth/Settings.vue index 7959d0780..6d6989450 100644 --- a/front/src/components/auth/Settings.vue +++ b/front/src/components/auth/Settings.vue @@ -3,16 +3,16 @@ <div class="ui vertical stripe segment"> <section class="ui small text container"> <h2 class="ui header"> - <translate :translate-context="'Content/Settings/Title'">Account settings</translate> + <translate translate-context="Content/Settings/Title">Account settings</translate> </h2> <form class="ui form" @submit.prevent="submitSettings()"> <div v-if="settings.success" class="ui positive message"> <div class="header"> - <translate :translate-context="'Content/Settings/Message'">Settings updated</translate> + <translate translate-context="Content/Settings/Message">Settings updated</translate> </div> </div> <div v-if="settings.errors.length > 0" class="ui negative message"> - <div class="header"><translate :translate-context="'Content/Settings/Error message.Title'">Your settings can't be updateds</translate></div> + <div class="header"><translate translate-context="Content/Settings/Error message.Title">Your settings can't be updateds</translate></div> <ul class="list"> <li v-for="error in settings.errors">{{ error }}</li> </ul> @@ -25,38 +25,38 @@ </select> </div> <button :class="['ui', {'loading': isLoading}, 'button']" type="submit"> - <translate :translate-context="'Content/Settings/Button.Label/Verb'">Update settings</translate> + <translate translate-context="Content/Settings/Button.Label/Verb">Update settings</translate> </button> </form> </section> <section class="ui small text container"> <div class="ui hidden divider"></div> <h2 class="ui header"> - <translate :translate-context="'Content/Settings/Title'">Avatar</translate> + <translate translate-context="Content/Settings/Title">Avatar</translate> </h2> <div class="ui form"> <div v-if="avatarErrors.length > 0" class="ui negative message"> - <div class="header"><translate :translate-context="'Content/Settings/Error message.Title'">Your avatar cannot be saved</translate></div> + <div class="header"><translate translate-context="Content/Settings/Error message.Title">Your avatar cannot be saved</translate></div> <ul class="list"> <li v-for="error in avatarErrors">{{ error }}</li> </ul> </div> <div class="ui stackable grid"> <div class="ui ten wide column"> - <h3 class="ui header"><translate :translate-context="'Content/Settings/Title/Verb'">Upload a new avatar</translate></h3> - <p><translate :translate-context="'Content/Settings/Paragraph'">PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px.</translate></p> + <h3 class="ui header"><translate translate-context="Content/Settings/Title/Verb">Upload a new avatar</translate></h3> + <p><translate translate-context="Content/Settings/Paragraph">PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px.</translate></p> <input class="ui input" ref="avatar" type="file" /> <div class="ui hidden divider"></div> <button @click="submitAvatar" :class="['ui', {'loading': isLoadingAvatar}, 'button']"> - <translate :translate-context="'Content/Settings/Button.Label/Verb'">Update avatar</translate> + <translate translate-context="Content/Settings/Button.Label/Verb">Update avatar</translate> </button> </div> <div class="ui six wide column"> - <h3 class="ui header"><translate :translate-context="'Content/Settings/Title/Noun'">Current avatar</translate></h3> + <h3 class="ui header"><translate translate-context="Content/Settings/Title/Noun">Current avatar</translate></h3> <img class="ui circular image" v-if="currentAvatar && currentAvatar.square_crop" v-lazy="$store.getters['instance/absoluteUrl'](currentAvatar.medium_square_crop)" /> <div class="ui hidden divider"></div> <button @click="removeAvatar" v-if="currentAvatar && currentAvatar.square_crop" :class="['ui', {'loading': isLoadingAvatar}, ,'yellow', 'button']"> - <translate :translate-context="'Content/Settings/Button.Label/Verb'">Remove avatar</translate> + <translate translate-context="Content/Settings/Button.Label/Verb">Remove avatar</translate> </button> </div> </div> @@ -66,43 +66,43 @@ <section class="ui small text container"> <div class="ui hidden divider"></div> <h2 class="ui header"> - <translate :translate-context="'Content/Settings/Title/Verb'">Change my password</translate> + <translate translate-context="Content/Settings/Title/Verb">Change my password</translate> </h2> <div class="ui message"> - <translate :translate-context="'Content/Settings/Paragraph'">Changing your password will also change your Subsonic API password if you have requested one.</translate> <translate :translate-context="'Content/Settings/Paragraph'">You will have to update your password on your clients that use this password.</translate> + <translate translate-context="Content/Settings/Paragraph'">Changing your password will also change your Subsonic API password if you have requested one.</translate> <translate translate-context="Content/Settings/Paragraph">You will have to update your password on your clients that use this password.</translate> </div> <form class="ui form" @submit.prevent="submitPassword()"> <div v-if="passwordError" class="ui negative message"> <div class="header"> - <translate :translate-context="'Content/Settings/Error message.Title'">Your password cannot be changed</translate> + <translate translate-context="Content/Settings/Error message.Title">Your password cannot be changed</translate> </div> <ul class="list"> - <li v-if="passwordError == 'invalid_credentials'"><translate :translate-context="'Content/Settings/Error message.List item/Call to action'">Please double-check your password is correct</translate></li> + <li v-if="passwordError == 'invalid_credentials'"><translate translate-context="Content/Settings/Error message.List item/Call to action">Please double-check your password is correct</translate></li> </ul> </div> <div class="field"> - <label><translate :translate-context="'Content/Settings/Input.Label'">Old password</translate></label> + <label><translate translate-context="Content/Settings/Input.Label">Old password</translate></label> <password-input required v-model="old_password" /> </div> <div class="field"> - <label><translate :translate-context="'Content/Settings/Input.Label'">New password</translate></label> + <label><translate translate-context="Content/Settings/Input.Label">New password</translate></label> <password-input required v-model="new_password" /> </div> <dangerous-button color="yellow" :class="['ui', {'loading': isLoading}, 'button']" :action="submitPassword"> - <translate :translate-context="'Content/Settings/Button.Label'">Change password</translate> - <p slot="modal-header"><translate :translate-context="'Popup/Settings/Title'">Change your password?</translate></p> + <translate translate-context="Content/Settings/Button.Label">Change password</translate> + <p slot="modal-header"><translate translate-context="Popup/Settings/Title">Change your password?</translate></p> <div slot="modal-content"> - <p><translate :translate-context="'Popup/Settings/Paragraph'">Changing your password will have the following consequences:</translate></p> + <p><translate translate-context="Popup/Settings/Paragraph">Changing your password will have the following consequences:</translate></p> <ul> - <li><translate :translate-context="'Popup/Settings/List item'">You will be logged out from this session and have to log in with the new one</translate></li> - <li><translate :translate-context="'Popup/Settings/List item'">Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password</translate></li> + <li><translate translate-context="Popup/Settings/List item">You will be logged out from this session and have to log in with the new one</translate></li> + <li><translate translate-context="Popup/Settings/List item">Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password</translate></li> </ul> </div> - <div slot="modal-confirm"><translate :translate-context="'Popup/Setting/Button.Label'">Disable access</translate></div> + <div slot="modal-confirm"><translate translate-context="Popup/Setting/Button.Label">Disable access</translate></div> </dangerous-button> </form> <div class="ui hidden divider" /> @@ -123,7 +123,7 @@ @click="$store.dispatch('moderation/fetchContentFilters')" class="ui basic icon button"> <i class="refresh icon"></i> - <translate :translate-context="'Content/*/Button.Label'">Refresh</translate> + <translate translate-context="Content/*/Button.Label">Refresh</translate> </button> <h3 class="ui header"> <translate>Hidden artists</translate> @@ -131,8 +131,8 @@ <table class="ui compact very basic unstackable table"> <thead> <tr> - <th><translate :translate-context="'Content/*/Table.Label'">Name</translate></th> - <th><translate :translate-context="'Content/*/Table.Label'">Creation date</translate></th> + <th><translate translate-context="Content/*/Table.Label">Name</translate></th> + <th><translate translate-context="Content/*/Table.Label">Creation date</translate></th> <th></th> </tr> </thead> @@ -148,7 +148,7 @@ </td> <td> <button @click="$store.dispatch('moderation/deleteContentFilter', filter.uuid)" class="ui basic tiny button"> - <translate :translate-context="'Content/*/Button.Label'">Delete</translate> + <translate translate-context="Content/*/Button.Label">Delete</translate> </button> </td> </tr> diff --git a/front/src/components/auth/SubsonicTokenForm.vue b/front/src/components/auth/SubsonicTokenForm.vue index 496d69eaa..631fdb48c 100644 --- a/front/src/components/auth/SubsonicTokenForm.vue +++ b/front/src/components/auth/SubsonicTokenForm.vue @@ -1,23 +1,23 @@ <template> <form class="ui form" @submit.prevent="requestNewToken()"> - <h2><translate :translate-context="'Content/Settings/Title'">Subsonic API password</translate></h2> + <h2><translate translate-context="Content/Settings/Title">Subsonic API password</translate></h2> <p class="ui message" v-if="!subsonicEnabled"> - <translate :translate-context="'Content/Settings/Paragraph'">The Subsonic API is not available on this Funkwhale instance.</translate> + <translate translate-context="Content/Settings/Paragraph">The Subsonic API is not available on this Funkwhale instance.</translate> </p> <p> - <translate :translate-context="'Content/Settings/Paragraph'">Funkwhale is compatible with other music players that support the Subsonic API.</translate> <translate :translate-context="'Content/Settings/Paragraph'">You can use those to enjoy your playlist and music in offline mode, on your smartphone or tablet, for instance.</translate> + <translate translate-context="Content/Settings/Paragraph'">Funkwhale is compatible with other music players that support the Subsonic API.</translate> <translate translate-context="Content/Settings/Paragraph">You can use those to enjoy your playlist and music in offline mode, on your smartphone or tablet, for instance.</translate> </p> <p> - <translate :translate-context="'Content/Settings/Paragraph'">However, accessing Funkwhale from those clients require a separate password you can set below.</translate> + <translate translate-context="Content/Settings/Paragraph">However, accessing Funkwhale from those clients require a separate password you can set below.</translate> </p> <p><a href="https://docs.funkwhale.audio/users/apps.html#subsonic-compatible-clients" target="_blank"> - <translate :translate-context="'Content/Settings/Link'">Discover how to use Funkwhale from other apps</translate> + <translate translate-context="Content/Settings/Link">Discover how to use Funkwhale from other apps</translate> </a></p> <div v-if="success" class="ui positive message"> <div class="header">{{ successMessage }}</div> </div> <div v-if="subsonicEnabled && errors.length > 0" class="ui negative message"> - <div class="header"><translate :translate-context="'Content/Settings/Error message.Title'">Error</translate></div> + <div class="header"><translate translate-context="Content/Settings/Error message.Title">Error</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> </ul> @@ -31,25 +31,25 @@ color="grey" :class="['ui', {'loading': isLoading}, 'button']" :action="requestNewToken"> - <translate :translate-context="'Content/Settings/Button.Label/Verb'">Request a new password</translate> - <p slot="modal-header"><translate :translate-context="'Popup/Settings/Title'">Request a new Subsonic API password?</translate></p> - <p slot="modal-content"><translate :translate-context="'Popup/Settings/Paragraph'">This will log you out from existing devices that use the current password.</translate></p> - <div slot="modal-confirm"><translate :translate-context="'Popup/Settings/Button.Label/Verb'">Request a new password</translate></div> + <translate translate-context="Content/Settings/Button.Label/Verb">Request a new password</translate> + <p slot="modal-header"><translate translate-context="Popup/Settings/Title">Request a new Subsonic API password?</translate></p> + <p slot="modal-content"><translate translate-context="Popup/Settings/Paragraph">This will log you out from existing devices that use the current password.</translate></p> + <div slot="modal-confirm"><translate translate-context="Popup/Settings/Button.Label/Verb">Request a new password</translate></div> </dangerous-button> <button v-else color="grey" :class="['ui', {'loading': isLoading}, 'button']" - @click="requestNewToken"><translate :translate-context="'Content/Settings/Button.Label/Verb'">Request a password</translate></button> + @click="requestNewToken"><translate translate-context="Content/Settings/Button.Label/Verb">Request a password</translate></button> <dangerous-button v-if="token" color="yellow" :class="['ui', {'loading': isLoading}, 'button']" :action="disable"> - <translate :translate-context="'Content/Settings/Button.Label/Verb'">Disable Subsonic access</translate> - <p slot="modal-header"><translate :translate-context="'Popup/Settings/Title'">Disable Subsonic API access?</translate></p> - <p slot="modal-content"><translate :translate-context="'Popup/Settings/Paragraph'">This will completely disable access to the Subsonic API using from account.</translate></p> - <div slot="modal-confirm"><translate :translate-context="'Popup/Settings/Button.Label'">Disable access</translate></div> + <translate translate-context="Content/Settings/Button.Label/Verb">Disable Subsonic access</translate> + <p slot="modal-header"><translate translate-context="Popup/Settings/Title">Disable Subsonic API access?</translate></p> + <p slot="modal-content"><translate translate-context="Popup/Settings/Paragraph">This will completely disable access to the Subsonic API using from account.</translate></p> + <div slot="modal-confirm"><translate translate-context="Popup/Settings/Button.Label">Disable access</translate></div> </dangerous-button> </template> </form> diff --git a/front/src/components/common/ActionTable.vue b/front/src/components/common/ActionTable.vue index f6143e0a3..4e7415df8 100644 --- a/front/src/components/common/ActionTable.vue +++ b/front/src/components/common/ActionTable.vue @@ -6,7 +6,7 @@ <th colspan="1000"> <div v-if="refreshable" class="right floated"> <span v-if="needsRefresh"> - <translate :translate-context="'Content/*/Button.Help text.Paragraph'">Content have been updated, click refresh to see up-to-date content</translate> + <translate translate-context="Content/*/Button.Help text.Paragraph">Content have been updated, click refresh to see up-to-date content</translate> </span> <button @click="$emit('refresh')" @@ -20,7 +20,7 @@ <div class="ui small left floated form" v-if="actionUrl && actions.length > 0"> <div class="ui inline fields"> <div class="field"> - <label><translate :translate-context="'Content/*/Dropdown.Label/Noun'">Actions</translate></label> + <label><translate translate-context="Content/*/Dropdown.Label/Noun">Actions</translate></label> <select class="ui dropdown" v-model="currentActionName"> <option v-for="action in actions" :value="action.name"> {{ action.label }} @@ -33,9 +33,9 @@ confirm-color="green" color="" @confirm="launchAction"> - <translate :translate-context="'Content/*/Button.Label/Short, Verb'">Go</translate> + <translate translate-context="Content/*/Button.Label/Short, Verb">Go</translate> <p slot="modal-header"> - <translate :translate-context="'Modal/*/Title'" + <translate translate-context="Modal/*/Title" key="1" :translate-n="affectedObjectsCount" :translate-params="{count: affectedObjectsCount, action: currentActionName}" @@ -44,19 +44,19 @@ </translate> </p> <p slot="modal-content"> - <translate :translate-context="'Modal/*/Paragraph'">This may affect a lot of elements or have irreversible consequences, please double check this is really what you want.</translate> + <translate translate-context="Modal/*/Paragraph">This may affect a lot of elements or have irreversible consequences, please double check this is really what you want.</translate> </p> - <div slot="modal-confirm"><translate :translate-context="'Modal/*/Button.Label/Short, Verb'">Launch</translate></div> + <div slot="modal-confirm"><translate translate-context="Modal/*/Button.Label/Short, Verb">Launch</translate></div> </dangerous-button> <div v-else @click="launchAction" :disabled="checked.length === 0" :class="['ui', {disabled: checked.length === 0}, {'loading': actionLoading}, 'button']"> - <translate :translate-context="'Content/*/Button.Label/Short, Verb'">Go</translate></div> + <translate translate-context="Content/*/Button.Label/Short, Verb">Go</translate></div> </div> <div class="count field"> - <translate :translate-context="'Content/*/Paragraph'" + <translate translate-context="Content/*/Paragraph" tag="span" v-if="selectAll" key="1" @@ -65,7 +65,7 @@ translate-plural="All %{ count } elements selected"> All %{ count } element selected </translate> - <translate :translate-context="'Content/*/Paragraph'" + <translate translate-context="Content/*/Paragraph" tag="span" v-else key="2" @@ -76,7 +76,7 @@ </translate> <template v-if="currentAction.allowAll && checkable.length > 0 && checkable.length === checked.length"> <a @click="selectAll = true" v-if="!selectAll"> - <translate :translate-context="'Content/*/Link/Verb'" + <translate translate-context="Content/*/Link/Verb" key="3" :translate-n="objectsData.count" :translate-params="{total: objectsData.count}" @@ -85,20 +85,20 @@ </translate> </a> <a @click="selectAll = false" v-else> - <translate :translate-context="'Content/*/Link/Verb'" key="4">Select only current page</translate> + <translate translate-context="Content/*/Link/Verb" key="4">Select only current page</translate> </a> </template> </div> </div> <div v-if="actionErrors.length > 0" class="ui negative message"> - <div class="header"><translate :translate-context="'Content/*/Error message/Header'">Error while applying action</translate></div> + <div class="header"><translate translate-context="Content/*/Error message/Header">Error while applying action</translate></div> <ul class="list"> <li v-for="error in actionErrors">{{ error }}</li> </ul> </div> <div v-if="actionResult" class="ui positive message"> <p> - <translate :translate-context="'Content/*/Paragraph'" + <translate translate-context="Content/*/Paragraph" :translate-n="actionResult.updated" :translate-params="{count: actionResult.updated, action: actionResult.action}" translate-plural="Action %{ action } was launched successfully on %{ count } elements"> diff --git a/front/src/components/common/CopyInput.vue b/front/src/components/common/CopyInput.vue index 3e4008934..a422ff758 100644 --- a/front/src/components/common/CopyInput.vue +++ b/front/src/components/common/CopyInput.vue @@ -1,12 +1,12 @@ <template> <div class="ui fluid action input"> <p class="message" v-if="copied"> - <translate :translate-context="'Content/*/Paragraph/Short'">Text copied to clipboard!</translate> + <translate translate-context="Content/*/Paragraph/Short">Text copied to clipboard!</translate> </p> <input ref="input" :value="value" type="text"> <button @click="copy" :class="['ui', buttonClasses, 'right', 'labeled', 'icon', 'button']"> <i class="copy icon"></i> - <translate :translate-context="'Content/*/Button.Label/Short, Verb'">Copy</translate> + <translate translate-context="Content/*/Button.Label/Short, Verb">Copy</translate> </button> </div> </template> diff --git a/front/src/components/common/DangerousButton.vue b/front/src/components/common/DangerousButton.vue index 9a2fab48a..ae05ccfec 100644 --- a/front/src/components/common/DangerousButton.vue +++ b/front/src/components/common/DangerousButton.vue @@ -5,7 +5,7 @@ <modal class="small" :show.sync="showModal"> <div class="header"> <slot name="modal-header"> - <translate :translate-context="'Modal/*/Title'">Do you want to confirm this action?</translate> + <translate translate-context="Modal/*/Title">Do you want to confirm this action?</translate> </slot> </div> <div class="scrolling content"> @@ -15,11 +15,11 @@ </div> <div class="actions"> <div class="ui cancel button"> - <translate :translate-context="'Modal/*/Button.Label/Short, Verb'">Cancel</translate> + <translate translate-context="Modal/*/Button.Label/Short, Verb">Cancel</translate> </div> <div :class="['ui', 'confirm', confirmButtonColor, 'button']" @click="confirm"> <slot name="modal-confirm"> - <translate :translate-context="'Modal/*/Button.Label/Short, Verb'">Confirm</translate> + <translate translate-context="Modal/*/Button.Label/Short, Verb">Confirm</translate> </slot> </div> </div> diff --git a/front/src/components/common/Duration.vue b/front/src/components/common/Duration.vue index 93465ba6f..4ee8ccfd1 100644 --- a/front/src/components/common/Duration.vue +++ b/front/src/components/common/Duration.vue @@ -1,9 +1,9 @@ <template> <span> - <translate :translate-context="'Content/*/Paragraph'" + <translate translate-context="Content/*/Paragraph" v-if="durationData.hours > 0" :translate-params="{minutes: durationData.minutes, hours: durationData.hours}">%{ hours } h %{ minutes } min</translate> - <translate :translate-context="'Content/*/Paragraph'" + <translate translate-context="Content/*/Paragraph" v-else :translate-params="{minutes: durationData.minutes}">%{ minutes } min</translate> </span> diff --git a/front/src/components/common/EmptyState.vue b/front/src/components/common/EmptyState.vue index 79067b8ee..cc9f32ca1 100644 --- a/front/src/components/common/EmptyState.vue +++ b/front/src/components/common/EmptyState.vue @@ -5,7 +5,7 @@ <slot name="title"> <i class="search icon"></i> - <translate :translate-context="'Content/*/Paragraph'"> + <translate translate-context="Content/*/Paragraph"> No results were found. </translate> </slot> @@ -14,7 +14,7 @@ <div class="inline"> <slot></slot> <button v-if="refresh" class="ui button" @click="$emit('refresh')"> - <translate :translate-context="'Content/*/Button.Label/Short, Verb'"> + <translate translate-context="Content/*/Button.Label/Short, Verb"> Refresh </translate></button> </button> diff --git a/front/src/components/favorites/List.vue b/front/src/components/favorites/List.vue index 3db4e2306..f531df231 100644 --- a/front/src/components/favorites/List.vue +++ b/front/src/components/favorites/List.vue @@ -3,7 +3,7 @@ <section class="ui vertical center aligned stripe segment"> <div :class="['ui', {'active': isLoading}, 'inverted', 'dimmer']"> <div class="ui text loader"> - <translate :translate-context="'Content/Favorites/Message'">Loading your favorites…</translate> + <translate translate-context="Content/Favorites/Message">Loading your favorites…</translate> </div> </div> <h2 v-if="results" class="ui center aligned icon header"> @@ -12,7 +12,7 @@ translate-plural="%{ count } favorites" :translate-n="$store.state.favorites.count" :translate-params="{count: results.count}" - :translate-context="'Content/Favorites/Title'"> + translate-context="Content/Favorites/Title"> 1 favorite </translate> </h2> @@ -22,7 +22,7 @@ <div :class="['ui', {'loading': isLoading}, 'form']"> <div class="fields"> <div class="field"> - <label><translate :translate-context="'Content/Favorites/Dropdown.Title/Short, Name'">Ordering</translate></label> + <label><translate translate-context="Content/Favorites/Dropdown.Title/Short, Name">Ordering</translate></label> <select class="ui dropdown" v-model="ordering"> <option v-for="option in orderingOptions" :value="option[0]"> {{ sharedLabels.filters[option[1]] }} @@ -30,14 +30,14 @@ </select> </div> <div class="field"> - <label><translate :translate-context="'Content/*/Dropdown.Label/Short, Name'">Order</translate></label> + <label><translate translate-context="Content/*/Dropdown.Label/Short, Name">Order</translate></label> <select class="ui dropdown" v-model="orderingDirection"> - <option value="+"><translate :translate-context="'Content/*/Dropdown/Short'">Ascending</translate></option> - <option value="-"><translate :translate-context="'Content/*/Short'">Descending</translate></option> + <option value="+"><translate translate-context="Content/*/Dropdown/Short">Ascending</translate></option> + <option value="-"><translate translate-context="Content/*/Short">Descending</translate></option> </select> </div> <div class="field"> - <label><translate :translate-context="'Content/*/Dropdown.Label/Short, Name'">Results per page</translate></label> + <label><translate translate-context="Content/*/Dropdown.Label/Short, Name">Results per page</translate></label> <select class="ui dropdown" v-model="paginateBy"> <option :value="parseInt(12)">12</option> <option :value="parseInt(25)">25</option> diff --git a/front/src/components/favorites/TrackFavoriteIcon.vue b/front/src/components/favorites/TrackFavoriteIcon.vue index 6ad18871d..61224ae6c 100644 --- a/front/src/components/favorites/TrackFavoriteIcon.vue +++ b/front/src/components/favorites/TrackFavoriteIcon.vue @@ -1,8 +1,8 @@ <template> <button @click="$store.dispatch('favorites/toggle', track.id)" v-if="button" :class="['ui', 'pink', {'inverted': isFavorite}, {'favorited': isFavorite}, 'icon', 'labeled', 'button']"> <i class="heart icon"></i> - <translate v-if="isFavorite" :translate-context="'Content/Track/Button.Message'">In favorites</translate> - <translate v-else :translate-context="'Content/Track/Button.Message'">Add to favorites</translate> + <translate v-if="isFavorite" translate-context="Content/Track/Button.Message">In favorites</translate> + <translate v-else translate-context="Content/Track/Button.Message">Add to favorites</translate> </button> <button v-else diff --git a/front/src/components/federation/LibraryWidget.vue b/front/src/components/federation/LibraryWidget.vue index 7ec311760..7d2418087 100644 --- a/front/src/components/federation/LibraryWidget.vue +++ b/front/src/components/federation/LibraryWidget.vue @@ -4,7 +4,7 @@ <slot name="title"></slot> </h3> <p v-if="!isLoading && libraries.length > 0" class="ui subtitle"><slot name="subtitle"></slot></p> - <p v-if="!isLoading && libraries.length === 0" class="ui subtitle"><translate :translate-context="'Content/Federation/Paragraph'">No matching library.</translate></p> + <p v-if="!isLoading && libraries.length === 0" class="ui subtitle"><translate translate-context="Content/Federation/Paragraph">No matching library.</translate></p> <i @click="fetchData(previousPage)" :disabled="!previousPage" :class="['ui', {disabled: !previousPage}, 'circular', 'angle left', 'icon']"> </i> <i @click="fetchData(nextPage)" :disabled="!nextPage" :class="['ui', {disabled: !nextPage}, 'circular', 'angle right', 'icon']"> diff --git a/front/src/components/instance/Stats.vue b/front/src/components/instance/Stats.vue index 831bdbdcc..b64574c54 100644 --- a/front/src/components/instance/Stats.vue +++ b/front/src/components/instance/Stats.vue @@ -3,7 +3,7 @@ <div v-if="stats" class="ui stackable two column grid"> <div class="column"> <h3 class="ui left aligned header"> - <translate :translate-context="'Content/About/Title/Noun'">User activity</translate> + <translate translate-context="Content/About/Title/Noun">User activity</translate> </h3> <div v-if="stats" class="ui mini horizontal statistics"> <div class="statistic"> @@ -11,48 +11,48 @@ <i class="green user icon"></i> {{ stats.users }} </div> - <div class="label"><translate :translate-context="'Content/About/Paragraph/Unit'">users</translate></div> + <div class="label"><translate translate-context="Content/About/Paragraph/Unit">users</translate></div> </div> <div class="statistic"> <div class="value"> <i class="orange sound icon"></i> {{ stats.listenings }} </div> - <div class="label"><translate :translate-context="'Content/About/Paragraph/Unit'">tracks listened</translate></div> + <div class="label"><translate translate-context="Content/About/Paragraph/Unit">tracks listened</translate></div> </div> <div class="statistic"> <div class="value"> <i class="pink heart icon"></i> {{ stats.trackFavorites }} </div> - <div class="label"><translate :translate-context="'Content/About/Paragraph/Unit'">Tracks favorited</translate></div> + <div class="label"><translate translate-context="Content/About/Paragraph/Unit">Tracks favorited</translate></div> </div> </div> </div> <div class="column"> - <h3 class="ui left aligned header"><translate :translate-context="'Content/About/Title/Noun'">Library</translate></h3> + <h3 class="ui left aligned header"><translate translate-context="Content/About/Title/Noun">Library</translate></h3> <div class="ui mini horizontal statistics"> <div class="statistic"> <div class="value"> {{ parseInt(stats.musicDuration) }} </div> - <div class="label"><translate :translate-context="'Content/About/Paragraph/Unit'">Hours of music</translate></div> + <div class="label"><translate translate-context="Content/About/Paragraph/Unit">Hours of music</translate></div> </div> <div class="statistic"> <div class="value"> {{ stats.artists }} </div> - <div class="label"><translate :translate-context="'Content/About/Paragraph/Unit'">Artists</translate></div> + <div class="label"><translate translate-context="Content/About/Paragraph/Unit">Artists</translate></div> </div> <div class="statistic"> <div class="value"> {{ stats.albums }} </div> - <div class="label"><translate :translate-context="'Content/About/Paragraph/Unit'">Albums</translate></div> + <div class="label"><translate translate-context="Content/About/Paragraph/Unit">Albums</translate></div> </div> <div class="statistic"> <div class="value"> {{ stats.tracks }} </div> - <div class="label"><translate :translate-context="'Content/About/Paragraph/Unit'">Tracks</translate></div> + <div class="label"><translate translate-context="Content/About/Paragraph/Unit">Tracks</translate></div> </div> </div> </div> diff --git a/front/src/components/library/Album.vue b/front/src/components/library/Album.vue index 55190a3d3..3f5851e3d 100644 --- a/front/src/components/library/Album.vue +++ b/front/src/components/library/Album.vue @@ -15,27 +15,27 @@ </h2> <div class="ui hidden divider"></div> <play-button class="orange" :tracks="album.tracks"> - <translate :translate-context="'Content/*/Button.Label/Verb, Short'">Play all</translate> + <translate translate-context="Content/*/Button.Label/Verb, Short">Play all</translate> </play-button> <a :href="wikipediaUrl" target="_blank" class="ui icon labeled button"> <i class="wikipedia w icon"></i> - <translate :translate-context="'Content/*/Button.Label/Verb'">Search on Wikipedia</translate> + <translate translate-context="Content/*/Button.Label/Verb">Search on Wikipedia</translate> </a> <a v-if="musicbrainzUrl" :href="musicbrainzUrl" target="_blank" class="ui icon labeled button"> <i class="external icon"></i> - <translate :translate-context="'Content/*/Button.Label/Verb'">View on MusicBrainz</translate> + <translate translate-context="Content/*/Button.Label/Verb">View on MusicBrainz</translate> </a> <template v-if="publicLibraries.length > 0"> <button @click="showEmbedModal = !showEmbedModal" class="ui button icon labeled"> <i class="code icon"></i> - <translate :translate-context="'Content/*/Button.Label/Verb'">Embed</translate> + <translate translate-context="Content/*/Button.Label/Verb">Embed</translate> </button> <modal :show.sync="showEmbedModal"> <div class="header"> - <translate :translate-context="'Popup/Album/Title/Verb'">Embed this album on your website</translate> + <translate translate-context="Popup/Album/Title/Verb">Embed this album on your website</translate> </div> <div class="content"> <div class="description"> @@ -45,7 +45,7 @@ </div> <div class="actions"> <div class="ui deny button"> - <translate :translate-context="'Popup/*/Button.Label/Verb'">Cancel</translate> + <translate translate-context="Popup/*/Button.Label/Verb">Cancel</translate> </div> </div> </modal> @@ -58,10 +58,10 @@ tag="h2" class="left floated" :translate-params="{number: disc_number + 1}" - :translate-context="'Content/Album/'" + translate-context="Content/Album/" >Volume %{ number }</translate> <play-button class="right floated orange" :tracks="tracks"> - <translate :translate-context="'Content/*/Button.Label/Verb, Short'">Play all</translate> + <translate translate-context="Content/*/Button.Label/Verb, Short">Play all</translate> </play-button> <track-table :artist="album.artist" :display-position="true" :tracks="tracks"></track-table> </section> @@ -69,17 +69,17 @@ <template v-else> <section class="ui vertical stripe segment"> <h2> - <translate :translate-context="'Content/*/Title/Name'">Tracks</translate> + <translate translate-context="Content/*/Title/Name">Tracks</translate> </h2> <track-table v-if="album" :artist="album.artist" :display-position="true" :tracks="album.tracks"></track-table> </section> </template> <section class="ui vertical stripe segment"> <h2> - <translate :translate-context="'Content/*/Title/Name'">User libraries</translate> + <translate translate-context="Content/*/Title/Name">User libraries</translate> </h2> <library-widget @loaded="libraries = $event" :url="'albums/' + id + '/libraries/'"> - <translate slot="subtitle" :translate-context="'Content/Album/Paragraph'">This album is present in the following libraries:</translate> + <translate slot="subtitle" translate-context="Content/Album/Paragraph">This album is present in the following libraries:</translate> </library-widget> </section> </template> diff --git a/front/src/components/library/Albums.vue b/front/src/components/library/Albums.vue index 78014f240..ea717d775 100644 --- a/front/src/components/library/Albums.vue +++ b/front/src/components/library/Albums.vue @@ -2,18 +2,18 @@ <main v-title="labels.title"> <section class="ui vertical stripe segment"> <h2 class="ui header"> - <translate :translate-context="'Content/Album/Title'">Browsing albums</translate> + <translate translate-context="Content/Album/Title">Browsing albums</translate> </h2> <div :class="['ui', {'loading': isLoading}, 'form']"> <div class="fields"> <div class="field"> <label> - <translate :translate-context="'Content/Search/Input.Label/Verb'">Search</translate> + <translate translate-context="Content/Search/Input.Label/Verb">Search</translate> </label> <input type="text" name="search" v-model="query" :placeholder="labels.searchPlaceholder"/> </div> <div class="field"> - <label><translate :translate-context="'Content/Search/Dropdown.Label/Noun'">Ordering</translate></label> + <label><translate translate-context="Content/Search/Dropdown.Label/Noun">Ordering</translate></label> <select class="ui dropdown" v-model="ordering"> <option v-for="option in orderingOptions" :value="option[0]"> {{ sharedLabels.filters[option[1]] }} @@ -21,14 +21,14 @@ </select> </div> <div class="field"> - <label><translate :translate-context="'Content/Search/Dropdown.Label/Noun'">Ordering direction</translate></label> + <label><translate translate-context="Content/Search/Dropdown.Label/Noun">Ordering direction</translate></label> <select class="ui dropdown" v-model="orderingDirection"> - <option value="+"><translate :translate-context="'Content/Search/Dropdown'">Ascending</translate></option> - <option value="-"><translate :translate-context="'Content/Search/Dropdown'">Descending</translate></option> + <option value="+"><translate translate-context="Content/Search/Dropdown">Ascending</translate></option> + <option value="-"><translate translate-context="Content/Search/Dropdown">Descending</translate></option> </select> </div> <div class="field"> - <label><translate :translate-context="'Content/Search/Dropdown.Label/Noun'">Results per page</translate></label> + <label><translate translate-context="Content/Search/Dropdown.Label/Noun">Results per page</translate></label> <select class="ui dropdown" v-model="paginateBy"> <option :value="parseInt(12)">12</option> <option :value="parseInt(25)">25</option> diff --git a/front/src/components/library/Artist.vue b/front/src/components/library/Artist.vue index b23153d22..f32f2c729 100644 --- a/front/src/components/library/Artist.vue +++ b/front/src/components/library/Artist.vue @@ -11,7 +11,7 @@ <div class="content"> {{ artist.name }} <div class="sub header" v-if="albums"> - <translate :translate-context="'Content/Artist/Paragraph'" + <translate translate-context="Content/Artist/Paragraph" tag="div" translate-plural="%{ count } tracks in %{ albumsCount } albums" :translate-n="totalTracks" @@ -24,27 +24,27 @@ <div class="ui hidden divider"></div> <radio-button type="artist" :object-id="artist.id"></radio-button> <play-button :is-playable="isPlayable" class="orange" :artist="artist"> - <translate :translate-context="'Content/Artist/Button.Label/Verb'">Play all albums</translate> + <translate translate-context="Content/Artist/Button.Label/Verb">Play all albums</translate> </play-button> <a :href="wikipediaUrl" target="_blank" class="ui icon labeled button"> <i class="wikipedia w icon"></i> - <translate :translate-context="'Content/*/Button.Label/Verb'">Search on Wikipedia</translate> + <translate translate-context="Content/*/Button.Label/Verb">Search on Wikipedia</translate> </a> <a v-if="musicbrainzUrl" :href="musicbrainzUrl" target="_blank" class="ui button"> <i class="external icon"></i> - <translate :translate-context="'Content/*/Button.Label/Verb'">View on MusicBrainz</translate> + <translate translate-context="Content/*/Button.Label/Verb">View on MusicBrainz</translate> </a> <template v-if="publicLibraries.length > 0"> <button @click="showEmbedModal = !showEmbedModal" class="ui button icon labeled"> <i class="code icon"></i> - <translate :translate-context="'Content/*/Button.Label/Verb'">Embed</translate> + <translate translate-context="Content/*/Button.Label/Verb">Embed</translate> </button> <modal :show.sync="showEmbedModal"> <div class="header"> - <translate :translate-context="'Popup/Artist/Title/Verb'">Embed this artist work on your website</translate> + <translate translate-context="Popup/Artist/Title/Verb">Embed this artist work on your website</translate> </div> <div class="content"> <div class="description"> @@ -54,7 +54,7 @@ </div> <div class="actions"> <div class="ui deny button"> - <translate :translate-context="'Popup/*/Button.Label/Verb'">Cancel</translate> + <translate translate-context="Popup/*/Button.Label/Verb">Cancel</translate> </div> </div> </modal> @@ -68,10 +68,10 @@ <translate>You are currently hiding content related to this artist.</translate> </p> <router-link class="right floated" :to="{name: 'settings'}"> - <translate :translate-context="'Content/Moderation/Link'">Review my filters</translate> + <translate translate-context="Content/Moderation/Link">Review my filters</translate> </router-link> <button @click="$store.dispatch('moderation/deleteContentFilter', contentFilter.uuid)" class="ui basic tiny button"> - <translate :translate-context="'Content/Moderation/Button.Label'">Remove filter</translate> + <translate translate-context="Content/Moderation/Button.Label">Remove filter</translate> </button> </div> </div> @@ -80,7 +80,7 @@ </section> <section v-else-if="albums && albums.length > 0" class="ui vertical stripe segment"> <h2> - <translate :translate-context="'Content/Artist/Title'">Albums by this artist</translate> + <translate translate-context="Content/Artist/Title">Albums by this artist</translate> </h2> <div class="ui cards" > <album-card :mode="'rich'" :album="album" :key="album.id" v-for="album in albums"></album-card> @@ -88,16 +88,16 @@ </section> <section v-if="tracks.length > 0" class="ui vertical stripe segment"> <h2> - <translate :translate-context="'Content/Artist/Title'">Tracks by this artist</translate> + <translate translate-context="Content/Artist/Title">Tracks by this artist</translate> </h2> <track-table :display-position="true" :tracks="tracks"></track-table> </section> <section class="ui vertical stripe segment"> <h2> - <translate :translate-context="'Content/Artist/Title'">User libraries</translate> + <translate translate-context="Content/Artist/Title">User libraries</translate> </h2> <library-widget @loaded="libraries = $event" :url="'artists/' + id + '/libraries/'"> - <translate :translate-context="'Content/Artist/Paragraph'" slot="subtitle">This artist is present in the following libraries:</translate> + <translate translate-context="Content/Artist/Paragraph" slot="subtitle">This artist is present in the following libraries:</translate> </library-widget> </section> </template> diff --git a/front/src/components/library/Artists.vue b/front/src/components/library/Artists.vue index 64e5ab6c9..f5f1dc478 100644 --- a/front/src/components/library/Artists.vue +++ b/front/src/components/library/Artists.vue @@ -2,18 +2,18 @@ <main v-title="labels.title"> <section class="ui vertical stripe segment"> <h2 class="ui header"> - <translate :translate-context="'Content/Artist/Title'">Browsing artists</translate> + <translate translate-context="Content/Artist/Title">Browsing artists</translate> </h2> <div :class="['ui', {'loading': isLoading}, 'form']"> <div class="fields"> <div class="field"> <label> - <translate :translate-context="'Content/Search/Input.Label/Verb'">Search</translate> + <translate translate-context="Content/Search/Input.Label/Verb">Search</translate> </label> <input type="text" name="search" v-model="query" :placeholder="labels.searchPlaceholder"/> </div> <div class="field"> - <label><translate :translate-context="'Content/Search/Dropdown.Label/Noun'">Ordering</translate></label> + <label><translate translate-context="Content/Search/Dropdown.Label/Noun">Ordering</translate></label> <select class="ui dropdown" v-model="ordering"> <option v-for="option in orderingOptions" :value="option[0]"> {{ sharedLabels.filters[option[1]] }} @@ -21,14 +21,14 @@ </select> </div> <div class="field"> - <label><translate :translate-context="'Content/Search/Dropdown.Label/Noun'">Ordering direction</translate></label> + <label><translate translate-context="Content/Search/Dropdown.Label/Noun">Ordering direction</translate></label> <select class="ui dropdown" v-model="orderingDirection"> - <option value="+"><translate :translate-context="'Content/Search/Dropdown'">Ascending</translate></option> - <option value="-"><translate :translate-context="'Content/Search/Dropdown'">Descending</translate></option> + <option value="+"><translate translate-context="Content/Search/Dropdown">Ascending</translate></option> + <option value="-"><translate translate-context="Content/Search/Dropdown">Descending</translate></option> </select> </div> <div class="field"> - <label><translate :translate-context="'Content/Search/Dropdown.Label'">Results per page</translate></label> + <label><translate translate-context="Content/Search/Dropdown.Label">Results per page</translate></label> <select class="ui dropdown" v-model="paginateBy"> <option :value="parseInt(12)">12</option> <option :value="parseInt(25)">25</option> diff --git a/front/src/components/library/EditCard.vue b/front/src/components/library/EditCard.vue index 88a512373..e3ef71a9b 100644 --- a/front/src/components/library/EditCard.vue +++ b/front/src/components/library/EditCard.vue @@ -3,7 +3,7 @@ <div class="content"> <div class="header"> <router-link :to="detailUrl"> - <translate :translate-context="'Content/Library/Card/Short'" :translate-params="{id: obj.uuid.substring(0, 8)}">Modification %{ id }</translate> + <translate translate-context="Content/Library/Card/Short" :translate-params="{id: obj.uuid.substring(0, 8)}">Modification %{ id }</translate> </router-link> </div> <div class="meta"> @@ -11,7 +11,7 @@ v-if="obj.target && obj.target.type === 'track'" :to="{name: 'library.tracks.detail', params: {id: obj.target.id }}"> <i class="music icon"></i> - <translate :translate-context="'Content/Library/Card/Short'" :translate-params="{id: obj.target.id, name: obj.target.repr}">Track #%{ id } - %{ name }</translate> + <translate translate-context="Content/Library/Card/Short" :translate-params="{id: obj.target.id, name: obj.target.repr}">Track #%{ id } - %{ name }</translate> </router-link> <br> <human-date :date="obj.creation_date" :icon="true"></human-date> @@ -19,19 +19,19 @@ <span class="right floated"> <span v-if="obj.is_approved && obj.is_applied"> <i class="green check icon"></i> - <translate :translate-context="'Content/Library/Card/Short'">Approved and applied</translate> + <translate translate-context="Content/Library/Card/Short">Approved and applied</translate> </span> <span v-else-if="obj.is_approved"> <i class="green check icon"></i> - <translate :translate-context="'Content/Library/Card/Short'">Approved</translate> + <translate translate-context="Content/Library/Card/Short">Approved</translate> </span> <span v-else-if="obj.is_approved === null"> <i class="yellow hourglass icon"></i> - <translate :translate-context="'Content/Library/Card/Short'">Pending review</translate> + <translate translate-context="Content/Library/Card/Short">Pending review</translate> </span> <span v-else-if="obj.is_approved === false"> <i class="red x icon"></i> - <translate :translate-context="'Content/Library/Card/Short'">Rejected</translate> + <translate translate-context="Content/Library/Card/Short">Rejected</translate> </span> </span> </div> @@ -43,9 +43,9 @@ <table v-if="obj.type === 'update'" class="ui celled very basic fixed stacking table"> <thead> <tr> - <th><translate :translate-context="'Content/Library/Card.Table.Header/Short'">Field</translate></th> - <th><translate :translate-context="'Content/Library/Card.Table.Header/Short'">Old value</translate></th> - <th><translate :translate-context="'Content/Library/Card.Table.Header/Short'">New value</translate></th> + <th><translate translate-context="Content/Library/Card.Table.Header/Short">Field</translate></th> + <th><translate translate-context="Content/Library/Card.Table.Header/Short">Old value</translate></th> + <th><translate translate-context="Content/Library/Card.Table.Header/Short">New value</translate></th> </tr> </thead> <tbody> @@ -58,7 +58,7 @@ </span> </td> <td v-else> - <translate :translate-context="'*/*/*'">N/A</translate> + <translate translate-context="*/*/*">N/A</translate> </td> <td v-if="field.diff"> @@ -79,24 +79,24 @@ v-if="canApprove && obj.is_approved !== true" @click="approve(true)" :class="['ui', {loading: isLoading}, 'green', 'basic', 'button']"> - <translate :translate-context="'Content/Library/Button.Label'">Approve</translate> + <translate translate-context="Content/Library/Button.Label">Approve</translate> </button> <button v-if="canApprove && obj.is_approved === null" @click="approve(false)" :class="['ui', {loading: isLoading}, 'yellow', 'basic', 'button']"> - <translate :translate-context="'Content/Library/Button.Label'">Reject</translate> + <translate translate-context="Content/Library/Button.Label">Reject</translate> </button> <dangerous-button v-if="canDelete" :class="['ui', {loading: isLoading}, 'basic button']" :action="remove"> - <translate :translate-context="'*/*/*/Verb'">Delete</translate> - <p slot="modal-header"><translate :translate-context="'Popup/Library/Title'">Delete this suggestion?</translate></p> + <translate translate-context="*/*/*/Verb">Delete</translate> + <p slot="modal-header"><translate translate-context="Popup/Library/Title">Delete this suggestion?</translate></p> <div slot="modal-content"> - <p><translate :translate-context="'Popup/Library/Paragraph'">The suggestion will be completely removed, this action is irreversible.</translate></p> + <p><translate translate-context="Popup/Library/Paragraph">The suggestion will be completely removed, this action is irreversible.</translate></p> </div> - <p slot="modal-confirm"><translate :translate-context="'Popup/Library/Button.Label'">Delete</translate></p> + <p slot="modal-confirm"><translate translate-context="Popup/Library/Button.Label">Delete</translate></p> </dangerous-button> </div> </div> diff --git a/front/src/components/library/EditForm.vue b/front/src/components/library/EditForm.vue index e98a4a656..55013293f 100644 --- a/front/src/components/library/EditForm.vue +++ b/front/src/components/library/EditForm.vue @@ -1,11 +1,11 @@ <template> <div v-if="submittedMutation"> <div class="ui positive message"> - <div class="header"><translate :translate-context="'Content/Library/Paragraph'">Your edit was successfully submitted.</translate></div> + <div class="header"><translate translate-context="Content/Library/Paragraph">Your edit was successfully submitted.</translate></div> </div> <edit-card :obj="submittedMutation" :current-state="currentState" /> <button class="ui button" @click.prevent="submittedMutation = null"> - <translate :translate-context="'Content/Library/Button.Label'"> + <translate translate-context="Content/Library/Button.Label"> Submit another edit </translate> </button> @@ -15,28 +15,28 @@ <edit-list :filters="editListFilters" :url="mutationsUrl" :obj="object" :currentState="currentState"> <div slot="title"> <template v-if="showPendingReview"> - <translate :translate-context="'Content/Library/Paragraph'"> + <translate translate-context="Content/Library/Paragraph"> Recent edits awaiting review </translate> <button class="ui tiny basic right floated button" @click.prevent="showPendingReview = false"> - <translate :translate-context="'Content/Library/Button.Label'"> + <translate translate-context="Content/Library/Button.Label"> Show all edits </translate> </button> </template> <template v-else> - <translate :translate-context="'Content/Library/Paragraph'"> + <translate translate-context="Content/Library/Paragraph"> Recent edits </translate> <button class="ui tiny basic right floated button" @click.prevent="showPendingReview = true"> - <translate :translate-context="'Content/Library/Button.Label'"> + <translate translate-context="Content/Library/Button.Label"> Retrict to unreviewed edits </translate> </button> </template> </div> <empty-state slot="empty-state"> - <translate :translate-context="'Content/Library/Paragraph'"> + <translate translate-context="Content/Library/Paragraph"> Suggest a change using the form below. </translate> </empty-state> @@ -44,13 +44,13 @@ <form class="ui form" @submit.prevent="submit()"> <div class="ui hidden divider"></div> <div v-if="errors.length > 0" class="ui negative message"> - <div class="header"><translate :translate-context="'Content/Library/Error message.Title'">Error while submitting edit</translate></div> + <div class="header"><translate translate-context="Content/Library/Error message.Title">Error while submitting edit</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> </ul> </div> <div v-if="!canEdit" class="ui message"> - <translate :translate-context="'Content/Library/Paragraph'"> + <translate translate-context="Content/Library/Paragraph"> You don't have the permission to edit this object, but you can suggest changes. Once submitted, suggestions will be reviewed before approval. </translate> </div> @@ -62,12 +62,12 @@ <div v-if="values[fieldConfig.id] != initialValues[fieldConfig.id]"> <button class="ui tiny basic right floated reset button" form="noop" @click.prevent="values[fieldConfig.id] = initialValues[fieldConfig.id]"> <i class="undo icon"></i> - <translate :translate-context="'Content/Library/Button.Label'" :translate-params="{value: initialValues[fieldConfig.id]}">Reset to initial value: %{ value }</translate> + <translate translate-context="Content/Library/Button.Label" :translate-params="{value: initialValues[fieldConfig.id]}">Reset to initial value: %{ value }</translate> </button> </div> </div> <div class="field"> - <label for="summary"><translate :translate-context="'*/*/*'">Summary (optional)</translate></label> + <label for="summary"><translate translate-context="*/*/*">Summary (optional)</translate></label> <textarea name="change-summary" v-model="summary" id="change-summary" rows="3" :placeholder="labels.summaryPlaceholder"></textarea> </div> <router-link @@ -75,11 +75,11 @@ v-if="objectType === 'track'" :to="{name: 'library.tracks.detail', params: {id: object.id }}" > - <translate :translate-context="'Content/*/Button.Label'">Cancel</translate> + <translate translate-context="Content/*/Button.Label">Cancel</translate> </router-link> <button :class="['ui', {'loading': isLoading}, 'right', 'floated', 'green', 'button']" type="submit" :disabled="isLoading || !mutationPayload"> - <translate v-if="canEdit" key="1" :translate-context="'Content/Library/Button.Label/Verb'">Submit and apply edit</translate> - <translate v-else key="2" :translate-context="'Content/Library/Button.Label/Verb'">Submit suggestion</translate> + <translate v-if="canEdit" key="1" translate-context="Content/Library/Button.Label/Verb">Submit and apply edit</translate> + <translate v-else key="2" translate-context="Content/Library/Button.Label/Verb">Submit suggestion</translate> </button> </form> </div> diff --git a/front/src/components/library/FileUpload.vue b/front/src/components/library/FileUpload.vue index 8a867dadf..be5ead114 100644 --- a/front/src/components/library/FileUpload.vue +++ b/front/src/components/library/FileUpload.vue @@ -1,9 +1,9 @@ <template> <div> <div class="ui top attached tabular menu"> - <a :class="['item', {active: currentTab === 'summary'}]" @click="currentTab = 'summary'"><translate :translate-context="'Content/Library/Tab.Title/Short'">Summary</translate></a> + <a :class="['item', {active: currentTab === 'summary'}]" @click="currentTab = 'summary'"><translate translate-context="Content/Library/Tab.Title/Short">Summary</translate></a> <a :class="['item', {active: currentTab === 'uploads'}]" @click="currentTab = 'uploads'"> - <translate :translate-context="'Content/Library/Tab.Title/Short'">Uploading</translate> + <translate translate-context="Content/Library/Tab.Title/Short">Uploading</translate> <div v-if="files.length === 0" class="ui label"> 0 </div> @@ -15,7 +15,7 @@ </div> </a> <a :class="['item', {active: currentTab === 'processing'}]" @click="currentTab = 'processing'"> - <translate :translate-context="'Content/Library/Tab.Title/Short'">Processing</translate> + <translate translate-context="Content/Library/Tab.Title/Short">Processing</translate> <div v-if="processableFiles === 0" class="ui label"> 0 </div> @@ -29,19 +29,19 @@ </div> <div :class="['ui', 'bottom', 'attached', 'segment', {hidden: currentTab != 'summary'}]"> - <h2 class="ui header"><translate :translate-context="'Content/Library/Title/Verb'">Upload new tracks</translate></h2> + <h2 class="ui header"><translate translate-context="Content/Library/Title/Verb">Upload new tracks</translate></h2> <div class="ui message"> - <p><translate :translate-context="'Content/Library/Paragraph'">You are about to upload music to your library. Before proceeding, please ensure that:</translate></p> + <p><translate translate-context="Content/Library/Paragraph">You are about to upload music to your library. Before proceeding, please ensure that:</translate></p> <ul> <li v-if="library.privacy_level != 'me'"> - <translate :translate-context="'Content/Library/List item'">You are not uploading copyrighted content in a public library, otherwise you may be infringing the law</translate> + <translate translate-context="Content/Library/List item">You are not uploading copyrighted content in a public library, otherwise you may be infringing the law</translate> </li> <li> - <translate :translate-context="'Content/Library/List item'">The music files you are uploading are tagged properly.</translate> - <a href="http://picard.musicbrainz.org/" target='_blank'><translate :translate-context="'Content/Library/Link'">We recommend using Picard for that purpose.</translate></a> + <translate translate-context="Content/Library/List item">The music files you are uploading are tagged properly.</translate> + <a href="http://picard.musicbrainz.org/" target='_blank'><translate translate-context="Content/Library/Link">We recommend using Picard for that purpose.</translate></a> </li> <li> - <translate :translate-context="'Content/Library/List item'">The uploaded music files are in OGG, Flac or MP3 format</translate> + <translate translate-context="Content/Library/List item">The uploaded music files are in OGG, Flac or MP3 format</translate> </li> </ul> </div> @@ -49,14 +49,14 @@ <div class="ui form"> <div class="fields"> <div class="ui four wide field"> - <label><translate :translate-context="'Content/Library/Input.Label/Noun'">Import reference</translate></label> - <p><translate :translate-context="'Content/Library/Paragraph'">This reference will be used to group imported files together.</translate></p> + <label><translate translate-context="Content/Library/Input.Label/Noun">Import reference</translate></label> + <p><translate translate-context="Content/Library/Paragraph">This reference will be used to group imported files together.</translate></p> <input name="import-ref" type="text" v-model="importReference" /> </div> </div> </div> - <div class="ui green button" @click="currentTab = 'uploads'"><translate :translate-context="'Content/Library/Button.Label'">Proceed</translate></div> + <div class="ui green button" @click="currentTab = 'uploads'"><translate translate-context="Content/Library/Button.Label">Proceed</translate></div> </div> <div :class="['ui', 'bottom', 'attached', 'segment', {hidden: currentTab != 'uploads'}]"> <div class="ui container"> @@ -73,10 +73,10 @@ @input-file="inputFile" ref="upload"> <i class="upload icon"></i> - <translate :translate-context="'Content/Library/Paragraph/Call to action'">Click to select files to upload or drag and drop files or directories</translate> + <translate translate-context="Content/Library/Paragraph/Call to action">Click to select files to upload or drag and drop files or directories</translate> <br /> <br /> - <i><translate :translate-context="'Content/Library/Paragraph'" :translate-params="{extensions: supportedExtensions.join(', ')}">Supported extensions: %{ extensions }</translate></i> + <i><translate translate-context="Content/Library/Paragraph" :translate-params="{extensions: supportedExtensions.join(', ')}">Supported extensions: %{ extensions }</translate></i> </file-upload-widget> </div> <div v-if="files.length > 0" class="table-wrapper"> @@ -84,9 +84,9 @@ <table class="ui unstackable table"> <thead> <tr> - <th><translate :translate-context="'Content/Library/Table.Label'">Filename</translate></th> - <th><translate :translate-context="'Content/Library/Table.Label'">Size</translate></th> - <th><translate :translate-context="'Content/Library/Table.Label'">Status</translate></th> + <th><translate translate-context="Content/Library/Table.Label">Filename</translate></th> + <th><translate translate-context="Content/Library/Table.Label">Size</translate></th> + <th><translate translate-context="Content/Library/Table.Label">Status</translate></th> </tr> </thead> <tbody> @@ -100,14 +100,14 @@ </span> </span> <span v-else-if="file.success" class="ui green label"> - <translate :translate-context="'Content/Library/Table'" key="1">Uploaded</translate> + <translate translate-context="Content/Library/Table" key="1">Uploaded</translate> </span> <span v-else-if="file.active" class="ui yellow label"> - <translate :translate-context="'Content/Library/Table'" key="2">Uploading…</translate> + <translate translate-context="Content/Library/Table" key="2">Uploading…</translate> ({{ parseInt(file.progress) }}%) </span> <template v-else> - <span class="ui label"><translate :translate-context="'Content/Library/Table'" key="3">Pending</translate></span> + <span class="ui label"><translate translate-context="Content/Library/Table" key="3">Pending</translate></span> <button class="ui tiny basic red icon button" @click.prevent="$refs.upload.remove(file)"><i class="delete icon"></i></button> </template> </td> diff --git a/front/src/components/library/Home.vue b/front/src/components/library/Home.vue index 42653c3a5..d26b39b3f 100644 --- a/front/src/components/library/Home.vue +++ b/front/src/components/library/Home.vue @@ -4,17 +4,17 @@ <div class="ui stackable three column grid"> <div class="column"> <track-widget :url="'history/listenings/'" :filters="{scope: 'user', ordering: '-creation_date'}"> - <template slot="title"><translate :translate-context="'Content/Home/Title'">Recently listened</translate></template> + <template slot="title"><translate translate-context="Content/Home/Title">Recently listened</translate></template> </track-widget> </div> <div class="column"> <track-widget :url="'favorites/tracks/'" :filters="{scope: 'user', ordering: '-creation_date'}"> - <template slot="title"><translate :translate-context="'Content/Home/Title'">Recently favorited</translate></template> + <template slot="title"><translate translate-context="Content/Home/Title">Recently favorited</translate></template> </track-widget> </div> <div class="column"> <playlist-widget :url="'playlists/'" :filters="{scope: 'user', playable: true, ordering: '-creation_date'}"> - <template slot="title"><translate :translate-context="'Content/Home/Title'">Playlists</translate></template> + <template slot="title"><translate translate-context="Content/Home/Title">Playlists</translate></template> </playlist-widget> </div> </div> @@ -22,7 +22,7 @@ <div class="ui stackable one column grid"> <div class="column"> <album-widget :filters="{playable: true, ordering: '-creation_date'}"> - <template slot="title"><translate :translate-context="'Content/Home/Title'">Recently added</translate></template> + <template slot="title"><translate translate-context="Content/Home/Title">Recently added</translate></template> </album-widget> </div> </div> diff --git a/front/src/components/library/Library.vue b/front/src/components/library/Library.vue index 06fdd2bd3..bcec59dec 100644 --- a/front/src/components/library/Library.vue +++ b/front/src/components/library/Library.vue @@ -2,19 +2,19 @@ <div class="main library pusher"> <nav class="ui secondary pointing menu" role="navigation" :aria-label="labels.secondaryMenu"> <router-link class="ui item" to="/library" exact> - <translate :translate-context="'Menu/Home/Link/Verb'">Browse</translate> + <translate translate-context="Menu/Home/Link/Verb">Browse</translate> </router-link> <router-link class="ui item" to="/library/albums" exact> - <translate :translate-context="'Menu/Home/Link'">Albums</translate> + <translate translate-context="Menu/Home/Link">Albums</translate> </router-link> <router-link class="ui item" to="/library/artists" exact> - <translate :translate-context="'Menu/Home/Link'">Artists</translate> + <translate translate-context="Menu/Home/Link">Artists</translate> </router-link> <router-link class="ui item" to="/library/radios" exact> - <translate :translate-context="'Menu/Home/Link'">Radios</translate> + <translate translate-context="Menu/Home/Link">Radios</translate> </router-link> <router-link class="ui item" to="/library/playlists" exact> - <translate :translate-context="'Menu/Home/Link'">Playlists</translate> + <translate translate-context="Menu/Home/Link">Playlists</translate> </router-link> </nav> <router-view :key="$route.fullPath"></router-view> diff --git a/front/src/components/library/Radios.vue b/front/src/components/library/Radios.vue index 273d6ca79..2567dcfb8 100644 --- a/front/src/components/library/Radios.vue +++ b/front/src/components/library/Radios.vue @@ -2,12 +2,12 @@ <main v-title="labels.title"> <section class="ui vertical stripe segment"> <h2 class="ui header"> - <translate :translate-context="'Content/Radio/Title'">Browsing radios</translate> + <translate translate-context="Content/Radio/Title">Browsing radios</translate> </h2> <div class="ui hidden divider"></div> <div class="ui row"> <h3 class="ui header"> - <translate :translate-context="'Content/Radio/Title'">Instance radios</translate> + <translate translate-context="Content/Radio/Title">Instance radios</translate> </h3> <div class="ui cards"> <radio-card :type="'favorites'"></radio-card> @@ -18,20 +18,20 @@ <div class="ui hidden divider"></div> <h3 class="ui header"> - <translate :translate-context="'Content/Radio/Title'">User radios</translate> + <translate translate-context="Content/Radio/Title">User radios</translate> </h3> <router-link class="ui green basic button" to="/library/radios/build" exact> - <translate :translate-context="'Content/Radio/Button.Label/Verb'">Create your own radio</translate> + <translate translate-context="Content/Radio/Button.Label/Verb">Create your own radio</translate> </router-link> <div class="ui hidden divider"></div> <div :class="['ui', {'loading': isLoading}, 'form']"> <div class="fields"> <div class="field"> - <label><translate :translate-context="'Content/Search/Input.Label/Verb'">Search</translate></label> + <label><translate translate-context="Content/Search/Input.Label/Verb">Search</translate></label> <input name="search" type="text" v-model="query" :placeholder="labels.searchPlaceholder"/> </div> <div class="field"> - <label><translate :translate-context="'Content/Search/Dropdown.Label'">Ordering</translate></label> + <label><translate translate-context="Content/Search/Dropdown.Label">Ordering</translate></label> <select class="ui dropdown" v-model="ordering"> <option v-for="option in orderingOptions" :value="option[0]"> {{ sharedLabels.filters[option[1]] }} @@ -39,18 +39,18 @@ </select> </div> <div class="field"> - <label><translate :translate-context="'Content/Search/Dropdown.Label'">Order</translate></label> + <label><translate translate-context="Content/Search/Dropdown.Label">Order</translate></label> <select class="ui dropdown" v-model="orderingDirection"> <option value="+"> - <translate :translate-context="'Content/Search/Dropdown'">Ascending</translate> + <translate translate-context="Content/Search/Dropdown">Ascending</translate> </option> <option value="-"> - <translate :translate-context="'Content/Search/Dropdown'">Descending</translate> + <translate translate-context="Content/Search/Dropdown">Descending</translate> </option> </select> </div> <div class="field"> - <label><translate :translate-context="'Content/Search/Dropdown.Label'">Results per page</translate></label> + <label><translate translate-context="Content/Search/Dropdown.Label">Results per page</translate></label> <select class="ui dropdown" v-model="paginateBy"> <option :value="parseInt(12)">12</option> <option :value="parseInt(25)">25</option> diff --git a/front/src/components/library/TrackBase.vue b/front/src/components/library/TrackBase.vue index c0209732d..34ce4a295 100644 --- a/front/src/components/library/TrackBase.vue +++ b/front/src/components/library/TrackBase.vue @@ -15,7 +15,7 @@ <div class="content"> {{ track.title }} <div class="sub header"> - <div :translate-context="'Content/Track/Paragraph'" + <div translate-context="Content/Track/Paragraph" v-translate="{album: track.album.title, artist: track.artist.name, albumUrl: albumUrl, artistUrl: artistUrl}" >From album <a class="internal" href="%{ albumUrl }">%{ album }</a> by <a class="internal" href="%{ artistUrl }">%{ artist }</a></div> </div> @@ -23,33 +23,33 @@ </h2> <play-button class="orange" :track="track"> - <translate :translate-context="'*/Queue/Button.Label/Short, Verb'">Play</translate> + <translate translate-context="*/Queue/Button.Label/Short, Verb">Play</translate> </play-button> <track-favorite-icon :track="track" :button="true"></track-favorite-icon> <track-playlist-icon :button="true" v-if="$store.state.auth.authenticated" :track="track"></track-playlist-icon> <a :href="wikipediaUrl" target="_blank" class="ui icon labeled button"> <i class="wikipedia w icon"></i> - <translate :translate-context="'Content/*/Link/Verb'">Search on Wikipedia</translate> + <translate translate-context="Content/*/Link/Verb">Search on Wikipedia</translate> </a> <a v-if="musicbrainzUrl" :href="musicbrainzUrl" target="_blank" class="ui icon labeled button"> <i class="external icon"></i> - <translate :translate-context="'Content/*/Link/Verb'">View on MusicBrainz</translate> + <translate translate-context="Content/*/Link/Verb">View on MusicBrainz</translate> </a> <a v-if="upload" :href="downloadUrl" target="_blank" class="ui icon labeled button"> <i class="download icon"></i> - <translate :translate-context="'Content/Track/Link/Verb'">Download</translate> + <translate translate-context="Content/Track/Link/Verb">Download</translate> </a> <template v-if="publicLibraries.length > 0"> <button @click="showEmbedModal = !showEmbedModal" class="ui icon labeled button"> <i class="code icon"></i> - <translate :translate-context="'Content/Track/Button.Label/Verb'">Embed</translate> + <translate translate-context="Content/Track/Button.Label/Verb">Embed</translate> </button> <modal :show.sync="showEmbedModal"> <div class="header"> - <translate :translate-context="'Popup/Track/Title'">Embed this track on your website</translate> + <translate translate-context="Popup/Track/Title">Embed this track on your website</translate> </div> <div class="content"> <div class="description"> @@ -59,7 +59,7 @@ </div> <div class="actions"> <div class="ui deny button"> - <translate :translate-context="'Popup/Track/Button/Verb'">Cancel</translate> + <translate translate-context="Popup/Track/Button/Verb">Cancel</translate> </div> </div> </modal> @@ -68,7 +68,7 @@ :to="{name: 'library.tracks.edit', params: {id: track.id }}" class="ui icon labeled button"> <i class="edit icon"></i> - <translate :translate-context="'Content/Track/Button.Label/Verb'">Edit…</translate> + <translate translate-context="Content/Track/Button.Label/Verb">Edit…</translate> </router-link> </div> </section> diff --git a/front/src/components/library/TrackDetail.vue b/front/src/components/library/TrackDetail.vue index 7f6d27dc1..8f65a7d0d 100644 --- a/front/src/components/library/TrackDetail.vue +++ b/front/src/components/library/TrackDetail.vue @@ -3,64 +3,64 @@ <div v-if="track"> <section class="ui vertical stripe center aligned segment"> <h2 class="ui header"> - <translate :translate-context="'Content/Track/Title/Noun'">Track information</translate> + <translate translate-context="Content/Track/Title/Noun">Track information</translate> </h2> <table class="ui very basic collapsing celled center aligned table"> <tbody> <tr> <td> - <translate :translate-context="'Content/Track/Table.Label/Noun'">Copyright</translate> + <translate translate-context="Content/Track/Table.Label/Noun">Copyright</translate> </td> <td v-if="track.copyright" :title="track.copyright">{{ track.copyright|truncate(50) }}</td> <td v-else> - <translate :translate-context="'Content/Track/Table.Paragraph'">No copyright information available for this track</translate> + <translate translate-context="Content/Track/Table.Paragraph">No copyright information available for this track</translate> </td> </tr> <tr> <td> - <translate :translate-context="'Content/Track/Table.Label/Noun'">License</translate> + <translate translate-context="Content/Track/Table.Label/Noun">License</translate> </td> <td v-if="license"> <a :href="license.url" target="_blank" rel="noopener noreferrer">{{ license.name }}</a> </td> <td v-else> - <translate :translate-context="'Content/Track/Table.Paragraph'">No licensing information for this track</translate> + <translate translate-context="Content/Track/Table.Paragraph">No licensing information for this track</translate> </td> </tr> <tr> <td> - <translate :translate-context="'Content/Track/Table.Label'">Duration</translate> + <translate translate-context="Content/Track/Table.Label">Duration</translate> </td> <td v-if="upload && upload.duration">{{ time.parse(upload.duration) }}</td> <td v-else> - <translate :translate-context="'*/*/*'">N/A</translate> + <translate translate-context="*/*/*">N/A</translate> </td> </tr> <tr> <td> - <translate :translate-context="'Content/Track/Table.Label'">Size</translate> + <translate translate-context="Content/Track/Table.Label">Size</translate> </td> <td v-if="upload && upload.size">{{ upload.size | humanSize }}</td> <td v-else> - <translate :translate-context="'*/*/*'">N/A</translate> + <translate translate-context="*/*/*">N/A</translate> </td> </tr> <tr> <td> - <translate :translate-context="'Content/Track/Table.Label'">Bitrate</translate> + <translate translate-context="Content/Track/Table.Label">Bitrate</translate> </td> <td v-if="upload && upload.bitrate">{{ upload.bitrate | humanSize }}/s</td> <td v-else> - <translate :translate-context="'*/*/*'">N/A</translate> + <translate translate-context="*/*/*">N/A</translate> </td> </tr> <tr> <td> - <translate :translate-context="'Content/Track/Table.Label/Noun'">Type</translate> + <translate translate-context="Content/Track/Table.Label/Noun">Type</translate> </td> <td v-if="upload && upload.extension">{{ upload.extension }}</td> <td v-else> - <translate :translate-context="'*/*/*'">N/A</translate> + <translate translate-context="*/*/*">N/A</translate> </td> </tr> </tbody> @@ -68,7 +68,7 @@ </section> <section class="ui vertical stripe center aligned segment"> <h2> - <translate :translate-context="'Content/Track/Title'">Lyrics</translate> + <translate translate-context="Content/Track/Title">Lyrics</translate> </h2> <div v-if="isLoadingLyrics" class="ui vertical segment"> <div :class="['ui', 'centered', 'active', 'inline', 'loader']"></div> @@ -76,20 +76,20 @@ <div v-if="lyrics" v-html="lyrics.content_rendered"></div> <template v-if="!isLoadingLyrics & !lyrics"> <p> - <translate :translate-context="'Content/Track/Paragraph'">No lyrics available for this track.</translate> + <translate translate-context="Content/Track/Paragraph">No lyrics available for this track.</translate> </p> <a class="ui button" target="_blank" :href="lyricsSearchUrl"> <i class="search icon"></i> - <translate :translate-context="'Content/Track/Link/Verb'">Search on lyrics.wikia.com</translate> + <translate translate-context="Content/Track/Link/Verb">Search on lyrics.wikia.com</translate> </a> </template> </section> <section class="ui vertical stripe segment"> <h2> - <translate :translate-context="'Content/Track/Title'">User libraries</translate> + <translate translate-context="Content/Track/Title">User libraries</translate> </h2> <library-widget @loaded="$emit('libraries-loaded', $event)" :url="'tracks/' + id + '/libraries/'"> - <translate :translate-context="'Content/Track/Paragraph'" slot="subtitle">This track is present in the following libraries:</translate> + <translate translate-context="Content/Track/Paragraph" slot="subtitle">This track is present in the following libraries:</translate> </library-widget> </section> </div> diff --git a/front/src/components/library/TrackEdit.vue b/front/src/components/library/TrackEdit.vue index 40178e6ed..7e26d1df1 100644 --- a/front/src/components/library/TrackEdit.vue +++ b/front/src/components/library/TrackEdit.vue @@ -3,8 +3,8 @@ <section class="ui vertical stripe segment"> <div class="ui text container"> <h2> - <translate v-if="canEdit" key="1" :translate-context="'Content/*/Title'">Edit this track</translate> - <translate v-else key="2" :translate-context="'Content/*/Title'">Suggest an edit on this track</translate> + <translate v-if="canEdit" key="1" translate-context="Content/*/Title">Edit this track</translate> + <translate v-else key="2" translate-context="Content/*/Title">Suggest an edit on this track</translate> </h2> <edit-form :object-type="objectType" :object="object" :can-edit="canEdit"></edit-form> </div> diff --git a/front/src/components/library/radios/Builder.vue b/front/src/components/library/radios/Builder.vue index 66161d15c..58e7b9f09 100644 --- a/front/src/components/library/radios/Builder.vue +++ b/front/src/components/library/radios/Builder.vue @@ -3,53 +3,53 @@ <div> <section> <h2 class="ui header"> - <translate :translate-context="'Content/Radio/Title'">Builder</translate> + <translate translate-context="Content/Radio/Title">Builder</translate> </h2> - <p><translate :translate-context="'Content/Radio/Paragraph'">You can use this interface to build your own custom radio, which will play tracks according to your criteria.</translate></p> + <p><translate translate-context="Content/Radio/Paragraph">You can use this interface to build your own custom radio, which will play tracks according to your criteria.</translate></p> <div class="ui form"> <div v-if="success" class="ui positive message"> <div class="header"> <template v-if="radioName"> - <translate :translate-context="'Content/Radio/Message'">Radio updated</translate> + <translate translate-context="Content/Radio/Message">Radio updated</translate> </template> <template v-else> - <translate :translate-context="'Content/Radio/Message'">Radio created</translate> + <translate translate-context="Content/Radio/Message">Radio created</translate> </template> </div> </div> <div class=""> <div class="field"> - <label for="name"><translate :translate-context="'Content/Radio/Input.Label/Noun'">Radio name</translate></label> + <label for="name"><translate translate-context="Content/Radio/Input.Label/Noun">Radio name</translate></label> <input id="name" name="name" type="text" v-model="radioName" :placeholder="labels.placeholder.name" /> </div> <div class="field"> - <label for="description"><translate :translate-context="'Content/Radio/Input.Label'">Description</translate></label> + <label for="description"><translate translate-context="Content/Radio/Input.Label">Description</translate></label> <textarea rows="2" id="description" type="text" v-model="radioDesc" :placeholder="labels.placeholder.description" /> </div> <div class="ui toggle checkbox"> <input id="public" type="checkbox" v-model="isPublic" /> - <label for="public"><translate :translate-context="'Content/Radio/Checkbox.Label/Verb'">Display publicly</translate></label> + <label for="public"><translate translate-context="Content/Radio/Checkbox.Label/Verb">Display publicly</translate></label> </div> <div class="ui hidden divider"></div> <button :disabled="!canSave" @click="save" :class="['ui', 'green', {loading: isLoading}, 'button']"> - <translate :translate-context="'Content/Radio/Button.Label/Verb'">Save</translate> + <translate translate-context="Content/Radio/Button.Label/Verb">Save</translate> </button> <radio-button v-if="id" type="custom" :custom-radio-id="id"></radio-button> </div> </div> <div class="ui form"> <p> - <translate :translate-context="'Content/Radio/Paragraph'">Add filters to customize your radio</translate> + <translate translate-context="Content/Radio/Paragraph">Add filters to customize your radio</translate> </p> <div class="inline field"> <select class="ui dropdown" v-model="currentFilterType"> <option value=""> - <translate :translate-context="'Content/Radio/Dropdown.Placeholder/Verb'">Select a filter</translate> + <translate translate-context="Content/Radio/Dropdown.Placeholder/Verb">Select a filter</translate> </option> <option v-for="f in availableFilters" :value="f.type">{{ f.label }}</option> </select> <button :disabled="!currentFilterType" @click="add" class="ui button"> - <translate :translate-context="'Content/Radio/Button.Label/Verb'">Add filter</translate> + <translate translate-context="Content/Radio/Button.Label/Verb">Add filter</translate> </button> </div> <p v-if="currentFilter"> @@ -59,11 +59,11 @@ <table class="ui table"> <thead> <tr> - <th class="two wide"><translate :translate-context="'Content/Radio/Table.Label/Noun'">Filter name</translate></th> - <th class="one wide"><translate :translate-context="'Content/Radio/Table.Label/Verb'">Exclude</translate></th> - <th class="six wide"><translate :translate-context="'Content/Radio/Table.Label/Verb (Value is a List of Parameters)'">Config</translate></th> - <th class="five wide"><translate :translate-context="'Content/Radio/Table.Label/Noun (Value is a number of Tracks)'">Candidates</translate></th> - <th class="two wide"><translate :translate-context="'Content/Radio/Table.Label/Noun (Value is a Button)'">Actions</translate></th> + <th class="two wide"><translate translate-context="Content/Radio/Table.Label/Noun">Filter name</translate></th> + <th class="one wide"><translate translate-context="Content/Radio/Table.Label/Verb">Exclude</translate></th> + <th class="six wide"><translate translate-context="Content/Radio/Table.Label/Verb (Value is a List of Parameters)">Config</translate></th> + <th class="five wide"><translate translate-context="Content/Radio/Table.Label/Noun (Value is a number of Tracks)">Candidates</translate></th> + <th class="two wide"><translate translate-context="Content/Radio/Table.Label/Noun (Value is a Button)">Actions</translate></th> </tr> </thead> <tbody> diff --git a/front/src/components/library/radios/Filter.vue b/front/src/components/library/radios/Filter.vue index ad1fb2de4..f9e158320 100644 --- a/front/src/components/library/radios/Filter.vue +++ b/front/src/components/library/radios/Filter.vue @@ -42,7 +42,7 @@ </span> <modal v-if="checkResult" :show.sync="showCandidadesModal"> <div class="header"> - <translate :translate-context="'Popup/Radio/Title/Noun'">Tracks matching filter</translate> + <translate translate-context="Popup/Radio/Title/Noun">Tracks matching filter</translate> </div> <div class="content"> <div class="description"> @@ -51,13 +51,13 @@ </div> <div class="actions"> <div class="ui black deny button"> - <translate :translate-context="'Popup/Radio/Button.Label/Verb'">Cancel</translate> + <translate translate-context="Popup/Radio/Button.Label/Verb">Cancel</translate> </div> </div> </modal> </td> <td> - <button @click="$emit('delete', index)" class="ui basic red button"><translate :translate-context="'Content/Radio/Button.Label/Verb'">Remove</translate></button> + <button @click="$emit('delete', index)" class="ui basic red button"><translate translate-context="Content/Radio/Button.Label/Verb">Remove</translate></button> </td> </tr> </template> diff --git a/front/src/components/manage/library/EditsCardList.vue b/front/src/components/manage/library/EditsCardList.vue index 8e51ff0f0..c66cfeaa2 100644 --- a/front/src/components/manage/library/EditsCardList.vue +++ b/front/src/components/manage/library/EditsCardList.vue @@ -4,30 +4,30 @@ <div class="ui inline form"> <div class="fields"> <div class="ui field"> - <label><translate :translate-context="'Content/Search/Input.Label/Noun'">Search</translate></label> + <label><translate translate-context="Content/Search/Input.Label/Noun">Search</translate></label> <form @submit.prevent="search.query = $refs.search.value"> <input name="search" ref="search" type="text" :value="search.query" :placeholder="labels.searchPlaceholder" /> </form> </div> <div class="field"> - <label><translate :translate-context="'Content/Search/Dropdown.Label'">Status</translate></label> + <label><translate translate-context="Content/Search/Dropdown.Label">Status</translate></label> <select class="ui dropdown" @change="addSearchToken('is_approved', $event.target.value)" :value="getTokenValue('is_approved', '')"> <option value=""> - <translate :translate-context="'Content/Admin/Dropdown'">All</translate> + <translate translate-context="Content/Admin/Dropdown">All</translate> </option> <option value="null"> - <translate :translate-context="'Content/Admin/Dropdown'">Pending review</translate> + <translate translate-context="Content/Admin/Dropdown">Pending review</translate> </option> <option value="yes"> - <translate :translate-context="'Content/Admin/Dropdown'">Approved</translate> + <translate translate-context="Content/Admin/Dropdown">Approved</translate> </option> <option value="no"> - <translate :translate-context="'Content/Admin/Dropdown'">Rejected</translate> + <translate translate-context="Content/Admin/Dropdown">Rejected</translate> </option> </select> </div> <div class="field"> - <label><translate :translate-context="'Content/Search/Dropdown.Label'">Ordering</translate></label> + <label><translate translate-context="Content/Search/Dropdown.Label">Ordering</translate></label> <select class="ui dropdown" v-model="ordering"> <option v-for="option in orderingOptions" :value="option[0]"> {{ sharedLabels.filters[option[1]] }} @@ -35,10 +35,10 @@ </select> </div> <div class="field"> - <label><translate :translate-context="'Content/Search/Dropdown.Label/Noun'">Order</translate></label> + <label><translate translate-context="Content/Search/Dropdown.Label/Noun">Order</translate></label> <select class="ui dropdown" v-model="orderingDirection"> - <option value="+"><translate :translate-context="'Content/Search/Dropdown'">Ascending</translate></option> - <option value="-"><translate :translate-context="'Content/Search/Dropdown'">Descending</translate></option> + <option value="+"><translate translate-context="Content/Search/Dropdown">Ascending</translate></option> + <option value="-"><translate translate-context="Content/Search/Dropdown">Descending</translate></option> </select> </div> </div> @@ -70,7 +70,7 @@ ></pagination> <span v-if="result && result.results.length > 0"> - <translate :translate-context="'Content/Library/Paragraph'" + <translate translate-context="Content/Library/Paragraph" :translate-params="{start: ((page-1) * paginateBy) + 1, end: ((page-1) * paginateBy) + result.results.length, total: result.count}"> Showing results %{ start }-%{ end } on %{ total } </translate> diff --git a/front/src/components/manage/moderation/AccountsTable.vue b/front/src/components/manage/moderation/AccountsTable.vue index d8897ab3b..85c316fac 100644 --- a/front/src/components/manage/moderation/AccountsTable.vue +++ b/front/src/components/manage/moderation/AccountsTable.vue @@ -3,13 +3,13 @@ <div class="ui inline form"> <div class="fields"> <div class="ui six wide field"> - <label><translate :translate-context="'Content/Search/Input.Label/Noun'">Search</translate></label> + <label><translate translate-context="Content/Search/Input.Label/Noun">Search</translate></label> <form @submit.prevent="search.query = $refs.search.value"> <input name="search" ref="search" type="text" :value="search.query" :placeholder="labels.searchPlaceholder" /> </form> </div> <div class="field"> - <label><translate :translate-context="'Content/Search/Input.Label/Noun'">Ordering</translate></label> + <label><translate translate-context="Content/Search/Input.Label/Noun">Ordering</translate></label> <select class="ui dropdown" v-model="ordering"> <option v-for="option in orderingOptions" :value="option[0]"> {{ sharedLabels.filters[option[1]] }} @@ -17,10 +17,10 @@ </select> </div> <div class="field"> - <label><translate :translate-context="'Content/Search/Input.Label/Noun'">Ordering direction</translate></label> + <label><translate translate-context="Content/Search/Input.Label/Noun">Ordering direction</translate></label> <select class="ui dropdown" v-model="orderingDirection"> - <option value="+"><translate :translate-context="'Content/Search/Dropdown'">Ascending</translate></option> - <option value="-"><translate :translate-context="'Content/Search/Dropdown'">Descending</translate></option> + <option value="+"><translate translate-context="Content/Search/Dropdown">Ascending</translate></option> + <option value="-"><translate translate-context="Content/Search/Dropdown">Descending</translate></option> </select> </div> </div> @@ -37,12 +37,12 @@ action-url="manage/accounts/action/" :filters="actionFilters"> <template slot="header-cells"> - <th><translate :translate-context="'Content/Moderation/Table.Label'">Name</translate></th> - <th><translate :translate-context="'Content/Moderation/Table.Label'">Domain</translate></th> - <th><translate :translate-context="'Content/Moderation/Table.Label/Noun'">Uploads</translate></th> - <th><translate :translate-context="'Content/Moderation/Table.Label/Noun'">First seen</translate></th> - <th><translate :translate-context="'Content/Moderation/Table.Label/Noun'">Last seen</translate></th> - <th><translate :translate-context="'Content/Moderation/Table.Label/Short, Noun'">Under moderation rule</translate></th> + <th><translate translate-context="Content/Moderation/Table.Label">Name</translate></th> + <th><translate translate-context="Content/Moderation/Table.Label">Domain</translate></th> + <th><translate translate-context="Content/Moderation/Table.Label/Noun">Uploads</translate></th> + <th><translate translate-context="Content/Moderation/Table.Label/Noun">First seen</translate></th> + <th><translate translate-context="Content/Moderation/Table.Label/Noun">Last seen</translate></th> + <th><translate translate-context="Content/Moderation/Table.Label/Short, Noun">Under moderation rule</translate></th> </template> <template slot="row-cells" slot-scope="scope"> <td> @@ -57,7 +57,7 @@ </template> <span role="button" v-else class="ui tiny teal icon link label" @click="addSearchToken('domain', scope.obj.domain)"> <i class="home icon"></i> - <translate :translate-context="'Content/Moderation/Table/Short, Noun'">Local account</translate> + <translate translate-context="Content/Moderation/Table/Short, Noun">Local account</translate> </span> </td> <td> @@ -70,7 +70,7 @@ <human-date v-if="scope.obj.last_fetch_date" :date="scope.obj.last_fetch_date"></human-date> </td> <td> - <span v-if="scope.obj.instance_policy"><i class="shield icon"></i> <translate :translate-context="'*/*/*'">Yes</translate></span> + <span v-if="scope.obj.instance_policy"><i class="shield icon"></i> <translate translate-context="*/*/*">Yes</translate></span> </td> </template> </action-table> @@ -86,7 +86,7 @@ ></pagination> <span v-if="result && result.results.length > 0"> - <translate :translate-context="'Content/Moderation/Paragraph'" + <translate translate-context="Content/Moderation/Paragraph" :translate-params="{start: ((page-1) * paginateBy) + 1, end: ((page-1) * paginateBy) + result.results.length, total: result.count}"> Showing results %{ start }-%{ end } on %{ total } </translate> diff --git a/front/src/components/manage/moderation/DomainsTable.vue b/front/src/components/manage/moderation/DomainsTable.vue index f07a1e426..66561b81c 100644 --- a/front/src/components/manage/moderation/DomainsTable.vue +++ b/front/src/components/manage/moderation/DomainsTable.vue @@ -3,11 +3,11 @@ <div class="ui inline form"> <div class="fields"> <div class="ui field"> - <label><translate :translate-context="'Content/Search/Input.Label/Verb'">Search</translate></label> + <label><translate translate-context="Content/Search/Input.Label/Verb">Search</translate></label> <input name="search" type="text" v-model="search" :placeholder="labels.searchPlaceholder" /> </div> <div class="field"> - <label><translate :translate-context="'Content/Search/Input.Label/Noun'">Ordering</translate></label> + <label><translate translate-context="Content/Search/Input.Label/Noun">Ordering</translate></label> <select class="ui dropdown" v-model="ordering"> <option v-for="option in orderingOptions" :value="option[0]"> {{ sharedLabels.filters[option[1]] }} @@ -15,10 +15,10 @@ </select> </div> <div class="field"> - <label><translate :translate-context="'Content/Search/Input.Label/Noun'">Ordering direction</translate></label> + <label><translate translate-context="Content/Search/Input.Label/Noun">Ordering direction</translate></label> <select class="ui dropdown" v-model="orderingDirection"> - <option value="+"><translate :translate-context="'Content/Search/Dropdown'">Ascending</translate></option> - <option value="-"><translate :translate-context="'Content/Search/Dropdown'">Descending</translate></option> + <option value="+"><translate translate-context="Content/Search/Dropdown">Ascending</translate></option> + <option value="-"><translate translate-context="Content/Search/Dropdown">Descending</translate></option> </select> </div> </div> @@ -36,11 +36,11 @@ idField="name" :filters="actionFilters"> <template slot="header-cells"> - <th><translate :translate-context="'Content/Moderation/Table.Label'">Name</translate></th> - <th><translate :translate-context="'Content/Moderation/Table.Label'">Users</translate></th> - <th><translate :translate-context="'Content/Moderation/Table.Label/Short, Noun'">Received messages</translate></th> - <th><translate :translate-context="'Content/Moderation/Table.Label/Short, Noun'">First seen</translate></th> - <th><translate :translate-context="'Content/Moderation/Table.Label/Short'">Under moderation rule</translate></th> + <th><translate translate-context="Content/Moderation/Table.Label">Name</translate></th> + <th><translate translate-context="Content/Moderation/Table.Label">Users</translate></th> + <th><translate translate-context="Content/Moderation/Table.Label/Short, Noun">Received messages</translate></th> + <th><translate translate-context="Content/Moderation/Table.Label/Short, Noun">First seen</translate></th> + <th><translate translate-context="Content/Moderation/Table.Label/Short">Under moderation rule</translate></th> </template> <template slot="row-cells" slot-scope="scope"> <td> @@ -56,7 +56,7 @@ <human-date :date="scope.obj.creation_date"></human-date> </td> <td> - <span v-if="scope.obj.instance_policy"><i class="shield icon"></i> <translate :translate-context="'*/*/*'">Yes</translate></span> + <span v-if="scope.obj.instance_policy"><i class="shield icon"></i> <translate translate-context="*/*/*">Yes</translate></span> </td> </template> </action-table> @@ -72,7 +72,7 @@ ></pagination> <span v-if="result && result.results.length > 0"> - <translate :translate-context="'Content/Moderation/Paragraph'" + <translate translate-context="Content/Moderation/Paragraph" :translate-params="{start: ((page-1) * paginateBy) + 1, end: ((page-1) * paginateBy) + result.results.length, total: result.count}"> Showing results %{ start }-%{ end } on %{ total } </translate> diff --git a/front/src/components/manage/moderation/InstancePolicyCard.vue b/front/src/components/manage/moderation/InstancePolicyCard.vue index f88f0487e..07e6e948d 100644 --- a/front/src/components/manage/moderation/InstancePolicyCard.vue +++ b/front/src/components/manage/moderation/InstancePolicyCard.vue @@ -6,44 +6,44 @@ <i class="user icon"></i>{{ object.actor }} <template v-if="object.is_active"> <i class="play icon"></i> - <translate :translate-context="'*/*/*'">Enabled</translate> + <translate translate-context="*/*/*">Enabled</translate> </template> <template v-if="!object.is_active"> <i class="pause icon"></i> - <translate :translate-context="'Content/Moderation/Card.List item'">Paused</translate> + <translate translate-context="Content/Moderation/Card.List item">Paused</translate> </template> </p> <div> - <p><strong><translate :translate-context="'Content/Moderation/Card.Title/Noun'">Rule</translate></strong></p> + <p><strong><translate translate-context="Content/Moderation/Card.Title/Noun">Rule</translate></strong></p> <p v-if="object.block_all"> <i class="ban icon"></i> - <translate :translate-context="'Content/Moderation/Card.List item/Verb'">Block everything</translate> + <translate translate-context="Content/Moderation/Card.List item/Verb">Block everything</translate> </p> <div v-else class="ui list"> <div class="ui item" v-if="object.silence_activity"> <i class="feed icon"></i> - <div class="content"><translate :translate-context="'Content/Moderation/Card.List item/Verb'">Mute activity</translate></div> + <div class="content"><translate translate-context="Content/Moderation/Card.List item/Verb">Mute activity</translate></div> </div> <div class="ui item" v-if="object.silence_notifications"> <i class="bell icon"></i> - <div class="content"><translate :translate-context="'Content/Moderation/Card.List item/Verb'">Mute notifications</translate></div> + <div class="content"><translate translate-context="Content/Moderation/Card.List item/Verb">Mute notifications</translate></div> </div> <div class="ui item" v-if="object.reject_media"> <i class="file icon"></i> - <div class="content"><translate :translate-context="'Content/Moderation/Card.List item/Verb'">Reject media</translate></div> + <div class="content"><translate translate-context="Content/Moderation/Card.List item/Verb">Reject media</translate></div> </div> </div> </div> <div v-if="markdown && object.summary"> <div class="ui hidden divider"></div> - <p><strong><translate :translate-context="'Content/Moderation/Card.Title/Noun'">Reason</translate></strong></p> + <p><strong><translate translate-context="Content/Moderation/Card.Title/Noun">Reason</translate></strong></p> <div v-html="markdown.makeHtml(object.summary)"></div> </div> <div class="ui hidden divider"></div> <button @click="$emit('update')" class="ui right floated labeled icon button"> <i class="edit icon"></i> - <translate :translate-context="'Content/Moderation/Card.Button.Label/Verb'">Edit</translate> + <translate translate-context="Content/Moderation/Card.Button.Label/Verb">Edit</translate> </button> </div> </template> diff --git a/front/src/components/manage/moderation/InstancePolicyForm.vue b/front/src/components/manage/moderation/InstancePolicyForm.vue index 7235b9417..f7dedc55b 100644 --- a/front/src/components/manage/moderation/InstancePolicyForm.vue +++ b/front/src/components/manage/moderation/InstancePolicyForm.vue @@ -1,11 +1,11 @@ <template> <form class="ui form" @submit.prevent="createOrUpdate"> <h3 class="ui header"> - <translate :translate-context="'Content/Moderation/Card.Title/Verb'" v-if="object" key="1">Edit moderation rule</translate> - <translate :translate-context="'Content/Moderation/Card.Button.Label/Verb'" v-else key="2">Add a new moderation rule</translate> + <translate translate-context="Content/Moderation/Card.Title/Verb" v-if="object" key="1">Edit moderation rule</translate> + <translate translate-context="Content/Moderation/Card.Button.Label/Verb" v-else key="2">Add a new moderation rule</translate> </h3> <div v-if="errors && errors.length > 0" class="ui negative message"> - <div class="header"><translate :translate-context="'Content/Moderation/Error message.Title'">Error while creating rule</translate></div> + <div class="header"><translate translate-context="Content/Moderation/Error message.Title">Error while creating rule</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> </ul> @@ -15,15 +15,15 @@ <div class="ui toggle checkbox"> <input id="policy-is-active" v-model="current.isActive" type="checkbox"> <label for="policy-is-active"> - <translate :translate-context="'*/*/*'" v-if="current.isActive" key="1">Enabled</translate> - <translate :translate-context="'*/*/*'" v-else key="2">Disabled</translate> + <translate translate-context="*/*/*" v-if="current.isActive" key="1">Enabled</translate> + <translate translate-context="*/*/*" v-else key="2">Disabled</translate> <tooltip :content="labels.isActiveHelp" /> </label> </div> </div> <div class="field"> <label for="policy-summary"> - <translate :translate-context="'Content/Moderation/Input.Label/Noun'">Reason</translate> + <translate translate-context="Content/Moderation/Input.Label/Noun">Reason</translate> <tooltip :content="labels.summaryHelp" /> </label> <textarea name="policy-summary" id="policy-summary" rows="5" v-model="current.summary"></textarea> @@ -32,13 +32,13 @@ <div class="ui toggle checkbox"> <input id="policy-is-active" v-model="current.blockAll" type="checkbox"> <label for="policy-is-active"> - <translate :translate-context="'Content/Moderation/Checkbox.Label/Verb'">Block everything</translate> + <translate translate-context="Content/Moderation/Checkbox.Label/Verb">Block everything</translate> <tooltip :content="labels.blockAllHelp" /> </label> </div> </div> <div class="ui horizontal divider"> - <translate :translate-context="'Content/Moderation/Card.Title'">Or customize your rule</translate> + <translate translate-context="Content/Moderation/Card.Title">Or customize your rule</translate> </div> <div v-for="config in fieldConfig" :class="['field']"> <div class="ui toggle checkbox"> @@ -52,22 +52,22 @@ </div> <div class="ui hidden divider"></div> <button @click="$emit('cancel')" class="ui basic left floated button"> - <translate :translate-context="'Content/Moderation/Card.Button.Label/Verb'">Cancel</translate> + <translate translate-context="Content/Moderation/Card.Button.Label/Verb">Cancel</translate> </button> <button :class="['ui', 'right', 'floated', 'green', {'disabled loading': isLoading}, 'button']" :disabled="isLoading"> - <translate :translate-context="'Content/Moderation/Card.Button.Label/Verb'" v-if="object" key="1">Update</translate> - <translate :translate-context="'Content/Moderation/Card.Button.Label/Verb'" v-else key="2">Create</translate> + <translate translate-context="Content/Moderation/Card.Button.Label/Verb" v-if="object" key="1">Update</translate> + <translate translate-context="Content/Moderation/Card.Button.Label/Verb" v-else key="2">Create</translate> </button> <dangerous-button v-if="object" class="right floated basic button" color='red' @confirm="remove"> - <translate :translate-context="'Content/Moderation/Card.Button.Label/Verb'">Delete</translate> + <translate translate-context="Content/Moderation/Card.Button.Label/Verb">Delete</translate> <p slot="modal-header"> - <translate :translate-context="'Popup/Moderation/Title'">Delete this moderation rule?</translate> + <translate translate-context="Popup/Moderation/Title">Delete this moderation rule?</translate> </p> <p slot="modal-content"> - <translate :translate-context="'Popup/Moderation/Paragraph'">This action is irreversible.</translate> + <translate translate-context="Popup/Moderation/Paragraph">This action is irreversible.</translate> </p> <div slot="modal-confirm"> - <translate :translate-context="'Popup/Moderation/Button.Label/Verb'">Delete moderation rule</translate> + <translate translate-context="Popup/Moderation/Button.Label/Verb">Delete moderation rule</translate> </div> </dangerous-button> </form> diff --git a/front/src/components/manage/users/InvitationForm.vue b/front/src/components/manage/users/InvitationForm.vue index 32f184273..b9569a451 100644 --- a/front/src/components/manage/users/InvitationForm.vue +++ b/front/src/components/manage/users/InvitationForm.vue @@ -2,19 +2,19 @@ <div> <form class="ui form" @submit.prevent="submit"> <div v-if="errors.length > 0" class="ui negative message"> - <div class="header"><translate :translate-context="'Content/Admin/Error message.Title'">Error while creating invitation</translate></div> + <div class="header"><translate translate-context="Content/Admin/Error message.Title">Error while creating invitation</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> </ul> </div> <div class="inline fields"> <div class="ui field"> - <label><translate :translate-context="'Content/Admin/Input.Label/Noun'">Invitation code</translate></label> + <label><translate translate-context="$1">Invitation code</translate></label> <input name="code" type="text" v-model="code" :placeholder="labels.placeholder" /> </div> <div class="ui field"> <button :class="['ui', {loading: isLoading}, 'button']" :disabled="isLoading" type="submit"> - <translate :translate-context="'Content/Admin/Button.Label/Verb'">Get a new invitation</translate> + <translate translate-context="Content/Admin/Button.Label/Verb">Get a new invitation</translate> </button> </div> </div> @@ -24,8 +24,8 @@ <table class="ui ui basic table"> <thead> <tr> - <th><translate :translate-context="'Content/Admin/Table.Label/Noun'">Code</translate></th> - <th><translate :translate-context="'Content/Admin/Table.Label/Noun'">Share link</translate></th> + <th><translate translate-context="Content/Admin/Table.Label/Noun">Code</translate></th> + <th><translate translate-context="Content/Admin/Table.Label/Noun">Share link</translate></th> </tr> </thead> <tbody> @@ -35,7 +35,7 @@ </tr> </tbody> </table> - <button class="ui basic button" @click="invitations = []"><translate :translate-context="'Content/Admin/Button.Label/Verb'">Clear</translate></button> + <button class="ui basic button" @click="invitations = []"><translate translate-context="Content/Admin/Button.Label/Verb">Clear</translate></button> </div> </div> </template> diff --git a/front/src/components/manage/users/InvitationsTable.vue b/front/src/components/manage/users/InvitationsTable.vue index 38cf15b77..446d2e557 100644 --- a/front/src/components/manage/users/InvitationsTable.vue +++ b/front/src/components/manage/users/InvitationsTable.vue @@ -3,11 +3,11 @@ <div class="ui inline form"> <div class="fields"> <div class="ui field"> - <label><translate :translate-context="'Content/Search/Input.Label/Verb'">Search</translate></label> + <label><translate translate-context="Content/Search/Input.Label/Verb">Search</translate></label> <input name="search" type="text" v-model="search" :placeholder="labels.searchPlaceholder" /> </div> <div class="field"> - <label><translate :translate-context="'Content/Search/Input.Label/Noun'">Ordering</translate></label> + <label><translate translate-context="Content/Search/Input.Label/Noun">Ordering</translate></label> <select class="ui dropdown" v-model="ordering"> <option v-for="option in orderingOptions" :value="option[0]"> {{ sharedLabels.filters[option[1]] }} @@ -15,11 +15,11 @@ </select> </div> <div class="field"> - <label><translate :translate-context="'Content/Admin/Dropdown.Label'">Status</translate></label> + <label><translate translate-context="Content/Admin/Dropdown.Label">Status</translate></label> <select class="ui dropdown" v-model="isOpen"> - <option :value="null"><translate :translate-context="'Content/Admin/Dropdown'">All</translate></option> - <option :value="true"><translate :translate-context="'Content/Admin/Dropdown/Adjective'">Open</translate></option> - <option :value="false"><translate :translate-context="'Content/Admin/Dropdown/Adjective'">Expired/used</translate></option> + <option :value="null"><translate translate-context="Content/Admin/Dropdown">All</translate></option> + <option :value="true"><translate translate-context="Content/Admin/Dropdown/Adjective">Open</translate></option> + <option :value="false"><translate translate-context="Content/Admin/Dropdown/Adjective">Expired/used</translate></option> </select> </div> </div> @@ -36,20 +36,20 @@ :action-url="'manage/users/invitations/action/'" :filters="actionFilters"> <template slot="header-cells"> - <th><translate :translate-context="'Content/Admin/Table.Label'">Owner</translate></th> - <th><translate :translate-context="'Content/Admin/Table.Label'">Status</translate></th> - <th><translate :translate-context="'Content/Admin/Table.Label'">Creation date</translate></th> - <th><translate :translate-context="'Content/Admin/Table.Label'">Expiration date</translate></th> - <th><translate :translate-context="'Content/Admin/Table.Label'">Code</translate></th> + <th><translate translate-context="Content/Admin/Table.Label">Owner</translate></th> + <th><translate translate-context="Content/Admin/Table.Label">Status</translate></th> + <th><translate translate-context="Content/Admin/Table.Label">Creation date</translate></th> + <th><translate translate-context="Content/Admin/Table.Label">Expiration date</translate></th> + <th><translate translate-context="Content/Admin/Table.Label">Code</translate></th> </template> <template slot="row-cells" slot-scope="scope"> <td> <router-link :to="{name: 'manage.users.users.detail', params: {id: scope.obj.id }}">{{ scope.obj.owner.username }}</router-link> </td> <td> - <span v-if="scope.obj.users.length > 0" class="ui green basic label"><translate :translate-context="'Content/Admin/Table'">Used</translate></span> - <span v-else-if="moment().isAfter(scope.obj.expiration_date)" class="ui red basic label"><translate :translate-context="'Content/Admin/Table'">Expired</translate></span> - <span v-else class="ui basic label"><translate :translate-context="'Content/Admin/Table'">Not used</translate></span> + <span v-if="scope.obj.users.length > 0" class="ui green basic label"><translate translate-context="Content/Admin/Table">Used</translate></span> + <span v-else-if="moment().isAfter(scope.obj.expiration_date)" class="ui red basic label"><translate translate-context="Content/Admin/Table">Expired</translate></span> + <span v-else class="ui basic label"><translate translate-context="Content/Admin/Table">Not used</translate></span> </td> <td> <human-date :date="scope.obj.creation_date"></human-date> @@ -74,7 +74,7 @@ ></pagination> <span v-if="result && result.results.length > 0"> - <translate :translate-context="'Content/Admin/Paragraph'" + <translate translate-context="Content/Admin/Paragraph" :translate-params="{start: ((page-1) * paginateBy) + 1, end: ((page-1) * paginateBy) + result.results.length, total: result.count}"> Showing results %{ start }-%{ end } on %{ total } </translate> diff --git a/front/src/components/manage/users/UsersTable.vue b/front/src/components/manage/users/UsersTable.vue index 96015faf6..465c33c23 100644 --- a/front/src/components/manage/users/UsersTable.vue +++ b/front/src/components/manage/users/UsersTable.vue @@ -3,11 +3,11 @@ <div class="ui inline form"> <div class="fields"> <div class="ui field"> - <label><translate :translate-context="'Content/Search/Input.Label/verb'">Search</translate></label> + <label><translate translate-context="Content/Search/Input.Label/verb">Search</translate></label> <input name="search" type="text" v-model="search" :placeholder="labels.searchPlaceholder" /> </div> <div class="field"> - <label><translate :translate-context="'Content/Search/Input.Label/Noun'">Ordering</translate></label> + <label><translate translate-context="Content/Search/Input.Label/Noun">Ordering</translate></label> <select class="ui dropdown" v-model="ordering"> <option v-for="option in orderingOptions" :value="option[0]"> {{ sharedLabels.filters[option[1]] }} @@ -15,10 +15,10 @@ </select> </div> <div class="field"> - <label><translate :translate-context="'Content/Search/Dropdown.Label/Noun'">Order</translate></label> + <label><translate translate-context="Content/Search/Dropdown.Label/Noun">Order</translate></label> <select class="ui dropdown" v-model="orderingDirection"> - <option value="+"><translate :translate-context="'Content/Search/Dropdown'">Ascending</translate></option> - <option value="-"><translate :translate-context="'Content/Search/Dropdown'">Descending</translate></option> + <option value="+"><translate translate-context="Content/Search/Dropdown">Ascending</translate></option> + <option value="-"><translate translate-context="Content/Search/Dropdown">Descending</translate></option> </select> </div> </div> @@ -35,13 +35,13 @@ :action-url="'manage/library/uploads/action/'" :filters="actionFilters"> <template slot="header-cells"> - <th><translate :translate-context="'Content/Admin/Table.Label'">Username</translate></th> - <th><translate :translate-context="'Content/Admin/Table.Label'">Email</translate></th> - <th><translate :translate-context="'Content/Admin/Table.Label/Short, Noun'">Account status</translate></th> - <th><translate :translate-context="'Content/Admin/Table.Label/Short, Noun (Value is a date)'">Sign-up</translate></th> - <th><translate :translate-context="'Content/Admin/Table.Label/Short, Noun (Value is a date)'">Last activity</translate></th> - <th><translate :translate-context="'Content/Admin/Table.Label/Noun'">Permissions</translate></th> - <th><translate :translate-context="'Content/Admin/Table.Label/Noun'">Status</translate></th> + <th><translate translate-context="Content/Admin/Table.Label">Username</translate></th> + <th><translate translate-context="Content/Admin/Table.Label">Email</translate></th> + <th><translate translate-context="Content/Admin/Table.Label/Short, Noun">Account status</translate></th> + <th><translate translate-context="Content/Admin/Table.Label/Short, Noun (Value is a date)">Sign-up</translate></th> + <th><translate translate-context="Content/Admin/Table.Label/Short, Noun (Value is a date)">Last activity</translate></th> + <th><translate translate-context="Content/Admin/Table.Label/Noun">Permissions</translate></th> + <th><translate translate-context="Content/Admin/Table.Label/Noun">Status</translate></th> </template> <template slot="row-cells" slot-scope="scope"> <td> @@ -51,15 +51,15 @@ <span>{{ scope.obj.email }}</span> </td> <td> - <span v-if="scope.obj.is_active" class="ui basic green label"><translate :translate-context="'Content/Admin/Table'">Active</translate></span> - <span v-else class="ui basic grey label"><translate :translate-context="'Content/Admin/Table'">Inactive</translate></span> + <span v-if="scope.obj.is_active" class="ui basic green label"><translate translate-context="Content/Admin/Table">Active</translate></span> + <span v-else class="ui basic grey label"><translate translate-context="Content/Admin/Table">Inactive</translate></span> </td> <td> <human-date :date="scope.obj.date_joined"></human-date> </td> <td> <human-date v-if="scope.obj.last_activity" :date="scope.obj.last_activity"></human-date> - <template v-else><translate :translate-context="'*/*/*'">N/A</translate></template> + <template v-else><translate translate-context="*/*/*">N/A</translate></template> </td> <td> <template v-for="p in permissions"> @@ -67,9 +67,9 @@ </template> </td> <td> - <span v-if="scope.obj.is_superuser" class="ui pink label"><translate :translate-context="'Content/Admin/Table.User role'">Admin</translate></span> - <span v-else-if="scope.obj.is_staff" class="ui purple label"><translate :translate-context="'Content/Admin/Table.User role'">Staff member</translate></span> - <span v-else class="ui basic label"><translate :translate-context="'Content/Admin/Table, User role'">regular user</translate></span> + <span v-if="scope.obj.is_superuser" class="ui pink label"><translate translate-context="Content/Admin/Table.User role">Admin</translate></span> + <span v-else-if="scope.obj.is_staff" class="ui purple label"><translate translate-context="Content/Admin/Table.User role">Staff member</translate></span> + <span v-else class="ui basic label"><translate translate-context="Content/Admin/Table, User role">regular user</translate></span> </td> </template> </action-table> @@ -85,7 +85,7 @@ ></pagination> <span v-if="result && result.results.length > 0"> - <translate :translate-context="'Content/Admin/Paragraph'" + <translate translate-context="Content/Admin/Paragraph" :translate-params="{start: ((page-1) * paginateBy) + 1, end: ((page-1) * paginateBy) + result.results.length, total: result.count}"> Showing results %{ start }-%{ end } on %{ total } </translate> diff --git a/front/src/components/moderation/FilterModal.vue b/front/src/components/moderation/FilterModal.vue index 5dcd47825..cdcedb800 100644 --- a/front/src/components/moderation/FilterModal.vue +++ b/front/src/components/moderation/FilterModal.vue @@ -4,32 +4,32 @@ <translate v-if="type === 'artist'" key="1" - :translate-context="'Popup/Moderation/Title/Verb'" + translate-context="Popup/Moderation/Title/Verb" :translate-params="{name: target.name}">Do you want to hide content from artist "%{ name }"?</translate> </div> <div class="scrolling content"> <div class="description"> <div v-if="errors.length > 0" class="ui negative message"> - <div class="header"><translate :translate-context="'Popup/Moderation/Error message'">Error while creating filter</translate></div> + <div class="header"><translate translate-context="Popup/Moderation/Error message">Error while creating filter</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> </ul> </div> <template v-if="type === 'artist'"> <p> - <translate :translate-context="'Popup/Moderation/Paragraph'"> + <translate translate-context="Popup/Moderation/Paragraph"> You will not see tracks, albums and user activity linked to this artist anymore: </translate> </p> <ul> - <li><translate :translate-context="'Popup/Moderation/List item'">In other users favorites and listening history</translate></li> - <li><translate :translate-context="'Popup/Moderation/List item'">In "Recently added" widget</translate></li> - <li><translate :translate-context="'Popup/Moderation/List item'">In artists and album listings</translate></li> - <li><translate :translate-context="'Popup/Moderation/List item'">In radio suggestions</translate></li> + <li><translate translate-context="Popup/Moderation/List item">In other users favorites and listening history</translate></li> + <li><translate translate-context="Popup/Moderation/List item">In "Recently added" widget</translate></li> + <li><translate translate-context="Popup/Moderation/List item">In artists and album listings</translate></li> + <li><translate translate-context="Popup/Moderation/List item">In radio suggestions</translate></li> </ul> <p> - <translate :translate-context="'Popup/Moderation/Paragraph'"> + <translate translate-context="Popup/Moderation/Paragraph"> You can manage and update your filters anytime from your account settings. </translate> </p> @@ -37,8 +37,8 @@ </div> </div> <div class="actions"> - <div class="ui cancel button"><translate :translate-context="'Popup/*/Button.Label'">Cancel</translate></div> - <div :class="['ui', 'green', {loading: isLoading}, 'button']" @click="hide"><translate :translate-context="'Popup/*/Button.Label'">Hide content</translate></div> + <div class="ui cancel button"><translate translate-context="Popup/*/Button.Label">Cancel</translate></div> + <div :class="['ui', 'green', {loading: isLoading}, 'button']" @click="hide"><translate translate-context="Popup/*/Button.Label">Hide content</translate></div> </div> </modal> </template> diff --git a/front/src/components/playlists/Card.vue b/front/src/components/playlists/Card.vue index 70ac34097..60a322ab4 100644 --- a/front/src/components/playlists/Card.vue +++ b/front/src/components/playlists/Card.vue @@ -16,7 +16,7 @@ <duration :seconds="playlist.duration" /> | <i class="sound icon"></i> - <translate :translate-context="'Content/*/Card/List item'" + <translate translate-context="Content/*/Card/List item" translate-plural="%{ count } tracks" :translate-n="playlist.tracks_count" :translate-params="{count: playlist.tracks_count}"> diff --git a/front/src/components/playlists/Editor.vue b/front/src/components/playlists/Editor.vue index d558ed38f..4c983cfb9 100644 --- a/front/src/components/playlists/Editor.vue +++ b/front/src/components/playlists/Editor.vue @@ -2,16 +2,16 @@ <div class="ui text container"> <playlist-form @updated="$emit('playlist-updated', $event)" :title="false" :playlist="playlist"></playlist-form> <h3 class="ui top attached header"> - <translate :translate-context="'Content/Playlist/Title'">Playlist editor</translate> + <translate translate-context="Content/Playlist/Title">Playlist editor</translate> </h3> <div class="ui attached segment"> <template v-if="status === 'loading'"> <div class="ui active tiny inline loader"></div> - <translate :translate-context="'Content/Playlist/Paragraph'">Syncing changes to server…</translate> + <translate translate-context="Content/Playlist/Paragraph">Syncing changes to server…</translate> </template> <template v-else-if="status === 'errored'"> <i class="red close icon"></i> - <translate :translate-context="'Content/Playlist/Error message.Title'">An error occured while saving your changes</translate> + <translate translate-context="Content/Playlist/Error message.Title">An error occured while saving your changes</translate> <div v-if="errors.length > 0" class="ui negative message"> <ul class="list"> <li v-for="error in errors">{{ error }}</li> @@ -19,7 +19,7 @@ </div> </template> <template v-else-if="status === 'saved'"> - <i class="green check icon"></i> <translate :translate-context="'Content/Playlist/Paragraph'">Changes synced with server</translate> + <i class="green check icon"></i> <translate translate-context="Content/Playlist/Paragraph">Changes synced with server</translate> </template> </div> <div class="ui bottom attached segment"> @@ -29,7 +29,7 @@ :class="['ui', {disabled: queueTracks.length === 0}, 'labeled', 'icon', 'button']" :title="labels.copyTitle"> <i class="plus icon"></i> - <translate :translate-context="'Content/Playlist/Button.Label/Verb'" + <translate translate-context="Content/Playlist/Button.Label/Verb" translate-plural="Insert from queue (%{ count } tracks)" :translate-n="queueTracks.length" :translate-params="{count: queueTracks.length}"> @@ -38,16 +38,16 @@ </div> <dangerous-button :disabled="plts.length === 0" class="labeled right floated icon" color='yellow' :action="clearPlaylist"> - <i class="eraser icon"></i> <translate :translate-context="'Content/Playlist/Button.Label/Verb'">Clear playlist</translate> + <i class="eraser icon"></i> <translate translate-context="Content/Playlist/Button.Label/Verb">Clear playlist</translate> <p slot="modal-header"> - <translate :translate-context="'Popup/Playlist/Title'" :translate-params="{playlist: playlist.name}">Do you want to clear the playlist "%{ playlist }"?</translate> + <translate translate-context="Popup/Playlist/Title" :translate-params="{playlist: playlist.name}">Do you want to clear the playlist "%{ playlist }"?</translate> </p> - <p slot="modal-content"><translate :translate-context="'Popup/Playlist/Paragraph'">This will remove all tracks from this playlist and cannot be undone.</translate></p> - <div slot="modal-confirm"><translate :translate-context="'Popup/Playlist/Button.Label'">Clear playlist</translate></div> + <p slot="modal-content"><translate translate-context="Popup/Playlist/Paragraph">This will remove all tracks from this playlist and cannot be undone.</translate></p> + <div slot="modal-confirm"><translate translate-context="Popup/Playlist/Button.Label">Clear playlist</translate></div> </dangerous-button> <div class="ui hidden divider"></div> <template v-if="plts.length > 0"> - <p><translate :translate-context="'Content/Playlist/Paragraph/Call to action'">Drag and drop rows to reorder tracks in the playlist</translate></p> + <p><translate translate-context="Content/Playlist/Paragraph/Call to action">Drag and drop rows to reorder tracks in the playlist</translate></p> <div class="table-wrapper"> <table class="ui compact very basic unstackable table"> <draggable v-model="plts" element="tbody" @update="reorder"> diff --git a/front/src/components/playlists/Form.vue b/front/src/components/playlists/Form.vue index 058a6fd11..e7a761b37 100644 --- a/front/src/components/playlists/Form.vue +++ b/front/src/components/playlists/Form.vue @@ -1,29 +1,29 @@ <template> <form class="ui form" @submit.prevent="submit()"> - <h4 v-if="title" class="ui header"><translate :translate-context="'Popup/Playlist/Title/Verb'">Create a new playlist</translate></h4> + <h4 v-if="title" class="ui header"><translate translate-context="Popup/Playlist/Title/Verb">Create a new playlist</translate></h4> <div v-if="success" class="ui positive message"> <div class="header"> <template v-if="playlist"> - <translate :translate-context="'Content/Playlist/Message'">Playlist updated</translate> + <translate translate-context="Content/Playlist/Message">Playlist updated</translate> </template> <template v-else> - <translate :translate-context="'Content/Playlist/Message'">Playlist created</translate> + <translate translate-context="Content/Playlist/Message">Playlist created</translate> </template> </div> </div> <div v-if="errors.length > 0" class="ui negative message"> - <div class="header"><translate :translate-context="'Content/Playlist/Error message.Title'">The playlist could not be created</translate></div> + <div class="header"><translate translate-context="Content/Playlist/Error message.Title">The playlist could not be created</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> </ul> </div> <div class="three fields"> <div class="field"> - <label><translate :translate-context="'Content/Playlist/Input.Label'">Playlist name</translate></label> + <label><translate translate-context="Content/Playlist/Input.Label">Playlist name</translate></label> <input name="name" v-model="name" required type="text" :placeholder="labels.placeholder" /> </div> <div class="field"> - <label><translate :translate-context="'Content/Playlist/Dropdown.Label'">Playlist visibility</translate></label> + <label><translate translate-context="Content/Playlist/Dropdown.Label">Playlist visibility</translate></label> <select class="ui dropdown" v-model="privacyLevel"> <option :value="c.value" v-for="c in privacyLevelChoices">{{ c.label }}</option> </select> @@ -31,8 +31,8 @@ <div class="field"> <label> </label> <button :class="['ui', 'fluid', {'loading': isLoading}, 'button']" type="submit"> - <template v-if="playlist"><translate :translate-context="'Content/Playlist/Button.Label/Verb'">Update playlist</translate></template> - <template v-else><translate :translate-context="'Content/Playlist/Button.Label/Verb'">Create playlist</translate></template> + <template v-if="playlist"><translate translate-context="Content/Playlist/Button.Label/Verb">Update playlist</translate></template> + <template v-else><translate translate-context="Content/Playlist/Button.Label/Verb">Create playlist</translate></template> </button> </div> </div> diff --git a/front/src/components/playlists/PlaylistModal.vue b/front/src/components/playlists/PlaylistModal.vue index 3707e3d2c..0e8ac2694 100644 --- a/front/src/components/playlists/PlaylistModal.vue +++ b/front/src/components/playlists/PlaylistModal.vue @@ -1,13 +1,13 @@ <template> <modal @update:show="update" :show="$store.state.playlists.showModal"> <div class="header"> - <translate :translate-context="'Popup/Playlist/Title/Verb'">Manage playlists</translate> + <translate translate-context="Popup/Playlist/Title/Verb">Manage playlists</translate> </div> <div class="scrolling content"> <div class="description"> <template v-if="track"> - <h4 class="ui header"><translate :translate-context="'Popup/Playlist/Title'">Current track</translate></h4> - <translate :translate-context="'Popup/Playlist/Paragraph'" + <h4 class="ui header"><translate translate-context="Popup/Playlist/Title">Current track</translate></h4> + <translate translate-context="Popup/Playlist/Paragraph" v-translate="{artist: track.artist.name, title: track.title}" :translate-params="{artist: track.artist.name, title: track.title}"> "%{ title }", by %{ artist } @@ -18,20 +18,20 @@ <playlist-form :key="formKey"></playlist-form> <div class="ui divider"></div> <div v-if="errors.length > 0" class="ui negative message"> - <div class="header"><translate :translate-context="'Popup/Playlist/Error message.Title'">The track can't be added to a playlist</translate></div> + <div class="header"><translate translate-context="Popup/Playlist/Error message.Title">The track can't be added to a playlist</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> </ul> </div> </div> - <h4 class="ui header"><translate :translate-context="'Popup/Playlist/Title'">Available playlists</translate></h4> + <h4 class="ui header"><translate translate-context="Popup/Playlist/Title">Available playlists</translate></h4> <table class="ui unstackable very basic table"> <thead> <tr> <th></th> - <th><translate :translate-context="'*/*/Table.Label'">Name</translate></th> - <th class="sorted descending"><translate :translate-context="'Popup/Playlist/Table.Label/Short'">Last modification</translate></th> - <th><translate :translate-context="'*/*/Table.Label'">Tracks</translate></th> + <th><translate translate-context="*/*/Table.Label">Name</translate></th> + <th class="sorted descending"><translate translate-context="Popup/Playlist/Table.Label/Short">Last modification</translate></th> + <th><translate translate-context="*/*/Table.Label">Tracks</translate></th> <th></th> </tr> </thead> @@ -52,7 +52,7 @@ class="ui green icon basic small right floated button" :title="labels.addToPlaylist" @click="addToPlaylist(playlist.id)"> - <i class="plus icon"></i> <translate :translate-context="'Popup/Playlist/Table.Button.Label/Verb'">Add track</translate> + <i class="plus icon"></i> <translate translate-context="Popup/Playlist/Table.Button.Label/Verb">Add track</translate> </div> </td> </tr> @@ -61,7 +61,7 @@ </div> </div> <div class="actions"> - <div class="ui cancel button"><translate :translate-context="'Popup/Playlist/Button.Label'">Cancel</translate></div> + <div class="ui cancel button"><translate translate-context="Popup/Playlist/Button.Label">Cancel</translate></div> </div> </modal> </template> diff --git a/front/src/components/playlists/TrackPlaylistIcon.vue b/front/src/components/playlists/TrackPlaylistIcon.vue index e5dd73731..2f57eb163 100644 --- a/front/src/components/playlists/TrackPlaylistIcon.vue +++ b/front/src/components/playlists/TrackPlaylistIcon.vue @@ -4,7 +4,7 @@ v-if="button" :class="['ui', 'icon', 'labeled', 'button']"> <i class="list icon"></i> - <translate :translate-context="'Sidebar/Player/Icon.Tooltip/Verb'">Add to playlist…</translate> + <translate translate-context="Sidebar/Player/Icon.Tooltip/Verb">Add to playlist…</translate> </button> <button v-else diff --git a/front/src/components/radios/Button.vue b/front/src/components/radios/Button.vue index 6b26397d1..7662a5abe 100644 --- a/front/src/components/radios/Button.vue +++ b/front/src/components/radios/Button.vue @@ -1,8 +1,8 @@ <template> <button @click="toggleRadio" :class="['ui', 'blue', {'inverted': running}, 'icon', 'labeled', 'button']"> <i class="ui feed icon"></i> - <template v-if="running"><translate :translate-context="'Content/Radio/Button.Label/Short, Verb'">Stop radio</translate></template> - <template v-else><translate :translate-context="'Content/Radio/Button.Label/Short, Verb'">Start radio</translate></template> + <template v-if="running"><translate translate-context="Content/Radio/Button.Label/Short, Verb">Stop radio</translate></template> + <template v-else><translate translate-context="Content/Radio/Button.Label/Short, Verb">Start radio</translate></template> </button> </template> diff --git a/front/src/components/radios/Card.vue b/front/src/components/radios/Card.vue index d83eb7006..38996bec3 100644 --- a/front/src/components/radios/Card.vue +++ b/front/src/components/radios/Card.vue @@ -21,7 +21,7 @@ class="ui basic yellow button right floated" v-if="$store.state.auth.authenticated && type === 'custom' && radio.user.id === $store.state.auth.profile.id" :to="{name: 'library.radios.edit', params: {id: customRadioId }}"> - <translate :translate-context="'Content/Radio/Card.Button.Label/Short, Verb'">Edit…</translate> + <translate translate-context="Content/Radio/Card.Button.Label/Short, Verb">Edit…</translate> </router-link> </div> </div> diff --git a/front/src/views/Notifications.vue b/front/src/views/Notifications.vue index 3f262740c..435a35017 100644 --- a/front/src/views/Notifications.vue +++ b/front/src/views/Notifications.vue @@ -2,22 +2,22 @@ <main class="main pusher" v-title="labels.title"> <section class="ui vertical aligned stripe segment"> <div class="ui container"> - <h1 class="ui header"><translate :translate-context="'Content/Notifications/Title'">Your notifications</translate></h1> + <h1 class="ui header"><translate translate-context="Content/Notifications/Title">Your notifications</translate></h1> <div class="ui toggle checkbox"> <input v-model="filters.is_read" type="checkbox"> - <label><translate :translate-context="'Content/Notifications/Form.Label/Verb'">Show read notifications</translate></label> + <label><translate translate-context="Content/Notifications/Form.Label/Verb">Show read notifications</translate></label> </div> <div v-if="filters.is_read === false && notifications.count > 0" @click="markAllAsRead" class="ui basic labeled icon right floated button"> <i class="ui check icon" /> - <translate :translate-context="'Content/Notifications/Button.Label/Verb'">Mark all as read</translate> + <translate translate-context="Content/Notifications/Button.Label/Verb">Mark all as read</translate> </div> <div class="ui hidden divider" /> <div v-if="isLoading" :class="['ui', {'active': isLoading}, 'inverted', 'dimmer']"> - <div class="ui text loader"><translate :translate-context="'Content/Notifications/Paragraph'">Loading notifications…</translate></div> + <div class="ui text loader"><translate translate-context="Content/Notifications/Paragraph">Loading notifications…</translate></div> </div> <table v-else-if="notifications.count > 0" class="ui table"> @@ -26,7 +26,7 @@ </tbody> </table> <p v-else> - <translate :translate-context="'Content/Notifications/Paragraph'">No notification to show.</translate> + <translate translate-context="Content/Notifications/Paragraph">No notification to show.</translate> </p> </div> </section> diff --git a/front/src/views/admin/Settings.vue b/front/src/views/admin/Settings.vue index 051d09d33..58031942d 100644 --- a/front/src/views/admin/Settings.vue +++ b/front/src/views/admin/Settings.vue @@ -13,7 +13,7 @@ </div> <div class="four wide column"> <div class="ui sticky vertical secondary menu"> - <div class="header item"><translate :translate-context="'Content/Admin/Menu.Title'">Sections</translate></div> + <div class="header item"><translate translate-context="Content/Admin/Menu.Title">Sections</translate></div> <a :class="['menu', {active: group.id === current}, 'item']" @click.prevent="scrollTo(group.id)" :href="'#' + group.id" diff --git a/front/src/views/admin/library/Base.vue b/front/src/views/admin/library/Base.vue index 293e569ef..efec7df66 100644 --- a/front/src/views/admin/library/Base.vue +++ b/front/src/views/admin/library/Base.vue @@ -3,7 +3,7 @@ <nav class="ui secondary pointing menu" role="navigation" :aria-label="labels.secondaryMenu"> <router-link class="ui item" - :to="{name: 'manage.library.edits'}"><translate :translate-context="'Menu/Admin/Link'">Edits</translate></router-link> + :to="{name: 'manage.library.edits'}"><translate translate-context="Menu/Admin/Link">Edits</translate></router-link> </nav> <router-view :key="$route.fullPath"></router-view> </div> diff --git a/front/src/views/admin/library/EditsList.vue b/front/src/views/admin/library/EditsList.vue index b38732f4a..e9b6d74d0 100644 --- a/front/src/views/admin/library/EditsList.vue +++ b/front/src/views/admin/library/EditsList.vue @@ -2,7 +2,7 @@ <main v-title="labels.title"> <section class="ui vertical stripe segment"> <edits-card-list :update-url="true" :default-query="defaultQuery"> - <h2 class="ui header"><translate :translate-context="'Content/Admin/Title/Noun'">Library edits</translate></h2> + <h2 class="ui header"><translate translate-context="Content/Admin/Title/Noun">Library edits</translate></h2> </edits-card-list> </section> </main> diff --git a/front/src/views/admin/moderation/AccountsDetail.vue b/front/src/views/admin/moderation/AccountsDetail.vue index 9632bdb68..189a24cd9 100644 --- a/front/src/views/admin/moderation/AccountsDetail.vue +++ b/front/src/views/admin/moderation/AccountsDetail.vue @@ -16,12 +16,12 @@ <template v-if="object.user"> <span class="ui tiny teal icon label"> <i class="home icon"></i> - <translate :translate-context="'Content/Moderation/List item'">Local account</translate> + <translate translate-context="Content/Moderation/List item">Local account</translate> </span> </template> <a :href="object.url || object.fid" target="_blank" rel="noopener noreferrer"> - <translate :translate-context="'Content/Moderation/Link/Verb'">Open profile</translate> + <translate translate-context="Content/Moderation/Link/Verb">Open profile</translate> <i class="external icon"></i> </a> </div> @@ -44,16 +44,16 @@ <header class="ui header"> <h3> <i class="shield icon"></i> - <translate :translate-context="'Content/Moderation/Card.Title'">You don't have any rule in place for this account.</translate> + <translate translate-context="Content/Moderation/Card.Title">You don't have any rule in place for this account.</translate> </h3> </header> - <p><translate :translate-context="'Content/Moderation/Card.Paragraph'">Moderation policies help you control how your instance interact with a given domain or account.</translate></p> - <button @click="showPolicyForm = true" class="ui primary button"><translate :translate-context="'Content/Moderation/Button/Verb'">Add a moderation policy</translate></button> + <p><translate translate-context="Content/Moderation/Card.Paragraph">Moderation policies help you control how your instance interact with a given domain or account.</translate></p> + <button @click="showPolicyForm = true" class="ui primary button"><translate translate-context="Content/Moderation/Button/Verb">Add a moderation policy</translate></button> </template> <instance-policy-card v-else-if="policy && !showPolicyForm" :object="policy" @update="showPolicyForm = true"> <header class="ui header"> <h3> - <translate :translate-context="'Content/Moderation/Card.Title'">This domain is subject to specific moderation rules</translate> + <translate translate-context="Content/Moderation/Card.Title">This domain is subject to specific moderation rules</translate> </h3> </header> </instance-policy-card> @@ -76,14 +76,14 @@ <h3 class="ui header"> <i class="info icon"></i> <div class="content"> - <translate :translate-context="'Content/Moderation/Title'">Account data</translate> + <translate translate-context="Content/Moderation/Title">Account data</translate> </div> </h3> <table class="ui very basic table"> <tbody> <tr> <td> - <translate :translate-context="'Content/*/*'">Username</translate> + <translate translate-context="Content/*/*">Username</translate> </td> <td> {{ object.preferred_username }} @@ -91,7 +91,7 @@ </tr> <tr v-if="!object.user"> <td> - <translate :translate-context="'Content/*/*'">Domain</translate> + <translate translate-context="Content/*/*">Domain</translate> </td> <td> <router-link :to="{name: 'manage.moderation.domains.detail', params: {id: object.domain }}"> @@ -109,7 +109,7 @@ </tr> <tr v-if="object.user"> <td> - <translate :translate-context="'Content/*/*'">Email address</translate> + <translate translate-context="Content/*/*">Email address</translate> </td> <td> {{ object.user.email }} @@ -117,7 +117,7 @@ </tr> <tr v-if="object.user"> <td> - <translate :translate-context="'Content/*/*/Noun'">Login status</translate> + <translate translate-context="Content/*/*/Noun">Login status</translate> </td> <td> <div class="ui toggle checkbox" v-if="object.user.username != $store.state.auth.profile.username"> @@ -125,17 +125,17 @@ @change="updateUser('is_active')" v-model="object.user.is_active" type="checkbox"> <label> - <translate v-if="object.user.is_active" key="1" :translate-context="'Content/*/Label'">Enabled</translate> - <translate v-else key="2" :translate-context="'Content/*/Label'">Disabled</translate> + <translate v-if="object.user.is_active" key="1" translate-context="Content/*/Label">Enabled</translate> + <translate v-else key="2" translate-context="Content/*/Label">Disabled</translate> </label> </div> - <translate v-else-if="object.user.is_active" key="1" :translate-context="'Content/*/Label'">Enabled</translate> - <translate v-else key="2" :translate-context="'Content/*/Label'">Disabled</translate> + <translate v-else-if="object.user.is_active" key="1" translate-context="Content/*/Label">Enabled</translate> + <translate v-else key="2" translate-context="Content/*/Label">Disabled</translate> </td> </tr> <tr v-if="object.user"> <td> - <translate :translate-context="'Content/Moderation/Table.Label'">Permissions</translate> + <translate translate-context="Content/Moderation/Table.Label">Permissions</translate> </td> <td> <select @@ -149,7 +149,7 @@ </tr> <tr> <td> - <translate :translate-context="'Content/Moderation/Table.Label/Noun'">Type</translate> + <translate translate-context="Content/Moderation/Table.Label/Noun">Type</translate> </td> <td> {{ object.type }} @@ -157,7 +157,7 @@ </tr> <tr v-if="!object.user"> <td> - <translate :translate-context="'Content/*/Table.Label'">First seen</translate> + <translate translate-context="Content/*/Table.Label">First seen</translate> </td> <td> <human-date :date="object.creation_date"></human-date> @@ -165,16 +165,16 @@ </tr> <tr v-if="!object.user"> <td> - <translate :translate-context="'Content/*/Table.Label'">Last checked</translate> + <translate translate-context="Content/*/Table.Label">Last checked</translate> </td> <td> <human-date v-if="object.last_fetch_date" :date="object.last_fetch_date"></human-date> - <translate v-else :translate-context="'*/*/*'">N/A</translate> + <translate v-else translate-context="*/*/*">N/A</translate> </td> </tr> <tr v-if="object.user"> <td> - <translate :translate-context="'Content/*/Table.Label'">Sign-up date</translate> + <translate translate-context="Content/*/Table.Label">Sign-up date</translate> </td> <td> <human-date :date="object.user.date_joined"></human-date> @@ -182,7 +182,7 @@ </tr> <tr v-if="object.user"> <td> - <translate :translate-context="'Content/*/Table.Label'">Last activity</translate> + <translate translate-context="Content/*/Table.Label">Last activity</translate> </td> <td> <human-date :date="object.user.last_activity"></human-date> @@ -197,7 +197,7 @@ <h3 class="ui header"> <i class="feed icon"></i> <div class="content"> - <translate :translate-context="'Content/Moderation/Title'">Activity</translate> + <translate translate-context="Content/Moderation/Title">Activity</translate> <span :data-tooltip="labels.statsWarning"><i class="question circle icon"></i></span> </div> @@ -212,7 +212,7 @@ <tbody> <tr> <td> - <translate :translate-context="'Content/Moderation/Table.Label/Noun'">Emitted messages</translate> + <translate translate-context="Content/Moderation/Table.Label/Noun">Emitted messages</translate> </td> <td> {{ stats.outbox_activities}} @@ -220,7 +220,7 @@ </tr> <tr> <td> - <translate :translate-context="'Content/Moderation/Table.Label/Noun'">Received library follows</translate> + <translate translate-context="Content/Moderation/Table.Label/Noun">Received library follows</translate> </td> <td> {{ stats.received_library_follows}} @@ -228,7 +228,7 @@ </tr> <tr> <td> - <translate :translate-context="'Content/Moderation/Table.Label/Noun'">Emitted library follows</translate> + <translate translate-context="Content/Moderation/Table.Label/Noun">Emitted library follows</translate> </td> <td> {{ stats.emitted_library_follows}} @@ -243,7 +243,7 @@ <h3 class="ui header"> <i class="music icon"></i> <div class="content"> - <translate :translate-context="'Content/Moderation/Title'">Audio content</translate> + <translate translate-context="Content/Moderation/Title">Audio content</translate> <span :data-tooltip="labels.statsWarning"><i class="question circle icon"></i></span> </div> @@ -259,7 +259,7 @@ <tr v-if="!object.user"> <td> - <translate :translate-context="'Content/Moderation/Table.Label/Noun'">Cached size</translate> + <translate translate-context="Content/Moderation/Table.Label/Noun">Cached size</translate> </td> <td> {{ stats.media_downloaded_size | humanSize }} @@ -267,7 +267,7 @@ </tr> <tr v-if="object.user"> <td> - <translate :translate-context="'Content/Moderation/Table.Label/Noun'" >Upload quota</translate> + <translate translate-context="Content/Moderation/Table.Label/Noun" >Upload quota</translate> <span :data-tooltip="labels.uploadQuota"><i class="question circle icon"></i></span> </td> <td> @@ -279,14 +279,14 @@ step="100" type="number" /> <div class="ui basic label"> - <translate :translate-context="'Content/*/*/Unit'">MB</translate> + <translate translate-context="Content/*/*/Unit">MB</translate> </div> </div> </td> </tr> <tr> <td> - <translate :translate-context="'Content/*/*'">Total size</translate> + <translate translate-context="Content/*/*">Total size</translate> </td> <td> {{ stats.media_total_size | humanSize }} @@ -295,7 +295,7 @@ <tr> <td> - <translate :translate-context="'Content/Moderation/Table.Label'">Libraries</translate> + <translate translate-context="Content/Moderation/Table.Label">Libraries</translate> </td> <td> {{ stats.libraries }} @@ -303,7 +303,7 @@ </tr> <tr> <td> - <translate :translate-context="'Content/Moderation/Table.Label/Noun'">Uploads</translate> + <translate translate-context="Content/Moderation/Table.Label/Noun">Uploads</translate> </td> <td> {{ stats.uploads }} @@ -311,7 +311,7 @@ </tr> <tr> <td> - <translate :translate-context="'Content/*/*'">Artists</translate> + <translate translate-context="Content/*/*">Artists</translate> </td> <td> {{ stats.artists }} @@ -319,7 +319,7 @@ </tr> <tr> <td> - <translate :translate-context="'Content/*/*'">Albums</translate> + <translate translate-context="Content/*/*">Albums</translate> </td> <td> {{ stats.albums}} @@ -327,7 +327,7 @@ </tr> <tr> <td> - <translate :translate-context="'Content/*/*'">Tracks</translate> + <translate translate-context="Content/*/*">Tracks</translate> </td> <td> {{ stats.tracks }} diff --git a/front/src/views/admin/moderation/AccountsList.vue b/front/src/views/admin/moderation/AccountsList.vue index 09c491faf..1fd937be5 100644 --- a/front/src/views/admin/moderation/AccountsList.vue +++ b/front/src/views/admin/moderation/AccountsList.vue @@ -1,7 +1,7 @@ <template> <main v-title="labels.accounts"> <section class="ui vertical stripe segment"> - <h2 class="ui header"><translate :translate-context="'Content/Moderation/Title'">Accounts</translate></h2> + <h2 class="ui header"><translate translate-context="Content/Moderation/Title">Accounts</translate></h2> <div class="ui hidden divider"></div> <accounts-table :update-url="true" :default-query="defaultQuery"></accounts-table> </section> diff --git a/front/src/views/admin/moderation/Base.vue b/front/src/views/admin/moderation/Base.vue index 9d7e76fdc..19b87b5e4 100644 --- a/front/src/views/admin/moderation/Base.vue +++ b/front/src/views/admin/moderation/Base.vue @@ -3,10 +3,10 @@ <nav class="ui secondary pointing menu" role="navigation" :aria-label="labels.secondaryMenu"> <router-link class="ui item" - :to="{name: 'manage.moderation.domains.list'}"><translate :translate-context="'Menu/Moderation/Tab'">Domains</translate></router-link> + :to="{name: 'manage.moderation.domains.list'}"><translate translate-context="Menu/Moderation/Tab">Domains</translate></router-link> <router-link class="ui item" - :to="{name: 'manage.moderation.accounts.list'}"><translate :translate-context="'Menu/Moderation/Tab'">Accounts</translate></router-link> + :to="{name: 'manage.moderation.accounts.list'}"><translate translate-context="Menu/Moderation/Tab">Accounts</translate></router-link> </nav> <router-view :key="$route.fullPath"></router-view> diff --git a/front/src/views/admin/moderation/DomainsDetail.vue b/front/src/views/admin/moderation/DomainsDetail.vue index e51fcd307..75355ea07 100644 --- a/front/src/views/admin/moderation/DomainsDetail.vue +++ b/front/src/views/admin/moderation/DomainsDetail.vue @@ -14,7 +14,7 @@ {{ object.name }} <div class="sub header"> <a :href="externalUrl" target="_blank" rel="noopener noreferrer" class="logo-wrapper"> - <translate :translate-context="'Content/Moderation/Link/Verb'">Open website</translate> + <translate translate-context="Content/Moderation/Link/Verb">Open website</translate> <i class="external icon"></i> </a> </div> @@ -37,16 +37,16 @@ <header class="ui header"> <h3> <i class="shield icon"></i> - <translate :translate-context="'Content/Moderation/Card.Title'">You don't have any rule in place for this domain.</translate> + <translate translate-context="Content/Moderation/Card.Title">You don't have any rule in place for this domain.</translate> </h3> </header> - <p><translate :translate-context="'Content/Moderation/Card.Paragraph'">Moderation policies help you control how your instance interact with a given domain or account.</translate></p> + <p><translate translate-context="Content/Moderation/Card.Paragraph">Moderation policies help you control how your instance interact with a given domain or account.</translate></p> <button @click="showPolicyForm = true" class="ui primary button">Add a moderation policy</button> </template> <instance-policy-card v-else-if="policy && !showPolicyForm" :object="policy" @update="showPolicyForm = true"> <header class="ui header"> <h3> - <translate :translate-context="'Content/Moderation/Card.Title'">This domain is subject to specific moderation rules</translate> + <translate translate-context="Content/Moderation/Card.Title">This domain is subject to specific moderation rules</translate> </h3> </header> </instance-policy-card> @@ -69,14 +69,14 @@ <h3 class="ui header"> <i class="info icon"></i> <div class="content"> - <translate :translate-context="'Content/Moderation/Title'">Instance data</translate> + <translate translate-context="Content/Moderation/Title">Instance data</translate> </div> </h3> <table class="ui very basic table"> <tbody> <tr> <td> - <translate :translate-context="'Content/*/Table.Label'">First seen</translate> + <translate translate-context="Content/*/Table.Label">First seen</translate> </td> <td> <human-date :date="object.creation_date"></human-date> @@ -84,18 +84,18 @@ </tr> <tr> <td> - <translate :translate-context="'Content/*/Table.Label'">Last checked</translate> + <translate translate-context="Content/*/Table.Label">Last checked</translate> </td> <td> <human-date v-if="object.nodeinfo_fetch_date" :date="object.nodeinfo_fetch_date"></human-date> - <translate v-else :translate-context="'*/*/*'">N/A</translate> + <translate v-else translate-context="*/*/*">N/A</translate> </td> </tr> <template v-if="object.nodeinfo && object.nodeinfo.status === 'ok'"> <tr> <td> - <translate :translate-context="'Content/Moderation/Table.Label'">Software</translate> + <translate translate-context="Content/Moderation/Table.Label">Software</translate> </td> <td> {{ lodash.get(object, 'nodeinfo.payload.software.name', $gettext('N/A')) }} ({{ lodash.get(object, 'nodeinfo.payload.software.version', $gettext('N/A')) }}) @@ -103,7 +103,7 @@ </tr> <tr> <td> - <translate :translate-context="'Content/Moderation/Table.Label'">Name</translate> + <translate translate-context="Content/Moderation/Table.Label">Name</translate> </td> <td> {{ lodash.get(object, 'nodeinfo.payload.metadata.nodeName', $gettext('N/A')) }} @@ -111,7 +111,7 @@ </tr> <tr> <td> - <translate :translate-context="'Content/*/*'">Total users</translate> + <translate translate-context="Content/*/*">Total users</translate> </td> <td> {{ lodash.get(object, 'nodeinfo.payload.usage.users.total', $gettext('N/A')) }} @@ -121,10 +121,10 @@ <template v-if="object.nodeinfo && object.nodeinfo.status === 'error'"> <tr> <td> - <translate :translate-context="'Content/Moderation/Table.Label'">Status</translate> + <translate translate-context="Content/Moderation/Table.Label">Status</translate> </td> <td> - <translate :translate-context="'Content/Moderation/Table'">Error while fetching node info</translate> + <translate translate-context="Content/Moderation/Table">Error while fetching node info</translate> <span :data-tooltip="object.nodeinfo.error"><i class="question circle icon"></i></span> </td> @@ -133,7 +133,7 @@ </tbody> </table> <ajax-button @action-done="refreshNodeInfo" method="get" :url="'manage/federation/domains/' + object.name + '/nodeinfo/'"> - <translate :translate-context="'Content/Moderation/Button.Label/Verb'">Refresh node info</translate> + <translate translate-context="Content/Moderation/Button.Label/Verb">Refresh node info</translate> </ajax-button> </section> </div> @@ -142,7 +142,7 @@ <h3 class="ui header"> <i class="feed icon"></i> <div class="content"> - <translate :translate-context="'Content/Moderation/Title'">Activity</translate> + <translate translate-context="Content/Moderation/Title">Activity</translate> <span :data-tooltip="labels.statsWarning"><i class="question circle icon"></i></span> </div> @@ -159,7 +159,7 @@ <td> <router-link :to="{name: 'manage.moderation.accounts.list', query: {q: 'domain:' + object.name }}"> - <translate :translate-context="'Content/Moderation/Table.Label.Link'">Known accounts</translate> + <translate translate-context="Content/Moderation/Table.Label.Link">Known accounts</translate> </router-link> </td> @@ -169,7 +169,7 @@ </tr> <tr> <td> - <translate :translate-context="'Content/Moderation/Table.Label/Noun'">Emitted messages</translate> + <translate translate-context="Content/Moderation/Table.Label/Noun">Emitted messages</translate> </td> <td> {{ stats.outbox_activities}} @@ -177,7 +177,7 @@ </tr> <tr> <td> - <translate :translate-context="'Content/Moderation/Table.Label/Noun'">Received library follows</translate> + <translate translate-context="Content/Moderation/Table.Label/Noun">Received library follows</translate> </td> <td> {{ stats.received_library_follows}} @@ -185,7 +185,7 @@ </tr> <tr> <td> - <translate :translate-context="'Content/Moderation/Table.Label/Noun'">Emitted library follows</translate> + <translate translate-context="Content/Moderation/Table.Label/Noun">Emitted library follows</translate> </td> <td> {{ stats.emitted_library_follows}} @@ -200,7 +200,7 @@ <h3 class="ui header"> <i class="music icon"></i> <div class="content"> - <translate :translate-context="'Content/Moderation/Title'">Audio content</translate> + <translate translate-context="Content/Moderation/Title">Audio content</translate> <span :data-tooltip="labels.statsWarning"><i class="question circle icon"></i></span> </div> @@ -215,7 +215,7 @@ <tbody> <tr> <td> - <translate :translate-context="'Content/Moderation/Table.Label/Noun'">Cached size</translate> + <translate translate-context="Content/Moderation/Table.Label/Noun">Cached size</translate> </td> <td> {{ stats.media_downloaded_size | humanSize }} @@ -223,7 +223,7 @@ </tr> <tr> <td> - <translate :translate-context="'Content/Moderation/Table.Label'">Total size</translate> + <translate translate-context="Content/Moderation/Table.Label">Total size</translate> </td> <td> {{ stats.media_total_size | humanSize }} @@ -231,7 +231,7 @@ </tr> <tr> <td> - <translate :translate-context="'Content/Moderation/Table.Label'">Libraries</translate> + <translate translate-context="Content/Moderation/Table.Label">Libraries</translate> </td> <td> {{ stats.libraries }} @@ -239,7 +239,7 @@ </tr> <tr> <td> - <translate :translate-context="'Content/Moderation/Table.Label/Noun'">Uploads</translate> + <translate translate-context="Content/Moderation/Table.Label/Noun">Uploads</translate> </td> <td> {{ stats.uploads }} @@ -247,7 +247,7 @@ </tr> <tr> <td> - <translate :translate-context="'Content/*/*'">Artists</translate> + <translate translate-context="Content/*/*">Artists</translate> </td> <td> {{ stats.artists }} @@ -255,7 +255,7 @@ </tr> <tr> <td> - <translate :translate-context="'Content/*/*'">Albums</translate> + <translate translate-context="Content/*/*">Albums</translate> </td> <td> {{ stats.albums}} @@ -263,7 +263,7 @@ </tr> <tr> <td> - <translate :translate-context="'Content/*/*'">Tracks</translate> + <translate translate-context="Content/*/*">Tracks</translate> </td> <td> {{ stats.tracks }} diff --git a/front/src/views/admin/moderation/DomainsList.vue b/front/src/views/admin/moderation/DomainsList.vue index 4b06b67e0..f39d1bfbd 100644 --- a/front/src/views/admin/moderation/DomainsList.vue +++ b/front/src/views/admin/moderation/DomainsList.vue @@ -1,22 +1,22 @@ <template> <main v-title="labels.domains"> <section class="ui vertical stripe segment"> - <h2 class="ui left floated header"><translate :translate-context="'Content/Moderation/Title'">Domains</translate></h2> + <h2 class="ui left floated header"><translate translate-context="Content/Moderation/Title">Domains</translate></h2> <form class="ui right floated form" @submit.prevent="createDomain"> <div v-if="errors && errors.length > 0" class="ui negative message"> - <div class="header"><translate :translate-context="'Content/Moderation/Message.Title'">Error while creating domain</translate></div> + <div class="header"><translate translate-context="Content/Moderation/Message.Title">Error while creating domain</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> </ul> </div> <div class="inline fields"> <div class="field"> - <label for="domain"><translate :translate-context="'Content/Moderation/Form.Label/Verb'">Add a domain</translate></label> + <label for="domain"><translate translate-context="Content/Moderation/Form.Label/Verb">Add a domain</translate></label> <input type="text" name="domain" id="domain" v-model="domainName"> </div> <div class="field"> <button :class="['ui', {'loading': isCreating}, 'green', 'button']" type="submit" :disabled="isCreating"> - <label for="domain"><translate :translate-context="'Content/Moderation/Button/Verb'">Add</translate></label> + <label for="domain"><translate translate-context="Content/Moderation/Button/Verb">Add</translate></label> </button> </div> </div> diff --git a/front/src/views/admin/users/Base.vue b/front/src/views/admin/users/Base.vue index 1c526d112..e1fa6f22e 100644 --- a/front/src/views/admin/users/Base.vue +++ b/front/src/views/admin/users/Base.vue @@ -3,10 +3,10 @@ <nav class="ui secondary pointing menu" role="navigation" :aria-label="labels.secondaryMenu"> <router-link class="ui item" - :to="{name: 'manage.users.users.list'}"><translate :translate-context="'*/Admin/Link'">Users</translate></router-link> + :to="{name: 'manage.users.users.list'}"><translate translate-context="*/Admin/Link">Users</translate></router-link> <router-link class="ui item" - :to="{name: 'manage.users.invitations.list'}"><translate :translate-context="'Menu/Admin/Link'">Invitations</translate></router-link> + :to="{name: 'manage.users.invitations.list'}"><translate translate-context="Menu/Admin/Link">Invitations</translate></router-link> </nav> <router-view :key="$route.fullPath"></router-view> </div> diff --git a/front/src/views/admin/users/InvitationsList.vue b/front/src/views/admin/users/InvitationsList.vue index 9dcb1f172..4e3920c50 100644 --- a/front/src/views/admin/users/InvitationsList.vue +++ b/front/src/views/admin/users/InvitationsList.vue @@ -1,7 +1,7 @@ <template> <main v-title="labels.invitations"> <section class="ui vertical stripe segment"> - <h2 class="ui header"><translate :translate-context="'*/Admin/Title'">Invitations</translate></h2> + <h2 class="ui header"><translate translate-context="*/Admin/Title">Invitations</translate></h2> <invitation-form></invitation-form> <div class="ui hidden divider"></div> <invitations-table></invitations-table> diff --git a/front/src/views/admin/users/UsersList.vue b/front/src/views/admin/users/UsersList.vue index 38b9fd8e8..fc307074c 100644 --- a/front/src/views/admin/users/UsersList.vue +++ b/front/src/views/admin/users/UsersList.vue @@ -1,7 +1,7 @@ <template> <main v-title="labels.users"> <section class="ui vertical stripe segment"> - <h2 class="ui header"><translate :translate-context="'*/Admin/Title'">Users</translate></h2> + <h2 class="ui header"><translate translate-context="*/Admin/Title">Users</translate></h2> <div class="ui hidden divider"></div> <users-table></users-table> </section> diff --git a/front/src/views/auth/EmailConfirm.vue b/front/src/views/auth/EmailConfirm.vue index 554b424ae..9b11c4efd 100644 --- a/front/src/views/auth/EmailConfirm.vue +++ b/front/src/views/auth/EmailConfirm.vue @@ -2,29 +2,29 @@ <main class="main pusher" v-title="labels.confirm"> <section class="ui vertical stripe segment"> <div class="ui small text container"> - <h2><translate :translate-context="'Content/Signup/Title'">Confirm your e-mail address</translate></h2> + <h2><translate translate-context="Content/Signup/Title">Confirm your e-mail address</translate></h2> <form v-if="!success" class="ui form" @submit.prevent="submit()"> <div v-if="errors.length > 0" class="ui negative message"> - <div class="header"><translate :translate-context="'Content/Signup/Paragraph'">Could not confirm your e-mail address</translate></div> + <div class="header"><translate translate-context="Content/Signup/Paragraph">Could not confirm your e-mail address</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> </ul> </div> <div class="field"> - <label><translate :translate-context="'Content/Signup/Form.Label'">Confirmation code</translate></label> + <label><translate translate-context="Content/Signup/Form.Label">Confirmation code</translate></label> <input name="confirmation-code" type="text" required v-model="key" /> </div> <router-link :to="{path: '/login'}"> - <translate :translate-context="'Content/Signup/Link/Verb'">Return to login</translate> + <translate translate-context="Content/Signup/Link/Verb">Return to login</translate> </router-link> <button :class="['ui', {'loading': isLoading}, 'right', 'floated', 'green', 'button']" type="submit"> - <translate :translate-context="'Content/Signup/Button.Label/Verb'">Confirm your e-mail address</translate></button> + <translate translate-context="Content/Signup/Button.Label/Verb">Confirm your e-mail address</translate></button> </form> <div v-else class="ui positive message"> - <div class="header"><translate :translate-context="'Content/Signup/Message'">E-mail address confirmed</translate></div> - <p><translate :translate-context="'Content/Signup/Paragraph'">You can now use the service without limitations.</translate></p> + <div class="header"><translate translate-context="Content/Signup/Message">E-mail address confirmed</translate></div> + <p><translate translate-context="Content/Signup/Paragraph">You can now use the service without limitations.</translate></p> <router-link :to="{name: 'login'}"> - <translate :translate-context="'Content/Signup/Link/Verb'">Proceed to login</translate> + <translate translate-context="Content/Signup/Link/Verb">Proceed to login</translate> </router-link> </div> </div> diff --git a/front/src/views/auth/PasswordReset.vue b/front/src/views/auth/PasswordReset.vue index 1cba54bce..8b304fac4 100644 --- a/front/src/views/auth/PasswordReset.vue +++ b/front/src/views/auth/PasswordReset.vue @@ -2,17 +2,17 @@ <main class="main pusher" v-title="labels.reset"> <section class="ui vertical stripe segment"> <div class="ui small text container"> - <h2><translate :translate-context="'Content/Signup/Title'">Reset your password</translate></h2> + <h2><translate translate-context="Content/Signup/Title">Reset your password</translate></h2> <form class="ui form" @submit.prevent="submit()"> <div v-if="errors.length > 0" class="ui negative message"> - <div class="header"><translate :translate-context="'Content/Signup/Card.Title'">Error while asking for a password reset</translate></div> + <div class="header"><translate translate-context="Content/Signup/Card.Title">Error while asking for a password reset</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> </ul> </div> - <p><translate :translate-context="'Content/Signup/Paragraph'">Use this form to request a password reset. We will send an email to the given address with instructions to reset your password.</translate></p> + <p><translate translate-context="Content/Signup/Paragraph">Use this form to request a password reset. We will send an email to the given address with instructions to reset your password.</translate></p> <div class="field"> - <label><translate :translate-context="'Content/Signup/Input.Label'">Account's email</translate></label> + <label><translate translate-context="Content/Signup/Input.Label">Account's email</translate></label> <input required ref="email" @@ -23,10 +23,10 @@ v-model="email"> </div> <router-link :to="{path: '/login'}"> - <translate :translate-context="'Content/Signup/Link'">Back to login</translate> + <translate translate-context="Content/Signup/Link">Back to login</translate> </router-link> <button :class="['ui', {'loading': isLoading}, 'right', 'floated', 'green', 'button']" type="submit"> - <translate :translate-context="'Content/Signup/Button.Label/Verb'">Ask for a password reset</translate></button> + <translate translate-context="Content/Signup/Button.Label/Verb">Ask for a password reset</translate></button> </form> </div> </section> diff --git a/front/src/views/auth/PasswordResetConfirm.vue b/front/src/views/auth/PasswordResetConfirm.vue index 22f06ddba..2ed96a986 100644 --- a/front/src/views/auth/PasswordResetConfirm.vue +++ b/front/src/views/auth/PasswordResetConfirm.vue @@ -2,34 +2,34 @@ <main class="main pusher" v-title="labels.changePassword"> <section class="ui vertical stripe segment"> <div class="ui small text container"> - <h2><translate :translate-context="'Content/Signup/Title'">Change your password</translate></h2> + <h2><translate translate-context="Content/Signup/Title">Change your password</translate></h2> <form v-if="!success" class="ui form" @submit.prevent="submit()"> <div v-if="errors.length > 0" class="ui negative message"> - <div class="header"><translate :translate-context="'Content/Signup/Card.Title'">Error while changing your password</translate></div> + <div class="header"><translate translate-context="Content/Signup/Card.Title">Error while changing your password</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> </ul> </div> <template v-if="token && uid"> <div class="field"> - <label><translate :translate-context="'Content/Signup/Input.Label'">New password</translate></label> + <label><translate translate-context="Content/Signup/Input.Label">New password</translate></label> <password-input v-model="newPassword" /> </div> <router-link :to="{path: '/login'}"> - <translate :translate-context="'Content/Signup/Link'">Back to login</translate> + <translate translate-context="Content/Signup/Link">Back to login</translate> </router-link> <button :class="['ui', {'loading': isLoading}, 'right', 'floated', 'green', 'button']" type="submit"> - <translate :translate-context="'Content/Signup/Button.Label'">Update your password</translate></button> + <translate translate-context="Content/Signup/Button.Label">Update your password</translate></button> </template> <template v-else> - <p><translate :translate-context="'Content/Signup/Paragraph'">If the email address provided in the previous step is valid and binded to a user account, you should receive an email with reset instructions in the next couple of minutes.</translate></p> + <p><translate translate-context="Content/Signup/Paragraph">If the email address provided in the previous step is valid and binded to a user account, you should receive an email with reset instructions in the next couple of minutes.</translate></p> </template> </form> <div v-else class="ui positive message"> - <div class="header"><translate :translate-context="'Content/Signup/Card.Title'">Password updated successfully</translate></div> - <p><translate :translate-context="'Content/Signup/Card.Paragraph'">Your password has been updated successfully.</translate></p> + <div class="header"><translate translate-context="Content/Signup/Card.Title">Password updated successfully</translate></div> + <p><translate translate-context="Content/Signup/Card.Paragraph">Your password has been updated successfully.</translate></p> <router-link :to="{name: 'login'}"> - <translate :translate-context="'Content/Signup/Link/Verb'">Proceed to login</translate> + <translate translate-context="Content/Signup/Link/Verb">Proceed to login</translate> </router-link> </div> </div> diff --git a/front/src/views/content/Base.vue b/front/src/views/content/Base.vue index daa45e4dc..c6523b744 100644 --- a/front/src/views/content/Base.vue +++ b/front/src/views/content/Base.vue @@ -3,10 +3,10 @@ <nav class="ui secondary pointing menu" role="navigation" :aria-label="labels.secondaryMenu"> <router-link class="ui item" - :to="{name: 'content.libraries.index'}"><translate :translate-context="'Menu/Library/Tab.Link'">Libraries</translate></router-link> + :to="{name: 'content.libraries.index'}"><translate translate-context="Menu/Library/Tab.Link">Libraries</translate></router-link> <router-link class="ui item" - :to="{name: 'content.libraries.files'}"><translate :translate-context="'Menu/Library/Tab.Link'">Tracks</translate></router-link> + :to="{name: 'content.libraries.files'}"><translate translate-context="Menu/Library/Tab.Link">Tracks</translate></router-link> </nav> <router-view :key="$route.fullPath"></router-view> </main> diff --git a/front/src/views/content/Home.vue b/front/src/views/content/Home.vue index d7753fd3a..de8a86e25 100644 --- a/front/src/views/content/Home.vue +++ b/front/src/views/content/Home.vue @@ -2,22 +2,22 @@ <section class="ui vertical aligned stripe segment" v-title="labels.title"> <div class="ui text container"> <h1>{{ labels.title }}</h1> - <p><translate :translate-context="'Content/Library/Paragraph'">There are various ways to grab new content and make it available here.</translate></p> + <p><translate translate-context="Content/Library/Paragraph">There are various ways to grab new content and make it available here.</translate></p> <div class="ui segment"> - <h2><translate :translate-context="'Content/Library/Title/Verb'">Upload audio content</translate></h2> - <p><translate :translate-context="'Content/Library/Paragraph'">Upload music files (MP3, OGG, FLAC, etc.) from your personal library directly from your browser to enjoy them here.</translate></p> + <h2><translate translate-context="Content/Library/Title/Verb">Upload audio content</translate></h2> + <p><translate translate-context="Content/Library/Paragraph">Upload music files (MP3, OGG, FLAC, etc.) from your personal library directly from your browser to enjoy them here.</translate></p> <p> - <strong><translate :translate-context="'Content/Library/Paragraph'" :translate-params="{quota: defaultQuota}">This instance offers up to %{quota} of storage space for every user.</translate></strong> + <strong><translate translate-context="Content/Library/Paragraph" :translate-params="{quota: defaultQuota}">This instance offers up to %{quota} of storage space for every user.</translate></strong> </p> <router-link :to="{name: 'content.libraries.index'}" class="ui green button"> - <translate :translate-context="'Content/Library/Button.Label/Verb'">Get started</translate> + <translate translate-context="Content/Library/Button.Label/Verb">Get started</translate> </router-link> </div> <div class="ui segment"> - <h2><translate :translate-context="'Content/Library/Title/Verb'">Follow remote libraries</translate></h2> - <p><translate :translate-context="'Content/Library/Paragraph'">You can follow libraries from other users to get access to new music. Public libraries can be followed immediatly, while following a private library requires approval from its owner.</translate></p> + <h2><translate translate-context="Content/Library/Title/Verb">Follow remote libraries</translate></h2> + <p><translate translate-context="Content/Library/Paragraph">You can follow libraries from other users to get access to new music. Public libraries can be followed immediatly, while following a private library requires approval from its owner.</translate></p> <router-link :to="{name: 'content.remote.index'}" class="ui green button"> - <translate :translate-context="'Content/Library/Button.Label/Verb'">Get started</translate> + <translate translate-context="Content/Library/Button.Label/Verb">Get started</translate> </router-link> </div> diff --git a/front/src/views/content/libraries/Card.vue b/front/src/views/content/libraries/Card.vue index b60c2c1b9..3eb44f72d 100644 --- a/front/src/views/content/libraries/Card.vue +++ b/front/src/views/content/libraries/Card.vue @@ -37,15 +37,15 @@ {{ library.size | humanSize }} </span> <i class="music icon"></i> - <translate :translate-context="'Content/Library/Card.List item'" :translate-params="{count: library.uploads_count}" :translate-n="library.uploads_count" translate-plural="%{ count } tracks">%{ count } track</translate> + <translate translate-context="Content/Library/Card.List item" :translate-params="{count: library.uploads_count}" :translate-n="library.uploads_count" translate-plural="%{ count } tracks">%{ count } track</translate> </div> </div> <div class="ui bottom basic attached buttons"> <router-link :to="{name: 'content.libraries.detail.upload', params: {id: library.uuid}}" class="ui button"> - <translate :translate-context="'Content/Library/Card.Button.Label/Verb'">Upload</translate> + <translate translate-context="Content/Library/Card.Button.Label/Verb">Upload</translate> </router-link> <router-link :to="{name: 'content.libraries.detail', params: {id: library.uuid}}" exact class="ui button"> - <translate :translate-context="'Content/Library/Card.Button.Label/Noun'">Details</translate> + <translate translate-context="Content/Library/Card.Button.Label/Noun">Details</translate> </router-link> </div> </div> diff --git a/front/src/views/content/libraries/Detail.vue b/front/src/views/content/libraries/Detail.vue index 651447f36..c3f6f0cb0 100644 --- a/front/src/views/content/libraries/Detail.vue +++ b/front/src/views/content/libraries/Detail.vue @@ -1,33 +1,33 @@ <template> <section class="ui vertical aligned stripe segment"> <div v-if="isLoadingLibrary" :class="['ui', {'active': isLoadingLibrary}, 'inverted', 'dimmer']"> - <div class="ui text loader"><translate :translate-context="'Content/Library/Paragraph'">Loading library data…</translate></div> + <div class="ui text loader"><translate translate-context="Content/Library/Paragraph">Loading library data…</translate></div> </div> <detail-area v-else :library="library"> <div class="ui top attached tabular menu"> - <a :class="['item', {active: currentTab === 'follows'}]" @click="currentTab = 'follows'"><translate :translate-context="'Content/Library/Tab.Title'">Followers</translate></a> - <a :class="['item', {active: currentTab === 'tracks'}]" @click="currentTab = 'tracks'"><translate :translate-context="'*/*/*'">Tracks</translate></a> - <a :class="['item', {active: currentTab === 'edit'}]" @click="currentTab = 'edit'"><translate :translate-context="'*/*/*/Verb'">Edit</translate></a> + <a :class="['item', {active: currentTab === 'follows'}]" @click="currentTab = 'follows'"><translate translate-context="Content/Library/Tab.Title">Followers</translate></a> + <a :class="['item', {active: currentTab === 'tracks'}]" @click="currentTab = 'tracks'"><translate translate-context="*/*/*">Tracks</translate></a> + <a :class="['item', {active: currentTab === 'edit'}]" @click="currentTab = 'edit'"><translate translate-context="*/*/*/Verb">Edit</translate></a> </div> <div :class="['ui', 'bottom', 'attached', 'segment', {hidden: currentTab != 'follows'}]"> <div class="ui form"> <div class="field"> - <label><translate :translate-context="'Content/Library/Title'">Sharing link</translate></label> - <p><translate :translate-context="'Content/Library/Paragraph'">Share this link with other users so they can request access to your library.</translate></p> + <label><translate translate-context="Content/Library/Title">Sharing link</translate></label> + <p><translate translate-context="Content/Library/Paragraph">Share this link with other users so they can request access to your library.</translate></p> <copy-input :value="library.fid" /> </div> </div> <div class="ui hidden divider"></div> <div v-if="isLoadingFollows" :class="['ui', {'active': isLoadingFollows}, 'inverted', 'dimmer']"> - <div class="ui text loader"><translate :translate-context="'Content/Library/Paragraph'">Loading followers…</translate></div> + <div class="ui text loader"><translate translate-context="Content/Library/Paragraph">Loading followers…</translate></div> </div> <table v-else-if="follows && follows.count > 0" class="ui table"> <thead> <tr> - <th><translate :translate-context="'Content/Library/Table.Label'">User</translate></th> - <th><translate :translate-context="'Content/Library/Table.Label'">Date</translate></th> - <th><translate :translate-context="'Content/Library/Table.Label'">Status</translate></th> - <th><translate :translate-context="'Content/Library/Table.Label'">Action</translate></th> + <th><translate translate-context="Content/Library/Table.Label">User</translate></th> + <th><translate translate-context="Content/Library/Table.Label">Date</translate></th> + <th><translate translate-context="Content/Library/Table.Label">Status</translate></th> + <th><translate translate-context="Content/Library/Table.Label">Action</translate></th> </tr> </thead> <tr v-for="follow in follows.results" :key="follow.fid"> @@ -35,27 +35,27 @@ <td><human-date :date="follow.creation_date" /></td> <td> <span :class="['ui', 'yellow', 'basic', 'label']" v-if="follow.approved === null"> - <translate :translate-context="'Content/Library/Table/Short'">Pending approval</translate> + <translate translate-context="Content/Library/Table/Short">Pending approval</translate> </span> <span :class="['ui', 'green', 'basic', 'label']" v-else-if="follow.approved === true"> - <translate :translate-context="'Content/Library/Table/Short'">Accepted</translate> + <translate translate-context="Content/Library/Table/Short">Accepted</translate> </span> <span :class="['ui', 'red', 'basic', 'label']" v-else-if="follow.approved === false"> - <translate :translate-context="'Content/Library/Table/Short'">Rejected</translate> + <translate translate-context="Content/Library/Table/Short">Rejected</translate> </span> </td> <td> <div @click="updateApproved(follow, true)" :class="['ui', 'mini', 'icon', 'labeled', 'green', 'button']" v-if="follow.approved === null || follow.approved === false"> - <i class="ui check icon"></i> <translate :translate-context="'Content/Library/Button.Label'">Accept</translate> + <i class="ui check icon"></i> <translate translate-context="Content/Library/Button.Label">Accept</translate> </div> <div @click="updateApproved(follow, false)" :class="['ui', 'mini', 'icon', 'labeled', 'red', 'button']" v-if="follow.approved === null || follow.approved === true"> - <i class="ui x icon"></i> <translate :translate-context="'Content/Library/Button.Label'">Reject</translate> + <i class="ui x icon"></i> <translate translate-context="Content/Library/Button.Label">Reject</translate> </div> </td> </tr> </table> - <p v-else><translate :translate-context="'Content/Library/Paragraph'">Nobody is following this library</translate></p> + <p v-else><translate translate-context="Content/Library/Paragraph">Nobody is following this library</translate></p> </div> <div :class="['ui', 'bottom', 'attached', 'segment', {hidden: currentTab != 'tracks'}]"> <library-files-table :filters="{library: library.uuid}"></library-files-table> diff --git a/front/src/views/content/libraries/DetailArea.vue b/front/src/views/content/libraries/DetailArea.vue index 42f6bac89..0a73c90b9 100644 --- a/front/src/views/content/libraries/DetailArea.vue +++ b/front/src/views/content/libraries/DetailArea.vue @@ -2,7 +2,7 @@ <div> <div class="ui two column row"> <div class="column"> - <h3 class="ui header"><translate :translate-context="'Content/Library/Title'">Current library</translate></h3> + <h3 class="ui header"><translate translate-context="Content/Library/Title">Current library</translate></h3> <library-card :library="library" /> </div> </div> diff --git a/front/src/views/content/libraries/FilesTable.vue b/front/src/views/content/libraries/FilesTable.vue index 17be36593..9d7660714 100644 --- a/front/src/views/content/libraries/FilesTable.vue +++ b/front/src/views/content/libraries/FilesTable.vue @@ -3,23 +3,23 @@ <div class="ui inline form"> <div class="fields"> <div class="ui six wide field"> - <label><translate :translate-context="'Content/Library/Input.Label/Verb'">Search</translate></label> + <label><translate translate-context="Content/Library/Input.Label/Verb">Search</translate></label> <form @submit.prevent="search.query = $refs.search.value"> <input name="search" ref="search" type="text" :value="search.query" :placeholder="labels.searchPlaceholder" /> </form> </div> <div class="field"> - <label><translate :translate-context="'Content/Library/Dropdown.Label/Noun'">Import status</translate></label> + <label><translate translate-context="Content/Library/Dropdown.Label/Noun">Import status</translate></label> <select class="ui dropdown" @change="addSearchToken('status', $event.target.value)" :value="getTokenValue('status', '')"> - <option value=""><translate :translate-context="'Content/Library/Dropdown'">All</translate></option> - <option value="pending"><translate :translate-context="'Content/Library/Dropdown'">Pending</translate></option> - <option value="skipped"><translate :translate-context="'Content/Library/Dropdown'">Skipped</translate></option> - <option value="errored"><translate :translate-context="'Content/Library/Dropdown'">Failed</translate></option> - <option value="finished"><translate :translate-context="'Content/Library/Dropdown'">Finished</translate></option> + <option value=""><translate translate-context="Content/Library/Dropdown">All</translate></option> + <option value="pending"><translate translate-context="Content/Library/Dropdown">Pending</translate></option> + <option value="skipped"><translate translate-context="Content/Library/Dropdown">Skipped</translate></option> + <option value="errored"><translate translate-context="Content/Library/Dropdown">Failed</translate></option> + <option value="finished"><translate translate-context="Content/Library/Dropdown">Finished</translate></option> </select> </div> <div class="field"> - <label><translate :translate-context="'Content/Library/Dropdown.Label/Noun'">Ordering</translate></label> + <label><translate translate-context="Content/Library/Dropdown.Label/Noun">Ordering</translate></label> <select class="ui dropdown" v-model="ordering"> <option v-for="option in orderingOptions" :value="option[0]"> {{ sharedLabels.filters[option[1]] }} @@ -27,10 +27,10 @@ </select> </div> <div class="field"> - <label><translate :translate-context="'Content/Library/Dropdown.Label/Noun'">Ordering direction</translate></label> + <label><translate translate-context="Content/Library/Dropdown.Label/Noun">Ordering direction</translate></label> <select class="ui dropdown" v-model="orderingDirection"> - <option value="+"><translate :translate-context="'Content/Library/Dropdown'">Ascending</translate></option> - <option value="-"><translate :translate-context="'Content/Library/Dropdown'">Descending</translate></option> + <option value="+"><translate translate-context="Content/Library/Dropdown">Ascending</translate></option> + <option value="-"><translate translate-context="Content/Library/Dropdown">Descending</translate></option> </select> </div> </div> @@ -52,13 +52,13 @@ @refresh="fetchData" :filters="actionFilters"> <template slot="header-cells"> - <th><translate :translate-context="'*/*/*'">Title</translate></th> - <th><translate :translate-context="'*/*/*'">Artist</translate></th> - <th><translate :translate-context="'*/*/*'">Album</translate></th> - <th><translate :translate-context="'*/*/*/Noun'">Upload date</translate></th> - <th><translate :translate-context="'*/*/*/Noun'">Import status</translate></th> - <th><translate :translate-context="'*/*/*'">Duration</translate></th> - <th><translate :translate-context="'*/*/*'">Size</translate></th> + <th><translate translate-context="*/*/*">Title</translate></th> + <th><translate translate-context="*/*/*">Artist</translate></th> + <th><translate translate-context="*/*/*">Album</translate></th> + <th><translate translate-context="*/*/*/Noun">Upload date</translate></th> + <th><translate translate-context="*/*/*/Noun">Import status</translate></th> + <th><translate translate-context="*/*/*">Duration</translate></th> + <th><translate translate-context="*/*/*">Size</translate></th> </template> <template slot="row-cells" slot-scope="scope"> <template v-if="scope.obj.track"> @@ -90,13 +90,13 @@ {{ time.parse(scope.obj.duration) }} </td> <td v-else> - <translate :translate-context="'*/*/*'">N/A</translate> + <translate translate-context="*/*/*">N/A</translate> </td> <td v-if="scope.obj.size"> {{ scope.obj.size | humanSize }} </td> <td v-else> - <translate :translate-context="'*/*/*'">N/A</translate> + <translate translate-context="*/*/*">N/A</translate> </td> </template> </action-table> @@ -112,7 +112,7 @@ ></pagination> <span v-if="result && result.results.length > 0"> - <translate :translate-context="'Content/Library/Paragraph'" + <translate translate-context="Content/Library/Paragraph" :translate-params="{start: ((page-1) * paginateBy) + 1, end: ((page-1) * paginateBy) + result.results.length, total: result.count}"> Showing results %{ start }-%{ end } on %{ total } </translate> diff --git a/front/src/views/content/libraries/Form.vue b/front/src/views/content/libraries/Form.vue index 378ca9b06..00db42380 100644 --- a/front/src/views/content/libraries/Form.vue +++ b/front/src/views/content/libraries/Form.vue @@ -1,43 +1,43 @@ <template> <form class="ui form" @submit.prevent="submit"> - <p v-if="!library"><translate :translate-context="'Content/Library/Paragraph'">Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family.</translate></p> + <p v-if="!library"><translate translate-context="Content/Library/Paragraph">Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family.</translate></p> <div v-if="errors.length > 0" class="ui negative message"> - <div class="header"><translate :translate-context="'Content/Library/Error message.Title'">Error</translate></div> + <div class="header"><translate translate-context="Content/Library/Error message.Title">Error</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> </ul> </div> <div class="required field"> - <label><translate :translate-context="'Content/Library/Input.Label'">Name</translate></label> + <label><translate translate-context="Content/Library/Input.Label">Name</translate></label> <input name="name" v-model="currentName" :placeholder="labels.namePlaceholder" required maxlength="100"> </div> <div class="field"> - <label><translate :translate-context="'Content/Library/Input.Label'">Description</translate></label> + <label><translate translate-context="Content/Library/Input.Label">Description</translate></label> <textarea v-model="currentDescription" :placeholder="labels.descriptionPlaceholder" maxlength="2000"></textarea> </div> <div class="field"> - <label><translate :translate-context="'Content/Library/Dropdown.Label'">Visibility</translate></label> - <p><translate :translate-context="'Content/Library/Paragraph'">You are able to share your library with other people, regardless of its visibility.</translate></p> + <label><translate translate-context="Content/Library/Dropdown.Label">Visibility</translate></label> + <p><translate translate-context="Content/Library/Paragraph">You are able to share your library with other people, regardless of its visibility.</translate></p> <select class="ui dropdown" v-model="currentVisibilityLevel"> <option :value="c" v-for="c in ['me', 'instance', 'everyone']">{{ labels.visibility[c] }}</option> </select> </div> <button class="ui submit button" type="submit"> - <translate :translate-context="'Content/Library/Button.Label/Verb'" v-if="library">Update library</translate> - <translate :translate-context="'Content/Library/Button.Label/Verb'" v-else>Create library</translate> + <translate translate-context="Content/Library/Button.Label/Verb" v-if="library">Update library</translate> + <translate translate-context="Content/Library/Button.Label/Verb" v-else>Create library</translate> </button> <dangerous-button v-if="library" class="right floated basic button" color='red' @confirm="remove()"> - <translate :translate-context="'Content/Library/Button.Label/Verb'">Delete</translate> + <translate translate-context="Content/Library/Button.Label/Verb">Delete</translate> <p slot="modal-header"> - <translate :translate-context="'Popup/Library/Title'">Delete this library?</translate> + <translate translate-context="Popup/Library/Title">Delete this library?</translate> </p> <p slot="modal-content"> - <translate :translate-context="'Popup/Library/Paragraph'"> + <translate translate-context="Popup/Library/Paragraph"> The library and all its tracks will be deleted. This can not be undone. </translate> </p> <div slot="modal-confirm"> - <translate :translate-context="'Popup/Library/Button.Label/Verb'">Delete library</translate> + <translate translate-context="Popup/Library/Button.Label/Verb">Delete library</translate> </div> </dangerous-button> </form> diff --git a/front/src/views/content/libraries/Home.vue b/front/src/views/content/libraries/Home.vue index 76ebc0ab2..69b4ce3a2 100644 --- a/front/src/views/content/libraries/Home.vue +++ b/front/src/views/content/libraries/Home.vue @@ -1,18 +1,18 @@ <template> <section class="ui vertical aligned stripe segment"> <div v-if="isLoading" :class="['ui', {'active': isLoading}, 'inverted', 'dimmer']"> - <div class="ui text loader"><translate :translate-context="'Content/Library/Paragraph'">Loading Libraries…</translate></div> + <div class="ui text loader"><translate translate-context="Content/Library/Paragraph">Loading Libraries…</translate></div> </div> <div v-else class="ui text container"> - <h1 class="ui header"><translate :translate-context="'Content/Library/Title'">My libraries</translate></h1> + <h1 class="ui header"><translate translate-context="Content/Library/Title">My libraries</translate></h1> <p v-if="libraries.length == 0"> - <translate :translate-context="'Content/Library/Paragraph'">Looks like you don't have a library, it's time to create one.</translate> + <translate translate-context="Content/Library/Paragraph">Looks like you don't have a library, it's time to create one.</translate> </p> <a @click="hiddenForm = !hiddenForm"> <i class="plus icon" v-if="hiddenForm" /> <i class="minus icon" v-else /> - <translate :translate-context="'Content/Library/Link/Verb'">Create a new library</translate> + <translate translate-context="Content/Library/Link/Verb">Create a new library</translate> </a> <library-form :library="null" v-if="!hiddenForm" @created="libraryCreated" /> <div class="ui hidden divider"></div> diff --git a/front/src/views/content/libraries/Quota.vue b/front/src/views/content/libraries/Quota.vue index ddc304f77..fc6a8db28 100644 --- a/front/src/views/content/libraries/Quota.vue +++ b/front/src/views/content/libraries/Quota.vue @@ -1,15 +1,15 @@ <template> <div class="ui segment"> - <h3 class="ui header"><translate :translate-context="'Content/Library/Title'">Current usage</translate></h3> + <h3 class="ui header"><translate translate-context="Content/Library/Title">Current usage</translate></h3> <div v-if="isLoading" :class="['ui', {'active': isLoading}, 'inverted', 'dimmer']"> - <div class="ui text loader"><translate :translate-context="'Content/Library/Paragraph'">Loading usage data…</translate></div> + <div class="ui text loader"><translate translate-context="Content/Library/Paragraph">Loading usage data…</translate></div> </div> <div :class="['ui', {'success': progress < 60}, {'yellow': progress >= 60 && progress < 96}, {'error': progress >= 95}, 'progress']"> <div class="bar" :style="{width: `${progress}%`}"> <div class="progress">{{ progress }}%</div> </div> <div class="label" v-if="quotaStatus"> - <translate :translate-context="'Content/Library/Paragraph'" :translate-params="{max: humanSize(quotaStatus.max * 1000 * 1000), current: humanSize(quotaStatus.current * 1000 * 1000)}">%{ current } used on %{ max } allowed</translate> + <translate translate-context="Content/Library/Paragraph" :translate-params="{max: humanSize(quotaStatus.max * 1000 * 1000), current: humanSize(quotaStatus.current * 1000 * 1000)}">%{ current } used on %{ max } allowed</translate> </div> </div> <div class="ui hidden divider"></div> @@ -20,24 +20,24 @@ {{ humanSize(quotaStatus.pending * 1000 * 1000) }} </div> <div class="label"> - <translate :translate-context="'Content/Library/Label'">Pending files</translate> + <translate translate-context="Content/Library/Label">Pending files</translate> </div> </div> <div> <router-link class="ui basic blue tiny button" :to="{name: 'content.libraries.files', query: {q: compileTokens([{field: 'status', value: 'pending'}])}}"> - <translate :translate-context="'Content/Library/Link/Verb'">View files</translate> + <translate translate-context="Content/Library/Link/Verb">View files</translate> </router-link> <dangerous-button color="grey" class="basic tiny" :action="purgePendingFiles"> - <translate :translate-context="'Content/Library/Button.Label/Verb'">Purge</translate> - <p slot="modal-header"><translate :translate-context="'Popup/Library/Title'">Purge pending files?</translate></p> - <p slot="modal-content"><translate :translate-context="'Popup/Library/Paragraph'">Removes uploaded but yet to be processed tracks completely, adding the corresponding data to your quota.</translate></p> - <div slot="modal-confirm"><translate :translate-context="'Popup/Library/Button.Label'">Purge</translate></div> + <translate translate-context="Content/Library/Button.Label/Verb">Purge</translate> + <p slot="modal-header"><translate translate-context="Popup/Library/Title">Purge pending files?</translate></p> + <p slot="modal-content"><translate translate-context="Popup/Library/Paragraph">Removes uploaded but yet to be processed tracks completely, adding the corresponding data to your quota.</translate></p> + <div slot="modal-confirm"><translate translate-context="Popup/Library/Button.Label">Purge</translate></div> </dangerous-button> </div> </div> @@ -47,23 +47,23 @@ {{ humanSize(quotaStatus.skipped * 1000 * 1000) }} </div> <div class="label"> - <translate :translate-context="'Content/Library/Label'">Skipped files</translate> + <translate translate-context="Content/Library/Label">Skipped files</translate> </div> </div> <div> <router-link class="ui basic blue tiny button" :to="{name: 'content.libraries.files', query: {q: compileTokens([{field: 'status', value: 'skipped'}])}}"> - <translate :translate-context="'Content/Library/Link/Verb'">View files</translate> + <translate translate-context="Content/Library/Link/Verb">View files</translate> </router-link> <dangerous-button color="grey" class="basic tiny" :action="purgeSkippedFiles"> - <translate :translate-context="'Content/Library/Button.Label/Verb'">Purge</translate> - <p slot="modal-header"><translate :translate-context="'Popup/Library/Title'">Purge skipped files?</translate></p> - <p slot="modal-content"><translate :translate-context="'Popup/Library/Paragraph'">Removes uploaded tracks skipped during the import processes completely, adding the corresponding data to your quota.</translate></p> - <div slot="modal-confirm"><translate :translate-context="'Popup/Library/Button.Label'">Purge</translate></div> + <translate translate-context="Content/Library/Button.Label/Verb">Purge</translate> + <p slot="modal-header"><translate translate-context="Popup/Library/Title">Purge skipped files?</translate></p> + <p slot="modal-content"><translate translate-context="Popup/Library/Paragraph">Removes uploaded tracks skipped during the import processes completely, adding the corresponding data to your quota.</translate></p> + <div slot="modal-confirm"><translate translate-context="Popup/Library/Button.Label">Purge</translate></div> </dangerous-button> </div> </div> @@ -73,23 +73,23 @@ {{ humanSize(quotaStatus.errored * 1000 * 1000) }} </div> <div class="label"> - <translate :translate-context="'Content/Library/Label'">Errored files</translate> + <translate translate-context="Content/Library/Label">Errored files</translate> </div> </div> <div> <router-link class="ui basic blue tiny button" :to="{name: 'content.libraries.files', query: {q: compileTokens([{field: 'status', value: 'errored'}])}}"> - <translate :translate-context="'Content/Library/Link/Verb'">View files</translate> + <translate translate-context="Content/Library/Link/Verb">View files</translate> </router-link> <dangerous-button color="grey" class="basic tiny" :action="purgeErroredFiles"> - <translate :translate-context="'Content/Library/Button.Label/Verb'">Purge</translate> - <p slot="modal-header"><translate :translate-context="'Popup/Library/Title'">Purge errored files?</translate></p> - <p slot="modal-content"><translate :translate-context="'Popup/Library/Paragraph'">Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota.</translate></p> - <div slot="modal-confirm"><translate :translate-context="'Popup/Library/Button.Label'">Purge</translate></div> + <translate translate-context="Content/Library/Button.Label/Verb">Purge</translate> + <p slot="modal-header"><translate translate-context="Popup/Library/Title">Purge errored files?</translate></p> + <p slot="modal-content"><translate translate-context="Popup/Library/Paragraph">Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota.</translate></p> + <div slot="modal-confirm"><translate translate-context="Popup/Library/Button.Label">Purge</translate></div> </dangerous-button> </div> </div> diff --git a/front/src/views/content/libraries/Upload.vue b/front/src/views/content/libraries/Upload.vue index f5c78f0b9..d4a3d8245 100644 --- a/front/src/views/content/libraries/Upload.vue +++ b/front/src/views/content/libraries/Upload.vue @@ -1,7 +1,7 @@ <template> <div class="ui vertical aligned stripe segment"> <div v-if="isLoadingLibrary" :class="['ui', {'active': isLoadingLibrary}, 'inverted', 'dimmer']"> - <div class="ui text loader"><translate :translate-context="'Content/Library/Paragraph'">Loading library data…</translate></div> + <div class="ui text loader"><translate translate-context="Content/Library/Paragraph">Loading library data…</translate></div> </div> <detail-area v-else :library="library"> <file-upload :default-import-reference="defaultImportReference" :library="library" /> diff --git a/front/src/views/content/remote/Card.vue b/front/src/views/content/remote/Card.vue index f42d0b06b..3bbdfa518 100644 --- a/front/src/views/content/remote/Card.vue +++ b/front/src/views/content/remote/Card.vue @@ -24,44 +24,44 @@ </div> <div class="meta"> <i class="music icon"></i> - <translate :translate-context="'Content/Library/Card.List item'" :translate-params="{count: library.uploads_count}" :translate-n="library.uploads_count" translate-plural="%{ count } tracks">%{ count } track</translate> + <translate translate-context="Content/Library/Card.List item" :translate-params="{count: library.uploads_count}" :translate-n="library.uploads_count" translate-plural="%{ count } tracks">%{ count } track</translate> </div> <div v-if="displayScan && latestScan" class="meta"> <template v-if="latestScan.status === 'pending'"> <i class="hourglass icon"></i> - <translate :translate-context="'Content/Library/Card.List item'">Scan pending</translate> + <translate translate-context="Content/Library/Card.List item">Scan pending</translate> </template> <template v-if="latestScan.status === 'scanning'"> <i class="loading spinner icon"></i> - <translate :translate-context="'Content/Library/Card.List item'" :translate-params="{progress: scanProgress}">Scanning… (%{ progress }%)</translate> + <translate translate-context="Content/Library/Card.List item" :translate-params="{progress: scanProgress}">Scanning… (%{ progress }%)</translate> </template> <template v-else-if="latestScan.status === 'errored'"> <i class="red download icon"></i> - <translate :translate-context="'Content/Library/Card.List item'">Problem during scanning</translate> + <translate translate-context="Content/Library/Card.List item">Problem during scanning</translate> </template> <template v-else-if="latestScan.status === 'finished' && latestScan.errored_files === 0"> <i class="green download icon"></i> - <translate :translate-context="'Content/Library/Card.List item'">Scanned</translate> + <translate translate-context="Content/Library/Card.List item">Scanned</translate> </template> <template v-else-if="latestScan.status === 'finished' && latestScan.errored_files > 0"> <i class="yellow download icon"></i> - <translate :translate-context="'Content/Library/Card.List item'">Scanned with errors</translate> + <translate translate-context="Content/Library/Card.List item">Scanned with errors</translate> </template> <span class="link right floated" @click="showScan = !showScan"> - <translate :translate-context="'Content/Library/Card.Link'">Details</translate> + <translate translate-context="Content/Library/Card.Link">Details</translate> <i v-if="showScan" class="angle down icon" /> <i v-else class="angle right icon" /> </span> <div v-if="showScan"> <template v-if="latestScan.modification_date"> - <translate :translate-context="'Content/Library/Card.List item/Noun'">Last update:</translate><human-date :date="latestScan.modification_date" /><br /> + <translate translate-context="Content/Library/Card.List item/Noun">Last update:</translate><human-date :date="latestScan.modification_date" /><br /> </template> - <translate :translate-context="'Content/Library/Card.List item/Noun'">Failed tracks:</translate> {{ latestScan.errored_files }} + <translate translate-context="Content/Library/Card.List item/Noun">Failed tracks:</translate> {{ latestScan.errored_files }} </div> </div> <div v-if="displayScan && canLaunchScan" class="clearfix"> <span class="right floated link" @click="launchScan"> - <translate :translate-context="'Content/Library/Card.Button.Label/Verb'">Scan now</translate> <i class="paper plane icon" /> + <translate translate-context="Content/Library/Card.Button.Label/Verb">Scan now</translate> <i class="paper plane icon" /> </span> </div> </div> @@ -71,7 +71,7 @@ <div v-if="displayCopyFid" class="extra content"> <div class="ui form"> <div class="field"> - <label><translate :translate-context="'Content/Library/Title'">Sharing link</translate></label> + <label><translate translate-context="Content/Library/Title">Sharing link</translate></label> <copy-input :button-classes="'basic'" :value="library.fid" /> </div> </div> @@ -81,29 +81,29 @@ v-if="!library.follow" @click="follow()" :class="['ui', 'green', {'loading': isLoadingFollow}, 'button']"> - <translate :translate-context="'Content/Library/Card.Button.Label/Verb'">Follow</translate> + <translate translate-context="Content/Library/Card.Button.Label/Verb">Follow</translate> </button> <button v-else-if="!library.follow.approved" class="ui disabled button"><i class="hourglass icon"></i> - <translate :translate-context="'Content/Library/Card.Paragraph'">Follow request pending approval</translate> + <translate translate-context="Content/Library/Card.Paragraph">Follow request pending approval</translate> </button> <button v-else-if="!library.follow.approved" class="ui disabled button"><i class="check icon"></i> - <translate :translate-context="'Content/Library/Card.Paragraph'">Following</translate> + <translate translate-context="Content/Library/Card.Paragraph">Following</translate> </button> <dangerous-button v-else-if="library.follow.approved" color="" :class="['ui', 'button']" :action="unfollow"> - <translate :translate-context="'Content/Library/Card.Button.Label/Verb'">Unfollow</translate> - <p slot="modal-header"><translate :translate-context="'Popup/Library/Title'">Unfollow this library?</translate></p> + <translate translate-context="Content/Library/Card.Button.Label/Verb">Unfollow</translate> + <p slot="modal-header"><translate translate-context="Popup/Library/Title">Unfollow this library?</translate></p> <div slot="modal-content"> - <p><translate :translate-context="'Popup/Library/Paragraph'">By unfollowing this library, you loose access to its content.</translate></p> + <p><translate translate-context="Popup/Library/Paragraph">By unfollowing this library, you loose access to its content.</translate></p> </div> - <div slot="modal-confirm"><translate :translate-context="'Popup/Library/Button.Label'">Unfollow</translate></div> + <div slot="modal-confirm"><translate translate-context="Popup/Library/Button.Label">Unfollow</translate></div> </dangerous-button> </div> </div> diff --git a/front/src/views/content/remote/Home.vue b/front/src/views/content/remote/Home.vue index 4e813a5ba..1e74ff6a3 100644 --- a/front/src/views/content/remote/Home.vue +++ b/front/src/views/content/remote/Home.vue @@ -1,19 +1,19 @@ <template> <div class="ui vertical aligned stripe segment"> <div v-if="isLoading" :class="['ui', {'active': isLoading}, 'inverted', 'dimmer']"> - <div class="ui text loader"><translate :translate-context="'Content/Library/Paragraph'">Loading remote libraries…</translate></div> + <div class="ui text loader"><translate translate-context="Content/Library/Paragraph">Loading remote libraries…</translate></div> </div> <div v-else class="ui text container"> - <h1 class="ui header"><translate :translate-context="'Content/Library/Title/Noun'">Remote libraries</translate></h1> - <p><translate :translate-context="'Content/Library/Paragraph'">Remote libraries are owned by other users on the network. You can access them as long as they are public or you are granted access.</translate></p> + <h1 class="ui header"><translate translate-context="Content/Library/Title/Noun">Remote libraries</translate></h1> + <p><translate translate-context="Content/Library/Paragraph">Remote libraries are owned by other users on the network. You can access them as long as they are public or you are granted access.</translate></p> <scan-form @scanned="scanResult = $event"></scan-form> <div class="ui hidden divider"></div> <div v-if="scanResult && scanResult.results.length > 0" class="ui two cards"> <library-card :library="library" v-for="library in scanResult.results" :key="library.fid" /> </div> <template v-if="existingFollows && existingFollows.count > 0"> - <h2><translate :translate-context="'Content/Library/Title'">Known libraries</translate></h2> - <i @click="fetch()" :class="['ui', 'circular', 'refresh', 'icon']" /> <translate :translate-context="'Content/Library/Button.Label'">Refresh</translate> + <h2><translate translate-context="Content/Library/Title">Known libraries</translate></h2> + <i @click="fetch()" :class="['ui', 'circular', 'refresh', 'icon']" /> <translate translate-context="Content/Library/Button.Label">Refresh</translate> <div class="ui hidden divider"></div> <div class="ui two cards"> <library-card diff --git a/front/src/views/content/remote/ScanForm.vue b/front/src/views/content/remote/ScanForm.vue index 31bc80318..5c68bf130 100644 --- a/front/src/views/content/remote/ScanForm.vue +++ b/front/src/views/content/remote/ScanForm.vue @@ -1,13 +1,13 @@ <template> <form class="ui form" @submit.prevent="scan"> <div v-if="errors.length > 0" class="ui negative message"> - <div class="header"><translate :translate-context="'Content/Library/Error message.Title'">Could not fetch remote library</translate></div> + <div class="header"><translate translate-context="Content/Library/Error message.Title">Could not fetch remote library</translate></div> <ul class="list"> <li v-for="error in errors">{{ error }}</li> </ul> </div> <div class="ui field"> - <label><translate :translate-context="'Content/Library/Input.Label/Verb'">Search a remote library</translate></label> + <label><translate translate-context="Content/Library/Input.Label/Verb">Search a remote library</translate></label> <div :class="['ui', 'action', {loading: isLoading}, 'input']"> <input name="url" v-model="query" :placeholder="labels.placeholder" type="url"> <button type="submit" class="ui icon button"> diff --git a/front/src/views/playlists/Detail.vue b/front/src/views/playlists/Detail.vue index afaa2a914..a2430433f 100644 --- a/front/src/views/playlists/Detail.vue +++ b/front/src/views/playlists/Detail.vue @@ -14,7 +14,7 @@ translate-plural="Playlist containing %{ count } tracks, by %{ username }" :translate-n="playlist.tracks_count" :translate-params="{count: playlist.tracks_count, username: playlist.user.username}" - :translate-context="'Content/Playlist/Header.Subtitle'"> + translate-context="Content/Playlist/Header.Subtitle"> Playlist containing %{ count } track, by %{ username } </translate><br> <duration :seconds="playlist.duration" /> @@ -22,22 +22,22 @@ </div> </h2> <div class="ui hidden divider"></div> - <play-button class="orange" :is-playable="playlist.is_playable" :tracks="tracks"><translate :translate-context="'Content/*/Button.Label/Verb, Short'">Play all</translate></play-button> + <play-button class="orange" :is-playable="playlist.is_playable" :tracks="tracks"><translate translate-context="Content/*/Button.Label/Verb, Short">Play all</translate></play-button> <button class="ui icon labeled button" v-if="$store.state.auth.profile && playlist.user.id === $store.state.auth.profile.id" @click="edit = !edit"> <i class="pencil icon"></i> - <template v-if="edit"><translate :translate-context="'Content/Playlist/Button.Label/Verb'">End edition</translate></template> - <template v-else><translate :translate-context="'Content/*/Button.Label/Verb'">Edit…</translate></template> + <template v-if="edit"><translate translate-context="Content/Playlist/Button.Label/Verb">End edition</translate></template> + <template v-else><translate translate-context="Content/*/Button.Label/Verb">Edit…</translate></template> </button> <dangerous-button v-if="$store.state.auth.profile && playlist.user.id === $store.state.auth.profile.id" class="labeled icon" :action="deletePlaylist"> - <i class="trash icon"></i> <translate :translate-context="'Content/*/Button.Label/Verb'">Delete</translate> + <i class="trash icon"></i> <translate translate-context="Content/*/Button.Label/Verb">Delete</translate> <p slot="modal-header"> - <translate :translate-params="{playlist: playlist.name}" :translate-context="'Popup/Playlist/Title/Call to action'">Do you want to delete the playlist "%{ playlist }"?</translate> + <translate :translate-params="{playlist: playlist.name}" translate-context="Popup/Playlist/Title/Call to action">Do you want to delete the playlist "%{ playlist }"?</translate> </p> - <p slot="modal-content"><translate :translate-context="'Popup/Playlist/Paragraph'">This will completely delete this playlist and cannot be undone.</translate></p> - <div slot="modal-confirm"><translate :translate-context="'Popup/Playlist/Button.Label/Verb'">Delete playlist</translate></div> + <p slot="modal-content"><translate translate-context="Popup/Playlist/Paragraph">This will completely delete this playlist and cannot be undone.</translate></p> + <div slot="modal-confirm"><translate translate-context="Popup/Playlist/Button.Label/Verb">Delete playlist</translate></div> </dangerous-button> </div> </section> @@ -49,7 +49,7 @@ :playlist="playlist" :playlist-tracks="playlistTracks"></playlist-editor> </template> <template v-else> - <h2><translate :translate-context="'Content/*/Title/Name'">Tracks</translate></h2> + <h2><translate translate-context="Content/*/Title/Name">Tracks</translate></h2> <track-table :display-position="true" :tracks="tracks"></track-table> </template> </section> diff --git a/front/src/views/playlists/List.vue b/front/src/views/playlists/List.vue index 9745079c0..74b584f96 100644 --- a/front/src/views/playlists/List.vue +++ b/front/src/views/playlists/List.vue @@ -1,21 +1,21 @@ <template> <main v-title="labels.playlists"> <section class="ui vertical stripe segment"> - <h2 class="ui header"><translate :translate-context="'Content/Playlist/Title'">Browsing playlists</translate></h2> + <h2 class="ui header"><translate translate-context="Content/Playlist/Title">Browsing playlists</translate></h2> <div :class="['ui', {'loading': isLoading}, 'form']"> <template v-if="$store.state.auth.authenticated"> <button @click="$store.commit('playlists/chooseTrack', null)" - class="ui basic green button"><translate :translate-context="'Content/Playlist/Button.Label/Verb'">Manage your playlists</translate></button> + class="ui basic green button"><translate translate-context="Content/Playlist/Button.Label/Verb">Manage your playlists</translate></button> <div class="ui hidden divider"></div> </template> <div class="fields"> <div class="field"> - <label><translate :translate-context="'Content/*/Form.Label/Short, Noun'">Search</translate></label> + <label><translate translate-context="Content/*/Form.Label/Short, Noun">Search</translate></label> <input type="text" name="search" v-model="query" :placeholder="labels.searchPlaceholder"/> </div> <div class="field"> - <label><translate :translate-context="'Content/*/Dropdown.Label/Short, Noun'">Ordering</translate></label> + <label><translate translate-context="Content/*/Dropdown.Label/Short, Noun">Ordering</translate></label> <select class="ui dropdown" v-model="ordering"> <option v-for="option in orderingOptions" :value="option[0]"> {{ sharedLabels.filters[option[1]] }} @@ -23,14 +23,14 @@ </select> </div> <div class="field"> - <label><translate :translate-context="'Content/*/Dropdown.Label/Short, Noun'">Order</translate></label> + <label><translate translate-context="Content/*/Dropdown.Label/Short, Noun">Order</translate></label> <select class="ui dropdown" v-model="orderingDirection"> - <option value="+"><translate :translate-context="'Content/*/Dropdown/Short'">Ascending</translate></option> - <option value="-"><translate :translate-context="'Content/*/Dropdown/Short'">Descending</translate></option> + <option value="+"><translate translate-context="Content/*/Dropdown/Short">Ascending</translate></option> + <option value="-"><translate translate-context="Content/*/Dropdown/Short">Descending</translate></option> </select> </div> <div class="field"> - <label><translate :translate-context="'Content/*/Dropdown.Label/Short, Noun'">Results per page</translate></label> + <label><translate translate-context="Content/*/Dropdown.Label/Short, Noun">Results per page</translate></label> <select class="ui dropdown" v-model="paginateBy"> <option :value="parseInt(12)">12</option> <option :value="parseInt(25)">25</option> diff --git a/front/src/views/radios/Detail.vue b/front/src/views/radios/Detail.vue index 5669c7eec..615265ac9 100644 --- a/front/src/views/radios/Detail.vue +++ b/front/src/views/radios/Detail.vue @@ -24,15 +24,15 @@ </router-link> <dangerous-button class="labeled icon" :action="deleteRadio"> <i class="trash icon"></i> Delete - <p slot="modal-header"><translate :translate-context="'Popup/Radio/Title'" :translate-params="{radio: radio.name}">Do you want to delete the radio "%{ radio }"?</translate></p> - <p slot="modal-content"><translate :translate-context="'Popup/Radio/Paragraph'">This will completely delete this radio and cannot be undone.</translate></p> - <div slot="modal-confirm"><translate :translate-context="'Popup/Radio/Button.Label/Verb'">Delete radio</translate></div> + <p slot="modal-header"><translate translate-context="Popup/Radio/Title" :translate-params="{radio: radio.name}">Do you want to delete the radio "%{ radio }"?</translate></p> + <p slot="modal-content"><translate translate-context="Popup/Radio/Paragraph">This will completely delete this radio and cannot be undone.</translate></p> + <div slot="modal-confirm"><translate translate-context="Popup/Radio/Button.Label/Verb">Delete radio</translate></div> </dangerous-button> </template> </div> </section> <section class="ui vertical stripe segment"> - <h2><translate :translate-context="'Content/*/*'">Tracks</translate></h2> + <h2><translate translate-context="Content/*/*">Tracks</translate></h2> <track-table :tracks="tracks"></track-table> <div class="ui center aligned basic segment"> <pagination -- GitLab