add translations for playlist add toast

This commit is contained in:
Drew Weymouth
2025-01-05 13:31:45 -08:00
parent 18913780bf
commit dd92d64143
13 changed files with 83 additions and 20 deletions
+6 -1
View File
@@ -239,5 +239,10 @@
"Sept": "Sept",
"Oct": "Okt",
"Nov": "Nov",
"Dec": "Dec"
"Dec": "Dec",
"playlist.addedtracks": {
"one": "Added {{.trackCount}} track to playlist",
"other": "Added {{.trackCount}} tracks to playlist"
}
}
+6 -1
View File
@@ -242,5 +242,10 @@
"Sept": "Sept",
"Oct": "Oct",
"Nov": "Nov",
"Dec": "Dec"
"Dec": "Dec",
"playlist.addedtracks": {
"one": "Added one track to playlist",
"other": "Added {{.trackCount}} tracks to playlist"
}
}
+6 -1
View File
@@ -241,5 +241,10 @@
"Sept": "Set",
"Oct": "Oct",
"Nov": "Nov",
"Dec": "Dic"
"Dec": "Dic",
"playlist.addedtracks": {
"one": "Se ha añadido una pista a la lista de reproducción",
"other": "Se han añadido {{.trackCount}} pistas a la lista de reproducción"
}
}
+6 -1
View File
@@ -240,5 +240,10 @@
"Sept": "Sept",
"Oct": "Oct",
"Nov": "Nov",
"Dec": "Déc"
"Dec": "Déc",
"playlist.addedtracks": {
"one": "Une piste ajoutée à la liste de lecture",
"other": "{{.trackCount}} pistes ajoutées à la liste de lecture"
}
}
+6 -1
View File
@@ -238,5 +238,10 @@
"Sept": "Set",
"Oct": "Ott",
"Nov": "Nov",
"Dec": "Dic"
"Dec": "Dic",
"playlist.addedtracks": {
"one": "Added {{.trackCount}} track to playlist",
"other": "Added {{.trackCount}} tracks to playlist"
}
}
+6 -1
View File
@@ -228,5 +228,10 @@
"Remove from queue": "キューから削除",
"Play song radio": "曲をラジオで再生",
"to":"to",
"by":"by"
"by":"by",
"playlist.addedtracks": {
"one": "Added {{.trackCount}} track to playlist",
"other": "Added {{.trackCount}} tracks to playlist"
}
}
+6 -1
View File
@@ -228,5 +228,10 @@
"Remove from queue": "Usuń z kolejki odtwarzania",
"Play song radio": "Odtwórz mix utworów",
"to":"do",
"by":"przez"
"by":"przez",
"playlist.addedtracks": {
"one": "Added {{.trackCount}} track to playlist",
"other": "Added {{.trackCount}} tracks to playlist"
}
}
+6 -1
View File
@@ -228,5 +228,10 @@
"Remove from queue": "Remover da fila",
"Play song radio": "Reproduzir rádio da faixa",
"to":"a",
"by":"de"
"by":"de",
"playlist.addedtracks": {
"one": "Added {{.trackCount}} track to playlist",
"other": "Added {{.trackCount}} tracks to playlist"
}
}
+6 -1
View File
@@ -230,5 +230,10 @@
"Sept": "Sept",
"Oct": "Oct",
"Nov": "Noiem",
"Dec": "Dec"
"Dec": "Dec",
"playlist.addedtracks": {
"one": "Added {{.trackCount}} track to playlist",
"other": "Added {{.trackCount}} tracks to playlist"
}
}
+6 -1
View File
@@ -216,5 +216,10 @@
"Unset favorite": "取消收藏",
"Remove from queue": "从队列中移除",
"Size": "大小",
"Play song radio": "播放歌曲电台"
"Play song radio": "播放歌曲电台",
"playlist.addedtracks": {
"one": "Added {{.trackCount}} track to playlist",
"other": "Added {{.trackCount}} tracks to playlist"
}
}
+6 -1
View File
@@ -216,5 +216,10 @@
"Unset favorite": "取消收藏",
"Remove from queue": "从队列中移除",
"Size": "大小",
"Play song radio": "播放歌曲电台"
"Play song radio": "播放歌曲电台",
"playlist.addedtracks": {
"one": "Added {{.trackCount}} track to playlist",
"other": "Added {{.trackCount}} tracks to playlist"
}
}
+9 -6
View File
@@ -11,6 +11,7 @@ import (
"net/url"
"os"
"path/filepath"
"strconv"
"sync"
"time"
@@ -304,14 +305,18 @@ func (m *Controller) DoAddTracksToPlaylistWorkflow(trackIDs []string) {
m.doModalClosed()
})
sp.SetOnNavigateTo(func(contentType mediaprovider.ContentType, id string) {
notifySuccess := func(n int) {
msg := lang.LocalizePluralKey("playlist.addedtracks",
"Added tracks to playlist", n, map[string]string{"trackCount": strconv.Itoa(n)})
m.ToastProvider.ShowSuccessToast(msg)
}
pop.Hide()
m.App.Config.Application.AddToPlaylistSkipDuplicates = sp.SkipDuplicates
if id == "" /* creating new playlist */ {
go func() {
err := m.App.ServerManager.Server.CreatePlaylist(sp.SearchDialog.SearchQuery(), trackIDs)
if err == nil {
// TODO: translate, adjust by plurality
m.ToastProvider.ShowSuccessToast(fmt.Sprintf("Added %d tracks to playlist", len(trackIDs)))
notifySuccess(len(trackIDs))
}
}()
} else {
@@ -331,8 +336,7 @@ func (m *Controller) DoAddTracksToPlaylistWorkflow(trackIDs []string) {
})
err := m.App.ServerManager.Server.AddPlaylistTracks(id, filterTrackIDs)
if err == nil {
// TODO: translate, adjust by plurality
m.ToastProvider.ShowSuccessToast(fmt.Sprintf("Added %d tracks to playlist", len(filterTrackIDs)))
notifySuccess(len(filterTrackIDs))
}
}
}()
@@ -340,8 +344,7 @@ func (m *Controller) DoAddTracksToPlaylistWorkflow(trackIDs []string) {
go func() {
err := m.App.ServerManager.Server.AddPlaylistTracks(id, trackIDs)
if err == nil {
// TODO: translate, adjust by plurality
m.ToastProvider.ShowSuccessToast(fmt.Sprintf("Added %d tracks to playlist", len(trackIDs)))
notifySuccess(len(trackIDs))
}
}()
}
+8 -3
View File
@@ -16,6 +16,11 @@ import (
"github.com/dweymouth/supersonic/ui/widgets"
)
const (
toastAutoDismissalTime = 3 * time.Second
toastAnimationDuration = 100 * time.Millisecond
)
type ToastOverlay struct {
widget.BaseWidget
@@ -46,7 +51,7 @@ func (t *ToastOverlay) ShowSuccessToast(message string) {
endPos := fyne.NewPos(s.Width-min.Width-pad, s.Height-min.Height-pad)
startPos := fyne.NewPos(s.Width, endPos.Y)
f := t.makeToastAnimFunc(endPos, false)
t.currentToastAnim = canvas.NewPositionAnimation(startPos, endPos, 100*time.Millisecond, f)
t.currentToastAnim = canvas.NewPositionAnimation(startPos, endPos, toastAnimationDuration, f)
t.currentToastAnim.Curve = fyne.AnimationEaseOut
t.currentToastAnim.Start()
t.Refresh()
@@ -54,7 +59,7 @@ func (t *ToastOverlay) ShowSuccessToast(message string) {
ctx, cancel := context.WithCancel(context.Background())
t.dismissCancel = cancel // always canceled by dismissToast
go func() {
time.Sleep(2 * time.Second)
time.Sleep(toastAutoDismissalTime)
select {
case <-ctx.Done():
return
@@ -120,7 +125,7 @@ func (t *ToastOverlay) dismissToast() {
startPos := fyne.NewPos(s.Width-min.Width-pad, s.Height-min.Height-pad)
endPos := fyne.NewPos(s.Width, startPos.Y)
f := t.makeToastAnimFunc(endPos, true)
t.currentToastAnim = canvas.NewPositionAnimation(startPos, endPos, 100*time.Millisecond, f)
t.currentToastAnim = canvas.NewPositionAnimation(startPos, endPos, toastAnimationDuration, f)
t.currentToastAnim.Curve = fyne.AnimationEaseIn
t.currentToastAnim.Start()
}