diff --git a/changes/changelog.d/652.bugfix b/changes/changelog.d/652.bugfix new file mode 100644 index 0000000000000000000000000000000000000000..da8d30b001d96a9fef3bbca62bfc5ab20980181a --- /dev/null +++ b/changes/changelog.d/652.bugfix @@ -0,0 +1 @@ +Fixed escaping issues in translated strings (#652) diff --git a/front/src/components/audio/album/Card.vue b/front/src/components/audio/album/Card.vue index 2f19d7fbb4854f7c248726f64290d026bf087281..8cc9dcf6c5bfe7a95fd90ff86c977e309edc566d 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-params="{artist: album.artist.name}">By %{ artist }</translate> + <span v-translate="{artist: album.artist.name}" :translate-params="{artist: album.artist.name}">By %{ artist }</span> </router-link> </span><span class="time" v-if="album.release_date">– {{ album.release_date | year }}</span> </div> diff --git a/front/src/components/library/Track.vue b/front/src/components/library/Track.vue index 866231b62c7cb1e407749433c1b6468c2684dfdc..4e0faaeece2e0073538319a74c69ed68ac7df34e 100644 --- a/front/src/components/library/Track.vue +++ b/front/src/components/library/Track.vue @@ -15,9 +15,10 @@ <div class="content"> {{ track.title }} <div class="sub header"> - <translate + <span + v-translate="{album: track.album.title, artist: track.artist.name}" :translate-params="{album: track.album.title, artist: track.artist.name}" - >From album %{ album } by %{ artist }</translate> + >From album %{ album } by %{ artist }</span> </div> <br> <div class="ui basic buttons"> diff --git a/front/src/components/playlists/Editor.vue b/front/src/components/playlists/Editor.vue index 5b5311f145e593d25062b2895bf4ae140e8ff94c..e42c60dae17086f6683c7b2552975e429dd9dc7e 100644 --- a/front/src/components/playlists/Editor.vue +++ b/front/src/components/playlists/Editor.vue @@ -39,8 +39,8 @@ <dangerous-button :disabled="plts.length === 0" class="labeled right floated icon" color='yellow' :action="clearPlaylist"> <i class="eraser icon"></i> <translate>Clear playlist</translate> - <p slot="modal-header"> - <translate :translate-params="{playlist: playlist.name}">Do you want to clear the playlist "%{ playlist }"?</translate> + <p slot="modal-header" v-translate="{playlist: playlist.name}" :translate-params="{playlist: playlist.name}"> + Do you want to clear the playlist "%{ playlist }"? </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> diff --git a/front/src/components/playlists/PlaylistModal.vue b/front/src/components/playlists/PlaylistModal.vue index 3065631afb376deb5473d98188c81daf6a903aaf..7c4dbbf38a0633a32b25dbfc7dabe46d25102a93 100644 --- a/front/src/components/playlists/PlaylistModal.vue +++ b/front/src/components/playlists/PlaylistModal.vue @@ -7,11 +7,11 @@ <div class="description"> <template v-if="track"> <h4 class="ui header"><translate>Current track</translate></h4> - <translate + <span v-translate="{artist: track.artist.name, title: track.title}" :translate-params="{artist: track.artist.name, title: track.title}"> "%{ title }", by %{ artist } - </translate> + </span> <div class="ui divider"></div> </template> diff --git a/front/src/views/playlists/Detail.vue b/front/src/views/playlists/Detail.vue index 8b4dcc4c696a06a65ed6e7cb2d425791202f78f9..69639bd18b54c968ce4a75c0d5392ef31f0ae9bc 100644 --- a/front/src/views/playlists/Detail.vue +++ b/front/src/views/playlists/Detail.vue @@ -32,8 +32,8 @@ </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>Delete</translate> - <p slot="modal-header"> - <translate :translate-params="{playlist: playlist.name}">Do you want to delete the playlist "%{ playlist }"?</translate> + <p slot="modal-header" v-translate="{playlist: playlist.name}" :translate-params="{playlist: playlist.name}"> + Do you want to delete the playlist "%{ playlist }"? </p> <p slot="modal-content"><translate>This will completely delete this playlist and cannot be undone.</translate></p> <p slot="modal-confirm"><translate>Delete playlist</translate></p> diff --git a/front/src/views/radios/Detail.vue b/front/src/views/radios/Detail.vue index 0c46385a6bab53f50f96d65acd491ac6c287e4c3..61a7553edb3efe22667a20fe35c64f99886bf8fd 100644 --- a/front/src/views/radios/Detail.vue +++ b/front/src/views/radios/Detail.vue @@ -24,7 +24,7 @@ </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-header" v-translate="{radio: radio.name}" :translate-params="{radio: radio.name}">Do you want to delete the radio "%{ radio }"?</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> </dangerous-button>