diff --git a/go.mod b/go.mod index 051277f..ee4e6f0 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module go.uploadedlobster.com/scotty go 1.23.0 -toolchain go1.23.8 +toolchain go1.24.2 require ( github.com/Xuanwo/go-locale v1.1.3 @@ -14,15 +14,15 @@ require ( github.com/go-resty/resty/v2 v2.16.5 github.com/jarcoal/httpmock v1.3.1 github.com/manifoldco/promptui v0.9.0 - github.com/pelletier/go-toml/v2 v2.2.3 + github.com/pelletier/go-toml/v2 v2.2.4 github.com/shkh/lastfm-go v0.0.0-20191215035245-89a801c244e0 github.com/spf13/cast v1.7.1 github.com/spf13/cobra v1.9.1 github.com/spf13/viper v1.20.1 github.com/stretchr/testify v1.10.0 github.com/vbauerster/mpb/v8 v8.9.3 - go.uploadedlobster.com/mbtypes v0.2.0 - golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 + go.uploadedlobster.com/mbtypes v0.4.0 + golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 golang.org/x/oauth2 v0.29.0 golang.org/x/text v0.24.0 gorm.io/datatypes v1.2.5 @@ -38,7 +38,7 @@ require ( github.com/dustin/go-humanize v1.0.1 // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/glebarez/go-sqlite v1.22.0 // indirect - github.com/go-sql-driver/mysql v1.9.1 // indirect + github.com/go-sql-driver/mysql v1.9.2 // indirect github.com/go-viper/mapstructure/v2 v2.2.1 // indirect github.com/google/uuid v1.6.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect @@ -57,8 +57,11 @@ require ( github.com/spf13/pflag v1.0.6 // indirect github.com/subosito/gotenv v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.38.0 // indirect + golang.org/x/mod v0.24.0 // indirect + golang.org/x/net v0.39.0 // indirect + golang.org/x/sync v0.13.0 // indirect golang.org/x/sys v0.32.0 // indirect + golang.org/x/tools v0.32.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gorm.io/driver/mysql v1.5.7 // indirect modernc.org/libc v1.62.1 // indirect @@ -66,3 +69,5 @@ require ( modernc.org/memory v1.9.1 // indirect modernc.org/sqlite v1.37.0 // indirect ) + +tool golang.org/x/text/cmd/gotext diff --git a/go.sum b/go.sum index c1692a4..511ace4 100644 --- a/go.sum +++ b/go.sum @@ -43,8 +43,8 @@ github.com/glebarez/sqlite v1.11.0/go.mod h1:h8/o8j5wiAsqSPoWELDUdJXhjAhsVliSn7b github.com/go-resty/resty/v2 v2.16.5 h1:hBKqmWrr7uRc3euHVqmh1HTHcKn99Smr7o5spptdhTM= github.com/go-resty/resty/v2 v2.16.5/go.mod h1:hkJtXbA2iKHzJheXYvQ8snQES5ZLGKMwQ07xAwp/fiA= github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= -github.com/go-sql-driver/mysql v1.9.1 h1:FrjNGn/BsJQjVRuSa8CBrM5BWA9BWoXXat3KrtSb/iI= -github.com/go-sql-driver/mysql v1.9.1/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU= +github.com/go-sql-driver/mysql v1.9.2 h1:4cNKDYQ1I84SXslGddlsrMhc8k4LeDVj6Ad6WRjiHuU= +github.com/go-sql-driver/mysql v1.9.2/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU= github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss= github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA= @@ -93,8 +93,8 @@ github.com/microsoft/go-mssqldb v1.7.2 h1:CHkFJiObW7ItKTJfHo1QX7QBBD1iV+mn1eOyRP github.com/microsoft/go-mssqldb v1.7.2/go.mod h1:kOvZKUdrhhFQmxLZqbwUV0rHkNkZpthMITIb2Ko1IoA= github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4= github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls= -github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= -github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= +github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= +github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= @@ -129,16 +129,16 @@ github.com/vbauerster/mpb/v8 v8.9.3 h1:PnMeF+sMvYv9u23l6DO6Q3+Mdj408mjLRXIzmUmU2 github.com/vbauerster/mpb/v8 v8.9.3/go.mod h1:hxS8Hz4C6ijnppDSIX6LjG8FYJSoPo9iIOcE53Zik0c= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uploadedlobster.com/mbtypes v0.2.0 h1:sV9WM5fY8KnnKwKKVRaU3JBEKP4zD7aUX0XQfNZvEdo= -go.uploadedlobster.com/mbtypes v0.2.0/go.mod h1:/ZpwXc8oRpDa7EWeGI9xEY+nGhMIVHhTruikZWD4Krg= -golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= -golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= -golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 h1:nDVHiLt8aIbd/VzvPWN6kSOPE7+F/fNFDSXLVYkE/Iw= -golang.org/x/exp v0.0.0-20250305212735-054e65f0b394/go.mod h1:sIifuuw/Yco/y6yb6+bDNfyeQ/MdPUy/hKEMYQV17cM= +go.uploadedlobster.com/mbtypes v0.4.0 h1:D5asCgHsRWufj4Yn5u0IuH2J9z1UuYImYkYIp1Z1Q7s= +go.uploadedlobster.com/mbtypes v0.4.0/go.mod h1:Bu1K1Hl77QTAE2Z7QKiW/JAp9KqYWQebkRRfG02dlZM= +golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= +golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= +golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 h1:R84qjqJb5nVJMxqWYb3np9L5ZsaDtB+a39EqjV0JSUM= +golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0/go.mod h1:S9Xr4PYopiDyqSyp5NjCrhFrqg6A5zA2E/iPHPhqnS8= golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= -golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= -golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= +golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= golang.org/x/oauth2 v0.29.0 h1:WdYw2tdTK1S8olAzWHdgeqfy+Mtm9XNhv/xJsY65d98= golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610= @@ -152,8 +152,8 @@ golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= -golang.org/x/tools v0.31.0 h1:0EedkvKDbh+qistFTd0Bcwe/YLh4vHwWEkiI0toFIBU= -golang.org/x/tools v0.31.0/go.mod h1:naFTU+Cev749tSJRXJlna0T3WxKvb1kWEx15xA4SdmQ= +golang.org/x/tools v0.32.0 h1:Q7N1vhpkQv7ybVzLFtTjvQya2ewbwNDZzUgfXGqtMWU= +golang.org/x/tools v0.32.0/go.mod h1:ZxrU41P/wAbZD8EDa6dDCa6XfpkhJ7HFMjHJXfBDu8s= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/internal/translations/catalog.go b/internal/translations/catalog.go index 614b5b6..987612a 100644 --- a/internal/translations/catalog.go +++ b/internal/translations/catalog.go @@ -42,56 +42,56 @@ var messageKeyToIndex = map[string]int{ "\tbackend: %v": 11, "\texport: %s": 0, "\timport: %s\n": 1, - "%v: %v": 52, + "%v: %v": 47, "Aborted": 8, "Access token": 19, - "Access token received, you can use %v now.\n": 28, + "Access token received, you can use %v now.\n": 33, "Append to file": 21, - "Backend": 36, - "Check for duplicate listens on import (slower)": 45, + "Backend": 41, + "Check for duplicate listens on import (slower)": 24, "Client ID": 15, "Client secret": 16, "Delete the service configuration \"%v\"?": 7, - "Directory path": 47, - "Disable auto correction of submitted listens": 24, - "Error: OAuth state mismatch": 27, + "Directory path": 27, + "Disable auto correction of submitted listens": 25, + "Error: OAuth state mismatch": 32, "Failed reading config: %v": 2, "File path": 20, - "From timestamp: %v (%v)": 38, - "Ignore listens in incognito mode": 48, - "Ignore skipped listens": 49, - "Ignored duplicate listen %v: \"%v\" by %v (%v)": 46, - "Import failed, last reported timestamp was %v (%s)": 39, - "Import log:": 51, - "Imported %v of %v %s into %v.": 40, - "Include skipped listens": 25, - "Latest timestamp: %v (%v)": 41, - "Minimum playback duration for skipped tracks (seconds)": 50, - "No": 33, + "From timestamp: %v (%v)": 43, + "Ignore listens in incognito mode": 28, + "Ignore skipped listens": 29, + "Ignored duplicate listen %v: \"%v\" by %v (%v)": 53, + "Import failed, last reported timestamp was %v (%s)": 44, + "Import log:": 46, + "Imported %v of %v %s into %v.": 45, + "Include skipped listens": 26, + "Latest timestamp: %v (%v)": 49, + "Minimum playback duration for skipped tracks (seconds)": 30, + "No": 38, "Playlist title": 22, "Saved service %v using backend %v": 5, "Server URL": 17, - "Service": 35, + "Service": 40, "Service \"%v\" deleted\n": 9, "Service name": 3, "The backend %v requires authentication. Authenticate now?": 6, "Token received, you can close this window now.": 12, - "Transferring %s from %s to %s...": 37, + "Transferring %s from %s to %s...": 42, "Unique playlist identifier": 23, "Updated service %v using backend %v\n": 10, "User name": 18, - "Visit the URL for authorization: %v": 26, - "Yes": 32, + "Visit the URL for authorization: %v": 31, + "Yes": 37, "a service with this name already exists": 4, "backend %s does not implement %s": 13, - "done": 31, - "exporting": 29, - "importing": 30, - "invalid timestamp string \"%v\"": 53, - "key must only consist of A-Za-z0-9_-": 43, - "no configuration file defined, cannot write config": 42, - "no existing service configurations": 34, - "no service configuration \"%v\"": 44, + "done": 36, + "exporting": 34, + "importing": 35, + "invalid timestamp string \"%v\"": 48, + "key must only consist of A-Za-z0-9_-": 51, + "no configuration file defined, cannot write config": 50, + "no existing service configurations": 39, + "no service configuration \"%v\"": 52, "unknown backend \"%s\"": 14, } @@ -103,18 +103,18 @@ var deIndex = []uint32{ // 55 elements 0x000001ac, 0x000001e7, 0x00000213, 0x00000233, 0x0000023d, 0x0000024b, 0x00000256, 0x00000263, 0x00000271, 0x0000027b, 0x0000028e, 0x000002a1, - 0x000002b8, 0x000002ec, 0x0000030d, 0x00000333, - 0x0000035d, 0x0000039d, 0x000003a8, 0x000003b3, + 0x000002b8, 0x000002ed, 0x00000321, 0x00000342, + 0x00000352, 0x00000378, 0x0000039a, 0x000003d8, // Entry 20 - 3F - 0x000003ba, 0x000003bd, 0x000003c2, 0x000003eb, - 0x000003f3, 0x000003fb, 0x00000424, 0x00000442, - 0x0000047f, 0x000004aa, 0x000004cd, 0x0000051e, - 0x00000555, 0x0000057c, 0x0000057c, 0x0000057c, - 0x0000057c, 0x0000057c, 0x0000057c, 0x0000057c, - 0x0000057c, 0x0000057c, 0x0000057c, + 0x000003fe, 0x00000428, 0x00000468, 0x00000473, + 0x0000047e, 0x00000485, 0x00000488, 0x0000048d, + 0x000004b6, 0x000004be, 0x000004c6, 0x000004ef, + 0x0000050d, 0x0000054a, 0x00000575, 0x00000580, + 0x0000058d, 0x000005b1, 0x000005d4, 0x00000625, + 0x0000065c, 0x00000683, 0x00000683, } // Size: 244 bytes -const deData string = "" + // Size: 1404 bytes +const deData string = "" + // Size: 1667 bytes "\x04\x01\x09\x00\x0e\x02Export: %[1]s\x04\x01\x09\x01\x0a\x0e\x02Import:" + " %[1]s\x02Fehler beim Lesen der Konfiguration: %[1]v\x02Servicename\x02e" + "in Service mit diesem Namen existiert bereits\x02Service %[1]v mit dem B" + @@ -126,18 +126,22 @@ const deData string = "" + // Size: 1404 bytes " geschlossen werden.\x02das backend %[1]s implementiert %[2]s nicht\x02u" + "nbekanntes Backend „%[1]s“\x02Client-ID\x02Client-Secret\x02Server-URL" + "\x02Benutzername\x02Zugriffstoken\x02Dateipfad\x02An Datei anhängen\x02T" + - "itel der Playlist\x02Eindeutige Playlist-ID\x02Autokorrektur für übermit" + - "telte Titel deaktivieren\x02Übersprungene Titel einbeziehen\x02URL für A" + - "utorisierung öffnen: %[1]v\x02Fehler: OAuth-State stimmt nicht überein" + - "\x04\x00\x01\x0a;\x02Zugriffstoken erhalten, %[1]v kann jetzt verwendet " + - "werden.\x02exportiere\x02importiere\x02fertig\x02Ja\x02Nein\x02keine bes" + - "tehenden Servicekonfigurationen\x02Service\x02Backend\x02Übertrage %[1]s" + - " von %[2]s nach %[3]s...\x02Ab Zeitstempel: %[1]v (%[2]v)\x02Import fehl" + - "geschlagen, letzter Zeitstempel war %[1]v (%[2]s)\x02%[1]v von %[2]v %[3" + - "]s in %[4]v importiert.\x02Letzter Zeitstempel: %[1]v (%[2]v)\x02keine K" + - "onfigurationsdatei definiert, Konfiguration kann nicht geschrieben werde" + - "n\x02Schlüssel darf nur die Zeichen A-Za-z0-9_- beinhalten\x02keine Serv" + - "icekonfiguration „%[1]v“" + "itel der Playlist\x02Eindeutige Playlist-ID\x02Beim Import auf Listen-Du" + + "plikate prüfen (langsamer)\x02Autokorrektur für übermittelte Titel deakt" + + "ivieren\x02Übersprungene Titel einbeziehen\x02Verzeichnispfad\x02Listens" + + " im Inkognito-Modus ignorieren\x02Übersprungene Listens ignorieren\x02Mi" + + "nimale Wiedergabedauer für übersprungene Titel (Sekunden)\x02URL für Aut" + + "orisierung öffnen: %[1]v\x02Fehler: OAuth-State stimmt nicht überein\x04" + + "\x00\x01\x0a;\x02Zugriffstoken erhalten, %[1]v kann jetzt verwendet werd" + + "en.\x02exportiere\x02importiere\x02fertig\x02Ja\x02Nein\x02keine bestehe" + + "nden Servicekonfigurationen\x02Service\x02Backend\x02Übertrage %[1]s von" + + " %[2]s nach %[3]s...\x02Ab Zeitstempel: %[1]v (%[2]v)\x02Import fehlgesc" + + "hlagen, letzter Zeitstempel war %[1]v (%[2]s)\x02%[1]v von %[2]v %[3]s i" + + "n %[4]v importiert.\x02Importlog:\x02%[1]v: %[2]v\x02ungültiger Zeitstem" + + "pel „%[1]v“\x02Letzter Zeitstempel: %[1]v (%[2]v)\x02keine Konfiguration" + + "sdatei definiert, Konfiguration kann nicht geschrieben werden\x02Schlüss" + + "el darf nur die Zeichen A-Za-z0-9_- beinhalten\x02keine Servicekonfigura" + + "tion „%[1]v“" var enIndex = []uint32{ // 55 elements // Entry 0 - 1F @@ -147,15 +151,15 @@ var enIndex = []uint32{ // 55 elements 0x00000170, 0x0000019f, 0x000001c6, 0x000001de, 0x000001e8, 0x000001f6, 0x00000201, 0x0000020b, 0x00000218, 0x00000222, 0x00000231, 0x00000240, - 0x0000025b, 0x00000288, 0x000002a0, 0x000002c7, - 0x000002e3, 0x00000316, 0x00000320, 0x0000032a, + 0x0000025b, 0x0000028a, 0x000002b7, 0x000002cf, + 0x000002de, 0x000002ff, 0x00000316, 0x0000034d, // Entry 20 - 3F - 0x0000032f, 0x00000333, 0x00000336, 0x00000359, - 0x00000361, 0x00000369, 0x00000393, 0x000003b1, - 0x000003ea, 0x00000414, 0x00000434, 0x00000467, - 0x0000048c, 0x000004ad, 0x000004dc, 0x00000515, - 0x00000524, 0x00000545, 0x0000055c, 0x00000593, - 0x0000059f, 0x000005ac, 0x000005cd, + 0x00000374, 0x00000390, 0x000003c3, 0x000003cd, + 0x000003d7, 0x000003dc, 0x000003e0, 0x000003e3, + 0x00000406, 0x0000040e, 0x00000416, 0x00000440, + 0x0000045e, 0x00000497, 0x000004c1, 0x000004cd, + 0x000004da, 0x000004fb, 0x0000051b, 0x0000054e, + 0x00000573, 0x00000594, 0x000005cd, } // Size: 244 bytes const enData string = "" + // Size: 1485 bytes @@ -169,20 +173,20 @@ const enData string = "" + // Size: 1485 bytes "eceived, you can close this window now.\x02backend %[1]s does not implem" + "ent %[2]s\x02unknown backend \x22%[1]s\x22\x02Client ID\x02Client secret" + "\x02Server URL\x02User name\x02Access token\x02File path\x02Append to fi" + - "le\x02Playlist title\x02Unique playlist identifier\x02Disable auto corre" + - "ction of submitted listens\x02Include skipped listens\x02Visit the URL f" + - "or authorization: %[1]v\x02Error: OAuth state mismatch\x04\x00\x01\x0a." + - "\x02Access token received, you can use %[1]v now.\x02exporting\x02import" + - "ing\x02done\x02Yes\x02No\x02no existing service configurations\x02Servic" + - "e\x02Backend\x02Transferring %[1]s from %[2]s to %[3]s...\x02From timest" + - "amp: %[1]v (%[2]v)\x02Import failed, last reported timestamp was %[1]v (" + - "%[2]s)\x02Imported %[1]v of %[2]v %[3]s into %[4]v.\x02Latest timestamp:" + - " %[1]v (%[2]v)\x02no configuration file defined, cannot write config\x02" + - "key must only consist of A-Za-z0-9_-\x02no service configuration \x22%[1" + - "]v\x22\x02Check for duplicate listens on import (slower)\x02Ignored dupl" + - "icate listen %[1]v: \x22%[2]v\x22 by %[3]v (%[4]v)\x02Directory path\x02" + - "Ignore listens in incognito mode\x02Ignore skipped listens\x02Minimum pl" + - "ayback duration for skipped tracks (seconds)\x02Import log:\x02%[1]v: %[" + - "2]v\x02invalid timestamp string \x22%[1]v\x22" + "le\x02Playlist title\x02Unique playlist identifier\x02Check for duplicat" + + "e listens on import (slower)\x02Disable auto correction of submitted lis" + + "tens\x02Include skipped listens\x02Directory path\x02Ignore listens in i" + + "ncognito mode\x02Ignore skipped listens\x02Minimum playback duration for" + + " skipped tracks (seconds)\x02Visit the URL for authorization: %[1]v\x02E" + + "rror: OAuth state mismatch\x04\x00\x01\x0a.\x02Access token received, yo" + + "u can use %[1]v now.\x02exporting\x02importing\x02done\x02Yes\x02No\x02n" + + "o existing service configurations\x02Service\x02Backend\x02Transferring " + + "%[1]s from %[2]s to %[3]s...\x02From timestamp: %[1]v (%[2]v)\x02Import " + + "failed, last reported timestamp was %[1]v (%[2]s)\x02Imported %[1]v of %" + + "[2]v %[3]s into %[4]v.\x02Import log:\x02%[1]v: %[2]v\x02invalid timesta" + + "mp string \x22%[1]v\x22\x02Latest timestamp: %[1]v (%[2]v)\x02no configu" + + "ration file defined, cannot write config\x02key must only consist of A-Z" + + "a-z0-9_-\x02no service configuration \x22%[1]v\x22\x02Ignored duplicate " + + "listen %[1]v: \x22%[2]v\x22 by %[3]v (%[4]v)" - // Total table size 3377 bytes (3KiB); checksum: 6715024 + // Total table size 3640 bytes (3KiB); checksum: 719A868A diff --git a/internal/translations/locales/de/out.gotext.json b/internal/translations/locales/de/out.gotext.json index 3d84fe8..18333c6 100644 --- a/internal/translations/locales/de/out.gotext.json +++ b/internal/translations/locales/de/out.gotext.json @@ -258,11 +258,11 @@ { "id": "Check for duplicate listens on import (slower)", "message": "Check for duplicate listens on import (slower)", - "translation": "" + "translation": "Beim Import auf Listen-Duplikate prüfen (langsamer)" }, { - "id": "Ignored duplicate listen {ListenedAt}: \"{TrackName}\" by {ArtistName} ({RecordingMbid})", - "message": "Ignored duplicate listen {ListenedAt}: \"{TrackName}\" by {ArtistName} ({RecordingMbid})", + "id": "Ignored duplicate listen {ListenedAt}: \"{TrackName}\" by {ArtistName} ({RecordingMBID})", + "message": "Ignored duplicate listen {ListenedAt}: \"{TrackName}\" by {ArtistName} ({RecordingMBID})", "translation": "", "placeholders": [ { @@ -290,12 +290,12 @@ "expr": "l.ArtistName()" }, { - "id": "RecordingMbid", + "id": "RecordingMBID", "string": "%[4]v", - "type": "go.uploadedlobster.com/scotty/internal/models.MBID", + "type": "go.uploadedlobster.com/mbtypes.MBID", "underlyingType": "string", "argNum": 4, - "expr": "l.RecordingMbid" + "expr": "l.RecordingMBID" } ] }, @@ -312,22 +312,22 @@ { "id": "Directory path", "message": "Directory path", - "translation": "" + "translation": "Verzeichnispfad" }, { "id": "Ignore listens in incognito mode", "message": "Ignore listens in incognito mode", - "translation": "" + "translation": "Listens im Inkognito-Modus ignorieren" }, { "id": "Ignore skipped listens", "message": "Ignore skipped listens", - "translation": "" + "translation": "Übersprungene Listens ignorieren" }, { "id": "Minimum playback duration for skipped tracks (seconds)", "message": "Minimum playback duration for skipped tracks (seconds)", - "translation": "" + "translation": "Minimale Wiedergabedauer für übersprungene Titel (Sekunden)" }, { "id": "Visit the URL for authorization: {Url}", @@ -525,12 +525,12 @@ { "id": "Import log:", "message": "Import log:", - "translation": "" + "translation": "Importlog:" }, { "id": "{Type}: {Message}", "message": "{Type}: {Message}", - "translation": "", + "translation": "{Type}: {Message}", "placeholders": [ { "id": "Type", @@ -553,7 +553,7 @@ { "id": "invalid timestamp string \"{FlagValue}\"", "message": "invalid timestamp string \"{FlagValue}\"", - "translation": "", + "translation": "ungültiger Zeitstempel „{FlagValue}“", "placeholders": [ { "id": "FlagValue", diff --git a/internal/translations/locales/en/out.gotext.json b/internal/translations/locales/en/out.gotext.json index 7687276..54c6719 100644 --- a/internal/translations/locales/en/out.gotext.json +++ b/internal/translations/locales/en/out.gotext.json @@ -311,9 +311,9 @@ "fuzzy": true }, { - "id": "Ignored duplicate listen {ListenedAt}: \"{TrackName}\" by {ArtistName} ({RecordingMbid})", - "message": "Ignored duplicate listen {ListenedAt}: \"{TrackName}\" by {ArtistName} ({RecordingMbid})", - "translation": "Ignored duplicate listen {ListenedAt}: \"{TrackName}\" by {ArtistName} ({RecordingMbid})", + "id": "Ignored duplicate listen {ListenedAt}: \"{TrackName}\" by {ArtistName} ({RecordingMBID})", + "message": "Ignored duplicate listen {ListenedAt}: \"{TrackName}\" by {ArtistName} ({RecordingMBID})", + "translation": "Ignored duplicate listen {ListenedAt}: \"{TrackName}\" by {ArtistName} ({RecordingMBID})", "translatorComment": "Copied from source.", "placeholders": [ { @@ -341,12 +341,12 @@ "expr": "l.ArtistName()" }, { - "id": "RecordingMbid", + "id": "RecordingMBID", "string": "%[4]v", - "type": "go.uploadedlobster.com/scotty/internal/models.MBID", + "type": "go.uploadedlobster.com/mbtypes.MBID", "underlyingType": "string", "argNum": 4, - "expr": "l.RecordingMbid" + "expr": "l.RecordingMBID" } ], "fuzzy": true diff --git a/internal/translations/translations.go b/internal/translations/translations.go index c555d32..9961c41 100644 --- a/internal/translations/translations.go +++ b/internal/translations/translations.go @@ -6,4 +6,4 @@ package are published under the conditions of CC0 1.0 Universal (CC0 1.0) package translations -//go:generate gotext -srclang=en update -out=catalog.go -lang=en,de go.uploadedlobster.com/scotty +//go:generate go tool gotext -srclang=en update -out=catalog.go -lang=en,de go.uploadedlobster.com/scotty