Commit 4ce80026 authored by Agate's avatar Agate 💬

Merge branch '662-components-audio' into 'develop'

#662: Resolve "Add contexts to translatable strings"

See merge request funkwhale/funkwhale!612
parents bb30a9cb 196504b5
......@@ -442,6 +442,7 @@ This hierarchical structure is made of several parts:
- ``Admin``
- ``Album``
- ``Artist``
- ``Embed``
- ``Home``
- ``Login``
- ``Library``
......@@ -451,6 +452,7 @@ This hierarchical structure is made of several parts:
- ``Favorites``
- ``Notifications``
- ``Radio``
- ``Search``
- ``Settings``
- ``Signup``
- ``Track``
......
......@@ -4,22 +4,22 @@
<div class="two fields">
<div class="field">
<div class="field">
<label for="embed-width"><translate>Widget width</translate></label>
<p><translate>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>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 floated button"><translate>Copy</translate></button>
<label for="embed-width"><translate>Embed code</translate></label>
<p><translate>Copy/paste this code in your website HTML</translate></p>
<button @click="copy" class="ui right floated button"><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>
<div class="ui hidden divider"></div>
<textarea ref="textarea":value="embedCode" rows="3" readonly>
</textarea>
......@@ -27,7 +27,7 @@
</div>
</div>
<div class="preview">
<h3><translate>Preview</translate></h3>
<h3><translate :translate-context="'Popup/Embed/Title/Noun'">Preview</translate></h3>
<iframe :width="frameWidth" :height="height" scrolling="no" frameborder="no" :src="iframeSrc"></iframe>
</div>
</div>
......
......@@ -7,22 +7,22 @@
:disabled="!playable"
:class="buttonClasses.concat(['ui', {loading: isLoading}, {'mini': discrete}, {disabled: !playable}])">
<i :class="[playIconClass, 'icon']"></i>
<template v-if="!discrete && !iconOnly"><slot><translate :v-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}, 'floating', 'dropdown', {'icon': !dropdownOnly}, {'button': !dropdownOnly}]">
<i :class="dropdownIconClasses.concat(['icon'])"></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 :v-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 :v-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 :v-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 :v-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>
</div>
</div>
......
......@@ -62,14 +62,14 @@
</div>
<div class="ui small warning message" v-if="currentTrack && errored">
<div class="header">
<translate>We cannot load this track</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>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>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">
......@@ -280,7 +280,7 @@ export default {
return
}
let self = this
let msg = this.$gettext("Queue shuffled!")
let msg = this.$pgettext('Content/Queue/Message', "Queue shuffled!")
this.isShuffling = true
setTimeout(() => {
self.$store.dispatch("queue/shuffle", () => {
......@@ -346,24 +346,24 @@ export default {
progress: "player/progress"
}),
labels() {
let audioPlayer = this.$gettext("Media player")
let previousTrack = this.$gettext("Previous track")
let play = this.$gettext("Play track")
let pause = this.$gettext("Pause track")
let next = this.$gettext("Next track")
let unmute = this.$gettext("Unmute")
let mute = this.$gettext("Mute")
let loopingDisabled = this.$gettext(
let audioPlayer = this.$pgettext('Sidebar/Player/Hidden text', "Media player")
let previousTrack = this.$pgettext('Sidebar/Player/Icon.Tooltip', "Previous track")
let play = this.$pgettext('Sidebar/Player/Icon.Tooltip/Verb', "Play track")
let pause = this.$pgettext('Sidebar/Player/Icon.Tooltip/Verb', "Pause track")
let next = this.$pgettext('Sidebar/Player/Icon.Tooltip', "Next track")
let unmute = this.$pgettext('Sidebar/Player/Icon.Tooltip/Verb', "Unmute")
let mute = this.$pgettext('Sidebar/Player/Icon.Tooltip/Verb', "Mute")
let loopingDisabled = this.$pgettext('Sidebar/Player/Icon.Tooltip',
"Looping disabled. Click to switch to single-track looping."
)
let loopingSingle = this.$gettext(
let loopingSingle = this.$pgettext('Sidebar/Player/Icon.Tooltip',
"Looping on a single track. Click to switch to whole queue looping."
)
let loopingWhole = this.$gettext(
let loopingWhole = this.$pgettext('Sidebar/Player/Icon.Tooltip',
"Looping on whole queue. Click to disable looping."
)
let shuffle = this.$gettext("Shuffle your queue")
let clear = this.$gettext("Clear your queue")
let shuffle = this.$pgettext('Sidebar/Player/Icon.Tooltip/Verb', "Shuffle your queue")
let clear = this.$pgettext('Sidebar/Player/Icon.Tooltip/Verb', "Clear your queue")
return {
audioPlayer,
previousTrack,
......
<template>
<div>
<h2><translate>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>Artists</translate></h3>
<h3 class="ui title"><translate :translate-context="'Content/Search/Title'">Artists</translate></h3>
<div v-if="results.artists.length > 0" class="ui stackable three column grid">
<div class="column" :key="artist.id" v-for="artist in results.artists">
<artist-card class="fluid" :artist="artist" ></artist-card>
</div>
</div>
<p v-else><translate>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>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>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>
......@@ -62,7 +62,7 @@ export default {
computed: {
labels () {
return {
searchPlaceholder: this.$gettext('Artist, album, track…')
searchPlaceholder: this.$pgettext('*/Search/Input.Placeholder', 'Artist, album, track…')
}
}
},
......
......@@ -17,14 +17,14 @@ export default {
computed: {
labels () {
return {
placeholder: this.$gettext('Search for artists, albums, tracks…')
placeholder: this.$pgettext('Sidebar/Search/Input.Placeholder', 'Search for artists, albums, tracks…')
}
}
},
mounted () {
let artistLabel = this.$gettext('Artist')
let albumLabel = this.$gettext('Album')
let trackLabel = this.$gettext('Track')
let artistLabel = this.$pgettext('Sidebar/Search/Title', 'Artist')
let albumLabel = this.$pgettext('Sidebar/Search/Title', 'Album')
let trackLabel = this.$pgettext('Sidebar/Search/Title', 'Track')
let self = this
jQuery(this.$el).search({
type: 'category',
......
......@@ -11,7 +11,7 @@
<div class="meta">
<span>
<router-link tag="span" :to="{name: 'library.artists.detail', params: {id: album.artist.id }}">
<translate :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-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>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">
<translate>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-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>
......
......@@ -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-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>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-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.id">
<translate>Play all</translate>
<translate :translate-context="'Content/Queue/Button.Label/Short, Verb'">Play all</translate>
</play-button>
</div>
</div>
......
......@@ -38,7 +38,7 @@
{{ time.parse(track.uploads[0].duration) }}
</td>
<td colspan="4" v-else>
<translate>N/A</translate>
<translate :translate-context="'*/*/*'">N/A</translate>
</td>
<td colspan="2">
<track-favorite-icon class="favorite-icon" :track="track"></track-favorite-icon>
......
......@@ -4,10 +4,10 @@
<tr>
<th></th>
<th></th>
<th colspan="6"><translate>Title</translate></th>
<th colspan="4"><translate>Artist</translate></th>
<th colspan="4"><translate>Album</translate></th>
<th colspan="4"><translate>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>
......
......@@ -16,7 +16,7 @@
<duration :seconds="playlist.duration" />
|
<i class="sound icon"></i>
<translate
<translate :translate-context="'Content/*/Card/List item'"
translate-plural="%{ count } tracks"
:translate-n="playlist.tracks_count"
:translate-params="{count: playlist.tracks_count}">
......
......@@ -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>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>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>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>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 :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>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-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>This will remove all tracks from this playlist and cannot be undone.</translate></p>
<p slot="modal-confirm"><translate>Clear 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>
<p slot="modal-confirm"><translate :translate-context="'Popup/Playlist/Button.Label'">Clear playlist</translate></p>
</dangerous-button>
<div class="ui hidden divider"></div>
<template v-if="plts.length > 0">
<p><translate>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>
<table class="ui compact very basic fixed single line unstackable table">
<draggable v-model="plts" element="tbody" @update="reorder">
<tr v-for="(plt, index) in plts" :key="plt.id">
......@@ -160,7 +160,7 @@ export default {
}),
labels () {
return {
copyTitle: this.$gettext('Copy queued tracks to playlist')
copyTitle: this.$pgettext('Content/Playlist/Button.Tooltip/Verb', 'Copy queued tracks to playlist')
}
},
status () {
......
<template>
<form class="ui form" @submit.prevent="submit()">
<h4 v-if="title" class="ui header"><translate>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>Playlist updated</translate>
<translate :translate-context="'Content/Playlist/Message'">Playlist updated</translate>
</template>
<template v-else>
<translate>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>We cannot create the playlist</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>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>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>&nbsp;</label>
<button :class="['ui', 'fluid', {'loading': isLoading}, 'button']" type="submit">
<template v-if="playlist"><translate>Update playlist</translate></template>
<template v-else><translate>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>
......@@ -71,22 +71,22 @@ export default {
computed: {
labels () {
return {
placeholder: this.$gettext('My awesome playlist')
placeholder: this.$pgettext('Content/Playlist/Input.Placeholder', 'My awesome playlist')
}
},
privacyLevelChoices: function () {
return [
{
value: 'me',
label: this.$gettext('Nobody except me')
label: this.$pgettext('Content/Playlist/Dropdown', 'Nobody except me')
},
{
value: 'instance',
label: this.$gettext('Everyone on this instance')
label: this.$pgettext('Content/Playlist/Dropdown', 'Everyone on this instance')
},
{
value: 'everyone',
label: this.$gettext('Everyone')
label: this.$pgettext('Content/Playlist/Dropdown', 'Everyone')
}
]
}
......
<template>
<modal @update:show="update" :show="$store.state.playlists.showModal">
<div class="header">
<translate>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>Current track</translate></h4>
<translate
<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>We cannot add the track 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>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>Name</translate></th>
<th class="sorted descending"><translate>Last modification</translate></th>
<th><translate>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>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>Cancel</translate></div>
<div class="ui cancel button"><translate :translate-context="'Popup/Playlist/Button.Label'">Cancel</translate></div>
</div>
</modal>
</template>
......@@ -113,7 +113,7 @@ export default {
}),
labels () {
return {
addToPlaylist: this.$gettext('Add to this playlist')
addToPlaylist: this.$pgettext('Popup/Playlist/Table.Button.Tooltip/Verb', 'Add to this playlist')
}
},
sortedPlaylists () {
......
......@@ -4,7 +4,7 @@
v-if="button"
:class="['ui', 'button']">
<i class="list icon"></i>
<translate>Add to playlist…</translate>
<translate :translate-context="'Sidebar/Player/Icon.Tooltip/Verb'">Add to playlist…</translate>
</button>
<button
v-else
......@@ -31,7 +31,7 @@ export default {
computed: {
labels () {
return {
addToPlaylist: this.$gettext('Add to playlist…')
addToPlaylist: this.$pgettext('Sidebar/Player/Icon.Tooltip/Verb', 'Add to playlist…')
}
}
}
......
......@@ -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-params="{radio: radio.name}">Do you want to delete the radio "%{ radio }"?</translate></p>
<p slot="modal-content"><translate>This will completely delete this radio and cannot be undone.</translate></p>
<p slot="modal-confirm"><translate>Delete radio</translate></p>
<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>
<p slot="modal-confirm"><translate :translate-context="'Popup/Radio/Button.Label/Verb'">Delete radio</translate></p>
</dangerous-button>
</template>
</div>
</section>
<section class="ui vertical stripe segment">
<h2><translate>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
......@@ -77,7 +77,7 @@ export default {
computed: {
labels() {
return {
title: this.$gettext("Radio")
title: this.$pgettext('Head/Radio/Title', "Radio")
}
}
},
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment