Compare commits
1374 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2e33bc8f96 | |||
| 0d6da0681a | |||
| 1c76415846 | |||
| a3d620ba52 | |||
| 82bf407323 | |||
| d83556e9fa | |||
| f70ae4f7c4 | |||
| 268e7be15d | |||
| accd2bf350 | |||
| 58cf1a543d | |||
| 183461a968 | |||
| 4fe0fb9845 | |||
| 0e5e1b8700 | |||
| 1ab1c86909 | |||
| 5e0f03dcd3 | |||
| d4b5778fdd | |||
| 943b806bbb | |||
| a5d6c32f77 | |||
| 4efa243ed0 | |||
| 8d09f27c59 | |||
| 47a2cde673 | |||
| 67051bb5ce | |||
| 233f6dbdea | |||
| 2c7a46240d | |||
| e0edc0c1dd | |||
| 2001fb9254 | |||
| 206efaa7f7 | |||
| 8bb1d63cb0 | |||
| 841de026ce | |||
| 6fac8b409e | |||
| b5ce1f566d | |||
| 8bb4f4426f | |||
| c962d60c6d | |||
| 1d29e6be1a | |||
| 970205954b | |||
| 89fe072c0e | |||
| 93d68a94a3 | |||
| f7afe1b994 | |||
| 5507f1acee | |||
| d513302a9a | |||
| f31351be9c | |||
| 99fdd027c3 | |||
| 0b143ec3a2 | |||
| 588992f84b | |||
| 7306b0bc4e | |||
| 9365f6edbc | |||
| 2c94cc760a | |||
| 53193cda98 | |||
| 5853523074 | |||
| 3a18eb8097 | |||
| 042a7df771 | |||
| 5c2a6598b9 | |||
| 2e4e9faf53 | |||
| a581ddf80d | |||
| 500f770da8 | |||
| 7cfe93312f | |||
| f4bc90bf2d | |||
| 587fcdf23a | |||
| c375e73781 | |||
| 8cf045b450 | |||
| e91f2d386d | |||
| 505465e745 | |||
| 662d3af81b | |||
| fef3b63581 | |||
| 0d3311ff5d | |||
| 7370b56767 | |||
| c0f3f136bb | |||
| 62c2dcba95 | |||
| 3e1abd984f | |||
| b689ba272b | |||
| 2775063cc8 | |||
| d557d1cbf0 | |||
| e965ac2004 | |||
| a1a0705c07 | |||
| 29dfef1518 | |||
| 2c5b09e488 | |||
| 5a2b5ae522 | |||
| 5dc3b09b7b | |||
| 1a1a764d64 | |||
| fc47c9f590 | |||
| 470bc761ef | |||
| a60dde2bdb | |||
| 8b1332ee38 | |||
| 12eb7c7d9b | |||
| aecac6be6c | |||
| 44913173eb | |||
| 2829108e32 | |||
| 0eb10017c9 | |||
| c36745e79b | |||
| e33269bce6 | |||
| 7c4894a5f3 | |||
| 84e3cf895f | |||
| 9d7281179b | |||
| 85c0995323 | |||
| 21990e71db | |||
| 9d99ff4095 | |||
| 075fcde92a | |||
| e654b7e695 | |||
| df78d13076 | |||
| 7bc24116da | |||
| 3225cfe5dd | |||
| 9de8bfcdc4 | |||
| ab01c80a13 | |||
| b6fb3d6316 | |||
| 6287d10a82 | |||
| ed79631d66 | |||
| b7f607bdbd | |||
| 546c89e175 | |||
| 486a43f4b7 | |||
| 8d51137a18 | |||
| cf67540a1f | |||
| edad53e989 | |||
| cc6c0bdff1 | |||
| dbdc3c60a5 | |||
| db4134f40d | |||
| 21c3e6a5f2 | |||
| e5b4ba9f15 | |||
| 8a51468671 | |||
| 083403bf80 | |||
| 886f3203e0 | |||
| 253fe0055f | |||
| 6637f6a0da | |||
| f7e359a740 | |||
| 3c88d171ab | |||
| 8e27be48c6 | |||
| 700b2a3669 | |||
| 329327d491 | |||
| 829a06db5a | |||
| 98b4053a3a | |||
| d340828da7 | |||
| fb18f26964 | |||
| b37fee1e1b | |||
| fb2c4f0a09 | |||
| d58897ba4c | |||
| c30fbe41a6 | |||
| 5a7daaf2f6 | |||
| 61c0217b8f | |||
| d5ea182a50 | |||
| 33133de7c7 | |||
| b544e18cea | |||
| 808f802efd | |||
| 8e21a10214 | |||
| f787c2cc80 | |||
| ebf91f0977 | |||
| cae6d858fa | |||
| 37f3e9ce89 | |||
| f350fd7aae | |||
| 67b001c6a0 | |||
| ccbe5da684 | |||
| e3e5ae3a7f | |||
| 972c3dba2f | |||
| b61151b2bd | |||
| 4b35a96778 | |||
| 19fd0d61c6 | |||
| 77779938b9 | |||
| bb06d71fbb | |||
| 3cf955179d | |||
| 606dd5a679 | |||
| 31fe07ebd4 | |||
| d456d0db89 | |||
| e00c357fae | |||
| 21b54ef6ff | |||
| f96b650787 | |||
| ebbbf2a6b9 | |||
| 610ad59fdc | |||
| 4fe302d753 | |||
| 5983ae47bb | |||
| 4442fc12ec | |||
| b42de1c458 | |||
| eec5a2352e | |||
| 303de7c0aa | |||
| 4bc57c2628 | |||
| c74505ac90 | |||
| 7a3a803d72 | |||
| fec010c73f | |||
| b093cc2c08 | |||
| cb3cd74e9e | |||
| ae5b8038b2 | |||
| 5f93c96901 | |||
| ec81ac5e40 | |||
| 8901a7768d | |||
| 22f14cce3e | |||
| 4afb2276c1 | |||
| 77658035f5 | |||
| 07aa9d5811 | |||
| 7764bcabde | |||
| 69058a52ed | |||
| 1f7acbd219 | |||
| 88dfaa98f3 | |||
| 504829f065 | |||
| e4e6dcb0cd | |||
| 78010793fb | |||
| bcdd24d74b | |||
| 2d86d26701 | |||
| 77ca2b483f | |||
| 13c71e8904 | |||
| 3bfb853414 | |||
| 25454689c0 | |||
| dd3e42c41e | |||
| 499ae2422c | |||
| a3601cece6 | |||
| 8168666720 | |||
| 9f580a1d7d | |||
| f8765fbdbb | |||
| 2922a457cd | |||
| c2e4c32745 | |||
| 5071183550 | |||
| db736bcb23 | |||
| fb29d62cf1 | |||
| 28f5185d38 | |||
| c9178985f2 | |||
| 297b94bdab | |||
| dbf8b1c5c5 | |||
| cec6339f9a | |||
| e7edf30717 | |||
| 441be69ca5 | |||
| 2199391ec1 | |||
| f43daa3805 | |||
| b4dc2ca88f | |||
| 4aae0d89cd | |||
| 7c1eec03a5 | |||
| 06aaba0c7f | |||
| 766268d9e4 | |||
| a7f47001c6 | |||
| 104850e9b0 | |||
| 3139beec91 | |||
| 30bc676fd2 | |||
| c2cf5992f8 | |||
| 50b265c3ea | |||
| b6cf7070bf | |||
| 06f20cc84c | |||
| 7453a5a06c | |||
| de1ccd80fc | |||
| d1ee480452 | |||
| c8397e4fb4 | |||
| 65bcf20f97 | |||
| 1a214140fb | |||
| ffdf7ac5a8 | |||
| c8bb1f386d | |||
| 457e1bb48e | |||
| c1177adc08 | |||
| cd976ee500 | |||
| b856884bba | |||
| 2df8e58773 | |||
| da8e0106f6 | |||
| b0b2005e1c | |||
| 5817d9c3ae | |||
| 08f9187cdf | |||
| 49ac17a40e | |||
| b1c4b04ebf | |||
| 10b8066126 | |||
| d86e454d3f | |||
| 4ea8fa2561 | |||
| dbea4c5884 | |||
| 7d4e949f0c | |||
| 82917e7748 | |||
| 7c9544a528 | |||
| 960a20e899 | |||
| c9b7901681 | |||
| 95698aaf35 | |||
| 4dc87417ff | |||
| 7510f8eb08 | |||
| 59103df665 | |||
| 258d35e48d | |||
| 5e419489d5 | |||
| 0d462ac3a2 | |||
| bcb94f6de8 | |||
| fe925ec8ee | |||
| 86c77d141f | |||
| 754ca3caaa | |||
| 61ea104d7b | |||
| 573bdfae03 | |||
| cca493b7d5 | |||
| f47262d27b | |||
| 65bf9129ea | |||
| 87e9b9f7a8 | |||
| 07bc4f05fd | |||
| e3a6808087 | |||
| e9184e5d60 | |||
| a5b32d96f8 | |||
| 040db7539c | |||
| da646c1d53 | |||
| 5f5917f972 | |||
| eccb0d2f08 | |||
| 4cd9dd17df | |||
| 5de07b9a96 | |||
| 151f067beb | |||
| c68a7bd19f | |||
| b87e5e31df | |||
| 03229d61c8 | |||
| b6330eed18 | |||
| b254812ac2 | |||
| 7e243e2fbf | |||
| 307e52cc89 | |||
| f7b7ea916f | |||
| 3eccf8daca | |||
| aa48944212 | |||
| 4d51f1a412 | |||
| d3c9f76582 | |||
| d638a6cf28 | |||
| f93651b219 | |||
| cb8c6c69fe | |||
| 4e7266fb1b | |||
| 8de75ff3a5 | |||
| 3236c88eb2 | |||
| c9f0ad14c2 | |||
| 0a9199c92b | |||
| 3ffcff7d9c | |||
| ddf614d362 | |||
| 6f1a77bbb9 | |||
| 8595f9761e | |||
| cc442182fd | |||
| b827a05eea | |||
| 250abab8bc | |||
| 8e45518ccf | |||
| 7485e065ed | |||
| c1d88f91d4 | |||
| 124a2bd8d0 | |||
| f8f94f9665 | |||
| 5e98a82b23 | |||
| a5c20a66b3 | |||
| cc84116ad1 | |||
| a2e2031708 | |||
| 5001eabf23 | |||
| aac2974430 | |||
| f7f005bb3d | |||
| e1f6d5b7f2 | |||
| b6b607897e | |||
| 651ebb2b1a | |||
| 9fa24deed2 | |||
| c81022d373 | |||
| b726dc7580 | |||
| 471aa7d0a6 | |||
| f34d645ac3 | |||
| d2a11a560e | |||
| 9d185872db | |||
| d0ff71aa66 | |||
| bc8999585f | |||
| 1e1582e31f | |||
| 2c48a0f6f4 | |||
| 368b251e3f | |||
| 3339f997e3 | |||
| 76e8e7aa7a | |||
| 8c325b17f8 | |||
| 494bc0ccc7 | |||
| f14333d07a | |||
| 268ffe2d4c | |||
| 831eb63ace | |||
| 345f235117 | |||
| c6422d5d9c | |||
| f90384386c | |||
| 9213fdd4f7 | |||
| 787c8cdceb | |||
| ace48bc79b | |||
| e5a8b7431f | |||
| e37f22503b | |||
| e61757a7fc | |||
| fdc798ad87 | |||
| 6393e6348c | |||
| ce6e115783 | |||
| 68cbaabc0c | |||
| 9911bbf509 | |||
| 553c2c1096 | |||
| dde57e3eb0 | |||
| 935461f610 | |||
| b95da863c6 | |||
| 92316a999c | |||
| 0ec038342c | |||
| 4649c3bfaf | |||
| 8441af2483 | |||
| 63c4a9cfa7 | |||
| 4e8173360e | |||
| 4f37377d64 | |||
| 0e886c0890 | |||
| cb0719ecf4 | |||
| d24b31cf74 | |||
| 610073b982 | |||
| 493b65bb11 | |||
| e4e7ef3b52 | |||
| e1dc19e9eb | |||
| 4b9f92ed2d | |||
| 622beccd95 | |||
| 8678fca9c0 | |||
| 4dcb9b5995 | |||
| 718025445c | |||
| 845dac3c03 | |||
| a1ac3d1359 | |||
| c21dd08a40 | |||
| 8de27358d3 | |||
| c4910af494 | |||
| 67fc0a415c | |||
| 7d145cbca1 | |||
| a565d9fc0f | |||
| 71a9ed5d65 | |||
| fc16a325f7 | |||
| c52d96dcbd | |||
| d2c681a047 | |||
| 8e75df42bf | |||
| 85d1dc46d1 | |||
| 84f5e265f2 | |||
| 0d261a8e44 | |||
| 3c228ede48 | |||
| 8b971d2263 | |||
| 6b8fed3fc2 | |||
| f15c51f3d7 | |||
| fa3e146ef7 | |||
| 4baec1560c | |||
| 0e0230b995 | |||
| a33a03f512 | |||
| f8a53f0d61 | |||
| 748d77d1c0 | |||
| 725ad0d630 | |||
| bdbab17772 | |||
| 57d2fa372d | |||
| 80471b0ca4 | |||
| 22fdfe3342 | |||
| 5ecfa2a1f7 | |||
| b9beea810e | |||
| f0e77812e7 | |||
| 6d1237c2a2 | |||
| b43c92386e | |||
| 017476a81b | |||
| 9b047d9c54 | |||
| 31f009d3c4 | |||
| 8504f2c086 | |||
| 1d6251baea | |||
| 3ea13a2a22 | |||
| 1cc153084d | |||
| 1c468b4054 | |||
| 1bad46890a | |||
| 5829c8d0f7 | |||
| 85aceaaae4 | |||
| 24e593b22f | |||
| 3f8ca6002e | |||
| b62ccfe7b1 | |||
| 237dde9765 | |||
| 65f4339fd1 | |||
| 109e9f8166 | |||
| 9163b6f04b | |||
| 51da259c97 | |||
| 2bf67b941e | |||
| 533b96d1f6 | |||
| 5c9ded8779 | |||
| 6f389bb297 | |||
| 8a209404d4 | |||
| 6193fb487a | |||
| 9aa7f7a023 | |||
| 5bfaa9a791 | |||
| d210ec8227 | |||
| dec7c5e95c | |||
| 940d0beb84 | |||
| cf98754276 | |||
| d91d493dd1 | |||
| 7e1aea21db | |||
| 0179dfd311 | |||
| 98ea26bbff | |||
| 0d9daaad66 | |||
| fe319daec1 | |||
| 929c58671a | |||
| 4fb2350c2b | |||
| a401bfa809 | |||
| fdeed76f6f | |||
| 0ab113816a | |||
| 8a58b02c7b | |||
| 037b059b55 | |||
| bb0f9fb3d0 | |||
| d3c7848896 | |||
| ea50cb1e65 | |||
| 5070fd88b5 | |||
| 21177478cb | |||
| 26b8b38b89 | |||
| be04d66aa8 | |||
| a837987e70 | |||
| da99558163 | |||
| 3b50cbcb6e | |||
| 595c011bce | |||
| 458fe54063 | |||
| ae3a289005 | |||
| a49eea9246 | |||
| d675a175e9 | |||
| 6c510a71c2 | |||
| 5503d2cbb8 | |||
| ba4c7e1a0c | |||
| e19c458441 | |||
| ec5cf0cae8 | |||
| b3c4570f8c | |||
| 112b6d893b | |||
| 52236907e4 | |||
| d449529ea7 | |||
| 61c799f7d4 | |||
| 1a4ee13e47 | |||
| f91afb984a | |||
| f9892b0eae | |||
| 60c7885a3c | |||
| 63ca6aa533 | |||
| e77a8c04e8 | |||
| 0bfabf604c | |||
| 4343c599cf | |||
| c251554c31 | |||
| 95e519bdc9 | |||
| 79d38bfc8e | |||
| f5655b0ae6 | |||
| 12b4afc3ce | |||
| c104d47737 | |||
| 870cf6143c | |||
| 1baed0e913 | |||
| 02619c79bb | |||
| 0faad538f3 | |||
| e7de30c629 | |||
| c5d8333039 | |||
| 4da08e7c9b | |||
| 171387995a | |||
| aeac020c9a | |||
| 5c05ddeb29 | |||
| cbdd649365 | |||
| d2cf2ad71f | |||
| 7d33494097 | |||
| ca83edabf3 | |||
| f84e77e814 | |||
| 14f2120a32 | |||
| 1cbf14ee2a | |||
| b7cb167fc6 | |||
| 41b9f8b967 | |||
| 0b769ce287 | |||
| ad71ef8a68 | |||
| 048a994f32 | |||
| c2bd8ce188 | |||
| 62ce4e818c | |||
| 4ab8829a02 | |||
| 36b3e2cb0c | |||
| 9ba0614a7d | |||
| 81431ad196 | |||
| a8e8d5afd7 | |||
| f3d86743ee | |||
| 6306968193 | |||
| 7142a253d6 | |||
| 2a24588338 | |||
| 2abaf54ac8 | |||
| cc730ad55c | |||
| d8581c5d69 | |||
| 3208bf4a6d | |||
| 4109db1ad7 | |||
| 87a0ef5d54 | |||
| cdc40f0c53 | |||
| 7a3b8082a2 | |||
| 3e9039c97d | |||
| b9d1130468 | |||
| 605f0984e4 | |||
| 44de7d9e98 | |||
| 9926575744 | |||
| f16a99f6e4 | |||
| a23c64b5b8 | |||
| 0899f76548 | |||
| 515dcdc7e3 | |||
| b2c4bc425b | |||
| 363c3b3a67 | |||
| c2dde3d78f | |||
| eb515cfc61 | |||
| c208ca184f | |||
| c231fa7c44 | |||
| 9e1b8d43d0 | |||
| f50ece88df | |||
| eeb780d190 | |||
| cafdf654d3 | |||
| 2d665013e7 | |||
| 451a46e208 | |||
| 490b901c34 | |||
| b57b4a3454 | |||
| 60c61e32b1 | |||
| aa9052d449 | |||
| 67f3a38583 | |||
| a00ecc4729 | |||
| 56d63fca52 | |||
| 759f3ba317 | |||
| d8daf03f2c | |||
| a519c7c714 | |||
| 933d12fdd1 | |||
| 61fb733550 | |||
| 7f05e3168d | |||
| 3b7697a90d | |||
| 350b1467fe | |||
| 2f5d102f4d | |||
| 66e296df1a | |||
| 1e4cd699db | |||
| 516fbff3d7 | |||
| aab9358d67 | |||
| ae3939f857 | |||
| 79bafd1780 | |||
| 3f4f52a31f | |||
| c2b7b29716 | |||
| dab84b9cf9 | |||
| e5980158eb | |||
| 647d4c9d99 | |||
| 30feb6128b | |||
| 0cf6923540 | |||
| cce9f0b462 | |||
| c0805fb758 | |||
| 04e5844301 | |||
| f28e663133 | |||
| 2c84527c43 | |||
| 68511de727 | |||
| e7ca9f129f | |||
| 259da70e4f | |||
| 9409d75ac7 | |||
| 3ea923f56f | |||
| 6d6c8c94cf | |||
| 29098758a9 | |||
| fdbb35e221 | |||
| 6ddac62313 | |||
| ae4b494300 | |||
| 7d9eed88f4 | |||
| 4abf848f99 | |||
| cc0a6cfdce | |||
| a74d0dd0ca | |||
| 18f15d4cce | |||
| 80e20c6579 | |||
| 761026fd74 | |||
| 95b75f020c | |||
| 574e4baef8 | |||
| ec4871d5a8 | |||
| ccd6bf9c3f | |||
| 2975d4292c | |||
| ad9571550f | |||
| 980068217c | |||
| 18f69aea3f | |||
| add7cb9e48 | |||
| aa67a57971 | |||
| 74f22b4474 | |||
| 7ef4a23576 | |||
| 3c90a1f459 | |||
| 3793d36f36 | |||
| 179f4b29db | |||
| 34f106896c | |||
| 06b581f499 | |||
| 3ec126628c | |||
| 1d3bb60e0b | |||
| 2e3ced6006 | |||
| e8efca5a3e | |||
| 5161c356f9 | |||
| e917b30e64 | |||
| 2d847f9808 | |||
| 21755fffc7 | |||
| 5c9d3e3e67 | |||
| ea801f65ef | |||
| 27f4c0393e | |||
| 9bc42f836f | |||
| 11b11ed966 | |||
| 5f79b7e788 | |||
| 7d1d806797 | |||
| 836cedb0f3 | |||
| 70349e13cc | |||
| 6d16b74471 | |||
| c211780c33 | |||
| 2173ba0234 | |||
| 3a4cbc543b | |||
| 2fef7f0246 | |||
| 12d693921e | |||
| d1b4879f51 | |||
| f14939fcd2 | |||
| 4e66b0cedd | |||
| 11fe54d640 | |||
| 446529f738 | |||
| ac6e9deeb9 | |||
| 100873163f | |||
| e141e18bac | |||
| f4da0c2c95 | |||
| 7507bce3cc | |||
| 2b970fade8 | |||
| 35f0e43082 | |||
| ae4410a613 | |||
| 5534174016 | |||
| 15cf6c77c3 | |||
| 18a8fc462d | |||
| d3acb4945a | |||
| 32d3c58b44 | |||
| bd8c2eb390 | |||
| a81fa9c0d1 | |||
| 1d0f7d7a48 | |||
| b6687307df | |||
| 7e07a44f68 | |||
| 5ca66530ee | |||
| 95acbe2b65 | |||
| 534aeb163a | |||
| 6abcbee290 | |||
| 4457a043a4 | |||
| 410a052fea | |||
| e4287085a1 | |||
| b6cefef8fb | |||
| 9d7e2a06bc | |||
| d516fc2153 | |||
| 77bfe8e218 | |||
| 0fcbe38837 | |||
| b85a40f683 | |||
| 8020d61715 | |||
| cb1381bbb3 | |||
| f42f20f770 | |||
| 9fb1dbfde0 | |||
| 4f1ebab45d | |||
| 95644ea513 | |||
| 2fcddc8d2d | |||
| 6505a93645 | |||
| 11c25efd47 | |||
| a97bc8da5a | |||
| 782116b31b | |||
| 708d4b5480 | |||
| 9ba8913da7 | |||
| d07dae2542 | |||
| e7f213c4dc | |||
| 4cbf6c015b | |||
| 8acb93225b | |||
| 8153955ccf | |||
| 1de1cbac65 | |||
| 825aac1dab | |||
| d48aa7ad39 | |||
| 65ad09a02e | |||
| 08aae09446 | |||
| 88f54a389f | |||
| 4c23b1f970 | |||
| a979f1c8ea | |||
| ead448ed98 | |||
| fade340e80 | |||
| 8cc8160f70 | |||
| ee354ff678 | |||
| ca7ccc7b3e | |||
| f6b2766ec2 | |||
| 4a5f811485 | |||
| a092da7ba5 | |||
| b587a16419 | |||
| 4cf4f19ccc | |||
| 5b84c9efce | |||
| 98bbbfd851 | |||
| da2dbcacc4 | |||
| 7b6235694b | |||
| 4ad8e7b9dc | |||
| 51ecfff86b | |||
| 2c21a03201 | |||
| 4c2cb8dac9 | |||
| 9edcd2c32e | |||
| 0829fd2167 | |||
| 494e58296b | |||
| 151da2d786 | |||
| d7f5f28091 | |||
| 358fb3b084 | |||
| af79ba266d | |||
| 45f419f41a | |||
| 5189d6cfee | |||
| 102034b58c | |||
| 50d92bc004 | |||
| f2716e1dc8 | |||
| 9d436ed0a8 | |||
| 31d472e289 | |||
| 7f9a2b3011 | |||
| f54b346dce | |||
| dbff62bc5b | |||
| 87f43e3237 | |||
| 49cdcbdcc2 | |||
| bcff26c85b | |||
| bcfb33b4b1 | |||
| b172d8e509 | |||
| f10d146272 | |||
| 6105821a94 | |||
| 7c983df6f4 | |||
| cbbddefcf8 | |||
| 8d49c67fcb | |||
| c94b22b82c | |||
| cab3cb49f0 | |||
| e42084f008 | |||
| adca273ec3 | |||
| 91dceb3c22 | |||
| 216e76f4a1 | |||
| 178bfa483f | |||
| 10ecf5d2fe | |||
| 7099b81296 | |||
| 1f15376b00 | |||
| 02b7a39753 | |||
| 6edc84a8bd | |||
| 11a0d39064 | |||
| d5a5ed35b6 | |||
| dbb9e95b32 | |||
| d4c8a4320d | |||
| 68d4f38e41 | |||
| 2204784e89 | |||
| c3b995b0a8 | |||
| ed0a344077 | |||
| 199d912823 | |||
| 089eff3152 | |||
| 306ee8dba5 | |||
| a4992bafb2 | |||
| 5b004eedff | |||
| 2a66076d31 | |||
| f48e46d29c | |||
| 20296f5463 | |||
| fe4c89c349 | |||
| 3640527c8c | |||
| 3326582a16 | |||
| 5dcb9fe9ba | |||
| 336fa1e6fd | |||
| 3679a109d6 | |||
| 5290ed3de2 | |||
| fe5195714f | |||
| 8eb846262d | |||
| e9a1c2a91f | |||
| 2d1f78b383 | |||
| 1899064fd3 | |||
| e0280e5fe2 | |||
| d577e0fba6 | |||
| 37577c2f7f | |||
| c880f0a4eb | |||
| 4875955914 | |||
| 5b28c780bd | |||
| 4db2674b15 | |||
| a454a0163f | |||
| 61eb28e780 | |||
| e165e64952 | |||
| f380822e11 | |||
| 6b1995145a | |||
| 9317e99f43 | |||
| 66d05d8683 | |||
| 545a3a4bb6 | |||
| 04a6d16dbe | |||
| 3c36477b1e | |||
| c5c191492e | |||
| b12e2f607c | |||
| 1d77ad6de4 | |||
| 25bd26d7f3 | |||
| d11d0abe73 | |||
| 8a643c465d | |||
| 233673b8d8 | |||
| 5a448fab31 | |||
| 42e8262cda | |||
| f64769b1d3 | |||
| e12998761b | |||
| 2e20fa83b8 | |||
| 5149757af3 | |||
| 655741f108 | |||
| 4e58571ad0 | |||
| 1e4a615b47 | |||
| dedcf0c9ff | |||
| a84a7d236a | |||
| e56b4b21f0 | |||
| 361f9e42bd | |||
| 918736d2ca | |||
| 8f3d5b08ac | |||
| 4ca327d801 | |||
| 8d0aa057ad | |||
| b7ffee089b | |||
| d72b994f66 | |||
| e6dafdb068 | |||
| 14886dd4bd | |||
| c9f2f88bac | |||
| 1eabbc0bbe | |||
| 32a572b35a | |||
| 59a5679cbb | |||
| ac51f798c3 | |||
| 7599cc694a | |||
| 53595654b1 | |||
| 7656c41dbc | |||
| ff0c5b87c9 | |||
| 506c95740a | |||
| 575a42e28a | |||
| dcdc6a825f | |||
| 0a41bb1cd6 | |||
| 72a4736dc9 | |||
| f2b1e6b6bf | |||
| bc0e28ad6d | |||
| 8ebae91c02 | |||
| 954ad90733 | |||
| 5af0643788 | |||
| be633ac1f2 | |||
| 0d047c1fd5 | |||
| e8b1aca629 | |||
| 5b9bacf390 | |||
| ccd16f4a5f | |||
| 02e519dab3 | |||
| 473ea78f12 | |||
| e7f366b770 | |||
| 66816ac42d | |||
| 08b985f2ab | |||
| 747bde2136 | |||
| eabc28b39f | |||
| 3537dc19ee | |||
| 6afeb60557 | |||
| 71115dedee | |||
| 8750b54f76 | |||
| 482a1c5073 | |||
| c8d516c40b | |||
| c1ad168c32 | |||
| 5f5be5d02f | |||
| 61ef56dccc | |||
| a73b5acc75 | |||
| 877573532c | |||
| 7b033b5caf | |||
| 8924ec29d3 | |||
| 23e688aaf8 | |||
| 9b3cbe8e01 | |||
| 67a89e8ed4 | |||
| 464a2b94ea | |||
| 9357a15116 | |||
| ee820bb01c | |||
| 6b81735811 | |||
| 8ce91b143a | |||
| 116dbad9bc | |||
| 977af3d617 | |||
| 6da8defc73 | |||
| 0e93a963e1 | |||
| 1e98b2e75a | |||
| 6f5f13a840 | |||
| 822bcedadf | |||
| 2b6aea82c3 | |||
| 4f4efb407e | |||
| 6159e0e652 | |||
| 3957e06174 | |||
| c78f823b9b | |||
| 1be3bb360e | |||
| ba2afd2652 | |||
| 5e283c9ea5 | |||
| ddb1c56111 | |||
| ebd167f3f2 | |||
| 178a62b9d3 | |||
| f98a2cf766 | |||
| fdbe6f7331 | |||
| 57c2cdc91e | |||
| 0f5074f8ab | |||
| 661396226d | |||
| 36f27fe2e6 | |||
| adf1ce4bc7 | |||
| 43b4b8df5e | |||
| 4a8440c281 | |||
| 32fe9fcffe | |||
| a9896845da | |||
| a59aa07334 | |||
| e07d7395e7 | |||
| 9bb6f32ece | |||
| ccb19a0dc9 | |||
| 64fb6c2597 | |||
| 73c3e355fe | |||
| fc7a504643 | |||
| 764dc0f895 | |||
| 9f33f49ec4 | |||
| 87ae6d29bb | |||
| 093c8e3ca6 | |||
| fec26a010d | |||
| 5d8aaccc55 | |||
| cda03078a9 | |||
| 9c139b96f4 | |||
| 9b2816c156 | |||
| b1b8847134 | |||
| bf9e698288 | |||
| 28e8a1c5dd | |||
| 18e0b1b863 | |||
| 02e2fb6a83 | |||
| 91bee4880e | |||
| 7de7303ebb | |||
| 363d869cff | |||
| 2512af80af | |||
| 887979932c | |||
| eeaaf2f158 | |||
| e91e995b95 | |||
| 49dd2ecac6 | |||
| 06f419abc4 | |||
| 2c29461e61 | |||
| a9b9e74477 | |||
| 30848b7c4a | |||
| 83023c19a6 | |||
| 45931a25b0 | |||
| 98d4ff83b1 | |||
| 35f1d75832 | |||
| cbbba6ec76 | |||
| 35383e4730 | |||
| b7029cfc60 | |||
| d8328e0ad5 | |||
| 7ccb72d399 | |||
| 5108f19ee5 | |||
| 041574570f | |||
| 9505195835 | |||
| b33f5ff94d | |||
| 097f488ba0 | |||
| 521d1d8ee7 | |||
| f38ce093f5 | |||
| 2e63985ed3 | |||
| a22d08e983 | |||
| d1b998aebd | |||
| 7f598b5856 | |||
| 373e27ac5b | |||
| dcd53a9234 | |||
| c59b11b63b | |||
| 4d8fd8718f | |||
| f0c4d1da36 | |||
| 79c669e7c1 | |||
| e8156fc0fe | |||
| 348c70dca4 | |||
| 3439dded3b | |||
| 2ee0101e97 | |||
| 6a037083dd | |||
| 1d1705e471 | |||
| 0f7fe74d40 | |||
| d9f24d2c4e | |||
| 7b6a7377a8 | |||
| bd8468a8c1 | |||
| aec088f95d | |||
| 4b12b43f57 | |||
| f47287de94 | |||
| 58317f4c10 | |||
| c0aae7b2ac | |||
| 76547ad602 | |||
| 8b128273c8 | |||
| 25d1127b21 | |||
| b3ab08b354 | |||
| 2ef8b4f14c | |||
| b39baf6d88 | |||
| 40f0b9b852 | |||
| 3fe8115f32 | |||
| 47d3b34e4b | |||
| d0889bb622 | |||
| d6a7cbfa6f | |||
| c6541b6897 | |||
| 865578037b | |||
| d4176eeb8a | |||
| b88bbbc680 | |||
| 67aaccce86 | |||
| b95b69bf50 | |||
| 894531fd93 | |||
| 8a20566e0f | |||
| 253325a3cf | |||
| ee6716a0eb | |||
| 8fe5450ace | |||
| 1bb36b38bc | |||
| 25cec993bc | |||
| c744619664 | |||
| 451d30517e | |||
| dbb345ba1f | |||
| c60edf9718 | |||
| bd4e3a91c8 | |||
| 0f8b586b75 | |||
| 262c17a5bd | |||
| 542cb916b5 | |||
| 2627ebd675 | |||
| 89ed7d2345 | |||
| 3c4abc1418 | |||
| de224444c2 | |||
| e9ae2d44c9 | |||
| 680f4143f5 | |||
| 23b553ea4b | |||
| e2a91022fd | |||
| d97aa1a8a0 | |||
| ede11307ef | |||
| b74c1a0207 | |||
| 104c1284f6 | |||
| 8af1b36551 | |||
| ce5421ffce | |||
| 98b1fd8787 | |||
| ed5f1ecde3 | |||
| efbd9922fd | |||
| 463bc2c976 | |||
| e71a70d25c | |||
| 4ae9a2820e | |||
| 3ac1cc9204 | |||
| 2938c93803 | |||
| 7e8d31172c | |||
| e0353a88ce | |||
| 635f3334a6 | |||
| 7800e106cb | |||
| e436e6eae0 | |||
| 0c24b70f23 | |||
| 2693a1598a | |||
| 7a87e90edf | |||
| d333fc1075 | |||
| 1f99db3217 | |||
| 4fa9762a50 | |||
| 1e5bea85b3 | |||
| 739518a6fd | |||
| 24b0ae2c6b | |||
| dae6fc9149 | |||
| 25958a7bb1 | |||
| 8b901789dd | |||
| 09a582192f | |||
| 8735107eb0 | |||
| 5b9e947b8f | |||
| 1f1efac466 | |||
| ee9c5a149b | |||
| 79151cb3aa | |||
| 328530ea2c | |||
| 9e809b002d | |||
| 200226f42d | |||
| 5d99a854e2 | |||
| cd4f0ccad7 | |||
| b572623442 | |||
| ef02fdcf45 | |||
| 25d5c16af0 | |||
| 6f49313f03 | |||
| 55c7456c69 | |||
| 78c435b3c4 | |||
| 5e43f38348 | |||
| 24000acda0 | |||
| 24becf0337 | |||
| 8c80922b6b | |||
| 813a089f0d | |||
| 197bead857 | |||
| 5f7a705394 | |||
| 646c0d79a3 | |||
| 5a1313397e | |||
| 4bc70ac2b8 | |||
| dc5b2f96be | |||
| d10b297d75 | |||
| 933b4cc8f0 | |||
| 4557aff9b6 | |||
| 3a42d700fe | |||
| 1a142a8a39 | |||
| 922b04cd54 | |||
| bdfae8ce24 | |||
| 08a537e509 | |||
| 51d8145f13 | |||
| 7e74f33030 | |||
| 0bb8d9bcd9 | |||
| 19a4cb901b | |||
| c497dff69b | |||
| cd0164b665 | |||
| ab35cd3049 | |||
| 13b2ff3a2e | |||
| e00c1b51c7 | |||
| 0a2a289939 | |||
| 919b6ba7cb | |||
| f0683177d8 | |||
| 13450580d0 | |||
| 2375067d19 | |||
| b2fe0f21cb | |||
| 3e0257ba07 | |||
| 4f078284f3 | |||
| e87fa12fdc | |||
| 354c44d717 | |||
| f55faa0a8a | |||
| eaf9d310aa | |||
| bbd10b657d | |||
| 8600b5558f | |||
| 9c7eb5dc26 | |||
| ac63a6a200 | |||
| 3389994ff9 | |||
| adaee80913 | |||
| 4e467d9308 | |||
| a85fc609cb | |||
| 96f69953f2 | |||
| 9095b46a15 | |||
| 4415927465 | |||
| e6b25119cd | |||
| 09e02aeac8 | |||
| f3de17112a | |||
| 91392c0c7e | |||
| 54683a233f | |||
| 8d12eeb033 | |||
| 0ba35890b1 | |||
| 4783ca5942 | |||
| 1517a60215 | |||
| 4ca3c8b7e2 | |||
| 93081c89c8 | |||
| 09255b626b | |||
| 33fe008b5c | |||
| e72ac3d9d0 | |||
| 14a926aa88 | |||
| 99311dba6d | |||
| 5e9f545e4e | |||
| 0cc8fdf564 | |||
| 27e0e7173a | |||
| 2710c62b82 | |||
| a50de65a66 | |||
| c21758f8e6 | |||
| 1a5f6c2a8f | |||
| d521a84f85 | |||
| aa29a0fa65 | |||
| a8469d7d8d | |||
| d09858cbec | |||
| 855f67bb1e | |||
| 8508620e53 | |||
| e9fbfe36cc | |||
| f158a7865a | |||
| 74860edc6e | |||
| 1712b70fb5 | |||
| 4a57cc5ee9 | |||
| 4db0f72864 | |||
| bfe624dc57 | |||
| 994fdaf436 | |||
| 9ac9146d78 | |||
| fbbfc540c2 | |||
| ac3f42d507 | |||
| 993655fdee | |||
| eff2f550c6 | |||
| aef03ab9fd | |||
| f822373c30 | |||
| 19313f9cc9 | |||
| c3b64b097f | |||
| 6668d735a0 | |||
| e2d801168e | |||
| 86f5223350 | |||
| 9ee6940856 | |||
| bffea06343 | |||
| e0ab14b4ea | |||
| 1cb5f628c8 | |||
| 1ac9704cf4 | |||
| 7ebcc51646 | |||
| f4ccde2734 | |||
| e6d7c5cdfc | |||
| 9e3f32a233 | |||
| 8ed813427f | |||
| 2db0d79af6 | |||
| 28ba662d6f | |||
| e041a83121 | |||
| 42185e59d5 | |||
| 975e9719ad | |||
| 31e51a67db | |||
| d5f829d8d0 | |||
| 0dbf0295b8 | |||
| daaf48f453 | |||
| 1d9e021681 | |||
| 6dd36c74e0 | |||
| b933218762 | |||
| 26f8814a97 | |||
| 236ba7536e | |||
| faaf996b16 | |||
| 5a637fd6e7 | |||
| aca1d30d2f | |||
| 5c3eecb3fd | |||
| 9da3ad2fb7 | |||
| d45d597136 | |||
| 2495d5da99 | |||
| 33aeafd19c | |||
| 374d0ce5e7 | |||
| 371805334b | |||
| 47dbeff0d0 | |||
| 17652b5b77 | |||
| 9608c2a7fc | |||
| 8abe2823d7 | |||
| dbc7f23ab8 | |||
| 357bd935e4 | |||
| f99ca53a6d | |||
| 8700c1a110 | |||
| c5e37b791c | |||
| 307f6387ab | |||
| 652a150a0a | |||
| 2c59badb46 | |||
| 69087bbf1f | |||
| af78f1596a | |||
| fca936a698 | |||
| 54b70f6b3e | |||
| 62f7d440fa | |||
| 752ccbf482 | |||
| a8bc53912d | |||
| ed700c2916 | |||
| 97695444af | |||
| 85e5e1814a | |||
| 88c84a50d0 | |||
| 0004fb3fc8 | |||
| 9cbaf5797b | |||
| 1df75ae82f | |||
| 4d86af5437 | |||
| ba0876fd8b | |||
| a3a3fca694 | |||
| de4396936d | |||
| 164575296f | |||
| 7e8cbfc4c0 | |||
| 679938ccf7 | |||
| 5a6d681bf4 | |||
| 62304b723e | |||
| c89bb4606f | |||
| 14c50e0d57 | |||
| f7e9cf9a29 | |||
| 4bb3f41828 | |||
| e4759ebe25 | |||
| ce33a92f02 | |||
| dd44c07450 | |||
| 15a5b7a820 | |||
| 41b7e095eb | |||
| f34a297fcf | |||
| 9b2c1a320b | |||
| 70ed6f8e6c | |||
| 5a2489f0bf | |||
| a7d035022a | |||
| b879a70b24 | |||
| ec4e9a1d47 | |||
| d9c52c0a7f | |||
| 81ecf18231 | |||
| b0b12a075d | |||
| 54c428083c | |||
| 60228a387a | |||
| 3e04baef00 | |||
| 573bcba1a0 | |||
| ae2fad5db3 | |||
| c8fc12569c | |||
| df8efe3fa4 | |||
| 251131b9b5 | |||
| 35fb61087a | |||
| cbec88ff47 | |||
| f4319616a6 | |||
| 1534b7a67f | |||
| cbfcc9d140 | |||
| 60d10a9222 | |||
| 17e090d5c5 | |||
| fa6b4fa83b | |||
| e4b5244d95 | |||
| 04dc5d6314 | |||
| 33ccb03f90 | |||
| 80011ed3aa | |||
| 3e43cf5959 | |||
| bbd590dde8 | |||
| 0975a951e4 | |||
| 8b78f227a7 | |||
| 5a93a04b61 | |||
| b971eb4191 | |||
| 403e825b8d | |||
| 9164eba88c | |||
| bb83bbac38 | |||
| 651a641b22 | |||
| 441b5fc8dd | |||
| 4fba9445d1 | |||
| 3fb5e01ca5 | |||
| 09b2b0d507 | |||
| a9be35481a | |||
| c871506a69 | |||
| 8e6790d366 | |||
| 46620c5ec9 | |||
| 5f090169da | |||
| 2205150b86 | |||
| 3c4bb8a8fc | |||
| 77d0e71529 | |||
| cf974e2d62 | |||
| ee03db4745 | |||
| efd2061058 | |||
| e7ed20f62f | |||
| 36d4c08a56 | |||
| 2a939e615c | |||
| 9825165286 | |||
| 55c934ac7c | |||
| c7715115ee | |||
| e93b5e8135 | |||
| fd6ba1eda1 | |||
| 34f5411aec | |||
| 2b74ec2ef8 | |||
| 14dd0e8e03 | |||
| b0156261b7 | |||
| 05d520f1c1 | |||
| ccd44c79e8 | |||
| 7be48ab05e | |||
| 2d40b410b5 | |||
| f54df86eec | |||
| 1be476de54 | |||
| 82fa8719a9 | |||
| 7600620c4a | |||
| c5217f3e1e | |||
| 706279852a | |||
| 3a6274504f | |||
| 3aa9398481 | |||
| 7cca435b1d | |||
| 241b5800d1 | |||
| 8abb8acdd3 | |||
| ef8226c091 | |||
| 7484e1bf9a | |||
| 2919fd54b7 | |||
| 9eeb1c986a | |||
| d37cd2418c | |||
| 8bd05f525d | |||
| 47b23b414c | |||
| 6f70d179c7 | |||
| 62a86e9267 | |||
| 6358a2d0b1 | |||
| 273633c2ce | |||
| 8b1209ef73 | |||
| 47505e9748 | |||
| 5178cc6bd8 | |||
| d9a27fff42 | |||
| 9e6560b814 | |||
| afdb19a742 | |||
| 0ae5b668f5 | |||
| 10533e28fa | |||
| 6189e67819 | |||
| f9ad505e40 | |||
| 9b011101ed |
@ -1 +0,0 @@
|
||||
.eslintrc.js
|
||||
80
.eslintrc.js
@ -1,80 +0,0 @@
|
||||
module.exports = {
|
||||
extends: [
|
||||
'eslint:recommended',
|
||||
'plugin:import/recommended',
|
||||
'plugin:import/typescript',
|
||||
'plugin:@typescript-eslint/eslint-recommended',
|
||||
'plugin:@typescript-eslint/recommended',
|
||||
'plugin:@typescript-eslint/recommended-requiring-type-checking',
|
||||
],
|
||||
plugins: ['prettier', '@typescript-eslint', 'import'],
|
||||
parser: '@typescript-eslint/parser',
|
||||
parserOptions: {
|
||||
project: './tsconfig.json',
|
||||
tsconfigRootDir: __dirname,
|
||||
sourceType: 'module',
|
||||
ecmaVersion: 'latest'
|
||||
},
|
||||
rules: {
|
||||
'arrow-parens': ['error', 'always'],
|
||||
'object-curly-spacing': ['error', 'always'],
|
||||
'@typescript-eslint/no-floating-promises': 'off',
|
||||
'@typescript-eslint/no-misused-promises': ['off', { checksVoidReturn: false }],
|
||||
'@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
|
||||
"@typescript-eslint/no-non-null-assertion": "off",
|
||||
'import/first': 'error',
|
||||
'import/newline-after-import': 'error',
|
||||
'import/no-default-export': 'off',
|
||||
'import/no-duplicates': 'error',
|
||||
'import/no-unresolved': ['error', { ignore: ['^virtual:', '\\?inline$', '\\?raw$', '\\?asset&asarUnpack'] }],
|
||||
'import/order': [
|
||||
'error',
|
||||
{
|
||||
'groups': ['builtin', 'external', ['internal', 'index', 'sibling'], 'parent', 'type'],
|
||||
'newlines-between': 'always-and-inside-groups',
|
||||
'alphabetize': {order: 'ignore', caseInsensitive: false}
|
||||
}
|
||||
],
|
||||
'import/prefer-default-export': 'off',
|
||||
'camelcase': ['error', {properties: 'never'}],
|
||||
'class-methods-use-this': 'off',
|
||||
'lines-around-comment': [
|
||||
'error',
|
||||
{
|
||||
beforeBlockComment: false,
|
||||
afterBlockComment: false,
|
||||
beforeLineComment: false,
|
||||
afterLineComment: false,
|
||||
},
|
||||
],
|
||||
'max-len': 'off',
|
||||
'no-mixed-operators': 'error',
|
||||
'no-multi-spaces': ['error', {ignoreEOLComments: true}],
|
||||
'no-tabs': 'error',
|
||||
'no-void': 'error',
|
||||
'no-empty': 'off',
|
||||
'prefer-promise-reject-errors': 'off',
|
||||
'quotes': ['error', 'single', {
|
||||
avoidEscape: true,
|
||||
allowTemplateLiterals: false,
|
||||
}],
|
||||
'quote-props': ['error', 'consistent'],
|
||||
'semi': ['error', 'always'],
|
||||
},
|
||||
env: {
|
||||
browser: true,
|
||||
node: true,
|
||||
es6: true,
|
||||
},
|
||||
ignorePatterns: ['dist', 'node_modules'],
|
||||
root: true,
|
||||
settings: {
|
||||
'import/parsers': {
|
||||
'@typescript-eslint/parser': ['.ts']
|
||||
},
|
||||
'import/resolver': {
|
||||
typescript: {},
|
||||
exports: {},
|
||||
},
|
||||
},
|
||||
};
|
||||
2
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@ -29,7 +29,7 @@ body:
|
||||
label: Checklists
|
||||
options:
|
||||
- label: I use the portable version of the YouTube Music Application.
|
||||
- label: I can reproduce this issue in the [official YTM web version](https://music.youtube.com).
|
||||
- label: I can reproduce this issue in the [official version of (WEB) YTM](https://music.youtube.com).
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: What operating system are you using?
|
||||
|
||||
15
.github/workflows/build.yml
vendored
@ -21,9 +21,9 @@ jobs:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install pnpm
|
||||
uses: pnpm/action-setup@v2
|
||||
uses: pnpm/action-setup@v4
|
||||
with:
|
||||
version: 8
|
||||
version: 10
|
||||
run_install: false
|
||||
|
||||
- name: Setup NodeJS
|
||||
@ -61,6 +61,13 @@ jobs:
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
sudo snap install snapcraft --classic
|
||||
sudo apt update
|
||||
sudo apt install -y flatpak flatpak-builder
|
||||
sudo flatpak remote-add --if-not-exists --system flathub https://flathub.org/repo/flathub.flatpakrepo
|
||||
sudo flatpak install -y flathub org.freedesktop.Platform/x86_64/24.08
|
||||
sudo flatpak install -y flathub org.freedesktop.Sdk/x86_64/24.08
|
||||
sudo flatpak install -y flathub org.electronjs.Electron2.BaseApp/x86_64/24.08
|
||||
pnpm release:linux
|
||||
|
||||
- name: Build and release on Windows
|
||||
@ -89,9 +96,9 @@ jobs:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Install pnpm
|
||||
uses: pnpm/action-setup@v2
|
||||
uses: pnpm/action-setup@v4
|
||||
with:
|
||||
version: 8
|
||||
version: 10
|
||||
run_install: false
|
||||
|
||||
- name: Setup NodeJS
|
||||
|
||||
2
.github/workflows/winget-submission.yml
vendored
@ -20,7 +20,7 @@ jobs:
|
||||
TAG_NAME: ${{ inputs.tag_name || github.event.release.tag_name }}
|
||||
run: echo "WINGET_TAG_NAME=$(echo ${TAG_NAME#v})" >> $GITHUB_ENV
|
||||
- name: Submit package to Windows Package Manager Community Repository
|
||||
uses: vedantmgoyal2009/winget-releaser@v2
|
||||
uses: vedantmgoyal2009/winget-releaser@main
|
||||
with:
|
||||
identifier: th-ch.YouTubeMusic
|
||||
installers-regex: '^YouTube-Music-Web-Setup-[\d\.]+\.exe$'
|
||||
|
||||
173
README.md
@ -1,10 +1,10 @@
|
||||
# YouTube Music
|
||||
|
||||
<div align="center">
|
||||
|
||||
# YouTube Music
|
||||
|
||||
[](https://github.com/th-ch/youtube-music/releases/)
|
||||
[](https://github.com/th-ch/youtube-music/blob/master/LICENSE)
|
||||
[](https://github.com/th-ch/youtube-music/blob/master/.eslintrc.js)
|
||||
[](https://github.com/th-ch/youtube-music/blob/master/license)
|
||||
[](https://github.com/th-ch/youtube-music/blob/master/eslint.config.mjs)
|
||||
[](https://GitHub.com/th-ch/youtube-music/releases/)
|
||||
[](https://GitHub.com/th-ch/youtube-music/releases/)
|
||||
[](https://aur.archlinux.org/packages/youtube-music-bin)
|
||||
@ -12,7 +12,7 @@
|
||||
|
||||
</div>
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
<div align="center">
|
||||
@ -21,7 +21,7 @@
|
||||
</a>
|
||||
</div>
|
||||
|
||||
Read this in other languages: [🇰🇷](./docs/readme/README-ko.md)
|
||||
Read this in other languages: [🇰🇷](./docs/readme/README-ko.md), [🇫🇷](./docs/readme/README-fr.md), [🇮🇸](./docs/readme/README-is.md), [🇨🇱 🇪🇸](./docs/readme/README-es.md), [🇷🇺](./docs/readme/README-ru.md), [🇭🇺](./docs/readme/README-hu.md), [🇧🇷](./docs/readme/README-pt.md), [🇯🇵](./docs/readme/README-ja.md)
|
||||
|
||||
**Electron wrapper around YouTube Music featuring:**
|
||||
|
||||
@ -35,69 +35,26 @@ Read this in other languages: [🇰🇷](./docs/readme/README-ko.md)
|
||||
|:---------------------------------------------------------------------------------------------------------:|
|
||||
||
|
||||
|
||||
## Translation
|
||||
## Content
|
||||
|
||||
You can help with translation on [Hosted Weblate](https://hosted.weblate.org/projects/youtube-music/).
|
||||
|
||||
<a href="https://hosted.weblate.org/engage/youtube-music/">
|
||||
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/multi-auto.svg" alt="translation status" />
|
||||
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/287x66-black.png" alt="translation status 2" />
|
||||
</a>
|
||||
|
||||
## Download
|
||||
|
||||
You can check out the [latest release](https://github.com/th-ch/youtube-music/releases/latest) to quickly find the
|
||||
latest version.
|
||||
|
||||
### Arch Linux
|
||||
|
||||
Install the `youtube-music-bin` package from the AUR. For AUR installation instructions, take a look at
|
||||
this [wiki page](https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages).
|
||||
|
||||
### MacOS
|
||||
|
||||
You can install the app using Homebrew (see the [cask definition](https://github.com/th-ch/homebrew-youtube-music)):
|
||||
|
||||
```bash
|
||||
brew install th-ch/youtube-music/youtube-music
|
||||
```
|
||||
|
||||
If you install the app manually and get an error "is damaged and can’t be opened." when launching the app, run the following in the Terminal:
|
||||
|
||||
```bash
|
||||
xattr -cr /Applications/YouTube\ Music.app
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
||||
You can use the [Scoop package manager](https://scoop.sh) to install the `youtube-music` package from
|
||||
the [`extras` bucket](https://github.com/ScoopInstaller/Extras).
|
||||
|
||||
```bash
|
||||
scoop bucket add extras
|
||||
scoop install extras/youtube-music
|
||||
```
|
||||
|
||||
Alternately you can use [Winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/), Windows 11s
|
||||
official CLI package manager to install the `th-ch.YouTubeMusic` package.
|
||||
|
||||
*Note: Microsoft Defender SmartScreen might block the installation since it is from an "unknown publisher". This is also
|
||||
true for the manual installation when trying to run the executable(.exe) after a manual download here on github (same
|
||||
file).*
|
||||
|
||||
```bash
|
||||
winget install th-ch.YouTubeMusic
|
||||
```
|
||||
|
||||
#### How to install without a network connection? (in Windows)
|
||||
|
||||
- Download the `*.nsis.7z` file for _your device architecture_ in [release page](https://github.com/th-ch/youtube-music/releases/latest).
|
||||
- `x64` for 64-bit Windows
|
||||
- `ia32` for 32-bit Windows
|
||||
- `arm64` for ARM64 Windows
|
||||
- Download installer in release page. (`*-Setup.exe`)
|
||||
- Place them in the **same directory**.
|
||||
- Run the installer.
|
||||
- [Features](#features)
|
||||
- [Available plugins](#available-plugins)
|
||||
- [Translation](#translation)
|
||||
- [Download](#download)
|
||||
- [Arch Linux](#arch-linux)
|
||||
- [MacOS](#macos)
|
||||
- [Windows](#windows)
|
||||
- [How to install without a network connection? (in Windows)](#how-to-install-without-a-network-connection-in-windows)
|
||||
- [Themes](#themes)
|
||||
- [Dev](#dev)
|
||||
- [Build your own plugins](#build-your-own-plugins)
|
||||
- [Creating a plugin](#creating-a-plugin)
|
||||
- [Common use cases](#common-use-cases)
|
||||
- [Build](#build)
|
||||
- [Production Preview](#production-preview)
|
||||
- [Tests](#tests)
|
||||
- [License](#license)
|
||||
- [FAQ](#faq)
|
||||
|
||||
## Features:
|
||||
|
||||
@ -110,7 +67,7 @@ winget install th-ch.YouTubeMusic
|
||||
## Available plugins:
|
||||
|
||||
- **Ad Blocker**: Block all ads and tracking out of the box
|
||||
|
||||
|
||||
- **Album Actions**: Adds Undislike, Dislike, Like, and Unlike buttons to apply this to all songs in a playlist or album
|
||||
|
||||
- **Album Color Theme**: Applies a dynamic theme and visual effects based on the album color palette
|
||||
@ -138,6 +95,8 @@ winget install th-ch.YouTubeMusic
|
||||
- **Downloader**: downloads
|
||||
MP3 [directly from the interface](https://user-images.githubusercontent.com/61631665/129977677-83a7d067-c192-45e1-98ae-b5a4927393be.png) [(youtube-dl)](https://github.com/ytdl-org/youtube-dl)
|
||||
|
||||
- **Equalizer**: add filters to boost or cut specific range of frequencies (e.g. bass booster)
|
||||
|
||||
- **Exponential Volume**: Makes the volume
|
||||
slider [exponential](https://greasyfork.org/en/scripts/397686-youtube-music-fix-volume-ratio/) so it's easier to
|
||||
select lower volumes
|
||||
@ -184,6 +143,8 @@ winget install th-ch.YouTubeMusic
|
||||
- [**SponsorBlock**](https://github.com/ajayyy/SponsorBlock): Automatically Skips non-music parts like intro/outro or
|
||||
parts of music videos where the song isn't playing
|
||||
|
||||
- **Synced Lyrics**: Provides synced lyrics to songs, using providers like [LRClib](https://lrclib.net).
|
||||
|
||||
- **Taskbar Media Control**: Control playback from
|
||||
your [Windows taskbar](https://user-images.githubusercontent.com/78568641/111916130-24a35e80-8a82-11eb-80c8-5021c1aa27f4.png)
|
||||
|
||||
@ -202,6 +163,71 @@ winget install th-ch.YouTubeMusic
|
||||
|
||||
- **Visualizer**: Different music visualizers
|
||||
|
||||
|
||||
## Translation
|
||||
|
||||
You can help with translation on [Hosted Weblate](https://hosted.weblate.org/projects/youtube-music/).
|
||||
|
||||
<a href="https://hosted.weblate.org/engage/youtube-music/">
|
||||
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/multi-auto.svg" alt="translation status" />
|
||||
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/287x66-black.png" alt="translation status 2" />
|
||||
</a>
|
||||
|
||||
## Download
|
||||
|
||||
You can check out the [latest release](https://github.com/th-ch/youtube-music/releases/latest) to quickly find the
|
||||
latest version.
|
||||
|
||||
### Arch Linux
|
||||
|
||||
Install the [`youtube-music-bin`](https://aur.archlinux.org/packages/youtube-music-bin) package from the AUR. For AUR installation instructions, take a look at
|
||||
this [wiki page](https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages).
|
||||
|
||||
### macOS
|
||||
|
||||
You can install the app using Homebrew (see the [cask definition](https://github.com/th-ch/homebrew-youtube-music)):
|
||||
|
||||
```bash
|
||||
brew install th-ch/youtube-music/youtube-music
|
||||
```
|
||||
|
||||
If you install the app manually and get an error "is damaged and can’t be opened." when launching the app, run the following in the Terminal:
|
||||
|
||||
```bash
|
||||
/usr/bin/xattr -cr /Applications/YouTube\ Music.app
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
||||
You can use the [Scoop package manager](https://scoop.sh) to install the `youtube-music` package from
|
||||
the [`extras` bucket](https://github.com/ScoopInstaller/Extras).
|
||||
|
||||
```bash
|
||||
scoop bucket add extras
|
||||
scoop install extras/youtube-music
|
||||
```
|
||||
|
||||
Alternately you can use [Winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/), Windows 11s
|
||||
official CLI package manager to install the `th-ch.YouTubeMusic` package.
|
||||
|
||||
*Note: Microsoft Defender SmartScreen might block the installation since it is from an "unknown publisher". This is also
|
||||
true for the manual installation when trying to run the executable(.exe) after a manual download here on github (same
|
||||
file).*
|
||||
|
||||
```bash
|
||||
winget install th-ch.YouTubeMusic
|
||||
```
|
||||
|
||||
#### How to install without a network connection? (in Windows)
|
||||
|
||||
- Download the `*.nsis.7z` file for _your device architecture_ in [release page](https://github.com/th-ch/youtube-music/releases/latest).
|
||||
- `x64` for 64-bit Windows
|
||||
- `ia32` for 32-bit Windows
|
||||
- `arm64` for ARM64 Windows
|
||||
- Download installer in release page. (`*-Setup.exe`)
|
||||
- Place them in the **same directory**.
|
||||
- Run the installer.
|
||||
|
||||
## Themes
|
||||
|
||||
You can load CSS files to change the look of the application (Options > Visual Tweaks > Themes).
|
||||
@ -344,8 +370,11 @@ export default createPlugin({
|
||||
4. Run `pnpm build:OS`
|
||||
|
||||
- `pnpm dist:win` - Windows
|
||||
- `pnpm dist:linux` - Linux
|
||||
- `pnpm dist:mac` - MacOS
|
||||
- `pnpm dist:linux` - Linux (amd64)
|
||||
- `pnpm dist:linux:deb-arm64` - Linux (arm64 for Debian)
|
||||
- `pnpm dist:linux:rpm-arm64` - Linux (arm64 for Fedora)
|
||||
- `pnpm dist:mac` - macOS (amd64)
|
||||
- `pnpm dist:mac:arm64` - macOS (arm64)
|
||||
|
||||
Builds the app for macOS, Linux, and Windows,
|
||||
using [electron-builder](https://github.com/electron-userland/electron-builder).
|
||||
@ -368,7 +397,7 @@ Uses [Playwright](https://playwright.dev/) to test the app.
|
||||
|
||||
MIT © [th-ch](https://github.com/th-ch/youtube-music)
|
||||
|
||||
## Most asked questions
|
||||
## FAQ
|
||||
|
||||
### Why apps menu isn't showing up?
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 250 B After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 192 B After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 265 B After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 269 B After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.6 KiB |
951
changelog.md
@ -2,8 +2,959 @@
|
||||
|
||||
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
|
||||
|
||||
#### [v3.8.1](https://github.com/th-ch/youtube-music/compare/v3.8.0...v3.8.1)
|
||||
|
||||
- chore(deps): update dependency glob to v11.0.2 [`#3283`](https://github.com/th-ch/youtube-music/pull/3283)
|
||||
- fix(deps): update dependency i18next to v25.0.1 [`#3284`](https://github.com/th-ch/youtube-music/pull/3284)
|
||||
- chore(deps): update dependency typescript-eslint to v8.31.0 [`#3286`](https://github.com/th-ch/youtube-music/pull/3286)
|
||||
- chore(deps): update dependency discord-api-types to v0.38.1 [`#3285`](https://github.com/th-ch/youtube-music/pull/3285)
|
||||
- fix(deps): update dependency youtubei.js to v13.4.0 [`#3287`](https://github.com/th-ch/youtube-music/pull/3287)
|
||||
- fix(deps): update dependency zod to v3.24.3 [`#3250`](https://github.com/th-ch/youtube-music/pull/3250)
|
||||
- chore(deps): update dependency vite to v6.3.3 [`#3251`](https://github.com/th-ch/youtube-music/pull/3251)
|
||||
- fix(deps): update dependency @hono/zod-openapi to v0.19.5 [`#3258`](https://github.com/th-ch/youtube-music/pull/3258)
|
||||
- chore(deps): update dependency vite-plugin-inspect to v11.0.1 [`#3259`](https://github.com/th-ch/youtube-music/pull/3259)
|
||||
- chore(deps): update dependency esbuild to v0.25.3 [`#3282`](https://github.com/th-ch/youtube-music/pull/3282)
|
||||
- chore(deps): update eslint monorepo to v9.25.1 [`#3260`](https://github.com/th-ch/youtube-music/pull/3260)
|
||||
- chore(deps): update dependency electron to v35.2.1 [`#3281`](https://github.com/th-ch/youtube-music/pull/3281)
|
||||
- chore(deps): update playwright monorepo to v1.52.0 [`#3256`](https://github.com/th-ch/youtube-music/pull/3256)
|
||||
- chore(deps): update dependency eslint-import-resolver-typescript to v4.3.4 [`#3273`](https://github.com/th-ch/youtube-music/pull/3273)
|
||||
- fix: fix cuted "j" and glow in lyrics [`#3277`](https://github.com/th-ch/youtube-music/pull/3277)
|
||||
- chore(deps): update dependency electron to v35.2.0 [`#3263`](https://github.com/th-ch/youtube-music/pull/3263)
|
||||
- fix(unobtrusive-player): handle shuffle play [`#3247`](https://github.com/th-ch/youtube-music/pull/3247)
|
||||
- fix(deps): update dependency @ghostery/adblocker-electron to v2.5.1 [`#3238`](https://github.com/th-ch/youtube-music/pull/3238)
|
||||
- chore(deps): update dependency vite to v6.3.0 [`#3248`](https://github.com/th-ch/youtube-music/pull/3248)
|
||||
- chore(deps): update dependency typescript-eslint to v8.30.1 [`#3234`](https://github.com/th-ch/youtube-music/pull/3234)
|
||||
- fix(deps): update dependency @ghostery/adblocker-electron-preload to v2.5.1 [`#3239`](https://github.com/th-ch/youtube-music/pull/3239)
|
||||
- fix(deps): update dependency i18next to v25 [`#3243`](https://github.com/th-ch/youtube-music/pull/3243)
|
||||
- fix(deps): update dependency hono to v4.7.7 [`#3245`](https://github.com/th-ch/youtube-music/pull/3245)
|
||||
- chore(deps): update dependency vite to v6.2.6 [`#3189`](https://github.com/th-ch/youtube-music/pull/3189)
|
||||
- feat(Synced-Lyrics): Also search for lyrics with the original title language [`#3206`](https://github.com/th-ch/youtube-music/pull/3206)
|
||||
- chore(deps): update dependency eslint-config-prettier to v10.1.2 [`#3219`](https://github.com/th-ch/youtube-music/pull/3219)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.120 [`#3221`](https://github.com/th-ch/youtube-music/pull/3221)
|
||||
- fix(deps): update dependency @hono/node-server to v1.14.1 [`#3223`](https://github.com/th-ch/youtube-music/pull/3223)
|
||||
- chore(deps): update dependency vite to v6.2.6 [security] [`#3224`](https://github.com/th-ch/youtube-music/pull/3224)
|
||||
- chore(deps): update dependency rollup to v4.40.0 [`#3227`](https://github.com/th-ch/youtube-music/pull/3227)
|
||||
- fix(mpris): keep MPRIS volume in sync with the actual volume [`#3226`](https://github.com/th-ch/youtube-music/pull/3226)
|
||||
- fix(deps): update dependency @hono/zod-openapi to v0.19.4 [`#3215`](https://github.com/th-ch/youtube-music/pull/3215)
|
||||
- chore(deps): update dependency electron to v35.1.5 [`#3218`](https://github.com/th-ch/youtube-music/pull/3218)
|
||||
- fix(deps): update dependency hono to v4.7.6 [`#3217`](https://github.com/th-ch/youtube-music/pull/3217)
|
||||
- docs: add Portuguese README translation and update language shortcuts [`#3192`](https://github.com/th-ch/youtube-music/pull/3192)
|
||||
- fix: custom Video/Audio switcher in Plugins menu [`#3174`](https://github.com/th-ch/youtube-music/pull/3174)
|
||||
- chore(deps): update dependency typescript-eslint to v8.29.1 [`#3214`](https://github.com/th-ch/youtube-music/pull/3214)
|
||||
- chore(deps): update eslint monorepo to v9.24.0 [`#3195`](https://github.com/th-ch/youtube-music/pull/3195)
|
||||
- chore(deps): update dependency typescript to v5.8.3 [`#3196`](https://github.com/th-ch/youtube-music/pull/3196)
|
||||
- chore(deps): update dependency vite to v6.2.5 [security] [`#3194`](https://github.com/th-ch/youtube-music/pull/3194)
|
||||
- fix(deps): update dependency node-id3 to v0.2.9 [`#3191`](https://github.com/th-ch/youtube-music/pull/3191)
|
||||
- chore(deps): update dependency electron to v35.1.4 [`#3184`](https://github.com/th-ch/youtube-music/pull/3184)
|
||||
- chore(deps): update dependency eslint-plugin-prettier to v5.2.6 [`#3182`](https://github.com/th-ch/youtube-music/pull/3182)
|
||||
- chore(deps): update dependency eslint-import-resolver-typescript to v4.3.2 [`#3208`](https://github.com/th-ch/youtube-music/pull/3208)
|
||||
- docs: add Japanese README [`#3180`](https://github.com/th-ch/youtube-music/pull/3180)
|
||||
- chore(deps): update dependency node-gyp to v11.2.0 [`#3177`](https://github.com/th-ch/youtube-music/pull/3177)
|
||||
- chore(deps): update dependency rollup to v4.39.0 [`#3179`](https://github.com/th-ch/youtube-music/pull/3179)
|
||||
- chore(deps): update dependency typescript-eslint to v8.29.0 [`#3169`](https://github.com/th-ch/youtube-music/pull/3169)
|
||||
- fix(downloader): allow downloads for signed out users [`#3145`](https://github.com/th-ch/youtube-music/pull/3145)
|
||||
- fix(README): Fixed typos in some hyperlinks [`#3158`](https://github.com/th-ch/youtube-music/pull/3158)
|
||||
- chore(deps): update dependency vite to v6.2.4 [`#3124`](https://github.com/th-ch/youtube-music/pull/3124)
|
||||
- chore(deps): update dependency eslint-import-resolver-typescript to v4.3.1 [`#3151`](https://github.com/th-ch/youtube-music/pull/3151)
|
||||
- chore(deps): update dependency rollup to v4.38.0 [`#3154`](https://github.com/th-ch/youtube-music/pull/3154)
|
||||
- chore(deps): update dependency esbuild to v0.25.2 [`#3160`](https://github.com/th-ch/youtube-music/pull/3160)
|
||||
- chore(deps): update dependency electron to v35.1.2 [`#3147`](https://github.com/th-ch/youtube-music/pull/3147)
|
||||
- chore(deps): update dependency electron to v35.1.1 [`#3143`](https://github.com/th-ch/youtube-music/pull/3143)
|
||||
- chore(deps): update dependency eslint-import-resolver-typescript to v4.2.5 [`#3144`](https://github.com/th-ch/youtube-music/pull/3144)
|
||||
- chore(deps): update dependency @types/semver to v7.7.0 [`#3141`](https://github.com/th-ch/youtube-music/pull/3141)
|
||||
- fix(deps): update dependency electron-updater to v6.6.2 [`#3142`](https://github.com/th-ch/youtube-music/pull/3142)
|
||||
- chore(i18n): Translated using Weblate (Greek) [`8bb4f44`](https://github.com/th-ch/youtube-music/commit/8bb4f4426f6a82b1b5c13a385a6e2b94c25f88a2)
|
||||
- chore(i18n): Translated using Weblate (Bulgarian) [`89fe072`](https://github.com/th-ch/youtube-music/commit/89fe072c0e719026212bb506bb66baf37b31ceb4)
|
||||
- chore(i18n): Translated using Weblate (Greek) [`5a7daaf`](https://github.com/th-ch/youtube-music/commit/5a7daaf2f6d1211c4b9461facf4de1962714bacf)
|
||||
|
||||
#### [v3.8.0](https://github.com/th-ch/youtube-music/compare/v3.7.5...v3.8.0)
|
||||
|
||||
> 26 March 2025
|
||||
|
||||
- chore(deps): update dependency typescript-eslint to v8.28.0 [`#3128`](https://github.com/th-ch/youtube-music/pull/3128)
|
||||
- chore(deps): update dependency eslint-plugin-prettier to v5.2.5 [`#3123`](https://github.com/th-ch/youtube-music/pull/3123)
|
||||
- fix(deps): update dependency @hono/node-server to v1.14.0 [`#3131`](https://github.com/th-ch/youtube-music/pull/3131)
|
||||
- chore(deps): update dependency electron to v35.1.0 [`#3136`](https://github.com/th-ch/youtube-music/pull/3136)
|
||||
- fix(deps): update dependency es-hangul to v2.3.2 [`#3138`](https://github.com/th-ch/youtube-music/pull/3138)
|
||||
- chore(deps): update dependency eslint-import-resolver-typescript to v4.2.4 [`#3135`](https://github.com/th-ch/youtube-music/pull/3135)
|
||||
- chore(deps): update eslint monorepo to v9.23.0 [`#3130`](https://github.com/th-ch/youtube-music/pull/3130)
|
||||
- chore(deps): update dependency electron-vite to v3.1.0 [`#3137`](https://github.com/th-ch/youtube-music/pull/3137)
|
||||
- chore(deps): update dependency @babel/runtime to v7.27.0 [`#3127`](https://github.com/th-ch/youtube-music/pull/3127)
|
||||
- feat(synced-lyrics): romanization [`#2790`](https://github.com/th-ch/youtube-music/pull/2790)
|
||||
- feat(plugin): add unobtrusive player plugin [`#3104`](https://github.com/th-ch/youtube-music/pull/3104)
|
||||
- chore(deps): update dependency vite to v6.2.3 [security] [`#3134`](https://github.com/th-ch/youtube-music/pull/3134)
|
||||
- fix(deps): update dependency youtubei.js to v13.3.0 [`#3133`](https://github.com/th-ch/youtube-music/pull/3133)
|
||||
- chore(deps): update dependency electron-builder-squirrel-windows to v26.0.12 [`#3122`](https://github.com/th-ch/youtube-music/pull/3122)
|
||||
- chore(deps): update dependency eslint-import-resolver-typescript to v4.2.2 [`#3106`](https://github.com/th-ch/youtube-music/pull/3106)
|
||||
- chore(deps): update dependency electron-builder to v26.0.12 [`#3121`](https://github.com/th-ch/youtube-music/pull/3121)
|
||||
- fix: Discord Rich Presence Fix [`#3074`](https://github.com/th-ch/youtube-music/pull/3074)
|
||||
- fix(deps): update dependency @xhayper/discord-rpc to v1.2.1 [`#3107`](https://github.com/th-ch/youtube-music/pull/3107)
|
||||
- chore(deps): update dependency typescript-eslint to v8.27.0 [`#3111`](https://github.com/th-ch/youtube-music/pull/3111)
|
||||
- chore(deps): update dependency electron to v35.0.3 [`#3112`](https://github.com/th-ch/youtube-music/pull/3112)
|
||||
- fix(deps): update dependency hono to v4.7.5 [`#3113`](https://github.com/th-ch/youtube-music/pull/3113)
|
||||
- fix(deps): update dependency fast-average-color to v9.5.0 [`#3114`](https://github.com/th-ch/youtube-music/pull/3114)
|
||||
- chore(deps): update dependency rollup to v4.37.0 [`#3103`](https://github.com/th-ch/youtube-music/pull/3103)
|
||||
- chore(deps): update playwright monorepo to v1.51.1 [`#3105`](https://github.com/th-ch/youtube-music/pull/3105)
|
||||
- chore(deps): update dependency eslint-import-resolver-typescript to v4 [`#3102`](https://github.com/th-ch/youtube-music/pull/3102)
|
||||
- chore(deps): update dependency electron to v35.0.2 [`#3099`](https://github.com/th-ch/youtube-music/pull/3099)
|
||||
- fix(deps): update dependency i18next to v24.2.3 [`#3100`](https://github.com/th-ch/youtube-music/pull/3100)
|
||||
- chore(deps): update dependency electron-builder to v26.0.11 [`#3095`](https://github.com/th-ch/youtube-music/pull/3095)
|
||||
- chore(deps): update dependency @babel/runtime to v7.26.10 [security] [`#3094`](https://github.com/th-ch/youtube-music/pull/3094)
|
||||
- chore(deps): update dependency eslint-config-prettier to v10.1.1 [`#3069`](https://github.com/th-ch/youtube-music/pull/3069)
|
||||
- chore(deps): update playwright monorepo to v1.51.0 [`#3065`](https://github.com/th-ch/youtube-music/pull/3065)
|
||||
- chore(deps): update dependency electron-builder-squirrel-windows to v26.0.11 [`#3096`](https://github.com/th-ch/youtube-music/pull/3096)
|
||||
- chore(deps): update dependency esbuild to v0.25.1 [`#3097`](https://github.com/th-ch/youtube-music/pull/3097)
|
||||
- chore(deps): update dependency typescript-eslint to v8.26.1 [`#3098`](https://github.com/th-ch/youtube-music/pull/3098)
|
||||
- chore(deps): update eslint monorepo to v9.22.0 [`#3070`](https://github.com/th-ch/youtube-music/pull/3070)
|
||||
- chore(deps): update dependency rollup to v4.35.0 [`#3071`](https://github.com/th-ch/youtube-music/pull/3071)
|
||||
- chore(deps): update dependency electron to v35.0.1 [`#3075`](https://github.com/th-ch/youtube-music/pull/3075)
|
||||
- fix(deps): update dependency happy-dom to v17.4.4 [`#3068`](https://github.com/th-ch/youtube-music/pull/3068)
|
||||
- chore(deps): update dependency vite to v6.2.2 [`#3067`](https://github.com/th-ch/youtube-music/pull/3067)
|
||||
- fix: Update winget-releaser version to main [`#3091`](https://github.com/th-ch/youtube-music/pull/3091)
|
||||
- feat: Allow scrobbling using alternative song titles [`#3093`](https://github.com/th-ch/youtube-music/pull/3093)
|
||||
- chore(deps): update dependency electron-builder-squirrel-windows to v26.0.10 [`#3054`](https://github.com/th-ch/youtube-music/pull/3054)
|
||||
- chore(deps): update dependency typescript-eslint to v8.26.0 [`#3056`](https://github.com/th-ch/youtube-music/pull/3056)
|
||||
- fix(deps): update dependency hono to v4.7.4 [`#3062`](https://github.com/th-ch/youtube-music/pull/3062)
|
||||
- chore(deps): update dependency electron-builder to v26.0.10 [`#3053`](https://github.com/th-ch/youtube-music/pull/3053)
|
||||
- chore(deps): update dependency electron to v35 [`#3058`](https://github.com/th-ch/youtube-music/pull/3058)
|
||||
- fix(deps): update dependency happy-dom to v17.2.2 [`#3060`](https://github.com/th-ch/youtube-music/pull/3060)
|
||||
- fix(deps): update dependency happy-dom to v17.1.13 [`#3057`](https://github.com/th-ch/youtube-music/pull/3057)
|
||||
- chore(deps): update dependency typescript to v5.8.2 [`#3040`](https://github.com/th-ch/youtube-music/pull/3040)
|
||||
- chore(deps): update dependency rollup to v4.34.9 [`#3043`](https://github.com/th-ch/youtube-music/pull/3043)
|
||||
- fix(deps): update dependency @hono/swagger-ui to v0.5.1 [`#3045`](https://github.com/th-ch/youtube-music/pull/3045)
|
||||
- fix: added French link in general README file [`#3047`](https://github.com/th-ch/youtube-music/pull/3047)
|
||||
- fix(deps): update dependency @hono/zod-openapi to v0.19.2 [`#3046`](https://github.com/th-ch/youtube-music/pull/3046)
|
||||
- chore(deps): update dependency @stylistic/eslint-plugin-js to v4.2.0 [`#3050`](https://github.com/th-ch/youtube-music/pull/3050)
|
||||
- fix(deps): update dependency bgutils-js to v3.2.0 [`#3049`](https://github.com/th-ch/youtube-music/pull/3049)
|
||||
- chore(i18n): Translated using Weblate (Tamil) [`a3601ce`](https://github.com/th-ch/youtube-music/commit/a3601cece6a1d291f9887e1a5049fb3c6ad09eb1)
|
||||
- chore(i18n): Translated using Weblate (Arabic) [`06aaba0`](https://github.com/th-ch/youtube-music/commit/06aaba0c7fe9173051701c626d44a347b1bd7574)
|
||||
- chore(i18n): Translated using Weblate (Spanish) [`dbf8b1c`](https://github.com/th-ch/youtube-music/commit/dbf8b1c5c53d88f676c12b7ffca0e23b3efaa541)
|
||||
|
||||
#### [v3.7.5](https://github.com/th-ch/youtube-music/compare/v3.7.4...v3.7.5)
|
||||
|
||||
> 1 March 2025
|
||||
|
||||
- chore(deps): update dependency builtin-modules to v5 [`#3038`](https://github.com/th-ch/youtube-music/pull/3038)
|
||||
- chore(deps): update dependency typescript-eslint to v8.25.0 [`#2953`](https://github.com/th-ch/youtube-music/pull/2953)
|
||||
- fix(deps): update dependency happy-dom to v17.1.8 [`#3001`](https://github.com/th-ch/youtube-music/pull/3001)
|
||||
- chore(deps): update dependency eslint-config-prettier to v10.0.2 [`#3035`](https://github.com/th-ch/youtube-music/pull/3035)
|
||||
- chore(deps): update dependency @electron/universal to v2.0.2 [`#3034`](https://github.com/th-ch/youtube-music/pull/3034)
|
||||
- chore(deps): update dependency @stylistic/eslint-plugin-js to v4 [`#2950`](https://github.com/th-ch/youtube-music/pull/2950)
|
||||
- chore(deps): update dependency electron-builder-squirrel-windows to v26.0.9 [`#2930`](https://github.com/th-ch/youtube-music/pull/2930)
|
||||
- fix(no-google-login): Remove Library icon removal code [`#3010`](https://github.com/th-ch/youtube-music/pull/3010)
|
||||
- fix: Updated tray pause icon for consistency [`#3025`](https://github.com/th-ch/youtube-music/pull/3025)
|
||||
- chore(deps): update dependency eslint-import-resolver-typescript to v3.8.3 [`#2992`](https://github.com/th-ch/youtube-music/pull/2992)
|
||||
- fix(deps): update dependency hono to v4.7.2 [`#2999`](https://github.com/th-ch/youtube-music/pull/2999)
|
||||
- fix: Filter for only `MusicResponsiveListItem` in playlist items [`#3022`](https://github.com/th-ch/youtube-music/pull/3022)
|
||||
- fix(deps): update dependency youtubei.js to v13.1.0 [`#3015`](https://github.com/th-ch/youtube-music/pull/3015)
|
||||
- fix: Match engines.pnpm with the pnpm version used to create the lock files [`#2995`](https://github.com/th-ch/youtube-music/pull/2995)
|
||||
- chore(deps): update dependency electron-builder to v26.0.9 [`457e1bb`](https://github.com/th-ch/youtube-music/commit/457e1bb48e2bcc742680d22b7d34ffdbe7f33eae)
|
||||
- chore(deps): update deps [`c8bb1f3`](https://github.com/th-ch/youtube-music/commit/c8bb1f386d7053d755c38ca2cac8708af7af1fb9)
|
||||
- chore(i18n): Translated using Weblate (Thai) [`c9b7901`](https://github.com/th-ch/youtube-music/commit/c9b790168130d0cfc9b2ff23cdcb56ab082a4b66)
|
||||
|
||||
#### [v3.7.4](https://github.com/th-ch/youtube-music/compare/v3.7.3...v3.7.4)
|
||||
|
||||
> 18 February 2025
|
||||
|
||||
- chore(deps): update dependency rollup to v4.34.8 [`#2982`](https://github.com/th-ch/youtube-music/pull/2982)
|
||||
- fix(plugin-loader): update context filtering logic for backend mode [`#2990`](https://github.com/th-ch/youtube-music/pull/2990)
|
||||
- Update changelog for v3.7.3 [`86c77d1`](https://github.com/th-ch/youtube-music/commit/86c77d141f2bec62a4a578fff96d51ed388c05a5)
|
||||
- HOTFIX: Bump version to 3.7.4 [`0d462ac`](https://github.com/th-ch/youtube-music/commit/0d462ac3a26caee23854014cbf5e4b91e2d385e2)
|
||||
|
||||
#### [v3.7.3](https://github.com/th-ch/youtube-music/compare/v3.7.2...v3.7.3)
|
||||
|
||||
> 17 February 2025
|
||||
|
||||
- fix(downloader): use the upgrade button to check for premium status [`#2987`](https://github.com/th-ch/youtube-music/pull/2987)
|
||||
- chore(deps): update dependency electron-vite to v3 [`#2986`](https://github.com/th-ch/youtube-music/pull/2986)
|
||||
- chore(deps): update dependency @babel/runtime to v7.26.9 [`#2980`](https://github.com/th-ch/youtube-music/pull/2980)
|
||||
- fix(vite): set server.cors.origin [`#2981`](https://github.com/th-ch/youtube-music/pull/2981)
|
||||
- chore(deps-dev): bump esbuild from 0.24.2 to 0.25.0 [`#2973`](https://github.com/th-ch/youtube-music/pull/2973)
|
||||
- fix(deps): update dependency solid-transition-group to v0.3.0 [`#2949`](https://github.com/th-ch/youtube-music/pull/2949)
|
||||
- fix: remove disable-gpu-memory-buffer-video-frames flag [`#2963`](https://github.com/th-ch/youtube-music/pull/2963)
|
||||
- fix(deps): update dependency semver to v7.7.0 [`#2948`](https://github.com/th-ch/youtube-music/pull/2948)
|
||||
- chore(deps): update playwright monorepo to v1.50.1 [`#2943`](https://github.com/th-ch/youtube-music/pull/2943)
|
||||
- fix(deps): update dependency @hono/node-server to v1.13.8 [`#2944`](https://github.com/th-ch/youtube-music/pull/2944)
|
||||
- fix(deps): update dependency electron-store to v10.0.1 [`#2945`](https://github.com/th-ch/youtube-music/pull/2945)
|
||||
- chore(deps): update dependency rollup to v4.34.1 [`#2946`](https://github.com/th-ch/youtube-music/pull/2946)
|
||||
- chore(deps): update dependency typescript-eslint to v8.22.0 [`#2947`](https://github.com/th-ch/youtube-music/pull/2947)
|
||||
- fix(synced-lyrics): Fix reverse direction of synced lyrics for persian or other rtl languages [`#2940`](https://github.com/th-ch/youtube-music/pull/2940)
|
||||
- chore(deps): update dependency electron to v34.0.2 [`#2942`](https://github.com/th-ch/youtube-music/pull/2942)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.119 [`#2941`](https://github.com/th-ch/youtube-music/pull/2941)
|
||||
- fix(deps): update dependency hono to v4.6.20 [`#2932`](https://github.com/th-ch/youtube-music/pull/2932)
|
||||
- chore(deps): update eslint monorepo to v9.19.0 [`#2935`](https://github.com/th-ch/youtube-music/pull/2935)
|
||||
- fix(deps): update dependency bgutils-js to v3.1.3 [`#2934`](https://github.com/th-ch/youtube-music/pull/2934)
|
||||
- fix(deps): update dependency i18next to v24.2.2 [`#2933`](https://github.com/th-ch/youtube-music/pull/2933)
|
||||
- fix(deps): update dependency happy-dom to v16.8.1 [`#2936`](https://github.com/th-ch/youtube-music/pull/2936)
|
||||
- chore(deps): update dependency @babel/runtime to v7.26.7 [`#2924`](https://github.com/th-ch/youtube-music/pull/2924)
|
||||
- chore(config): migrate renovate config [`#2925`](https://github.com/th-ch/youtube-music/pull/2925)
|
||||
- fix(deps): update dependency @ghostery/adblocker-electron-preload to v2.5.0 [`#2923`](https://github.com/th-ch/youtube-music/pull/2923)
|
||||
- fix(deps): update dependency @ghostery/adblocker-electron to v2.5.0 [`#2922`](https://github.com/th-ch/youtube-music/pull/2922)
|
||||
- chore(deps): update playwright monorepo to v1.50.0 [`#2921`](https://github.com/th-ch/youtube-music/pull/2921)
|
||||
- chore(deps): update dependency vite-plugin-inspect to v10.1.0 [`#2920`](https://github.com/th-ch/youtube-music/pull/2920)
|
||||
- chore(deps): update dependency rollup to v4.32.0 [`#2919`](https://github.com/th-ch/youtube-music/pull/2919)
|
||||
- fix(deps): update dependency hono to v4.6.18 [`#2918`](https://github.com/th-ch/youtube-music/pull/2918)
|
||||
- fix(deps): update dependency deepmerge-ts to v7.1.4 [`#2917`](https://github.com/th-ch/youtube-music/pull/2917)
|
||||
- chore(deps): update dependency vite to v6.0.11 [`#2894`](https://github.com/th-ch/youtube-music/pull/2894)
|
||||
- chore(deps): update dependency electron to v34.0.1 [`#2916`](https://github.com/th-ch/youtube-music/pull/2916)
|
||||
- chore(deps): update dependency electron-builder-squirrel-windows to v26.0.0-alpha.10 [`#2899`](https://github.com/th-ch/youtube-music/pull/2899)
|
||||
- chore(deps): update dependency electron-builder to v26.0.0-alpha.10 [`#2898`](https://github.com/th-ch/youtube-music/pull/2898)
|
||||
- chore(deps): update dependency typescript-eslint to v8.21.0 [`#2901`](https://github.com/th-ch/youtube-music/pull/2901)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.117 [`#2895`](https://github.com/th-ch/youtube-music/pull/2895)
|
||||
- fix(deps): update dependency youtubei.js to v13 [`#2904`](https://github.com/th-ch/youtube-music/pull/2904)
|
||||
- chore(deps): update dependency vite to v6.0.9 [security] [`#2907`](https://github.com/th-ch/youtube-music/pull/2907)
|
||||
- fix(deps): update dependency happy-dom to v16.7.2 [`#2902`](https://github.com/th-ch/youtube-music/pull/2902)
|
||||
- fix(discord-plugin): handle album name padding if length < 2 [`#2903`](https://github.com/th-ch/youtube-music/pull/2903)
|
||||
- feat(navigation): added nav icon padding [`#2905`](https://github.com/th-ch/youtube-music/pull/2905)
|
||||
- chore(deps): update dependency rollup to v4.31.0 [`#2891`](https://github.com/th-ch/youtube-music/pull/2891)
|
||||
- chore(deps): update dependency eslint-plugin-prettier to v5.2.3 [`#2889`](https://github.com/th-ch/youtube-music/pull/2889)
|
||||
- chore(deps): update dependency vite-plugin-inspect to v10.0.7 [`#2882`](https://github.com/th-ch/youtube-music/pull/2882)
|
||||
- fix(deps): update dependency hono to v4.6.17 [`#2883`](https://github.com/th-ch/youtube-music/pull/2883)
|
||||
- fix: bump deps [`e9184e5`](https://github.com/th-ch/youtube-music/commit/e9184e5d60c2495473a7c3226ce9748ba89fceb3)
|
||||
- fix(deps): fix pnpm [`040db75`](https://github.com/th-ch/youtube-music/commit/040db7539ccd1ae40f2632fdf38168cdaa26f112)
|
||||
- chore(i18n): Translated using Weblate (Persian) [`9d18587`](https://github.com/th-ch/youtube-music/commit/9d185872dba5b56dabc691e56eafb13dc192b9cd)
|
||||
|
||||
#### [v3.7.2](https://github.com/th-ch/youtube-music/compare/v3.7.1...v3.7.2)
|
||||
|
||||
> 18 January 2025
|
||||
|
||||
- feat(api-server): add endpoint to get shuffle state [`#2792`](https://github.com/th-ch/youtube-music/pull/2792)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.116 [`#2877`](https://github.com/th-ch/youtube-music/pull/2877)
|
||||
- chore(deps): update dependency eslint-plugin-prettier to v5.2.2 [`#2875`](https://github.com/th-ch/youtube-music/pull/2875)
|
||||
- chore(deps): update eslint monorepo to v9.18.0 [`#2858`](https://github.com/th-ch/youtube-music/pull/2858)
|
||||
- chore(deps): update dependency glob to v11.0.1 [`#2857`](https://github.com/th-ch/youtube-music/pull/2857)
|
||||
- chore(deps): update dependency electron-builder-squirrel-windows to v26.0.0-alpha.9 [`#2874`](https://github.com/th-ch/youtube-music/pull/2874)
|
||||
- chore(deps): update dependency electron to v34 [`#2867`](https://github.com/th-ch/youtube-music/pull/2867)
|
||||
- chore(deps): update dependency eslint-config-prettier to v10 [`#2866`](https://github.com/th-ch/youtube-music/pull/2866)
|
||||
- chore(deps): update dependency @stylistic/eslint-plugin-js to v2.13.0 [`#2864`](https://github.com/th-ch/youtube-music/pull/2864)
|
||||
- chore(deps): update dependency typescript-eslint to v8.20.0 [`#2865`](https://github.com/th-ch/youtube-music/pull/2865)
|
||||
- chore(deps): update dependency electron-builder to v26.0.0-alpha.9 [`#2869`](https://github.com/th-ch/youtube-music/pull/2869)
|
||||
- fix: fix build.linux.desktop.entry [`#2859`](https://github.com/th-ch/youtube-music/pull/2859)
|
||||
- feat(api-server): add endpoint to get volume state [`#2813`](https://github.com/th-ch/youtube-music/pull/2813)
|
||||
- chore(deps): update dependency vite-plugin-inspect to v10 [`#2856`](https://github.com/th-ch/youtube-music/pull/2856)
|
||||
- chore(deps): update dependency typescript to v5.7.3 [`#2855`](https://github.com/th-ch/youtube-music/pull/2855)
|
||||
- fix(deps): update dependency @floating-ui/dom to v1.6.13 [`#2846`](https://github.com/th-ch/youtube-music/pull/2846)
|
||||
- chore(deps): bump nanoid from 3.3.7 to 3.3.8 [`#2854`](https://github.com/th-ch/youtube-music/pull/2854)
|
||||
- chore(deps): update dependency electron to v33.3.1 [`#2841`](https://github.com/th-ch/youtube-music/pull/2841)
|
||||
- fix(deps): update dependency i18next to v24.2.1 [`#2840`](https://github.com/th-ch/youtube-music/pull/2840)
|
||||
- chore(deps): update dependency typescript-eslint to v8.19.1 [`#2836`](https://github.com/th-ch/youtube-music/pull/2836)
|
||||
- chore(deps): update dependency rollup to v4.30.1 [`#2833`](https://github.com/th-ch/youtube-music/pull/2833)
|
||||
- fix(deps): update dependency solid-js to v1.9.4 [`#2849`](https://github.com/th-ch/youtube-music/pull/2849)
|
||||
- fix(deps): update dependency fast-equals to v5.2.2 [`#2842`](https://github.com/th-ch/youtube-music/pull/2842)
|
||||
- chore: Update README.md [`#2845`](https://github.com/th-ch/youtube-music/pull/2845)
|
||||
- chore: Fixing the Content section in the README-ru.md file. [`#2847`](https://github.com/th-ch/youtube-music/pull/2847)
|
||||
- chore: Create youtube-music-hu.svg [`#2844`](https://github.com/th-ch/youtube-music/pull/2844)
|
||||
- chore: Create Transalated README-hu.md [`#2843`](https://github.com/th-ch/youtube-music/pull/2843)
|
||||
- chore(deps): update dependency vite to v6.0.7 [`#2819`](https://github.com/th-ch/youtube-music/pull/2819)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.115 [`#2818`](https://github.com/th-ch/youtube-music/pull/2818)
|
||||
- fix(deps): update dependency hono to v4.6.16 [`#2829`](https://github.com/th-ch/youtube-music/pull/2829)
|
||||
- chore(deps): update dependency rollup to v4.29.2 [`#2832`](https://github.com/th-ch/youtube-music/pull/2832)
|
||||
- fix(deps): update dependency fast-equals to v5.2.0 [`#2822`](https://github.com/th-ch/youtube-music/pull/2822)
|
||||
- feat(api-server): add `insertPosition` for `addSongToQueue` [`#2808`](https://github.com/th-ch/youtube-music/pull/2808)
|
||||
- chore(deps): update dependency typescript-eslint to v8.19.0 [`#2812`](https://github.com/th-ch/youtube-music/pull/2812)
|
||||
- fix(deps): update dependency ts-morph to v25 [`#2810`](https://github.com/th-ch/youtube-music/pull/2810)
|
||||
- fix(renderer): update event handler from onVolumeTap to onVolumeClick [`#2791`](https://github.com/th-ch/youtube-music/pull/2791)
|
||||
- fix(deps): update dependency hono to v4.6.15 [`#2796`](https://github.com/th-ch/youtube-music/pull/2796)
|
||||
- chore(deps): update dependency bufferutil to v4.0.9 [`#2787`](https://github.com/th-ch/youtube-music/pull/2787)
|
||||
- feat: Refactor Menu Navigation and Update Media Control Icons [`#2783`](https://github.com/th-ch/youtube-music/pull/2783)
|
||||
- fix(synced-lyrics): Revert font-size behavior for non-fancy modes [`#2788`](https://github.com/th-ch/youtube-music/pull/2788)
|
||||
- fix(downloader): apply poToken [`#2863`](https://github.com/th-ch/youtube-music/issues/2863) [`#2780`](https://github.com/th-ch/youtube-music/issues/2780)
|
||||
- chore(deps): update dependency electron-builder to v26 [`67fc0a4`](https://github.com/th-ch/youtube-music/commit/67fc0a415cae231a11f2846aadf01edb04f5c677)
|
||||
- fix: fix lock file [`3339f99`](https://github.com/th-ch/youtube-music/commit/3339f997e3c2d4d2c32b3aee95c65d561f123fcb)
|
||||
- chore(i18n): Translated using Weblate (Romanian) [`845dac3`](https://github.com/th-ch/youtube-music/commit/845dac3c0393dadea8efdd03ba1f41b1b36e6191)
|
||||
|
||||
#### [v3.7.1](https://github.com/th-ch/youtube-music/compare/v3.7.0...v3.7.1)
|
||||
|
||||
> 27 December 2024
|
||||
|
||||
- fix(deps): update dependency node-html-parser to v7 [`#2776`](https://github.com/th-ch/youtube-music/pull/2776)
|
||||
- chore(deps): update dependency vite to v6.0.6 [`#2774`](https://github.com/th-ch/youtube-music/pull/2774)
|
||||
- feat(api-server): Add queue api [`#2767`](https://github.com/th-ch/youtube-music/pull/2767)
|
||||
- fix(downloader): fix #2234 [`#2234`](https://github.com/th-ch/youtube-music/issues/2234)
|
||||
- fix(downloader): fix #2769 [`#2769`](https://github.com/th-ch/youtube-music/issues/2769)
|
||||
- fix: fix #2645, fix #2741 [`#2645`](https://github.com/th-ch/youtube-music/issues/2645) [`#2741`](https://github.com/th-ch/youtube-music/issues/2741)
|
||||
- Update changelog for v3.7.0 [`1cc1530`](https://github.com/th-ch/youtube-music/commit/1cc153084d5f354ea928fcde50207f8f6b14ea4c)
|
||||
- fix: use networkManager.fetch instead of fetch [`80471b0`](https://github.com/th-ch/youtube-music/commit/80471b0ca4b3d3efc9e3db87d434290c9ebc79f6)
|
||||
- chore(i18n): Translated using Weblate (Hindi) [`6d1237c`](https://github.com/th-ch/youtube-music/commit/6d1237c2a2ad2408a738e00992ae5ed8a1e900da)
|
||||
|
||||
#### [v3.7.0](https://github.com/th-ch/youtube-music/compare/v3.6.2...v3.7.0)
|
||||
|
||||
> 25 December 2024
|
||||
|
||||
- feat(amuse): song query api (add amuse plugin) [`#2723`](https://github.com/th-ch/youtube-music/pull/2723)
|
||||
- feat(api-server): add absolute seek endpoint [`#2748`](https://github.com/th-ch/youtube-music/pull/2748)
|
||||
- feat(api-server): Add repeat mode and seek time API [`#2630`](https://github.com/th-ch/youtube-music/pull/2630)
|
||||
- feat(synced-lyrics): Better-Lyrics Styling for Synced-Lyrics [`#2554`](https://github.com/th-ch/youtube-music/pull/2554)
|
||||
- feat(synced-lyrics): multiple lyric sources [`#2383`](https://github.com/th-ch/youtube-music/pull/2383)
|
||||
- chore(deps): update dependency typescript-eslint to v8.18.2 [`#2763`](https://github.com/th-ch/youtube-music/pull/2763)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.114 [`#2761`](https://github.com/th-ch/youtube-music/pull/2761)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.113 [`#2759`](https://github.com/th-ch/youtube-music/pull/2759)
|
||||
- fix: Set correct window class for X11 and Wayland [`#2758`](https://github.com/th-ch/youtube-music/pull/2758)
|
||||
- feat: Specify flatpak runtime [`#2755`](https://github.com/th-ch/youtube-music/pull/2755)
|
||||
- chore(deps): update dependency rollup to v4.29.1 [`#2749`](https://github.com/th-ch/youtube-music/pull/2749)
|
||||
- chore(deps): update dependency esbuild to v0.24.2 [`#2742`](https://github.com/th-ch/youtube-music/pull/2742)
|
||||
- fix: Add Flatpak permissions needed for MPRIS and tray icon [`#2754`](https://github.com/th-ch/youtube-music/pull/2754)
|
||||
- chore(deps): update dependency vite-plugin-inspect to v0.10.6 [`#2756`](https://github.com/th-ch/youtube-music/pull/2756)
|
||||
- chore(deps): update dependency vite to v6.0.5 [`#2745`](https://github.com/th-ch/youtube-music/pull/2745)
|
||||
- fix(deps): update dependency i18next to v24.2.0 [`#2744`](https://github.com/th-ch/youtube-music/pull/2744)
|
||||
- chore(deps): update dependency vite-plugin-inspect to v0.10.4 [`#2743`](https://github.com/th-ch/youtube-music/pull/2743)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.112 [`#2740`](https://github.com/th-ch/youtube-music/pull/2740)
|
||||
- fix(discord): Fix Album Art failing on Discord RPC [`#2666`](https://github.com/th-ch/youtube-music/pull/2666)
|
||||
- feat: Add equalizer plugin with presets (e.g. bass booster) [`#2575`](https://github.com/th-ch/youtube-music/pull/2575)
|
||||
- chore(deps): update dependency vite to v6.0.4 [`#2738`](https://github.com/th-ch/youtube-music/pull/2738)
|
||||
- fix: Fixed #1796 [`#2736`](https://github.com/th-ch/youtube-music/pull/2736)
|
||||
- chore(deps): update dependency electron-devtools-installer to v4 [`#2734`](https://github.com/th-ch/youtube-music/pull/2734)
|
||||
- Revert "chore(deps): update dependency electron-builder to v25" [`#2732`](https://github.com/th-ch/youtube-music/pull/2732)
|
||||
- chore(deps): update dependency electron-builder to v25 [`#2490`](https://github.com/th-ch/youtube-music/pull/2490)
|
||||
- fix(deps): update dependency i18next to v24.1.2 [`#2727`](https://github.com/th-ch/youtube-music/pull/2727)
|
||||
- chore(deps): update dependency electron-devtools-installer to v3.2.1 [`#2731`](https://github.com/th-ch/youtube-music/pull/2731)
|
||||
- chore(deps): update dependency typescript-eslint to v8.18.1 [`#2724`](https://github.com/th-ch/youtube-music/pull/2724)
|
||||
- fix: tab misalignment [`#2713`](https://github.com/th-ch/youtube-music/pull/2713)
|
||||
- fix(deps): update dependency @hono/zod-validator to v0.4.2 [`#2709`](https://github.com/th-ch/youtube-music/pull/2709)
|
||||
- chore(deps): update eslint monorepo to v9.17.0 [`#2712`](https://github.com/th-ch/youtube-music/pull/2712)
|
||||
- fix(deps): update dependency hono to v4.6.14 [`#2716`](https://github.com/th-ch/youtube-music/pull/2716)
|
||||
- fix: discord rich presence connection status [`#2714`](https://github.com/th-ch/youtube-music/pull/2714)
|
||||
- fix: Laggy scrolling behaviour in large playlists [`#2708`](https://github.com/th-ch/youtube-music/pull/2708)
|
||||
- fix(deps): update dependency youtubei.js to v12.2.0 [`#2705`](https://github.com/th-ch/youtube-music/pull/2705)
|
||||
- fix(deps): update dependency i18next to v24.1.0 [`#2698`](https://github.com/th-ch/youtube-music/pull/2698)
|
||||
- chore(deps): update dependency @stylistic/eslint-plugin-js to v2.12.1 [`#2697`](https://github.com/th-ch/youtube-music/pull/2697)
|
||||
- fix(deps): update dependency zod to v3.24.1 [`#2694`](https://github.com/th-ch/youtube-music/pull/2694)
|
||||
- fix(deps): update dependency youtubei.js to v12.1.0 [`#2695`](https://github.com/th-ch/youtube-music/pull/2695)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.111 [`#2690`](https://github.com/th-ch/youtube-music/pull/2690)
|
||||
- chore(deps): update dependency typescript-eslint to v8.18.0 [`#2692`](https://github.com/th-ch/youtube-music/pull/2692)
|
||||
- chore(deps): update playwright monorepo to v1.49.1 [`#2693`](https://github.com/th-ch/youtube-music/pull/2693)
|
||||
- fix(deps): update dependency hono to v4.6.13 [`#2682`](https://github.com/th-ch/youtube-music/pull/2682)
|
||||
- chore(deps): update dependency rollup to v4.28.1 [`#2683`](https://github.com/th-ch/youtube-music/pull/2683)
|
||||
- fix(deps): update dependency conf to v13.1.0 [`#2686`](https://github.com/th-ch/youtube-music/pull/2686)
|
||||
- chore(deps): update dependency @stylistic/eslint-plugin-js to v2.12.0 [`#2689`](https://github.com/th-ch/youtube-music/pull/2689)
|
||||
- fix(deps): update dependency youtubei.js to v12 [`#2681`](https://github.com/th-ch/youtube-music/pull/2681)
|
||||
- chore(deps): update dependency vite to v6.0.3 [`#2680`](https://github.com/th-ch/youtube-music/pull/2680)
|
||||
- fix(album-actions): Fixed #2312 [`#2676`](https://github.com/th-ch/youtube-music/pull/2676)
|
||||
- chore(deps): update dependency eslint-import-resolver-typescript to v3.7.0 [`#2672`](https://github.com/th-ch/youtube-music/pull/2672)
|
||||
- chore(deps): update dependency node-gyp to v11 [`#2678`](https://github.com/th-ch/youtube-music/pull/2678)
|
||||
- fix(deps): update dependency i18next to v24.0.5 [`#2669`](https://github.com/th-ch/youtube-music/pull/2669)
|
||||
- fix(deps): update dependency i18next to v24.0.4 [`#2668`](https://github.com/th-ch/youtube-music/pull/2668)
|
||||
- chore(deps): update dependency vite to v6.0.2 [`#2662`](https://github.com/th-ch/youtube-music/pull/2662)
|
||||
- chore(deps): update dependency node-gyp to v10.3.1 [`#2665`](https://github.com/th-ch/youtube-music/pull/2665)
|
||||
- chore(deps): update dependency typescript-eslint to v8.17.0 [`#2664`](https://github.com/th-ch/youtube-music/pull/2664)
|
||||
- chore(deps): update dependency vite-plugin-inspect to v0.10.3 [`#2667`](https://github.com/th-ch/youtube-music/pull/2667)
|
||||
- chore(deps): update dependency rollup to v4.28.0 [`#2661`](https://github.com/th-ch/youtube-music/pull/2661)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.110 [`#2653`](https://github.com/th-ch/youtube-music/pull/2653)
|
||||
- fix(deps): update dependency @hono/zod-openapi to v0.18.3 [`#2654`](https://github.com/th-ch/youtube-music/pull/2654)
|
||||
- chore(deps): update eslint monorepo to v9.16.0 [`#2656`](https://github.com/th-ch/youtube-music/pull/2656)
|
||||
- chore(deps): update dependency vite-plugin-inspect to v0.10.2 [`#2657`](https://github.com/th-ch/youtube-music/pull/2657)
|
||||
- fix(youtube-music.css): Fixed #2514 [`#2659`](https://github.com/th-ch/youtube-music/pull/2659)
|
||||
- fix: Fixed Skip Disliked Song not working [`#2651`](https://github.com/th-ch/youtube-music/pull/2651)
|
||||
- fix(deps): update dependency @hono/zod-openapi to v0.18.2 [`#2650`](https://github.com/th-ch/youtube-music/pull/2650)
|
||||
- chore(deps): update dependency vite-plugin-inspect to v0.10.1 [`#2652`](https://github.com/th-ch/youtube-music/pull/2652)
|
||||
- chore(deps): update dependency electron to v33.2.1 [`#2649`](https://github.com/th-ch/youtube-music/pull/2649)
|
||||
- chore(deps): update dependency vite-plugin-inspect to v0.10.0 [`#2646`](https://github.com/th-ch/youtube-music/pull/2646)
|
||||
- chore(deps): update dependency vite to v6 [`#2644`](https://github.com/th-ch/youtube-music/pull/2644)
|
||||
- fix(deps): update dependency @hono/swagger-ui to v0.5.0 [`#2643`](https://github.com/th-ch/youtube-music/pull/2643)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.109 [`#2642`](https://github.com/th-ch/youtube-music/pull/2642)
|
||||
- chore(deps): update dependency vite-plugin-solid to v2.11.0 [`#2641`](https://github.com/th-ch/youtube-music/pull/2641)
|
||||
- fix(deps): update dependency hono to v4.6.12 [`#2636`](https://github.com/th-ch/youtube-music/pull/2636)
|
||||
- fix(deps): update dependency i18next to v24.0.2 [`#2637`](https://github.com/th-ch/youtube-music/pull/2637)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.108 [`#2638`](https://github.com/th-ch/youtube-music/pull/2638)
|
||||
- chore(deps): update dependency typescript-eslint to v8.16.0 [`#2639`](https://github.com/th-ch/youtube-music/pull/2639)
|
||||
- chore(deps): update dependency rollup to v4.27.4 [`#2632`](https://github.com/th-ch/youtube-music/pull/2632)
|
||||
- fix(deps): update dependency i18next to v24 [`#2633`](https://github.com/th-ch/youtube-music/pull/2633)
|
||||
- chore(deps): update dependency typescript to v5.7.2 [`#2629`](https://github.com/th-ch/youtube-music/pull/2629)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.107 [`#2627`](https://github.com/th-ch/youtube-music/pull/2627)
|
||||
- fix(deps): update dependency @hono/zod-openapi to v0.18.0 [`#2626`](https://github.com/th-ch/youtube-music/pull/2626)
|
||||
- fix(deps): update dependency i18next to v23.16.8 [`#2625`](https://github.com/th-ch/youtube-music/pull/2625)
|
||||
- chore(deps): update dependency vite-plugin-inspect to v0.8.8 [`#2623`](https://github.com/th-ch/youtube-music/pull/2623)
|
||||
- fix(deps): update dependency hono to v4.6.11 [`#2624`](https://github.com/th-ch/youtube-music/pull/2624)
|
||||
- chore(deps): update playwright monorepo to v1.49.0 [`#2617`](https://github.com/th-ch/youtube-music/pull/2617)
|
||||
- chore(deps): update dependency rollup to v4.27.3 [`#2610`](https://github.com/th-ch/youtube-music/pull/2610)
|
||||
- chore(deps): update dependency typescript-eslint to v8.15.0 [`#2611`](https://github.com/th-ch/youtube-music/pull/2611)
|
||||
- chore(deps): update dependency @stylistic/eslint-plugin-js to v2.11.0 [`#2618`](https://github.com/th-ch/youtube-music/pull/2618)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.105 [`#2603`](https://github.com/th-ch/youtube-music/pull/2603)
|
||||
- chore(deps): update dependency rollup to v4.27.2 [`#2604`](https://github.com/th-ch/youtube-music/pull/2604)
|
||||
- chore(deps): update eslint monorepo to v9.15.0 [`#2607`](https://github.com/th-ch/youtube-music/pull/2607)
|
||||
- fix(deps): update dependency @hono/zod-openapi to v0.17.1 [`#2608`](https://github.com/th-ch/youtube-music/pull/2608)
|
||||
- fix(ambient-mode): fix ambient-mode overlapping other elements [`#2609`](https://github.com/th-ch/youtube-music/pull/2609)
|
||||
- fix: Allow media playback control (MPRIS) for flatpak [`#2606`](https://github.com/th-ch/youtube-music/pull/2606)
|
||||
- fix(deps): update dependency @hono/node-server to v1.13.7 [`#2598`](https://github.com/th-ch/youtube-music/pull/2598)
|
||||
- chore(deps): update dependency rollup to v4.26.0 [`#2600`](https://github.com/th-ch/youtube-music/pull/2600)
|
||||
- fix(deps): update dependency hono to v4.6.10 [`#2601`](https://github.com/th-ch/youtube-music/pull/2601)
|
||||
- fix(deps): update dependency @hono/node-server to v1.13.6 [`#2594`](https://github.com/th-ch/youtube-music/pull/2594)
|
||||
- chore(deps): update dependency vite to v5.4.11 [`#2595`](https://github.com/th-ch/youtube-music/pull/2595)
|
||||
- chore(deps): update dependency typescript-eslint to v8.14.0 [`#2596`](https://github.com/th-ch/youtube-music/pull/2596)
|
||||
- chore(deps): update dependency electron to v33.2.0 [`#2591`](https://github.com/th-ch/youtube-music/pull/2591)
|
||||
- fix(deps): update dependency @hono/zod-openapi to v0.17.0 [`#2592`](https://github.com/th-ch/youtube-music/pull/2592)
|
||||
- fix(deps): update dependency i18next to v23.16.5 [`#2589`](https://github.com/th-ch/youtube-music/pull/2589)
|
||||
- fix(deps): update dependency @hono/node-server to v1.13.5 [`#2578`](https://github.com/th-ch/youtube-music/pull/2578)
|
||||
- fix(deps): update dependency hono to v4.6.9 [`#2579`](https://github.com/th-ch/youtube-music/pull/2579)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.104 [`#2588`](https://github.com/th-ch/youtube-music/pull/2588)
|
||||
- chore(deps): update dependency typescript-eslint to v8.13.0 [`#2581`](https://github.com/th-ch/youtube-music/pull/2581)
|
||||
- chore(deps): update dependency rollup to v4.25.0 [`#2580`](https://github.com/th-ch/youtube-music/pull/2580)
|
||||
- chore(docs): Update screenshot [`#2587`](https://github.com/th-ch/youtube-music/pull/2587)
|
||||
- chore(docs): Specify full path to xattr for macOS, fixes #2583 [`#2586`](https://github.com/th-ch/youtube-music/pull/2586)
|
||||
- fix: callback for time-changed event [`#2577`](https://github.com/th-ch/youtube-music/pull/2577)
|
||||
- chore(deps): update eslint monorepo to v9.14.0 [`#2573`](https://github.com/th-ch/youtube-music/pull/2573)
|
||||
- chore(deps): update dependency utf-8-validate to v6.0.5 [`#2572`](https://github.com/th-ch/youtube-music/pull/2572)
|
||||
- chore(deps): update dependency @stylistic/eslint-plugin-js to v2.10.1 [`#2571`](https://github.com/th-ch/youtube-music/pull/2571)
|
||||
- fix(deps): update dependency @hono/node-server to v1.13.4 [`#2570`](https://github.com/th-ch/youtube-music/pull/2570)
|
||||
- chore(deps): update dependency @stylistic/eslint-plugin-js to v2.10.0 [`#2569`](https://github.com/th-ch/youtube-music/pull/2569)
|
||||
- fix(deps): update dependency @floating-ui/dom to v1.6.12 [`#2568`](https://github.com/th-ch/youtube-music/pull/2568)
|
||||
- chore(deps): update dependency rollup to v4.24.3 [`#2565`](https://github.com/th-ch/youtube-music/pull/2565)
|
||||
- fix(deps): update dependency hono to v4.6.8 [`#2564`](https://github.com/th-ch/youtube-music/pull/2564)
|
||||
- chore(deps): update dependency typescript-eslint to v8.12.2 [`#2563`](https://github.com/th-ch/youtube-music/pull/2563)
|
||||
- chore(deps): update dependency typescript-eslint to v8.12.0 [`#2561`](https://github.com/th-ch/youtube-music/pull/2561)
|
||||
- fix(deps): update dependency youtubei.js to v11 [`#2562`](https://github.com/th-ch/youtube-music/pull/2562)
|
||||
- chore(deps): update dependency rollup to v4.24.2 [`#2559`](https://github.com/th-ch/youtube-music/pull/2559)
|
||||
- fix(deps): update dependency @hono/node-server to v1.13.3 [`#2560`](https://github.com/th-ch/youtube-music/pull/2560)
|
||||
- fix(deps): update dependency i18next to v23.16.4 [`#2550`](https://github.com/th-ch/youtube-music/pull/2550)
|
||||
- chore(deps): update playwright monorepo to v1.48.2 [`#2551`](https://github.com/th-ch/youtube-music/pull/2551)
|
||||
- fix(deps): update dependency hono to v4.6.7 [`#2552`](https://github.com/th-ch/youtube-music/pull/2552)
|
||||
- chore(deps): update dependency @babel/runtime to v7.26.0 [`#2548`](https://github.com/th-ch/youtube-music/pull/2548)
|
||||
- chore(deps): update dependency @types/color to v4 [`#2547`](https://github.com/th-ch/youtube-music/pull/2547)
|
||||
- fix(deps): update dependency i18next to v23.16.3 [`#2545`](https://github.com/th-ch/youtube-music/pull/2545)
|
||||
- fix(deps): update dependency solid-js to v1.9.3 [`#2541`](https://github.com/th-ch/youtube-music/pull/2541)
|
||||
- chore(deps): update dependency vite to v5.4.10 [`#2542`](https://github.com/th-ch/youtube-music/pull/2542)
|
||||
- chore(deps): update dependency electron to v33.0.2 [`#2537`](https://github.com/th-ch/youtube-music/pull/2537)
|
||||
- chore(deps): update dependency @babel/runtime to v7.25.9 [`#2538`](https://github.com/th-ch/youtube-music/pull/2538)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.103 [`#2532`](https://github.com/th-ch/youtube-music/pull/2532)
|
||||
- chore(deps): update dependency typescript-eslint to v8.11.0 [`#2534`](https://github.com/th-ch/youtube-music/pull/2534)
|
||||
- fix(deps): update dependency hono to v4.6.6 [`#2536`](https://github.com/th-ch/youtube-music/pull/2536)
|
||||
- fix(tuna-obs): Added song url to tuna-obs plugin [`#2524`](https://github.com/th-ch/youtube-music/pull/2524)
|
||||
- fix(deps): update dependency i18next to v23.16.2 [`#2530`](https://github.com/th-ch/youtube-music/pull/2530)
|
||||
- fix(deps): update dependency i18next to v23.16.1 [`#2529`](https://github.com/th-ch/youtube-music/pull/2529)
|
||||
- chore(deps): update eslint monorepo to v9.13.0 [`#2528`](https://github.com/th-ch/youtube-music/pull/2528)
|
||||
- chore(deps): update dependency typescript-eslint to v8.10.0 [`#2527`](https://github.com/th-ch/youtube-music/pull/2527)
|
||||
- chore(deps): update playwright monorepo to v1.48.1 [`#2516`](https://github.com/th-ch/youtube-music/pull/2516)
|
||||
- chore(deps): update dependency electron to v33.0.1 [`#2523`](https://github.com/th-ch/youtube-music/pull/2523)
|
||||
- fix: disable gpu memory buffer video frames [`#2519`](https://github.com/th-ch/youtube-music/pull/2519)
|
||||
- fix: use HEAD instead of GET in songInfo.imageSrc validation step [`#2766`](https://github.com/th-ch/youtube-music/issues/2766)
|
||||
- fix: Fixed #1796 (#2736) [`#1796`](https://github.com/th-ch/youtube-music/issues/1796)
|
||||
- fix(album-actions): Fixed #2312 (#2676) [`#2312`](https://github.com/th-ch/youtube-music/issues/2312) [`#2312`](https://github.com/th-ch/youtube-music/issues/2312)
|
||||
- fix(youtube-music.css): Fixed #2514 (#2659) [`#2514`](https://github.com/th-ch/youtube-music/issues/2514)
|
||||
- chore(docs): Specify full path to xattr for macOS, fixes #2583 (#2586) [`#2583`](https://github.com/th-ch/youtube-music/issues/2583)
|
||||
- fix: fix pnpm-lock.yaml [`3208bf4`](https://github.com/th-ch/youtube-music/commit/3208bf4a6d47d824875b06bd031299694482f02d)
|
||||
- Revert "feat: use swc and lightningcss" [`3b50cbc`](https://github.com/th-ch/youtube-music/commit/3b50cbcb6e3163115d52f05075af5d6f25b80660)
|
||||
- feat: use swc and lightningcss [`ae3a289`](https://github.com/th-ch/youtube-music/commit/ae3a28900576ea388666747bc4794577e1d57e23)
|
||||
|
||||
#### [v3.6.2](https://github.com/th-ch/youtube-music/compare/v3.6.1...v3.6.2)
|
||||
|
||||
> 16 October 2024
|
||||
|
||||
- fix(deps): update dependency serve to v14.2.4 [`#2515`](https://github.com/th-ch/youtube-music/pull/2515)
|
||||
- fix(deps): update dependency hono to v4.6.5 [`#2509`](https://github.com/th-ch/youtube-music/pull/2509)
|
||||
- chore(deps): update dependency vite to v5.4.9 [`#2500`](https://github.com/th-ch/youtube-music/pull/2500)
|
||||
- fix(api-server): properly implement next api call [`#2505`](https://github.com/th-ch/youtube-music/pull/2505)
|
||||
- chore(deps): update dependency electron to v33 [`#2507`](https://github.com/th-ch/youtube-music/pull/2507)
|
||||
- chore(deps): update dependency typescript-eslint to v8.9.0 [`#2503`](https://github.com/th-ch/youtube-music/pull/2503)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.102 [`#2501`](https://github.com/th-ch/youtube-music/pull/2501)
|
||||
- fix: trustedTypes issue [`#2339`](https://github.com/th-ch/youtube-music/issues/2339)
|
||||
- chore(i18n): Translated using Weblate (Icelandic) [`5f79b7e`](https://github.com/th-ch/youtube-music/commit/5f79b7e788c47b0a27a4967c9f3a9e20b483cd75)
|
||||
- chore(i18n): Translated using Weblate (Chinese (Traditional Han script)) [`12d6939`](https://github.com/th-ch/youtube-music/commit/12d693921e26a5c54015673a404e005d1a7175a4)
|
||||
- chore(i18n): Translated using Weblate (Ukrainian) [`836cedb`](https://github.com/th-ch/youtube-music/commit/836cedb0f317b74bf2fc3ec2d1aa865719f46ec0)
|
||||
|
||||
#### [v3.6.1](https://github.com/th-ch/youtube-music/compare/v3.6.0...v3.6.1)
|
||||
|
||||
> 14 October 2024
|
||||
|
||||
- fix(api-server): Various fixes and improvements [`#2496`](https://github.com/th-ch/youtube-music/pull/2496)
|
||||
- fix(deps): update dependency electron-debug to v4.1.0 [`#2499`](https://github.com/th-ch/youtube-music/pull/2499)
|
||||
- fix(renderer): fix force like buttons display logic [`#2493`](https://github.com/th-ch/youtube-music/pull/2493)
|
||||
- fix(deps): update dependency i18next to v23.16.0 [`#2492`](https://github.com/th-ch/youtube-music/pull/2492)
|
||||
- fix(downloader): fix #2371 [`#2371`](https://github.com/th-ch/youtube-music/issues/2371)
|
||||
- fix(ytm-bugs): incorrect video ratio [`#2459`](https://github.com/th-ch/youtube-music/issues/2459)
|
||||
- fix(api-server): fix init/authentication error [`#2497`](https://github.com/th-ch/youtube-music/issues/2497)
|
||||
- fix: RSS feed CORS issue [`#1620`](https://github.com/th-ch/youtube-music/issues/1620)
|
||||
- chore(flatpak-builder): Add more details when failing [`d3acb49`](https://github.com/th-ch/youtube-music/commit/d3acb4945a8dcde6598c53d8207bbf16eda8c739)
|
||||
- chore(i18n): Translated using Weblate (Filipino) [`e428708`](https://github.com/th-ch/youtube-music/commit/e4287085a11f30d141148ab0432cc684819fd0d0)
|
||||
- Bump version to 3.6.1 [`b668730`](https://github.com/th-ch/youtube-music/commit/b6687307dfe7ef765517019093c8db3c2ad14417)
|
||||
|
||||
#### [v3.6.0](https://github.com/th-ch/youtube-music/compare/v3.5.3...v3.6.0)
|
||||
|
||||
> 13 October 2024
|
||||
|
||||
- feat(api-server): remote control api [`#1909`](https://github.com/th-ch/youtube-music/pull/1909)
|
||||
- chore(deps): update playwright monorepo to v1.48.0 [`#2489`](https://github.com/th-ch/youtube-music/pull/2489)
|
||||
- fix(`synced-lyrics`): Fix 2 issues [`#2441`](https://github.com/th-ch/youtube-music/pull/2441)
|
||||
- chore(deps): update dependency typescript to v5.6.3 [`#2486`](https://github.com/th-ch/youtube-music/pull/2486)
|
||||
- chore(deps): update dependency electron to v32.2.0 [`#2487`](https://github.com/th-ch/youtube-music/pull/2487)
|
||||
- chore(deps): update dependency del-cli to v6 [`#2475`](https://github.com/th-ch/youtube-music/pull/2475)
|
||||
- chore(deps): update dependency typescript-eslint to v8.8.1 [`#2477`](https://github.com/th-ch/youtube-music/pull/2477)
|
||||
- fix(deps): update dependency solid-js to v1.9.2 [`#2480`](https://github.com/th-ch/youtube-music/pull/2480)
|
||||
- Revert "chore(deps): update dependency electron-builder to v25" [`#2488`](https://github.com/th-ch/youtube-music/pull/2488)
|
||||
- chore(deps): update dependency electron-builder to v25 [`#2406`](https://github.com/th-ch/youtube-music/pull/2406)
|
||||
- fix(deps): update dependency deepmerge-ts to v7.1.3 [`#2481`](https://github.com/th-ch/youtube-music/pull/2481)
|
||||
- fix(deps): update dependency ts-morph to v24 [`#2474`](https://github.com/th-ch/youtube-music/pull/2474)
|
||||
- fix(deps): update dependency i18next to v23.15.2 [`#2471`](https://github.com/th-ch/youtube-music/pull/2471)
|
||||
- chore(deps): update eslint monorepo to v9.12.0 [`#2470`](https://github.com/th-ch/youtube-music/pull/2470)
|
||||
- chore(deps): update dependency @stylistic/eslint-plugin-js to v2.9.0 [`#2469`](https://github.com/th-ch/youtube-music/pull/2469)
|
||||
- chore(deps): bump micromatch from 4.0.5 to 4.0.8 [`#2465`](https://github.com/th-ch/youtube-music/pull/2465)
|
||||
- chore(deps): bump braces from 3.0.2 to 3.0.3 [`#2466`](https://github.com/th-ch/youtube-music/pull/2466)
|
||||
- fix(deps): update dependency electron-updater to v6.3.9 [`#2468`](https://github.com/th-ch/youtube-music/pull/2468)
|
||||
- fix(deps): update dependency deepmerge-ts to v7.1.1 [`#2467`](https://github.com/th-ch/youtube-music/pull/2467)
|
||||
- chore(deps): update dependency typescript-eslint to v8.8.0 [`#2457`](https://github.com/th-ch/youtube-music/pull/2457)
|
||||
- chore(deps): update dependency @babel/runtime to v7.25.7 [`#2462`](https://github.com/th-ch/youtube-music/pull/2462)
|
||||
- chore(deps): update dependency rollup to v4.24.0 [`#2458`](https://github.com/th-ch/youtube-music/pull/2458)
|
||||
- chore(deps): update dependency eslint-plugin-import to v2.31.0 [`#2464`](https://github.com/th-ch/youtube-music/pull/2464)
|
||||
- chore(deps): update dependency rollup to v4.22.5 [`#2448`](https://github.com/th-ch/youtube-music/pull/2448)
|
||||
- chore(deps): update dependency typescript-eslint to v8.7.0 [`#2450`](https://github.com/th-ch/youtube-music/pull/2450)
|
||||
- fix(deps): update dependency solid-js to v1.9.1 [`#2451`](https://github.com/th-ch/youtube-music/pull/2451)
|
||||
- chore(deps): update dependency vite to v5.4.8 [`#2449`](https://github.com/th-ch/youtube-music/pull/2449)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.101 [`#2440`](https://github.com/th-ch/youtube-music/pull/2440)
|
||||
- chore(deps): update dependency esbuild to v0.24.0 [`#2439`](https://github.com/th-ch/youtube-music/pull/2439)
|
||||
- chore(deps): update eslint monorepo to v9.11.1 [`#2442`](https://github.com/th-ch/youtube-music/pull/2442)
|
||||
- chore(deps): update dependency @types/howler to v2.2.12 [`#2443`](https://github.com/th-ch/youtube-music/pull/2443)
|
||||
- chore(deps): update dependency vite to v5.4.7 [`#2434`](https://github.com/th-ch/youtube-music/pull/2434)
|
||||
- chore(deps): update playwright monorepo to v1.47.2 [`#2436`](https://github.com/th-ch/youtube-music/pull/2436)
|
||||
- chore(deps): update eslint monorepo to v9.11.0 [`#2437`](https://github.com/th-ch/youtube-music/pull/2437)
|
||||
- fix(deps): update dependency youtubei.js to v10.5.0 [`#2431`](https://github.com/th-ch/youtube-music/pull/2431)
|
||||
- chore(deps): update dependency rollup to v4.22.4 [`#2430`](https://github.com/th-ch/youtube-music/pull/2430)
|
||||
- chore(deps): update dependency electron to v32.1.2 [`#2433`](https://github.com/th-ch/youtube-music/pull/2433)
|
||||
- feat: ESLint Flat Config (v9 support #2229) [`#2426`](https://github.com/th-ch/youtube-music/pull/2426)
|
||||
- fix(taskbar-mediacontrol): fix icon color [`#2485`](https://github.com/th-ch/youtube-music/issues/2485)
|
||||
- chore(eslint): apply eslint-plugin-prettier [`#2438`](https://github.com/th-ch/youtube-music/issues/2438)
|
||||
- fix: apply fix from eslint [`cb1381b`](https://github.com/th-ch/youtube-music/commit/cb1381bbb394e2bbb404f44817ef96411dabc8a9)
|
||||
- chore(i18n): Translated using Weblate (Portuguese (Brazil)) [`bcff26c`](https://github.com/th-ch/youtube-music/commit/bcff26c85b18258806f3960309776bc860c3a54e)
|
||||
- chore(i18n): Translated using Weblate (Persian) [`ead448e`](https://github.com/th-ch/youtube-music/commit/ead448ed98095339557903eb0f84c4a6d0f32058)
|
||||
|
||||
#### [v3.5.3](https://github.com/th-ch/youtube-music/compare/v3.5.2...v3.5.3)
|
||||
|
||||
> 17 September 2024
|
||||
|
||||
- fix: fix `trustedHTML` issue [`#2339`](https://github.com/th-ch/youtube-music/issues/2339)
|
||||
- chore(deps): update dependency rollup to v4.21.3 [`6edc84a`](https://github.com/th-ch/youtube-music/commit/6edc84a8bd6c7e009041117ba0d2004783eb3a47)
|
||||
- chore(deps): update typescript-eslint monorepo to v8.6.0 [`d4c8a43`](https://github.com/th-ch/youtube-music/commit/d4c8a4320d733f7bddc4dcd1de93644790e71d66)
|
||||
- chore(deps): update dependency eslint to v8.57.1 [`02b7a39`](https://github.com/th-ch/youtube-music/commit/02b7a39753528cfd8c0d107d6d2ec6ef78c5afe7)
|
||||
|
||||
#### [v3.5.2](https://github.com/th-ch/youtube-music/compare/v3.5.1...v3.5.2)
|
||||
|
||||
> 7 September 2024
|
||||
|
||||
- chore(deps): update typescript-eslint monorepo to v8.4.0 [`#2401`](https://github.com/th-ch/youtube-music/pull/2401)
|
||||
- chore(deps): update dependency @total-typescript/ts-reset to v0.6.1 [`#2396`](https://github.com/th-ch/youtube-music/pull/2396)
|
||||
- chore(deps): update dependency electron to v31.5.0 [`#2397`](https://github.com/th-ch/youtube-music/pull/2397)
|
||||
- chore(deps): update dependency eslint-import-resolver-typescript to v3.6.3 [`#2376`](https://github.com/th-ch/youtube-music/pull/2376)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.100 [`#2394`](https://github.com/th-ch/youtube-music/pull/2394)
|
||||
- fix(deps): update dependency electron-updater to v6.3.4 [`#2395`](https://github.com/th-ch/youtube-music/pull/2395)
|
||||
- chore(deps): update dependency @babel/runtime to v7.25.6 [`#2388`](https://github.com/th-ch/youtube-music/pull/2388)
|
||||
- chore(deps): update dependency vite-plugin-inspect to v0.8.7 [`#2389`](https://github.com/th-ch/youtube-music/pull/2389)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.99 [`#2374`](https://github.com/th-ch/youtube-music/pull/2374)
|
||||
- chore(deps): update dependency vite to v5.4.3 [`#2377`](https://github.com/th-ch/youtube-music/pull/2377)
|
||||
- fix: incorrect regex when splitting artistName [`#2378`](https://github.com/th-ch/youtube-music/pull/2378)
|
||||
- chore(deps): update dependency @babel/runtime to v7.25.4 [`#2373`](https://github.com/th-ch/youtube-music/pull/2373)
|
||||
- synced-lyrics: make the lyrics search more reliable [`#2343`](https://github.com/th-ch/youtube-music/pull/2343)
|
||||
- fix(deps): update dependency solid-js to v1.8.22 [`#2354`](https://github.com/th-ch/youtube-music/pull/2354)
|
||||
- chore(deps): update typescript-eslint monorepo to v8.3.0 [`#2350`](https://github.com/th-ch/youtube-music/pull/2350)
|
||||
- fix(deps): update dependency electron-debug to v4.0.1 [`#2349`](https://github.com/th-ch/youtube-music/pull/2349)
|
||||
- chore(deps): update dependency electron to v31.4.0 [`#2356`](https://github.com/th-ch/youtube-music/pull/2356)
|
||||
- fix: hide native-controls on linux when in-app-menu is used [`#2366`](https://github.com/th-ch/youtube-music/pull/2366)
|
||||
- fix: detect the upgrade btn using the icon [`#2364`](https://github.com/th-ch/youtube-music/pull/2364)
|
||||
- fix: exclude build-id files from rpm [`#2361`](https://github.com/th-ch/youtube-music/pull/2361)
|
||||
- fix(deps): update dependency i18next to v23.12.3 [`#2352`](https://github.com/th-ch/youtube-music/pull/2352)
|
||||
- fix(deps): update dependency @floating-ui/dom to v1.6.10 [`#2340`](https://github.com/th-ch/youtube-music/pull/2340)
|
||||
- fix(deps): update dependency electron-updater to v6.3.3 [`#2347`](https://github.com/th-ch/youtube-music/pull/2347)
|
||||
- fix(deps): update dependency solid-js to v1.8.20 [`#2345`](https://github.com/th-ch/youtube-music/pull/2345)
|
||||
- chore(deps): update dependency vite to v5.4.0 [`#2342`](https://github.com/th-ch/youtube-music/pull/2342)
|
||||
- chore(deps): update typescript-eslint monorepo to v8.0.1 [`#2335`](https://github.com/th-ch/youtube-music/pull/2335)
|
||||
- fix(deps): update dependency @floating-ui/dom to v1.6.9 [`#2337`](https://github.com/th-ch/youtube-music/pull/2337)
|
||||
- chore(deps): update playwright monorepo to v1.46.0 [`#2336`](https://github.com/th-ch/youtube-music/pull/2336)
|
||||
- chore(README): Translation README to Russian and adding Synced Lyrics to main README [`#2338`](https://github.com/th-ch/youtube-music/pull/2338)
|
||||
- chore(deps): update dependency rollup to v4.20.0 [`#2326`](https://github.com/th-ch/youtube-music/pull/2326)
|
||||
- fix(synced-lyric): fix timestamp [`#2323`](https://github.com/th-ch/youtube-music/issues/2323) [`#2379`](https://github.com/th-ch/youtube-music/issues/2379)
|
||||
- Revert "fix(MPRIS): Prevents player to start with invalid MPRIS interface (#1996)" [`#2225`](https://github.com/th-ch/youtube-music/issues/2225)
|
||||
- fix(adblocker/inplayer): fix Response.prototype.json [`#2310`](https://github.com/th-ch/youtube-music/issues/2310)
|
||||
- chore(deps): update dependency eslint-plugin-import to v2.30.0 [`f48e46d`](https://github.com/th-ch/youtube-music/commit/f48e46d29cf09c76c5172fd56d2d0f705616e4e3)
|
||||
- Revert "chore(deps): update dependency electron-builder to v25" [`089eff3`](https://github.com/th-ch/youtube-music/commit/089eff3152903c8b55ad3e5571b944062a647e27)
|
||||
- chore(deps): update dependency electron-builder to v25 [`fe4c89c`](https://github.com/th-ch/youtube-music/commit/fe4c89c349bb9f4f54d95c2018943095ccfdab0c)
|
||||
|
||||
#### [v3.5.1](https://github.com/th-ch/youtube-music/compare/v3.5.0...v3.5.1)
|
||||
|
||||
> 1 August 2024
|
||||
|
||||
- fix(deps): update dependency youtubei.js to v10.3.0 [`#2306`](https://github.com/th-ch/youtube-music/pull/2306)
|
||||
- fix: Window gets stuck offscreen in some instances [`#2303`](https://github.com/th-ch/youtube-music/pull/2303)
|
||||
- fix: Incorrect window size on multi-monitor scaled displays [`#2302`](https://github.com/th-ch/youtube-music/pull/2302)
|
||||
- chore(deps): update dependency rollup to v4.19.2 [`#2304`](https://github.com/th-ch/youtube-music/pull/2304)
|
||||
- chore(deps): update typescript-eslint monorepo to v8 (major) [`#2297`](https://github.com/th-ch/youtube-music/pull/2297)
|
||||
- fix(ambient-mode): fix ambient-mode not working for videos after restart [`#2294`](https://github.com/th-ch/youtube-music/pull/2294)
|
||||
- fix(deps): update dependency @xhayper/discord-rpc to v1.2.0 [`#2291`](https://github.com/th-ch/youtube-music/pull/2291)
|
||||
- fix(synced-lyrics): fix lyric load [`#2295`](https://github.com/th-ch/youtube-music/issues/2295)
|
||||
- fix(ambient-mode): fix ambient-mode not working for videos after restart (#2294) [`#1641`](https://github.com/th-ch/youtube-music/issues/1641)
|
||||
- fix(synced-lyrics): fix i18n [`8750b54`](https://github.com/th-ch/youtube-music/commit/8750b54f766c735ff039c6be454427f17d4737e2)
|
||||
- ts-fix: disambiguate ElectronStore typings [`8775735`](https://github.com/th-ch/youtube-music/commit/877573532c1b68af861a3fdc44d093f3097d36ab)
|
||||
- chore(i18n): Translated using Weblate (Hungarian) [`3537dc1`](https://github.com/th-ch/youtube-music/commit/3537dc19eecce7f7deb2478942f70d3c7b72148d)
|
||||
|
||||
#### [v3.5.0](https://github.com/th-ch/youtube-music/compare/v3.4.1...v3.5.0)
|
||||
|
||||
> 31 July 2024
|
||||
|
||||
- plugin: Synced Lyrics [`#2207`](https://github.com/th-ch/youtube-music/pull/2207)
|
||||
- chore(deps): update dependency electron to v31.3.1 [`#2290`](https://github.com/th-ch/youtube-music/pull/2290)
|
||||
- chore(deps): update typescript-eslint monorepo to v7.18.0 [`#2292`](https://github.com/th-ch/youtube-music/pull/2292)
|
||||
- fix(deps): update dependency youtubei.js to v10.2.0 [`#2285`](https://github.com/th-ch/youtube-music/pull/2285)
|
||||
- chore(deps): update dependency electron to v31.3.0 [`#2282`](https://github.com/th-ch/youtube-music/pull/2282)
|
||||
- chore(deps): update typescript-eslint monorepo to v7.17.0 [`#2283`](https://github.com/th-ch/youtube-music/pull/2283)
|
||||
- fix(deps): update dependency solid-js to v1.8.19 [`#2280`](https://github.com/th-ch/youtube-music/pull/2280)
|
||||
- fix(deps): update dependency @xhayper/discord-rpc to v1.1.4 [`#2279`](https://github.com/th-ch/youtube-music/pull/2279)
|
||||
- chore(deps): update dependency @babel/runtime to v7.25.0 [`#2281`](https://github.com/th-ch/youtube-music/pull/2281)
|
||||
- fix(deps): update dependency @floating-ui/dom to v1.6.8 [`#2278`](https://github.com/th-ch/youtube-music/pull/2278)
|
||||
- Fix: Incorrect window size on scaled displays [`#2258`](https://github.com/th-ch/youtube-music/pull/2258)
|
||||
- chore(deps): update dependency vite-plugin-resolve to v2.5.2 [`#2276`](https://github.com/th-ch/youtube-music/pull/2276)
|
||||
- chore(deps): update playwright monorepo to v1.45.3 [`#2277`](https://github.com/th-ch/youtube-music/pull/2277)
|
||||
- fix(deps): update dependency deepmerge-ts to v7.1.0 [`#2263`](https://github.com/th-ch/youtube-music/pull/2263)
|
||||
- chore(deps): update dependency typescript to v5.5.4 [`#2274`](https://github.com/th-ch/youtube-music/pull/2274)
|
||||
- chore(deps): update dependency vite to v5.3.5 [`#2275`](https://github.com/th-ch/youtube-music/pull/2275)
|
||||
- fix(deps): update dependency i18next to v23.12.2 [`#2260`](https://github.com/th-ch/youtube-music/pull/2260)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.93 [`#2273`](https://github.com/th-ch/youtube-music/pull/2273)
|
||||
- chore(deps): update dependency rollup to v4.19.1 [`#2261`](https://github.com/th-ch/youtube-music/pull/2261)
|
||||
- fix(deps): update dependency custom-electron-prompt to v1.5.8 [`#2262`](https://github.com/th-ch/youtube-music/pull/2262)
|
||||
- feat(adblocker): add new option AdSpeedup [`#2235`](https://github.com/th-ch/youtube-music/pull/2235)
|
||||
- fix: disable multi-plane format for software video [`#2254`](https://github.com/th-ch/youtube-music/pull/2254)
|
||||
- chore(deps): update dependency eslint-plugin-prettier to v5.2.1 [`#2253`](https://github.com/th-ch/youtube-music/pull/2253)
|
||||
- chore(deps): update dependency vite to v5.3.4 [`#2243`](https://github.com/th-ch/youtube-music/pull/2243)
|
||||
- chore(deps): update typescript-eslint monorepo to v7.16.1 [`#2239`](https://github.com/th-ch/youtube-music/pull/2239)
|
||||
- chore(deps): update playwright monorepo to v1.45.2 [`#2244`](https://github.com/th-ch/youtube-music/pull/2244)
|
||||
- chore(deps): update dependency vite-plugin-inspect to v0.8.5 [`#2252`](https://github.com/th-ch/youtube-music/pull/2252)
|
||||
- fix(deps): update dependency semver to v7.6.3 [`#2250`](https://github.com/th-ch/youtube-music/pull/2250)
|
||||
- chore(deps): update dependency electron to v31.2.1 [`#2241`](https://github.com/th-ch/youtube-music/pull/2241)
|
||||
- chore(i18n): Translated using Weblate (Catalan) [`4a8440c`](https://github.com/th-ch/youtube-music/commit/4a8440c281c341977ab3687982cec8cbc5af6cf7)
|
||||
- Update changelog for v3.4.1 [`18e0b1b`](https://github.com/th-ch/youtube-music/commit/18e0b1b86341b13f1cbc713bfbd7b5d7a45ee392)
|
||||
- fix(synced-lyrics): fix type error [`9357a15`](https://github.com/th-ch/youtube-music/commit/9357a15116a8526d22ba6142c0a02f31688743f2)
|
||||
|
||||
#### [v3.4.1](https://github.com/th-ch/youtube-music/compare/v3.4.0...v3.4.1)
|
||||
|
||||
> 15 July 2024
|
||||
|
||||
- fix(mpris): fix mpris position [`#2225`](https://github.com/th-ch/youtube-music/issues/2225)
|
||||
- fix(deb): fix depends [`#1983`](https://github.com/th-ch/youtube-music/issues/1983)
|
||||
- fix: fix touchbar icon [`#2183`](https://github.com/th-ch/youtube-music/issues/2183)
|
||||
- fix: fix "Starting page" [`#1822`](https://github.com/th-ch/youtube-music/issues/1822)
|
||||
- fix: fix album actions [`#2202`](https://github.com/th-ch/youtube-music/issues/2202)
|
||||
- fix: fix playback slider [`#2045`](https://github.com/th-ch/youtube-music/issues/2045)
|
||||
- chore(i18n): Translated using Weblate (Spanish) [`91bee48`](https://github.com/th-ch/youtube-music/commit/91bee4880ed2c6fdd887814a2620877d89bea311)
|
||||
- Bump version to 3.4.1 [`02e2fb6`](https://github.com/th-ch/youtube-music/commit/02e2fb6a83844f439f760e72cdcb935b86000df2)
|
||||
|
||||
#### [v3.4.0](https://github.com/th-ch/youtube-music/compare/v3.3.12...v3.4.0)
|
||||
|
||||
> 14 July 2024
|
||||
|
||||
- fix(deps): update dependency i18next to v23.12.1 [`#2230`](https://github.com/th-ch/youtube-music/pull/2230)
|
||||
- feat(downloader): New option to download on finish [`#1964`](https://github.com/th-ch/youtube-music/pull/1964)
|
||||
- chore(deps): update typescript-eslint monorepo to v8.0.0-alpha.42 [`#2228`](https://github.com/th-ch/youtube-music/pull/2228)
|
||||
- chore(deps): update dependency eslint to v9.7.0 [`#2226`](https://github.com/th-ch/youtube-music/pull/2226)
|
||||
- chore(deps): update dependency @babel/runtime to v7.24.8 [`#2221`](https://github.com/th-ch/youtube-music/pull/2221)
|
||||
- chore(deps): update dependency node-gyp to v10.2.0 [`#2216`](https://github.com/th-ch/youtube-music/pull/2216)
|
||||
- chore(deps): update dependency ws to v8.18.0 [`#2217`](https://github.com/th-ch/youtube-music/pull/2217)
|
||||
- chore(deps): update dependency glob to v11 [`#2219`](https://github.com/th-ch/youtube-music/pull/2219)
|
||||
- chore(deps): update dependency esbuild to v0.23.0 [`#2215`](https://github.com/th-ch/youtube-music/pull/2215)
|
||||
- chore(deps): update dependency electron to v31.2.0 [`#2214`](https://github.com/th-ch/youtube-music/pull/2214)
|
||||
- fix(deps): update dependency youtubei.js to v10.1.0 [`#2218`](https://github.com/th-ch/youtube-music/pull/2218)
|
||||
- chore(deps): update playwright monorepo to v1.45.1 [`#2212`](https://github.com/th-ch/youtube-music/pull/2212)
|
||||
- chore(deps): update typescript-eslint monorepo to v8.0.0-alpha.41 [`#2213`](https://github.com/th-ch/youtube-music/pull/2213)
|
||||
- chore(deps): update dependency rollup to v4.18.1 [`#2210`](https://github.com/th-ch/youtube-music/pull/2210)
|
||||
- chore(deps): update dependency eslint to v9.6.0 [`#2192`](https://github.com/th-ch/youtube-music/pull/2192)
|
||||
- chore(deps): update dependency vite to v5.3.3 [`#2211`](https://github.com/th-ch/youtube-music/pull/2211)
|
||||
- chore(deps): update dependency glob to v10.4.5 [`#2205`](https://github.com/th-ch/youtube-music/pull/2205)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.92 [`#2204`](https://github.com/th-ch/youtube-music/pull/2204)
|
||||
- fix(deps): update dependency solid-js to v1.8.18 [`#2189`](https://github.com/th-ch/youtube-music/pull/2189)
|
||||
- chore(deps): update dependency typescript to v5.5.3 [`#2206`](https://github.com/th-ch/youtube-music/pull/2206)
|
||||
- chore(deps): update dependency electron to v31.1.0 [`#2190`](https://github.com/th-ch/youtube-music/pull/2190)
|
||||
- chore(deps): update typescript-eslint monorepo to v8.0.0-alpha.40 [`#2193`](https://github.com/th-ch/youtube-music/pull/2193)
|
||||
- fix(deps): update dependency @floating-ui/dom to v1.6.7 [`#2196`](https://github.com/th-ch/youtube-music/pull/2196)
|
||||
- chore(deps): update dependency vite to v5.3.2 [`#2188`](https://github.com/th-ch/youtube-music/pull/2188)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.91 [`#2187`](https://github.com/th-ch/youtube-music/pull/2187)
|
||||
- chore(deps): update typescript-eslint monorepo to v8.0.0-alpha.34 [`#2184`](https://github.com/th-ch/youtube-music/pull/2184)
|
||||
- fix(deps): update dependency @floating-ui/dom to v1.6.6 [`#2182`](https://github.com/th-ch/youtube-music/pull/2182)
|
||||
- chore(deps): update playwright monorepo to v1.45.0 [`#2181`](https://github.com/th-ch/youtube-music/pull/2181)
|
||||
- fix(deps): update dependency ts-morph to v23 [`#2180`](https://github.com/th-ch/youtube-music/pull/2180)
|
||||
- chore(deps): update dependency electron-vite to v2.3.0 [`#2178`](https://github.com/th-ch/youtube-music/pull/2178)
|
||||
- fix(deps): update dependency conf to v13.0.1 [`#2175`](https://github.com/th-ch/youtube-music/pull/2175)
|
||||
- chore(deps): update dependency glob to v10.4.2 [`#2168`](https://github.com/th-ch/youtube-music/pull/2168)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.90 [`#2167`](https://github.com/th-ch/youtube-music/pull/2167)
|
||||
- chore(deps): update dependency typescript to v5.5.2 [`#2173`](https://github.com/th-ch/youtube-music/pull/2173)
|
||||
- chore(deps): update dependency electron to v31.0.2 [`#2170`](https://github.com/th-ch/youtube-music/pull/2170)
|
||||
- chore(deps): update dependency ws to v8.17.1 [`#2164`](https://github.com/th-ch/youtube-music/pull/2164)
|
||||
- chore(deps): update dependency eslint to v9.5.0 [`#2162`](https://github.com/th-ch/youtube-music/pull/2162)
|
||||
- fix(deps): update dependency youtubei.js to v10 [`#2136`](https://github.com/th-ch/youtube-music/pull/2136)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.89 [`#2153`](https://github.com/th-ch/youtube-music/pull/2153)
|
||||
- chore(deps): update dependency vite to v5.3.1 [`#2154`](https://github.com/th-ch/youtube-music/pull/2154)
|
||||
- fix(deps): update dependency electron-store to v10 [`#2157`](https://github.com/th-ch/youtube-music/pull/2157)
|
||||
- fix(deps): update dependency conf to v13 [`#2156`](https://github.com/th-ch/youtube-music/pull/2156)
|
||||
- chore(deps): update dependency electron to v31.0.1 [`#2148`](https://github.com/th-ch/youtube-music/pull/2148)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.88 [`#2138`](https://github.com/th-ch/youtube-music/pull/2138)
|
||||
- chore(deps): update typescript-eslint monorepo to v8.0.0-alpha.30 [`#2139`](https://github.com/th-ch/youtube-music/pull/2139)
|
||||
- chore(deps): update dependency electron to v31 [`#2141`](https://github.com/th-ch/youtube-music/pull/2141)
|
||||
- chore(deps): update dependency esbuild to v0.21.5 [`#2135`](https://github.com/th-ch/youtube-music/pull/2135)
|
||||
- chore(deps): update typescript-eslint monorepo to v8.0.0-alpha.29 [`#2132`](https://github.com/th-ch/youtube-music/pull/2132)
|
||||
- fix: rollback eslint version to v8 [`45931a2`](https://github.com/th-ch/youtube-music/commit/45931a25b08ab8a406f9e102486585311fd14bf9)
|
||||
- chore(i18n): Translated using Weblate (Filipino) [`8a20566`](https://github.com/th-ch/youtube-music/commit/8a20566e0f2736f72d46282188ada69df1d7076a)
|
||||
- chore(i18n): Translated using Weblate (Slovenian) [`40f0b9b`](https://github.com/th-ch/youtube-music/commit/40f0b9b852dcd9146e1c1e6c741b5baaf55ac079)
|
||||
|
||||
#### [v3.3.12](https://github.com/th-ch/youtube-music/compare/v3.3.11...v3.3.12)
|
||||
|
||||
> 8 June 2024
|
||||
|
||||
- hotfix: Revert "chore(deps): update dependencies `@cliqz/adblocker-electron`, `@cliqz/adblocker-electron-preload`" [`3c4abc1`](https://github.com/th-ch/youtube-music/commit/3c4abc14187e51f7e47c1ae71b3513f6d8c9912a)
|
||||
- Update changelog for v3.3.11 [`de22444`](https://github.com/th-ch/youtube-music/commit/de224444c2a6d9030aa22a3b263ceacbc4b41914)
|
||||
- Bump version to 3.3.12 [`89ed7d2`](https://github.com/th-ch/youtube-music/commit/89ed7d2345001fea59514944f4c1d56d2b7bd888)
|
||||
|
||||
#### [v3.3.11](https://github.com/th-ch/youtube-music/compare/v3.3.10...v3.3.11)
|
||||
|
||||
> 8 June 2024
|
||||
|
||||
- Revert "fix(deps): update dependency @cliqz/adblocker-electron to v1.27.10" [`#2129`](https://github.com/th-ch/youtube-music/pull/2129)
|
||||
- chore(deps): update dependency vite to v5.2.13 [`#2127`](https://github.com/th-ch/youtube-music/pull/2127)
|
||||
- chore(deps): update dependency electron to v30.1.0 [`#2126`](https://github.com/th-ch/youtube-music/pull/2126)
|
||||
- fix(deps): update dependency deepmerge-ts to v7.0.3 [`#2125`](https://github.com/th-ch/youtube-music/pull/2125)
|
||||
- chore(deps): update dependency @babel/runtime to v7.24.7 [`#2124`](https://github.com/th-ch/youtube-music/pull/2124)
|
||||
- chore(deps): update typescript-eslint monorepo to v8.0.0-alpha.28 [`#2121`](https://github.com/th-ch/youtube-music/pull/2121)
|
||||
- fix(deps): update dependency electron-updater to v6.2.1 [`#2120`](https://github.com/th-ch/youtube-music/pull/2120)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.87 [`#2119`](https://github.com/th-ch/youtube-music/pull/2119)
|
||||
- fix(deps): update dependency deepmerge-ts to v7.0.2 [`#2118`](https://github.com/th-ch/youtube-music/pull/2118)
|
||||
- chore(deps): update typescript-eslint monorepo to v8.0.0-alpha.25 [`#2114`](https://github.com/th-ch/youtube-music/pull/2114)
|
||||
- fix(menu): fix menubar items doesn't rendered [`#2113`](https://github.com/th-ch/youtube-music/issues/2113)
|
||||
- chore(i18n): Translated using Weblate (Nepali) [`4ae9a28`](https://github.com/th-ch/youtube-music/commit/4ae9a2820e9d453635094956264dd8b42c4997f7)
|
||||
- chore(i18n): Translated using Weblate (Nepali) [`7e8d311`](https://github.com/th-ch/youtube-music/commit/7e8d31172ceb175ba07f307d248fc1246265a4c0)
|
||||
- fix(deps): update dependency @cliqz/adblocker-electron to v1.27.10 [`d97aa1a`](https://github.com/th-ch/youtube-music/commit/d97aa1a8a003f15eea63c8cb2dabd0f215e885f1)
|
||||
|
||||
#### [v3.3.10](https://github.com/th-ch/youtube-music/compare/v3.3.9...v3.3.10)
|
||||
|
||||
> 2 June 2024
|
||||
|
||||
- fix(adblocker): fix blank screen [`#2103`](https://github.com/th-ch/youtube-music/issues/2103) [`#2105`](https://github.com/th-ch/youtube-music/issues/2105)
|
||||
- chore(i18n): Translated using Weblate (Hungarian) [`25958a7`](https://github.com/th-ch/youtube-music/commit/25958a7bb1fea20e59676e7821f3dd8819602b68)
|
||||
- fix(deps): bump deps [`4fa9762`](https://github.com/th-ch/youtube-music/commit/4fa9762a506544ce453894ce2df13033225e6c7d)
|
||||
- fix(deps): bump `@typescript-eslint/eslint-plugin` version to 8.0.0-alpha.24 [`1e5bea8`](https://github.com/th-ch/youtube-music/commit/1e5bea85b31da5de868d9eff8758e5d2d888c2c8)
|
||||
|
||||
#### [v3.3.9](https://github.com/th-ch/youtube-music/compare/v3.3.8...v3.3.9)
|
||||
|
||||
> 1 June 2024
|
||||
|
||||
- chore(deps): update dependency eslint to v9.4.0 [`#2106`](https://github.com/th-ch/youtube-music/pull/2106)
|
||||
- fix(adblocker): fix In-Player adblocker [`#1817`](https://github.com/th-ch/youtube-music/issues/1817)
|
||||
- feat(adblocker): improve In-Player adblocker [`5b9e947`](https://github.com/th-ch/youtube-music/commit/5b9e947b8feebb57d9a2122ae7b7ab2ff7c37c06)
|
||||
- chore(i18n): Translated using Weblate (French) [`9e809b0`](https://github.com/th-ch/youtube-music/commit/9e809b002d10f6ec0202a7d56d3d0b73f8093012)
|
||||
- chore(i18n): Translated using Weblate (Malay) [`79151cb`](https://github.com/th-ch/youtube-music/commit/79151cb3aa6c087b8d8bb500322f505797b822bd)
|
||||
|
||||
#### [v3.3.8](https://github.com/th-ch/youtube-music/compare/v3.3.7...v3.3.8)
|
||||
|
||||
> 1 June 2024
|
||||
|
||||
- fix(adblocker): fix blank screen [`#1942`](https://github.com/th-ch/youtube-music/issues/1942) [`#2100`](https://github.com/th-ch/youtube-music/issues/2100) [`#2103`](https://github.com/th-ch/youtube-music/issues/2103)
|
||||
- Update changelog for v3.3.7 [`b572623`](https://github.com/th-ch/youtube-music/commit/b572623442fc8b45b593dc0c91623fbf814115b4)
|
||||
- Bump version to 3.3.8 [`5d99a85`](https://github.com/th-ch/youtube-music/commit/5d99a854e2f29bdb6682beeffa4e6b9b8be0f60f)
|
||||
|
||||
#### [v3.3.7](https://github.com/th-ch/youtube-music/compare/v3.3.6...v3.3.7)
|
||||
|
||||
> 1 June 2024
|
||||
|
||||
- chore(deps): update dependency electron to v30.0.9 [`#2098`](https://github.com/th-ch/youtube-music/pull/2098)
|
||||
- Revert "fix(deps): update dependency @cliqz/adblocker-electron to v1.27.6" [`#2101`](https://github.com/th-ch/youtube-music/pull/2101)
|
||||
- fix(deps): update dependency @cliqz/adblocker-electron to v1.27.6 [`#2096`](https://github.com/th-ch/youtube-music/pull/2096)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.86 [`#2092`](https://github.com/th-ch/youtube-music/pull/2092)
|
||||
- chore(deps): update dependency vite to v5.2.12 [`#2094`](https://github.com/th-ch/youtube-music/pull/2094)
|
||||
- chore(deps): update dependency @typescript-eslint/eslint-plugin to v7.11.0 [`#2093`](https://github.com/th-ch/youtube-music/pull/2093)
|
||||
- chore(docs): Added README-es.md and linked to README.md [`#2090`](https://github.com/th-ch/youtube-music/pull/2090)
|
||||
- fix(deps): update dependency deepmerge-ts to v7 [`#2085`](https://github.com/th-ch/youtube-music/pull/2085)
|
||||
- chore(deps): update dependency builtin-modules to v4 [`#2084`](https://github.com/th-ch/youtube-music/pull/2084)
|
||||
- fix(deps): update dependency electron-debug to v4 [`#2086`](https://github.com/th-ch/youtube-music/pull/2086)
|
||||
- fix(deps): update dependency electron-store to v9 [`#2087`](https://github.com/th-ch/youtube-music/pull/2087)
|
||||
- fix(deps): update dependency conf to v12 [`#1463`](https://github.com/th-ch/youtube-music/pull/1463)
|
||||
- fix(deps): update dependency youtubei.js to v9.4.0 [`#2083`](https://github.com/th-ch/youtube-music/pull/2083)
|
||||
- chore(deps): update playwright monorepo to v1.44.1 [`#2082`](https://github.com/th-ch/youtube-music/pull/2082)
|
||||
- chore(deps): update dependency ws to v8.17.0 [`#2081`](https://github.com/th-ch/youtube-music/pull/2081)
|
||||
- chore(deps): update dependency glob to v10.4.1 [`#2080`](https://github.com/th-ch/youtube-music/pull/2080)
|
||||
- chore(deps): update dependency eslint to v9.3.0 [`#2079`](https://github.com/th-ch/youtube-music/pull/2079)
|
||||
- fix(deps): update dependency peerjs to v1.5.4 [`#2075`](https://github.com/th-ch/youtube-music/pull/2075)
|
||||
- chore(deps): update dependency esbuild to v0.21.4 [`#2078`](https://github.com/th-ch/youtube-music/pull/2078)
|
||||
- fix(deps): update dependency semver to v7.6.2 [`#2076`](https://github.com/th-ch/youtube-music/pull/2076)
|
||||
- chore(deps): update dependency electron-vite to v2.2.0 [`#2077`](https://github.com/th-ch/youtube-music/pull/2077)
|
||||
- fix(deps): update dependency i18next to v23.11.5 [`#2074`](https://github.com/th-ch/youtube-music/pull/2074)
|
||||
- fix(deps): update dependency @cliqz/adblocker-electron to v1.27.3 [`#2071`](https://github.com/th-ch/youtube-music/pull/2071)
|
||||
- chore(deps): update dependency vite to v5.2.11 [`#2070`](https://github.com/th-ch/youtube-music/pull/2070)
|
||||
- fix(deps): update dependency @floating-ui/dom to v1.6.5 [`#2073`](https://github.com/th-ch/youtube-music/pull/2073)
|
||||
- fix(deps): update dependency @cliqz/adblocker-electron-preload to v1.27.3 [`#2072`](https://github.com/th-ch/youtube-music/pull/2072)
|
||||
- chore(deps): update pnpm to v9 [`#1980`](https://github.com/th-ch/youtube-music/pull/1980)
|
||||
- chore(deps): update dependency electron to v30.0.8 [`#2068`](https://github.com/th-ch/youtube-music/pull/2068)
|
||||
- chore(deps-dev): bump ejs from 3.1.9 to 3.1.10 [`#2023`](https://github.com/th-ch/youtube-music/pull/2023)
|
||||
- chore(deps): update dependency utf-8-validate to v6.0.4 [`#2069`](https://github.com/th-ch/youtube-music/pull/2069)
|
||||
- fix(MPRIS): Prevents player to start with invalid MPRIS interface [`#1996`](https://github.com/th-ch/youtube-music/pull/1996)
|
||||
- fix(deps): update dependency solid-js to v1.8.17 [`#2002`](https://github.com/th-ch/youtube-music/pull/2002)
|
||||
- chore(deps): update dependency @typescript-eslint/eslint-plugin to v7.10.0 [`#2000`](https://github.com/th-ch/youtube-music/pull/2000)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.85 [`#1998`](https://github.com/th-ch/youtube-music/pull/1998)
|
||||
- fix(deps): update dependency serve to v14.2.3 [`#1997`](https://github.com/th-ch/youtube-music/pull/1997)
|
||||
- chore(deps): update dependency rollup to v4.18.0 [`#1990`](https://github.com/th-ch/youtube-music/pull/1990)
|
||||
- feat: Enable arm64 for deb and rpm [`#2033`](https://github.com/th-ch/youtube-music/pull/2033)
|
||||
- chore (README-is.md): Replace viðbót with tengiforrit [`#2004`](https://github.com/th-ch/youtube-music/pull/2004)
|
||||
- chore(docs): readme file translated to french [`#2049`](https://github.com/th-ch/youtube-music/pull/2049)
|
||||
- chore(deps): update dependency @babel/runtime to v7.24.6 [`#2039`](https://github.com/th-ch/youtube-music/pull/2039)
|
||||
- Fix substract `margin-top` in fullscreen mode [`#2015`](https://github.com/th-ch/youtube-music/pull/2015)
|
||||
- chore(deps): update pnpm to v8.15.7 [`#1970`](https://github.com/th-ch/youtube-music/pull/1970)
|
||||
- fix(renderer): fix macos traffic lights gap [`#2035`](https://github.com/th-ch/youtube-music/issues/2035)
|
||||
- Fix substract `margin-top` in fullscreen mode [`#2013`](https://github.com/th-ch/youtube-music/issues/2013)
|
||||
- chore(i18n): Translated using Weblate (Hungarian) [`f3de171`](https://github.com/th-ch/youtube-music/commit/f3de17112af787437362f31b5c4e2d4149ba1436)
|
||||
- feat(menu): add theme list in menu [`933b4cc`](https://github.com/th-ch/youtube-music/commit/933b4cc8f062b3442afd4516a40eb2938db98fc6)
|
||||
- chore(i18n): Translated using Weblate (Filipino) [`91392c0`](https://github.com/th-ch/youtube-music/commit/91392c0c7efaf3b33da4be4aaa7946af7108d676)
|
||||
|
||||
#### [v3.3.6](https://github.com/th-ch/youtube-music/compare/v3.3.5...v3.3.6)
|
||||
|
||||
> 13 April 2024
|
||||
|
||||
- fix: add AdGuard as blocklist sources [`#1966`](https://github.com/th-ch/youtube-music/pull/1966)
|
||||
- chore(deps): update dependency rollup to v4.14.2 [`#1968`](https://github.com/th-ch/youtube-music/pull/1968)
|
||||
- fix(deps): update dependency youtubei.js to v9.3.0 [`#1967`](https://github.com/th-ch/youtube-music/pull/1967)
|
||||
- chore(deps): update playwright monorepo to v1.43.1 [`#1969`](https://github.com/th-ch/youtube-music/pull/1969)
|
||||
- chore(deps): update dependency electron to v29.3.0 [`#1961`](https://github.com/th-ch/youtube-music/pull/1961)
|
||||
- fix(mpris): use global regex to replace minus in the video ID [`#1963`](https://github.com/th-ch/youtube-music/pull/1963)
|
||||
- fix(deps): update dependency @cliqz/adblocker-electron-preload to v1.27.1 [`#1954`](https://github.com/th-ch/youtube-music/pull/1954)
|
||||
- chore(deps): update dependency typescript to v5.4.5 [`#1958`](https://github.com/th-ch/youtube-music/pull/1958)
|
||||
- fix(deps): update dependency youtubei.js to v9.2.1 [`#1957`](https://github.com/th-ch/youtube-music/pull/1957)
|
||||
- fix(deps): update dependency i18next to v23.11.1 [`#1956`](https://github.com/th-ch/youtube-music/pull/1956)
|
||||
- fix(deps): update dependency @cliqz/adblocker-electron to v1.27.1 [`#1953`](https://github.com/th-ch/youtube-music/pull/1953)
|
||||
- chore(deps): update dependency @typescript-eslint/eslint-plugin to v7.6.0 [`#1947`](https://github.com/th-ch/youtube-music/pull/1947)
|
||||
- fix(deps): update dependency i18next to v23.11.0 [`#1946`](https://github.com/th-ch/youtube-music/pull/1946)
|
||||
- chore(deps): update dependency node-gyp to v10.1.0 [`#1941`](https://github.com/th-ch/youtube-music/pull/1941)
|
||||
- chore(deps): update dependency eslint to v9 [`#1940`](https://github.com/th-ch/youtube-music/pull/1940)
|
||||
- chore(deps): update dependency rollup to v4.14.1 [`#1944`](https://github.com/th-ch/youtube-music/pull/1944)
|
||||
- chore(deps): update dependency node-gyp to v10.1.0 [`#1937`](https://github.com/th-ch/youtube-music/pull/1937)
|
||||
- chore(deps): update dependency typescript to v5.4.4 [`#1936`](https://github.com/th-ch/youtube-music/pull/1936)
|
||||
- chore(deps): update playwright monorepo to v1.43.0 [`#1938`](https://github.com/th-ch/youtube-music/pull/1938)
|
||||
- chore(deps): bump undici from 5.28.3 to 5.28.4 [`#1935`](https://github.com/th-ch/youtube-music/pull/1935)
|
||||
- chore(deps): update dependency vite to v5.2.8 [`#1930`](https://github.com/th-ch/youtube-music/pull/1930)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.79 [`#1933`](https://github.com/th-ch/youtube-music/pull/1933)
|
||||
- chore(deps): update dependency node-gyp to v10.1.0 [`#1910`](https://github.com/th-ch/youtube-music/pull/1910)
|
||||
- chore(deps): update dependency node-gyp to v10.1.0 [`#1908`](https://github.com/th-ch/youtube-music/pull/1908)
|
||||
- fix(deps): update dependency @cliqz/adblocker-electron to v1.27.0 [`#1906`](https://github.com/th-ch/youtube-music/pull/1906)
|
||||
- fix(deps): update dependency @cliqz/adblocker-electron-preload to v1.27.0 [`#1907`](https://github.com/th-ch/youtube-music/pull/1907)
|
||||
- chore(deps): update dependency rollup to v4.13.2 [`#1901`](https://github.com/th-ch/youtube-music/pull/1901)
|
||||
- chore(deps): update dependency glob to v10.3.12 [`#1900`](https://github.com/th-ch/youtube-music/pull/1900)
|
||||
- chore(deps): update dependency vite to v5.2.7 [`#1905`](https://github.com/th-ch/youtube-music/pull/1905)
|
||||
- fix(deps): update dependency node-html-parser to v6.1.13 [`#1903`](https://github.com/th-ch/youtube-music/pull/1903)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.77 [`#1899`](https://github.com/th-ch/youtube-music/pull/1899)
|
||||
- chore(deps): update dependency electron to v29.1.6 [`#1898`](https://github.com/th-ch/youtube-music/pull/1898)
|
||||
- Improve video title filters [`#1667`](https://github.com/th-ch/youtube-music/pull/1667)
|
||||
- chore(deps): update dependency rollup to v4.13.1 [`#1896`](https://github.com/th-ch/youtube-music/pull/1896)
|
||||
- chore(deps): update dependency node-gyp to v10.1.0 [`#1890`](https://github.com/th-ch/youtube-music/pull/1890)
|
||||
- chore(deps): update dependency node-gyp to v10.1.0 [`#1889`](https://github.com/th-ch/youtube-music/pull/1889)
|
||||
- fix: fix `switch-repeat` [`#1810`](https://github.com/th-ch/youtube-music/issues/1810)
|
||||
- i18n Translation to Dutch/nl [`0dbf029`](https://github.com/th-ch/youtube-music/commit/0dbf0295b805f9883522ee00983b338060fbddbe)
|
||||
- fix: rollback electron-builder version to 24.9.4 [`4a57cc5`](https://github.com/th-ch/youtube-music/commit/4a57cc5ee9ab2ad6835cff75b8b3aead75d9e564)
|
||||
- chore: update electron-builder to 25.0.0-alpha.6 [`aef03ab`](https://github.com/th-ch/youtube-music/commit/aef03ab9fd440fe19c41e315cffab27e976c723d)
|
||||
|
||||
#### [v3.3.5](https://github.com/th-ch/youtube-music/compare/v3.3.4...v3.3.5)
|
||||
|
||||
> 26 March 2024
|
||||
|
||||
- chore(deps): update dependency node-gyp to v10.1.0 [`#1885`](https://github.com/th-ch/youtube-music/pull/1885)
|
||||
- chore(deps): update dependency @typescript-eslint/eslint-plugin to v7.4.0 [`#1886`](https://github.com/th-ch/youtube-music/pull/1886)
|
||||
- chore(deps): update dependency vite to v5.2.6 [`#1883`](https://github.com/th-ch/youtube-music/pull/1883)
|
||||
- fix(style): resolve #1887 [`#1887`](https://github.com/th-ch/youtube-music/issues/1887)
|
||||
- chore(i18n): Translated using Weblate (Swedish) [`69087bb`](https://github.com/th-ch/youtube-music/commit/69087bbf1fac1ba58e992146deb1d6f1706b1e3c)
|
||||
- chore(i18n): Translated using Weblate (French) [`af78f15`](https://github.com/th-ch/youtube-music/commit/af78f1596ab8db2fa7069fdb1c4f078099ce4446)
|
||||
- Update changelog for v3.3.4 [`62f7d44`](https://github.com/th-ch/youtube-music/commit/62f7d440fab5bdbe9f49a3a5f8c32e7aaf2f28f6)
|
||||
|
||||
#### [v3.3.4](https://github.com/th-ch/youtube-music/compare/v3.3.3...v3.3.4)
|
||||
|
||||
> 24 March 2024
|
||||
|
||||
- Update changelog for v3.3.3 [`9769544`](https://github.com/th-ch/youtube-music/commit/97695444affbacb71dd73ae7107d4c987e285a37)
|
||||
- fix(style): fix fullscreen style and in-app-menu [`ed700c2`](https://github.com/th-ch/youtube-music/commit/ed700c2916cc7e6ccd2010d0c552364af116eb4f)
|
||||
- fix(style): fix miniplayer style [`a8bc539`](https://github.com/th-ch/youtube-music/commit/a8bc53912d1f4137008ecb2d9d5d9d9eb06ee2a8)
|
||||
|
||||
#### [v3.3.3](https://github.com/th-ch/youtube-music/compare/v3.3.2...v3.3.3)
|
||||
|
||||
> 24 March 2024
|
||||
|
||||
- chore(deps): update dependency electron to v29.1.5 [`#1876`](https://github.com/th-ch/youtube-music/pull/1876)
|
||||
- chore(deps): update dependency typescript to v5.4.3 [`#1877`](https://github.com/th-ch/youtube-music/pull/1877)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.76 [`#1878`](https://github.com/th-ch/youtube-music/pull/1878)
|
||||
- chore(deps): update dependency vite to v5.2.4 [`#1881`](https://github.com/th-ch/youtube-music/pull/1881)
|
||||
- Ambient Plugin cleanup [`#1880`](https://github.com/th-ch/youtube-music/pull/1880)
|
||||
- chore(deps): update dependency vite to v5.2.2 [`#1875`](https://github.com/th-ch/youtube-music/pull/1875)
|
||||
- fix(deps): update dependency solid-js to v1.8.16 [`#1873`](https://github.com/th-ch/youtube-music/pull/1873)
|
||||
- chore(deps): update dependency @typescript-eslint/eslint-plugin to v7.3.1 [`#1868`](https://github.com/th-ch/youtube-music/pull/1868)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.75 [`#1867`](https://github.com/th-ch/youtube-music/pull/1867)
|
||||
- chore(deps): update pnpm to v8.15.5 [`#1865`](https://github.com/th-ch/youtube-music/pull/1865)
|
||||
- fix: Fix Miniplayer image size [`#1863`](https://github.com/th-ch/youtube-music/pull/1863)
|
||||
- fix(style): fixed image/video alignment when toggle is active [`#1862`](https://github.com/th-ch/youtube-music/pull/1862)
|
||||
- chore: Update README-is.md [`#1858`](https://github.com/th-ch/youtube-music/pull/1858)
|
||||
- chore(deps): update dependency vite-plugin-solid to v2.10.2 [`#1859`](https://github.com/th-ch/youtube-music/pull/1859)
|
||||
- fix: Ambient Mode intialization improvement [`#1857`](https://github.com/th-ch/youtube-music/pull/1857)
|
||||
- chore(deps): bump follow-redirects from 1.15.5 to 1.15.6 [`#1856`](https://github.com/th-ch/youtube-music/pull/1856)
|
||||
- chore(README): Nicer Readme 2.0 [`#1833`](https://github.com/th-ch/youtube-music/pull/1833)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.74 [`#1854`](https://github.com/th-ch/youtube-music/pull/1854)
|
||||
- chore(deps): update dependency esbuild to v0.20.2 [`#1855`](https://github.com/th-ch/youtube-music/pull/1855)
|
||||
- Improve ambient mode [`#1853`](https://github.com/th-ch/youtube-music/pull/1853)
|
||||
- chore(deps): update dependency electron to v29.1.4 [`#1852`](https://github.com/th-ch/youtube-music/pull/1852)
|
||||
- chore(deps): update dependency electron to v29.1.3 [`#1851`](https://github.com/th-ch/youtube-music/pull/1851)
|
||||
- chore(deps): update dependency rollup to v4.13.0 [`#1850`](https://github.com/th-ch/youtube-music/pull/1850)
|
||||
- fix(deps): update dependency electron-store to v8.2.0 [`#1843`](https://github.com/th-ch/youtube-music/pull/1843)
|
||||
- chore(deps): update dependency electron to v29.1.1 [`#1841`](https://github.com/th-ch/youtube-music/pull/1841)
|
||||
- fix(deps): update dependency i18next to v23.10.1 [`#1842`](https://github.com/th-ch/youtube-music/pull/1842)
|
||||
- chore(deps): update dependency @typescript-eslint/eslint-plugin to v7.2.0 [`#1848`](https://github.com/th-ch/youtube-music/pull/1848)
|
||||
- chore(deps): update dependency vite to v5.1.6 [`#1847`](https://github.com/th-ch/youtube-music/pull/1847)
|
||||
- fix(deps): update dependency async-mutex to v0.5.0 [`#1849`](https://github.com/th-ch/youtube-music/pull/1849)
|
||||
- fix(deps): update dependency ts-morph to v22 [`#1846`](https://github.com/th-ch/youtube-music/pull/1846)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.73 [`#1840`](https://github.com/th-ch/youtube-music/pull/1840)
|
||||
- chore(deps): update dependency rollup to v4.12.1 [`#1837`](https://github.com/th-ch/youtube-music/pull/1837)
|
||||
- chore: Changed a single word (README-is.md) [`#1836`](https://github.com/th-ch/youtube-music/pull/1836)
|
||||
- chore(deps): update dependency typescript to v5.4.2 [`#1838`](https://github.com/th-ch/youtube-music/pull/1838)
|
||||
- chore(deps): update dependency electron-vite to v2.1.0 [`#1823`](https://github.com/th-ch/youtube-music/pull/1823)
|
||||
- chore(deps): update dependency @typescript-eslint/eslint-plugin to v7.1.1 [`#1829`](https://github.com/th-ch/youtube-music/pull/1829)
|
||||
- chore(deps): update dependency vite to v5.1.5 [`#1831`](https://github.com/th-ch/youtube-music/pull/1831)
|
||||
- Revert "chore(deps): update dependency electron-builder to v24.13.3" [`#1818`](https://github.com/th-ch/youtube-music/pull/1818)
|
||||
- chore(deps): update dependency electron-builder to v24.13.3 [`#1774`](https://github.com/th-ch/youtube-music/pull/1774)
|
||||
- chore(deps): update playwright monorepo to v1.42.1 [`#1816`](https://github.com/th-ch/youtube-music/pull/1816)
|
||||
- fix: Add scale ratio for tray icons [`#1811`](https://github.com/th-ch/youtube-music/pull/1811)
|
||||
- Icelandic translation of the readme file [`#1806`](https://github.com/th-ch/youtube-music/pull/1806)
|
||||
- chore(deps): update dependency electron to v29.1.0 [`#1808`](https://github.com/th-ch/youtube-music/pull/1808)
|
||||
- chore(deps): update playwright monorepo to v1.42.0 [`#1805`](https://github.com/th-ch/youtube-music/pull/1805)
|
||||
- chore(deps): update dependency eslint to v8.57.0 [`#1793`](https://github.com/th-ch/youtube-music/pull/1793)
|
||||
- chore(deps): update dependency @typescript-eslint/eslint-plugin to v7.1.0 [`#1800`](https://github.com/th-ch/youtube-music/pull/1800)
|
||||
- chore(deps): update dependency discord-api-types to v0.37.71 [`#1799`](https://github.com/th-ch/youtube-music/pull/1799)
|
||||
- chore(deps): update pnpm to v8.15.4 [`#1795`](https://github.com/th-ch/youtube-music/pull/1795)
|
||||
- chore(deps): update dependency @types/semver to v7.5.8 [`#1797`](https://github.com/th-ch/youtube-music/pull/1797)
|
||||
- fix: center the pause icon [`#1786`](https://github.com/th-ch/youtube-music/pull/1786)
|
||||
- fix(deps): update dependency @cliqz/adblocker-electron to v1.26.16 [`#1788`](https://github.com/th-ch/youtube-music/pull/1788)
|
||||
- fix(deps): update dependency @cliqz/adblocker-electron-preload to v1.26.16 [`#1789`](https://github.com/th-ch/youtube-music/pull/1789)
|
||||
- fix(deps): update dependency youtubei.js to v9.1.0 [`#1790`](https://github.com/th-ch/youtube-music/pull/1790)
|
||||
- fix(deps): update dependency i18next to v23.10.0 [`#1785`](https://github.com/th-ch/youtube-music/pull/1785)
|
||||
- chore(deps): update dependency electron to v29 [`#1773`](https://github.com/th-ch/youtube-music/pull/1773)
|
||||
- chore(deps): update dependency vite to v5.1.4 [`#1778`](https://github.com/th-ch/youtube-music/pull/1778)
|
||||
- chore(deps): bump ip from 2.0.0 to 2.0.1 [`#1777`](https://github.com/th-ch/youtube-music/pull/1777)
|
||||
- fix: add support for Wayland [`#1864`](https://github.com/th-ch/youtube-music/issues/1864)
|
||||
- fix(style): fix navigation bar items are not working [`#1381`](https://github.com/th-ch/youtube-music/issues/1381) [`#1396`](https://github.com/th-ch/youtube-music/issues/1396) [`#1649`](https://github.com/th-ch/youtube-music/issues/1649)
|
||||
- fix(ytm-bugs): fixed a `scrollbar-color` bug that affected Chromium 121 and later [`#1737`](https://github.com/th-ch/youtube-music/issues/1737)
|
||||
- chore(i18n): Translated using Weblate (Icelandic) [`82fa871`](https://github.com/th-ch/youtube-music/commit/82fa8719a96abdfaaa8548a0077f4db2164ec09b)
|
||||
- chore(i18n): Translated using Weblate (Romanian) [`c871506`](https://github.com/th-ch/youtube-music/commit/c871506a69180308ab4fc587b6e8a33f193087e8)
|
||||
- chore(i18n): Translated using Weblate (Thai) [`a7d0350`](https://github.com/th-ch/youtube-music/commit/a7d035022a229f0b245694d1fc7a484befe1c269)
|
||||
|
||||
#### [v3.3.2](https://github.com/th-ch/youtube-music/compare/v3.3.1...v3.3.2)
|
||||
|
||||
> 20 February 2024
|
||||
|
||||
- fix: fix bugs in MPRIS, and improve MPRIS [`#1760`](https://github.com/th-ch/youtube-music/pull/1760)
|
||||
- fix(deps): update dependency electron-updater to v6.1.8 [`#1770`](https://github.com/th-ch/youtube-music/pull/1770)
|
||||
- chore(deps): update dependency electron-builder to v24.12.0 [`#1771`](https://github.com/th-ch/youtube-music/pull/1771)
|
||||
- feat(scrobblers): use `BrowserWindow` instead of `shell.openExternal` [`#1758`](https://github.com/th-ch/youtube-music/pull/1758)
|
||||
- chore(deps): update dependency @typescript-eslint/eslint-plugin to v7.0.2 [`#1763`](https://github.com/th-ch/youtube-music/pull/1763)
|
||||
- chore(deps): update dependency esbuild to v0.20.1 [`#1759`](https://github.com/th-ch/youtube-music/pull/1759)
|
||||
- fix(deps): update dependency i18next to v23.9.0 [`#1754`](https://github.com/th-ch/youtube-music/pull/1754)
|
||||
- fix: fixed an issue that caused infinite loops when using Music Together [`#1752`](https://github.com/th-ch/youtube-music/issues/1752)
|
||||
- chore(deps): rollback dependency electron-builder to v24.9.1 [`8bd05f5`](https://github.com/th-ch/youtube-music/commit/8bd05f525df98671f0a516b159cccab302b7ae99)
|
||||
- chore(deps): update dependency electron-builder to v24.13.1 [`47b23b4`](https://github.com/th-ch/youtube-music/commit/47b23b414c8feb25c4d9a23d6adb7cbf1ac818fb)
|
||||
- chore(i18n): Translated using Weblate (German) [`47505e9`](https://github.com/th-ch/youtube-music/commit/47505e97482f9e953ee451b968d0950585616ffa)
|
||||
|
||||
#### [v3.3.1](https://github.com/th-ch/youtube-music/compare/v3.3.0...v3.3.1)
|
||||
|
||||
> 18 February 2024
|
||||
|
||||
- Update changelog for v3.3.0 [`6d9bb8e`](https://github.com/th-ch/youtube-music/commit/6d9bb8eb1cc2d892a5552ffb1f7c20859aa80f67)
|
||||
- hotfix: in-app-menu position issue [`87acf4c`](https://github.com/th-ch/youtube-music/commit/87acf4cf042ba32a000a4aeaec5c17c93501d333)
|
||||
- release 3.3.1 (HOTFIX) [`a6ed8bf`](https://github.com/th-ch/youtube-music/commit/a6ed8bf3aa20ca8e950e85d88f981ccf9edc7498)
|
||||
|
||||
#### [v3.3.0](https://github.com/th-ch/youtube-music/compare/v3.2.2...v3.3.0)
|
||||
|
||||
> 18 February 2024
|
||||
|
||||
- fix(deps): update dependency i18next to v23.8.3 [`#1751`](https://github.com/th-ch/youtube-music/pull/1751)
|
||||
- import fixed ./constants [`#1748`](https://github.com/th-ch/youtube-music/pull/1748)
|
||||
- chore(deps): update dependency rollup to v4.12.0 [`#1743`](https://github.com/th-ch/youtube-music/pull/1743)
|
||||
|
||||
|
Before Width: | Height: | Size: 227 KiB After Width: | Height: | Size: 721 KiB |
392
docs/readme/README-es.md
Normal file
@ -0,0 +1,392 @@
|
||||
<div align="center">
|
||||
|
||||
# YouTube Music
|
||||
|
||||
[](https://github.com/th-ch/youtube-music/releases/)
|
||||
[](https://github.com/th-ch/youtube-music/blob/master/license)
|
||||
[](https://github.com/th-ch/youtube-music/blob/master/.eslintrc.js)
|
||||
[](https://GitHub.com/th-ch/youtube-music/releases/)
|
||||
[](https://GitHub.com/th-ch/youtube-music/releases/)
|
||||
[](https://aur.archlinux.org/packages/youtube-music-bin)
|
||||
[](https://snyk.io/test/github/th-ch/youtube-music)
|
||||
|
||||
</div>
|
||||
|
||||

|
||||
|
||||
|
||||
<div align="center">
|
||||
<a href="https://github.com/th-ch/youtube-music/releases/latest">
|
||||
<img src="/web/youtube-music.svg" width="400" height="100" alt="YouTube Music SVG">
|
||||
</a>
|
||||
</div>
|
||||
|
||||
Lee esto en otros idiomas: [🏴 Inglés](../../README.md), [🇰🇷 Coreano](./README-ko.md), [🇫🇷 Francés](./README-fr.md), [🇮🇸 Islandés](./README-is.md), [🇪🇸 Español](./README-es.md), [🇷🇺 Ruso](./README-ru.md), [🇧🇷 Portugués](./README-pt.md), [🇯🇵 Japonés](./README-ja.md)
|
||||
|
||||
**Electron wrapper de YouTube Music con las siguientes características:**
|
||||
|
||||
- Apariencia y sensación nativa, tiene como objetivo mantener la interfaz original
|
||||
- Framework para plugins personalizados: cambia YouTube Music según tus necesidades (estilo, contenido, funciones), habilita/deshabilita plugins con un solo clic
|
||||
|
||||
## Imagen de demostración
|
||||
|
||||
| Pantalla del reproductor (color del álbum como tema y luz ambiental) |
|
||||
|:---------------------------------------------------------------------------------------------------------:|
|
||||
||
|
||||
|
||||
## Contenido
|
||||
|
||||
- [Características](#características)
|
||||
- [Plugins disponibles](#plugins-disponibles)
|
||||
- [Traducción](#traducción)
|
||||
- [Descarga](#descarga)
|
||||
- [Arch Linux](#arch-linux)
|
||||
- [macOS](#macos)
|
||||
- [Windows](#windows)
|
||||
- [Cómo instalar sin conexión a internet? (en Windows)](#cómo-instalar-sin-conexión-a-internet-en-windows)
|
||||
- [Temas](#temas)
|
||||
- [Dev](#dev)
|
||||
- [Crea tus propios plugins](#crea-tus-propios-plugins)
|
||||
- [Creación de un plugin](#creación-de-un-plugin)
|
||||
- [Casos de uso comunes](#casos-de-uso-comunes)
|
||||
- [Compilar](#compilar)
|
||||
- [Vista previa de producción](#vista-previa-de-producción)
|
||||
- [Tests](#tests)
|
||||
- [Licencia](#licencia)
|
||||
- [Preguntas frecuentes](#preguntas-frecuentes)
|
||||
|
||||
## Características:
|
||||
|
||||
- **Confirmación automática al pausar** (Siempre habilitado): desactiva
|
||||
el mensaje emergente ["¿Continuar reproduciendo?"](https://user-images.githubusercontent.com/61631665/129977894-01c60740-7ec6-4bf0-9a2c-25da24491b0e.png)
|
||||
que pausa la música después de cierto tiempo
|
||||
|
||||
- Y más ...
|
||||
|
||||
## Plugins disponibles:
|
||||
|
||||
- **Bloqueador de Anuncios**: Bloquea todos los anuncios y rastreadores de forma predeterminada
|
||||
|
||||
- **Acciones de Álbum**: Agrega botones de deshacer No me gusta, No me gusta, Me gusta, y Deshacer me gusta a todas las canciones de una lista de reproducción o álbum
|
||||
|
||||
- **Tema de Color del Álbum**: Aplica un tema dinámico y efectos visuales basados en la paleta de colores del álbum
|
||||
|
||||
- **Modo Ambiente**: Aplica un efecto de iluminación proyectando colores suaves del video en el fondo de tu pantalla
|
||||
|
||||
- **Compresor de Audio**: Aplica compresión al audio (reduce el volumen de las partes más fuertes de la señal y aumenta el
|
||||
volumen de las partes más suaves)
|
||||
|
||||
- **Barra de Navegación Difuminada**: hace que la barra de navegación sea transparente y borrosa
|
||||
|
||||
- **Omitir Restricciones de Edades**: omite la verificación de edad de YouTube
|
||||
|
||||
- **Selector de Subtítulos**: Habilita los subtítulos
|
||||
|
||||
- **Barra Lateral Compacta**: Siempre muestra la barra lateral en modo compacto
|
||||
|
||||
- **Crossfade**: Transición suave entre canciones
|
||||
|
||||
- **Desactivar Reproducción Automática**: Hace que cada canción comience en modo "pausado"
|
||||
|
||||
- **[Discord](https://discord.com/) Rich Presence**: Muestra a tus amigos lo que estás escuchando
|
||||
con [Rich Presence](https://user-images.githubusercontent.com/28219076/104362104-a7a0b980-5513-11eb-9744-bb89eabe0016.png)
|
||||
|
||||
- **Descargador**: Descarga
|
||||
MP3 [directamente desde la interfaz](https://user-images.githubusercontent.com/61631665/129977677-83a7d067-c192-45e1-98ae-b5a4927393be.png) [(youtube-dl)](https://github.com/ytdl-org/youtube-dl)
|
||||
|
||||
- **Volumen Exponencial**: Hace que el control de volumen
|
||||
sea [exponencial](https://greasyfork.org/en/scripts/397686-youtube-music-fix-volume-ratio/) para facilitar la
|
||||
selección de volúmenes más bajos
|
||||
|
||||
- **Menú en la Aplicación**: [da a las barras un aspecto elegante y oscuro](https://user-images.githubusercontent.com/78568641/112215894-923dbf00-8c29-11eb-95c3-3ce15db27eca.png)
|
||||
|
||||
> (consulta [esta publicación](https://github.com/th-ch/youtube-music/issues/410#issuecomment-952060709) si tienes problemas
|
||||
para acceder al menú después de habilitar este plugin y la opción hide-menu)
|
||||
|
||||
- **Scrobbler**: Agrega soporte para scrobbling en [Last.fm](https://www.last.fm/) y [ListenBrainz](https://listenbrainz.org/)
|
||||
|
||||
- **Lumia Stream**: Agrega soporte para [Lumia Stream](https://lumiastream.com/)
|
||||
|
||||
- **Letras Genius**: Agrega soporte de letras para la mayoría de las canciones
|
||||
|
||||
- **Music Together**: Comparte una lista de reproducción con otros. Cuando el anfitrión reproduce una canción, todos los demás escucharán la misma canción
|
||||
|
||||
- **Navegación**: Flechas de siguiente/anterior integradas directamente en la interfaz, como en tu navegador favorito
|
||||
|
||||
- **Sin Inicio de Sesión de Google**: Elimina los botones y enlaces de inicio de sesión de Google de la interfaz
|
||||
|
||||
- **Notificaciones**: Muestra una notificación cuando comienza una canción
|
||||
a reproducirse ([notificaciones interactivas](https://user-images.githubusercontent.com/78568641/114102651-63ce0e00-98d0-11eb-9dfe-c5a02bb54f9c.png)
|
||||
están disponibles en Windows)
|
||||
|
||||
- **Picture-in-picture**: permite cambiar la aplicación al modo picture-in-picture
|
||||
|
||||
- **Velocidad de Reproducción**: Escucha rápido, escucha
|
||||
lento! [Agrega un deslizador que controla la velocidad de reproducción de las canciones](https://user-images.githubusercontent.com/61631665/129976003-e55db5ba-bf42-448c-a059-26a009775e68.png)
|
||||
|
||||
- **Volumen Preciso**: Controla el volumen de forma precisa utilizando la rueda del mouse/atajos de teclado, con un HUD personalizado y pasos de volumen personalizables
|
||||
|
||||
- **Atajos (& MPRIS)**: Permite configurar atajos globales para la reproducción (reproducir/pausar/siguiente/anterior) +
|
||||
desactivar [osd multimedia](https://user-images.githubusercontent.com/84923831/128601225-afa38c1f-dea8-4209-9f72-0f84c1dd8b54.png)
|
||||
al anular las teclas multimedia + habilitar Ctrl/CMD + F para buscar + habilitar el soporte mpris de Linux para
|
||||
teclas multimedia + [atajos personalizados](https://github.com/Araxeus/youtube-music/blob/1e591d6a3df98449bcda6e63baab249b28026148/providers/song-controls.js#L13-L50)
|
||||
para [usuarios avanzados](https://github.com/th-ch/youtube-music/issues/106#issuecomment-952156902)
|
||||
|
||||
- **Saltar Canción no Gustada**: Salta las canciones que no te gustan
|
||||
|
||||
- **Saltar Silencios**: Salta automáticamente las secciones de silencio
|
||||
|
||||
- [**SponsorBlock**](https://github.com/ajayyy/SponsorBlock): Salta automáticamente las partes que no son de música, como la introducción/final o
|
||||
partes de videos musicales donde no se reproduce la canción
|
||||
|
||||
- **Control Multimedia en la Barra de Tareas**: Controla la reproducción desde
|
||||
la [barra de tareas de Windows](https://user-images.githubusercontent.com/78568641/111916130-24a35e80-8a82-11eb-80c8-5021c1aa27f4.png)
|
||||
|
||||
- **TouchBar**: Diseño personalizado de TouchBar para macOS
|
||||
|
||||
- **Tuna OBS**: Integración con el complemento [Tuna](https://obsproject.com/forum/resources/tuna.843/) de [OBS](https://obsproject.com/)
|
||||
|
||||
- **Cambiador de Calidad de Video**: Permite cambiar la calidad del video con
|
||||
un [botón](https://user-images.githubusercontent.com/78568641/138574366-70324a5e-2d64-4f6a-acdd-dc2a2b9cecc5.png) en
|
||||
la superposición de video
|
||||
|
||||
- **Alternar Video**: Agrega
|
||||
un [botón](https://user-images.githubusercontent.com/28893833/173663950-63e6610e-a532-49b7-9afa-54cb57ddfc15.png) para
|
||||
alternar entre el modo de video/canción. también puede eliminar opcionalmente toda la pestaña de video
|
||||
|
||||
- **Visualizador**: Diferentes visualizadores de música
|
||||
|
||||
## Traducción
|
||||
|
||||
Puedes ayudar con la traducción en [Hosted Weblate](https://hosted.weblate.org/projects/youtube-music/).
|
||||
|
||||
<a href="https://hosted.weblate.org/engage/youtube-music/">
|
||||
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/multi-auto.svg" alt="estado de traducción" />
|
||||
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/287x66-black.png" alt="estado de traducción 2" />
|
||||
</a>
|
||||
|
||||
## Descarga
|
||||
|
||||
Puedes consultar la [última versión](https://github.com/th-ch/youtube-music/releases/latest) para encontrar rápidamente la versión más reciente.
|
||||
|
||||
### Arch Linux
|
||||
|
||||
Instala el paquete [`youtube-music-bin`](https://aur.archlinux.org/packages/youtube-music-bin) desde AUR. Para obtener instrucciones de instalación de AUR, consulta esta [página del wiki](https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages).
|
||||
|
||||
### macOS
|
||||
|
||||
Puedes instalar la aplicación usando Homebrew (consulta la [definición de cask](https://github.com/th-ch/homebrew-youtube-music)):
|
||||
|
||||
```bash
|
||||
brew install th-ch/youtube-music/youtube-music
|
||||
```
|
||||
|
||||
Si instalas la aplicación manualmente y obtienes un error "está dañado y no se puede abrir" al iniciar la aplicación, ejecuta lo siguiente en la Terminal:
|
||||
|
||||
```bash
|
||||
/usr/bin/xattr -cr /Applications/YouTube\ Music.app
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
||||
Puedes usar el [administrador de paquetes Scoop](https://scoop.sh) para instalar el paquete `youtube-music` desde
|
||||
el [`extras` bucket](https://github.com/ScoopInstaller/Extras).
|
||||
|
||||
```bash
|
||||
scoop bucket add extras
|
||||
scoop install extras/youtube-music
|
||||
```
|
||||
|
||||
Alternativamente, puedes usar [Winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/), el administrador de paquetes CLI oficial de Windows 11 para instalar el paquete `th-ch.YouTubeMusic`.
|
||||
|
||||
*Nota: Microsoft Defender SmartScreen podría bloquear la instalación ya que proviene de un "editor desconocido". Esto también esválido para la instalación manual al intentar ejecutar el ejecutable (.exe) después de una descarga manual aquí en GitHub (mismo archivo).*
|
||||
|
||||
```bash
|
||||
winget install th-ch.YouTubeMusic
|
||||
```
|
||||
|
||||
#### Cómo instalar sin conexión a Internet? (en Windows)
|
||||
|
||||
- Descarga el archivo `*.nsis.7z` para _la arquitectura de tu dispositivo_ en la [página de lanzamientos](https://github.com/th-ch/youtube-music/releases/latest).
|
||||
- `x64` para Windows de 64 bits
|
||||
- `ia32` para Windows de 32 bits
|
||||
- `arm64` para Windows ARM64
|
||||
- Descarga el instalador en la página de lanzamientos. (`*-Setup.exe`)
|
||||
- Colócalos en el **mismo directorio**.
|
||||
- Ejecuta el instalador.
|
||||
|
||||
## Temas
|
||||
|
||||
Puedes cargar archivos CSS para cambiar la apariencia de la aplicación (Opciones > Ajustes visuales > Tema).
|
||||
|
||||
Algunos temas predefinidos están disponibles en https://github.com/kerichdev/themes-for-ytmdesktop-player.
|
||||
|
||||
## Dev
|
||||
|
||||
```bash
|
||||
git clone https://github.com/th-ch/youtube-music
|
||||
cd youtube-music
|
||||
pnpm install --frozen-lockfile
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
## Crea tus propios plugins
|
||||
|
||||
Usando plugins, puedes:
|
||||
|
||||
- manipular la aplicación - se pasa el `BrowserWindow` de electron al controlador del plugin
|
||||
- cambiar la interfaz manipulando el HTML/CSS
|
||||
|
||||
### Creación de un plugin
|
||||
|
||||
Crea una carpeta en `src/plugins/NOMBRE-DEL-PLUGIN`:
|
||||
|
||||
- `index.ts`: el archivo principal del plugin
|
||||
```typescript
|
||||
import style from './style.css?inline'; // importar estilo como inline
|
||||
|
||||
import { createPlugin } from '@/utils';
|
||||
|
||||
export default createPlugin({
|
||||
name: "Plugin Label",
|
||||
restartNeeded: true, // si el valor es true, ytmusic muestra el diálogo de reinicio
|
||||
config: {
|
||||
enabled: false,
|
||||
}, // tu configuración personalizada
|
||||
stylesheets: [style], // tu estilo personalizado,
|
||||
menu: async ({ getConfig, setConfig }) => {
|
||||
// Todos los métodos *Config están envueltos en Promise<T>
|
||||
const config = await getConfig();
|
||||
return [
|
||||
{
|
||||
label: "menu",
|
||||
submenu: [1, 2, 3].map((value) => ({
|
||||
label: `value ${value}`,
|
||||
type: "radio",
|
||||
checked: config.value === value,
|
||||
click() {
|
||||
setConfig({ value });
|
||||
},
|
||||
})),
|
||||
},
|
||||
];
|
||||
},
|
||||
backend: {
|
||||
start({ window, ipc }) {
|
||||
window.maximize();
|
||||
|
||||
// puedes comunicarte con el plugin de renderizado
|
||||
ipc.handle("some-event", () => {
|
||||
return "hello";
|
||||
});
|
||||
},
|
||||
// se activa cuando cambia la configuración
|
||||
onConfigChange(newConfig) { /* ... */ },
|
||||
// se activa cuando se desactiva el plugin
|
||||
stop(context) { /* ... */ },
|
||||
},
|
||||
renderer: {
|
||||
async start(context) {
|
||||
console.log(await context.ipc.invoke("some-event"));
|
||||
},
|
||||
// Solo disponible en el plugin de renderizado
|
||||
onPlayerApiReady(api: YoutubePlayer, context: RendererContext) {
|
||||
// establecer la configuración del plugin fácilmente
|
||||
context.setConfig({ myConfig: api.getVolume() });
|
||||
},
|
||||
onConfigChange(newConfig) { /* ... */ },
|
||||
stop(_context) { /* ... */ },
|
||||
},
|
||||
preload: {
|
||||
async start({ getConfig }) {
|
||||
const config = await getConfig();
|
||||
},
|
||||
onConfigChange(newConfig) {},
|
||||
stop(_context) {},
|
||||
},
|
||||
});
|
||||
|
||||
```
|
||||
|
||||
### Casos de uso comunes
|
||||
|
||||
- inyectar CSS personalizado: crea un archivo `style.css` en la misma carpeta y luego:
|
||||
|
||||
```typescript
|
||||
// index.ts
|
||||
import style from './style.css?inline'; // importar estilo como inline
|
||||
|
||||
import { createPlugin } from '@/utils';
|
||||
|
||||
export default createPlugin({
|
||||
name: 'Plugin Label',
|
||||
restartNeeded: true, // si el valor es true, ytmusic mostrará el diálogo de reinicio
|
||||
config: {
|
||||
enabled: false,
|
||||
}, // tu configuración personalizada
|
||||
stylesheets: [style], // tu estilo personalizado
|
||||
renderer() {} // define el hook del renderizador
|
||||
});
|
||||
```
|
||||
|
||||
- Si quieres cambiar el HTML:
|
||||
|
||||
```typescript
|
||||
import { createPlugin } from '@/utils';
|
||||
|
||||
export default createPlugin({
|
||||
name: 'Plugin Label',
|
||||
restartNeeded: true, // si el valor es true, ytmusic mostrará el diálogo de reinicio
|
||||
config: {
|
||||
enabled: false,
|
||||
}, // tu configuración personalizada
|
||||
renderer() {
|
||||
// Elimina el botón de inicio de sesión
|
||||
document.querySelector(".sign-in-link.ytmusic-nav-bar").remove();
|
||||
} // define el hook del renderizador
|
||||
});
|
||||
```
|
||||
|
||||
- comunicación entre el front y el back: se puede hacer utilizando el módulo ipcMain de electron. Ver archivo `index.ts` y
|
||||
ejemplo en el plugin `sponsorblock`.
|
||||
|
||||
## Compilar
|
||||
|
||||
1. Clonar el repositorio
|
||||
2. Seguir [esta guía](https://pnpm.io/es/installation) para instalar `pnpm`
|
||||
3. Ejecutar `pnpm install --frozen-lockfile` para instalar las dependencias
|
||||
4. Ejecutar `pnpm build:OS`
|
||||
|
||||
- `pnpm dist:win` - Windows
|
||||
- `pnpm dist:linux` - Linux (amd64)
|
||||
- `pnpm dist:linux:deb-arm64` - Linux (arm64 para Debian)
|
||||
- `pnpm dist:linux:rpm-arm64` - Linux (arm64 para Fedora)
|
||||
- `pnpm dist:mac` - macOS (amd64)
|
||||
- `pnpm dist:mac:arm64` - macOS (arm64)
|
||||
|
||||
Construye la aplicación para macOS, Linux y Windows,
|
||||
utilizando [electron-builder](https://github.com/electron-userland/electron-builder).
|
||||
|
||||
## Vista previa de producción
|
||||
|
||||
```bash
|
||||
pnpm start
|
||||
```
|
||||
|
||||
## Tests
|
||||
|
||||
```bash
|
||||
pnpm test
|
||||
```
|
||||
|
||||
Utiliza [Playwright](https://playwright.dev/) para probar la aplicación.
|
||||
|
||||
## Licencia
|
||||
|
||||
MIT © [th-ch](https://github.com/th-ch/youtube-music)
|
||||
|
||||
## Preguntas frecuentes
|
||||
|
||||
### ¿Por qué no se muestra el menú de aplicaciones?
|
||||
|
||||
Si la opción `Ocultar menú` está activada - puedes mostrar el menú con la tecla <kbd>alt</kbd> (o <kbd>\`</kbd> [acento grave] si estás utilizando el plugin in-app-menu)
|
||||
389
docs/readme/README-fr.md
Normal file
@ -0,0 +1,389 @@
|
||||
<div align="center">
|
||||
|
||||
# YouTube Music
|
||||
|
||||
[](https://github.com/th-ch/youtube-music/releases/)
|
||||
[](https://github.com/th-ch/youtube-music/blob/master/license)
|
||||
[](https://github.com/th-ch/youtube-music/blob/master/.eslintrc.js)
|
||||
[](https://GitHub.com/th-ch/youtube-music/releases/)
|
||||
[](https://GitHub.com/th-ch/youtube-music/releases/)
|
||||
[](https://aur.archlinux.org/packages/youtube-music-bin)
|
||||
[](https://snyk.io/test/github/th-ch/youtube-music)
|
||||
|
||||
</div>
|
||||
|
||||

|
||||
|
||||
|
||||
<div align="center">
|
||||
<a href="https://github.com/th-ch/youtube-music/releases/latest">
|
||||
<img src="https://github.com/th-ch/youtube-music/raw/master/web/youtube-music.svg" width="400" height="100" alt="SVG YouTube Music">
|
||||
</a>
|
||||
</div>
|
||||
|
||||
Lisez ceci dans d'autres langues: [🏴 Anglais](../../README.md), [🇰🇷 Coréen](./README-ko.md), [🇫🇷 Français](./README-fr.md), [🇮🇸 Islandais](./README-is.md), [🇪🇸 Espagnol](./README-es.md), [🇷🇺 Russe](./README-ru.md), [🇧🇷 Portugais](./README-pt.md), [🇯🇵 Japonais](./README-ja.md)
|
||||
|
||||
**Enveloppe Electron autour de YouTube Music offrant :**
|
||||
|
||||
- Aspect & sensation naturels, vise à conserver l'interface originale
|
||||
- Cadre pour les plugins personnalisés : modifiez YouTube Music selon vos besoins (style, contenu, fonctionnalités), activez/désactivez les plugins en
|
||||
un clic
|
||||
|
||||
## Image de démonstration
|
||||
|
||||
| Écran du lecteur (thème de couleur de l'album & lumière ambiante) |
|
||||
|:---------------------------------------------------------------------------------------------------------:|
|
||||
||
|
||||
|
||||
## Contenu
|
||||
|
||||
- [Fonctionnalités](#fonctionnalités)
|
||||
- [Plugins disponibles](#plugins-disponibles)
|
||||
- [Traduction](#traduction)
|
||||
- [Téléchargement](#téléchargement)
|
||||
- [Arch Linux](#arch-linux)
|
||||
- [MacOS](#macos)
|
||||
- [Windows](#windows)
|
||||
- [Comment installer sans connexion réseau ? (sous Windows)](#comment-installer-sans-connexion-réseau-sous-windows)
|
||||
- [Thèmes](#thèmes)
|
||||
- [Dev](#dev)
|
||||
- [Créez vos propres plugins](#créez-vos-propres-plugins)
|
||||
- [Créer un plugin](#créer-un-plugin)
|
||||
- [Cas d'utilisation courants](#cas-dutilisation-courants)
|
||||
- [Construction](#construction)
|
||||
- [Aperçu de la production](#aperçu-de-la-production)
|
||||
- [Tests](#tests)
|
||||
- [Licence](#licence)
|
||||
- [FAQ](#faq)
|
||||
|
||||
## Fonctionnalités :
|
||||
|
||||
- **Confirmation automatique lors de la pause** (Toujours activé) : désactiver
|
||||
la pop-up ["Continuer à regarder ?"](https://user-images.githubusercontent.com/61631665/129977894-01c60740-7ec6-4bf0-9a2c-25da24491b0e.png)
|
||||
qui pause la musique après un certain temps
|
||||
|
||||
- Et plus encore ...
|
||||
|
||||
## Plugins disponibles :
|
||||
|
||||
- **Bloqueur de publicités** : Bloquez toutes les publicités et le suivi dès le départ
|
||||
|
||||
- **Actions d'album** : Ajoute des boutons Je n'aime pas, Dislike, J'aime, et Unlike pour appliquer cela à toutes les chansons dans une playlist ou un album
|
||||
|
||||
- **Thème de couleur d'album** : Applique un thème dynamique et des effets visuels basés sur la palette de couleurs de l'album
|
||||
|
||||
- **Mode Ambiant** : Applique un effet d'éclairage en projetant des couleurs douces de la vidéo, sur l'arrière-plan de votre écran
|
||||
|
||||
- **Compresseur Audio** : Appliquer une compression audio (diminue le volume des parties les plus fortes du signal et augmente le
|
||||
volume des parties les plus douces)
|
||||
|
||||
- **Barre de navigation floue** : rend la barre de navigation transparente et floue
|
||||
|
||||
- **Contournement des restrictions d'âge** : contourner la vérification d'âge de YouTube
|
||||
|
||||
- **Sélecteur de sous-titres** : Activer les sous-titres
|
||||
|
||||
- **Barre latérale compacte** : Toujours définir la barre latérale en mode compact
|
||||
|
||||
- **Fondu enchaîné** : Fondu enchaîné entre les chansons
|
||||
|
||||
- **Désactiver la lecture automatique** : Fait démarrer chaque chanson en mode "pause"
|
||||
|
||||
- **[Discord](https://discord.com/) Présence riche** : Montrez à vos amis ce que vous écoutez
|
||||
avec [Présence riche](https://user-images.githubusercontent.com/28219076/104362104-a7a0b980-5513-11eb-9744-bb89eabe0016.png)
|
||||
|
||||
- **Téléchargeur** : télécharge des
|
||||
MP3 [directement depuis l'interface](https://user-images.githubusercontent.com/61631665/129977677-83a7d067-c192-45e1-98ae-b5a4927393be.png) [(youtube-dl)](https://github.com/ytdl-org/youtube-dl)
|
||||
|
||||
- **Volume exponentiel** : Rend le curseur de volume
|
||||
[exponentiel](https://greasyfork.org/en/scripts/397686-youtube-music-fix-volume-ratio/) afin qu'il soit plus facile de
|
||||
sélectionner des volumes plus bas
|
||||
|
||||
- **Menu In-App** : [donne aux barres un aspect chic et sombre](https://user-images.githubusercontent.com/78568641/112215894-923dbf00-8c29-11eb-95c3-3ce15db27eca.png)
|
||||
|
||||
> (voir [ce poste](https://github.com/th-ch/youtube-music/issues/410#issuecomment-952060709) si vous avez des problèmes
|
||||
pour accéder au menu après avoir activé ce plugin et l'option masquer-menu)
|
||||
|
||||
- **Scrobbler** : Ajoute le support de scrobbling pour [Last.fm](https://www.last.fm/) et [ListenBrainz](https://listenbrainz.org/)
|
||||
|
||||
- **Lumia Stream** : Ajoute le support de [Lumia Stream](https://lumiastream.com/)
|
||||
|
||||
- **Lyrics Genius** : Ajoute le support des paroles pour la plupart des chansons
|
||||
|
||||
- **Musique Ensemble** : Partagez une playlist avec d'autres. Lorsque l'hôte joue une chanson, tout le monde entendra la même chanson
|
||||
|
||||
- **Navigation** : Flèches de navigation Suivant/Retour directement intégrées dans l'interface, comme dans votre navigateur préféré
|
||||
|
||||
- **Pas de connexion Google** : Supprime les boutons et les liens de connexion Google de l'interface
|
||||
|
||||
- **Notifications** : Affiche une notification lorsqu'une chanson commence à jouer ([notifications interactives](https://user-images.githubusercontent.com/78568641/114102651-63ce0e00-98d0-11eb-9dfe-c5a02bb54f9c.png)
|
||||
sont disponibles sur Windows)
|
||||
|
||||
- **Image dans l'image** : permet de passer l'application en mode image dans l'image
|
||||
|
||||
- **Vitesse de lecture** : Écoutez rapidement, écoutez lentement ! [Ajoute un curseur qui contrôle la vitesse des chansons](https://user-images.githubusercontent.com/61631665/129976003-e55db5ba-bf42-448c-a059-26a009775e68.png)
|
||||
|
||||
- **Volume précis** : Contrôlez le volume précisément en utilisant la molette de la souris/raccourcis clavier, avec un hud personnalisé et des étapes de volume personnalisables
|
||||
|
||||
- **Raccourcis (& MPRIS)** : Permet de définir des raccourcis globaux pour la lecture (lecture/pause/suivant/précédent) +
|
||||
désactive [osd média](https://user-images.githubusercontent.com/84923831/128601225-afa38c1f-dea8-4209-9f72-0f84c1dd8b54.png)
|
||||
en remplaçant les touches multimédias + activer Ctrl/CMD + F pour rechercher + activer le support mpris linux pour
|
||||
les touches multimédias + [raccourcis personnalisés](https://github.com/Araxeus/youtube-music/blob/1e591d6a3df98449bcda6e63baab249b28026148/providers/song-controls.js#L13-L50)
|
||||
pour [utilisateurs avancés](https://github.com/th-ch/youtube-music/issues/106#issuecomment-952156902)
|
||||
|
||||
- **Passer la chanson non aimée** : passe les chansons non aimées
|
||||
|
||||
- **Passer les silences** : passe automatiquement les sections silencieuses
|
||||
|
||||
- [**SponsorBlock**](https://github.com/ajayyy/SponsorBlock) : Saute automatiquement les parties non musicales comme les intros/outros ou
|
||||
les parties des clips vidéo où la chanson n'est pas jouée
|
||||
|
||||
- **Contrôle multimédia de la barre des tâches** : Contrôlez la lecture depuis
|
||||
votre [barre des tâches Windows](https://user-images.githubusercontent.com/78568641/111916130-24a35e80-8a82-11eb-80c8-5021c1aa27f4.png)
|
||||
|
||||
- **TouchBar** : Disposition personnalisée de la TouchBar pour macOS
|
||||
|
||||
- **Tuna OBS** : Intégration avec le
|
||||
plugin [Tuna](https://obsproject.com/forum/resources/tuna.843/) d'[OBS](https://obsproject.com/)
|
||||
|
||||
- **Changeur de qualité vidéo** : Permet de changer la qualité vidéo avec
|
||||
un [bouton](https://user-images.githubusercontent.com/78568641/138574366-70324a5e-2d64-4f6a-acdd-dc2a2b9cecc5.png) sur
|
||||
l'overlay vidéo
|
||||
|
||||
- **Bascule vidéo** : Ajoute
|
||||
un [bouton](https://user-images.githubusercontent.com/28893833/173663950-63e6610e-a532-49b7-9afa-54cb57ddfc15.png) pour
|
||||
basculer entre le mode Vidéo/Chanson. peut également supprimer l'onglet vidéo entier
|
||||
|
||||
- **Visualiseur** : Différents visualiseurs musicaux
|
||||
|
||||
## Traduction
|
||||
|
||||
Vous pouvez aider à la traduction sur [Hosted Weblate](https://hosted.weblate.org/projects/youtube-music/).
|
||||
|
||||
<a href="https://hosted.weblate.org/engage/youtube-music/">
|
||||
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/multi-auto.svg" alt="statut de la traduction" />
|
||||
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/287x66-black.png" alt="statut de la traduction 2" />
|
||||
</a>
|
||||
|
||||
## Téléchargement
|
||||
|
||||
Vous pouvez consulter la [dernière sortie](https://github.com/th-ch/youtube-music/releases/latest) pour trouver rapidement la
|
||||
dernière version.
|
||||
|
||||
### Arch Linux
|
||||
|
||||
Installez le paquet [`youtube-music-bin`](https://aur.archlinux.org/packages/youtube-music-bin) depuis l'AUR. Pour les instructions d'installation de l'AUR, consultez
|
||||
cette [page wiki](https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages).
|
||||
|
||||
### MacOS
|
||||
|
||||
Vous pouvez installer l'application en utilisant Homebrew (voir la [définition du fût](https://github.com/th-ch/homebrew-youtube-music)) :
|
||||
|
||||
```bash
|
||||
brew install th-ch/youtube-music/youtube-music
|
||||
```
|
||||
|
||||
Si vous installez l'application manuellement et obtenez une erreur "est endommagé et ne peut pas être ouvert." lors du lancement de l'application, exécutez ce qui suit dans le Terminal :
|
||||
|
||||
```bash
|
||||
/usr/bin/xattr -cr /Applications/YouTube\ Music.app
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
||||
Vous pouvez utiliser le [gestionnaire de paquets Scoop](https://scoop.sh) pour installer le paquet `youtube-music` depuis le [seau `extras`](https://github.com/ScoopInstaller/Extras).
|
||||
|
||||
```bash
|
||||
scoop bucket add extras
|
||||
scoop install extras/youtube-music
|
||||
```
|
||||
|
||||
Alternativement, vous pouvez utiliser [Winget](https://learn.microsoft.com/fr-fr/windows/package-manager/winget/), le gestionnaire de paquets CLI officiel de Windows 11, pour installer le paquet `th-ch.YouTubeMusic`.
|
||||
|
||||
*Note : Microsoft Defender SmartScreen pourrait bloquer l'installation car elle provient d'un "éditeur inconnu". Ceci est également vrai pour l'installation manuelle lors de l'essai d'exécution de l'exécutable (.exe) après un téléchargement manuel ici sur GitHub (même fichier).*
|
||||
|
||||
```bash
|
||||
winget install th-ch.YouTubeMusic
|
||||
```
|
||||
|
||||
#### Comment installer sans connexion réseau ? (sous Windows)
|
||||
|
||||
- Téléchargez le fichier `*.nsis.7z` pour _l'architecture de votre appareil_ sur la [page des versions](https://github.com/th-ch/youtube-music/releases/latest).
|
||||
- `x64` pour Windows 64 bits
|
||||
- `ia32` pour Windows 32 bits
|
||||
- `arm64` pour Windows ARM64
|
||||
- Téléchargez l'installeur sur la page des versions. (`*-Setup.exe`)
|
||||
- Placez-les dans le **même dossier**.
|
||||
- Exécutez l'installeur.
|
||||
|
||||
## Thèmes
|
||||
|
||||
Vous pouvez charger des fichiers CSS pour changer l'apparence de l'application (Options > Ajustements visuels > Thèmes).
|
||||
|
||||
Certains thèmes prédéfinis sont disponibles sur [https://github.com/kerichdev/themes-for-ytmdesktop-player](https://github.com/kerichdev/themes-for-ytmdesktop-player).
|
||||
|
||||
## Dev
|
||||
|
||||
```bash
|
||||
git clone https://github.com/th-ch/youtube-music
|
||||
cd youtube-music
|
||||
pnpm install --frozen-lockfile
|
||||
pnpm dev
|
||||
```
|
||||
## Créez vos propres plugins
|
||||
|
||||
En utilisant des plugins, vous pouvez :
|
||||
|
||||
- manipuler l'application - la `BrowserWindow` d'Electron est passée au gestionnaire de plugin
|
||||
- changer le front en manipulant le HTML/CSS
|
||||
|
||||
### Créer un plugin
|
||||
|
||||
Créez un dossier dans `src/plugins/NOM-DE-VOTRE-PLUGIN` :
|
||||
|
||||
- `index.ts` : le fichier principal du plugin
|
||||
```typescript
|
||||
import style from './style.css?inline'; // importez le style comme inline
|
||||
|
||||
import { createPlugin } from '@/utils';
|
||||
|
||||
export default createPlugin({
|
||||
name: 'Étiquette du plugin',
|
||||
restartNeeded: true, // si la valeur est vraie, ytmusic affichera la boîte de dialogue de redémarrage
|
||||
config: {
|
||||
enabled: false,
|
||||
}, // votre configuration personnalisée
|
||||
stylesheets: [style], // votre style personnalisé,
|
||||
menu: async ({ getConfig, setConfig }) => {
|
||||
// Toutes les méthodes *Config sont des promesses encapsulées <T>
|
||||
const config = await getConfig();
|
||||
return [
|
||||
{
|
||||
label: 'menu',
|
||||
submenu: [1, 2, 3].map((value) => ({
|
||||
label: `valeur ${value}`,
|
||||
type: 'radio',
|
||||
checked: config.value === value,
|
||||
click() {
|
||||
setConfig({ value });
|
||||
},
|
||||
})),
|
||||
},
|
||||
];
|
||||
},
|
||||
backend: {
|
||||
start({ window, ipc }) {
|
||||
window.maximize();
|
||||
|
||||
// vous pouvez communiquer avec le plugin du rendu
|
||||
ipc.handle('un événement', () => {
|
||||
return 'bonjour';
|
||||
});
|
||||
},
|
||||
// il est déclenché lorsque la configuration change
|
||||
onConfigChange(newConfig) { /* ... */ },
|
||||
// il est déclenché lorsque le plugin est désactivé
|
||||
stop(context) { /* ... */ },
|
||||
},
|
||||
renderer: {
|
||||
async start(context) {
|
||||
console.log(await context.ipc.invoke('un événement'));
|
||||
},
|
||||
// Seul le crochet disponible pour le rendu
|
||||
onPlayerApiReady(api: YoutubePlayer, context: RendererContext) {
|
||||
// définir facilement la configuration du plugin
|
||||
context.setConfig({ myConfig: api.getVolume() });
|
||||
},
|
||||
onConfigChange(newConfig) { /* ... */ },
|
||||
stop(_context) { /* ... */ },
|
||||
},
|
||||
preload: {
|
||||
async start({ getConfig }) {
|
||||
const config is obtained by `getConfig` method.
|
||||
},
|
||||
onConfigChange(newConfig) {},
|
||||
stop(_context) {},
|
||||
},
|
||||
});
|
||||
|
||||
```
|
||||
|
||||
### Cas d'utilisation courants
|
||||
|
||||
- **Injection de CSS personnalisé** : créez un fichier `style.css` dans le même dossier puis :
|
||||
|
||||
```typescript
|
||||
// index.ts
|
||||
import style from './style.css?inline'; // importez le style comme en ligne
|
||||
|
||||
import { createPlugin } from '@/utils';
|
||||
|
||||
export default createPlugin({
|
||||
name: 'Étiquette du plugin',
|
||||
restartNeeded: true, // si la valeur est vraie, ytmusic affichera la boîte de dialogue de redémarrage
|
||||
config: {
|
||||
enabled: false,
|
||||
}, // votre configuration personnalisée
|
||||
stylesheets: [style], // votre style personnalisé
|
||||
renderer() {} // définissez le crochet de rendu
|
||||
});
|
||||
```
|
||||
|
||||
- **Si vous voulez modifier le HTML** :
|
||||
|
||||
```typescript
|
||||
import { createPlugin } from '@/utils';
|
||||
|
||||
export default createPlugin({
|
||||
name: 'Étiquette du plugin',
|
||||
restartNeeded: true, // si la valeur est vraie, ytmusic affichera la boîte de dialogue de redémarrage
|
||||
config: {
|
||||
enabled: false,
|
||||
}, // votre configuration personnalisée
|
||||
renderer() {
|
||||
// Supprimez le bouton de connexion
|
||||
document.querySelector(".sign-in-link.ytmusic-nav-bar").remove();
|
||||
} // définissez le crochet de rendu
|
||||
});
|
||||
|
||||
```
|
||||
|
||||
- **Communication entre le front et le back** : cela peut se faire en utilisant le module ipcMain d'Electron. Voir le fichier `index.ts` et l'exemple dans le plugin `sponsorblock`.
|
||||
|
||||
## Construction
|
||||
|
||||
1. Clonez le dépôt
|
||||
2. Suivez [ce guide](https://pnpm.io/installation) pour installer `pnpm`
|
||||
3. Exécutez `pnpm install --frozen-lockfile` pour installer les dépendances
|
||||
4. Exécutez `pnpm build:OS`
|
||||
|
||||
- `pnpm dist:win` - pour Windows
|
||||
- `pnpm dist:linux` - pour Linux
|
||||
- `pnpm dist:mac` - pour MacOS
|
||||
|
||||
Construit l'application pour macOS, Linux et Windows,
|
||||
en utilisant [electron-builder](https://github.com/electron-userland/electron-builder).
|
||||
|
||||
## Aperçu de la production
|
||||
|
||||
```bash
|
||||
pnpm start
|
||||
```
|
||||
|
||||
## Tests
|
||||
|
||||
```bash
|
||||
pnpm test
|
||||
```
|
||||
|
||||
Utilise [Playwright](https://playwright.dev/) pour tester l'application.
|
||||
|
||||
## Licence
|
||||
|
||||
MIT © [th-ch](https://github.com/th-ch/youtube-music)
|
||||
|
||||
## FAQ
|
||||
|
||||
### Pourquoi le menu de l'application ne s'affiche-t-il pas ?
|
||||
|
||||
Si l'option `Masquer le menu` est activée - vous pouvez afficher le menu avec la touche <kbd>alt</kbd> (ou <kbd>\`</kbd> [backtick] si vous utilisez le plugin du menu intégré)
|
||||
374
docs/readme/README-hu.md
Normal file
@ -0,0 +1,374 @@
|
||||
<div align="center">
|
||||
|
||||
# YouTube Music
|
||||
|
||||
[](https://github.com/th-ch/youtube-music/releases/)
|
||||
[](https://github.com/th-ch/youtube-music/blob/master/license)
|
||||
[](https://github.com/th-ch/youtube-music/blob/master/eslint.config.mjs)
|
||||
[](https://GitHub.com/th-ch/youtube-music/releases/)
|
||||
[](https://GitHub.com/th-ch/youtube-music/releases/)
|
||||
[](https://aur.archlinux.org/packages/youtube-music-bin)
|
||||
[](https://snyk.io/test/github/th-ch/youtube-music)
|
||||
|
||||
</div>
|
||||
|
||||

|
||||
|
||||
|
||||
<div align="center">
|
||||
<a href="https://github.com/th-ch/youtube-music/releases/latest">
|
||||
<img src="../../web/youtube-music-hu.svg" width="400" height="100" alt="YouTube Music SVG">
|
||||
</a>
|
||||
</div>
|
||||
|
||||
Olvasd el más nyelveken: [🏴 Angol](../../README.md), [🇰🇷 Korea](./README-ko.md), [🇫🇷 Francia](./README-fr.md), [🇮🇸 Izland](./README-is.md), [🇪🇸 Spanyol](./README-es.md), [🇷🇺 Orosz](./README-ru.md), [🇧🇷 Portugál](./README-pt.md), [🇯🇵 Japán](./README-ja.md)
|
||||
|
||||
**Electron keretrendszerre épülő alkalmazás a YouTube Music számára, amely a következőket kínálja:**
|
||||
|
||||
- Natív megjelenés és élmény, amely az eredeti felület megtartására törekszik
|
||||
- Egyedi bővítmények keretrendszere: alakítsd át a YouTube Music-ot igényeid szerint (stílus, tartalom, funkciók), engedélyezd/tiltsd le a bővítményeket egy kattintással
|
||||
|
||||
## Bemutató kép
|
||||
|
||||
| Lejátszó ablak (album színtéma és környezeti fény) |
|
||||
|:---------------------------------------------------------------------------------------------------------:|
|
||||
||
|
||||
|
||||
## Tartalom
|
||||
|
||||
- [Funkciók](#Funkciók)
|
||||
- [Elérhető bővítmények](#Elérhető-bővítmények)
|
||||
- [Fordítás](#Fordítás)
|
||||
- [Letöltés](#Letöltés)
|
||||
- [Arch Linux](#arch-linux)
|
||||
- [MacOS](#macos)
|
||||
- [Windows](#windows)
|
||||
- [Hogyan telepítsük hálózati kapcsolat nélkül? (Windows alatt)](#Hogyan-telepítsd-hálózati-kapcsolat-nélkül-Windows)
|
||||
- [Témák](#Témák)
|
||||
- [Fejlesztés](#Fejlesztés)
|
||||
- [Saját bővítmények készítése](#Saját-bővítmények-készítése)
|
||||
- [Bővítmény létrehozása](#Bővítmény-létrehozása)
|
||||
- [Gyakori használati esetek](#Gyakori-használati-esetek)
|
||||
- [Build](#build)
|
||||
- [Gyártás előnézete](#Gyártás-előnézete)
|
||||
- [Tesztelés](#Tesztelés)
|
||||
- [Licenc](#Licenc)
|
||||
- [GYIK](#GYIK)
|
||||
|
||||
## Funkciók:
|
||||
|
||||
- **Automatikus megerősítés a lejátszás szüneteltetésekor** (Alapból engedélyezve): Kikapcsolja a ["Folytatja a nézést?"](https://i.imgur.com/z2mG0QN.png)
|
||||
felugró ablakot, amely bizonyos idő után leállítja a zenét.
|
||||
|
||||
- És még sok más ...
|
||||
|
||||
## Elérhető bővítmények:
|
||||
|
||||
- **Reklámblokkoló**: Blokkolja az összes hirdetést és nyomkövetőt.
|
||||
|
||||
- **Album műveletek**: Dislike, Undislike, Like, Unlike gombok hozzáadása, amivel ezt a lejátszási listán vagy albumban lévő összes dalra alkalmazza.
|
||||
|
||||
- **Album színtéma**: Dinamikus téma és vizuális effektek alkalmazása az album színpalettája alapján.
|
||||
|
||||
- **Ambient mód**: Fényhatás alkalmazása a videóból származó lágy színek vetítésével a képernyő hátterére.
|
||||
|
||||
- **Hangtömörítő**: Hang tömörítés alkalmazása. (csökkenti a jel legzajosabb részeinek hangerősségét, és emeli a legcsendesebb részek hangerősségét)
|
||||
|
||||
- **Navigációs sáv elmosása**: Átlátszóvá és elmosódottá teszi a navigációs sávot.
|
||||
|
||||
- **Korellenőrzés kihagyása**: A YouTube korellenőrzését kihagyja, ezáltal nem kel meg erősíteni a zene meghallgatása elött. (automatikusan megerősítve lesz)
|
||||
|
||||
- **Feliratválasztó**: Felirat választó a YouTube Music zenékhez.
|
||||
|
||||
- **Kompakt oldalsáv**: Mindig becsukva tartja a bal oldali sávot, ahol a Kezdőlap, Felfedezés, Könyvtár és egyebek láthatók. (amit bármikor ki lehet nyitni)
|
||||
|
||||
- **Áttünés**: Áttünést biztosít a dalok között, ami folytonossá teszi a zenehallgatást anélkül, hogy érezhető lenne a váltás.
|
||||
|
||||
- **Automatikus lejátszás letiltása**: Ez a funkció kikapcsolja az automatikus lejátszást, így a zenék nem indulnak el maguktól. Amikor egy album vagy egy dal lejátszása véget ér, a következő szám nem kezdődik el automatikusan. (a bővítmény használata során minden zenét manuálisan kell elindítani)
|
||||
|
||||
- **[Discord](https://discord.com/) Rich Presence**: Mutassa meg barátainak, hogy mit hallgat a [Rich Presence](https://i.imgur.com/nCeVQB2.png) segítségével. (Ehez a Discord-on is engedélyezve kel lennie a Tevékenységállapot megosztásának [DC Beállítások -> Tevékenyég-adatvédelem -> Megoszthatod az észlelt tevékenységeidet másokkal])
|
||||
|
||||
- **Letöltő**: MP3/forrás hanganyag letöltése [közvetlenül az interfészről](https://i.imgur.com/ghqBNVe.png). [(youtube-dl)](https://github.com/ytdl-org/youtube-dl)
|
||||
|
||||
- **Hangszínszabályzó**: Szűrőket ad hozzá, hogy erősítsd vagy csökkentsd bizonyos frekvenciatartományokat. (pl. basszuskiemelés)
|
||||
|
||||
- **Exponenciális hangerő**: A hangerő csúszka [exponenciálissá](https://greasyfork.org/en/scripts/397686-youtube-music-fix-volume-ratio/) tételével könnyebbé válik az alacsony hangerő kiválasztása.
|
||||
|
||||
- **Alkalmazáson belüli menü**: [A Menüsáv stílusos, sötét vagy album-színű megjelenítése](https://i.imgur.com/vWvO7Xt.png).
|
||||
|
||||
> (Lásd ezt a [bejegyzést](https://github.com/th-ch/youtube-music/issues/410#issuecomment-952060709), ha problémád van a menü elérésével, miután engedélyezted ezt a bővítményt és a "menü elrejtése" opciót.
|
||||
|
||||
- **Scrobbler**: Scrobbling támogatást biztosít [Last.fm](https://www.last.fm/) és [ListenBrainz](https://listenbrainz.org/) számára.
|
||||
|
||||
- **Lumia Stream**: [Lumia Stream](https://lumiastream.com/) támogatás hozzáadása.
|
||||
|
||||
- **Lyrics Genius**: Dalszöveg támogatást nyújt a legtöbb dalhoz.
|
||||
|
||||
- **Zene együtt**: Lehetővé teszi a lejátszási listák, dalok megosztását másokkal. Amikor a házigazda lejátszik egy dalt, mindenki ugyanazt a dalt fogja hallani.
|
||||
|
||||
- **Navigáció**: Következő/Vissza navigációs nyilak közvetlenül az interfészbe integrálva, mint a kedvenc böngésződben.
|
||||
|
||||
- **Nincs Google bejelentkezés**: A Bejelentkezés gomb eltávolítása az interfészről (Jobb fentről eltünik a bejelentkezés gomb.)
|
||||
|
||||
- **Értesítések**: Értesítés megjelenítése, amikor egy dal elindul. ([interaktív értesítések](https://user-images.githubusercontent.com/78568641/114102651-63ce0e00-98d0-11eb-9dfe-c5a02bb54f9c.png) elérhetők Windows-on)
|
||||
|
||||
- **Kép a képben**: Lehetővé teszi az alkalmazás kép a képben módra váltását.
|
||||
|
||||
- **Lejátszás sebessége**: Hallgassd gyorsan, hallgassd lassan! [Hozzáad egy csúszkát, amely szabályozza a dal sebességét](https://i.imgur.com/uaNOWOt.png)
|
||||
|
||||
- **Precíz hangerő**: A hangerő precíz szabályozása egérgörgővel/gyorsbillentyűkkel, egy egyedi HUD és testreszabható hangerő csuszka segítségével.
|
||||
|
||||
- **Gyorsbillentyűk (& MPRIS)**: Lehetővé teszi globális gyorsbillentyűk beállítását a lejátszáshoz (lejátszás/szünet/következő/előző), valamint a [média OSD](https://i.imgur.com/o13SpAE.png) kikapcsolását a médiagombok felülírásával. Bekapcsolja a Ctrl/CMD + F billentyűkombinációt a kereséshez, a Linux MPRIS támogatását a médiagombokhoz, és [egyedi gyorsbillentyűket](https://github.com/Araxeus/youtube-music/blob/1e591d6a3df98449bcda6e63baab249b28026148/providers/song-controls.js#L13-L50) a [haladó felhasználók](https://github.com/th-ch/youtube-music/issues/106#issuecomment-952156902) számára.
|
||||
|
||||
- **Nem kedvelt dal kihagyása**: Kihagyja a nem kedvelt dalokat.
|
||||
|
||||
- **Csend kihagyása**: Automatikusan átugorja a csendes szakaszokat.
|
||||
|
||||
- [**SzponzorBlokk**](https://github.com/ajayyy/SponsorBlock): Automatikusan átugorja a nem zenei részeket, például az intrókat/outrokat vagy a zenei videók azon részeit, ahol a dal nem szól.
|
||||
|
||||
- **Szinkronizált dalszövegek**: Szinkronizált dalszövegeket biztosít dalokhoz, [LRClib](https://lrclib.net)-hez hasonló szolgáltatókat használva.
|
||||
|
||||
- **Médiavezérlés a tálcán**: Lejátszás vezérlése a [Windows tálcáról](https://i.imgur.com/eolQfnA.png).
|
||||
|
||||
- **TouchBar**: Egyedi TouchBar elrendezés macOS-hoz.
|
||||
|
||||
- **Tuna OBS**: Integráció az [OBS](https://obsproject.com/) [Tuna](https://obsproject.com/forum/resources/tuna.843/) pluginjával.
|
||||
|
||||
- **Videóminőség modosító**: Lehetővé teszi a videó minőségének megváltoztatását egy [gombbal](https://i.imgur.com/UgpgtHL.png) a videó fedvényen.
|
||||
|
||||
- **Videó váltó**: Hozzáad egy [gombot](https://i.imgur.com/288QE1k.png) a Videó/Dal mód közötti váltáshoz. (opcionálisan teljesen eltávolíthatja a videó fület is)
|
||||
|
||||
- **Vizualizáció**: Különböző zenei vizualizációk.
|
||||
|
||||
|
||||
## Fordítás
|
||||
|
||||
Segíthetsz a fordításban a [Hosted Weblate](https://hosted.weblate.org/projects/youtube-music/) oldalán.
|
||||
|
||||
<a href="https://hosted.weblate.org/engage/youtube-music/">
|
||||
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/multi-auto.svg" alt="Fordítás állapota" />
|
||||
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/287x66-black.png" alt="Fordítás állapota" />
|
||||
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/hu/287x66-white.png" alt="Fordítás állapota" />
|
||||
</a>
|
||||
|
||||
## Letöltés
|
||||
|
||||
A [legfrissebb kiadás](https://github.com/th-ch/youtube-music/releases/latest) megtekintésével gyorsan megtalálhatod a legújabb verziót.
|
||||
|
||||
### Arch Linux
|
||||
|
||||
Telepítsd a [`youtube-music-bin`](https://aur.archlinux.org/packages/youtube-music-bin) csomagot az AUR-ból. Az AUR telepítési útmutatóját megtalálod ezen a [wiki oldalon](https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages).
|
||||
|
||||
### macOS
|
||||
|
||||
Telepítheted az alkalmazást Homebrew segítségével (lásd a [cask definíciót](https://github.com/th-ch/homebrew-youtube-music)):
|
||||
|
||||
```bash
|
||||
brew install th-ch/youtube-music/youtube-music
|
||||
```
|
||||
|
||||
Ha manuálisan telepítetted az alkalmazást, és a következő hibát kapod indításkor: "sérült, és nem nyitható meg./is damaged and can’t be opened.", futtasd az alábbi parancsot a Terminálban:
|
||||
|
||||
```bash
|
||||
/usr/bin/xattr -cr /Applications/YouTube\ Music.app
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
||||
A [Scoop csomagkezelő](https://scoop.sh) segítségével telepítheted a `youtube-music` csomagot az [`extras` tárolóból](https://github.com/ScoopInstaller/Extras).
|
||||
|
||||
```bash
|
||||
scoop bucket add extras
|
||||
scoop install extras/youtube-music
|
||||
```
|
||||
|
||||
Alternatívaként használhatod a [Winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/) eszközt, a Windows 11 hivatalos CLI csomagkezelőjét, hogy telepítsd a `th-ch.YouTubeMusic` csomagot.
|
||||
|
||||
*Megjegyzés: A Microsoft Defender SmartScreen figyelmeztethet vagy blokkolhatja a telepítést, mivel az alkalmazás "ismeretlen kiadótól" származik. Ez a figyelmeztetés akkor is megjelenhet, ha manuálisan töltöd le és próbálod futtatni a GitHubról letöltött (.exe) fájlt. Ebben az esetben kattints a "További információ" gombra, majd válaszd a "Futtatás mindenképp" opciót a telepítés folytatásához.*
|
||||
|
||||
```bash
|
||||
winget install th-ch.YouTubeMusic
|
||||
```
|
||||
|
||||
#### Hogyan telepítsd hálózati kapcsolat nélkül? (Windows)
|
||||
|
||||
- Töltsd le a `*.nsis.7z` fájlt a [kiadás oldal](https://github.com/th-ch/youtube-music/releases/latest)ról, amely megfelel az eszközöd architektúrájának:
|
||||
- `x64` 64 bites Windows-hoz
|
||||
- `ia32` 32 bites Windows-hoz
|
||||
- `arm64` ARM64 Windows-hoz
|
||||
- Töltsd le a telepítőt a [kiadás oldal](https://github.com/th-ch/youtube-music/releases/latest)ról. (`*-Setup.exe`)
|
||||
- Helyezd mindkét fájlt **ugyanabba a könyvtárba**.
|
||||
- Futtasd a telepítőt.
|
||||
|
||||
## Témák
|
||||
|
||||
CSS fájlokat tölthetsz be az alkalmazás megjelenésének megváltoztatásához. (Beállítások > Kinézeti beállítások > Téma)
|
||||
|
||||
Néhány előre definiált téma elérhető itt: https://github.com/kerichdev/themes-for-ytmdesktop-player.
|
||||
|
||||
## Fejlesztés
|
||||
|
||||
```bash
|
||||
git clone https://github.com/th-ch/youtube-music
|
||||
cd youtube-music
|
||||
pnpm install --frozen-lockfile
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
## Saját bővítmények készítése
|
||||
|
||||
A bővítmények segítségével a következőket teheted:
|
||||
|
||||
- Az alkalmazás manipulálása: Az Electron `BrowserWindow` objektuma átadásra kerül a bővítménykezelőnek.
|
||||
- Az interfész módosítása: HTML és CSS manipulációval megváltoztathatod az alkalmazás kinézetét.
|
||||
|
||||
### Bővítmény létrehozása
|
||||
|
||||
Hozz létre egy mappát a `src/plugins/YOUR-PLUGIN-NAME` útvonalon:
|
||||
|
||||
- `index.ts`: a bővítmény fő fájlja
|
||||
```typescript
|
||||
import style from './style.css?inline'; // import style as inline
|
||||
|
||||
import { createPlugin } from '@/utils';
|
||||
|
||||
export default createPlugin({
|
||||
name: 'Plugin Label',
|
||||
restartNeeded: true, // if value is true, ytmusic show restart dialog
|
||||
config: {
|
||||
enabled: false,
|
||||
}, // your custom config
|
||||
stylesheets: [style], // your custom style,
|
||||
menu: async ({ getConfig, setConfig }) => {
|
||||
// All *Config methods are wrapped Promise<T>
|
||||
const config = await getConfig();
|
||||
return [
|
||||
{
|
||||
label: 'menu',
|
||||
submenu: [1, 2, 3].map((value) => ({
|
||||
label: `value ${value}`,
|
||||
type: 'radio',
|
||||
checked: config.value === value,
|
||||
click() {
|
||||
setConfig({ value });
|
||||
},
|
||||
})),
|
||||
},
|
||||
];
|
||||
},
|
||||
backend: {
|
||||
start({ window, ipc }) {
|
||||
window.maximize();
|
||||
|
||||
// you can communicate with renderer plugin
|
||||
ipc.handle('some-event', () => {
|
||||
return 'hello';
|
||||
});
|
||||
},
|
||||
// it fired when config changed
|
||||
onConfigChange(newConfig) { /* ... */ },
|
||||
// it fired when plugin disabled
|
||||
stop(context) { /* ... */ },
|
||||
},
|
||||
renderer: {
|
||||
async start(context) {
|
||||
console.log(await context.ipc.invoke('some-event'));
|
||||
},
|
||||
// Only renderer available hook
|
||||
onPlayerApiReady(api: YoutubePlayer, context: RendererContext) {
|
||||
// set plugin config easily
|
||||
context.setConfig({ myConfig: api.getVolume() });
|
||||
},
|
||||
onConfigChange(newConfig) { /* ... */ },
|
||||
stop(_context) { /* ... */ },
|
||||
},
|
||||
preload: {
|
||||
async start({ getConfig }) {
|
||||
const config = await getConfig();
|
||||
},
|
||||
onConfigChange(newConfig) {},
|
||||
stop(_context) {},
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
### Gyakori használati esetek
|
||||
|
||||
- Egyedi CSS injektálása: hozz létre egy `style.css` fájlt ugyanabban a mappában, majd:
|
||||
|
||||
```typescript
|
||||
// index.ts
|
||||
import style from './style.css?inline'; // import style as inline
|
||||
|
||||
import { createPlugin } from '@/utils';
|
||||
|
||||
export default createPlugin({
|
||||
name: 'Plugin Label',
|
||||
restartNeeded: true, // if value is true, ytmusic will show a restart dialog
|
||||
config: {
|
||||
enabled: false,
|
||||
}, // your custom config
|
||||
stylesheets: [style], // your custom style
|
||||
renderer() {} // define renderer hook
|
||||
});
|
||||
```
|
||||
|
||||
- Ha módosítani szeretnéd a HTML-t:
|
||||
|
||||
```typescript
|
||||
import { createPlugin } from '@/utils';
|
||||
|
||||
export default createPlugin({
|
||||
name: 'Plugin Label',
|
||||
restartNeeded: true, // if value is true, ytmusic will show the restart dialog
|
||||
config: {
|
||||
enabled: false,
|
||||
}, // your custom config
|
||||
renderer() {
|
||||
// Remove the login button
|
||||
document.querySelector(".sign-in-link.ytmusic-nav-bar").remove();
|
||||
} // define renderer hook
|
||||
});
|
||||
```
|
||||
|
||||
- Az elülső és hátsó rész közötti kommunikáció: Az Electron ipcMain moduljának használatával valósítható meg. Lásd az `index.ts` fájlt és a `sponsorblock` bővítmény példáját.
|
||||
|
||||
## Build
|
||||
|
||||
1. Klónozd a repót
|
||||
2. Kövesd ezt az [útmutatót](https://pnpm.io/installation), hogy telepítsd a `pnpm` csomagkezelőt.
|
||||
3. Futtasd a következő parancsot `pnpm install --frozen-lockfile` a kellékek telepítéséhez.
|
||||
4. Építsd meg az alkalmazást az operációs rendszerednek megfelelő paranccsal: `pnpm build:OS`
|
||||
|
||||
- `pnpm dist:win` - Windows
|
||||
- `pnpm dist:linux` - Linux (amd64)
|
||||
- `pnpm dist:linux:deb-arm64` - Linux (arm64 Debiánhoz)
|
||||
- `pnpm dist:linux:rpm-arm64` - Linux (arm64 Fedorához)
|
||||
- `pnpm dist:mac` - macOS (amd64)
|
||||
- `pnpm dist:mac:arm64` - macOS (arm64)
|
||||
|
||||
Az alkalmazás építéséhez a [electron-builder](https://github.com/electron-userland/electron-builder) eszközt használáld, amely támogatja a macOS, Linux és Windows platformokat.
|
||||
|
||||
## Gyártás előnézete
|
||||
|
||||
```bash
|
||||
pnpm start
|
||||
```
|
||||
|
||||
## Tesztelés
|
||||
|
||||
```bash
|
||||
pnpm test
|
||||
```
|
||||
|
||||
A [Playwright](https://playwright.dev/) tesztelési keretrendszert használd az alkalmazás teszteléséhez.
|
||||
|
||||
## Licenc
|
||||
|
||||
MIT © [th-ch](https://github.com/th-ch/youtube-music)
|
||||
|
||||
## GYIK
|
||||
|
||||
### Miért nem jelenik meg az alkalmazás menüje?
|
||||
|
||||
Ha a `menü elrejtése` opció be van kapcsolva, a menüt az <kbd>alt</kbd> billentyűvel jelenítheted meg (vagy az <kbd>`</kbd> [fordított idézőjel] billentyűvel, ha az alkalmazáson belüli menü bővítményt használod).
|
||||
390
docs/readme/README-is.md
Normal file
@ -0,0 +1,390 @@
|
||||
<div align="center">
|
||||
|
||||
# YouTube Tónlist
|
||||
|
||||
[](https://github.com/th-ch/youtube-music/releases/)
|
||||
[](https://github.com/th-ch/youtube-music/blob/master/license)
|
||||
[](https://github.com/th-ch/youtube-music/blob/master/.eslintrc.js)
|
||||
[](https://GitHub.com/th-ch/youtube-music/releases/)
|
||||
[](https://GitHub.com/th-ch/youtube-music/releases/)
|
||||
[](https://aur.archlinux.org/packages/youtube-music-bin)
|
||||
[](https://snyk.io/test/github/th-ch/youtube-music)
|
||||
|
||||
</div>
|
||||
|
||||

|
||||
|
||||
|
||||
<div align="center">
|
||||
<a href="https://github.com/th-ch/youtube-music/releases/latest">
|
||||
<img src="../../web/youtube-music.svg" width="400" height="100" alt="YouTube Music SVG">
|
||||
</a>
|
||||
</div>
|
||||
|
||||
Lestu þetta á öðrum tungumálum: [🏴 Ensku](../../README.md), [🇰🇷 Kóreska](./README-ko.md), [🇫🇷 Franska](./README-fr.md), [🇮🇸 Íslenskur](./README-is.md), [🇪🇸 Spænska](./README-es.md), [🇷🇺 Rússneska](./README-ru.md), [🇧🇷 Portúgalska](./README-pt.md), [🇯🇵 Japanska](./README-ja.md)
|
||||
|
||||
**Electron umbúðir utan um YouTube Tónlist sem inniheldur:**
|
||||
|
||||
- Innfæddur útlit og tilfinning, miðar að því að halda upprunalegu viðmótinu
|
||||
- Rammi fyrir sérsniðnar tengiforrit: breyttu YouTube Tónlist að þínum þörfum (stíl, efni, eiginleikar), virkjaðu/slökktu á viðbætur í
|
||||
einn smellur
|
||||
|
||||
## Sýnishornsmynd
|
||||
|
||||
| Spilaraskjár (albúmslitaþema & umhverfisljós) |
|
||||
|:---------------------------------------------------------------------------------------------------------:|
|
||||
||
|
||||
|
||||
## Efni
|
||||
|
||||
- [Eiginleikar](#eiginleikar)
|
||||
- [Tiltæk tengiforrit](#tiltæk-tengiforrit)
|
||||
- [Þýðing](#þýðing)
|
||||
- [Sækja](#sækja)
|
||||
- [Arch Linux](#arch-linux)
|
||||
- [MacOS](#macos)
|
||||
- [Windows](#windows)
|
||||
- [Hvernig á að setja upp án nettengingar? (í Windows)](#hvernig-á-að-setja-upp-án-nettengingar-í-windows)
|
||||
- [Þemu](#þemu)
|
||||
- [Þróun](#þróun)
|
||||
- [Búðu til þín eigin viðbætur](#búðu-til-þín-eigin-viðbætur)
|
||||
- [Er að búa til viðbót](#er-að-búa-til-viðbót)
|
||||
- [Algeng notkunartilvik](#algeng-notkunartilvik)
|
||||
- [Byggja](#byggja)
|
||||
- [Framleiðsluforskoðun](#framleiðsluforskoðun)
|
||||
- [Prófanir](#prófanir)
|
||||
- [Leyfi](#leyfi)
|
||||
- [Algengustu spurningar](#algengustu-spurningar)
|
||||
|
||||
## Eiginleikar:
|
||||
|
||||
- **Sjálfvirk staðfesting þegar gert er hlé** (Alltaf virkt): slökkva á
|
||||
["Halda áfram að horfa?"](https://user-images.githubusercontent.com/61631665/129977894-01c60740-7ec6-4bf0-9a2c-25da24491b0e.png)
|
||||
popup sem gerir hlé á tónlist eftir ákveðinn tíma
|
||||
|
||||
- Og meira...
|
||||
|
||||
## Tiltæk tengiforrit:
|
||||
|
||||
- **Auglýsingablokkari**: Lokaðu fyrir allar auglýsingar og rakningar úr kassanum
|
||||
|
||||
- **Albúmsaðgerðir**: Bætir Ódíslika, Mislíkt, Líkt, og Ólíkt til að nota þetta á öll lög á spilunarlista eða albúm
|
||||
|
||||
- **Albúmslitaþema**: Beitir kraftmikið þema og sjónrænum áhrifum sem byggjast á litavali albúmsins
|
||||
|
||||
- **Umhverfishamur**: Beitir lýsingaráhrifum með því að varpa mildum litum úr myndbandinu í bakgrunn skjásins
|
||||
|
||||
- **Hljóðþjöppur**: Notaðu þjöppun á hljóð (lækkar hljóðstyrk háværustu hluta merkis og hækkar hljóðstyrk í mýkstu hlutunum)
|
||||
|
||||
- **Þoka Leiðsagnarstika**: Gerir leiðsögustikuna gagnsæja og óskýrt
|
||||
|
||||
- **Farið Framhjá Aldurstakmörkunum**: Framhjá aldursstaðfestingu YouTube
|
||||
|
||||
- **Yfirskriftarval**: Virkja skjátexta
|
||||
|
||||
- **Fyrirferðarlítillhliðarstika**: Stilltu hliðarstikuna alltaf í þétta stillingu
|
||||
|
||||
- **Krossfæra**: Krossfæra á milli lög
|
||||
|
||||
- **Slökkva á Sjálfvirkri Spilun**: Gerir lag að byrja í "hlé" ham
|
||||
|
||||
- **[Discord](https://discord.com/) Rík Nærveru**: Sýndu vinum þínum hvað þú hlustar á
|
||||
með [Rík Nærveru](https://user-images.githubusercontent.com/28219076/104362104-a7a0b980-5513-11eb-9744-bb89eabe0016.png)
|
||||
|
||||
- **Niðurhalari**: Niðurhalum
|
||||
MP3 [beint úr viðmótinu](https://user-images.githubusercontent.com/61631665/129977677-83a7d067-c192-45e1-98ae-b5a4927393be.png) [(youtube-dl)](https://github.com/ytdl-org/youtube-dl)
|
||||
|
||||
- **Veldibundiðrúmmál**: Gerir hljóðstyrkssleðann [veldisvísis](https://greasyfork.org/en/scripts/397686-youtube-music-fix-volume-ratio/)
|
||||
svo það er auðveldara að velja lægra hljóðstyrk.
|
||||
|
||||
- **Valmynd í Forriti**: [Gefur börum flott, dökkt útlit](https://user-images.githubusercontent.com/78568641/112215894-923dbf00-8c29-11eb-95c3-3ce15db27eca.png)
|
||||
|
||||
> (sjá [þessa færslu](https://github.com/th-ch/youtube-music/issues/410#issuecomment-952060709) ef þú átt í vandræðum
|
||||
með að fá aðgang að valmyndinni eftir að hafa virkjað þessa viðbót og fela valmyndarvalkostinn)
|
||||
|
||||
- **Scrobbler**: Bætir við scrobbling stuðningi fyrir [Last.fm](https://www.last.fm/) og [ListenBrainz](https://listenbrainz.org/)
|
||||
|
||||
- **Lumia Stream**: Bætir við [Lumia Stream](https://lumiastream.com/) stuðningi
|
||||
|
||||
- **Söngtexti Snilld**: Bætir stuðningi við texta fyrir flest lög
|
||||
|
||||
- **Tónlist Saman**: Deila spilunarlista með öðrum. Þegar gestgjafinn spilar lag munu allir aðrir heyra sama lagið
|
||||
|
||||
- **Leiðsögn**: Næsta/Til baka leiðsagnarörvar beint samþættar í viðmótinu, eins og í uppáhalds vafranum þínum
|
||||
|
||||
- **Engin Google Innskráning**: Fjarlægðu Google innskráningarhnappa og tengla úr viðmótinu
|
||||
|
||||
- **Tilkynningar**: Birta tilkynningu þegar lag byrjar að spila
|
||||
([gagnvirkartilkynningar](https://user-images.githubusercontent.com/78568641/114102651-63ce0e00-98d0-11eb-9dfe-c5a02bb54f9c.png) eru fáanlegar á Windows)
|
||||
|
||||
- **Mynd-í-Mynd**: Gerir kleift að skipta forritinu yfir í mynd-í-mynd stillingu
|
||||
|
||||
- **Spilunarhraði**: Hlustaðu hratt, hlustaðu hægt!
|
||||
[Bætir við sleða sem stjórnar lagahraðanum](https://user-images.githubusercontent.com/61631665/129976003-e55db5ba-bf42-448c-a059-26a009775e68.png)
|
||||
|
||||
- **Nákvæmshljóðstyrkur**: Stjórnaðu hljóðstyrknum nákvæmlega með músarhjóli/hraðtökkum, með sérsniðnum HUD og sérsniðnum hljóðstyrksþrepum
|
||||
|
||||
- **Flýtileiðir (og MPRIS)**: Leyfir að stilla alþjóðlegarflýtilyklar fyrir spilun (spila/gera hlé/næsta/fyrri) +
|
||||
óvirkja [media osd](https://user-images.githubusercontent.com/84923831/128601225-afa38c1f-dea8-4209-9f72-0f84c1dd8b54.png)
|
||||
með því að hnekkja miðlunarlyklum + virkja Ctrl/CMD + F til að leita + virkja linux mpris stuðning fyrir
|
||||
miðlunarlyklar + [sérsniðnir flýtilyklar](https://github.com/Araxeus/youtube-music/blob/1e591d6a3df98449bcda6e63baab249b28026148/providers/song-controls.js#L13-L50)
|
||||
fyrir [háþróaða notendur](https://github.com/th-ch/youtube-music/issues/106#issuecomment-952156902)
|
||||
- **Slepptu Lögum sem Mislíkuðust**: Sleppir mislíkaði lög
|
||||
|
||||
- **Slepptu Þögnum**: Slepptu sjálfkrafa þagnarköflum í lögum
|
||||
|
||||
- [**Styrktarblokk**](https://github.com/ajayyy/SponsorBlock): Sleppur sjálfkrafa hlutum sem ekki eru tónlist, eins og inngangur/lok
|
||||
eða hlutar af tónlistarmyndböndum þar sem lag er ekki að spila
|
||||
|
||||
- **Miðlunarstýringarverkefnastikunnar**: Stjórnaðu spilun frá [Windows verkefnastikunni þinni](https://user-images.githubusercontent.com/78568641/111916130-24a35e80-8a82-11eb-80c8-5021c1aa27f4.png)
|
||||
|
||||
- **Snertistiku**: Sérsniðið Snertistikuútlit fyrir macOS
|
||||
|
||||
- **Tuna OBS**: Samþætting við [OBS](https://obsproject.com/)
|
||||
viðbótina [Tuna](https://obsproject.com/forum/resources/tuna.843/)
|
||||
|
||||
- **Myndbandgæðisbreyting**: Leyfir að breyta myndbandgæðum með
|
||||
[hnappi](https://user-images.githubusercontent.com/78568641/138574366-70324a5e-2d64-4f6a-acdd-dc2a2b9cecc5.png) á
|
||||
myndbandsyfirlaginu
|
||||
|
||||
- **Myndbandsrofi**: Bætir við [hnappi](https://user-images.githubusercontent.com/28893833/173663950-63e6610e-a532-49b7-9afa-54cb57ddfc15.png) til
|
||||
að skipta á milli myndbands/lagshams. Getur einnig valfrjálst fjarlægt allan myndbandsflipann
|
||||
|
||||
- **Sjónrænir**: Mismunandi tónlist sjónrænir
|
||||
|
||||
## Þýðing
|
||||
|
||||
Þú getur aðstoðað við þýðingar á [Hosted Weblate](https://hosted.weblate.org/projects/youtube-music/).
|
||||
|
||||
<a href="https://hosted.weblate.org/engage/youtube-music/">
|
||||
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/multi-auto.svg" alt="translation status" />
|
||||
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/287x66-black.png" alt="translation status 2" />
|
||||
</a>
|
||||
|
||||
## Sækja
|
||||
|
||||
Þú getur skoðað [nýjustu útgáfuna](https://github.com/th-ch/youtube-music/releases/latest) til að finna fljótt
|
||||
nýjustu útgáfuna.
|
||||
|
||||
### Arch Linux
|
||||
|
||||
Settu upp [`youtube-music-bin`](https://aur.archlinux.org/packages/youtube-music-bin) pakkann frá AUR. Fyrir AUR uppsetningarleiðbeiningar skaltu skoða
|
||||
þessa [wiki síðu](https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages).
|
||||
|
||||
### MacOS
|
||||
|
||||
Þú getur sett upp appið með því að nota Homebrew (sjá [cask skilgreiningu](https://github.com/th-ch/homebrew-youtube-music))
|
||||
|
||||
```bash
|
||||
brew install th-ch/youtube-music/youtube-music
|
||||
```
|
||||
|
||||
Ef þú setur upp forritið handvirkt og færð villu "er skemmd og ekki er hægt að opna það," þegar þú ræsir forritið skaltu keyra eftirfarandi í flugstöðinni:
|
||||
|
||||
```bash
|
||||
/usr/bin/xattr -cr /Applications/YouTube\ Music.app
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
||||
Þú getur notað [Scoop pakkastjórnun](https://scoop.sh) til að setja upp `youtube-music` pakkann frá
|
||||
[`extras` fötunni](https://github.com/ScoopInstaller/Extras).
|
||||
|
||||
```bash
|
||||
scoop bucket add extras
|
||||
scoop install extras/youtube-music
|
||||
```
|
||||
|
||||
Að öðrum kosti geturðu notað [Winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/), Windows 11s
|
||||
opinber CLI pakkastjóri til að setja upp `th-ch.YouTubeMusic` pakkann.
|
||||
|
||||
*Athugið: Microsoft Defender SmartScreen gæti lokað uppsetningunni þar sem hún er frá „óþekktum útgefanda“. Þetta er einnig
|
||||
satt fyrir handvirka uppsetningu þegar reynt er að keyra executable(.exe) eftir handvirkt niðurhal hér á github (sama
|
||||
skrá).*
|
||||
|
||||
```bash
|
||||
winget install th-ch.YouTubeMusic
|
||||
```
|
||||
|
||||
#### Hvernig á að setja upp án nettengingar? (í Windows)
|
||||
|
||||
- Sæktu `*.nsis.7z` skrána fyrir _arkitektúr tækisins þíns_ á [útgáfusíðu](https://github.com/th-ch/youtube-music/releases/latest).
|
||||
- `x64` fyrir 64-bita Windows
|
||||
- `ia32` fyrir 32-bita Windows
|
||||
- `arm64` fyrir ARM64 Windows
|
||||
- Sæktu uppsetningarforrit á útgáfusíðu. (`*-Setup.exe`)
|
||||
- Settu þær í **sömu möppuna**.
|
||||
- Keyrðu uppsetningarforritið.
|
||||
|
||||
## Þemu
|
||||
|
||||
Þú getur hlaðið CSS skrám til að breyta útliti forritsins (Valkostir > Sjónræn klip > Þemu).
|
||||
|
||||
Sum fyrirframskilgreind þemu eru fáanleg á https://github.com/kerichdev/themes-for-ytmdesktop-player.
|
||||
|
||||
## Þróun
|
||||
|
||||
```bash
|
||||
git clone https://github.com/th-ch/youtube-music
|
||||
cd youtube-music
|
||||
pnpm install --frozen-lockfile
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
## Búðu til þín eigin tengiforrit
|
||||
|
||||
Með því að nota tengiforrit geturðu:
|
||||
|
||||
- vinna með appið - `BrowserWindow` frá electron er sent til tengiforritsstjórans
|
||||
- breyttu framhliðinni með því að vinna með HTML/CSS
|
||||
|
||||
### Er að búa til tengiforrit
|
||||
|
||||
Búðu til möppu í `src/plugins/YOUR-PLUGIN-NAME`:
|
||||
|
||||
- `index.ts`: aðal skránni af tengiforritið
|
||||
```typescript
|
||||
import style from './style.css?inline'; // flytja inn stíl sem inline
|
||||
|
||||
import { createPlugin } from '@/utils';
|
||||
|
||||
export default createPlugin({
|
||||
name: 'Plugin Label',
|
||||
restartNeeded: true, // ef gildi er satt, ytmusic sjá endurræsa gluggann
|
||||
config: {
|
||||
enabled: false,
|
||||
}, // sérsniðnastillingar þinn
|
||||
stylesheets: [style], // sérsniðnastílinn þinn
|
||||
menu: async ({ getConfig, setConfig }) => {
|
||||
// Allar *stillingaraðferðir eru umvafnar Lofor<T>
|
||||
const config = await getConfig();
|
||||
return [
|
||||
{
|
||||
label: 'menu',
|
||||
submenu: [1, 2, 3].map((value) => ({
|
||||
label: `value ${value}`,
|
||||
type: 'radio',
|
||||
checked: config.value === value,
|
||||
click() {
|
||||
setConfig({ value });
|
||||
},
|
||||
})),
|
||||
},
|
||||
];
|
||||
},
|
||||
backend: {
|
||||
start({ window, ipc }) {
|
||||
window.maximize();
|
||||
|
||||
// þú getur tengst við renderer tengiforritið
|
||||
ipc.handle('some-event', () => {
|
||||
return 'hello';
|
||||
});
|
||||
},
|
||||
// það kviknaði þegar stillingum var breytt
|
||||
onConfigChange(newConfig) { /* ... */ },
|
||||
// it fired when plugin disabled
|
||||
stop(context) { /* ... */ },
|
||||
},
|
||||
renderer: {
|
||||
async start(context) {
|
||||
console.log(await context.ipc.invoke('some-event'));
|
||||
},
|
||||
// Aðeins krókur sem er í boði fyrir renderer
|
||||
onPlayerApiReady(api: YoutubePlayer, context: RendererContext) {
|
||||
// stilltu stillingar viðbótarinnar auðveldlega
|
||||
context.setConfig({ myConfig: api.getVolume() });
|
||||
},
|
||||
onConfigChange(newConfig) { /* ... */ },
|
||||
stop(_context) { /* ... */ },
|
||||
},
|
||||
preload: {
|
||||
async start({ getConfig }) {
|
||||
const config = await getConfig();
|
||||
},
|
||||
onConfigChange(newConfig) {},
|
||||
stop(_context) {},
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
### Algeng notkunartilvik
|
||||
|
||||
- er að sprauta sérsniðnum CSS: búðu til `style.css` skrá í sömu möppu þá:
|
||||
|
||||
```typescript
|
||||
// index.ts
|
||||
import style from './style.css?inline'; // flytja inn stíl sem inline
|
||||
|
||||
import { createPlugin } from '@/utils';
|
||||
|
||||
export default createPlugin({
|
||||
name: 'Plugin Label',
|
||||
restartNeeded: true, // ef gildi er satt, ytmusic sjá endurræsa gluggann
|
||||
config: {
|
||||
enabled: false,
|
||||
}, // sérsniðnastillingar þinn
|
||||
stylesheets: [style], // sérsniðnastílinn þinn
|
||||
renderer() {} // skilgreina renderer krók
|
||||
});
|
||||
```
|
||||
|
||||
- Ef þú vilt breyta HTML:
|
||||
|
||||
```typescript
|
||||
import { createPlugin } from '@/utils';
|
||||
|
||||
export default createPlugin({
|
||||
name: 'Plugin Label',
|
||||
restartNeeded: true, // ef gildi er satt, ytmusic sjá endurræsa gluggann
|
||||
config: {
|
||||
enabled: false,
|
||||
}, // sérsniðnastillingar þinn
|
||||
renderer() {
|
||||
// Fjarlægðu innskráningarhnappinn
|
||||
document.querySelector(".sign-in-link.ytmusic-nav-bar").remove();
|
||||
} // skilgreina renderer krók
|
||||
});
|
||||
```
|
||||
|
||||
- samskipti á milli að framan og aftan: hægt að gera með því að nota ipcMain eininguna frá electron. Sjá `index.ts` skrá og
|
||||
dæmi í 'styrktarblokk' tengiforritinu.
|
||||
|
||||
## Byggja
|
||||
|
||||
1. Klóna geymsluna
|
||||
2. Fylgdu [þessa handbók](https://pnpm.io/installation) til að setja upp 'pnpm'
|
||||
3. Keyrðu `pnpm install --frozen-lockfile` til að setja upp ósjálfstæði
|
||||
4. Keyrðu `pnpm build:OS`
|
||||
|
||||
- `pnpm dist:win` - Windows
|
||||
- `pnpm dist:linux` - Linux
|
||||
- `pnpm dist:mac` - MacOS
|
||||
|
||||
Byggir appið fyrir macOS, Linux og Windows,
|
||||
með því að nota [electron-builder](https://github.com/electron-userland/electron-builder).
|
||||
|
||||
## Framleiðsluforskoðun
|
||||
|
||||
```bash
|
||||
pnpm start
|
||||
```
|
||||
|
||||
## Prófanir
|
||||
|
||||
```bash
|
||||
pnpm test
|
||||
```
|
||||
|
||||
Notar [Playwright](https://playwright.dev/) til að prófa forritið.
|
||||
|
||||
## Leyfi
|
||||
|
||||
MIT © [th-ch](https://github.com/th-ch/youtube-music)
|
||||
|
||||
## Algengustu Spurningar
|
||||
|
||||
### Hvers vegna forritavalmynd birtist ekki?
|
||||
|
||||
Ef valmöguleikinn „Fela valmynd“ er á - þú getur sýnt valmyndina með <kbd>alt</kbd> lyklinum (eða <kbd>\`</kbd> [bakka]
|
||||
ef þú notar viðbótina fyrir valmynd í forriti)
|
||||
371
docs/readme/README-ja.md
Normal file
@ -0,0 +1,371 @@
|
||||
<div align="center">
|
||||
|
||||
# YouTube Music
|
||||
|
||||
[](https://github.com/th-ch/youtube-music/releases/)
|
||||
[](https://github.com/th-ch/youtube-music/blob/master/license)
|
||||
[](https://github.com/th-ch/youtube-music/blob/master/.eslintrc.js)
|
||||
[](https://GitHub.com/th-ch/youtube-music/releases/)
|
||||
[](https://GitHub.com/th-ch/youtube-music/releases/)
|
||||
[](https://aur.archlinux.org/packages/youtube-music-bin)
|
||||
[](https://snyk.io/test/github/th-ch/youtube-music)
|
||||
|
||||
</div>
|
||||
|
||||

|
||||
|
||||
|
||||
<div align="center">
|
||||
<a href="https://github.com/th-ch/youtube-music/releases/latest">
|
||||
<img src="../../web/youtube-music.svg" width="400" height="100" alt="YouTube Music SVG">
|
||||
</a>
|
||||
</div>
|
||||
|
||||
他の言語で読む: [🏴 英語](../../README.md), [🇰🇷 韓国語](./README-ko.md), [🇫🇷 フランス語](./README-fr.md), [🇮🇸 アイスランド語](./README-is.md), [🇪🇸 スペイン語](./README-es.md), [🇷🇺 ロシア語](./README-ru.md)
|
||||
|
||||
**YouTube MusicのElectronラッパーには以下の機能があります:**
|
||||
|
||||
- ネイティブの外観と操作感、元のインターフェースを維持することを目指しています
|
||||
- カスタムプラグインのフレームワーク: スタイル、コンテンツ、機能など、YouTube Musicをニーズに合わせて変更し、ワンクリックでプラグインを有効/無効にできます
|
||||
|
||||
## デモ画像
|
||||
|
||||
| プレーヤースクリーン (アルバムカラーテーマ & アンビエントライト) |
|
||||
|:---------------------------------------------------------------------------------------------------------:|
|
||||
||
|
||||
|
||||
## コンテンツ
|
||||
|
||||
- [機能](#機能)
|
||||
- [利用可能なプラグイン](#利用可能なプラグイン)
|
||||
- [翻訳](#翻訳)
|
||||
- [ダウンロード](#ダウンロード)
|
||||
- [Arch Linux](#arch-linux)
|
||||
- [MacOS](#macos)
|
||||
- [Windows](#windows)
|
||||
- [ネットワーク接続なしでインストールする方法 (Windows)](#ネットワーク接続なしでインストールする方法-windows)
|
||||
- [テーマ](#テーマ)
|
||||
- [開発](#開発)
|
||||
- [独自のプラグインを作成する](#独自のプラグインを作成する)
|
||||
- [プラグインの作成](#プラグインの作成)
|
||||
- [一般的な使用例](#一般的な使用例)
|
||||
- [ビルド](#ビルド)
|
||||
- [プロダクションプレビュー](#プロダクションプレビュー)
|
||||
- [テスト](#テスト)
|
||||
- [ライセンス](#ライセンス)
|
||||
- [FAQ](#faq)
|
||||
|
||||
## 機能:
|
||||
|
||||
- **一時停止時の自動確認** (常に有効): 一定時間後に音楽を一時停止する["視聴を続けますか?"](https://user-images.githubusercontent.com/61631665/129977894-01c60740-7ec6-4bf0-9a2c-25da24491b0e.png)ポップアップを無効にします
|
||||
|
||||
- その他の機能...
|
||||
|
||||
## 利用可能なプラグイン:
|
||||
|
||||
- **広告ブロッカー**: すべての広告とトラッキングをブロックします
|
||||
|
||||
- **アルバムアクション**: プレイリストやアルバム内のすべての曲に「嫌いではない」「嫌い」「好き」「好きではない」ボタンを追加します
|
||||
|
||||
- **アルバムカラーテーマ**: アルバムのカラーパレットに基づいて動的なテーマと視覚効果を適用します
|
||||
|
||||
- **アンビエントモード**: 動画から柔らかい色を画面の背景に投影するライティング効果を適用します
|
||||
|
||||
- **<2A><><EFBFBD>ーディオコンプレッサー**: オーディオにコンプレッションを適用します(信号の最も大きな部分の音量を下げ、最も小さな部分の音量を上げます)
|
||||
|
||||
- **ナビゲーションバーのぼかし**: ナビゲーションバーを透明でぼやけたものにします
|
||||
|
||||
- **年齢制限の回避**: YouTubeの年齢確認を回避します
|
||||
|
||||
- **字幕選択**: 字幕を有効にします
|
||||
|
||||
- **コンパクトサイドバー**: サイドバーを常にコンパクトモードに設定します
|
||||
|
||||
- **クロスフェード**: 曲間にクロスフェードを適用します
|
||||
|
||||
- **自動再生の無効化**: すべての曲を「一時停止」モードで開始します
|
||||
|
||||
- **[Discord](https://discord.com/) リッチプレゼンス**: [リッチプレゼンス](https://user-images.githubusercontent.com/28219076/104362104-a7a0b980-5513-11eb-9744-bb89eabe0016.png)を使用して、友達にあなたが聴いている曲を表示します
|
||||
|
||||
- **ダウンローダー**: UIから直接MP3/ソースオーディオをダウンロードします
|
||||
|
||||
- **イコライザー**: 特定の周波数範囲をブーストまたはカットするフィルターを追加します(例: ベースブースター)
|
||||
|
||||
- **指数音量**: 音量スライダーを[指数関数的](https://greasyfork.org/en/scripts/397686-youtube-music-fix-volume-ratio/)にして、低い音量を選択しやすくします
|
||||
|
||||
- **アプリ内メニュー**: [メニューバーをおしゃれで暗い外観にします](https://user-images.githubusercontent.com/78568641/112215894-923dbf00-8c29-11eb-95c3-3ce15db27eca.png)
|
||||
|
||||
> (このプラグインとメニュー非表示オプションを有効にした後、メニューにアクセスする際に問題がある場合は、[この投稿](https://github.com/th-ch/youtube-music/issues/410#issuecomment-952060709)を参照してください)
|
||||
|
||||
- **スクロブラー**: [Last.fm](https://www.last.fm/)や[ListenBrainz](https://listenbrainz.org/)のスクロブリングサポートを追加します
|
||||
|
||||
- **Lumia Stream**: [Lumia Stream](https://lumiastream.com/)のサポートを追加します
|
||||
|
||||
- **Genius 歌詞**: ほとんどの曲に歌詞サポートを追加します
|
||||
|
||||
- **Music Together**: プレイリストを他の人と共有します。ホストが曲を再生すると、他の全員が同じ曲を聴くことができます
|
||||
|
||||
- **ナビゲーション**: お気に入りのブラウザのように、UIに直接統合された次/前のナビゲーション矢印を追加します
|
||||
|
||||
- **Googleログインなし**: インターフェースからGoogleログインボタンとリンクを削除します
|
||||
|
||||
- **通知**: 曲の再生が開始されると通知を表示します(Windowsでは[インタラクティブ通知](https://user-images.githubusercontent.com/78568641/114102651-63ce0e00-98d0-11eb-9dfe-c5a02bb54f9c.png)が利用可能です)
|
||||
|
||||
- **ピクチャーインピクチャー**: アプリをピクチャーインピクチャーモードに切り替えることができます
|
||||
|
||||
- **再生速度**: 速く聴いたり、遅く聴いたりできます!曲の速度を制御するスライダーを追加します
|
||||
|
||||
- **正確な音量**: カスタムHUDとカスタマイズ可能な音量ステップを使用して、マウスホイール/ホットキーで音量を正確に制御します
|
||||
|
||||
- **ショートカット (& MPRIS)**: 再生用のグローバルホットキー(再生/一時停止/次/前)を設定し、メディアキーをオーバーライドしてメディアOSDを無効にし、Ctrl/CMD + Fで検索を有効にし、LinuxのMPRISサポートを有効にし、[上級ユーザー](https://github.com/th-ch/youtube-music/issues/106#issuecomment-952156902)向けの[カスタムホットキー](https://github.com/Araxeus/youtube-music/blob/1e591d6a3df98449bcda6e63baab249b28026148/providers/song-controls.js#L13-L50)を追加します
|
||||
|
||||
- **嫌いな曲をスキップ**: 嫌いな曲をスキップします
|
||||
|
||||
- **無音部分をスキップ**: 無音部分を自動的にスキップします
|
||||
|
||||
- [**SponsorBlock**](https://github.com/ajayyy/SponsorBlock): イントロ/アウトロなどの音楽以外の部分や、曲が再生されていないミュージックビデオの部分を自動的にスキップします
|
||||
|
||||
- **同期歌詞**: [LRClib](https://lrclib.net)のようなプロバイダーを使用して、曲に同期した歌詞を提供します
|
||||
|
||||
- **タスクバーメディアコントロール**: [Windowsタスクバー](https://user-images.githubusercontent.com/78568641/111916130-24a35e80-8a82-11eb-80c8-5021c1aa27f4.png)から再生を制御します
|
||||
|
||||
- **TouchBar**: macOS用のカスタムTouchBarレイアウト
|
||||
|
||||
- **Tuna OBS**: [OBS](https://obsproject.com/)のプラグイン[Tuna](https://obsproject.com/forum/resources/tuna.843/)との統合
|
||||
|
||||
- **ビデオ品質チェンジャー**: ビデオオーバーレイの[ボタン](https://user-images.githubusercontent.com/78568641/138574366-70324a5e-2d64-4f6a-acdd-dc2a2b9cecc5.png)を使用してビデオ品質を変更できます
|
||||
|
||||
- **ビデオ切り替え**: ビデオ/ソングモードを切り替える[ボタン](https://user-images.githubusercontent.com/28893833/173663950-63e6610e-a532-49b7-9afa-54cb57ddfc15.png)を追加します。オプションでビデオタブ全体を削除することもできます
|
||||
|
||||
- **ビジュアライザー**: プレイヤーにさまざまな音楽ビジュアライザーを追加します
|
||||
|
||||
## 翻訳
|
||||
|
||||
[Hosted Weblate](https://hosted.weblate.org/projects/youtube-music/)で翻訳を手伝うことができます。
|
||||
|
||||
<a href="https://hosted.weblate.org/engage/youtube-music/">
|
||||
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/multi-auto.svg" alt="翻訳状況" />
|
||||
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/287x66-black.png" alt="翻訳状況 2" />
|
||||
</a>
|
||||
|
||||
## ダウンロード
|
||||
|
||||
[最新リリース](https://github.com/th-ch/youtube-music/releases/latest)を確認して、最新バージョンをすばやく見つけることができます。
|
||||
|
||||
### Arch Linux
|
||||
|
||||
AURから[`youtube-music-bin`](https://aur.archlinux.org/packages/youtube-music-bin)パッケージをインストールします。AURのインストール手順については、この[wikiページ](https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages)を参照してください。
|
||||
|
||||
### macOS
|
||||
|
||||
Homebrewを使用してアプリをインストールできます([cask定義](https://github.com/th-ch/homebrew-youtube-music)を参照)。
|
||||
|
||||
```bash
|
||||
brew install th-ch/youtube-music/youtube-music
|
||||
```
|
||||
|
||||
アプリを手動でインストールし、アプリの起動時に「破損しているため開けません」というエラーが表示される場合は、ターミナルで次のコマンドを実行します。
|
||||
|
||||
```bash
|
||||
/usr/bin/xattr -cr /Applications/YouTube\ Music.app
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
||||
[Scoopパッケージマネージャー](https://scoop.sh)を使用して、[`extras`バケット](https://github.com/ScoopInstaller/Extras)から`youtube-music`パッケージをインストールできます。
|
||||
|
||||
```bash
|
||||
scoop bucket add extras
|
||||
scoop install extras/youtube-music
|
||||
```
|
||||
|
||||
または、Windows 11の公式CLIパッケージマネージャーである[Winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/)を使用して、`th-ch.YouTubeMusic`パッケージをインストールできます。
|
||||
|
||||
*注: 「不明な発行元」からのものであるため、Microsoft Defender SmartScreenがインストールをブロックする場合があります。これは、GitHubで手動でダウンロードした後に実行ファイル(.exe)を実行しようとする場合にも当てはまります。*
|
||||
|
||||
```bash
|
||||
winget install th-ch.YouTubeMusic
|
||||
```
|
||||
|
||||
#### ネットワーク接続なしでインストールする方法 (Windows)
|
||||
|
||||
- [リリースページ](https://github.com/th-ch/youtube-music/releases/latest)で_デバイスのアーキテクチャ_に対応する`*.nsis.7z`ファイルをダウンロードします。
|
||||
- `x64`は64ビットWindows用
|
||||
- `ia32`は32ビットWindows用
|
||||
- `arm64`はARM64 Windows用
|
||||
- リリースページでインストーラーをダウンロードします。(`*-Setup.exe`)
|
||||
- それらを**同じディレクトリ**に配置します。
|
||||
- インストーラーを実行します。
|
||||
|
||||
## テーマ
|
||||
|
||||
CSSファイルを読み込んでアプリケーションの外観を変更できます(オプション > 視覚的調整 > テーマ)。
|
||||
|
||||
いくつかの事前定義されたテーマは、https://github.com/kerichdev/themes-for-ytmdesktop-player で利用できます。
|
||||
|
||||
## 開発
|
||||
|
||||
```bash
|
||||
git clone https://github.com/th-ch/youtube-music
|
||||
cd youtube-music
|
||||
pnpm install --frozen-lockfile
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
## 独自のプラグインを作成する
|
||||
|
||||
プラグインを使用すると、次のことができます。
|
||||
|
||||
- アプリを操作する - Electronの`BrowserWindow`がプラグインハンドラーに渡されます
|
||||
- HTML/CSSを操作してフロントエンドを変更する
|
||||
|
||||
### プラグインの作成
|
||||
|
||||
`src/plugins/YOUR-PLUGIN-NAME`にフォルダーを作成します。
|
||||
|
||||
- `index.ts`: プラグインのメインファイル
|
||||
```typescript
|
||||
import style from './style.css?inline'; // スタイルをインラインとしてインポート
|
||||
|
||||
import { createPlugin } from '@/utils';
|
||||
|
||||
export default createPlugin({
|
||||
name: 'プラグインラベル',
|
||||
restartNeeded: true, // 値がtrueの場合、ytmusicは再起動ダイアログを表示します
|
||||
config: {
|
||||
enabled: false,
|
||||
}, // カスタム設定
|
||||
stylesheets: [style], // カスタムスタイル
|
||||
menu: async ({ getConfig, setConfig }) => {
|
||||
// すべての*ConfigメソッドはPromise<T>でラップされています
|
||||
const config = await getConfig();
|
||||
return [
|
||||
{
|
||||
label: 'メニュー',
|
||||
submenu: [1, 2, 3].map((value) => ({
|
||||
label: `値 ${value}`,
|
||||
type: 'radio',
|
||||
checked: config.value === value,
|
||||
click() {
|
||||
setConfig({ value });
|
||||
},
|
||||
})),
|
||||
},
|
||||
];
|
||||
},
|
||||
backend: {
|
||||
start({ window, ipc }) {
|
||||
window.maximize();
|
||||
|
||||
// レンダラープラグインと通信できます
|
||||
ipc.handle('some-event', () => {
|
||||
return 'hello';
|
||||
});
|
||||
},
|
||||
// 設定が変更されたときに発生します
|
||||
onConfigChange(newConfig) { /* ... */ },
|
||||
// プラグインが無効になったときに発生します
|
||||
stop(context) { /* ... */ },
|
||||
},
|
||||
renderer: {
|
||||
async start(context) {
|
||||
console.log(await context.ipc.invoke('some-event'));
|
||||
},
|
||||
// レンダラーでのみ使用可能なフック
|
||||
onPlayerApiReady(api: YoutubePlayer, context: RendererContext) {
|
||||
// プラグイン設定を簡単に設定
|
||||
context.setConfig({ myConfig: api.getVolume() });
|
||||
},
|
||||
onConfigChange(newConfig) { /* ... */ },
|
||||
stop(_context) { /* ... */ },
|
||||
},
|
||||
preload: {
|
||||
async start({ getConfig }) {
|
||||
const config = await getConfig();
|
||||
},
|
||||
onConfigChange(newConfig) {},
|
||||
stop(_context) {},
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
### 一般的な使用例
|
||||
|
||||
- カスタムCSSの挿入: 同じフォルダーに`style.css`ファイルを作成し、次のようにします。
|
||||
|
||||
```typescript
|
||||
// index.ts
|
||||
import style from './style.css?inline'; // スタイルをインラインとしてインポート
|
||||
|
||||
import { createPlugin } from '@/utils';
|
||||
|
||||
export default createPlugin({
|
||||
name: 'プラグインラベル',
|
||||
restartNeeded: true, // 値がtrueの場合、ytmusicは再起動ダイアログを表示します
|
||||
config: {
|
||||
enabled: false,
|
||||
}, // カスタム設定
|
||||
stylesheets: [style], // カスタムスタイル
|
||||
renderer() {} // レンダラーフックを定義
|
||||
});
|
||||
```
|
||||
|
||||
- HTMLを変更したい場合:
|
||||
|
||||
```typescript
|
||||
import { createPlugin } from '@/utils';
|
||||
|
||||
export default createPlugin({
|
||||
name: 'プラグインラベル',
|
||||
restartNeeded: true, // 値がtrueの場合、ytmusicは再起動ダイアログを表示します
|
||||
config: {
|
||||
enabled: false,
|
||||
}, // カスタム設定
|
||||
renderer() {
|
||||
// ログインボタンを削除
|
||||
document.querySelector(".sign-in-link.ytmusic-nav-bar").remove();
|
||||
} // レンダラーフックを定義
|
||||
});
|
||||
```
|
||||
|
||||
- フロントエンドとバックエンドの通信: ElectronのipcMainモジュールを使用して行うことができます。`index.ts`ファイルと`sponsorblock`プラグインの例を参照してください。
|
||||
|
||||
## ビルド
|
||||
|
||||
1. リポジトリをクローン
|
||||
2. [このガイド](https://pnpm.io/installation)に従って`pnpm`をインストール
|
||||
3. `pnpm install --frozen-lockfile`を実行して依存関係をインストール
|
||||
4. `pnpm build:OS`を実行
|
||||
|
||||
- `pnpm dist:win` - Windows
|
||||
- `pnpm dist:linux` - Linux (amd64)
|
||||
- `pnpm dist:linux:deb-arm64` - Linux (Debian用arm64)
|
||||
- `pnpm dist:linux:rpm-arm64` - Linux (Fedora用arm64)
|
||||
- `pnpm dist:mac` - macOS (amd64)
|
||||
- `pnpm dist:mac:arm64` - macOS (arm64)
|
||||
|
||||
[electron-builder](https://github.com/electron-userland/electron-builder)を使用して、macOS、Linux、およびWindows用のアプリをビルドします。
|
||||
|
||||
## プロダクションプレビュー
|
||||
|
||||
```bash
|
||||
pnpm start
|
||||
```
|
||||
|
||||
## テスト
|
||||
|
||||
```bash
|
||||
pnpm test
|
||||
```
|
||||
|
||||
[Playwright](https://playwright.dev/)を使用してアプリをテストします。
|
||||
|
||||
## ライセンス
|
||||
|
||||
MIT © [th-ch](https://github.com/th-ch/youtube-music)
|
||||
|
||||
## FAQ
|
||||
|
||||
### アプリのメニューが表示されないのはなぜですか?
|
||||
|
||||
`メニューを非表示`オプションがオンの場合 - <kbd>alt</kbd>キー(またはアプリ内メニュープラグインを使用している場合は<kbd>\`</kbd> [バックティック]キー)でメニューを表示できます
|
||||
@ -1,9 +1,9 @@
|
||||
# 유튜브 뮤직 (YouTube Music)
|
||||
|
||||
<div align="center">
|
||||
|
||||
# 유튜브 뮤직 (YouTube Music)
|
||||
|
||||
[](https://github.com/th-ch/youtube-music/releases/)
|
||||
[](https://github.com/th-ch/youtube-music/blob/master/LICENSE)
|
||||
[](https://github.com/th-ch/youtube-music/blob/master/license)
|
||||
[](https://github.com/th-ch/youtube-music/blob/master/.eslintrc.js)
|
||||
[](https://GitHub.com/th-ch/youtube-music/releases/)
|
||||
[](https://GitHub.com/th-ch/youtube-music/releases/)
|
||||
@ -12,7 +12,7 @@
|
||||
|
||||
</div>
|
||||
|
||||

|
||||

|
||||
|
||||
<div align="center">
|
||||
<a href="https://github.com/th-ch/youtube-music/releases/latest">
|
||||
@ -20,67 +20,33 @@
|
||||
</a>
|
||||
</div>
|
||||
|
||||
다른 언어로 읽어보세요: [🏴 영어](../../README.md), [🇰🇷 한국인](./README-ko.md), [🇫🇷 프랑스 국민](./README-fr.md), [🇮🇸 아이슬란드어](./README-is.md), [🇪🇸 스페인 사람](./README-es.md), [🇷🇺 러시아인](./README-ru.md), [🇧🇷 포르투갈어](./README-pt.md), [🇯🇵 일본어](./README-ja.md)
|
||||
|
||||
**유튜브 뮤직의 Electron 래퍼; 기능:**
|
||||
|
||||
- 원래의 인터페이스를 유지하는 것을 목표로 하는 네이티브 디자인 및 느낌
|
||||
- 맞춤 플러그인을 위한 프레임워크: 스타일, 콘텐츠, 기능 등 필요에 따라 유튜브 뮤직을 변경하고, 클릭 한 번으로 플러그인을 활성화/비활성화할 수 있습니다.
|
||||
|
||||
## 번역
|
||||
## Content
|
||||
|
||||
[Hosted Weblate](https://hosted.weblate.org/projects/youtube-music/)에서 번역을 도울 수 있습니다.
|
||||
|
||||
<a href="https://hosted.weblate.org/engage/youtube-music/">
|
||||
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/multi-auto.svg" alt="번역 상태" />
|
||||
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/287x66-black.png" alt="번역 상태 2" />
|
||||
</a>
|
||||
|
||||
## 다운로드
|
||||
|
||||
[최신 릴리즈](https://github.com/th-ch/youtube-music/releases/latest)를 확인하여 최신 버전을 빠르게 찾을 수 있습니다.
|
||||
|
||||
### Arch Linux
|
||||
|
||||
AUR에서 `youtube-music-bin` 패키지를 설치합니다. AUR 설치 지침은 [이 위키 페이지](https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages)를 참조하세요.
|
||||
|
||||
### MacOS
|
||||
|
||||
Homebrew를 사용하여 앱을 설치할 수 있습니다:
|
||||
```bash
|
||||
brew install --cask https://raw.githubusercontent.com/th-ch/youtube-music/master/youtube-music.rb
|
||||
```
|
||||
|
||||
(앱을 수동으로 설치하고) 앱을 실행할 때 `손상되었기 때문에 열 수 없습니다.`라는 오류가 발생하면 터미널에서 다음을 실행하세요:
|
||||
|
||||
```bash
|
||||
xattr -cr /Applications/YouTube\ Music.app
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
||||
[Scoop 패키지 매니저](https://scoop.sh)를 사용하여 [`extras` 버킷](https://github.com/ScoopInstaller/Extras)에서 `youtube-music` 패키지를 설치할 수 있습니다.
|
||||
|
||||
```bash
|
||||
scoop bucket add extras
|
||||
scoop install extras/youtube-music
|
||||
```
|
||||
|
||||
또는 Windows 11의 공식 CLI 패키지 관리자인 [Winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/)을 사용하여 `th-ch.YouTubeMusic` 패키지를 설치할 수 있습니다.
|
||||
|
||||
*참고: "알 수 없는 게시자"의 파일이기 때문에 Microsoft Defender의 SmartScreen에서 설치를 차단할 수 있습니다. 이는 GitHub에서 동일 파일을 수동으로 다운로드한 후 실행 파일(.exe)을 실행하려고 할 때도 마찬가지로 발생합니다.*
|
||||
|
||||
```bash
|
||||
winget install th-ch.YouTubeMusic
|
||||
```
|
||||
|
||||
#### (Windows에서) 네트워크에 연결하지 않고 설치하는 방법은 무엇인가요?
|
||||
|
||||
- [릴리즈 페이지](https://github.com/th-ch/youtube-music/releases/latest)에서 _본인 기기 아키텍처_에 맞는 `*.nsis.7z` 파일을 다운로드하세요.
|
||||
- `x64`는 64비트 Windows 용입니다.
|
||||
- `ia32`는 32비트 Windows 용입니다.
|
||||
- `arm64`는 ARM64 Windows 용입니다.
|
||||
- 릴리즈 페이지에서 설치기를 다운로드하세요. (`*-Setup.exe`)
|
||||
- 두 파일을 **동일한 위치**에 놓아주세요.
|
||||
- 설치기를 실행하세요.
|
||||
- [기능](#기능)
|
||||
- [사용 가능한 플러그인](#사용-가능한-플러그인)
|
||||
- [번역](#번역)
|
||||
- [다운로드](#다운로드)
|
||||
- [Arch Linux](#arch-linux)
|
||||
- [MacOS](#macos)
|
||||
- [Windows](#windows)
|
||||
- [(Windows에서) 네트워크에 연결하지 않고 설치하는 방법은 무엇인가요?](#windows에서-네트워크에-연결하지-않고-설치하는-방법은-무엇인가요)
|
||||
- [테마](#테마)
|
||||
- [개발](#개발)
|
||||
- [나만의 플러그인 만들기](#나만의-플러그인-만들기)
|
||||
- [플러그인 만들기](#플러그인-만들기)
|
||||
- [일반적인 사용 예](#일반적인-사용-예)
|
||||
- [빌드](#빌드)
|
||||
- [프로덕션 빌드 미리보기](#프로덕션-빌드-미리보기)
|
||||
- [테스트](#테스트)
|
||||
- [라이선스](#라이선스)
|
||||
- [자주 묻는 질문](#자주-묻는-질문)
|
||||
|
||||
## 기능:
|
||||
|
||||
@ -156,6 +122,63 @@ winget install th-ch.YouTubeMusic
|
||||
|
||||
- **비주얼라이저**: 플레이어에 시각화 도구 추가
|
||||
|
||||
## 번역
|
||||
|
||||
[Hosted Weblate](https://hosted.weblate.org/projects/youtube-music/)에서 번역을 도울 수 있습니다.
|
||||
|
||||
<a href="https://hosted.weblate.org/engage/youtube-music/">
|
||||
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/multi-auto.svg" alt="번역 상태" />
|
||||
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/287x66-black.png" alt="번역 상태 2" />
|
||||
</a>
|
||||
|
||||
## 다운로드
|
||||
|
||||
[최신 릴리즈](https://github.com/th-ch/youtube-music/releases/latest)를 확인하여 최신 버전을 빠르게 찾을 수 있습니다.
|
||||
|
||||
### Arch Linux
|
||||
|
||||
AUR에서 [`youtube-music-bin`](https://aur.archlinux.org/packages/youtube-music-bin) 패키지를 설치합니다. AUR 설치 지침은 [이 위키 페이지](https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages)를 참조하세요.
|
||||
|
||||
### MacOS
|
||||
|
||||
Homebrew를 사용하여 앱을 설치할 수 있습니다:
|
||||
```bash
|
||||
brew install --cask https://raw.githubusercontent.com/th-ch/youtube-music/master/youtube-music.rb
|
||||
```
|
||||
|
||||
(앱을 수동으로 설치하고) 앱을 실행할 때 `손상되었기 때문에 열 수 없습니다.`라는 오류가 발생하면 터미널에서 다음을 실행하세요:
|
||||
|
||||
```bash
|
||||
/usr/bin/xattr -cr /Applications/YouTube\ Music.app
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
||||
[Scoop 패키지 매니저](https://scoop.sh)를 사용하여 [`extras` 버킷](https://github.com/ScoopInstaller/Extras)에서 `youtube-music` 패키지를 설치할 수 있습니다.
|
||||
|
||||
```bash
|
||||
scoop bucket add extras
|
||||
scoop install extras/youtube-music
|
||||
```
|
||||
|
||||
또는 Windows 11의 공식 CLI 패키지 관리자인 [Winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/)을 사용하여 `th-ch.YouTubeMusic` 패키지를 설치할 수 있습니다.
|
||||
|
||||
*참고: "알 수 없는 게시자"의 파일이기 때문에 Microsoft Defender의 SmartScreen에서 설치를 차단할 수 있습니다. 이는 GitHub에서 동일 파일을 수동으로 다운로드한 후 실행 파일(.exe)을 실행하려고 할 때도 마찬가지로 발생합니다.*
|
||||
|
||||
```bash
|
||||
winget install th-ch.YouTubeMusic
|
||||
```
|
||||
|
||||
#### (Windows에서) 네트워크에 연결하지 않고 설치하는 방법은 무엇인가요?
|
||||
|
||||
- [릴리즈 페이지](https://github.com/th-ch/youtube-music/releases/latest)에서 _본인 기기 아키텍처_에 맞는 `*.nsis.7z` 파일을 다운로드하세요.
|
||||
- `x64`는 64비트 Windows 용입니다.
|
||||
- `ia32`는 32비트 Windows 용입니다.
|
||||
- `arm64`는 ARM64 Windows 용입니다.
|
||||
- 릴리즈 페이지에서 설치기를 다운로드하세요. (`*-Setup.exe`)
|
||||
- 두 파일을 **동일한 위치**에 놓아주세요.
|
||||
- 설치기를 실행하세요.
|
||||
|
||||
## 테마
|
||||
|
||||
CSS 파일을 로드하여 애플리케이션의 모양을 변경할 수 있습니다(설정 > 시각적 변경 > 테마).
|
||||
|
||||
375
docs/readme/README-pt.md
Normal file
@ -0,0 +1,375 @@
|
||||
<div align="center">
|
||||
|
||||
# YouTube Music
|
||||
|
||||
[](https://github.com/th-ch/youtube-music/releases/)
|
||||
[](https://github.com/th-ch/youtube-music/blob/master/license)
|
||||
[](https://github.com/th-ch/youtube-music/blob/master/.eslintrc.js)
|
||||
[](https://GitHub.com/th-ch/youtube-music/releases/)
|
||||
[](https://GitHub.com/th-ch/youtube-music/releases/)
|
||||
[](https://aur.archlinux.org/packages/youtube-music-bin)
|
||||
[](https://snyk.io/test/github/th-ch/youtube-music)
|
||||
|
||||
</div>
|
||||
|
||||

|
||||
|
||||
|
||||
<div align="center">
|
||||
<a href="https://github.com/th-ch/youtube-music/releases/latest">
|
||||
<img src="/web/youtube-music.svg" width="400" height="100" alt="YouTube Music SVG">
|
||||
</a>
|
||||
</div>
|
||||
|
||||
Leia em outros idiomas: [🏴 Inglês](../../README.md), [🇰🇷 Coreano](./README-ko.md), [🇫🇷 Francês](./README-fr.md), [🇮🇸 Islandês](./README-is.md), [🇪🇸 Espanhol](./README-es.md), [🇷🇺 Russo](./README-ru.md), [🇧🇷 Português](./README-pt.md)
|
||||
|
||||
**Wrapper do Electron para o YouTube Music com os seguintes recursos:**
|
||||
|
||||
- Visual e comportamento nativos: Mantém a interface original do YouTube Music.
|
||||
- Estrutura para plugins personalizados: Adapte o YouTube Music às suas necessidades (estilo, conteúdo, funcionalidades). Ative/desative plugins com um clique.
|
||||
|
||||
## Imagem de demonstração
|
||||
|
||||
| Tela do Player (tema de cores do álbum e luz ambiente) |
|
||||
|:---------------------------------------------------------------------------------------------------------:|
|
||||
||
|
||||
|
||||
## Conteúdo
|
||||
|
||||
- [Recursos](#recursos)
|
||||
- [Plugins disponíveis](#plugins-disponíveis)
|
||||
- [Tradução](#tradução)
|
||||
- [Download](#download)
|
||||
- [Arch Linux](#arch-linux)
|
||||
- [MacOS](#macos)
|
||||
- [Windows](#windows)
|
||||
- [Como instalar sem conexão à internet? (no Windows)](#como-instalar-sem-conexão-à-internet-no-windows)
|
||||
- [Temas](#temas)
|
||||
- [Dev](#dev)
|
||||
- [Crie seus próprios plugins](#crie-seus-próprios-plugins)
|
||||
- [Criando um plugin](#criando-um-plugin)
|
||||
- [Casos de uso comuns](#casos-de-uso-comuns)
|
||||
- [Compilar](#compilar)
|
||||
- [Prévia de produção](#prévia-de-produção)
|
||||
- [Testes](#testes)
|
||||
- [Licença](#licença)
|
||||
- [Perguntas Frequentes](#perguntas-frequentes)
|
||||
|
||||
## Recursos:
|
||||
|
||||
- **Confirmação automática quando pausado** (Sempre ativado): desativa
|
||||
o popup ["Continuar assistindo?"](https://user-images.githubusercontent.com/61631665/129977894-01c60740-7ec6-4bf0-9a2c-25da24491b0e.png)
|
||||
que pausa a música após um certo tempo
|
||||
|
||||
- E mais...
|
||||
|
||||
## Plugins disponíveis:
|
||||
|
||||
- **Bloqueador de anúncios**: Bloqueia todos os anúncios e rastreamentos automaticamente
|
||||
|
||||
- **Ações de Álbum**: Adiciona botões para Remover dislike, Dar dislike, Curtir e Remover curtida em todas as músicas de uma playlist ou álbum
|
||||
|
||||
- **Tema de cores do álbum**: Aplica um tema dinâmico e efeitos visuais baseados na paleta de cores do álbum
|
||||
|
||||
- **Modo ambiente**: Cria um efeito de iluminação projetando cores suaves do vídeo no fundo da tela
|
||||
|
||||
- **Compressor de áudio**: Aplica compressão ao áudio (reduz o volume das partes mais altas e aumenta o das mais baixas)
|
||||
|
||||
- **Barra de navegação desfocada**: Torna a barra de navegação transparente e desfocada
|
||||
|
||||
- **Contornar restrições de idade**: Ignora a verificação de idade do YouTube
|
||||
|
||||
- **Seletor de legendas**: Ativa legendas
|
||||
|
||||
- **Barra lateral compacta**: Mantém a barra lateral sempre no modo compacto
|
||||
|
||||
- **Crossfade**: Transição suave entre músicas
|
||||
|
||||
- **Desativar reprodução automática**: Faz com que todas as músicas iniciem no modo "pausado"
|
||||
|
||||
- **[Discord](https://discord.com/) Rich Presence**: Mostra para seus amigos o que você está ouvindo com [Rich Presence](https://user-images.githubusercontent.com/28219076/104362104-a7a0b980-5513-11eb-9744-bb89eabe0016.png)
|
||||
|
||||
- **Downloader**: Baixa MP3 [diretamente da interface](https://user-images.githubusercontent.com/61631665/129977677-83a7d067-c192-45e1-98ae-b5a4927393be.png) [(youtube-dl)](https://github.com/ytdl-org/youtube-dl)
|
||||
|
||||
- **Equalizador**: Adiciona filtros para aumentar ou reduzir faixas específicas de frequência (ex: reforço de graves)
|
||||
|
||||
- **Volume exponencial**: Torna o controle de volume [exponencial](https://greasyfork.org/en/scripts/397686-youtube-music-fix-volume-ratio/) para facilitar a seleção de volumes mais baixos
|
||||
|
||||
- **Menu integrado**: [Dá às barras um visual elegante e escuro](https://user-images.githubusercontent.com/78568641/112215894-923dbf00-8c29-11eb-95c3-3ce15db27eca.png)
|
||||
|
||||
> (veja [este post](https://github.com/th-ch/youtube-music/issues/410#issuecomment-952060709) se tiver problemas para acessar o menu após ativar este plugin e a opção de ocultar menu)
|
||||
|
||||
- **Scrobbler**: Adiciona suporte para scrobbling no [Last.fm](https://www.last.fm/) e [ListenBrainz](https://listenbrainz.org/)
|
||||
|
||||
- **Lumia Stream**: Adiciona suporte para [Lumia Stream](https://lumiastream.com/)
|
||||
|
||||
- **Letras Genius**: Adiciona suporte a letras para a maioria das músicas
|
||||
|
||||
- **Música Juntos**: Compartilhe uma playlist com outros. Quando o host toca uma música, todos ouvem a mesma música
|
||||
|
||||
- **Navegação**: Botões de avançar/voltar integrados diretamente na interface, como no seu navegador favorito
|
||||
|
||||
- **Sem login do Google**: Remove botões e links de login do Google da interface
|
||||
|
||||
- **Notificações**: Exibe uma notificação quando uma música começa a tocar ([notificações interativas](https://user-images.githubusercontent.com/78568641/114102651-63ce0e00-98d0-11eb-9dfe-c5a02bb54f9c.png) disponíveis no Windows)
|
||||
|
||||
- **Picture-in-picture**: Permite alternar o aplicativo para o modo picture-in-picture
|
||||
|
||||
- **Velocidade de reprodução**: Ouça rápido, ouça devagar! [Adiciona um controle deslizante para ajustar a velocidade](https://user-images.githubusercontent.com/61631665/129976003-e55db5ba-bf42-448c-a059-26a009775e68.png)
|
||||
|
||||
- **Volume preciso**: Controle o volume com precisão usando roda do mouse/atalhos, com HUD personalizado e níveis de volume customizáveis
|
||||
|
||||
- **Atalhos (& MPRIS)**: Permite configurar teclas de atalho globais para controle (play/pause/próxima/anterior) + desativa [OSD de mídia](https://user-images.githubusercontent.com/84923831/128601225-afa38c1f-dea8-4209-9f72-0f84c1dd8b54.png) sobrescrevendo teclas de mídia + ativa Ctrl/CMD + F para busca + suporte a MPRIS no Linux para teclas de mídia + [atalhos personalizados](https://github.com/Araxeus/youtube-music/blob/1e591d6a3df98449bcda6e63baab249b28026148/providers/song-controls.js#L13-L50) para [usuários avançados](https://github.com/th-ch/youtube-music/issues/106#issuecomment-952156902)
|
||||
|
||||
- **Pular músicas marcadas com "não gostei"**: Ignora automaticamente músicas que você deu dislike
|
||||
|
||||
- **Pular silêncios**: Ignora automaticamente seções silenciosas
|
||||
|
||||
- [**SponsorBlock**](https://github.com/ajayyy/SponsorBlock): Ignora automaticamente partes não musicais como introduções/outros ou partes de clipes onde a música não está tocando
|
||||
|
||||
- **Letras sincronizadas**: Fornece letras sincronizadas para músicas, usando serviços como [LRClib](https://lrclib.net)
|
||||
|
||||
- **Controle de mídia na barra de tarefas**: Controle a reprodução pela [barra de tarefas do Windows](https://user-images.githubusercontent.com/78568641/111916130-24a35e80-8a82-11eb-80c8-5021c1aa27f4.png)
|
||||
|
||||
- **TouchBar**: Layout personalizado para a TouchBar do macOS
|
||||
|
||||
- **Tuna OBS**: Integração com o plugin [Tuna](https://obsproject.com/forum/resources/tuna.843/) do [OBS](https://obsproject.com/)
|
||||
|
||||
- **Seletor de qualidade de vídeo**: Permite alterar a qualidade do vídeo com um [botão](https://user-images.githubusercontent.com/78568641/138574366-70324a5e-2d64-4f6a-acdd-dc2a2b9cecc5.png) na sobreposição do vídeo
|
||||
|
||||
- **Alternar vídeo**: Adiciona um [botão](https://user-images.githubusercontent.com/28893833/173663950-63e6610e-a532-49b7-9afa-54cb57ddfc15.png) para alternar entre modos Vídeo/Música. Pode também remover completamente a aba de vídeo
|
||||
|
||||
- **Visualizador**: Diferentes visualizadores de música
|
||||
|
||||
## Tradução
|
||||
|
||||
Você pode ajudar com as traduções no [Hosted Weblate](https://hosted.weblate.org/projects/youtube-music/).
|
||||
|
||||
<a href="https://hosted.weblate.org/engage/youtube-music/">
|
||||
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/multi-auto.svg" alt="status da tradução" />
|
||||
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/287x66-black.png" alt="status da tradução 2" />
|
||||
</a>
|
||||
|
||||
## Download
|
||||
|
||||
Você pode verificar o [último lançamento](https://github.com/th-ch/youtube-music/releases/latest) para encontrar rapidamente a versão mais recente.
|
||||
|
||||
### Arch Linux
|
||||
|
||||
Instale o pacote [`youtube-music-bin`](https://aur.archlinux.org/packages/youtube-music-bin) do AUR. Para instruções de instalação do AUR, consulte esta [página da wiki](https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages).
|
||||
|
||||
### macOS
|
||||
|
||||
Você pode instalar o aplicativo usando Homebrew (veja a [definição do cask](https://github.com/th-ch/homebrew-youtube-music)):
|
||||
|
||||
```bash
|
||||
brew install th-ch/youtube-music/youtube-music
|
||||
```
|
||||
|
||||
Se você instalar o aplicativo manualmente e receber o erro "is damaged and can’t be opened." ao abrir o app, execute o seguinte no Terminal:
|
||||
|
||||
```bash
|
||||
/usr/bin/xattr -cr /Applications/YouTube\ Music.app
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
||||
Você pode usar o [gerenciador de pacotes Scoop](https://scoop.sh) para instalar o pacote `youtube-music` do [`extras bucket`](https://github.com/ScoopInstaller/Extras).
|
||||
|
||||
```bash
|
||||
scoop bucket add extras
|
||||
scoop install extras/youtube-music
|
||||
```
|
||||
|
||||
Alternativamente, você pode usar o [Winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/), o gerenciador de pacotes CLI oficial do Windows 11, para instalar o pacote `th-ch.YouTubeMusic`.
|
||||
|
||||
*Nota: O Microsoft Defender SmartScreen pode bloquear a instalação por ser de um "publicador desconhecido". Isso também acontece na instalação manual ao tentar executar o arquivo .exe após download manual aqui no GitHub (mesmo arquivo).*
|
||||
|
||||
```bash
|
||||
winget install th-ch.YouTubeMusic
|
||||
```
|
||||
|
||||
#### Como instalar sem conexão à internet? (no Windows)
|
||||
|
||||
- Baixe o arquivo `*.nsis.7z` para _sua arquitetura de dispositivo_ na [página de lançamentos](https://github.com/th-ch/youtube-music/releases/latest).
|
||||
- `x64` para Windows 64-bit
|
||||
- `ia32` para Windows 32-bit
|
||||
- `arm64` para Windows ARM64
|
||||
- Baixe o instalador na página de lançamentos (`*-Setup.exe`)
|
||||
- Coloque os arquivos no **mesmo diretório**
|
||||
- Execute o instalador
|
||||
|
||||
## Temas
|
||||
|
||||
Você pode carregar arquivos CSS para alterar a aparência do aplicativo (Opções > Ajustes Visuais > Temas).
|
||||
|
||||
Alguns temas pré-definidos estão disponíveis em https://github.com/kerichdev/themes-for-ytmdesktop-player.
|
||||
|
||||
## Dev
|
||||
|
||||
```bash
|
||||
git clone https://github.com/th-ch/youtube-music
|
||||
cd youtube-music
|
||||
pnpm install --frozen-lockfile
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
## Crie seus próprios plugins
|
||||
|
||||
Usando plugins, você pode:
|
||||
|
||||
- Manipular o aplicativo - o `BrowserWindow` do electron é passado para o manipulador de plugins
|
||||
- Alterar a interface manipulando o HTML/CSS
|
||||
|
||||
### Criando um plugin
|
||||
|
||||
Crie uma pasta em `src/plugins/NOMBRE-DEL-PLUGIN`:
|
||||
|
||||
- `index.ts`: o arquivo principal do plugin
|
||||
```typescript
|
||||
import style from './style.css?inline'; // importar estilo como inline
|
||||
|
||||
import { createPlugin } from '@/utils';
|
||||
|
||||
export default createPlugin({
|
||||
name: "Plugin Label",
|
||||
restartNeeded: true, // se true, o ytmusic mostra diálogo de reinício
|
||||
config: {
|
||||
enabled: false,
|
||||
}, // sua configuração personalizada
|
||||
stylesheets: [style], // seu estilo personalizado
|
||||
menu: async ({ getConfig, setConfig }) => {
|
||||
// Todos os métodos *Config são wrappers Promise<T>
|
||||
const config = await getConfig();
|
||||
return [
|
||||
{
|
||||
label: "menu",
|
||||
submenu: [1, 2, 3].map((value) => ({
|
||||
label: `value ${value}`,
|
||||
type: "radio",
|
||||
checked: config.value === value,
|
||||
click() {
|
||||
setConfig({ value });
|
||||
},
|
||||
})),
|
||||
},
|
||||
];
|
||||
},
|
||||
backend: {
|
||||
start({ window, ipc }) {
|
||||
window.maximize();
|
||||
|
||||
// você pode se comunicar com o plugin renderer
|
||||
ipc.handle("some-event", () => {
|
||||
return "hello";
|
||||
});
|
||||
},
|
||||
// disparado quando a configuração muda
|
||||
onConfigChange(newConfig) { /* ... */ },
|
||||
// disparado quando o plugin é desativado
|
||||
stop(context) { /* ... */ },
|
||||
},
|
||||
renderer: {
|
||||
async start(context) {
|
||||
console.log(await context.ipc.invoke("some-event"));
|
||||
},
|
||||
// Hook disponível apenas no renderer
|
||||
onPlayerApiReady(api: YoutubePlayer, context: RendererContext) {
|
||||
// establecer la configuración del plugin fácilmente
|
||||
context.setConfig({ myConfig: api.getVolume() });
|
||||
},
|
||||
onConfigChange(newConfig) { /* ... */ },
|
||||
stop(_context) { /* ... */ },
|
||||
},
|
||||
preload: {
|
||||
async start({ getConfig }) {
|
||||
const config = await getConfig();
|
||||
},
|
||||
onConfigChange(newConfig) {},
|
||||
stop(_context) {},
|
||||
},
|
||||
});
|
||||
|
||||
```
|
||||
|
||||
### Casos de uso comuns
|
||||
|
||||
- **Injetar CSS personalizado**: crie um arquivo `style.css` na mesma pasta e então:
|
||||
|
||||
```typescript
|
||||
// index.ts
|
||||
import style from './style.css?inline'; // importa estilo como inline
|
||||
|
||||
import { createPlugin } from '@/utils';
|
||||
|
||||
export default createPlugin({
|
||||
name: 'Plugin Label',
|
||||
restartNeeded: true, // se true, o ytmusic mostrará um diálogo de reinício
|
||||
config: {
|
||||
enabled: false,
|
||||
}, // sua configuração personalizada
|
||||
stylesheets: [style], // seu estilo personalizado
|
||||
renderer() {} // define o hook renderer
|
||||
});
|
||||
```
|
||||
|
||||
- Se quiser alterar o HTML:
|
||||
|
||||
```typescript
|
||||
import { createPlugin } from '@/utils';
|
||||
|
||||
export default createPlugin({
|
||||
name: 'Plugin Label',
|
||||
restartNeeded: true, // se true, o ytmusic mostrará o diálogo de reinício
|
||||
config: {
|
||||
enabled: false,
|
||||
}, // sua configuração personalizada
|
||||
renderer() {
|
||||
// Remove o botão de login
|
||||
document.querySelector(".sign-in-link.ytmusic-nav-bar").remove();
|
||||
} // define o hook renderer
|
||||
});
|
||||
```
|
||||
|
||||
- Comunicação entre front-end e back-end: pode ser feita usando o módulo ipcMain do Electron. Consulte o arquivo `index.ts` e o exemplo no plugin `sponsorblock`.
|
||||
|
||||
## Compilar
|
||||
|
||||
1. Clone o repositório
|
||||
2. Siga [este guia](https://pnpm.io/installation) para instalar o `pnpm`
|
||||
3. Execute `pnpm install --frozen-lockfile` para instalar as dependências
|
||||
4. Execute `pnpm build:OS`
|
||||
|
||||
- `pnpm dist:win` - Windows
|
||||
- `pnpm dist:linux` - Linux (amd64)
|
||||
- `pnpm dist:linux:deb-arm64` - Linux (arm64 para Debian)
|
||||
- `pnpm dist:linux:rpm-arm64` - Linux (arm64 para Fedora)
|
||||
- `pnpm dist:mac` - macOS (amd64)
|
||||
- `pnpm dist:mac:arm64` - macOS (arm64)
|
||||
|
||||
Compila o aplicativo para macOS, Linux e Windows,
|
||||
usando [electron-builder](https://github.com/electron-userland/electron-builder).
|
||||
|
||||
## Prévia de Produção
|
||||
|
||||
```bash
|
||||
pnpm start
|
||||
```
|
||||
|
||||
## Testes
|
||||
|
||||
```bash
|
||||
pnpm test
|
||||
```
|
||||
|
||||
Utiliza [Playwright](https://playwright.dev/) para testar o aplicativo.
|
||||
|
||||
## Licença
|
||||
|
||||
MIT © [th-ch](https://github.com/th-ch/youtube-music)
|
||||
|
||||
## Perguntas Frequentes
|
||||
|
||||
### Por que o menu do aplicativo não aparece?
|
||||
|
||||
Se a opção `Ocultar menu` estiver ativada - você pode exibir o menu com a tecla <kbd>alt</kbd> (ou <kbd>\`</kbd> [acento grave] se estiver usando o plugin in-app-menu)
|
||||
374
docs/readme/README-ru.md
Normal file
@ -0,0 +1,374 @@
|
||||
<div align="center">
|
||||
|
||||
# YouTube Music
|
||||
|
||||
[](https://github.com/th-ch/youtube-music/releases/)
|
||||
[](https://github.com/th-ch/youtube-music/blob/master/license)
|
||||
[](https://github.com/th-ch/youtube-music/blob/master/.eslintrc.js)
|
||||
[](https://GitHub.com/th-ch/youtube-music/releases/)
|
||||
[](https://GitHub.com/th-ch/youtube-music/releases/)
|
||||
[](https://aur.archlinux.org/packages/youtube-music-bin)
|
||||
[](https://snyk.io/test/github/th-ch/youtube-music)
|
||||
|
||||
</div>
|
||||
|
||||

|
||||
|
||||
|
||||
<div align="center">
|
||||
<a href="https://github.com/th-ch/youtube-music/releases/latest">
|
||||
<img src="../../web/youtube-music.svg" width="400" height="100" alt="YouTube Music SVG">
|
||||
</a>
|
||||
</div>
|
||||
|
||||
Прочтите это на других языках: [🏴 Английский](../../README.md), [🇰🇷 корейский](./README-ko.md), [🇫🇷 Французский](./README-fr.md), [🇮🇸 исландский](./README-is.md), [🇪🇸 испанский](./README-es.md), [🇷🇺 Русский](./README-ru.md), [🇧🇷 Португальский](./README-pt.md)
|
||||
|
||||
**Клиент для YouTube Music основанный на Electron с поддержкой:**
|
||||
|
||||
- Нативный вид приложения, нацелен на сохранение оригинального интерфейса
|
||||
- Фреймворк для пользовательских плагинов: изменяйте YouTube Music под ваши нужды (внешний вид, контент, возможности), включайте/выключайте плагины в один клик
|
||||
|
||||
## Демо-изображение
|
||||
|
||||
| Экран плеера (цветовая тема альбома & режим Ambient) |
|
||||
|:---------------------------------------------------------------------------------------------------------:|
|
||||
||
|
||||
|
||||
## Содержание
|
||||
|
||||
- [Возможности](#Возможности)
|
||||
- [Доступные плагины](#Доступные-плагины)
|
||||
- [Перевод](#Перевод)
|
||||
- [Скачать](#Скачать)
|
||||
- [Arch Linux](#arch-linux)
|
||||
- [MacOS](#macos)
|
||||
- [Windows](#windows)
|
||||
- [Как установить без подключения к интернету? (в Windows)](#Установка-без-подключения-к-Интернету-в-Windows)
|
||||
- [Темы](#Темы)
|
||||
- [Для разработчиков](#Для-разработчиков)
|
||||
- [Создайте свои собственные плагины](#Создайте-свои-собственные-плагины)
|
||||
- [Создание плагина](#Создание-плагина)
|
||||
- [Примеры использования](#Примеры-использования)
|
||||
- [Сборка](#Сборка)
|
||||
- [Предварительный просмотр](#Предварительный-просмотр)
|
||||
- [Тестирование](#Тестирование)
|
||||
- [Лицензия](#Лицензия)
|
||||
- [Часто задаваемые вопросы](#Часто-задаваемые-вопросы)
|
||||
|
||||
## Возможности:
|
||||
|
||||
- **Авто-подтверждение при паузе** (Всегда включено): отключает всплывающие уведомление ["Продолжить просмотр?"](https://user-images.githubusercontent.com/61631665/129977894-01c60740-7ec6-4bf0-9a2c-25da24491b0e.png),
|
||||
которое приостанавливает воспроизведение через определённое время
|
||||
|
||||
- И больше ...
|
||||
|
||||
## Доступные плагины:
|
||||
|
||||
- **Блокировщик рекламы**: Блокирует всю рекламу и трекеры
|
||||
|
||||
- **Действия с альбомом**: Добавляет кнопки "Убрать дизлайк", "Дизлайк", "Лайк", "Убрать лайк" и применяет их действия ко всем трекам в плейлисте или альбоме
|
||||
|
||||
- **Цветовая тема альбома**: Применяет динамическую тему и эффекты, основываясь на цветовой палитре альбома
|
||||
|
||||
- **Режим Ambient**: Применяет световой эффект, проецируя нежные цвета из видео на задний фон вашего экрана
|
||||
|
||||
- **Нормализация аудио**: Применяет нормализацию к аудио (уменьшает громкость громких частей трека и повышает громкость тихих частей трека)
|
||||
|
||||
- **Размытие панели навигации**: Делает панель навигации прозрачной и размытой
|
||||
|
||||
- **Обход возрастных ограничений**: Обходит проверку возраста YouTube
|
||||
|
||||
- **Выбор субтитров**: Включить субтитры
|
||||
|
||||
- **Компактная боковая панель**: Всегда показывать боковую панель компактно
|
||||
|
||||
- **Плавный переход**: Плавный переход между треками
|
||||
|
||||
- **Отключить автопроигрыш**: Каждый трек начинается в режиме паузы
|
||||
|
||||
- **[Discord](https://discord.com/) Rich Presence**: Показывает вашим друзьям, что вы слушаете с помощью [Rich Presence](https://user-images.githubusercontent.com/28219076/104362104-a7a0b980-5513-11eb-9744-bb89eabe0016.png)
|
||||
|
||||
- **Загрузчик**: Загрузка MP3 [напрямую из интерфейса](https://user-images.githubusercontent.com/61631665/129977677-83a7d067-c192-45e1-98ae-b5a4927393be.png) [(youtube-dl)](https://github.com/ytdl-org/youtube-dl)
|
||||
|
||||
- **Расширенная громкость**: Делает слайдер громкости [расширенным](https://greasyfork.org/en/scripts/397686-youtube-music-fix-volume-ratio/) облегчая выбор громкости
|
||||
|
||||
- **Меню в приложении**: [Придаёт панели меню красивый тёмный вид](https://user-images.githubusercontent.com/78568641/112215894-923dbf00-8c29-11eb-95c3-3ce15db27eca.png)
|
||||
|
||||
> (посмотрите [этот пост,](https://github.com/th-ch/youtube-music/issues/410#issuecomment-952060709) если у вас есть проблемы с доступом к меню после включения этого плагина и опции "Скрыть меню")
|
||||
|
||||
- **Скробблер**: Добавляет поддержку скробблинга [Last.fm](https://www.last.fm/) и [ListenBrainz](https://listenbrainz.org/)
|
||||
|
||||
- **Lumia Stream**: Добавляет поддержку [Lumia Stream](https://lumiastream.com/)
|
||||
|
||||
- **Тесты песен Genius**: Добавляет поддержку текстов для большинства песен
|
||||
|
||||
- **Music Together**: Делитесь плейлистом с другими. Когда ведущий воспроизводит трек, все остальные будут слушать этот же трек.
|
||||
|
||||
- **Навигация**: Кнопки Назад/Вперед интегрированы в интерфейс, как в вашем любимом браузере
|
||||
|
||||
- **Без входа в систему Google**: Убирает из интерфейса кнопки и ссылки для входа через Google
|
||||
|
||||
- **Уведомления**: Показывает уведомление, когда трек начинает играть ([интерактивные уведомления](https://user-images.githubusercontent.com/78568641/114102651-63ce0e00-98d0-11eb-9dfe-c5a02bb54f9c.png) доступны только для Windows)
|
||||
|
||||
- **Картинка в картинке**: Позволяет переключить приложение в режим "картинка в картинке"
|
||||
|
||||
- **Скорость воспроизведения**: Слушайте быстрее, слушайте медленнее! [Добавляет слайдер для контроля скорости трека](https://user-images.githubusercontent.com/61631665/129976003-e55db5ba-bf42-448c-a059-26a009775e68.png)
|
||||
|
||||
- **Точная громкость**: Точечно управляйте громкостью с помощью колеса мыши/горячих клавиш, с кастомным интерфейсом и настраиваемыми шагами громкости
|
||||
|
||||
- **Ярлыки (и MPRIS)**: Позволяет настроить глобальные горячие клавиши управления воспроизведением (плей/пауза/следующий/предыдущий) + отключает [отображение медиа на экране,](https://user-images.githubusercontent.com/84923831/128601225-afa38c1f-dea8-4209-9f72-0f84c1dd8b54.png) переопределяя клавиши управления + включает Ctrl/CMD + F для поиска + включает поддержку linux mpris для клавиш управления медиа + [настраиваемые сочетания клавиш](https://github.com/Araxeus/youtube-music/blob/1e591d6a3df98449bcda6e63baab249b28026148/providers/song-controls.js#L13-L50) для [продвинутых пользователей](https://github.com/th-ch/youtube-music/issues/106#issuecomment-952156902)
|
||||
|
||||
- **Пропускать непонравившиеся треки**: Пропускает непонравившиеся треки
|
||||
|
||||
- **Пропуск тишины**: Автоматически пропускает тихие моменты в песнях
|
||||
|
||||
- [**SponsorBlock**](https://github.com/ajayyy/SponsorBlock): Автоматически пропускает немузыкальные части, такие как интро/аутро музыкальных видео, где трек не играет
|
||||
|
||||
- **Управление воспроизведением из панели задач**: Управляйте воспроизведением из [панели задач Windows](https://user-images.githubusercontent.com/78568641/111916130-24a35e80-8a82-11eb-80c8-5021c1aa27f4.png)
|
||||
|
||||
- **TouchBar**: Кастомная раскладка TouchBar для MacOS
|
||||
|
||||
- **Tuna OBS**: Интеграция с [OBS](https://obsproject.com/) плагином [Tuna](https://obsproject.com/forum/resources/tuna.843/)
|
||||
|
||||
- **Изменение качества видео**: Позволяет менять качество видео [кнопкой](https://user-images.githubusercontent.com/78568641/138574366-70324a5e-2d64-4f6a-acdd-dc2a2b9cecc5.png) на медиаплеере видео
|
||||
|
||||
- **Переключатель видео**: Добавляет
|
||||
[кнопку](https://user-images.githubusercontent.com/28893833/173663950-63e6610e-a532-49b7-9afa-54cb57ddfc15.png) переключения режимов Трек/Видео. Также может удалять вкладку "Видео" полностью
|
||||
|
||||
- **Визуализатор**: Различные визуализаторы музыки
|
||||
|
||||
- **Synced Lyrics**:
|
||||
Предоставляет синхронизированные слова для песен из таких источников, как [LRClib](https://lrclib.net).
|
||||
|
||||
## Перевод
|
||||
|
||||
Вы можете помочь с переводом на ваш язык на [Hosted Weblate](https://hosted.weblate.org/projects/youtube-music/).
|
||||
|
||||
<a href="https://hosted.weblate.org/engage/youtube-music/">
|
||||
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/multi-auto.svg" alt="translation status" />
|
||||
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/287x66-black.png" alt="translation status 2" />
|
||||
</a>
|
||||
|
||||
## Скачать
|
||||
|
||||
Вы можете посмотреть [latest release,](https://github.com/th-ch/youtube-music/releases/latest) чтобы быстро найти новую версию.
|
||||
|
||||
### Arch Linux
|
||||
|
||||
Установите пакет [`youtube-music-bin`](https://aur.archlinux.org/packages/youtube-music-bin) из AUR. Инструкции по установке из AUR можете найти на этой [вики-странице](https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages).
|
||||
|
||||
### macOS
|
||||
|
||||
Вы можете установить приложение с помощью Homebrew (сморите [cask definition](https://github.com/th-ch/homebrew-youtube-music)):
|
||||
|
||||
```bash
|
||||
brew install th-ch/youtube-music/youtube-music
|
||||
```
|
||||
|
||||
Если вы устанавливаете приложение вручную и получаете ошибку "is damaged and can’t be opened.", запустите в терминале следующую команду:
|
||||
|
||||
```bash
|
||||
/usr/bin/xattr -cr /Applications/YouTube\ Music.app
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
||||
Вы можете использовать [пакетный менеджер Scoop](https://scoop.sh) для установки пакета `youtube-music` из [`extras` bucket](https://github.com/ScoopInstaller/Extras).
|
||||
|
||||
```bash
|
||||
scoop bucket add extras
|
||||
scoop install extras/youtube-music
|
||||
```
|
||||
|
||||
Также для установки вы можете использовать [Winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/), официальный пакетный менеджер командной строки Windows 11, для установки пакета `th-ch.YouTubeMusic`.
|
||||
|
||||
*К сведению: SmartScreen защитника Windows может блокировать установку, так как она от "неизвестного издателя". Это также применимо к методу ручной установки, когда вы пытаетесь запустить исполняемый файл(.exe) после загрузки здесь, на GitHub (тот же файл).*
|
||||
|
||||
```bash
|
||||
winget install th-ch.YouTubeMusic
|
||||
```
|
||||
|
||||
#### Установка без подключения к Интернету? (в Windows)
|
||||
|
||||
- Скачайте файл `*.nsis.7z` из _архетиктура вашего устройства_ на [release page](https://github.com/th-ch/youtube-music/releases/latest).
|
||||
- `x64` для 64-bit Windows
|
||||
- `ia32` для 32-bit Windows
|
||||
- `arm64` для ARM64 Windows
|
||||
- Скачайте установщик в release page. (`*-Setup.exe`)
|
||||
- Поместите их в **одной директории**.
|
||||
- Запустите установщик.
|
||||
|
||||
## Темы
|
||||
|
||||
Вы можете загрузить файл CSS для смены внешнего вида приложения (Настройки > Визуальные настройки > Тема).
|
||||
|
||||
Некоторые предустановленные темы доступны здесь: https://github.com/kerichdev/themes-for-ytmdesktop-player.
|
||||
|
||||
## Для разработчиков
|
||||
|
||||
```bash
|
||||
git clone https://github.com/th-ch/youtube-music
|
||||
cd youtube-music
|
||||
pnpm install --frozen-lockfile
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
## Создайте свои собственные плагины
|
||||
|
||||
Используя плагины вы можете:
|
||||
|
||||
- Манипулировать приложением - `BrowserWindow` из electron проброшен обработчику плагинов
|
||||
- Изменять внешний вид, манипулируя HTML/CSS
|
||||
|
||||
### Создание плагина
|
||||
|
||||
Создайте директорию в `src/plugins/YOUR-PLUGIN-NAME`:
|
||||
|
||||
- `index.ts`: основной файл плагина
|
||||
```typescript
|
||||
import style from './style.css?inline'; // import style as inline
|
||||
|
||||
import { createPlugin } from '@/utils';
|
||||
|
||||
export default createPlugin({
|
||||
name: 'Plugin Label',
|
||||
restartNeeded: true, // if value is true, ytmusic show restart dialog
|
||||
config: {
|
||||
enabled: false,
|
||||
}, // your custom config
|
||||
stylesheets: [style], // your custom style,
|
||||
menu: async ({ getConfig, setConfig }) => {
|
||||
// All *Config methods are wrapped Promise<T>
|
||||
const config = await getConfig();
|
||||
return [
|
||||
{
|
||||
label: 'menu',
|
||||
submenu: [1, 2, 3].map((value) => ({
|
||||
label: `value ${value}`,
|
||||
type: 'radio',
|
||||
checked: config.value === value,
|
||||
click() {
|
||||
setConfig({ value });
|
||||
},
|
||||
})),
|
||||
},
|
||||
];
|
||||
},
|
||||
backend: {
|
||||
start({ window, ipc }) {
|
||||
window.maximize();
|
||||
|
||||
// you can communicate with renderer plugin
|
||||
ipc.handle('some-event', () => {
|
||||
return 'hello';
|
||||
});
|
||||
},
|
||||
// it fired when config changed
|
||||
onConfigChange(newConfig) { /* ... */ },
|
||||
// it fired when plugin disabled
|
||||
stop(context) { /* ... */ },
|
||||
},
|
||||
renderer: {
|
||||
async start(context) {
|
||||
console.log(await context.ipc.invoke('some-event'));
|
||||
},
|
||||
// Only renderer available hook
|
||||
onPlayerApiReady(api: YoutubePlayer, context: RendererContext) {
|
||||
// set plugin config easily
|
||||
context.setConfig({ myConfig: api.getVolume() });
|
||||
},
|
||||
onConfigChange(newConfig) { /* ... */ },
|
||||
stop(_context) { /* ... */ },
|
||||
},
|
||||
preload: {
|
||||
async start({ getConfig }) {
|
||||
const config = await getConfig();
|
||||
},
|
||||
onConfigChange(newConfig) {},
|
||||
stop(_context) {},
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
### Примеры использования
|
||||
|
||||
- Кастомный CSS: создайте файл `style.css` в той же директории, затем:
|
||||
|
||||
```typescript
|
||||
// index.ts
|
||||
import style from './style.css?inline'; // import style as inline
|
||||
|
||||
import { createPlugin } from '@/utils';
|
||||
|
||||
export default createPlugin({
|
||||
name: 'Plugin Label',
|
||||
restartNeeded: true, // if value is true, ytmusic will show a restart dialog
|
||||
config: {
|
||||
enabled: false,
|
||||
}, // your custom config
|
||||
stylesheets: [style], // your custom style
|
||||
renderer() {} // define renderer hook
|
||||
});
|
||||
```
|
||||
|
||||
- Если вы хотите изменить HTML:
|
||||
|
||||
```typescript
|
||||
import { createPlugin } from '@/utils';
|
||||
|
||||
export default createPlugin({
|
||||
name: 'Plugin Label',
|
||||
restartNeeded: true, // if value is true, ytmusic will show the restart dialog
|
||||
config: {
|
||||
enabled: false,
|
||||
}, // your custom config
|
||||
renderer() {
|
||||
// Remove the login button
|
||||
document.querySelector(".sign-in-link.ytmusic-nav-bar").remove();
|
||||
} // define renderer hook
|
||||
});
|
||||
```
|
||||
|
||||
- обмен между фронтом и бэком может быть выполнен с помощью модуля ipcMain из electron. Смотрите файл `index.ts` и
|
||||
пример в плагине `sponsorblock`.
|
||||
|
||||
## Сборка
|
||||
|
||||
1. Склонируйте репозиторий
|
||||
2. Следуйте [этой инструкции,](https://pnpm.io/installation) чтобы установить `pnpm`
|
||||
3. Запустите `pnpm install --frozen-lockfile` для установки зависимостей
|
||||
4. Запустите `pnpm build:OS`
|
||||
|
||||
- `pnpm dist:win` - Windows
|
||||
- `pnpm dist:linux` - Linux (amd64)
|
||||
- `pnpm dist:linux:deb-arm64` - Linux (arm64 for Debian)
|
||||
- `pnpm dist:linux:rpm-arm64` - Linux (arm64 for Fedora)
|
||||
- `pnpm dist:mac` - macOS (amd64)
|
||||
- `pnpm dist:mac:arm64` - macOS (arm64)
|
||||
|
||||
Сборка приложения для macOS, Linux, и Windows,
|
||||
используя [electron-builder](https://github.com/electron-userland/electron-builder).
|
||||
|
||||
## Предварительный просмотр
|
||||
|
||||
```bash
|
||||
pnpm start
|
||||
```
|
||||
|
||||
## Тестирование
|
||||
|
||||
```bash
|
||||
pnpm test
|
||||
```
|
||||
|
||||
Использует [Playwright](https://playwright.dev/) для тестирования приложения.
|
||||
|
||||
## Лицензия
|
||||
|
||||
MIT © [th-ch](https://github.com/th-ch/youtube-music)
|
||||
|
||||
## Часто задаваемые вопросы
|
||||
|
||||
### Почему меня приложения не отображается?
|
||||
|
||||
Если опция `Скрыть меню` включена - вы можете отобразить меню с помощью клавиши <kbd>alt</kbd> (или <kbd>\`</kbd> [обратный апостроф], если используете плагин "Меню в приложении")
|
||||
@ -1,17 +1,17 @@
|
||||
import { resolve, dirname } from 'node:path';
|
||||
import { dirname, join, resolve } from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
|
||||
import { UserConfig } from 'vite';
|
||||
import { defineConfig, defineViteConfig } from 'electron-vite';
|
||||
import builtinModules from 'builtin-modules';
|
||||
import viteResolve from 'vite-plugin-resolve';
|
||||
import Inspect from 'vite-plugin-inspect';
|
||||
import solidPlugin from 'vite-plugin-solid';
|
||||
|
||||
import { pluginVirtualModuleGenerator } from './vite-plugins/plugin-importer.mjs';
|
||||
import pluginLoader from './vite-plugins/plugin-loader.mjs';
|
||||
|
||||
import type { UserConfig } from 'vite';
|
||||
import { i18nImporter } from './vite-plugins/i18n-importer.mjs';
|
||||
import solidPlugin from 'vite-plugin-solid';
|
||||
|
||||
const __dirname = dirname(fileURLToPath(import.meta.url));
|
||||
|
||||
@ -51,8 +51,12 @@ export default defineConfig({
|
||||
};
|
||||
|
||||
if (mode === 'development') {
|
||||
commonConfig.build!.sourcemap = 'inline';
|
||||
commonConfig.plugins?.push(
|
||||
Inspect({ build: true, outputDir: '.vite-inspect/backend' }),
|
||||
Inspect({
|
||||
build: true,
|
||||
outputDir: join(__dirname, '.vite-inspect/backend'),
|
||||
}),
|
||||
);
|
||||
return commonConfig;
|
||||
}
|
||||
@ -95,8 +99,12 @@ export default defineConfig({
|
||||
};
|
||||
|
||||
if (mode === 'development') {
|
||||
commonConfig.build!.sourcemap = 'inline';
|
||||
commonConfig.plugins?.push(
|
||||
Inspect({ build: true, outputDir: '.vite-inspect/preload' }),
|
||||
Inspect({
|
||||
build: true,
|
||||
outputDir: join(__dirname, '.vite-inspect/preload'),
|
||||
}),
|
||||
);
|
||||
return commonConfig;
|
||||
}
|
||||
@ -139,11 +147,20 @@ export default defineConfig({
|
||||
resolve: {
|
||||
alias: resolveAlias,
|
||||
},
|
||||
server: {
|
||||
cors: {
|
||||
origin: 'https://music.youtube.com',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
if (mode === 'development') {
|
||||
commonConfig.build!.sourcemap = 'inline';
|
||||
commonConfig.plugins?.push(
|
||||
Inspect({ build: true, outputDir: '.vite-inspect/renderer' }),
|
||||
Inspect({
|
||||
build: true,
|
||||
outputDir: join(__dirname, '.vite-inspect/renderer'),
|
||||
}),
|
||||
);
|
||||
return commonConfig;
|
||||
}
|
||||
|
||||
80
eslint.config.mjs
Normal file
@ -0,0 +1,80 @@
|
||||
//@ts-check
|
||||
|
||||
import eslint from '@eslint/js';
|
||||
import prettier from 'eslint-plugin-prettier/recommended';
|
||||
import stylistic from '@stylistic/eslint-plugin-js';
|
||||
import tsEslint from 'typescript-eslint';
|
||||
|
||||
import * as importPlugin from 'eslint-plugin-import';
|
||||
|
||||
export default tsEslint.config(
|
||||
eslint.configs.recommended,
|
||||
tsEslint.configs.eslintRecommended,
|
||||
...tsEslint.configs.recommendedTypeChecked,
|
||||
prettier,
|
||||
{ ignores: ['dist', 'node_modules', '*.config.*js', '*.test.*js'] },
|
||||
{
|
||||
plugins: {
|
||||
stylistic,
|
||||
importPlugin
|
||||
},
|
||||
languageOptions: {
|
||||
parser: tsEslint.parser,
|
||||
parserOptions: {
|
||||
project: true,
|
||||
sourceType: 'module',
|
||||
ecmaVersion: 'latest'
|
||||
}
|
||||
},
|
||||
rules: {
|
||||
'stylistic/arrow-parens': ['error', 'always'],
|
||||
'stylistic/object-curly-spacing': ['error', 'always'],
|
||||
'prettier/prettier': ['error', { singleQuote: true, semi: true, tabWidth: 2, trailingComma: 'all', quoteProps: 'preserve' }],
|
||||
'@typescript-eslint/no-floating-promises': 'off',
|
||||
'@typescript-eslint/no-misused-promises': ['off', { checksVoidReturn: false }],
|
||||
'@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
|
||||
'@typescript-eslint/no-non-null-assertion': 'off',
|
||||
'importPlugin/first': 'error',
|
||||
'importPlugin/newline-after-import': 'off',
|
||||
'importPlugin/no-default-export': 'off',
|
||||
'importPlugin/no-duplicates': 'error',
|
||||
'importPlugin/no-unresolved': ['error', { ignore: ['^virtual:', '\\?inline$', '\\?raw$', '\\?asset&asarUnpack'] }],
|
||||
'importPlugin/order': ['error', {
|
||||
'groups': ['builtin', 'external', ['internal', 'index', 'sibling'], 'parent', 'type'],
|
||||
'newlines-between': 'always-and-inside-groups',
|
||||
'alphabetize': { order: 'ignore', caseInsensitive: false }
|
||||
}],
|
||||
'importPlugin/prefer-default-export': 'off',
|
||||
'camelcase': ['error', { properties: 'never' }],
|
||||
'class-methods-use-this': 'off',
|
||||
'stylistic/lines-around-comment': ['error', {
|
||||
beforeBlockComment: false,
|
||||
afterBlockComment: false,
|
||||
beforeLineComment: false,
|
||||
afterLineComment: false,
|
||||
}],
|
||||
'stylistic/max-len': 'off',
|
||||
'stylistic/no-mixed-operators': 'warn', // prettier does not support no-mixed-operators
|
||||
'stylistic/no-multi-spaces': ['error', { ignoreEOLComments: true }],
|
||||
'stylistic/no-tabs': 'error',
|
||||
'no-void': 'error',
|
||||
'no-empty': 'off',
|
||||
'prefer-promise-reject-errors': 'off',
|
||||
'stylistic/quotes': ['error', 'single', {
|
||||
avoidEscape: true,
|
||||
allowTemplateLiterals: false,
|
||||
}],
|
||||
'stylistic/quote-props': ['error', 'consistent'],
|
||||
'stylistic/semi': ['error', 'always'],
|
||||
},
|
||||
settings: {
|
||||
'import/parsers': {
|
||||
'@typescript-eslint/parser': ['.ts']
|
||||
},
|
||||
'import/resolver': {
|
||||
typescript: {},
|
||||
exports: {},
|
||||
},
|
||||
},
|
||||
},
|
||||
);
|
||||
275
package.json
@ -1,7 +1,8 @@
|
||||
{
|
||||
"name": "youtube-music",
|
||||
"desktopName": "com.github.th_ch.youtube_music",
|
||||
"productName": "YouTube Music",
|
||||
"version": "3.3.1",
|
||||
"version": "3.9.0",
|
||||
"description": "YouTube Music Desktop App - including custom plugins",
|
||||
"main": "./dist/main/index.js",
|
||||
"license": "MIT",
|
||||
@ -21,7 +22,7 @@
|
||||
"license",
|
||||
"!node_modules",
|
||||
"node_modules/custom-electron-prompt/**",
|
||||
"node_modules/@cliqz/adblocker-electron-preload/**",
|
||||
"node_modules/@ghostery/adblocker-electron-preload/**",
|
||||
"node_modules/@ffmpeg.wasm/core-mt/**",
|
||||
"!node_modules/**/*.map",
|
||||
"!node_modules/**/*.ts"
|
||||
@ -40,7 +41,8 @@
|
||||
]
|
||||
}
|
||||
],
|
||||
"icon": "assets/generated/icons/mac/icon.icns"
|
||||
"icon": "assets/generated/icons/mac/icon.icns",
|
||||
"compression": "maximum"
|
||||
},
|
||||
"win": {
|
||||
"icon": "assets/generated/icons/win/icon.ico",
|
||||
@ -61,7 +63,8 @@
|
||||
"arm64"
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"compression": "maximum"
|
||||
},
|
||||
"nsisWeb": {
|
||||
"runAfterFinish": false
|
||||
@ -69,17 +72,109 @@
|
||||
"linux": {
|
||||
"icon": "assets/generated/icons/png",
|
||||
"category": "AudioVideo",
|
||||
"desktop": {
|
||||
"entry": {
|
||||
"StartupWMClass": "com.github.th_ch.youtube_music"
|
||||
}
|
||||
},
|
||||
"target": [
|
||||
"AppImage",
|
||||
"snap",
|
||||
"freebsd",
|
||||
"deb",
|
||||
"rpm"
|
||||
{
|
||||
"target": "AppImage",
|
||||
"arch": [
|
||||
"x64",
|
||||
"arm64",
|
||||
"armv7l"
|
||||
]
|
||||
},
|
||||
{
|
||||
"target": "flatpak",
|
||||
"arch": [
|
||||
"x64"
|
||||
]
|
||||
},
|
||||
{
|
||||
"target": "deb",
|
||||
"arch": [
|
||||
"x64",
|
||||
"arm64",
|
||||
"armv7l"
|
||||
]
|
||||
},
|
||||
{
|
||||
"target": "rpm",
|
||||
"arch": [
|
||||
"x64",
|
||||
"arm64"
|
||||
]
|
||||
},
|
||||
{
|
||||
"target": "snap",
|
||||
"arch": [
|
||||
"x64"
|
||||
]
|
||||
},
|
||||
{
|
||||
"target": "freebsd",
|
||||
"arch": [
|
||||
"x64",
|
||||
"arm64",
|
||||
"armv7l"
|
||||
]
|
||||
},
|
||||
{
|
||||
"target": "tar.gz",
|
||||
"arch": [
|
||||
"x64",
|
||||
"arm64",
|
||||
"armv7l"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"appImage": {
|
||||
"description": "YouTube Music Desktop App bundled with custom plugins (and built-in ad blocker / downloader)",
|
||||
"category": "AudioVideo"
|
||||
},
|
||||
"flatpak": {
|
||||
"description": "YouTube Music Desktop App bundled with custom plugins (and built-in ad blocker / downloader)",
|
||||
"category": "AudioVideo",
|
||||
"runtimeVersion": "24.08",
|
||||
"baseVersion": "24.08",
|
||||
"finishArgs": [
|
||||
"--socket=wayland",
|
||||
"--socket=x11",
|
||||
"--share=ipc",
|
||||
"--device=dri",
|
||||
"--socket=pulseaudio",
|
||||
"--share=network",
|
||||
"--filesystem=xdg-music:rw",
|
||||
"--talk-name=org.freedesktop.Notifications",
|
||||
"--talk-name=org.gnome.SessionManager",
|
||||
"--talk-name=org.kde.StatusNotifierWatcher",
|
||||
"--own-name=org.mpris.MediaPlayer2.YoutubeMusic.*"
|
||||
]
|
||||
},
|
||||
"deb": {
|
||||
"depends": [
|
||||
"libgtk-3-0",
|
||||
"libnotify4",
|
||||
"libnss3",
|
||||
"libxss1",
|
||||
"libxtst6",
|
||||
"xdg-utils",
|
||||
"libatspi2.0-0",
|
||||
"libuuid1",
|
||||
"libasound2",
|
||||
"libgbm1"
|
||||
]
|
||||
},
|
||||
"rpm": {
|
||||
"depends": [
|
||||
"/usr/lib64/libuuid.so.1"
|
||||
],
|
||||
"fpm": [
|
||||
"--rpm-rpmbuild-define",
|
||||
"_build_id_links none"
|
||||
]
|
||||
},
|
||||
"snap": {
|
||||
@ -102,11 +197,14 @@
|
||||
"vite:inspect": "pnpm clean && electron-vite build --mode development && pnpm exec serve .vite-inspect",
|
||||
"start": "electron-vite preview",
|
||||
"start:debug": "cross-env ELECTRON_ENABLE_LOGGING=1 pnpm start",
|
||||
"dev": "electron-vite dev --watch",
|
||||
"dev": "cross-env NODE_OPTIONS=--enable-source-maps electron-vite dev --watch",
|
||||
"dev:renderer": "cross-env NODE_OPTIONS=--enable-source-maps electron-vite dev",
|
||||
"dev:debug": "cross-env ELECTRON_ENABLE_LOGGING=1 pnpm dev",
|
||||
"clean": "del-cli dist && del-cli pack && del-cli .vite-inspect",
|
||||
"dist": "pnpm clean && pnpm build && pnpm electron-builder --win --mac --linux -p never",
|
||||
"dist:linux": "pnpm clean && pnpm build && pnpm electron-builder --linux -p never",
|
||||
"dist:linux:deb-arm64": "pnpm clean && pnpm build && pnpm electron-builder --linux deb:arm64 -p never",
|
||||
"dist:linux:rpm-arm64": "pnpm clean && pnpm build && pnpm electron-builder --linux rpm:arm64 -p never",
|
||||
"dist:mac": "pnpm clean && pnpm build && pnpm electron-builder --mac dmg:x64 -p never",
|
||||
"dist:mac:arm64": "pnpm clean && pnpm build && pnpm electron-builder --mac dmg:arm64 -p never",
|
||||
"dist:win": "pnpm clean && pnpm build && pnpm electron-builder --win -p never",
|
||||
@ -119,112 +217,139 @@
|
||||
"typecheck": "tsc -p tsconfig.json --noEmit"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0"
|
||||
"node": ">=18",
|
||||
"pnpm": ">=10"
|
||||
},
|
||||
"pnpm": {
|
||||
"overrides": {
|
||||
"usocket": "1.0.1",
|
||||
"node-gyp": "10.0.1",
|
||||
"vite": "6.3.3",
|
||||
"node-gyp": "11.2.0",
|
||||
"xml2js": "0.6.2",
|
||||
"node-fetch": "3.3.2",
|
||||
"@electron/universal": "2.0.1",
|
||||
"@babel/runtime": "7.23.8"
|
||||
"@electron/universal": "2.0.2",
|
||||
"@babel/runtime": "7.27.0"
|
||||
},
|
||||
"patchedDependencies": {
|
||||
"vudio@2.1.1": "patches/vudio@2.1.1.patch",
|
||||
"@xhayper/discord-rpc@1.1.2": "patches/@xhayper__discord-rpc@1.1.2.patch"
|
||||
}
|
||||
"@malept/flatpak-bundler@0.4.0": "patches/@malept__flatpak-bundler@0.4.0.patch",
|
||||
"kuromoji@0.1.2": "patches/kuromoji@0.1.2.patch"
|
||||
},
|
||||
"neverBuiltDependencies": []
|
||||
},
|
||||
"dependencies": {
|
||||
"@cliqz/adblocker-electron": "1.26.15",
|
||||
"@cliqz/adblocker-electron-preload": "1.26.15",
|
||||
"@electron-toolkit/tsconfig": "1.0.1",
|
||||
"@electron/remote": "2.1.2",
|
||||
"@ffmpeg.wasm/core-mt": "0.12.0",
|
||||
"@ffmpeg.wasm/main": "0.12.0",
|
||||
"@floating-ui/dom": "1.6.3",
|
||||
"@floating-ui/dom": "1.6.13",
|
||||
"@foobar404/wave": "2.0.5",
|
||||
"@ghostery/adblocker-electron": "2.5.1",
|
||||
"@ghostery/adblocker-electron-preload": "2.5.1",
|
||||
"@hono/node-server": "1.14.1",
|
||||
"@hono/swagger-ui": "0.5.1",
|
||||
"@hono/zod-openapi": "0.19.5",
|
||||
"@hono/zod-validator": "0.4.3",
|
||||
"@jellybrick/dbus-next": "0.10.3",
|
||||
"@jellybrick/electron-better-web-request": "1.0.4",
|
||||
"@jellybrick/mpris-service": "2.1.4",
|
||||
"@xhayper/discord-rpc": "1.1.2",
|
||||
"async-mutex": "0.4.1",
|
||||
"@jellybrick/mpris-service": "2.1.5",
|
||||
"@jimp/plugin-color": "1.6.0",
|
||||
"@skyra/jaro-winkler": "1.1.1",
|
||||
"@xhayper/discord-rpc": "1.2.1",
|
||||
"async-mutex": "0.5.0",
|
||||
"bgutils-js": "3.2.0",
|
||||
"butterchurn": "3.0.0-beta.4",
|
||||
"butterchurn-presets": "3.0.0-beta.4",
|
||||
"color": "4.2.3",
|
||||
"conf": "10.2.0",
|
||||
"custom-electron-prompt": "1.5.7",
|
||||
"dbus-next": "0.10.2",
|
||||
"deepmerge-ts": "5.1.0",
|
||||
"electron-debug": "3.2.0",
|
||||
"color": "5.0.0",
|
||||
"conf": "13.1.0",
|
||||
"custom-electron-prompt": "1.5.8",
|
||||
"deepmerge-ts": "7.1.5",
|
||||
"delay": "6.0.0",
|
||||
"electron-debug": "4.1.0",
|
||||
"electron-is": "3.0.0",
|
||||
"electron-localshortcut": "3.2.1",
|
||||
"electron-store": "8.1.0",
|
||||
"electron-store": "10.0.1",
|
||||
"electron-unhandled": "4.0.1",
|
||||
"electron-updater": "6.1.7",
|
||||
"fast-average-color": "9.4.0",
|
||||
"fast-equals": "5.0.1",
|
||||
"electron-updater": "6.6.2",
|
||||
"es-hangul": "2.3.2",
|
||||
"fast-average-color": "9.5.0",
|
||||
"fast-equals": "5.2.2",
|
||||
"filenamify": "6.0.0",
|
||||
"hanja": "1.1.4",
|
||||
"happy-dom": "17.4.4",
|
||||
"hono": "4.7.7",
|
||||
"howler": "2.2.4",
|
||||
"html-to-text": "9.0.5",
|
||||
"i18next": "23.8.3",
|
||||
"i18next": "25.0.1",
|
||||
"jimp": "1.6.0",
|
||||
"keyboardevent-from-electron-accelerator": "2.0.0",
|
||||
"keyboardevents-areequal": "0.2.2",
|
||||
"node-html-parser": "6.1.12",
|
||||
"node-id3": "0.2.6",
|
||||
"peerjs": "1.5.2",
|
||||
"semver": "7.6.0",
|
||||
"serve": "14.2.1",
|
||||
"kuromoji": "0.1.2",
|
||||
"kuroshiro": "1.2.0",
|
||||
"kuroshiro-analyzer-kuromoji": "1.1.0",
|
||||
"lazy-var": "2.2.2",
|
||||
"node-html-parser": "7.0.1",
|
||||
"node-id3": "0.2.9",
|
||||
"peerjs": "1.5.4",
|
||||
"pinyin": "4.0.0-alpha.2",
|
||||
"segmentit": "2.0.3",
|
||||
"semver": "7.7.1",
|
||||
"serve": "14.2.4",
|
||||
"simple-youtube-age-restriction-bypass": "github:organization/Simple-YouTube-Age-Restriction-Bypass#v2.5.9",
|
||||
"solid-floating-ui": "0.3.1",
|
||||
"solid-js": "1.8.15",
|
||||
"solid-js": "1.9.5",
|
||||
"solid-styled-components": "0.28.5",
|
||||
"solid-transition-group": "0.2.3",
|
||||
"ts-morph": "21.0.1",
|
||||
"solid-transition-group": "0.3.0",
|
||||
"ts-morph": "25.0.1",
|
||||
"vudio": "2.1.1",
|
||||
"x11": "2.3.0",
|
||||
"youtubei.js": "9.0.2"
|
||||
"youtubei.js": "13.4.0",
|
||||
"zod": "3.24.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@playwright/test": "1.41.2",
|
||||
"@total-typescript/ts-reset": "0.5.1",
|
||||
"@types/color": "3.0.6",
|
||||
"@eslint/js": "9.25.1",
|
||||
"@malept/flatpak-bundler": "0.4.0",
|
||||
"@playwright/test": "1.52.0",
|
||||
"@stylistic/eslint-plugin-js": "4.2.0",
|
||||
"@total-typescript/ts-reset": "0.6.1",
|
||||
"@types/electron-localshortcut": "3.1.3",
|
||||
"@types/howler": "2.2.11",
|
||||
"@types/howler": "2.2.12",
|
||||
"@types/html-to-text": "9.0.4",
|
||||
"@types/semver": "7.5.7",
|
||||
"@typescript-eslint/eslint-plugin": "7.0.1",
|
||||
"bufferutil": "4.0.8",
|
||||
"builtin-modules": "3.3.0",
|
||||
"@types/semver": "7.7.0",
|
||||
"@types/trusted-types": "2.0.7",
|
||||
"bufferutil": "4.0.9",
|
||||
"builtin-modules": "5.0.0",
|
||||
"cross-env": "7.0.3",
|
||||
"del-cli": "5.1.0",
|
||||
"discord-api-types": "0.37.70",
|
||||
"electron": "28.2.3",
|
||||
"electron-builder": "24.9.1",
|
||||
"electron-devtools-installer": "3.2.0",
|
||||
"electron-vite": "2.0.0",
|
||||
"esbuild": "0.20.0",
|
||||
"eslint": "8.56.0",
|
||||
"del-cli": "6.0.0",
|
||||
"discord-api-types": "0.38.1",
|
||||
"electron": "34.5.3",
|
||||
"electron-builder": "26.0.12",
|
||||
"electron-builder-squirrel-windows": "26.0.12",
|
||||
"electron-devtools-installer": "4.0.0",
|
||||
"electron-vite": "3.1.0",
|
||||
"esbuild": "0.25.3",
|
||||
"eslint": "9.25.1",
|
||||
"eslint-config-prettier": "10.1.2",
|
||||
"eslint-import-resolver-exports": "1.0.0-beta.5",
|
||||
"eslint-import-resolver-typescript": "3.6.1",
|
||||
"eslint-plugin-import": "2.29.1",
|
||||
"eslint-plugin-prettier": "5.1.3",
|
||||
"glob": "10.3.10",
|
||||
"node-gyp": "10.0.1",
|
||||
"playwright": "1.41.2",
|
||||
"rollup": "4.12.0",
|
||||
"typescript": "5.3.3",
|
||||
"utf-8-validate": "6.0.3",
|
||||
"vite": "5.1.3",
|
||||
"vite-plugin-inspect": "0.8.3",
|
||||
"vite-plugin-resolve": "2.5.1",
|
||||
"vite-plugin-solid": "2.10.1",
|
||||
"ws": "8.16.0"
|
||||
"eslint-import-resolver-typescript": "4.3.4",
|
||||
"eslint-plugin-import": "2.31.0",
|
||||
"eslint-plugin-prettier": "5.2.6",
|
||||
"glob": "11.0.2",
|
||||
"node-gyp": "11.2.0",
|
||||
"playwright": "1.52.0",
|
||||
"rollup": "4.40.0",
|
||||
"typescript": "5.8.3",
|
||||
"typescript-eslint": "8.31.0",
|
||||
"utf-8-validate": "6.0.5",
|
||||
"vite": "6.3.3",
|
||||
"vite-plugin-inspect": "11.0.1",
|
||||
"vite-plugin-resolve": "2.5.2",
|
||||
"vite-plugin-solid": "2.11.6",
|
||||
"ws": "8.18.1"
|
||||
},
|
||||
"auto-changelog": {
|
||||
"hideCredit": true,
|
||||
"package": true,
|
||||
"unreleased": true,
|
||||
"output": "changelog.md"
|
||||
},
|
||||
"packageManager": "pnpm@8.15.3"
|
||||
}
|
||||
}
|
||||
|
||||
29
patches/@malept__flatpak-bundler@0.4.0.patch
Normal file
@ -0,0 +1,29 @@
|
||||
diff --git a/index.js b/index.js
|
||||
index 5968fcf47b69094993b0f861c03f5560e4a6a9b7..0fe16d4f40612c0abfa57898909ce0083f56944c 100644
|
||||
--- a/index.js
|
||||
+++ b/index.js
|
||||
@@ -56,19 +56,23 @@ function getOptionsWithDefaults (options, manifest) {
|
||||
async function spawnWithLogging (options, command, args, allowFail) {
|
||||
return new Promise((resolve, reject) => {
|
||||
logger(`$ ${command} ${args.join(' ')}`)
|
||||
+ const output = []
|
||||
const child = childProcess.spawn(command, args, { cwd: options['working-dir'] })
|
||||
child.stdout.on('data', (data) => {
|
||||
+ output.push(data)
|
||||
logger(`1> ${data}`)
|
||||
})
|
||||
child.stderr.on('data', (data) => {
|
||||
+ output.push(data)
|
||||
logger(`2> ${data}`)
|
||||
})
|
||||
child.on('error', (error) => {
|
||||
+ logger(`error - ${error.message} ${error.stack}`)
|
||||
reject(error)
|
||||
})
|
||||
child.on('close', (code) => {
|
||||
if (!allowFail && code !== 0) {
|
||||
- reject(new Error(`${command} failed with status code ${code}`))
|
||||
+ reject(new Error(`${command} ${args.join(' ')} failed with status code ${code} ${output.join(' ')}`))
|
||||
}
|
||||
resolve(code === 0)
|
||||
})
|
||||
@ -1,17 +0,0 @@
|
||||
diff --git a/package.json b/package.json
|
||||
index 40db5dfbd8a4455ce2987d8115eca9882e1f9f14..414fc6986b9c0cc288908eb0107b90c4bfd916b2 100644
|
||||
--- a/package.json
|
||||
+++ b/package.json
|
||||
@@ -25,11 +25,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"axios": "^1.6.2",
|
||||
- "ws": "^8.15.1"
|
||||
- },
|
||||
- "optionalDependencies": {
|
||||
- "bufferutil": "^4.0.8",
|
||||
- "utf-8-validate": "^6.0.3"
|
||||
+ "ws": "^8.16.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^14.*",
|
||||
580
patches/kuromoji@0.1.2.patch
Normal file
@ -0,0 +1,580 @@
|
||||
diff --git a/build/kuromoji.js b/build/kuromoji.js
|
||||
index f0f4ae9183ff8965fda64a2042f29936f76506d1..8912a754d184742d2768854c7bba83d66f9ff95f 100644
|
||||
--- a/build/kuromoji.js
|
||||
+++ b/build/kuromoji.js
|
||||
@@ -1,5 +1,5 @@
|
||||
-(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.kuromoji = f()}})(function(){var define,module,exports;return (function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}return e})()({1:[function(require,module,exports){
|
||||
-(function (process,global){
|
||||
+(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.kuromoji = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
|
||||
+(function (process,global,setImmediate){(function (){
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
||||
typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
||||
@@ -666,10 +666,13 @@ var reIsUint = /^(?:0|[1-9]\d*)$/;
|
||||
* @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
|
||||
*/
|
||||
function isIndex(value, length) {
|
||||
+ var type = typeof value;
|
||||
length = length == null ? MAX_SAFE_INTEGER$1 : length;
|
||||
+
|
||||
return !!length &&
|
||||
- (typeof value == 'number' || reIsUint.test(value)) &&
|
||||
- (value > -1 && value % 1 == 0 && value < length);
|
||||
+ (type == 'number' ||
|
||||
+ (type != 'symbol' && reIsUint.test(value))) &&
|
||||
+ (value > -1 && value % 1 == 0 && value < length);
|
||||
}
|
||||
|
||||
/** `Object#toString` result references. */
|
||||
@@ -755,6 +758,14 @@ var freeProcess = moduleExports$1 && freeGlobal.process;
|
||||
/** Used to access faster Node.js helpers. */
|
||||
var nodeUtil = (function() {
|
||||
try {
|
||||
+ // Use `util.types` for Node.js 10+.
|
||||
+ var types = freeModule$1 && freeModule$1.require && freeModule$1.require('util').types;
|
||||
+
|
||||
+ if (types) {
|
||||
+ return types;
|
||||
+ }
|
||||
+
|
||||
+ // Legacy `process.binding('util')` for Node.js < 10.
|
||||
return freeProcess && freeProcess.binding && freeProcess.binding('util');
|
||||
} catch (e) {}
|
||||
}());
|
||||
@@ -939,6 +950,9 @@ function createObjectIterator(obj) {
|
||||
var len = okeys.length;
|
||||
return function next() {
|
||||
var key = okeys[++i];
|
||||
+ if (key === '__proto__') {
|
||||
+ return next();
|
||||
+ }
|
||||
return i < len ? {value: obj[key], key: key} : null;
|
||||
};
|
||||
}
|
||||
@@ -970,6 +984,7 @@ function _eachOfLimit(limit) {
|
||||
var nextElem = iterator(obj);
|
||||
var done = false;
|
||||
var running = 0;
|
||||
+ var looping = false;
|
||||
|
||||
function iterateeCallback(err, value) {
|
||||
running -= 1;
|
||||
@@ -981,12 +996,13 @@ function _eachOfLimit(limit) {
|
||||
done = true;
|
||||
return callback(null);
|
||||
}
|
||||
- else {
|
||||
+ else if (!looping) {
|
||||
replenish();
|
||||
}
|
||||
}
|
||||
|
||||
function replenish () {
|
||||
+ looping = true;
|
||||
while (running < limit && !done) {
|
||||
var elem = nextElem();
|
||||
if (elem === null) {
|
||||
@@ -999,6 +1015,7 @@ function _eachOfLimit(limit) {
|
||||
running += 1;
|
||||
iteratee(elem.value, elem.key, onlyOnce(iterateeCallback));
|
||||
}
|
||||
+ looping = false;
|
||||
}
|
||||
|
||||
replenish();
|
||||
@@ -3819,7 +3836,7 @@ function memoize(fn, hasher) {
|
||||
|
||||
/**
|
||||
* Calls `callback` on a later loop around the event loop. In Node.js this just
|
||||
- * calls `process.nextTicl`. In the browser it will use `setImmediate` if
|
||||
+ * calls `process.nextTick`. In the browser it will use `setImmediate` if
|
||||
* available, otherwise `setTimeout(callback, 0)`, which means other higher
|
||||
* priority events may precede the execution of `callback`.
|
||||
*
|
||||
@@ -5596,8 +5613,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
})));
|
||||
|
||||
-}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
|
||||
-},{"_process":4}],2:[function(require,module,exports){
|
||||
+}).call(this)}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("timers").setImmediate)
|
||||
+},{"_process":3,"timers":4}],2:[function(require,module,exports){
|
||||
// Copyright (c) 2014 Takuya Asano All Rights Reserved.
|
||||
|
||||
(function () {
|
||||
@@ -6391,234 +6408,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
||||
})();
|
||||
|
||||
},{}],3:[function(require,module,exports){
|
||||
-(function (process){
|
||||
-// Copyright Joyent, Inc. and other Node contributors.
|
||||
-//
|
||||
-// Permission is hereby granted, free of charge, to any person obtaining a
|
||||
-// copy of this software and associated documentation files (the
|
||||
-// "Software"), to deal in the Software without restriction, including
|
||||
-// without limitation the rights to use, copy, modify, merge, publish,
|
||||
-// distribute, sublicense, and/or sell copies of the Software, and to permit
|
||||
-// persons to whom the Software is furnished to do so, subject to the
|
||||
-// following conditions:
|
||||
-//
|
||||
-// The above copyright notice and this permission notice shall be included
|
||||
-// in all copies or substantial portions of the Software.
|
||||
-//
|
||||
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
||||
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
||||
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
-
|
||||
-// resolves . and .. elements in a path array with directory names there
|
||||
-// must be no slashes, empty elements, or device names (c:\) in the array
|
||||
-// (so also no leading and trailing slashes - it does not distinguish
|
||||
-// relative and absolute paths)
|
||||
-function normalizeArray(parts, allowAboveRoot) {
|
||||
- // if the path tries to go above the root, `up` ends up > 0
|
||||
- var up = 0;
|
||||
- for (var i = parts.length - 1; i >= 0; i--) {
|
||||
- var last = parts[i];
|
||||
- if (last === '.') {
|
||||
- parts.splice(i, 1);
|
||||
- } else if (last === '..') {
|
||||
- parts.splice(i, 1);
|
||||
- up++;
|
||||
- } else if (up) {
|
||||
- parts.splice(i, 1);
|
||||
- up--;
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- // if the path is allowed to go above the root, restore leading ..s
|
||||
- if (allowAboveRoot) {
|
||||
- for (; up--; up) {
|
||||
- parts.unshift('..');
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- return parts;
|
||||
-}
|
||||
-
|
||||
-// Split a filename into [root, dir, basename, ext], unix version
|
||||
-// 'root' is just a slash, or nothing.
|
||||
-var splitPathRe =
|
||||
- /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
|
||||
-var splitPath = function(filename) {
|
||||
- return splitPathRe.exec(filename).slice(1);
|
||||
-};
|
||||
-
|
||||
-// path.resolve([from ...], to)
|
||||
-// posix version
|
||||
-exports.resolve = function() {
|
||||
- var resolvedPath = '',
|
||||
- resolvedAbsolute = false;
|
||||
-
|
||||
- for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
|
||||
- var path = (i >= 0) ? arguments[i] : process.cwd();
|
||||
-
|
||||
- // Skip empty and invalid entries
|
||||
- if (typeof path !== 'string') {
|
||||
- throw new TypeError('Arguments to path.resolve must be strings');
|
||||
- } else if (!path) {
|
||||
- continue;
|
||||
- }
|
||||
-
|
||||
- resolvedPath = path + '/' + resolvedPath;
|
||||
- resolvedAbsolute = path.charAt(0) === '/';
|
||||
- }
|
||||
-
|
||||
- // At this point the path should be resolved to a full absolute path, but
|
||||
- // handle relative paths to be safe (might happen when process.cwd() fails)
|
||||
-
|
||||
- // Normalize the path
|
||||
- resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {
|
||||
- return !!p;
|
||||
- }), !resolvedAbsolute).join('/');
|
||||
-
|
||||
- return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
|
||||
-};
|
||||
-
|
||||
-// path.normalize(path)
|
||||
-// posix version
|
||||
-exports.normalize = function(path) {
|
||||
- var isAbsolute = exports.isAbsolute(path),
|
||||
- trailingSlash = substr(path, -1) === '/';
|
||||
-
|
||||
- // Normalize the path
|
||||
- path = normalizeArray(filter(path.split('/'), function(p) {
|
||||
- return !!p;
|
||||
- }), !isAbsolute).join('/');
|
||||
-
|
||||
- if (!path && !isAbsolute) {
|
||||
- path = '.';
|
||||
- }
|
||||
- if (path && trailingSlash) {
|
||||
- path += '/';
|
||||
- }
|
||||
-
|
||||
- return (isAbsolute ? '/' : '') + path;
|
||||
-};
|
||||
-
|
||||
-// posix version
|
||||
-exports.isAbsolute = function(path) {
|
||||
- return path.charAt(0) === '/';
|
||||
-};
|
||||
-
|
||||
-// posix version
|
||||
-exports.join = function() {
|
||||
- var paths = Array.prototype.slice.call(arguments, 0);
|
||||
- return exports.normalize(filter(paths, function(p, index) {
|
||||
- if (typeof p !== 'string') {
|
||||
- throw new TypeError('Arguments to path.join must be strings');
|
||||
- }
|
||||
- return p;
|
||||
- }).join('/'));
|
||||
-};
|
||||
-
|
||||
-
|
||||
-// path.relative(from, to)
|
||||
-// posix version
|
||||
-exports.relative = function(from, to) {
|
||||
- from = exports.resolve(from).substr(1);
|
||||
- to = exports.resolve(to).substr(1);
|
||||
-
|
||||
- function trim(arr) {
|
||||
- var start = 0;
|
||||
- for (; start < arr.length; start++) {
|
||||
- if (arr[start] !== '') break;
|
||||
- }
|
||||
-
|
||||
- var end = arr.length - 1;
|
||||
- for (; end >= 0; end--) {
|
||||
- if (arr[end] !== '') break;
|
||||
- }
|
||||
-
|
||||
- if (start > end) return [];
|
||||
- return arr.slice(start, end - start + 1);
|
||||
- }
|
||||
-
|
||||
- var fromParts = trim(from.split('/'));
|
||||
- var toParts = trim(to.split('/'));
|
||||
-
|
||||
- var length = Math.min(fromParts.length, toParts.length);
|
||||
- var samePartsLength = length;
|
||||
- for (var i = 0; i < length; i++) {
|
||||
- if (fromParts[i] !== toParts[i]) {
|
||||
- samePartsLength = i;
|
||||
- break;
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- var outputParts = [];
|
||||
- for (var i = samePartsLength; i < fromParts.length; i++) {
|
||||
- outputParts.push('..');
|
||||
- }
|
||||
-
|
||||
- outputParts = outputParts.concat(toParts.slice(samePartsLength));
|
||||
-
|
||||
- return outputParts.join('/');
|
||||
-};
|
||||
-
|
||||
-exports.sep = '/';
|
||||
-exports.delimiter = ':';
|
||||
-
|
||||
-exports.dirname = function(path) {
|
||||
- var result = splitPath(path),
|
||||
- root = result[0],
|
||||
- dir = result[1];
|
||||
-
|
||||
- if (!root && !dir) {
|
||||
- // No dirname whatsoever
|
||||
- return '.';
|
||||
- }
|
||||
-
|
||||
- if (dir) {
|
||||
- // It has a dirname, strip trailing slash
|
||||
- dir = dir.substr(0, dir.length - 1);
|
||||
- }
|
||||
-
|
||||
- return root + dir;
|
||||
-};
|
||||
-
|
||||
-
|
||||
-exports.basename = function(path, ext) {
|
||||
- var f = splitPath(path)[2];
|
||||
- // TODO: make this comparison case-insensitive on windows?
|
||||
- if (ext && f.substr(-1 * ext.length) === ext) {
|
||||
- f = f.substr(0, f.length - ext.length);
|
||||
- }
|
||||
- return f;
|
||||
-};
|
||||
-
|
||||
-
|
||||
-exports.extname = function(path) {
|
||||
- return splitPath(path)[3];
|
||||
-};
|
||||
-
|
||||
-function filter (xs, f) {
|
||||
- if (xs.filter) return xs.filter(f);
|
||||
- var res = [];
|
||||
- for (var i = 0; i < xs.length; i++) {
|
||||
- if (f(xs[i], i, xs)) res.push(xs[i]);
|
||||
- }
|
||||
- return res;
|
||||
-}
|
||||
-
|
||||
-// String.prototype.substr - negative index don't work in IE8
|
||||
-var substr = 'ab'.substr(-1) === 'b'
|
||||
- ? function (str, start, len) { return str.substr(start, len) }
|
||||
- : function (str, start, len) {
|
||||
- if (start < 0) start = str.length + start;
|
||||
- return str.substr(start, len);
|
||||
- }
|
||||
-;
|
||||
-
|
||||
-}).call(this,require('_process'))
|
||||
-},{"_process":4}],4:[function(require,module,exports){
|
||||
// shim for using process in browser
|
||||
var process = module.exports = {};
|
||||
|
||||
@@ -6804,7 +6593,86 @@ process.chdir = function (dir) {
|
||||
};
|
||||
process.umask = function() { return 0; };
|
||||
|
||||
-},{}],5:[function(require,module,exports){
|
||||
+},{}],4:[function(require,module,exports){
|
||||
+(function (setImmediate,clearImmediate){(function (){
|
||||
+var nextTick = require('process/browser.js').nextTick;
|
||||
+var apply = Function.prototype.apply;
|
||||
+var slice = Array.prototype.slice;
|
||||
+var immediateIds = {};
|
||||
+var nextImmediateId = 0;
|
||||
+
|
||||
+// DOM APIs, for completeness
|
||||
+
|
||||
+exports.setTimeout = function() {
|
||||
+ return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);
|
||||
+};
|
||||
+exports.setInterval = function() {
|
||||
+ return new Timeout(apply.call(setInterval, window, arguments), clearInterval);
|
||||
+};
|
||||
+exports.clearTimeout =
|
||||
+exports.clearInterval = function(timeout) { timeout.close(); };
|
||||
+
|
||||
+function Timeout(id, clearFn) {
|
||||
+ this._id = id;
|
||||
+ this._clearFn = clearFn;
|
||||
+}
|
||||
+Timeout.prototype.unref = Timeout.prototype.ref = function() {};
|
||||
+Timeout.prototype.close = function() {
|
||||
+ this._clearFn.call(window, this._id);
|
||||
+};
|
||||
+
|
||||
+// Does not start the time, just sets up the members needed.
|
||||
+exports.enroll = function(item, msecs) {
|
||||
+ clearTimeout(item._idleTimeoutId);
|
||||
+ item._idleTimeout = msecs;
|
||||
+};
|
||||
+
|
||||
+exports.unenroll = function(item) {
|
||||
+ clearTimeout(item._idleTimeoutId);
|
||||
+ item._idleTimeout = -1;
|
||||
+};
|
||||
+
|
||||
+exports._unrefActive = exports.active = function(item) {
|
||||
+ clearTimeout(item._idleTimeoutId);
|
||||
+
|
||||
+ var msecs = item._idleTimeout;
|
||||
+ if (msecs >= 0) {
|
||||
+ item._idleTimeoutId = setTimeout(function onTimeout() {
|
||||
+ if (item._onTimeout)
|
||||
+ item._onTimeout();
|
||||
+ }, msecs);
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
+// That's not how node.js implements it but the exposed api is the same.
|
||||
+exports.setImmediate = typeof setImmediate === "function" ? setImmediate : function(fn) {
|
||||
+ var id = nextImmediateId++;
|
||||
+ var args = arguments.length < 2 ? false : slice.call(arguments, 1);
|
||||
+
|
||||
+ immediateIds[id] = true;
|
||||
+
|
||||
+ nextTick(function onNextTick() {
|
||||
+ if (immediateIds[id]) {
|
||||
+ // fn.call() is faster so we optimize for the common use-case
|
||||
+ // @see http://jsperf.com/call-apply-segu
|
||||
+ if (args) {
|
||||
+ fn.apply(null, args);
|
||||
+ } else {
|
||||
+ fn.call(null);
|
||||
+ }
|
||||
+ // Prevent ids from leaking
|
||||
+ exports.clearImmediate(id);
|
||||
+ }
|
||||
+ });
|
||||
+
|
||||
+ return id;
|
||||
+};
|
||||
+
|
||||
+exports.clearImmediate = typeof clearImmediate === "function" ? clearImmediate : function(id) {
|
||||
+ delete immediateIds[id];
|
||||
+};
|
||||
+}).call(this)}).call(this,require("timers").setImmediate,require("timers").clearImmediate)
|
||||
+},{"process/browser.js":3,"timers":4}],5:[function(require,module,exports){
|
||||
/** @license zlib.js 2012 - imaya [ https://github.com/imaya/zlib.js ] The MIT License */(function() {'use strict';function n(e){throw e;}var p=void 0,aa=this;function t(e,b){var d=e.split("."),c=aa;!(d[0]in c)&&c.execScript&&c.execScript("var "+d[0]);for(var a;d.length&&(a=d.shift());)!d.length&&b!==p?c[a]=b:c=c[a]?c[a]:c[a]={}};var x="undefined"!==typeof Uint8Array&&"undefined"!==typeof Uint16Array&&"undefined"!==typeof Uint32Array&&"undefined"!==typeof DataView;new (x?Uint8Array:Array)(256);var y;for(y=0;256>y;++y)for(var A=y,ba=7,A=A>>>1;A;A>>>=1)--ba;function B(e,b,d){var c,a="number"===typeof b?b:b=0,f="number"===typeof d?d:e.length;c=-1;for(a=f&7;a--;++b)c=c>>>8^C[(c^e[b])&255];for(a=f>>3;a--;b+=8)c=c>>>8^C[(c^e[b])&255],c=c>>>8^C[(c^e[b+1])&255],c=c>>>8^C[(c^e[b+2])&255],c=c>>>8^C[(c^e[b+3])&255],c=c>>>8^C[(c^e[b+4])&255],c=c>>>8^C[(c^e[b+5])&255],c=c>>>8^C[(c^e[b+6])&255],c=c>>>8^C[(c^e[b+7])&255];return(c^4294967295)>>>0}
|
||||
var D=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,
|
||||
2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,
|
||||
@@ -6984,7 +6852,7 @@ module.exports = Tokenizer;
|
||||
"use strict";
|
||||
|
||||
var Tokenizer = require("./Tokenizer");
|
||||
-var DictionaryLoader = require("./loader/NodeDictionaryLoader");
|
||||
+var BrowserDictionaryLoader = require("./loader/BrowserDictionaryLoader");
|
||||
|
||||
/**
|
||||
* TokenizerBuilder create Tokenizer instance.
|
||||
@@ -7005,7 +6873,7 @@ function TokenizerBuilder(option) {
|
||||
* @param {TokenizerBuilder~onLoad} callback Callback function
|
||||
*/
|
||||
TokenizerBuilder.prototype.build = function (callback) {
|
||||
- var loader = new DictionaryLoader(this.dic_path);
|
||||
+ var loader = new BrowserDictionaryLoader(this.dic_path);
|
||||
loader.load(function (err, dic) {
|
||||
callback(err, new Tokenizer(dic));
|
||||
});
|
||||
@@ -7020,7 +6888,7 @@ TokenizerBuilder.prototype.build = function (callback) {
|
||||
|
||||
module.exports = TokenizerBuilder;
|
||||
|
||||
-},{"./Tokenizer":6,"./loader/NodeDictionaryLoader":19}],8:[function(require,module,exports){
|
||||
+},{"./Tokenizer":6,"./loader/BrowserDictionaryLoader":19}],8:[function(require,module,exports){
|
||||
/*
|
||||
* Copyright 2014 Takuya Asano
|
||||
* Copyright 2010-2014 Atilika Inc. and contributors
|
||||
@@ -8163,7 +8031,6 @@ module.exports = BrowserDictionaryLoader;
|
||||
|
||||
"use strict";
|
||||
|
||||
-var path = require("path");
|
||||
var async = require("async");
|
||||
var DynamicDictionaries = require("../dict/DynamicDictionaries");
|
||||
|
||||
@@ -8194,7 +8061,7 @@ DictionaryLoader.prototype.load = function (load_callback) {
|
||||
// Trie
|
||||
function (callback) {
|
||||
async.map([ "base.dat.gz", "check.dat.gz" ], function (filename, _callback) {
|
||||
- loadArrayBuffer(path.join(dic_path, filename), function (err, buffer) {
|
||||
+ loadArrayBuffer(dic_path + filename, function (err, buffer) {
|
||||
if(err) {
|
||||
return _callback(err);
|
||||
}
|
||||
@@ -8214,7 +8081,7 @@ DictionaryLoader.prototype.load = function (load_callback) {
|
||||
// Token info dictionaries
|
||||
function (callback) {
|
||||
async.map([ "tid.dat.gz", "tid_pos.dat.gz", "tid_map.dat.gz" ], function (filename, _callback) {
|
||||
- loadArrayBuffer(path.join(dic_path, filename), function (err, buffer) {
|
||||
+ loadArrayBuffer(dic_path + filename, function (err, buffer) {
|
||||
if(err) {
|
||||
return _callback(err);
|
||||
}
|
||||
@@ -8234,7 +8101,7 @@ DictionaryLoader.prototype.load = function (load_callback) {
|
||||
},
|
||||
// Connection cost matrix
|
||||
function (callback) {
|
||||
- loadArrayBuffer(path.join(dic_path, "cc.dat.gz"), function (err, buffer) {
|
||||
+ loadArrayBuffer(dic_path + "cc.dat.gz", function (err, buffer) {
|
||||
if(err) {
|
||||
return callback(err);
|
||||
}
|
||||
@@ -8246,7 +8113,7 @@ DictionaryLoader.prototype.load = function (load_callback) {
|
||||
// Unknown dictionaries
|
||||
function (callback) {
|
||||
async.map([ "unk.dat.gz", "unk_pos.dat.gz", "unk_map.dat.gz", "unk_char.dat.gz", "unk_compat.dat.gz", "unk_invoke.dat.gz" ], function (filename, _callback) {
|
||||
- loadArrayBuffer(path.join(dic_path, filename), function (err, buffer) {
|
||||
+ loadArrayBuffer(dic_path + filename, function (err, buffer) {
|
||||
if(err) {
|
||||
return _callback(err);
|
||||
}
|
||||
@@ -8282,7 +8149,7 @@ DictionaryLoader.prototype.load = function (load_callback) {
|
||||
|
||||
module.exports = DictionaryLoader;
|
||||
|
||||
-},{"../dict/DynamicDictionaries":11,"async":1,"path":3}],21:[function(require,module,exports){
|
||||
+},{"../dict/DynamicDictionaries":11,"async":1}],21:[function(require,module,exports){
|
||||
/*
|
||||
* Copyright 2014 Takuya Asano
|
||||
* Copyright 2010-2014 Atilika Inc. and contributors
|
||||
diff --git a/src/TokenizerBuilder.js b/src/TokenizerBuilder.js
|
||||
index 9ef5c6a2efc63e8b12735a8a9f1cb08d6c52c20c..98881e9fd731047c3fca848a71ede7e381e74f51 100644
|
||||
--- a/src/TokenizerBuilder.js
|
||||
+++ b/src/TokenizerBuilder.js
|
||||
@@ -18,7 +18,7 @@
|
||||
"use strict";
|
||||
|
||||
var Tokenizer = require("./Tokenizer");
|
||||
-var DictionaryLoader = require("./loader/NodeDictionaryLoader");
|
||||
+var BrowserDictionaryLoader = require("./loader/BrowserDictionaryLoader");
|
||||
|
||||
/**
|
||||
* TokenizerBuilder create Tokenizer instance.
|
||||
@@ -39,7 +39,7 @@ function TokenizerBuilder(option) {
|
||||
* @param {TokenizerBuilder~onLoad} callback Callback function
|
||||
*/
|
||||
TokenizerBuilder.prototype.build = function (callback) {
|
||||
- var loader = new DictionaryLoader(this.dic_path);
|
||||
+ var loader = new BrowserDictionaryLoader(this.dic_path);
|
||||
loader.load(function (err, dic) {
|
||||
callback(err, new Tokenizer(dic));
|
||||
});
|
||||
diff --git a/src/loader/DictionaryLoader.js b/src/loader/DictionaryLoader.js
|
||||
index 5f88c0b7f9a786dd8c072a7b84ae86a6f31412cb..3d6f8a67e16d251b3e4ba4dbbbc947679c364382 100644
|
||||
--- a/src/loader/DictionaryLoader.js
|
||||
+++ b/src/loader/DictionaryLoader.js
|
||||
@@ -17,7 +17,6 @@
|
||||
|
||||
"use strict";
|
||||
|
||||
-var path = require("path");
|
||||
var async = require("async");
|
||||
var DynamicDictionaries = require("../dict/DynamicDictionaries");
|
||||
|
||||
@@ -48,7 +47,7 @@ DictionaryLoader.prototype.load = function (load_callback) {
|
||||
// Trie
|
||||
function (callback) {
|
||||
async.map([ "base.dat.gz", "check.dat.gz" ], function (filename, _callback) {
|
||||
- loadArrayBuffer(path.join(dic_path, filename), function (err, buffer) {
|
||||
+ loadArrayBuffer(dic_path + filename, function (err, buffer) {
|
||||
if(err) {
|
||||
return _callback(err);
|
||||
}
|
||||
@@ -68,7 +67,7 @@ DictionaryLoader.prototype.load = function (load_callback) {
|
||||
// Token info dictionaries
|
||||
function (callback) {
|
||||
async.map([ "tid.dat.gz", "tid_pos.dat.gz", "tid_map.dat.gz" ], function (filename, _callback) {
|
||||
- loadArrayBuffer(path.join(dic_path, filename), function (err, buffer) {
|
||||
+ loadArrayBuffer(dic_path + filename, function (err, buffer) {
|
||||
if(err) {
|
||||
return _callback(err);
|
||||
}
|
||||
@@ -88,7 +87,7 @@ DictionaryLoader.prototype.load = function (load_callback) {
|
||||
},
|
||||
// Connection cost matrix
|
||||
function (callback) {
|
||||
- loadArrayBuffer(path.join(dic_path, "cc.dat.gz"), function (err, buffer) {
|
||||
+ loadArrayBuffer(dic_path + "cc.dat.gz", function (err, buffer) {
|
||||
if(err) {
|
||||
return callback(err);
|
||||
}
|
||||
@@ -100,7 +99,7 @@ DictionaryLoader.prototype.load = function (load_callback) {
|
||||
// Unknown dictionaries
|
||||
function (callback) {
|
||||
async.map([ "unk.dat.gz", "unk_pos.dat.gz", "unk_map.dat.gz", "unk_char.dat.gz", "unk_compat.dat.gz", "unk_invoke.dat.gz" ], function (filename, _callback) {
|
||||
- loadArrayBuffer(path.join(dic_path, filename), function (err, buffer) {
|
||||
+ loadArrayBuffer(dic_path + filename, function (err, buffer) {
|
||||
if(err) {
|
||||
return _callback(err);
|
||||
}
|
||||
diff --git a/src/loader/NodeDictionaryLoader.js b/src/loader/NodeDictionaryLoader.js
|
||||
deleted file mode 100644
|
||||
index 26eb79249121efe39bd5ae77c17e1caa197fb4ce..0000000000000000000000000000000000000000
|
||||
12611
pnpm-lock.yaml
generated
@ -1,8 +1,6 @@
|
||||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"extends": [
|
||||
"config:base"
|
||||
],
|
||||
"extends": ["config:recommended"],
|
||||
"labels": ["dependencies"],
|
||||
"postUpdateOptions": ["pnpmDedupe"]
|
||||
}
|
||||
|
||||
@ -1,9 +1,8 @@
|
||||
import Store from 'electron-store';
|
||||
import { deepmergeCustom } from 'deepmerge-ts';
|
||||
|
||||
import defaultConfig from './defaults';
|
||||
|
||||
import store from './store';
|
||||
import store, { IStore } from './store';
|
||||
import plugins from './plugins';
|
||||
|
||||
import { restart } from '@/providers/app-controls';
|
||||
@ -62,20 +61,19 @@ type Join<K, P> = K extends string | number
|
||||
type Paths<T, D extends number = 10> = [D] extends [never]
|
||||
? never
|
||||
: T extends object
|
||||
? {
|
||||
[K in keyof T]-?: K extends string | number
|
||||
? `${K}` | Join<K, Paths<T[K], Prev[D]>>
|
||||
: never;
|
||||
}[keyof T]
|
||||
: '';
|
||||
? {
|
||||
[K in keyof T]-?: K extends string | number
|
||||
? `${K}` | Join<K, Paths<T[K], Prev[D]>>
|
||||
: never;
|
||||
}[keyof T]
|
||||
: '';
|
||||
|
||||
type SplitKey<K> = K extends `${infer A}.${infer B}` ? [A, B] : [K, string];
|
||||
type PathValue<T, K extends string> = SplitKey<K> extends [
|
||||
infer A extends keyof T,
|
||||
infer B extends string,
|
||||
]
|
||||
? PathValue<T[A], B>
|
||||
: T;
|
||||
type PathValue<T, K extends string> =
|
||||
SplitKey<K> extends [infer A extends keyof T, infer B extends string]
|
||||
? PathValue<T[A], B>
|
||||
: T;
|
||||
|
||||
const get = <Key extends Paths<typeof defaultConfig>>(key: Key) =>
|
||||
store.get(key) as PathValue<typeof defaultConfig, typeof key>;
|
||||
|
||||
@ -86,7 +84,7 @@ export default {
|
||||
setPartial,
|
||||
setMenuOption,
|
||||
edit: () => store.openInEditor(),
|
||||
watch(cb: Parameters<Store['onDidAnyChange']>[0]) {
|
||||
watch(cb: Parameters<IStore['onDidAnyChange']>[0]) {
|
||||
store.onDidAnyChange(cb);
|
||||
},
|
||||
plugins,
|
||||
|
||||
@ -1,12 +1,14 @@
|
||||
import Store from 'electron-store';
|
||||
import Conf from 'conf';
|
||||
|
||||
import defaults from './defaults';
|
||||
|
||||
import { DefaultPresetList, type Preset } from '@/plugins/downloader/types';
|
||||
|
||||
// prettier-ignore
|
||||
export type IStore = InstanceType<typeof import('conf/dist/source/index').default<Record<string, unknown>>>;
|
||||
|
||||
const migrations = {
|
||||
'>=3.3.0'(store: Conf<Record<string, unknown>>) {
|
||||
'>=3.3.0'(store: IStore) {
|
||||
const lastfmConfig = store.get('plugins.lastfm') as {
|
||||
enabled?: boolean;
|
||||
token?: string;
|
||||
@ -16,21 +18,21 @@ const migrations = {
|
||||
secret?: string;
|
||||
};
|
||||
if (lastfmConfig) {
|
||||
let scrobblerConfig = store.get(
|
||||
'plugins.scrobbler',
|
||||
) as {
|
||||
enabled?: boolean;
|
||||
scrobblers?: {
|
||||
lastfm?: {
|
||||
let scrobblerConfig = store.get('plugins.scrobbler') as
|
||||
| {
|
||||
enabled?: boolean;
|
||||
token?: string;
|
||||
sessionKey?: string;
|
||||
apiRoot?: string;
|
||||
apiKey?: string;
|
||||
secret?: string;
|
||||
};
|
||||
};
|
||||
} | undefined;
|
||||
scrobblers?: {
|
||||
lastfm?: {
|
||||
enabled?: boolean;
|
||||
token?: string;
|
||||
sessionKey?: string;
|
||||
apiRoot?: string;
|
||||
apiKey?: string;
|
||||
secret?: string;
|
||||
};
|
||||
};
|
||||
}
|
||||
| undefined;
|
||||
|
||||
if (!scrobblerConfig) {
|
||||
scrobblerConfig = {
|
||||
@ -53,9 +55,10 @@ const migrations = {
|
||||
secret: lastfmConfig.secret,
|
||||
};
|
||||
store.set('plugins.scrobbler', scrobblerConfig);
|
||||
store.delete('plugins.lastfm');
|
||||
}
|
||||
},
|
||||
'>=3.0.0'(store: Conf<Record<string, unknown>>) {
|
||||
'>=3.0.0'(store: IStore) {
|
||||
const discordConfig = store.get('plugins.discord') as Record<
|
||||
string,
|
||||
unknown
|
||||
@ -77,14 +80,14 @@ const migrations = {
|
||||
}
|
||||
}
|
||||
},
|
||||
'>=2.1.3'(store: Conf<Record<string, unknown>>) {
|
||||
'>=2.1.3'(store: IStore) {
|
||||
const listenAlong = store.get('plugins.discord.listenAlong');
|
||||
if (listenAlong !== undefined) {
|
||||
store.set('plugins.discord.playOnYouTubeMusic', listenAlong);
|
||||
store.delete('plugins.discord.listenAlong');
|
||||
}
|
||||
},
|
||||
'>=2.1.0'(store: Conf<Record<string, unknown>>) {
|
||||
'>=2.1.0'(store: IStore) {
|
||||
const originalPreset = store.get('plugins.downloader.preset') as
|
||||
| string
|
||||
| undefined;
|
||||
@ -109,7 +112,7 @@ const migrations = {
|
||||
store.delete('plugins.downloader.ffmpegArgs');
|
||||
}
|
||||
},
|
||||
'>=1.20.0'(store: Conf<Record<string, unknown>>) {
|
||||
'>=1.20.0'(store: IStore) {
|
||||
store.delete('plugins.visualizer'); // default value is now in the plugin
|
||||
|
||||
if (store.get('plugins.notifications.toastStyle') === undefined) {
|
||||
@ -124,14 +127,14 @@ const migrations = {
|
||||
store.set('options.likeButtons', 'force');
|
||||
}
|
||||
},
|
||||
'>=1.17.0'(store: Conf<Record<string, unknown>>) {
|
||||
'>=1.17.0'(store: IStore) {
|
||||
store.delete('plugins.picture-in-picture'); // default value is now in the plugin
|
||||
|
||||
if (store.get('plugins.video-toggle.mode') === undefined) {
|
||||
store.set('plugins.video-toggle.mode', 'custom');
|
||||
}
|
||||
},
|
||||
'>=1.14.0'(store: Conf<Record<string, unknown>>) {
|
||||
'>=1.14.0'(store: IStore) {
|
||||
if (
|
||||
typeof store.get('plugins.precise-volume.globalShortcuts') !== 'object'
|
||||
) {
|
||||
@ -143,12 +146,12 @@ const migrations = {
|
||||
store.set('plugins.video-toggle.enabled', true);
|
||||
}
|
||||
},
|
||||
'>=1.13.0'(store: Conf<Record<string, unknown>>) {
|
||||
'>=1.13.0'(store: IStore) {
|
||||
if (store.get('plugins.discord.listenAlong') === undefined) {
|
||||
store.set('plugins.discord.listenAlong', true);
|
||||
}
|
||||
},
|
||||
'>=1.12.0'(store: Conf<Record<string, unknown>>) {
|
||||
'>=1.12.0'(store: IStore) {
|
||||
const options = store.get('plugins.shortcuts') as
|
||||
| Record<
|
||||
string,
|
||||
@ -186,12 +189,12 @@ const migrations = {
|
||||
}
|
||||
}
|
||||
},
|
||||
'>=1.11.0'(store: Conf<Record<string, unknown>>) {
|
||||
'>=1.11.0'(store: IStore) {
|
||||
if (store.get('options.resumeOnStart') === undefined) {
|
||||
store.set('options.resumeOnStart', true);
|
||||
}
|
||||
},
|
||||
'>=1.7.0'(store: Conf<Record<string, unknown>>) {
|
||||
'>=1.7.0'(store: IStore) {
|
||||
const enabledPlugins = store.get('plugins') as string[];
|
||||
if (!Array.isArray(enabledPlugins)) {
|
||||
console.warn('Plugins are not in array format, cannot migrate');
|
||||
@ -232,4 +235,4 @@ export default new Store({
|
||||
},
|
||||
clearInvalidConfig: false,
|
||||
migrations,
|
||||
});
|
||||
}) as Store & IStore;
|
||||
|
||||
38
src/custom-electron-prompt.d.ts
vendored
@ -64,29 +64,29 @@ declare module 'custom-electron-prompt' {
|
||||
export type PromptOptions<T extends string> = T extends 'input'
|
||||
? InputPromptOptions
|
||||
: T extends 'select'
|
||||
? SelectPromptOptions
|
||||
: T extends 'counter'
|
||||
? CounterPromptOptions
|
||||
: T extends 'keybind'
|
||||
? KeybindPromptOptions
|
||||
: T extends 'multiInput'
|
||||
? MultiInputPromptOptions
|
||||
: never;
|
||||
? SelectPromptOptions
|
||||
: T extends 'counter'
|
||||
? CounterPromptOptions
|
||||
: T extends 'keybind'
|
||||
? KeybindPromptOptions
|
||||
: T extends 'multiInput'
|
||||
? MultiInputPromptOptions
|
||||
: never;
|
||||
|
||||
type PromptResult<T extends string> = T extends 'input'
|
||||
? string
|
||||
: T extends 'select'
|
||||
? string
|
||||
: T extends 'counter'
|
||||
? number
|
||||
: T extends 'keybind'
|
||||
? {
|
||||
value: string;
|
||||
accelerator: string;
|
||||
}[]
|
||||
: T extends 'multiInput'
|
||||
? string[]
|
||||
: never;
|
||||
? string
|
||||
: T extends 'counter'
|
||||
? number
|
||||
: T extends 'keybind'
|
||||
? {
|
||||
value: string;
|
||||
accelerator: string;
|
||||
}[]
|
||||
: T extends 'multiInput'
|
||||
? string[]
|
||||
: never;
|
||||
|
||||
const prompt: <T extends Type>(
|
||||
options?: PromptOptions<T> & { type: T },
|
||||
|
||||
845
src/i18n/resources/ar.json
Normal file
@ -0,0 +1,845 @@
|
||||
{
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "فشل تشغيل الاضافة {{pluginName}}::{{contextName}}",
|
||||
"executed-at-ms": "تم تشغيل الاضافة {{pluginName}}::{{contextName}} خلال {{ms}} جزء من الثانية",
|
||||
"initialize-failed": "فشل تنفيذ الاضافة \"{{pluginName}}\"",
|
||||
"load-all": "جاري تحميل جميع الاضافات",
|
||||
"load-failed": "فشل في تحميل الاضافة \"{{pluginName}}\"",
|
||||
"loaded": "تم تحميل الاضافة \"{{pluginName}}\"",
|
||||
"unload-failed": "فشل ازالة الاضافة \"{{pluginName}}\"",
|
||||
"unloaded": "تم ازالة الاضافة \"{{pluginName}}\""
|
||||
}
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"code": "ar",
|
||||
"local-name": "العربية",
|
||||
"name": "Arabic"
|
||||
},
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "انتهى التحميل, تم فتح قائمة المطور"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "تم تحميل i18n"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "تم الحصول على أمر عن طريق: \"{{command}}\""
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "ملف \"{{cssFile}}\" غير متواجد,سيتم التجاهل"
|
||||
},
|
||||
"unresponsive": {
|
||||
"details": "خطء عدم استجابة!\n{{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "ازالة بيانات التطبيق المخزنة"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "تم محاولة فتح الصفحة خارج الشاشة, حجم الصفحة={{windowSize}}, حجم الشاشة={{displaySize}}, مكان={{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "تم اخفاء القائمة, استخدم 'Alt' لاظهار القائمة (أو 'Escape' اذا كنت تستخدم القائمة داخل التطبيق)",
|
||||
"message": "اخفاء القائمة مفعل",
|
||||
"title": "تم تفعيل اخفاء القائمة"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "لاحقاً",
|
||||
"restart-now": "اعادة التشغيل الأن"
|
||||
},
|
||||
"detail": "\"{{pluginName}}\" هذه الاضافة تتطلب اعادة التشغيل ليتم تفعيلها",
|
||||
"message": "\"{{pluginName}}\" بحاجة الى اعادة التشغيل",
|
||||
"title": "مطلوب اعادة التشغيل"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "خروج",
|
||||
"relaunch": "اعادة التشغيل",
|
||||
"wait": "انتظار"
|
||||
},
|
||||
"detail": "نأسف على الإزعاج! يرجى اختيار ما يجب القيام به:",
|
||||
"message": "التطبيق لا يستجيب",
|
||||
"title": "الصفحة لا تستجيب"
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"disable": "ايقاف التحديثات",
|
||||
"download": "تحميل",
|
||||
"ok": "موافق"
|
||||
},
|
||||
"detail": "يوجد نسخة جديدة يمكن تحميلها من خلال {{downloadLink}}",
|
||||
"message": "يوجد نسخة حديثة",
|
||||
"title": "يوجد تحديث"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"about": "عنا",
|
||||
"navigation": {
|
||||
"label": "التنقل",
|
||||
"submenu": {
|
||||
"copy-current-url": "نسخ الرابط الحالي",
|
||||
"go-back": "العودة للخلف",
|
||||
"go-forward": "التقدم",
|
||||
"quit": "الخروج",
|
||||
"restart": "اعادة تشغيل التطبيق"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"label": "الاعدادات",
|
||||
"submenu": {
|
||||
"advanced-options": {
|
||||
"label": "الاعدادات المتقدمة",
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "إعادة تعيين ذاكرة التخزين المؤقت للتطبيق عند بدء التشغيل",
|
||||
"disable-hardware-acceleration": "تعطيل تسريع الأجهزة",
|
||||
"edit-config-json": "تعديل ملف الاعدادات",
|
||||
"override-user-agent": "تجاوز وكيل المستخدم",
|
||||
"restart-on-config-changes": "اعادة التشغيل بعد تعديل الاعدادات",
|
||||
"set-proxy": {
|
||||
"label": "تعيين الوكيل",
|
||||
"prompt": {
|
||||
"label": "أدخل عنوان الوكيل: (اتركه فارغًا للتعطيل)",
|
||||
"placeholder": "مثال: SOCKS5://127.0.0.1:9999",
|
||||
"title": "اضافة الوكيل"
|
||||
}
|
||||
},
|
||||
"toggle-dev-tools": "تثبيت أدوات التطوير"
|
||||
}
|
||||
},
|
||||
"always-on-top": "دائما في القمة",
|
||||
"auto-update": "تحديث تلقائي",
|
||||
"hide-menu": {
|
||||
"dialog": {
|
||||
"message": "سيتم إخفاء القائمة عند التشغيل التالي، استخدم [Alt] لإظهارها (أو ضع علامة اختيار على [`] في حالة استخدام القائمة داخل التطبيق)",
|
||||
"title": "إخفاء القائمة ممكن"
|
||||
},
|
||||
"label": "إخفاء القائمة"
|
||||
},
|
||||
"language": {
|
||||
"dialog": {
|
||||
"message": "سيتم تغيير اللغة بعد اعادة التشغيل",
|
||||
"title": "تم تغير اللغة"
|
||||
},
|
||||
"label": "اللغة",
|
||||
"submenu": {
|
||||
"to-help-translate": "تريد المساعدة في الترجمة؟ اضغط هنا"
|
||||
}
|
||||
},
|
||||
"resume-on-start": "تكملة الأغنية الأخيرة عند بدأ التشغيل",
|
||||
"single-instance-lock": "قفل مثيل واحد",
|
||||
"start-at-login": "ابدأ عند تسجيل الدخول",
|
||||
"starting-page": {
|
||||
"label": "صفحة البداية",
|
||||
"unset": "الغاء"
|
||||
},
|
||||
"tray": {
|
||||
"label": "قائمة",
|
||||
"submenu": {
|
||||
"disabled": "غير مفعل",
|
||||
"enabled-and-hide-app": "تمكين وإخفاء التطبيق",
|
||||
"enabled-and-show-app": "ممكين وأظهر التطبيق",
|
||||
"play-pause-on-click": "تشغيل/إيقاف مؤقت عند النقر"
|
||||
}
|
||||
},
|
||||
"visual-tweaks": {
|
||||
"label": "تعديلات المظهر",
|
||||
"submenu": {
|
||||
"like-buttons": {
|
||||
"default": "الافتراضي",
|
||||
"force-show": "اجبار الظهور",
|
||||
"hide": "اخفاء",
|
||||
"label": "أزرار الاعجاب"
|
||||
},
|
||||
"remove-upgrade-button": "ازالة زرار التطوير",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "إلغاء",
|
||||
"remove": "ازالة"
|
||||
},
|
||||
"remove-theme": "هل أنت متأكد أنك تريد إزالة السمة المخصصة؟",
|
||||
"remove-theme-message": "سيؤدي هذا إلى إزالة السمة المخصصة"
|
||||
},
|
||||
"label": "السمة",
|
||||
"submenu": {
|
||||
"import-css-file": "استيراد ملف CSS مخصص",
|
||||
"no-theme": "بدون سمة"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"enabled": "مفعل",
|
||||
"label": "الاضافات",
|
||||
"new": "جديد"
|
||||
},
|
||||
"view": {
|
||||
"label": "اظهار",
|
||||
"submenu": {
|
||||
"force-reload": "اجبار اعادة التحميل",
|
||||
"reload": "اعادة التحميل",
|
||||
"reset-zoom": "الحجم الحقيقي",
|
||||
"toggle-fullscreen": "ملء الشاشة",
|
||||
"zoom-in": "تكبير",
|
||||
"zoom-out": "تصغير"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"next": "التالي",
|
||||
"play-pause": "تشغيل/إيقاف",
|
||||
"previous": "السابق",
|
||||
"quit": "خروج",
|
||||
"restart": "إعادة تشغيل التطبيق",
|
||||
"show": "عرض النافدة",
|
||||
"tooltip": {
|
||||
"default": "يوتيوب اغاني",
|
||||
"with-song-info": "أغاني يوتيوب: {{artist}} - {{title}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "إذا تم عرض إعلان, فإن الصوت سيتم كتمانه وسيتم وضع سرعة التشغيل الى 16x",
|
||||
"name": "تسريع الإعلان"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "حجب جميع الإعلانات والمتتبعات جاهز للأستخدام",
|
||||
"menu": {
|
||||
"blocker": "حاجب الإعلانات"
|
||||
},
|
||||
"name": "حاجب الإعلانات"
|
||||
},
|
||||
"album-actions": {
|
||||
"description": "يضيف أزرار \"إلغاء عدم الاعجاب\" و\"عدم الاعجاب\" و\"الإعجاب\" و\"إلغاء الإعجاب\" لتطبيق ذلك على جميع الأغاني في قائمة تشغيل أو ألبوم",
|
||||
"name": "إجراءات الألبوم"
|
||||
},
|
||||
"album-color-theme": {
|
||||
"description": "يطبق ثيمًا ديناميكيًا وتأثيرات بصرية بناء على ألوان الألبوم",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "نسبة قوة اللون",
|
||||
"submenu": {
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "ثيم ألوان الألبوم"
|
||||
},
|
||||
"ambient-mode": {
|
||||
"description": "يطبق تأثير إضاءة عن طريق إسقاط ألوان ناعمة من الفيديو على خلفية شاشتك",
|
||||
"menu": {
|
||||
"blur-amount": {
|
||||
"label": "مقدار التمويه",
|
||||
"submenu": {
|
||||
"pixels": "{{blurAmount}} بكسل"
|
||||
}
|
||||
},
|
||||
"buffer": {
|
||||
"label": "تخزين الصوت الؤقت",
|
||||
"submenu": {
|
||||
"buffer": "{{buffer}}"
|
||||
}
|
||||
},
|
||||
"opacity": {
|
||||
"label": "الشفافية",
|
||||
"submenu": {
|
||||
"percent": "{{opacity}}%"
|
||||
}
|
||||
},
|
||||
"quality": {
|
||||
"label": "الجودة",
|
||||
"submenu": {
|
||||
"pixels": "{{quality}} بكسل"
|
||||
}
|
||||
},
|
||||
"size": {
|
||||
"label": "الحجم",
|
||||
"submenu": {
|
||||
"percent": "{{size}}%"
|
||||
}
|
||||
},
|
||||
"smoothness-transition": {
|
||||
"label": "انتقال السلاسة",
|
||||
"submenu": {
|
||||
"during": "خلال {{interpolationTime}} ثانيه"
|
||||
}
|
||||
},
|
||||
"use-fullscreen": {
|
||||
"label": "استخدام شاشه كامله"
|
||||
}
|
||||
},
|
||||
"name": "الوضع المحيطي"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "تكامل دعم YouTube Music مع ويدجت Amuse لعرض الأغنية قيد التشغيل، من إنتاج 6K Labs",
|
||||
"name": "تلسيه",
|
||||
"response": {
|
||||
"query": "خادم Amuse API قيد التشغيل. استخدم GET /query للحصول على معلومات الأغنية."
|
||||
}
|
||||
},
|
||||
"api-server": {
|
||||
"description": "يضيف خادم للتحكم في المشغل",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "سماح",
|
||||
"deny": "رفض"
|
||||
},
|
||||
"message": "السماح لـ {{ID}} ({{origin}}) بالوصول إلى واجهة برمجة التطبيقات (API)؟",
|
||||
"title": "طلب السماح بالوصول إلى واجهة برمجة التطبيقات(API)"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "نهج التفويض",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "التفويض المبدئي عند الطلب الأول"
|
||||
},
|
||||
"none": {
|
||||
"label": "بدون تفويض"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "اسم المضيف"
|
||||
},
|
||||
"port": {
|
||||
"label": "المنفذ"
|
||||
}
|
||||
},
|
||||
"name": "خادم API [تجريبي]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "أدخل اسم المضيف (مثل 0.0.0.0) لخادم API:",
|
||||
"title": "اسم الخادم"
|
||||
},
|
||||
"port": {
|
||||
"label": "أدخل المنفذ لخادم API:",
|
||||
"title": "منفذ"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "تطبيق الضغط على الصوت (يخفض مستوى صوت الأجزاء الأعلى من الإشارة ويرفع مستوى صوت الأجزاء الأكثر نعومة)",
|
||||
"name": "ضاغط الصوت"
|
||||
},
|
||||
"blur-nav-bar": {
|
||||
"description": "يجعل شريط التنقل شفاف و ضبابي",
|
||||
"name": "تغبيش شريط التنقل"
|
||||
},
|
||||
"bypass-age-restrictions": {
|
||||
"description": "تجاوز تَحَقّق اليوتيوب من السن",
|
||||
"name": "تجاوز التحقق من السن"
|
||||
},
|
||||
"captions-selector": {
|
||||
"description": "محدد ترجمات المقاطع الصوتية لYoutube Music",
|
||||
"menu": {
|
||||
"autoload": "اختار اخر ترجمة مستخدمة تلقائيا",
|
||||
"disable-captions": "لا توجد ترجمات بشكل افتراضي"
|
||||
},
|
||||
"name": "محدد الترجمة",
|
||||
"prompt": {
|
||||
"selector": {
|
||||
"label": "لغة الترجمة الحالية: {{language}}",
|
||||
"none": "لا شيء",
|
||||
"title": "اختار لغة الترجمة"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"title": "فتح محدد الترجمة"
|
||||
}
|
||||
},
|
||||
"compact-sidebar": {
|
||||
"description": "قم دائمًا بتعيين الشريط الجانبي في الوضع الملموم",
|
||||
"name": "شريط جانبي ملموم"
|
||||
},
|
||||
"crossfade": {
|
||||
"description": "التداخل بين الأغاني",
|
||||
"menu": {
|
||||
"advanced": "متقدم"
|
||||
},
|
||||
"name": "التداخل بين الأغاني [تجريبي]",
|
||||
"prompt": {
|
||||
"options": {
|
||||
"multi-input": {
|
||||
"fade-in-duration": "مدة التداخل (بأجزاء الثانية)",
|
||||
"fade-out-duration": "مدة التلاشي (جزء ثانية)",
|
||||
"fade-scaling": {
|
||||
"label": "توسيع التداخل",
|
||||
"linear": "خطي",
|
||||
"logarithmic": "لوغاريتمي"
|
||||
},
|
||||
"seconds-before-end": "التلاشي قبل النهاية بـ N ثوانٍ"
|
||||
},
|
||||
"title": "خيارات التداخل"
|
||||
}
|
||||
}
|
||||
},
|
||||
"disable-autoplay": {
|
||||
"description": "يجعل الأغنية تبدأ في وضع \"الإيقاف المؤقت\"",
|
||||
"menu": {
|
||||
"apply-once": "ينطبق فقط عند بدء التشغيل"
|
||||
},
|
||||
"name": "تعطيل التشغيل التلقائي"
|
||||
},
|
||||
"discord": {
|
||||
"backend": {
|
||||
"already-connected": "تمت محاولة الاتصال بالاتصال النشط",
|
||||
"connected": "متصل بDiscord",
|
||||
"disconnected": "انقطع الاتصال بDiscord"
|
||||
},
|
||||
"description": "أظهر لأصدقائك ما تستمع إليه من خلال Rich Presence",
|
||||
"menu": {
|
||||
"auto-reconnect": "إعادة اتصال تلقائي",
|
||||
"clear-activity": "مسح النشاط",
|
||||
"clear-activity-after-timeout": "مسح النشاط بعد انتهاء المهلة",
|
||||
"connected": "متصل",
|
||||
"disconnected": "قطع الاتصال",
|
||||
"hide-duration-left": "إخفاء المدة المتبقية",
|
||||
"hide-github-button": "إخفاء زر رابط GitHub",
|
||||
"play-on-youtube-music": "شغل في YouTube Music",
|
||||
"set-inactivity-timeout": "ضبط مهلة عدم النشاط"
|
||||
},
|
||||
"name": "حالة ديسكورد",
|
||||
"prompt": {
|
||||
"set-inactivity-timeout": {
|
||||
"label": "أدخل مهلة عدم النشاط بالثواني:",
|
||||
"title": "ضبط مهلة عدم النشاط"
|
||||
}
|
||||
}
|
||||
},
|
||||
"downloader": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"error": {
|
||||
"buttons": {
|
||||
"ok": "حسنا"
|
||||
},
|
||||
"message": "نعتذر، فشل التحميل…",
|
||||
"title": "خطأ في التحميل!"
|
||||
},
|
||||
"start-download-playlist": {
|
||||
"buttons": {
|
||||
"ok": "حسنا"
|
||||
},
|
||||
"detail": "({{playlistSize}} أغنية)",
|
||||
"message": "تحميل القائمة {{playlistTitle}}",
|
||||
"title": "بدأ التحميل"
|
||||
}
|
||||
},
|
||||
"feedback": {
|
||||
"conversion-progress": "التحويل: {{percent}}%",
|
||||
"converting": "جارٍ التحويل…",
|
||||
"done": "تم: {{filePath}}",
|
||||
"download-info": "تحميل {{artist}} - {{title}} {{videoId}}",
|
||||
"download-progress": "تحميل: {{percent}}%",
|
||||
"downloading": "تحميل…",
|
||||
"downloading-counter": "تنزيل {{current}}/{{total}}…",
|
||||
"downloading-playlist": "يتم تحميل القائمة \"{{playlistTitle}}\" - {{playlistSize}} أغاني ({{playlistId}})",
|
||||
"error-while-downloading": "خطأ في تحميل \"{{author}} - {{title}}\": {{error}}",
|
||||
"folder-already-exists": "الملف {{playlistFolder}} موجود بالفعل",
|
||||
"getting-playlist-info": "الحصول على معلومات القائمة…",
|
||||
"loading": "جار التحميل…",
|
||||
"playlist-has-only-one-song": "تحتوي قائمة التشغيل على عنصر واحد فقط، يتم تحميله الأن",
|
||||
"playlist-id-not-found": "لم يتم العثور على معرف قائمة التشغيل",
|
||||
"playlist-is-empty": "قائمة التشغيل فارغة",
|
||||
"playlist-is-mix-or-private": "حدث خطأ أثناء الحصول على معلومات قائمة التشغيل: تأكد من أنها ليست قائمة تشغيل خاصة أو قائمة تشغيل \"مختلطة لك\"\n\n{{error}}",
|
||||
"preparing-file": "يتم تجهيز الملف…",
|
||||
"saving": "يتم الحفظ…",
|
||||
"trying-to-get-playlist-id": "محاولة الحصول على معرف قائمة التشغيل: {{playlistId}}",
|
||||
"video-id-not-found": "لم يتم ايجاد الفيديو",
|
||||
"writing-id3": "كتابة علامات ID3…"
|
||||
}
|
||||
},
|
||||
"description": "يقوم بتنزيل ملفات MP3/مصدر الصوت مباشرة من الواجهة",
|
||||
"menu": {
|
||||
"choose-download-folder": "اختر مكان التحميل",
|
||||
"download-finish-settings": {
|
||||
"label": "تحميل عند الانتهاء",
|
||||
"prompt": {
|
||||
"last-percent": "بعد ( عدد مجهول ) بالمئة",
|
||||
"last-seconds": "آخر (x) ثانية",
|
||||
"title": "تكوين وقت التحميل"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "متقدم",
|
||||
"enabled": "مفعل",
|
||||
"mode": "وضع الوقت",
|
||||
"percent": "النسبة",
|
||||
"seconds": "ثواني"
|
||||
}
|
||||
},
|
||||
"download-playlist": "تحميل قائمة التشغيل",
|
||||
"presets": "الإعدادات المسبقة",
|
||||
"skip-existing": "تخطي الملفات الموجودة"
|
||||
},
|
||||
"name": "أداة التنزيل",
|
||||
"renderer": {
|
||||
"can-not-update-progress": "لا يمكن تحديث التقدم"
|
||||
},
|
||||
"templates": {
|
||||
"button": "تحميل"
|
||||
}
|
||||
},
|
||||
"equalizer": {
|
||||
"description": "يضيف معادل صوتي للمشغل",
|
||||
"menu": {
|
||||
"presets": {
|
||||
"label": "إعدادات مسبقة",
|
||||
"list": {
|
||||
"bass-booster": "مزود البيس"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "معادل صوتي"
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "يجعل شريط تمرير مستوى الصوت أسيًا بحيث يسهل تحديد مستويات الصوت الأقل.",
|
||||
"name": "الصوت الأسي"
|
||||
},
|
||||
"in-app-menu": {
|
||||
"description": "يعطي أشرطة القوائم مظهرًا أنيقًا و داكنًا أو بلون الألبوم",
|
||||
"menu": {
|
||||
"hide-dom-window-controls": "إخفاء عناصر التحكم في نافذة DOM"
|
||||
},
|
||||
"name": "قائمة داخل التطبيق"
|
||||
},
|
||||
"lumiastream": {
|
||||
"description": "يضيف دعم Lumia Stream",
|
||||
"name": "Lumia Stream [بيتا]"
|
||||
},
|
||||
"lyrics-genius": {
|
||||
"description": "يضيف دعم الكلمات لمعظم الأغاني",
|
||||
"menu": {
|
||||
"romanized-lyrics": "كلمات مكتوبة بحروف رومانية"
|
||||
},
|
||||
"name": "كلمات الأغاني من Genius",
|
||||
"renderer": {
|
||||
"fetched-lyrics": "تم جلب الكلمات من Genius"
|
||||
}
|
||||
},
|
||||
"music-together": {
|
||||
"description": "مشاركة قائمة تشغيل مع الآخرين. عندما يقوم المضيف بتشغيل أغنية، سيسمع الجميع نفس الأغنية",
|
||||
"dialog": {
|
||||
"enter-host": "أدخل معرف المضيف"
|
||||
},
|
||||
"internal": {
|
||||
"save": "حفظ",
|
||||
"track-source": "مصدر الاغنية",
|
||||
"unknown-user": "مستخدم مجهول"
|
||||
},
|
||||
"menu": {
|
||||
"click-to-copy-id": "نسخ معرف المستضيف",
|
||||
"close": "إغلاق \"الموسيقى معًا\"",
|
||||
"connected-users": "المستخدمون المتصلون",
|
||||
"disconnect": "قطع اتصال من \"الموسيقى معًا\"",
|
||||
"empty-user": "لا يوجد مستعملون متصلون",
|
||||
"host": "مضيف \"الموسيقى معًا\"",
|
||||
"join": "الانضمام إلى \"الموسيقى معا\"",
|
||||
"permission": {
|
||||
"all": "السماح للضيوف بالتحكم في قائمة التشغيل والمشغل",
|
||||
"host-only": "فقط المضيف يستطيع التحكم بالقائمة و المشغل",
|
||||
"playlist": "السماح للضيوف بالتحكم بقائمة التشغيل"
|
||||
},
|
||||
"set-permission": "تغيير إذن التحكم",
|
||||
"status": {
|
||||
"disconnected": "قطع الاتصال",
|
||||
"guest": "متصل كضيف",
|
||||
"host": "متصل كمضيف"
|
||||
}
|
||||
},
|
||||
"name": "الموسيقى معا [بيتا]",
|
||||
"toast": {
|
||||
"add-song-failed": "فشل في إضافة أغنية",
|
||||
"closed": "تم إغلاق \"الموسيقى معا\"",
|
||||
"disconnected": "تم قطع اتصال \"الموسيقى معًا\"",
|
||||
"host-failed": "فشل في استضافة \"الموسيقى معا\"",
|
||||
"id-copied": "تم نسخ معرف المضيف",
|
||||
"id-copy-failed": "لم يتم نسخ معرف المضيف",
|
||||
"join-failed": "فشل الانضمام إلى \"الموسيقى معا\"",
|
||||
"joined": "تم الانضمام إلى \"الموسيقى معا\"",
|
||||
"permission-changed": "تم تغيير إذن \"الموسيقى معًا\" إلى \"{{permission}}\"",
|
||||
"remove-song-failed": "فشل في إزالة الأغنية",
|
||||
"user-connected": "{{name}} انضم إلى \"الموسيقى معًا\"",
|
||||
"user-disconnected": "{{name}} غادر \"الموسيقى معًا\""
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"description": "أسهم التنقل \"التالي/السابق\" مدمجة مباشرة في الواجهة، كما في متصفحك",
|
||||
"name": "التنقل"
|
||||
},
|
||||
"no-google-login": {
|
||||
"description": "إزالة أزرار وروابط تسجيل الدخول بجوجل من الواجهة",
|
||||
"name": "لا يوجد تسجيل دخول بجوجل"
|
||||
},
|
||||
"notifications": {
|
||||
"description": "عرض إشعار عندما تبدأ الأغنية بالتشغيل (الإشعارات التفاعلية متوفرة على ويندوز)",
|
||||
"menu": {
|
||||
"interactive": "إشعارات تفاعلية",
|
||||
"interactive-settings": {
|
||||
"label": "إعدادات تفاعلية",
|
||||
"submenu": {
|
||||
"hide-button-text": "إخفاء زر النص",
|
||||
"refresh-on-play-pause": "تحديث عند التشغيل/الإيقاف المؤقت",
|
||||
"tray-controls": "فتح/إغلاق عند النقر على علامة الشريط"
|
||||
}
|
||||
},
|
||||
"priority": "أولوية الإشعار",
|
||||
"toast-style": "تنسيق التوست",
|
||||
"unpause-notification": "إظهار إشعار عند استئناف التشغيل"
|
||||
},
|
||||
"name": "الإشعارات"
|
||||
},
|
||||
"picture-in-picture": {
|
||||
"description": "يسمح بتحويل التطبيق إلى وضع الصورة داخل الصورة",
|
||||
"menu": {
|
||||
"always-on-top": "دائمًا في الأعلى",
|
||||
"hotkey": {
|
||||
"label": "مفتاح اختصار",
|
||||
"prompt": {
|
||||
"keybind-options": {
|
||||
"hotkey": "مفتاح اختصار"
|
||||
},
|
||||
"label": "اختر مفتاح اختصار لتبديل وضع الصورة داخل الصورة",
|
||||
"title": "مفتاح اختصار الصورة داخل الصورة"
|
||||
}
|
||||
},
|
||||
"save-window-position": "حفظ موقع النافذة",
|
||||
"save-window-size": "حفظ حجم النافذة",
|
||||
"use-native-pip": "استخدام وضع الصورة داخل الصورة الأصلي للمتصفح"
|
||||
},
|
||||
"name": "الصورة داخل الصورة",
|
||||
"templates": {
|
||||
"button": "وضع الصورة داخل الصورة"
|
||||
}
|
||||
},
|
||||
"playback-speed": {
|
||||
"description": "استمع بسرعة، استمع ببطء! يضيف شريط تمرير يتحكم في سرعة الأغنية",
|
||||
"name": "سرعة التشغيل",
|
||||
"templates": {
|
||||
"button": "السرعة"
|
||||
}
|
||||
},
|
||||
"precise-volume": {
|
||||
"description": "التحكم في مستوى الصوت بدقة باستخدام عجلة الفأرة/مفاتيح الاختصار، مع واجهة مستخدم مخصصة وقابلة للتخصيص وخطوات صوتية قابلة للتعديل",
|
||||
"menu": {
|
||||
"arrows-shortcuts": "عناصر التحكم بأسهم المفاتيح",
|
||||
"custom-volume-steps": "تعيين خطوات صوتية خاصة",
|
||||
"global-shortcuts": "مفاتيح اختصار عام"
|
||||
},
|
||||
"name": "مستوى صوت دقيق",
|
||||
"prompt": {
|
||||
"global-shortcuts": {
|
||||
"keybind-options": {
|
||||
"decrease": "تقليل مستوى الصوت",
|
||||
"increase": "زيادة مستوى الصوت"
|
||||
},
|
||||
"label": "اختر اختصارات لوحة المفاتيح للتحكم بمستوى الصوت:",
|
||||
"title": "اختصارات لوحة المفاتيح للتحكم بمستوى الصوت"
|
||||
},
|
||||
"volume-steps": {
|
||||
"label": "اختر خطوات زيادة/تقليل مستوى الصوت",
|
||||
"title": "خطوات زيادة الصوت"
|
||||
}
|
||||
}
|
||||
},
|
||||
"quality-changer": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"quality-changer": {
|
||||
"detail": "الجودة الحالية: {{quality}}",
|
||||
"message": "اختر جودة الفيديو:",
|
||||
"title": "اختر جودة الفيديو"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "يسمح بتغيير جودة الفيديو باستخدام زر على صورة الفيديو",
|
||||
"name": "مغير جودة الفيديو"
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "إضافة دعم Scrobbling (مثل Last.fm، ListenBrainz)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "فشل المصادقة مع Last.fm\nإخفاء النافذة المنبثقة حتى إعادة التشغيل التالية.",
|
||||
"title": "فشلت المصادقة"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "إعدادات Last.fm API"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": "أدخل رمز مستخدم ListenBrainz"
|
||||
},
|
||||
"scrobble-alternative-title": "استخدم عناوين بديلة",
|
||||
"scrobble-other-media": "Scrobble الوسائط الأخرى"
|
||||
},
|
||||
"name": "أداة تتبع الاستماع",
|
||||
"prompt": {
|
||||
"lastfm": {
|
||||
"api-key": "مفتاح Last.fm API",
|
||||
"api-secret": "الرمز السري لـ Last.fm API"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": {
|
||||
"label": "أدخل رمز مستخدم ListenBrainz الخاص بك:",
|
||||
"title": "رمز ListenBrainz"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"shortcuts": {
|
||||
"description": "يسمح بضبط اختصارات لوحة المفاتيح العالمية للتحكم في التشغيل (تشغيل/إيقاف مؤقت/التالي/السابق) وإيقاف تشغيل OSD الوسائط عن طريق تجاوز مفاتيح الوسائط، وتشغيل Ctrl/CMD + F للبحث، وتفعيل دعم Linux MPRIS لمفاتيح الوسائط، واختصارات مخصصة للمستخدمين المتقدمين",
|
||||
"menu": {
|
||||
"override-media-keys": "تجاوز مفاتيح الوسائط",
|
||||
"set-keybinds": "تعيين عناصر التحكم بالأغاني"
|
||||
},
|
||||
"name": "الاختصارات (& MPRIS)",
|
||||
"prompt": {
|
||||
"keybind": {
|
||||
"keybind-options": {
|
||||
"next": "التالي",
|
||||
"play-pause": "تشغيل/ إيقاف",
|
||||
"previous": "السابق"
|
||||
},
|
||||
"label": "اختر اختصارات لوحة المفاتيح للتحكم في الأغاني:",
|
||||
"title": "اختصارات لوحة المفاتيح العالمية"
|
||||
}
|
||||
}
|
||||
},
|
||||
"skip-disliked-songs": {
|
||||
"description": "تخطي الأغاني غير المرغوب فيها",
|
||||
"name": "تخطي الأغاني الغير مرغوب فيها"
|
||||
},
|
||||
"skip-silences": {
|
||||
"description": "تخطي أقسام الصمت تلقائيًا في الأغاني",
|
||||
"name": "تخطي فترات الصمت"
|
||||
},
|
||||
"sponsorblock": {
|
||||
"description": "تخطي تلقائيًا الأجزاء غير الموسيقية مثل المقدمة/الختام أو أجزاء مقاطع الفيديو الموسيقية حيث لا يتم تشغيل الأغنية",
|
||||
"name": "SponsorBlock"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "يوفر كلمات الأغاني المتزامنة باستخدام مزودين مثل LRClib.",
|
||||
"errors": {
|
||||
"fetch": "⚠️ حدث خطأ أثناء جلب كلمات الأغنية.\nيرجى المحاولة مرة أخرى لاحقًا.",
|
||||
"not-found": "⚠️ لم يتم العثور على كلمات لهذه الأغنية."
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "المسافة الافتراضي بين كلمات الأغاني",
|
||||
"tooltip": "اختر الحرف الافتراضي لاستخدامه في الفجوة بين كلمات الأغنية"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "تأثير الخط",
|
||||
"submenu": {
|
||||
"fancy": {
|
||||
"label": "فاخر",
|
||||
"tooltip": "استخدم تأثيرات كبيرة تشبه التطبيقات على السطر الحالي"
|
||||
},
|
||||
"focus": {
|
||||
"label": "تركيز",
|
||||
"tooltip": "اجعل السطر الحالي فقط باللون الأبيض"
|
||||
},
|
||||
"offset": {
|
||||
"label": "مزاح",
|
||||
"tooltip": "مزاح الى يمين السطر الحالي"
|
||||
},
|
||||
"scale": {
|
||||
"label": "تحجيم",
|
||||
"tooltip": "تكبير السطر الحالي"
|
||||
}
|
||||
},
|
||||
"tooltip": "اختر التأثير لتطبيقه على السطر الحالي"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "اجعل كلمات الأغنية متزامنة بشكل مثالي",
|
||||
"tooltip": "احسب بدقة الملي ثانية عرض السطر التالي (قد يكون له تأثير طفيف على الأداء)"
|
||||
},
|
||||
"romanization": {
|
||||
"label": "اجعل الكلمات رومانية",
|
||||
"tooltip": "إذا كانت كلمات الأغنية بلغة مختلفة، حاول عرض نسخة بالحروف اللاتينية."
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "أظهر كلمات الأغنية حتى لو كانت غير دقيقة",
|
||||
"tooltip": "إذا لم يتم العثور على الأغنية، سوف يتم البحث مرة أخرى باستخدام استعلام بحث مختلف.\nقد لا تكون النتيجة من المحاولة الثانية دقيقة."
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "أظهر الرموز الزمنية",
|
||||
"tooltip": "أظهر الرموز الزمنية بجانب كلمات الأغنية"
|
||||
}
|
||||
},
|
||||
"name": "كلمات متزامنة",
|
||||
"refetch-btn": {
|
||||
"fetching": "جارٍ الجلب...",
|
||||
"normal": "إعادة جلب كلمات الأغنية"
|
||||
},
|
||||
"warnings": {
|
||||
"duration-mismatch": "⚠️ - قد تكون الكلمات غير متزامنة بسبب عدم تطابق المدة.",
|
||||
"inexact": "⚠️ - قد لا تكون كلمات هذه الأغنية دقيقة",
|
||||
"instrumental": "⚠️ - هذه أغنية آلية (بدون كلمات)"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "التحكم في المشغل من شريط المهام ويندوز",
|
||||
"name": "التحكم بالوسائط من شريط المهام"
|
||||
},
|
||||
"touchbar": {
|
||||
"description": "يضيف أداة TouchBar لمستخدمي macOS",
|
||||
"name": "شريط اللمس (TouchBar)"
|
||||
},
|
||||
"tuna-obs": {
|
||||
"description": "التكامل مع الإضافة\" Tuna\" الخاصة بـ OBS",
|
||||
"name": "إضافة Tuna OBS"
|
||||
},
|
||||
"unobtrusive-player": {
|
||||
"description": "يمنع المشغل من الظهور عند تشغيل أغنية",
|
||||
"name": "مشغل غير مزعج"
|
||||
},
|
||||
"video-toggle": {
|
||||
"description": "يضيف زرًا للتبديل بين وضع الفيديو/الأغنية. يمكن أيضًا اختياريًا إزالة علامة الفيديو بالكامل",
|
||||
"menu": {
|
||||
"align": {
|
||||
"label": "المحاذاة",
|
||||
"submenu": {
|
||||
"left": "يسار",
|
||||
"middle": "المنتصف",
|
||||
"right": "يمين"
|
||||
}
|
||||
},
|
||||
"force-hide": "إزالة علامة تبويب الفيديو",
|
||||
"mode": {
|
||||
"label": "وضع",
|
||||
"submenu": {
|
||||
"custom": "تبديل مخصص",
|
||||
"disabled": "غير مفعل",
|
||||
"native": "تبديل طبيعي"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "تفعيل الفيديو",
|
||||
"templates": {
|
||||
"button": "أغنية"
|
||||
}
|
||||
},
|
||||
"visualizer": {
|
||||
"description": "يضيف معاينًا بصريًا للمشغل",
|
||||
"menu": {
|
||||
"visualizer-type": "نوع المعاينة المصرية"
|
||||
},
|
||||
"name": "معاين بصري"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -3,7 +3,7 @@
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "Неуспешно изпълнение на плъгин {{pluginName}}::{{contextName}}",
|
||||
"executed-at-ms": "Плъгин {{pluginName}}::{{contextName}} изпълнет в {{ms}}ms",
|
||||
"executed-at-ms": "Плъгинът {{pluginName}}::{{contextName}} беше изпълнен на {{ms}}ms",
|
||||
"initialize-failed": "Неуспешна инициализация на плъгин \"{{pluginName}}\"",
|
||||
"load-all": "Зареждане на всички плъгини",
|
||||
"load-failed": "Неуспешно зареждане на плъгин \"{{pluginName}}\"",
|
||||
@ -41,6 +41,805 @@
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "Прозореца се опита да се изрисува извън екрана, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "Менюто е скрито. Използвайте \"Alt\", за да го покажете, или \"Escape\", ако използвате менюто в приложението",
|
||||
"message": "\"Скриване на менюто\" е активирано",
|
||||
"title": "\"Скриване на менюто\" активирано"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "По-късно",
|
||||
"restart-now": "Рестартиране сега"
|
||||
},
|
||||
"detail": "\"{{pluginName}}\" плъгинът изисква рестартиране, за да влезе в сила",
|
||||
"message": "\"{{pluginName}}\" трябва да рестартира",
|
||||
"title": "Изисква се рестартиране"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "Прекратяване",
|
||||
"relaunch": "Повторно стартиране",
|
||||
"wait": "Изчакване"
|
||||
},
|
||||
"detail": "Съжаляваме за неудобството! Моля, изберете какво да направите:",
|
||||
"message": "Приложението не реагира",
|
||||
"title": "Прозорецът не реагира"
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"disable": "Деактивиране на актуализациите",
|
||||
"download": "Изтегляне",
|
||||
"ok": "Добре"
|
||||
},
|
||||
"detail": "Налична е нова версия, която можете да изтеглите от {{downloadLink}}",
|
||||
"message": "Налична е нова версия",
|
||||
"title": "Налична е актуализация"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"about": "За нас",
|
||||
"navigation": {
|
||||
"label": "Навигация",
|
||||
"submenu": {
|
||||
"copy-current-url": "Копиране на текущия URL адрес",
|
||||
"go-back": "Назад",
|
||||
"go-forward": "Напред",
|
||||
"quit": "Изход",
|
||||
"restart": "Рестартиране на приложението"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"label": "Опции",
|
||||
"submenu": {
|
||||
"advanced-options": {
|
||||
"label": "Разширени опции",
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "Нулиране на кеша на приложението при стартиране на приложението",
|
||||
"disable-hardware-acceleration": "Деактивиране на хардуерното ускорение",
|
||||
"edit-config-json": "Редактиране на config.json",
|
||||
"override-user-agent": "Замяна на User-Agent",
|
||||
"restart-on-config-changes": "Рестартиране при промени в конфигурацията",
|
||||
"set-proxy": {
|
||||
"label": "Задаване на прокси",
|
||||
"prompt": {
|
||||
"label": "Въведете адрес на прокси: (оставете празно, за да деактивирате)",
|
||||
"placeholder": "Пример: SOCKS5://127.0.0.1:9999",
|
||||
"title": "Задаване на прокси"
|
||||
}
|
||||
},
|
||||
"toggle-dev-tools": "Активиране на DevTools"
|
||||
}
|
||||
},
|
||||
"always-on-top": "Винаги отгоре",
|
||||
"auto-update": "Автоматично актуализиране",
|
||||
"hide-menu": {
|
||||
"dialog": {
|
||||
"message": "Менюто ще бъде скрито при следващото стартиране, използвайте [Alt], за да го покажете, или задния бутон [`], ако използвате менюто в приложението",
|
||||
"title": "\"Скриване на менюто\" активирано"
|
||||
},
|
||||
"label": "Скриване на менюто"
|
||||
},
|
||||
"language": {
|
||||
"dialog": {
|
||||
"message": "Езикът ще бъде променен след рестартиране",
|
||||
"title": "Езикът беше променен"
|
||||
},
|
||||
"label": "Език",
|
||||
"submenu": {
|
||||
"to-help-translate": "Искате да помогнете с езиковия превод? Кликнете тук"
|
||||
}
|
||||
},
|
||||
"resume-on-start": "Възобновяване на последната песен при стартиране на приложението",
|
||||
"single-instance-lock": "Заключване до една инстанция",
|
||||
"start-at-login": "Стартиране при вход",
|
||||
"starting-page": {
|
||||
"label": "Начална страница",
|
||||
"unset": "Неустановена"
|
||||
},
|
||||
"tray": {
|
||||
"label": "Панел",
|
||||
"submenu": {
|
||||
"disabled": "Деактивирано",
|
||||
"enabled-and-hide-app": "Активиране и скриване на приложението",
|
||||
"enabled-and-show-app": "Активиране и показване на приложението",
|
||||
"play-pause-on-click": "Възпроизвеждане/Спиране при кликване"
|
||||
}
|
||||
},
|
||||
"visual-tweaks": {
|
||||
"label": "Визуални настройки",
|
||||
"submenu": {
|
||||
"like-buttons": {
|
||||
"default": "По подразбиране",
|
||||
"force-show": "Принудително показване",
|
||||
"hide": "Скриване",
|
||||
"label": "Показване на \"Харесвам\" бутони"
|
||||
},
|
||||
"remove-upgrade-button": "Премахване на \"Ъпгрейд\" бутона",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "Отказ",
|
||||
"remove": "Премахни"
|
||||
},
|
||||
"remove-theme": "Сигурни ли сте, че искате да премахнете персонализираната тема?",
|
||||
"remove-theme-message": "Това ще премахне персонализираната тема"
|
||||
},
|
||||
"label": "Тема",
|
||||
"submenu": {
|
||||
"import-css-file": "Импортиране на потребителски CSS файл",
|
||||
"no-theme": "Без тема"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"enabled": "Активирани",
|
||||
"label": "Плъгини",
|
||||
"new": "НОВО"
|
||||
},
|
||||
"view": {
|
||||
"label": "Преглед",
|
||||
"submenu": {
|
||||
"force-reload": "Принудително презареждане",
|
||||
"reload": "Презареди",
|
||||
"reset-zoom": "Действителен размер",
|
||||
"toggle-fullscreen": "Превключване на цял екран",
|
||||
"zoom-in": "Увеличаване",
|
||||
"zoom-out": "Намаляване"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"next": "Следващ",
|
||||
"play-pause": "Възпроизвеждане/Пауза",
|
||||
"previous": "Предишен",
|
||||
"quit": "Изход",
|
||||
"restart": "Рестартирай приложението",
|
||||
"show": "Покажи прозорец",
|
||||
"tooltip": {
|
||||
"default": "YouTube Музика",
|
||||
"with-song-info": "YouTube Музика: {{artist}} - {{title}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "Ако се пусне реклама, заглушава аудиото и задава скорост на възпроизвеждане 16x",
|
||||
"name": "Ускоряване на рекламите"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "Блокиране на всички реклами и проследяване по подразбиране",
|
||||
"menu": {
|
||||
"blocker": "Блокировач"
|
||||
},
|
||||
"name": "Блокировач на реклами"
|
||||
},
|
||||
"album-actions": {
|
||||
"description": "Добавя бутони „Не харесвам“, „Харесвам“, „Харесано“ и „Премахване на харесване“, за да приложите това към всички песни в плейлист или албум",
|
||||
"name": "Действия за албум"
|
||||
},
|
||||
"album-color-theme": {
|
||||
"description": "Прилага динамична тема и визуални ефекти въз основа на цветовата палитра на албума",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "Съотношение на смесване на цветовете",
|
||||
"submenu": {
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Цветова тема на албума"
|
||||
},
|
||||
"ambient-mode": {
|
||||
"description": "Прилага светлинен ефект, като проектира нежни цветове от видеото върху фона на екрана",
|
||||
"menu": {
|
||||
"blur-amount": {
|
||||
"label": "Степен на замъгляване",
|
||||
"submenu": {
|
||||
"pixels": "{{blurAmount}} пиксела"
|
||||
}
|
||||
},
|
||||
"buffer": {
|
||||
"label": "Буферизация",
|
||||
"submenu": {
|
||||
"buffer": "{{buffer}}"
|
||||
}
|
||||
},
|
||||
"opacity": {
|
||||
"label": "Непрозрачност",
|
||||
"submenu": {
|
||||
"percent": "{{opacity}}%"
|
||||
}
|
||||
},
|
||||
"quality": {
|
||||
"label": "Качество",
|
||||
"submenu": {
|
||||
"pixels": "{{quality}} пиксела"
|
||||
}
|
||||
},
|
||||
"size": {
|
||||
"label": "Размер",
|
||||
"submenu": {
|
||||
"percent": "{{size}}%"
|
||||
}
|
||||
},
|
||||
"smoothness-transition": {
|
||||
"label": "Плавен преход",
|
||||
"submenu": {
|
||||
"during": "{{interpolationTime}} секунди"
|
||||
}
|
||||
},
|
||||
"use-fullscreen": {
|
||||
"label": "Използване на цял екран"
|
||||
}
|
||||
},
|
||||
"name": "Атмосферен режим"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "Добавя поддръжка на YouTube Music за джаджата Amuse Now Play от 6K Labs",
|
||||
"name": "Забавление",
|
||||
"response": {
|
||||
"query": "Сървърът на Amuse API работи. Изпратете GET /query за информация за песента."
|
||||
}
|
||||
},
|
||||
"api-server": {
|
||||
"description": "Добавя API сървър за контрол на плейъра",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "Разрешавам",
|
||||
"deny": "Отказвам"
|
||||
},
|
||||
"message": "Позволяваш ли {{ID}} {{origin}} да достъпва API-то?",
|
||||
"title": "Заявка за авторизация на API"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Стратегия за авторизация",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "Авторизиране при първата заявка"
|
||||
},
|
||||
"none": {
|
||||
"label": "Без авторизация"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "Име на хост"
|
||||
},
|
||||
"port": {
|
||||
"label": "Порт"
|
||||
}
|
||||
},
|
||||
"name": "API сървър [Бета]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "Въведете името на хоста (като 0.0.0.0) за API сървъра:",
|
||||
"title": "Име на хост"
|
||||
},
|
||||
"port": {
|
||||
"label": "Въведете порта за API сървъра:",
|
||||
"title": "Порт"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Прилага компресия на аудиото (намалява обема на най-силните части от сигнала и увеличава обема на най-тихите части)",
|
||||
"name": "Аудио компресор"
|
||||
},
|
||||
"blur-nav-bar": {
|
||||
"description": "Прави навигационната лента прозрачна и размазана",
|
||||
"name": "Размазанa навигационна лента"
|
||||
},
|
||||
"bypass-age-restrictions": {
|
||||
"description": "Избягване на възрастова верификация на YouTube",
|
||||
"name": "Избягване на възрастови ограничения"
|
||||
},
|
||||
"captions-selector": {
|
||||
"description": "Избор на надписи за аудио тракове в YouTube Music",
|
||||
"menu": {
|
||||
"autoload": "Автоматично избиране на последно използвания надпис",
|
||||
"disable-captions": "Без надписи по подразбиране"
|
||||
},
|
||||
"name": "Избор на надписи",
|
||||
"prompt": {
|
||||
"selector": {
|
||||
"label": "Език на надписи: {{language}}",
|
||||
"none": "Нищо",
|
||||
"title": "Избери език на надписите"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"title": "Отвори избора на надписи"
|
||||
}
|
||||
},
|
||||
"compact-sidebar": {
|
||||
"description": "Винаги настройвай страничната лента в компактен режим",
|
||||
"name": "Компактна странична лента"
|
||||
},
|
||||
"crossfade": {
|
||||
"description": "Плавно преминаване през песните",
|
||||
"menu": {
|
||||
"advanced": "Разширено"
|
||||
},
|
||||
"name": "Плавно преминаване [Beta]",
|
||||
"prompt": {
|
||||
"options": {
|
||||
"multi-input": {
|
||||
"fade-in-duration": "Продължителност на преливането (милисекунди)",
|
||||
"fade-out-duration": "Продължителност на затихването (милисекунди)",
|
||||
"fade-scaling": {
|
||||
"label": "Скалиране на избледняването",
|
||||
"linear": "Линейно",
|
||||
"logarithmic": "Логаритмично"
|
||||
},
|
||||
"seconds-before-end": "Преливане N секунди преди края"
|
||||
},
|
||||
"title": "Опции за преливане"
|
||||
}
|
||||
}
|
||||
},
|
||||
"disable-autoplay": {
|
||||
"description": "Започва песента в паузиран режим",
|
||||
"menu": {
|
||||
"apply-once": "Важи само на стартиране"
|
||||
},
|
||||
"name": "Изключи автоматичното пускане"
|
||||
},
|
||||
"discord": {
|
||||
"backend": {
|
||||
"already-connected": "Опит за свързване с активна връзка",
|
||||
"connected": "Свързано с Discord",
|
||||
"disconnected": "Прекъсната връзка с Discord"
|
||||
},
|
||||
"description": "Покажи на приятелите си какво слушате с Rich Presence",
|
||||
"menu": {
|
||||
"auto-reconnect": "Автоматично повторно свързване",
|
||||
"clear-activity": "Изчистване на активността",
|
||||
"clear-activity-after-timeout": "Изчистване на активността след изтичане на времето",
|
||||
"connected": "Свързано",
|
||||
"disconnected": "Прекъснато",
|
||||
"hide-duration-left": "Скрий оставащото време",
|
||||
"hide-github-button": "Скрий бутона за линк към GitHub",
|
||||
"play-on-youtube-music": "Възпроизведи в YouTube Music",
|
||||
"set-inactivity-timeout": "Задай таймаут за неактивност"
|
||||
},
|
||||
"name": "Дискорд Разширен статус",
|
||||
"prompt": {
|
||||
"set-inactivity-timeout": {
|
||||
"label": "Въведете таймаута за неактивност в секунди:",
|
||||
"title": "Задайте таймаут за неактивност"
|
||||
}
|
||||
}
|
||||
},
|
||||
"downloader": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"error": {
|
||||
"buttons": {
|
||||
"ok": "ОК"
|
||||
},
|
||||
"message": "Ох! Извинявайте, изтеглянето не успя…",
|
||||
"title": "Грешка при изтегляне!"
|
||||
},
|
||||
"start-download-playlist": {
|
||||
"buttons": {
|
||||
"ok": "ОК"
|
||||
},
|
||||
"detail": "({{playlistSize}} песни)",
|
||||
"message": "Изтегляне на плейлист {{playlistTitle}}",
|
||||
"title": "Изтеглянето започна"
|
||||
}
|
||||
},
|
||||
"feedback": {
|
||||
"conversion-progress": "Конвертиране: {{percent}}%",
|
||||
"converting": "Превръщане…",
|
||||
"done": "Готово: {{filePath}}",
|
||||
"download-info": "Изтегляне на {{artist}} - {{title}} [{{videoId}}",
|
||||
"download-progress": "Изтегляне: {{percent}}%",
|
||||
"downloading": "Изтегляне…",
|
||||
"downloading-counter": "Изтегляне {{current}}/{{total}}…",
|
||||
"downloading-playlist": "Изтегляне на плейлист \"{{playlistTitle}}\" - {{playlistSize}} песни ({{playlistId}})",
|
||||
"error-while-downloading": "Грешка при изтегляне на \"{{author}} - {{title}}\": {{error}}",
|
||||
"folder-already-exists": "Папката {{playlistFolder}} вече съществува",
|
||||
"getting-playlist-info": "Получаване на информация за плейлист…",
|
||||
"loading": "Зареждане…",
|
||||
"playlist-has-only-one-song": "Плейлистът съдържа само един елемент, изтегля се директно",
|
||||
"playlist-id-not-found": "Не е намерен ID на плейлист",
|
||||
"playlist-is-empty": "Плейлистът е празен",
|
||||
"playlist-is-mix-or-private": "Грешка при получаване на информация за плейлист: уверете се, че не е частен или \"Смесено за вас\" плейлист\n\n{{error}}",
|
||||
"preparing-file": "Подготвяне на файла…",
|
||||
"saving": "Записване…",
|
||||
"trying-to-get-playlist-id": "Опитвам се да получа ID на плейлист: {{playlistId}}",
|
||||
"video-id-not-found": "Видео не е намерено",
|
||||
"writing-id3": "Записване на ID3 тагове…"
|
||||
}
|
||||
},
|
||||
"description": "Изтегля MP3 / източниково аудио директно от интерфейса",
|
||||
"menu": {
|
||||
"choose-download-folder": "Изберете папка за изтегляне",
|
||||
"download-finish-settings": {
|
||||
"label": "Изтегляне при завършване",
|
||||
"prompt": {
|
||||
"last-percent": "След x процента",
|
||||
"last-seconds": "Последни x секунди",
|
||||
"title": "Конфигурирайте кога да изтеглите"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "Разширени настройки",
|
||||
"enabled": "Активирано",
|
||||
"mode": "Режим на време",
|
||||
"percent": "Процент",
|
||||
"seconds": "Секунди"
|
||||
}
|
||||
},
|
||||
"download-playlist": "Изтегляне на плейлист",
|
||||
"presets": "Предварително зададени настройки",
|
||||
"skip-existing": "Пропусни съществуващите файлове"
|
||||
},
|
||||
"name": "Изтегляч",
|
||||
"renderer": {
|
||||
"can-not-update-progress": "Не може да се актуализира напредъкът"
|
||||
},
|
||||
"templates": {
|
||||
"button": "Изтегляне"
|
||||
}
|
||||
},
|
||||
"equalizer": {
|
||||
"description": "Добавя еквалайзер към плеъра",
|
||||
"menu": {
|
||||
"presets": {
|
||||
"label": "Предварителни настройки",
|
||||
"list": {
|
||||
"bass-booster": "Усилвател на басове"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Еквалайзер"
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "Прави плъзгача за сила на звука експоненциален, така че да е по-лесно да се избират по-ниски нива на звук.",
|
||||
"name": "Експоненциален звук"
|
||||
},
|
||||
"in-app-menu": {
|
||||
"description": "Придава на меню баровете стилен, тъмен или с цвят на албума вид",
|
||||
"menu": {
|
||||
"hide-dom-window-controls": "Скрий контролните елементи на DOM прозореца"
|
||||
},
|
||||
"name": "Меню в приложението"
|
||||
},
|
||||
"lumiastream": {
|
||||
"description": "Добавя поддръжка за Lumia Stream",
|
||||
"name": "Lumia Stream [Бета]"
|
||||
},
|
||||
"lyrics-genius": {
|
||||
"description": "Добавя поддръжка за текстове за повечето песни",
|
||||
"menu": {
|
||||
"romanized-lyrics": "Романизирани текстове"
|
||||
},
|
||||
"name": "Текстове от Genius",
|
||||
"renderer": {
|
||||
"fetched-lyrics": "Изтеглени текстове от Genius"
|
||||
}
|
||||
},
|
||||
"music-together": {
|
||||
"description": "Сподели плейлист с други. Когато хостът пусне песен, всички останали ще чуят същата песен",
|
||||
"dialog": {
|
||||
"enter-host": "Въведи ID на хоста"
|
||||
},
|
||||
"internal": {
|
||||
"save": "Запазване",
|
||||
"track-source": "Източник на трак",
|
||||
"unknown-user": "Неизвестен потребител"
|
||||
},
|
||||
"menu": {
|
||||
"click-to-copy-id": "Копирай ID на хост",
|
||||
"close": "Затвори Music Together",
|
||||
"connected-users": "Свързани потребители",
|
||||
"disconnect": "Прекъсни Music Together",
|
||||
"empty-user": "Няма свързани потребители",
|
||||
"host": "Хост на Music Together",
|
||||
"join": "Присъедини се към Music Together",
|
||||
"permission": {
|
||||
"all": "Позволи на гостите да управляват плейлист и плеър",
|
||||
"host-only": "Само хостът може да управлява плейлист и плеър",
|
||||
"playlist": "Позволи на гостите да управляват плейлист"
|
||||
},
|
||||
"set-permission": "Промени разрешението за управление",
|
||||
"status": {
|
||||
"disconnected": "Прекъснато",
|
||||
"guest": "Свързан като гост",
|
||||
"host": "Свързан като хост"
|
||||
}
|
||||
},
|
||||
"name": "Music Together [Бета]",
|
||||
"toast": {
|
||||
"add-song-failed": "Неуспешно добавяне на песен",
|
||||
"closed": "Music Together е затворена",
|
||||
"disconnected": "Music Together е прекъсната",
|
||||
"host-failed": "Неуспешно хостване на Music Together",
|
||||
"id-copied": "ID на хоста е копиран в клипборда",
|
||||
"id-copy-failed": "Неуспешно копиране на ID на хоста в клипборда",
|
||||
"join-failed": "Неуспешно присъединяване към Music Together",
|
||||
"joined": "Присъединен към Music Together",
|
||||
"permission-changed": "Разрешението за Music Together е променено на \"{{permission}}\"",
|
||||
"remove-song-failed": "Неуспешно премахване на песен",
|
||||
"user-connected": "{{name}} се присъедини към Music Together",
|
||||
"user-disconnected": "{{name}} напусна Music Together"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"description": "Навигационни стрелки Напред/Назад, директно интегрирани в интерфейса, както в любимия ви браузър",
|
||||
"name": "Навигация"
|
||||
},
|
||||
"no-google-login": {
|
||||
"description": "Премахни бутоните за вход с Google и връзките от интерфейса",
|
||||
"name": "Няма вход с Google"
|
||||
},
|
||||
"notifications": {
|
||||
"description": "Показване на известие при стартиране на песен (интерактивни известия са налични за Windows)",
|
||||
"menu": {
|
||||
"interactive": "Интерактивни известия",
|
||||
"interactive-settings": {
|
||||
"label": "Интерактивни настройки",
|
||||
"submenu": {
|
||||
"hide-button-text": "Скрий текста на бутоните",
|
||||
"refresh-on-play-pause": "Обновяване при Възпроизвеждане/Пауза",
|
||||
"tray-controls": "Отваряне/Затваряне при клик в тавата"
|
||||
}
|
||||
},
|
||||
"priority": "Приоритет на известията",
|
||||
"toast-style": "Стил на toast (кратки изскачащи известия)",
|
||||
"unpause-notification": "Показване на известие при възобновяване"
|
||||
},
|
||||
"name": "Известия"
|
||||
},
|
||||
"picture-in-picture": {
|
||||
"description": "Позволява превключване на приложението в режим картинка във картинка",
|
||||
"menu": {
|
||||
"always-on-top": "Винаги на преден план",
|
||||
"hotkey": {
|
||||
"label": "Клавишна комбинация",
|
||||
"prompt": {
|
||||
"keybind-options": {
|
||||
"hotkey": "Клавишна комбинация"
|
||||
},
|
||||
"label": "Изберете клавишна комбинация за превключване на картинка във картинка",
|
||||
"title": "Клавишна комбинация за картинка във картинка"
|
||||
}
|
||||
},
|
||||
"save-window-position": "Запомняне на позицията на прозореца",
|
||||
"save-window-size": "Запомняне на размера на прозореца",
|
||||
"use-native-pip": "Използвайте вградения картинка във картинка на браузера"
|
||||
},
|
||||
"name": "Картинка във картинка",
|
||||
"templates": {
|
||||
"button": "Картинка във картинка"
|
||||
}
|
||||
},
|
||||
"playback-speed": {
|
||||
"description": "Слушай бързо, слушай бавно! Добавя плъзгач, който управлява скоростта на песните",
|
||||
"name": "Скорост на възпроизвеждане",
|
||||
"templates": {
|
||||
"button": "Скорост"
|
||||
}
|
||||
},
|
||||
"precise-volume": {
|
||||
"description": "Управлявайте прецизно силата на звука чрез колелото на мишката или бързи клавиши, с персонализиран HUD и настройвани нива на звука",
|
||||
"menu": {
|
||||
"arrows-shortcuts": "Локални контроли със стрелки",
|
||||
"custom-volume-steps": "Задайте персонализирани нива на звука",
|
||||
"global-shortcuts": "Глобални бързи клавиши"
|
||||
},
|
||||
"name": "Точна сила на звука",
|
||||
"prompt": {
|
||||
"global-shortcuts": {
|
||||
"keybind-options": {
|
||||
"decrease": "Намаляване на звука",
|
||||
"increase": "Усилване на звука"
|
||||
},
|
||||
"label": "Изберете глобални клавишни комбинации за сила на звука:",
|
||||
"title": "Глобални клавишни комбинации за звук"
|
||||
},
|
||||
"volume-steps": {
|
||||
"label": "Изберете стъпки за увеличаване/намаляване на звука",
|
||||
"title": "Стъпки на звука"
|
||||
}
|
||||
}
|
||||
},
|
||||
"quality-changer": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"quality-changer": {
|
||||
"detail": "Текущо качество: {{quality}}",
|
||||
"message": "Изберете качество на видеото:",
|
||||
"title": "Изберете качество на видеото"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Позволява промяна на качеството на видеото с бутон върху видеото",
|
||||
"name": "Промяна на качеството на видеото"
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "Добавяне на скробблинг поддръжка (last.fm, Listenbrainz и т.н.)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "Грешка при удостоверяване с Last.fm\nСкрий изкачащия прозорец до следващо пускане.",
|
||||
"title": "Грешка при удостоверяване"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "Настройки за Last.fm API"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": "Въведете ListenBrainz потребителски токен"
|
||||
},
|
||||
"scrobble-alternative-title": "Използвай алтернативни заглавия",
|
||||
"scrobble-other-media": "Скробъл на други медии"
|
||||
},
|
||||
"name": "Скробълър",
|
||||
"prompt": {
|
||||
"lastfm": {
|
||||
"api-key": "Last.fm API ключ",
|
||||
"api-secret": "Last.fm API тайна"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": {
|
||||
"label": "Въведете вашия ListenBrainz потребителски токен:",
|
||||
"title": "ListenBrainz токен"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"shortcuts": {
|
||||
"description": "Позволява задаване на глобални бързи клавиши за възпроизвеждане (пускане/пауза/следваща/предишна), изключване на медиен OSD чрез презаписване на медийни клавиши, включване на Ctrl/CMD + F за търсене, включване на Linux MPRIS поддръжка за медийни клавиши и персонализирани бързи клавиши за напреднали потребители",
|
||||
"menu": {
|
||||
"override-media-keys": "Презаписване на медийни клавиши",
|
||||
"set-keybinds": "Задайте глобални контроли за песни"
|
||||
},
|
||||
"name": "Клавишни комбинации (& MPRIS)",
|
||||
"prompt": {
|
||||
"keybind": {
|
||||
"keybind-options": {
|
||||
"next": "Следваща",
|
||||
"play-pause": "Пусни / Пауза",
|
||||
"previous": "Предишна"
|
||||
},
|
||||
"label": "Изберете глобални клавишни комбинации за контрол на песните:",
|
||||
"title": "Глобални клавишни комбинации"
|
||||
}
|
||||
}
|
||||
},
|
||||
"skip-disliked-songs": {
|
||||
"description": "Прескача нехаресаните песни",
|
||||
"name": "Прескачане на нехаресани песни"
|
||||
},
|
||||
"skip-silences": {
|
||||
"description": "Автоматично прескачане на тихи участъци в песните",
|
||||
"name": "Прескачане на тишини"
|
||||
},
|
||||
"sponsorblock": {
|
||||
"description": "Автоматично прескача не-музикални части като встъпление/изход или части от музикални клипове, където песента не се пуска",
|
||||
"name": "SponsorBlock"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "Предоставя синхронизирани текстове на песни, използвайки доставчици като LRClib.",
|
||||
"errors": {
|
||||
"fetch": "⚠️\tВъзникна грешка при извличане на текста.\n\tМоля, опитайте по-късно.",
|
||||
"not-found": "⚠️ За тази песен не са намерени текстове."
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "Подразбиращ се знак между текстовете",
|
||||
"tooltip": "Изберете знака, който да се използва за интервала между текстовете"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "Линеен ефект",
|
||||
"submenu": {
|
||||
"fancy": {
|
||||
"label": "Украсено",
|
||||
"tooltip": "Използвайте големи, приложно-подобни ефекти на текущия ред"
|
||||
},
|
||||
"focus": {
|
||||
"label": "Фокус",
|
||||
"tooltip": "Направете само текущия ред бял"
|
||||
},
|
||||
"offset": {
|
||||
"label": "Отместване",
|
||||
"tooltip": "Отместване на текущия ред вдясно"
|
||||
},
|
||||
"scale": {
|
||||
"label": "Мащаб",
|
||||
"tooltip": "Мащабирайте текущия ред"
|
||||
}
|
||||
},
|
||||
"tooltip": "Изберете ефекта, който да се приложи към текущия ред"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "Направете текстовете перфектно синхронизирани",
|
||||
"tooltip": "Изчислете до милисекунда показването на следващия ред (може да има малък ефект върху производителността)"
|
||||
},
|
||||
"romanization": {
|
||||
"label": "Романизиране на текстовете",
|
||||
"tooltip": "Ако текстовете са на друг език, опитайте да покажете латинска версия."
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "Показване на текстовете, дори ако са неточни",
|
||||
"tooltip": "Ако песента не бъде намерена, добавката се опитва отново с различен поисков запрос.\nРезултатът от втория опит може да не е точен."
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "Показване на временни кодове",
|
||||
"tooltip": "Показване на временни кодове до текстовете"
|
||||
}
|
||||
},
|
||||
"name": "Синхронизирани текстове",
|
||||
"refetch-btn": {
|
||||
"fetching": "Извличане...",
|
||||
"normal": "Повторно извличане на текстовете"
|
||||
},
|
||||
"warnings": {
|
||||
"duration-mismatch": "⚠️ - Текстовете може да не са синхронизирани поради несъответствие в продължителността.",
|
||||
"inexact": "⚠️ - Текстовете за тази песен може да не са точни",
|
||||
"instrumental": "⚠️ - Това е инструментална песен"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "Управление на възпроизвеждането от лентата с задачи на Windows",
|
||||
"name": "Управление на медията от лентата със задачи"
|
||||
},
|
||||
"touchbar": {
|
||||
"description": "Добавя уиджет за TouchBar за потребители на macOS",
|
||||
"name": "TouchBar"
|
||||
},
|
||||
"tuna-obs": {
|
||||
"description": "Интеграция с плъгина Tuna за OBS",
|
||||
"name": "Tuna OBS"
|
||||
},
|
||||
"unobtrusive-player": {
|
||||
"description": "Предотвратява изскачането на плеъра при възпроизвеждане на песен",
|
||||
"name": "Неназойлив плеър"
|
||||
},
|
||||
"video-toggle": {
|
||||
"description": "Добавя бутон за превключване между видео/песен режим. Също така може по избор да премахва целия раздел за видео",
|
||||
"menu": {
|
||||
"align": {
|
||||
"label": "Подравняване",
|
||||
"submenu": {
|
||||
"left": "Ляво",
|
||||
"middle": "В средата",
|
||||
"right": "Дясно"
|
||||
}
|
||||
},
|
||||
"force-hide": "Принудително премахване на раздела за видео",
|
||||
"mode": {
|
||||
"label": "Режим",
|
||||
"submenu": {
|
||||
"custom": "Персонализиран превключвател",
|
||||
"disabled": "Изключено",
|
||||
"native": "Вграден превключвател"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Превключване на видео",
|
||||
"templates": {
|
||||
"button": "Песен"
|
||||
}
|
||||
},
|
||||
"visualizer": {
|
||||
"description": "Добавя визуализатор към плеъра",
|
||||
"menu": {
|
||||
"visualizer-type": "Тип визуализатор"
|
||||
},
|
||||
"name": "Визуализатор"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
133
src/i18n/resources/bs.json
Normal file
@ -0,0 +1,133 @@
|
||||
{
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "Greška u izvršavanju dodatka {{pluginName}}::{{contextName}}",
|
||||
"executed-at-ms": "Dodatak {{pluginName}}::{{contextName}} se izvršio za {{ms}}ms",
|
||||
"initialize-failed": "Greška prilikom inicijalizacije dodatka \"{{pluginName}}\"",
|
||||
"load-all": "Učitavanje svih dodataka",
|
||||
"load-failed": "Greška u učitavanju dodatka \"{{pluginName}}\"",
|
||||
"loaded": "Dodatak \"{{pluginName}}\" učitan",
|
||||
"unload-failed": "Greška prilikom onesposobljavanja dodatka \"{{pluginName}}\"",
|
||||
"unloaded": "Dodatak \"{{pluginName}}\" ugašen"
|
||||
}
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"code": "ba",
|
||||
"local-name": "Bosanski",
|
||||
"name": "Bosnian"
|
||||
},
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "Završeno učitavanje. DevTools otvoren"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "i18n učitan"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "Comanda primljena preko protokola \"{{command}}\""
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "CSS datoteka \"{{cssFile}}\" ne postoji, ignorišem"
|
||||
},
|
||||
"unresponsive": {
|
||||
"details": "Greška u aplikaciji!\n{{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "Čistim predmemoriju aplikacije"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "Prozor se pokušao prikazati van okvira ekrana, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "Meni je sakriven, koristite 'Alt' da ga prikazete (ili 'ESC' ako koristite meni u aplikaciji)",
|
||||
"message": "Sakrivanje menija je uključeno",
|
||||
"title": "Meni sakriven"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "Kasnije",
|
||||
"restart-now": "Pokreni ponovo odmah"
|
||||
},
|
||||
"detail": "\"{{pluginName}}\" dodatak zahtjeva ponovno pokretanje kako bi se uključio",
|
||||
"message": "\"{{pluginName}}\" potrebno je resetovat",
|
||||
"title": "Restart je potreban"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "Napusti",
|
||||
"relaunch": "Ponovo otvori",
|
||||
"wait": "Pricekajte"
|
||||
},
|
||||
"detail": "Izvinjavamo se zbog zabune! molimo vas da odaberete sta zelite uciniti",
|
||||
"message": "Aplikacija ne reagira",
|
||||
"title": "Prozor ne reagira"
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"disable": "Ugasite Nadogradnje",
|
||||
"download": "Skinuti",
|
||||
"ok": "OK"
|
||||
},
|
||||
"detail": "Nova verzija je dostupna i može biti skinuta na {{downloadLink}}",
|
||||
"message": "Nova verzija je dostupna",
|
||||
"title": "Azuriranje dostupno"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"about": "O nama",
|
||||
"navigation": {
|
||||
"label": "Plejer",
|
||||
"submenu": {
|
||||
"copy-current-url": "Kopirajte trenutni link",
|
||||
"go-back": "Idi Nazad",
|
||||
"go-forward": "Idi Naprijed",
|
||||
"quit": "Izadji",
|
||||
"restart": "Restartujte Aplikaciju"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"label": "Opcije",
|
||||
"submenu": {
|
||||
"advanced-options": {
|
||||
"label": "Napredne opcije",
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "Resetuje kes memoriju kad se aplikacija pokrene",
|
||||
"disable-hardware-acceleration": "Ugasite hardversko ubrzanje",
|
||||
"edit-config-json": "Uredite config.json",
|
||||
"override-user-agent": "Nadjacaj User-Agent",
|
||||
"restart-on-config-changes": "Ponovno pokretanje nakon promjena konfiguracije",
|
||||
"set-proxy": {
|
||||
"label": "Postavi proxy",
|
||||
"prompt": {
|
||||
"label": "Unesite adresu proxyja: (ostavite prazno za onemogućavanje)",
|
||||
"placeholder": "Primjer: SOCKS5://127.0.0.1:9999",
|
||||
"title": "Postavi proxy"
|
||||
}
|
||||
},
|
||||
"toggle-dev-tools": "Uključi/isključi DevTools"
|
||||
}
|
||||
},
|
||||
"always-on-top": "Uvijek na vrhu",
|
||||
"auto-update": "Automatski Update",
|
||||
"hide-menu": {
|
||||
"dialog": {
|
||||
"message": "Meni će biti skriven pri sljedećem pokretanju, koristite [Alt] da ga prikažete (ili upotrijebite [`] ako koristite meni u aplikaciji)",
|
||||
"title": "Sakrij meni omogućen"
|
||||
},
|
||||
"label": "Sakrij meni"
|
||||
},
|
||||
"language": {
|
||||
"dialog": {
|
||||
"message": "Jezik će se promijeniti nakon ponovnog pokretanja"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
813
src/i18n/resources/ca.json
Normal file
@ -0,0 +1,813 @@
|
||||
{
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "Ha fallat l'execució de l'extensió {{pluginName}}::{{contextName}}",
|
||||
"executed-at-ms": "L'extensió {{pluginName}}::{{contextName}} s'ha executat als {{ms}}ms",
|
||||
"initialize-failed": "Ha fallat la inicialització de l'extensió «{{pluginName}}»",
|
||||
"load-all": "Carregant totes les extensions",
|
||||
"load-failed": "Error al carregar l'extensió «{{pluginName}}»",
|
||||
"loaded": "L'extensió «{{pluginName}}» s'ha carregat",
|
||||
"unload-failed": "Error al deshabilitar l'extensió «{{pluginName}}»",
|
||||
"unloaded": "Extensió «{{pluginName}}» deshabilitada"
|
||||
}
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"code": "ca",
|
||||
"local-name": "Català",
|
||||
"name": "Catalan"
|
||||
},
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "Càrrega finalitzada. S'han obert les DevTools"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "i18n carregat"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "Comanda rebuda a través del protocol: «{{command}}»"
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "L'arxiu CSS «{{cssFile}}» no existeix, s'ha ignorat"
|
||||
},
|
||||
"unresponsive": {
|
||||
"details": "Error sense resposta!\n{{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "Netejant la memòria cau de l'aplicació"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "La finestra s'ha intentat mostrar fora de la pantalla, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "El menú es troba amagat, premi «Alt» per mostrar-lo (o «Escapament» si utilitza el menú integrat In-App)",
|
||||
"message": "S'ha habilitat l'amagament del menú",
|
||||
"title": "Amagament del menú habilitat"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "Més tard",
|
||||
"restart-now": "Reinicia ara"
|
||||
},
|
||||
"detail": "L'extensió «{{pluginName}}» requereix reiniciar l'aplicació per fer tenir efecte",
|
||||
"message": "\"{{pluginName}}\" necessita reiniciar-se",
|
||||
"title": "Es requereix reiniciar"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "Marxar",
|
||||
"relaunch": "Rellançar",
|
||||
"wait": "Espera"
|
||||
},
|
||||
"detail": "Ho sentim per les molèsties! si us plau, tria què fer:",
|
||||
"message": "L'aplicació ha deixat de respondre",
|
||||
"title": "La finestra ha deixat de respondre"
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"disable": "Deshabilita les actualitzacions",
|
||||
"download": "Descarrega",
|
||||
"ok": "D'acord"
|
||||
},
|
||||
"detail": "Hi ha una nova versió disponible i pot ser descarregada a {{downloadLink}}",
|
||||
"message": "Hi ha una nova versió disponible",
|
||||
"title": "Actualització disponible"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"about": "Quant a",
|
||||
"navigation": {
|
||||
"label": "Navegació",
|
||||
"submenu": {
|
||||
"copy-current-url": "Copia l'URL actual",
|
||||
"go-back": "Ves enrere",
|
||||
"go-forward": "Ves endavant",
|
||||
"quit": "Surt",
|
||||
"restart": "Reinicia l'aplicació"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"label": "Opcions",
|
||||
"submenu": {
|
||||
"advanced-options": {
|
||||
"label": "Opcions avançades",
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "Reinicialitza la memòria cau de l'aplicació quan es reiniciï",
|
||||
"disable-hardware-acceleration": "Deshabilita l'acceleració per hardware",
|
||||
"edit-config-json": "Edita el config.json",
|
||||
"override-user-agent": "Sobreescriu l'agent d'usuari (User-Agent)",
|
||||
"restart-on-config-changes": "Reinicia quan es canviï la configuració",
|
||||
"set-proxy": {
|
||||
"label": "Definir servidor intermediari (proxy)",
|
||||
"prompt": {
|
||||
"label": "Introduir l'adreça del servidor intermediari: (deixar en blanc per deshabilitar)",
|
||||
"placeholder": "Exemple: SOCKS5://127.0.0.1:9999",
|
||||
"title": "Definir servidor intermediari (proxy)"
|
||||
}
|
||||
},
|
||||
"toggle-dev-tools": "Commuta les DevTools"
|
||||
}
|
||||
},
|
||||
"always-on-top": "Mostra sempre per sobre",
|
||||
"auto-update": "Actualitza automàticament",
|
||||
"hide-menu": {
|
||||
"dialog": {
|
||||
"message": "El menú s'amagarà la següent vegada que s'iniciï l'aplicació, prem «Alt» per mostrar-lo (o accent obert « ` » si utilitza el menú integrat In-App)",
|
||||
"title": "Amagament del menú habilitat"
|
||||
},
|
||||
"label": "Amaga el menú"
|
||||
},
|
||||
"language": {
|
||||
"dialog": {
|
||||
"message": "L'idioma es canviarà un cop es reiniciï",
|
||||
"title": "Idioma canviat"
|
||||
},
|
||||
"label": "Idioma",
|
||||
"submenu": {
|
||||
"to-help-translate": "Vols ajudar a traduir? Clica aquí"
|
||||
}
|
||||
},
|
||||
"resume-on-start": "Reprèn l'última cançó quan s'inicia l'aplicació",
|
||||
"single-instance-lock": "Bloqueja en una única instància",
|
||||
"start-at-login": "Obre a l'iniciar sessió",
|
||||
"starting-page": {
|
||||
"label": "Pàgina d'inici",
|
||||
"unset": "Sense establir"
|
||||
},
|
||||
"tray": {
|
||||
"label": "Safata d'icones",
|
||||
"submenu": {
|
||||
"disabled": "Deshabilitat",
|
||||
"enabled-and-hide-app": "Mostra la icona i amaga l'aplicació",
|
||||
"enabled-and-show-app": "Mostra la icona i mostra l'aplicació",
|
||||
"play-pause-on-click": "Reprodueix / pausa en clicar"
|
||||
}
|
||||
},
|
||||
"visual-tweaks": {
|
||||
"label": "Opcions visuals",
|
||||
"submenu": {
|
||||
"like-buttons": {
|
||||
"default": "Per defecte",
|
||||
"force-show": "Força que es mostri",
|
||||
"hide": "Amaga",
|
||||
"label": "Botons de «m'agrada»"
|
||||
},
|
||||
"remove-upgrade-button": "Elimina el botó «Actualitza a Music Premium»",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "Cancel·la",
|
||||
"remove": "Elimina"
|
||||
},
|
||||
"remove-theme": "De debó vols eliminar el tema personalitzat?",
|
||||
"remove-theme-message": "Això eliminarà el tema personalitzat"
|
||||
},
|
||||
"label": "Tema",
|
||||
"submenu": {
|
||||
"import-css-file": "Importa un arxiu CSS personalitzat",
|
||||
"no-theme": "Cap tema"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"enabled": "Habilitat",
|
||||
"label": "Extensions",
|
||||
"new": "NOU"
|
||||
},
|
||||
"view": {
|
||||
"label": "Veure",
|
||||
"submenu": {
|
||||
"force-reload": "Força la recàrrega",
|
||||
"reload": "Recarrega",
|
||||
"reset-zoom": "Mida real",
|
||||
"toggle-fullscreen": "Commuta la pantalla completa",
|
||||
"zoom-in": "Apropa el zoom",
|
||||
"zoom-out": "Allunya el zoom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"next": "Següent",
|
||||
"play-pause": "Reprodueix/Pausa",
|
||||
"previous": "Anterior",
|
||||
"quit": "Tanca",
|
||||
"restart": "Reinicia l'aplicació",
|
||||
"show": "Mostra la finestra",
|
||||
"tooltip": {
|
||||
"default": "YouTube Music",
|
||||
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "Si es reprodueix un anunci, silencia l'àudio i el reprodueix a la velocitat 16x",
|
||||
"name": "Accelera els anuncis"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "Bloqueja tots els anuncis i el seguiment",
|
||||
"menu": {
|
||||
"blocker": "Bloquejador"
|
||||
},
|
||||
"name": "Bloquejador d'anuncis"
|
||||
},
|
||||
"album-actions": {
|
||||
"description": "Afegeix botons de «no m'agrada / retirar el no m'agrada» i «m'agrada / retirar el m'agrada» per aplicar-ho a totes les cançons en una llista de reproducció o àlbum",
|
||||
"name": "Accions a l'àlbum"
|
||||
},
|
||||
"album-color-theme": {
|
||||
"description": "Aplica un tema dinàmic i efectes visuals basats en la paleta de colors de l'àlbum",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "Proporció de la barreja de colors",
|
||||
"submenu": {
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Tema de color de l'àlbum"
|
||||
},
|
||||
"ambient-mode": {
|
||||
"description": "Aplica un efecte d'il·luminació que projecta colors difusos del vídeo al fons de la pantalla",
|
||||
"menu": {
|
||||
"blur-amount": {
|
||||
"label": "Quantitat de desenfocament",
|
||||
"submenu": {
|
||||
"pixels": "{{blurAmount}} píxels"
|
||||
}
|
||||
},
|
||||
"buffer": {
|
||||
"label": "Buffer",
|
||||
"submenu": {
|
||||
"buffer": "{{buffer}}"
|
||||
}
|
||||
},
|
||||
"opacity": {
|
||||
"label": "Opacitat",
|
||||
"submenu": {
|
||||
"percent": "{{opacity}}%"
|
||||
}
|
||||
},
|
||||
"quality": {
|
||||
"label": "Qualitat",
|
||||
"submenu": {
|
||||
"pixels": "{{quality}} píxels"
|
||||
}
|
||||
},
|
||||
"size": {
|
||||
"label": "Mida",
|
||||
"submenu": {
|
||||
"percent": "{{size}}%"
|
||||
}
|
||||
},
|
||||
"smoothness-transition": {
|
||||
"label": "Transició suau",
|
||||
"submenu": {
|
||||
"during": "Durant {{interpolationTime}} s"
|
||||
}
|
||||
},
|
||||
"use-fullscreen": {
|
||||
"label": "Utilitza en pantalla completa"
|
||||
}
|
||||
},
|
||||
"name": "Mode ambient"
|
||||
},
|
||||
"api-server": {
|
||||
"description": "Afegeix un servidor API per controlar el reproductor",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "Permet",
|
||||
"deny": "Denegar"
|
||||
},
|
||||
"message": "Permetre que {{ID}} ({{origin}}) accedeixi a l'API?",
|
||||
"title": "Petició d'autorització API"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Estratègia d'autorització",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "Autoritza a la primera petició"
|
||||
},
|
||||
"none": {
|
||||
"label": "Sense autorització"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "Nom del host"
|
||||
},
|
||||
"port": {
|
||||
"label": "Port"
|
||||
}
|
||||
},
|
||||
"name": "Servidor API [Beta]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "Introdueix el nom del host (per exemple 0.0.0.0) pel servidor API:",
|
||||
"title": "Nom del host"
|
||||
},
|
||||
"port": {
|
||||
"label": "Introdueix el port pel servidor API:",
|
||||
"title": "Port"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Aplica compressió a l'àudio (baixa el volum de les parts més sorolloses de la senyal d'àudio i puja el volum de les parts més fluixes)",
|
||||
"name": "Compressió d'àudio"
|
||||
},
|
||||
"blur-nav-bar": {
|
||||
"description": "Desenfoca i aplica transparència a la barra de navegació",
|
||||
"name": "Desenfoca la barra de navegació"
|
||||
},
|
||||
"bypass-age-restrictions": {
|
||||
"description": "Esquiva la verificació d'edat de YouTube",
|
||||
"name": "Esquiva les restriccions d'edat"
|
||||
},
|
||||
"captions-selector": {
|
||||
"description": "Selector de subtítols per les pistes d'àudio de YouTube Music",
|
||||
"menu": {
|
||||
"autoload": "Selecciona automàticament l'últim subtítol emprat",
|
||||
"disable-captions": "Sense subtítols per defecte"
|
||||
},
|
||||
"name": "Selector de subtítols",
|
||||
"prompt": {
|
||||
"selector": {
|
||||
"label": "Idioma actual dels subtítols: {{language}}",
|
||||
"none": "Cap",
|
||||
"title": "Selecciona l'idioma dels subtítols"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"title": "Obra el selector de subtítols"
|
||||
}
|
||||
},
|
||||
"compact-sidebar": {
|
||||
"description": "Sempre mostrar la barra lateral en mode compacte",
|
||||
"name": "Barra lateral compacta"
|
||||
},
|
||||
"crossfade": {
|
||||
"description": "Transició creuada (crossfade) entre cançons",
|
||||
"menu": {
|
||||
"advanced": "Avançat"
|
||||
},
|
||||
"name": "Transició creuada [Beta]",
|
||||
"prompt": {
|
||||
"options": {
|
||||
"multi-input": {
|
||||
"fade-in-duration": "Durada de la transició d'entrada (ms)",
|
||||
"fade-out-duration": "Durada de la transició de sortida (ms)",
|
||||
"fade-scaling": {
|
||||
"label": "Escala de la transició",
|
||||
"linear": "Linear",
|
||||
"logarithmic": "Logarítmica"
|
||||
},
|
||||
"seconds-before-end": "Transiciona N segons abans del final"
|
||||
},
|
||||
"title": "Opcions de transició creuada"
|
||||
}
|
||||
}
|
||||
},
|
||||
"disable-autoplay": {
|
||||
"description": "Fa que la cançó comenci en mode «pausat»",
|
||||
"menu": {
|
||||
"apply-once": "Tan sols s'aplica a l'inici"
|
||||
},
|
||||
"name": "Deshabilita la reproducció automàtica"
|
||||
},
|
||||
"discord": {
|
||||
"backend": {
|
||||
"already-connected": "S'ha intentat connectar amb una connexió activa",
|
||||
"connected": "Connectat a Discord",
|
||||
"disconnected": "Desconnectat de Discord"
|
||||
},
|
||||
"description": "Mostra als teus amics allò que escoltes a l'estat d'activitat",
|
||||
"menu": {
|
||||
"auto-reconnect": "Reconnecta automàticament",
|
||||
"clear-activity": "Esborra l'activitat",
|
||||
"clear-activity-after-timeout": "Esborra l'activitat al cap d'un temps",
|
||||
"connected": "Connectat",
|
||||
"disconnected": "Desconnectat",
|
||||
"hide-duration-left": "Amaga la durada restant",
|
||||
"hide-github-button": "Amaga el botó de l'enllaç a GitHub",
|
||||
"play-on-youtube-music": "Reprodueix a YouTube Music",
|
||||
"set-inactivity-timeout": "Estableix temps d'espera d'inactivitat"
|
||||
},
|
||||
"name": "Estat d'activitat de Discord",
|
||||
"prompt": {
|
||||
"set-inactivity-timeout": {
|
||||
"label": "Introdueix el temps d'espera d'inactivitat en segons:",
|
||||
"title": "Estableix el temps d'espera d'inactivitat"
|
||||
}
|
||||
}
|
||||
},
|
||||
"downloader": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"error": {
|
||||
"buttons": {
|
||||
"ok": "D'acord"
|
||||
},
|
||||
"message": "Caram! Ho sentim, ha fallat la descàrrega…",
|
||||
"title": "Error a la descàrrega!"
|
||||
},
|
||||
"start-download-playlist": {
|
||||
"buttons": {
|
||||
"ok": "D'acord"
|
||||
},
|
||||
"detail": "({{playlistSize}} cançons)",
|
||||
"message": "Descarregant llista de reproducció {{playlistTitle}}",
|
||||
"title": "Descàrrega començada"
|
||||
}
|
||||
},
|
||||
"feedback": {
|
||||
"conversion-progress": "Conversió: {{percent}}%",
|
||||
"converting": "Convertint…",
|
||||
"done": "Fet: {{filePath}}",
|
||||
"download-info": "Descarregant {{artist}} - {{title}} [{{videoId}}",
|
||||
"download-progress": "Descàrrega: {{percent}}%",
|
||||
"downloading": "Descarregant…",
|
||||
"downloading-counter": "Descarregant {{current}}/{{total}}…",
|
||||
"downloading-playlist": "Descarregant la llista de reproducció «{{playlistTitle}}» - {{playlistSize}} cançons ({{playlistId}})",
|
||||
"error-while-downloading": "Error al descarregar «{{author}} - {{title}}»: {{error}}",
|
||||
"folder-already-exists": "La carpeta {{playlistFolder}} ja existeix",
|
||||
"getting-playlist-info": "Obtenint la informació de la llista de reproducció…",
|
||||
"loading": "Carregant…",
|
||||
"playlist-has-only-one-song": "La llista de reproducció té un sol element, descarregant-lo directament",
|
||||
"playlist-id-not-found": "No s'ha trobat cap ID de llista de reproducció",
|
||||
"playlist-is-empty": "La llista de reproducció és buida",
|
||||
"playlist-is-mix-or-private": "Error obtenint la informació de la llista de reproducció: assegura't que no és una llista de reproducció privada o de «Mixos per a tu»\n\n{{error}}",
|
||||
"preparing-file": "Preparant arxiu…",
|
||||
"saving": "Desant…",
|
||||
"trying-to-get-playlist-id": "Intentant obtenir l'ID de la llista de reproducció: {{playlistId}}",
|
||||
"video-id-not-found": "Vídeo no trobat",
|
||||
"writing-id3": "Escrivint les etiquetes ID3…"
|
||||
}
|
||||
},
|
||||
"description": "Descarrega el MP3 / àudio d'origen directament des de la interfície",
|
||||
"menu": {
|
||||
"choose-download-folder": "Tria la carpeta de descàrrega",
|
||||
"download-finish-settings": {
|
||||
"label": "Descarrega en finalitzar",
|
||||
"prompt": {
|
||||
"last-percent": "Desprès del x percent",
|
||||
"last-seconds": "Últims x segons",
|
||||
"title": "Configura quan descarregar"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "Avançat",
|
||||
"enabled": "Habilitat",
|
||||
"mode": "Mode de temps",
|
||||
"percent": "Percentatge",
|
||||
"seconds": "Segons"
|
||||
}
|
||||
},
|
||||
"download-playlist": "Descarrega la llista de reproducció",
|
||||
"presets": "Configuracions predefinides",
|
||||
"skip-existing": "Omet els arxius existents"
|
||||
},
|
||||
"name": "Descàrregues",
|
||||
"renderer": {
|
||||
"can-not-update-progress": "No es pot actualitzar el progrés"
|
||||
},
|
||||
"templates": {
|
||||
"button": "Descarrega"
|
||||
}
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "Fa que el control lliscant del volum sigui exponencial per que sigui més fàcil seleccionar volums més baixos.",
|
||||
"name": "Volum exponencial"
|
||||
},
|
||||
"in-app-menu": {
|
||||
"description": "Fa que la barra de menú superior tingui un elegant aspecte fosc o basat en el color de l'àlbum",
|
||||
"menu": {
|
||||
"hide-dom-window-controls": "Amaga els controls de la finestra del DOM"
|
||||
},
|
||||
"name": "Menú integrat In-App"
|
||||
},
|
||||
"lumiastream": {
|
||||
"description": "Afegeix suport pel Lumia Stream",
|
||||
"name": "Lumia Stream [Beta]"
|
||||
},
|
||||
"lyrics-genius": {
|
||||
"description": "Afegeix suport per la lletra de la majoria de cançons",
|
||||
"menu": {
|
||||
"romanized-lyrics": "Lletra romanitzada"
|
||||
},
|
||||
"name": "Lletres de Genius",
|
||||
"renderer": {
|
||||
"fetched-lyrics": "S'ha buscat la lletra a Genius"
|
||||
}
|
||||
},
|
||||
"music-together": {
|
||||
"description": "Comparteix una llista de reproducció amb els demés. Quan l'amfitrió reprodueix una cançó, la resta també sentiran la mateixa",
|
||||
"dialog": {
|
||||
"enter-host": "Introdueix l'ID de l'amfitrió"
|
||||
},
|
||||
"internal": {
|
||||
"save": "Desa",
|
||||
"track-source": "Origen de la pista",
|
||||
"unknown-user": "Usuari desconegut"
|
||||
},
|
||||
"menu": {
|
||||
"click-to-copy-id": "Copia l'ID d'amfitrió",
|
||||
"close": "Tanca el Music Together",
|
||||
"connected-users": "Usuaris connectats",
|
||||
"disconnect": "Desconnecta el Music Together",
|
||||
"empty-user": "No hi ha usuaris connectats",
|
||||
"host": "Amfitrió de Music Together",
|
||||
"join": "Uneix-te a Music Together",
|
||||
"permission": {
|
||||
"all": "Permet que els convidats controlin la llista de reproducció i el reproductor",
|
||||
"host-only": "Tan sols l'amfitrió pot controlar la llista de reproducció i el reproductor",
|
||||
"playlist": "Permet que els convidats controlin la llista de reproducció"
|
||||
},
|
||||
"set-permission": "Canvia els permisos de control",
|
||||
"status": {
|
||||
"disconnected": "Desconnectat",
|
||||
"guest": "Connectat com a convidat",
|
||||
"host": "Connectat com amfitrió"
|
||||
}
|
||||
},
|
||||
"name": "Music Together [Beta]",
|
||||
"toast": {
|
||||
"add-song-failed": "Error al afegir la cançó",
|
||||
"closed": "Music Together tancat",
|
||||
"disconnected": "Music Together desconnectat",
|
||||
"host-failed": "No s'ha pogut començar el Music Together",
|
||||
"id-copied": "L'ID d'amfitrió s'ha copiat al porta-retalls",
|
||||
"id-copy-failed": "Error al copiar l'ID d'amfitrió al porta-retalls",
|
||||
"join-failed": "Error al unir-se al Music Together",
|
||||
"joined": "T'has unit al Music Together",
|
||||
"permission-changed": "Els permisos de Music Together han canviat a «{{permission}}»",
|
||||
"remove-song-failed": "Error al eliminar la cançó",
|
||||
"user-connected": "{{name}} s'ha unit al Music Together",
|
||||
"user-disconnected": "{{name}} s'ha desconnectat del Music Together"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"description": "Fletxes de navegació Següent / Enrere integrades directament a la interfície, com al teu navegador preferit",
|
||||
"name": "Navegació"
|
||||
},
|
||||
"no-google-login": {
|
||||
"description": "Elimina els botons d'inici de sessió de Google de la interfície",
|
||||
"name": "Amaga l'inici de sessió de Google"
|
||||
},
|
||||
"notifications": {
|
||||
"description": "Mostra una notificació quan una cançó es comença a reproduir (les notificacions interactives estan disponibles a Windows)",
|
||||
"menu": {
|
||||
"interactive": "Notificacions interactives",
|
||||
"interactive-settings": {
|
||||
"label": "Configuració interactiva",
|
||||
"submenu": {
|
||||
"hide-button-text": "Amaga text del botó",
|
||||
"refresh-on-play-pause": "Recarrega al Reproduir/Pausar",
|
||||
"tray-controls": "Obra/Tanca en clicar a la safata"
|
||||
}
|
||||
},
|
||||
"priority": "Prioritat de les notificacions",
|
||||
"toast-style": "Estil dels missatges emergents",
|
||||
"unpause-notification": "Mostra notificació en reprendre la reproducció"
|
||||
},
|
||||
"name": "Notificacions"
|
||||
},
|
||||
"picture-in-picture": {
|
||||
"description": "Permet commutar el mode d'imatge en imatge (PiP)",
|
||||
"menu": {
|
||||
"always-on-top": "Mostra sempre a sobre",
|
||||
"hotkey": {
|
||||
"label": "Drecera del teclat",
|
||||
"prompt": {
|
||||
"keybind-options": {
|
||||
"hotkey": "Drecera del teclat"
|
||||
},
|
||||
"label": "Tria una drecera per commutar el mode d'imatge en imatge (PiP)",
|
||||
"title": "Drecera del mode imatge en imatge (PiP)"
|
||||
}
|
||||
},
|
||||
"save-window-position": "Desa la posició de la finestra",
|
||||
"save-window-size": "Desa la mida de la finestra",
|
||||
"use-native-pip": "Utilitza l'imatge en imatge (PiP) nativa del navegador"
|
||||
},
|
||||
"name": "Imatge en imatge (PiP)",
|
||||
"templates": {
|
||||
"button": "Imatge en imatge (PiP)"
|
||||
}
|
||||
},
|
||||
"playback-speed": {
|
||||
"description": "Escolta-ho ràpid, escolta-ho lent! Afegeix un control lliscant per canviar la velocitat de la cançó",
|
||||
"name": "Velocitat de la reproducció",
|
||||
"templates": {
|
||||
"button": "Velocitat"
|
||||
}
|
||||
},
|
||||
"precise-volume": {
|
||||
"description": "Controla el volum de manera precisa a través de la rodeta del ratolí / dreceres del teclat, amb una interfície personalitzada i passos de volum personalitzats",
|
||||
"menu": {
|
||||
"arrows-shortcuts": "Controls locals de tecles de fletxa",
|
||||
"custom-volume-steps": "Estableix passos de volum personalitzats",
|
||||
"global-shortcuts": "Dreceres de teclat globals"
|
||||
},
|
||||
"name": "Volum precís",
|
||||
"prompt": {
|
||||
"global-shortcuts": {
|
||||
"keybind-options": {
|
||||
"decrease": "Baixa el volum",
|
||||
"increase": "Puja el volum"
|
||||
},
|
||||
"label": "Tria les dreceres globals de volum:",
|
||||
"title": "Dreceres globals de volum"
|
||||
},
|
||||
"volume-steps": {
|
||||
"label": "Tria els passos d'augment o disminució del volum",
|
||||
"title": "Passos de volum"
|
||||
}
|
||||
}
|
||||
},
|
||||
"quality-changer": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"quality-changer": {
|
||||
"detail": "Qualitat actual: {{quality}}",
|
||||
"message": "Tria la qualitat del vídeo:",
|
||||
"title": "Tria la qualitat del vídeo"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Permet canviar la qualitat del vídeo amb un botó que s'hi mostra a sobre",
|
||||
"name": "Botó de qualitat del vídeo"
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "Afegeix suport per scrobbling (Last.fm, ListenBrainz, etc.)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "Error al autenticar amb Last.fm\nAmaga la finestra emergent fins el següent reinici.",
|
||||
"title": "Error d'autenticació"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "Configuració de l'API de Last.fm"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": "Introduir token d'usuari de ListenBrainz"
|
||||
},
|
||||
"scrobble-other-media": "Scrobble amb altres mitjans"
|
||||
},
|
||||
"name": "Scrobbler",
|
||||
"prompt": {
|
||||
"lastfm": {
|
||||
"api-key": "Clau d'API de Last.fm",
|
||||
"api-secret": "Clau secreta de l'API de Last.fm"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": {
|
||||
"label": "Introdueix el teu token de ListenBrainz:",
|
||||
"title": "Token de ListenBrainz"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"shortcuts": {
|
||||
"description": "Permet l'ús de dreceres globals del teclat per la reproducció (reproduir/pausar/següent/anterior) i desactivar l'OSD dels mitjans en sobreescriure les tecles de control multimèdia, habilita el Ctrl/CMD + F per buscar, habilita el suport MPRIS a Linux per tecles de control multimèdia, i dreceres de teclat personalitzades per usuaris avançats",
|
||||
"menu": {
|
||||
"override-media-keys": "Sobreescriu les tecles de control multimèdia",
|
||||
"set-keybinds": "Estableix controls globals de les cançons"
|
||||
},
|
||||
"name": "Dreceres i MPRIS",
|
||||
"prompt": {
|
||||
"keybind": {
|
||||
"keybind-options": {
|
||||
"next": "Següent",
|
||||
"play-pause": "Reproduir / Pausar",
|
||||
"previous": "Anterior"
|
||||
},
|
||||
"label": "Tria combinacions de tecles per controlar les cançons:",
|
||||
"title": "Dreceres globals"
|
||||
}
|
||||
}
|
||||
},
|
||||
"skip-disliked-songs": {
|
||||
"description": "Salta les cançons amb «no m'agrada»",
|
||||
"name": "Salta les cançons que no t'agraden"
|
||||
},
|
||||
"skip-silences": {
|
||||
"description": "Omet automàticament les seccions amb silenci a les cançons",
|
||||
"name": "Omet els silencis"
|
||||
},
|
||||
"sponsorblock": {
|
||||
"description": "Omet automàticament els segments dels vídeos que no son música, com la intro o el final",
|
||||
"name": "SponsorBlock"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "Proporciona lletres sincronitzades amb les cançons, a través de proveïdors com LRClib.",
|
||||
"errors": {
|
||||
"fetch": "⚠️ - Se ha produït un error en descarregar la lletra. Si us plau, intenta-ho més tard.",
|
||||
"not-found": "⚠️ - No s'ha trobat la lletra per aquesta cançó."
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "Caràcter per defecte entre lletres",
|
||||
"tooltip": "Tria el caràcter per defecte que es mostrarà a l'espai entre les lletres"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "Efecte de la línia",
|
||||
"submenu": {
|
||||
"focus": {
|
||||
"label": "Focus",
|
||||
"tooltip": "Mostra tan sols la línia actual en blanc"
|
||||
},
|
||||
"offset": {
|
||||
"label": "Desplaçament",
|
||||
"tooltip": "Desplaçament a la dreta de la línia actual"
|
||||
},
|
||||
"scale": {
|
||||
"label": "Escala",
|
||||
"tooltip": "Redimensiona la línia actual"
|
||||
}
|
||||
},
|
||||
"tooltip": "Tria l'efecte a aplicar a la línia actual"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "Fes que les lletres es sincronitzin a la perfecció",
|
||||
"tooltip": "Calcula al mil·lisegon l'aparició de la següent línia (pot tenir un petit impacte en el rendiment)"
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "Mostra la lletra tot i que sigui inexacta",
|
||||
"tooltip": "Si no es troba la cançó, el plugin torna a intentar obtenir la lletra amb una cerca diferent.\nEl resultat d'aquesta segona cerca podria no ser exacte."
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "Mostra els codis de temps",
|
||||
"tooltip": "Mostra els codis de temps al costat de la lletra"
|
||||
}
|
||||
},
|
||||
"name": "Lletres sincronitzades",
|
||||
"refetch-btn": {
|
||||
"fetching": "Obtenint...",
|
||||
"normal": "Tornar a obtenir la lletra"
|
||||
},
|
||||
"warnings": {
|
||||
"duration-mismatch": "⚠️ - La lletra podria no estar ben sincronitzada, la durada no és coincident.",
|
||||
"inexact": "⚠️ - La lletra d'aquesta cançó podria no ser exacta",
|
||||
"instrumental": "⚠️ - Aquesta cançó és instrumental"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "Controla la reproducció des de la barra de tasques del Windows",
|
||||
"name": "Control multimèdia a la barra de tasques"
|
||||
},
|
||||
"touchbar": {
|
||||
"description": "Afegeix un giny a la Touch Bar per usuaris de macOS",
|
||||
"name": "TouchBar"
|
||||
},
|
||||
"tuna-obs": {
|
||||
"description": "Integració amb l'extensió «Tuna» del OBS",
|
||||
"name": "Tuna OBS"
|
||||
},
|
||||
"video-toggle": {
|
||||
"description": "Afegeix un botó per commutar entre el mode de vídeo o de cançó. Opcionalment, es pot eliminar la pestanya de vídeo per complet",
|
||||
"menu": {
|
||||
"align": {
|
||||
"label": "Alineament",
|
||||
"submenu": {
|
||||
"left": "Esquerra",
|
||||
"middle": "Mig",
|
||||
"right": "Dreta"
|
||||
}
|
||||
},
|
||||
"force-hide": "Força amagar la pestanya de vídeo",
|
||||
"mode": {
|
||||
"label": "Mode",
|
||||
"submenu": {
|
||||
"custom": "Commutador personalitzat",
|
||||
"disabled": "Deshabilitat",
|
||||
"native": "Commutador nadiu"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Botó de vídeo",
|
||||
"templates": {
|
||||
"button": "Cançó"
|
||||
}
|
||||
},
|
||||
"visualizer": {
|
||||
"description": "Afegeix un visualitzador al reproductor",
|
||||
"menu": {
|
||||
"visualizer-type": "Tipus de visualitzador"
|
||||
},
|
||||
"name": "Visualitzador"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -39,12 +39,12 @@
|
||||
"clearing-cache-after-20s": "Čištění mezipaměti aplikace"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "Okno se pokusilo vykreslit na pozadí, velikost okna = {{windowSize}}, display velikost = {{displaySize}}, pozice = {{position}}"
|
||||
"tried-to-render-offscreen": "Okno se pokusilo vykreslit na pozadí, velikost okna = {{windowSize}}, zobrazovací velikost = {{displaySize}}, pozice = {{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "Menu je skryté, stiskněte 'Alt' k jeho zobrazení (nebo 'Escape', pokud používáte in-app-menu)",
|
||||
"detail": "Menu je skryté, stiskněte 'Alt' k jeho zobrazení (nebo 'ESC', pokud používáte vestavěné menu)",
|
||||
"message": "Skrýt menu je povoleno",
|
||||
"title": "Skrýt menu Povolené"
|
||||
},
|
||||
@ -158,6 +158,14 @@
|
||||
},
|
||||
"remove-upgrade-button": "Odebrat upgrade tlačítko",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "zrušit",
|
||||
"remove": "Odstranit"
|
||||
},
|
||||
"remove-theme": "Jste si jisti že chcete odstranit tento vlastní motiv?",
|
||||
"remove-theme-message": "Tohle odstraní vlastní motiv"
|
||||
},
|
||||
"label": "Motiv",
|
||||
"submenu": {
|
||||
"import-css-file": "Vložit vlastní CSS soubor",
|
||||
@ -191,27 +199,43 @@
|
||||
"previous": "Minulý",
|
||||
"quit": "Ukončit",
|
||||
"restart": "Restartovat aplikaci",
|
||||
"show": "Zobrazit okno"
|
||||
"show": "Zobrazit okno",
|
||||
"tooltip": {
|
||||
"default": "Youtube Music",
|
||||
"with-song-info": "Youtube Music {{Umělec}} - {{Titul}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "Pokud se přehraje reklama tak ztlumí zvuk a nastaví rychlost přehrávání na 16x",
|
||||
"name": "Zrychlovač Reklam"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "Blokuje všechny reklamy a sledování ihned od začátku",
|
||||
"menu": {
|
||||
"blocker": "Blokátor"
|
||||
},
|
||||
"name": "Blokovač reklam"
|
||||
"name": "Blokátor reklam"
|
||||
},
|
||||
"album-actions": {
|
||||
"description": "Přidává Undislike, Dislike, Like, a Unlike tlačítka k apply this ke všem písničkám v seznamu písniček nebo albumu.",
|
||||
"name": "Album akce"
|
||||
"description": "Přidává Undislike, Dislike, Like, a Unlike tlačítka k aplikování tohoto ke všem písničkám v seznamu písniček nebo albumu",
|
||||
"name": "Možnosti Albumu"
|
||||
},
|
||||
"album-color-theme": {
|
||||
"description": "Používá dynamický motiv a vizuální efekty na základě palety barev alba",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "Poměr míchání barev",
|
||||
"submenu": {
|
||||
"percent": "{{poměr}}%"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Motiv podle barvy Alba"
|
||||
},
|
||||
"ambient-mode": {
|
||||
"description": "Applies bleskové efekty pomocí casting jemných barev z videa, do vašeho pozadí obrazovky.",
|
||||
"description": "Aplikuje světelné efekty pomocí vrhání jemných barev z videa, do vašeho pozadí obrazovky",
|
||||
"menu": {
|
||||
"blur-amount": {
|
||||
"label": "Množství rozmazání",
|
||||
@ -255,6 +279,52 @@
|
||||
},
|
||||
"name": "Ambientní režim"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "Přídá YouTube Music podporu pro Amuse právě těď hraje widget od 6k Labs"
|
||||
},
|
||||
"api-server": {
|
||||
"description": "Vlož API server abys mohl ovládat přehrávač",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "Povolit",
|
||||
"deny": "Zakázat"
|
||||
},
|
||||
"message": "Povolit {{ID}} ({{origin}}) přístup k API?",
|
||||
"title": "dotaz na přihlášení k API"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Možnosti přihlášení",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "Ověřit při prvním dotazu"
|
||||
},
|
||||
"none": {
|
||||
"label": "Žádná autorizace"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "Hostname"
|
||||
},
|
||||
"port": {
|
||||
"label": "Port"
|
||||
}
|
||||
},
|
||||
"name": "API server [Beta]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "Zadej hostname API serveru (ve tvaru 0.0.0.0):",
|
||||
"title": "Hostname"
|
||||
},
|
||||
"port": {
|
||||
"label": "Zadej port API serveru:",
|
||||
"title": "Port"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Apply compression k audiu (snižuje hlasitost nejhlasitěších částí signálu and zvyšuje hlasitost nejjemnějších částí)",
|
||||
"name": "Audio kompresor"
|
||||
@ -298,7 +368,10 @@
|
||||
"prompt": {
|
||||
"options": {
|
||||
"multi-input": {
|
||||
"fade-in-duration": "Délka Sílení (ms)",
|
||||
"fade-out-duration": "Délka Slábnutí (ms)",
|
||||
"fade-scaling": {
|
||||
"label": "Škálování Přechodu",
|
||||
"linear": "Lineární",
|
||||
"logarithmic": "Logaritmické"
|
||||
},
|
||||
@ -362,6 +435,7 @@
|
||||
},
|
||||
"feedback": {
|
||||
"conversion-progress": "Konverze: {{percent}}%",
|
||||
"converting": "Převádím…",
|
||||
"done": "Hotovo: {{filePath}}",
|
||||
"download-info": "Stahování {{artist}} - {{title}} [{{videoId}}",
|
||||
"download-progress": "Stahování: {{percent}}%",
|
||||
@ -386,6 +460,21 @@
|
||||
"description": "Stahuje MP3 / source audio přímo z rozhraní",
|
||||
"menu": {
|
||||
"choose-download-folder": "Vybrat složku pro stahování",
|
||||
"download-finish-settings": {
|
||||
"label": "Stáhnout po dokončení",
|
||||
"prompt": {
|
||||
"last-percent": "Po x procentech",
|
||||
"last-seconds": "Posledních x vteřin",
|
||||
"title": "Nastavit kdy stahovat"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "Pokoročile",
|
||||
"enabled": "Zapnuto",
|
||||
"mode": "Časový režim",
|
||||
"percent": "Procent",
|
||||
"seconds": "Sekundy"
|
||||
}
|
||||
},
|
||||
"download-playlist": "Stáhnout seznam písniček",
|
||||
"presets": "Předvolby",
|
||||
"skip-existing": "Přeskočit existující soubory"
|
||||
@ -406,7 +495,8 @@
|
||||
"description": "Dává menu panelům fancy, tmavý nebo album-color vzhled",
|
||||
"menu": {
|
||||
"hide-dom-window-controls": "Skrýt DOM window controls"
|
||||
}
|
||||
},
|
||||
"name": "Vestavěné Menu"
|
||||
},
|
||||
"lumiastream": {
|
||||
"description": "Přidává Lumia Stream podporu",
|
||||
@ -414,21 +504,26 @@
|
||||
},
|
||||
"lyrics-genius": {
|
||||
"description": "Přidává lyrics podporu pro většinu písniček",
|
||||
"menu": {
|
||||
"romanized-lyrics": "Romanizované Lyrics"
|
||||
},
|
||||
"name": "Lyrics Genius",
|
||||
"renderer": {
|
||||
"fetched-lyrics": "Fetched lyrics pro Genius"
|
||||
}
|
||||
},
|
||||
"music-together": {
|
||||
"description": "Sdílejte seznam písniček s ostatními. Když the host hraje písničku, uslyší jí i všichni ostatní.",
|
||||
"description": "Sdílejte playlist s ostatními. Když hostitel přehrává písničku, uslyší jí i všichni ostatní.",
|
||||
"dialog": {
|
||||
"enter-host": "Zadejte Host ID"
|
||||
},
|
||||
"internal": {
|
||||
"save": "Uložit",
|
||||
"track-source": "Zdroj Písně",
|
||||
"unknown-user": "Neznámý uživatel"
|
||||
},
|
||||
"menu": {
|
||||
"click-to-copy-id": "Zkopírovat Host ID",
|
||||
"click-to-copy-id": "Zkopírovat ID Hosta",
|
||||
"close": "Zavřít Hudba Spolu",
|
||||
"connected-users": "Připojení uživatelé",
|
||||
"disconnect": "Odpojit od Hudby Spolu",
|
||||
@ -437,7 +532,7 @@
|
||||
"join": "Připojit se k Hudbě Spolu",
|
||||
"permission": {
|
||||
"all": "Povolit hostům ovládat seznam písniček a přehrávač",
|
||||
"host-only": "Jenom host může ovládat seznam písniček a přehrávač",
|
||||
"host-only": "Jenom hostitel může ovládat seznam písniček a přehrávač",
|
||||
"playlist": "Povolit hostům ovládat seznam písniček"
|
||||
},
|
||||
"set-permission": "Změnit ovládací oprávnění",
|
||||
@ -454,6 +549,7 @@
|
||||
"disconnected": "Hudba Spolu odpojena",
|
||||
"host-failed": "Selhalo hostování Hudby Spolu",
|
||||
"id-copied": "Host ID zkopírováno do schránky",
|
||||
"id-copy-failed": "Kopírování ID Hosta do schránky selhalo",
|
||||
"join-failed": "Selhalo připojení k Hudba Spolu",
|
||||
"joined": "Připojil/a jste se k Hudbě Spolu",
|
||||
"permission-changed": "Oprávnění Hudby Spolu se změnilo na \"{{permission}}\"",
|
||||
@ -483,6 +579,7 @@
|
||||
}
|
||||
},
|
||||
"priority": "Priorita Oznámení",
|
||||
"toast-style": "Toast Styl",
|
||||
"unpause-notification": "Zobrazit oznámení na unpause"
|
||||
},
|
||||
"name": "Oznámení"
|
||||
@ -520,6 +617,7 @@
|
||||
"precise-volume": {
|
||||
"description": "Přesná kontrola hlasitosti pomocí kolečka myši/klávesnicových zkratek, s vlastní HUD a customizable hlasitostních steps",
|
||||
"menu": {
|
||||
"arrows-shortcuts": "Ovádání Šipkami",
|
||||
"custom-volume-steps": "Nastavit vlastní hlasitostní steps",
|
||||
"global-shortcuts": "Globální klávesové zkratky"
|
||||
},
|
||||
@ -552,6 +650,39 @@
|
||||
"description": "Umožňuje měnit kvalitu videa pomocí tlačítka na video overlay",
|
||||
"name": "Měnič kvality videa"
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "Přidat scrobbing podporu (např .last.fm , Listenbrainz)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "Selhalo ověření s Last.fm\nSchovat vyskakovací okno do dalšího restartu.",
|
||||
"title": "Ověření Selhalo"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "Last.fm API nastavení"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": "Vložte Listenbrainz user token"
|
||||
},
|
||||
"scrobble-other-media": "Scrobble jiné média"
|
||||
},
|
||||
"name": "Scrobbler",
|
||||
"prompt": {
|
||||
"lastfm": {
|
||||
"api-key": "Last,fm API klíč",
|
||||
"api-secret": "Tajný klíč API Last.fm"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": {
|
||||
"label": "Vložte svůj Listenbrainz user token:",
|
||||
"title": "ListenBrainz token"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"shortcuts": {
|
||||
"description": "Dovoluje nastavit globální klávesové zkratky pro playback (přehrát/pozastavit/další/předchozí) a vypínání media OSD pomocí přepisování media klíčů, zapínání Ctrl/CMD + F k vyhledávání, zapínání Linux MPRIS podporu pro media klíče, a vlastní klávesové zkratky pro pokročilé uživatele.",
|
||||
"menu": {
|
||||
@ -583,6 +714,22 @@
|
||||
"description": "Automaticky přeskakuje nehudební části jako intro/outro nebo části hudebních videí, kde nehraje písnčka",
|
||||
"name": "SponsorBlock"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "Poskytuje synchronizaci textů do písní, pomocí poskytovatelů, jako je LRClib.",
|
||||
"errors": {
|
||||
"fetch": "Při hledání textu došlo k chybě. Prosím skuste to znovu později.",
|
||||
"not-found": "Žáden text nebyl pro túto skladbu nalezen."
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "Výchozí znak mezi texty",
|
||||
"tooltip": "Vyberte výchozí znak pro mezeru mezi texty"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "Efekt řádku"
|
||||
}
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "Ovládejte přehrávání z vašeho Windows hlavního panelu",
|
||||
"name": "Hlavní panel Media Control"
|
||||
|
||||
315
src/i18n/resources/da.json
Normal file
@ -0,0 +1,315 @@
|
||||
{
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "Fejl ved udføring af plugin {{pluginName}}::{{contextName}}",
|
||||
"executed-at-ms": "Plugin {{pluginName}}::{{contextName}} udført på {{ms}}ms",
|
||||
"initialize-failed": "Fejl ved igangsætning af plugin \"{{pluginName}}\"",
|
||||
"load-all": "Indlæser alle plugins",
|
||||
"load-failed": "Fejl ved indlæsning af plugin \"{{pluginName}}\"",
|
||||
"loaded": "Plugin \"{{pluginName}}\" indlæst",
|
||||
"unload-failed": "Fejl ved unload af plugin \"{{pluginName}}\""
|
||||
}
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"code": "dk",
|
||||
"local-name": "Dansk",
|
||||
"name": "Danish"
|
||||
},
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "Indlæsning færdig. DevTools åbnet"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "i18n indlæst"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "Modtog kommando over protokol: \"{{command}}\""
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "CSS fil \"{{cssFile}}\" eksisterer ikke, ignorere"
|
||||
},
|
||||
"unresponsive": {
|
||||
"details": "Uresponsiv fejl!\n{{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "Rydder op i appens cache"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "Windows forsøgte at indlæse uden for skærmen, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "Menuen er gemt, brug 'Alt' knappen for at vise den igen (eller 'Escape' hvis In-App menuen bruges)",
|
||||
"message": "Skjul menuen er aktiveret",
|
||||
"title": "Skjult menu aktiveret"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "Senere",
|
||||
"restart-now": "Genstart nu"
|
||||
},
|
||||
"detail": "\"{{pluginName}}\" plugin kræver en genstart for at have en effekt",
|
||||
"message": "\"{{pluginName}}\" skal genstarte",
|
||||
"title": "Genstart krævet"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "Afslut",
|
||||
"relaunch": "Genåben",
|
||||
"wait": "Vent"
|
||||
},
|
||||
"detail": "Vi undskylder for ubelejligheden! Vælg næste handling:",
|
||||
"message": "Appen svarer ikke",
|
||||
"title": "Vindue svarer ikke"
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"disable": "Slå opdateringer fra",
|
||||
"download": "Hent",
|
||||
"ok": "OK"
|
||||
},
|
||||
"detail": "En ny version er tilgængelig og kan downloades her: {{downloadLink}}",
|
||||
"message": "En ny version er tilgængelig",
|
||||
"title": "Opdatering tilgængelig"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"about": "Om",
|
||||
"navigation": {
|
||||
"label": "Navigering",
|
||||
"submenu": {
|
||||
"copy-current-url": "Kopier nuværende URL",
|
||||
"go-back": "Tilbage",
|
||||
"go-forward": "Frem",
|
||||
"quit": "Afslut",
|
||||
"restart": "Genstart Appen"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"label": "Indstillinger",
|
||||
"submenu": {
|
||||
"advanced-options": {
|
||||
"label": "Avancerede indstillinger",
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "Nulstil app cache når appen starter",
|
||||
"disable-hardware-acceleration": "Deaktiver hardware acceleration",
|
||||
"edit-config-json": "Rediger config.json",
|
||||
"restart-on-config-changes": "Genstart ved config ændringer",
|
||||
"set-proxy": {
|
||||
"label": "Indstil proxy",
|
||||
"prompt": {
|
||||
"label": "Skriv proxy adresse: (Efterlad tom for at deaktivere)",
|
||||
"placeholder": "Eksempel: SOCKS5://127.0.0.1:9999",
|
||||
"title": "Sæt proxy"
|
||||
}
|
||||
},
|
||||
"toggle-dev-tools": "Skift DevTools"
|
||||
}
|
||||
},
|
||||
"always-on-top": "Altid øverst",
|
||||
"auto-update": "Automatisk opdatering",
|
||||
"hide-menu": {
|
||||
"dialog": {
|
||||
"message": "Menuen vil være lukket næste gang appen starter. Brug [Alt] for at vise den (Eller backtick [`] hvis in-app-menu bruges)",
|
||||
"title": "Gemt menu aktiveret"
|
||||
},
|
||||
"label": "Skjul menu"
|
||||
},
|
||||
"language": {
|
||||
"dialog": {
|
||||
"message": "Sproget vil blive ændret efter genstart",
|
||||
"title": "Sprog ændret"
|
||||
},
|
||||
"label": "Sprog",
|
||||
"submenu": {
|
||||
"to-help-translate": "Vil du hjælpe med at oversætte? Klik her"
|
||||
}
|
||||
},
|
||||
"resume-on-start": "Genoptag sidste sang når appen starter",
|
||||
"start-at-login": "Start ved login",
|
||||
"starting-page": {
|
||||
"label": "Startside",
|
||||
"unset": "Ikke valgt"
|
||||
},
|
||||
"tray": {
|
||||
"submenu": {
|
||||
"disabled": "Deaktiveret",
|
||||
"enabled-and-show-app": "Aktiver og vis app",
|
||||
"play-pause-on-click": "Start/Stop ved klik"
|
||||
}
|
||||
},
|
||||
"visual-tweaks": {
|
||||
"submenu": {
|
||||
"like-buttons": {
|
||||
"default": "Standard",
|
||||
"hide": "Skjul",
|
||||
"label": "Like knapper"
|
||||
},
|
||||
"remove-upgrade-button": "Fjern opgrader knappen",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"remove": "Fjern"
|
||||
}
|
||||
},
|
||||
"label": "Tema",
|
||||
"submenu": {
|
||||
"no-theme": "Intet tema"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"enabled": "Aktiveret",
|
||||
"label": "Plugins",
|
||||
"new": "NY"
|
||||
},
|
||||
"view": {
|
||||
"label": "Vis",
|
||||
"submenu": {
|
||||
"reload": "Genindlæs",
|
||||
"zoom-in": "Zoom ind",
|
||||
"zoom-out": "Zoom ud"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"next": "Næste",
|
||||
"play-pause": "Afspil",
|
||||
"previous": "Sidste",
|
||||
"quit": "Luk",
|
||||
"restart": "Genstart app",
|
||||
"show": "Vis vindue",
|
||||
"tooltip": {
|
||||
"default": "YouTube Music",
|
||||
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "Hvis en reklame afspilles, slår den lyden fra og sætter hastigheden til 16x",
|
||||
"name": "Spol igennem reklamen"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "Bloker alle reklamer og sporing fra starten af",
|
||||
"menu": {
|
||||
"blocker": "Bloker"
|
||||
},
|
||||
"name": "Bloker reklamer"
|
||||
},
|
||||
"album-color-theme": {
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"submenu": {
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Albummets farve tema"
|
||||
},
|
||||
"ambient-mode": {
|
||||
"menu": {
|
||||
"blur-amount": {
|
||||
"label": "Sløringsmængde",
|
||||
"submenu": {
|
||||
"pixels": "{{blurAmount}} pixel"
|
||||
}
|
||||
},
|
||||
"buffer": {
|
||||
"label": "Buffer",
|
||||
"submenu": {
|
||||
"buffer": "{{buffer}}"
|
||||
}
|
||||
},
|
||||
"opacity": {
|
||||
"label": "Gennemsigtighed",
|
||||
"submenu": {
|
||||
"percent": "{{opacity}}%"
|
||||
}
|
||||
},
|
||||
"quality": {
|
||||
"label": "Kvalitet",
|
||||
"submenu": {
|
||||
"pixels": "{{quality}} pixel"
|
||||
}
|
||||
},
|
||||
"size": {
|
||||
"label": "Størrelse",
|
||||
"submenu": {
|
||||
"percent": "{{size}}%"
|
||||
}
|
||||
},
|
||||
"use-fullscreen": {
|
||||
"label": "Bruger fuldskærm"
|
||||
}
|
||||
}
|
||||
},
|
||||
"api-server": {
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "Tillad",
|
||||
"deny": "Afvis"
|
||||
},
|
||||
"message": "Tillad at {{ID}} ({{origin}}) får adgang til API'en?"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Godkendelsesstrategi"
|
||||
},
|
||||
"hostname": {
|
||||
"label": "Hostname"
|
||||
},
|
||||
"port": {
|
||||
"label": "Port"
|
||||
}
|
||||
},
|
||||
"name": "API Server [Beta]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "Skriv API serverens hostname (f. eks. 0.0.0.0):",
|
||||
"title": "Hostname"
|
||||
},
|
||||
"port": {
|
||||
"label": "Skriv API serverens port:",
|
||||
"title": "Port"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"name": "Lyd kompressor"
|
||||
},
|
||||
"blur-nav-bar": {
|
||||
"description": "Gør navigationsbaren gennemsigtig og sløret",
|
||||
"name": "Slør navigationsbar"
|
||||
},
|
||||
"captions-selector": {
|
||||
"menu": {
|
||||
"disable-captions": "Ingen undertekster som standard"
|
||||
},
|
||||
"name": "Vælg undertekster",
|
||||
"prompt": {
|
||||
"selector": {
|
||||
"label": "Nuværende sprog på undertekster: {{language}}",
|
||||
"none": "Ingen",
|
||||
"title": "Vælg underteksternes sprog"
|
||||
}
|
||||
}
|
||||
},
|
||||
"crossfade": {
|
||||
"description": "Fade imellem sange",
|
||||
"menu": {
|
||||
"advanced": "Avanceret"
|
||||
},
|
||||
"name": "Fade [Beta]"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -46,7 +46,7 @@
|
||||
"hide-menu-enabled": {
|
||||
"detail": "Das Menü ist versteckt, nutze 'Alt', um es zu aufzurufen (oder 'Escape' beim Verwenden des In-App-Menüs)",
|
||||
"message": "Menü verstecken ist aktiviert",
|
||||
"title": "Menü Verstecken Aktiviert"
|
||||
"title": "Menü verstecken aktiviert"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
@ -55,7 +55,7 @@
|
||||
},
|
||||
"detail": "\"{{pluginName}}\"-Erweiterung erfordert einen Neustart, um in Kraft zu treten",
|
||||
"message": "\"{{pluginName}}\" muss neugestartet werden",
|
||||
"title": "Neustart Erforderlich"
|
||||
"title": "Neustart erforderlich"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
@ -75,7 +75,7 @@
|
||||
},
|
||||
"detail": "Eine neue Version ist verfügbar und kann unter {{downloadLink}} heruntergeladen werden",
|
||||
"message": "Eine neue Version ist verfügbar",
|
||||
"title": "Aktualisierung Verfügbar"
|
||||
"title": "Aktualisierung verfügbar"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
@ -87,7 +87,7 @@
|
||||
"go-back": "Zurück gehen",
|
||||
"go-forward": "Vorwärts gehen",
|
||||
"quit": "Beenden",
|
||||
"restart": "Anwendung Neustarten"
|
||||
"restart": "Anwendung neustarten"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
@ -124,7 +124,7 @@
|
||||
"language": {
|
||||
"dialog": {
|
||||
"message": "Sprache wird nach Neustart geändert",
|
||||
"title": "Sprache Geändert"
|
||||
"title": "Sprache geändert"
|
||||
},
|
||||
"label": "Sprache",
|
||||
"submenu": {
|
||||
@ -158,6 +158,14 @@
|
||||
},
|
||||
"remove-upgrade-button": "Upgrade-Schaltfläche entfernen",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "Abbrechen",
|
||||
"remove": "Entfernen"
|
||||
},
|
||||
"remove-theme": "Sind Sie sich sicher, dass Sie das benutzerdefinierte Aussehen ändern wollen?",
|
||||
"remove-theme-message": "Dies wird das benutzerdefinierte Aussehen löschen"
|
||||
},
|
||||
"label": "Thema",
|
||||
"submenu": {
|
||||
"import-css-file": "Importiere eigene CSS-Datei",
|
||||
@ -199,6 +207,10 @@
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "Wenn eine Werbung spielt, stummt es das Audio und setzt die Wiedergabegeschwindigkeit auf 16x",
|
||||
"name": "Werbungsbeschleunigung"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "Blockiere jegliche Werbung und Tracker",
|
||||
"menu": {
|
||||
@ -212,6 +224,14 @@
|
||||
},
|
||||
"album-color-theme": {
|
||||
"description": "Wendet ein dynamisches Farbthema und visuelle Effekte auf Basis der Farbpalette des Albumcovers an",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "Farbmischungsverhältnis",
|
||||
"submenu": {
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Thema aus Albumfarbe"
|
||||
},
|
||||
"ambient-mode": {
|
||||
@ -230,7 +250,7 @@
|
||||
}
|
||||
},
|
||||
"opacity": {
|
||||
"label": "Durchsichtigkeit",
|
||||
"label": "Transparenz",
|
||||
"submenu": {
|
||||
"percent": "{{opacity}}%"
|
||||
}
|
||||
@ -259,6 +279,56 @@
|
||||
},
|
||||
"name": "Ambiente-Modus"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "Fügt Unterstützung für das Amuse \"Spielt gerade\"-Widget von 6K Labs hinzu",
|
||||
"name": "Amuse",
|
||||
"response": {
|
||||
"query": "Amuse API-Server läuft. /query für Liedinformationen."
|
||||
}
|
||||
},
|
||||
"api-server": {
|
||||
"description": "Fügt einen API-Server hinzu, um die Wiedergabe zu steuern",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "Erlauben",
|
||||
"deny": "Ablehnen"
|
||||
},
|
||||
"message": "{{ID}} ({{origin}}) den Zugriff zur API erlauben?",
|
||||
"title": "API-Autorisierungs-Anfrage"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Autorisations-Methode",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "Beim ersten Zugriff autorisieren"
|
||||
},
|
||||
"none": {
|
||||
"label": "Keine Autorisierung"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "Hostname"
|
||||
},
|
||||
"port": {
|
||||
"label": "Port"
|
||||
}
|
||||
},
|
||||
"name": "API-Server [Beta]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "Hostname des API-Servers vergeben (z. B. 0.0.0.0):",
|
||||
"title": "Hostname"
|
||||
},
|
||||
"port": {
|
||||
"label": "Port des API-Server:",
|
||||
"title": "Port"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Kompressor auf Audio anwenden (senkt die Lautstärke der lautesten Teile des Signals und hebt die Lautstärke der leisesten Teile an)",
|
||||
"name": "Audio-Komprimierer"
|
||||
@ -275,7 +345,7 @@
|
||||
"description": "Untertitelwähler für YouTube Music-Audio-Lieder",
|
||||
"menu": {
|
||||
"autoload": "Wähle automatisch den zuletzt verwendeten Untertitel",
|
||||
"disable-captions": "Standartmäßig keine Untertitel"
|
||||
"disable-captions": "Standardmäßig keine Untertitel"
|
||||
},
|
||||
"name": "Untertitelwähler",
|
||||
"prompt": {
|
||||
@ -394,6 +464,21 @@
|
||||
"description": "Lädt MP3-/Original-Audio direkt von der Schnittstelle herunter",
|
||||
"menu": {
|
||||
"choose-download-folder": "Downloadordner wählen",
|
||||
"download-finish-settings": {
|
||||
"label": "Song am Ende runterladen",
|
||||
"prompt": {
|
||||
"last-percent": "Nach x Prozent",
|
||||
"last-seconds": "Letzten x Sekunden",
|
||||
"title": "Konfiguriere wann runtergeladen werden soll"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "Erweitert",
|
||||
"enabled": "Aktiviert",
|
||||
"mode": "Zeitmodus",
|
||||
"percent": "Prozent",
|
||||
"seconds": "Sekunden"
|
||||
}
|
||||
},
|
||||
"download-playlist": "Wiedergabeliste herunterladen",
|
||||
"presets": "Voreinstellungen",
|
||||
"skip-existing": "Vorhandene Dateien überspringen"
|
||||
@ -406,6 +491,18 @@
|
||||
"button": "Herunterladen"
|
||||
}
|
||||
},
|
||||
"equalizer": {
|
||||
"description": "Fügt einen Equalizer zum Player hinzu",
|
||||
"menu": {
|
||||
"presets": {
|
||||
"label": "Vorgaben",
|
||||
"list": {
|
||||
"bass-booster": "Bass-Verstärker"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Equalizer"
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "Macht den Lautstärkeregler exponentiell, damit es einfacher ist leise Lautstärken zu wählen.",
|
||||
"name": "Exponentielle Lautstärke"
|
||||
@ -571,29 +668,40 @@
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "Scrobbling-Unterstützung aktivieren (z.B. für last.fm, Listenbrainz)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "Die Authentifizierung von Last.fm ist fehlgeschlagen.\nBlende das Pop-up bis zum nächsten Neustart aus.",
|
||||
"title": "Authentifizierung fehlgeschlagen"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "Last.fm API Einstellungen"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": "ListenBrainz-Benutzer-Token eintragen"
|
||||
}
|
||||
},
|
||||
"scrobble-alternative-title": "Nutze alternative Titel",
|
||||
"scrobble-other-media": "Andere Medien scrobbeln"
|
||||
},
|
||||
"name": "Scrobbler",
|
||||
"prompt": {
|
||||
"lastfm": {
|
||||
"api-key": "Last.fm API-Schlüssel",
|
||||
"api-secret": "Last.fm API secret"
|
||||
"api-secret": "Last.fm API-Kennwort"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": {
|
||||
"label": "ListenBrainz-Benutzer-Token eintragen"
|
||||
"label": "ListenBrainz-Benutzer-Token eintragen:",
|
||||
"title": "ListenBrainz-Token"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"shortcuts": {
|
||||
"description": "Ermöglicht das Festlegen globaler Hotkeys für die Wiedergabe (Abspielen/Pause/Nächster/Vorheriger) + Deaktivieren des Medien-OSD durch Überschreiben der Medientasten + Aktivieren von Strg/CMD + F zum Suchen + Aktivieren der Linux mpris-Unterstützung für Medientasten + Angepasste Tastenkürzel für fortgeschrittene Benutzer.",
|
||||
"description": "Ermöglicht das Festlegen globaler Hotkeys für die Wiedergabe (Abspielen/Pause/Nächster/Vorheriger) + Deaktivieren des Medien-OSD durch Überschreiben der Medientasten + Aktivieren von Strg/CMD + F zum Suchen + Aktivieren der Linux mpris-Unterstützung für Medientasten + Angepasste Tastenkürzel für fortgeschrittene Benutzer",
|
||||
"menu": {
|
||||
"override-media-keys": "Medientasten überschreiben",
|
||||
"set-keybinds": "Globale Liedsteuerung setzen"
|
||||
@ -623,6 +731,67 @@
|
||||
"description": "Überspringt automatisch nicht-musikalische Teile wie Intro/Outro oder Teile von Musikvideos, in denen der Song nicht gespielt wird",
|
||||
"name": "SponsorBlock"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "Bietet synchronisierte Liedtexte zu Songs, verwendet Anbieter wie LRClib.",
|
||||
"errors": {
|
||||
"fetch": "⚠️ - \tBeim Abrufen des Liedtexts ist ein Fehler aufgetreten. \n\tBitte versuchen Sie es später nochmal.",
|
||||
"not-found": "⚠️ Kein Text für diesen Song gefunden."
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "Standardzeichen zwischen Texten",
|
||||
"tooltip": "Standardzeichen für die Lücke zwischen Songtexten auswählen"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "Zeileneffekt",
|
||||
"submenu": {
|
||||
"fancy": {
|
||||
"label": "schick",
|
||||
"tooltip": "Verwende große, app-ähnliche Effekte in der aktuellen Zeile"
|
||||
},
|
||||
"focus": {
|
||||
"label": "Fokussieren",
|
||||
"tooltip": "Nur aktive Zeile weiß darstellen"
|
||||
},
|
||||
"offset": {
|
||||
"label": "Versatz",
|
||||
"tooltip": "Verschiebe die aktuelle Zeile nach rechts"
|
||||
},
|
||||
"scale": {
|
||||
"label": "Skalieren",
|
||||
"tooltip": "Aktuelle Zeile skalieren"
|
||||
}
|
||||
},
|
||||
"tooltip": "Effekt für aktive Zeile auswählen"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "Den Songtext perfekt synchronisieren",
|
||||
"tooltip": "Auf die Millisekunde genau berechnen, wann die nächste Zeile angezeigt werden soll (Kann Einfluss auf die Leistung haben)"
|
||||
},
|
||||
"romanization": {
|
||||
"label": "Lateinische Umschrift anzeigen",
|
||||
"tooltip": "Wenn der Liedtext in einer anderen Schrift ist, zeige nach Möglichkeit eine Version in lateinischer Schrift an."
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "Zeige die Liedtexte, auch wenn sie ungenau sind.",
|
||||
"tooltip": "Die Erweiterung sucht mit anderen Suchparameter nochmals, wenn der Song nicht gefunden wurde.\nEs kann sein, dass das Ergebnis von der zweiten Anfrage nicht genau ist."
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "Zeitkodierungen anzeigen",
|
||||
"tooltip": "Zeitkodierungen neben Songtext anzeigen"
|
||||
}
|
||||
},
|
||||
"name": "Synchronisierte Texte",
|
||||
"refetch-btn": {
|
||||
"fetching": "Hole Songtext...",
|
||||
"normal": "Songtext neu holen"
|
||||
},
|
||||
"warnings": {
|
||||
"duration-mismatch": "⚠️ - Es kann sein, dass die Synchronization nicht stimmt, da die Songdauer nicht übereinstimmt.",
|
||||
"inexact": "⚠️ - Es ist Möglich, dass der Songtext für diesen Song nicht übereinstimmt.",
|
||||
"instrumental": "⚠️ - Das ist ein instrumentales Lied"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "Wiedergabe aus der Windows Taskleiste kontrollieren",
|
||||
"name": "Mediensteuerung in der Taskleiste"
|
||||
@ -635,6 +804,10 @@
|
||||
"description": "Integration mit dem OBS-Plugin Tuna",
|
||||
"name": "Tuna OBS"
|
||||
},
|
||||
"unobtrusive-player": {
|
||||
"description": "Verhindert das Aufpoppen des Spielers während ein Song gespielt wird",
|
||||
"name": "Unauffälliger Player"
|
||||
},
|
||||
"video-toggle": {
|
||||
"description": "Fügt einen Knopf hinzu, um zwischen Video-/Liedmodus zu wechseln. kann auch genutzt werden, um den ganzen Videoabschnitt zu entfernen",
|
||||
"menu": {
|
||||
|
||||
@ -2,7 +2,14 @@
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "Αποτυχία εκτέλεσης προσθέτου {{pluginName}}::{{contextName}}"
|
||||
"execute-failed": "Απέτυχε η εκτέλεση του πρόσθετου {{pluginName}}::{{contextName}}",
|
||||
"executed-at-ms": "Το πρόσθετο {{pluginName}}::{{contextName}} εκτελέστηκε σε {{ms}}ms",
|
||||
"initialize-failed": "Απέτυχε η αρχικοποίηση του πρόσθετου \"{{pluginName}}\"",
|
||||
"load-all": "Φόρτωση όλων των πρόσθετων",
|
||||
"load-failed": "Απέτυχε η φόρτωση του πρόσθετου \"{{pluginName}}\"",
|
||||
"loaded": "Το πρόσθετο \"{{pluginName}}\" φορτώθηκε",
|
||||
"unload-failed": "Απέτυχε η απεγκατάσταση του πρόσθετου \"{{pluginName}}\"",
|
||||
"unloaded": "Το πρόσθετο \"{{pluginName}}\" απεγκαταστάθηκε"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -12,55 +19,157 @@
|
||||
"name": "Greek"
|
||||
},
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "Η φόρτωση ολοκληρώθηκε. Τα DevTools άνοιξαν"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "Το i18n φορτώθηκε"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "Λήφθηκε εντολή μέσω πρωτοκόλλου: \"{{command}}\""
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "Το αρχείο CSS \"{{cssFile}}\" δεν υπάρχει, αγνοείται"
|
||||
},
|
||||
"unresponsive": {
|
||||
"details": "Σφάλμα ανταπόκρισης!\n{{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "Εκκαθάριση μνήμης cache εφαρμογής"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "Το παράθυρο προσπάθησε να απεικονίσει εκτός οθόνης, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"message": "Απόκρυψη μενού είναι ενεργοποιημένο"
|
||||
"detail": "Το μενού είναι κρυμμένο, χρησιμοποιήστε το 'Alt' για να το εμφανίσετε (ή το 'Escape' αν χρησιμοποιείτε το μενού εφαρμογής)",
|
||||
"message": "Η απόκρυψη μενού είναι ενεργοποιημένη",
|
||||
"title": "Η απόκρυψη μενού ενεργοποιήθηκε"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "Αργότερα",
|
||||
"restart-now": "Επανεκκίνηση τώρα"
|
||||
},
|
||||
"detail": "Το πρόσθετο \"{{pluginName}}\" απαιτεί επανεκκίνηση για να ισχύσει",
|
||||
"message": "Το \"{{pluginName}}\" χρειάζεται επανεκκίνηση",
|
||||
"title": "Απαιτείται επανεκκίνηση"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "Παραιτηθείτε",
|
||||
"relaunch": "Επανεκκίνηση",
|
||||
"wait": "Περιμένετε"
|
||||
},
|
||||
"detail": "Λυπούμαστε για την ταλαιπωρία! Παρακαλώ επιλέξτε τι να κάνετε:",
|
||||
"message": "Η εφαρμογή δεν ανταποκρίνεται",
|
||||
"title": "Το παράθυρο δεν ανταποκρίνεται"
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"download": "Download",
|
||||
"disable": "Απενεργοποίηση ενημερώσεων",
|
||||
"download": "Λήψη",
|
||||
"ok": "OK"
|
||||
}
|
||||
},
|
||||
"detail": "Μια νέα έκδοση είναι διαθέσιμη και μπορεί να ληφθεί από τον σύνδεσμο {{downloadLink}}",
|
||||
"message": "Μια νέα έκδοση είναι διαθέσιμη",
|
||||
"title": "Διατίθεται ενημέρωση"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"about": "Σχετικά",
|
||||
"navigation": {
|
||||
"label": "Navigation"
|
||||
"label": "Πλοήγηση",
|
||||
"submenu": {
|
||||
"copy-current-url": "Αντιγραφή τρέχουσας διεύθυνσης URL",
|
||||
"go-back": "Πίσω",
|
||||
"go-forward": "Εμπρός",
|
||||
"quit": "Έξοδος",
|
||||
"restart": "Επανεκκίνηση εφαρμογής"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"label": "Options",
|
||||
"label": "Επιλογές",
|
||||
"submenu": {
|
||||
"advanced-options": {
|
||||
"label": "Επιλογές για προχωρημένους",
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "Επαναφορά μνήμης cache εφαρμογής όταν η εφαρμογή ξεκινά",
|
||||
"disable-hardware-acceleration": "Απενεργοποίηση επιτάχυνσης υλικού",
|
||||
"edit-config-json": "Επεξεργασία του config.json",
|
||||
"override-user-agent": "Αντικατάσταση του User-Agent",
|
||||
"restart-on-config-changes": "Επανεκκίνηση σε αλλαγές του config",
|
||||
"set-proxy": {
|
||||
"label": "Set proxy",
|
||||
"label": "Ορισμός μεσολάβησης",
|
||||
"prompt": {
|
||||
"title": "Set proxy"
|
||||
"label": "Εισαγωγή διεύθυνσης μεσολάβησης: (αφήστε κενό για απενεργοποίηση)",
|
||||
"placeholder": "Παράδειγμα: SOCKS5://127.0.0.1:9999",
|
||||
"title": "Ορισμός μεσολάβησης"
|
||||
}
|
||||
}
|
||||
},
|
||||
"toggle-dev-tools": "Εναλλαγή DevTools"
|
||||
}
|
||||
},
|
||||
"auto-update": "Auto Update",
|
||||
"language": {
|
||||
"label": "Γλώσσα"
|
||||
"always-on-top": "Πάντα σε πρώτο πλάνο",
|
||||
"auto-update": "Αυτόματη ενημέρωση",
|
||||
"hide-menu": {
|
||||
"dialog": {
|
||||
"message": "Το μενού θα κρυφτεί στην επόμενη εκκίνηση, χρησιμοποιήστε [Alt] για να το εμφανίσετε (ή το πλήκτρο backtick [`] αν χρησιμοποιείτε το μενού εφαρμογής)",
|
||||
"title": "Η Δυνατότητα Απόκρυψης του Μενού ενεργοποιήθηκε"
|
||||
},
|
||||
"label": "Απόκρυψη μενού"
|
||||
},
|
||||
"start-at-login": "Start at login",
|
||||
"tray": {
|
||||
"label": "Tray",
|
||||
"language": {
|
||||
"dialog": {
|
||||
"message": "Η γλώσσα θα αλλάξει μετά την επανεκκίνηση",
|
||||
"title": "Η γλώσσα άλλαξε"
|
||||
},
|
||||
"label": "Γλώσσα",
|
||||
"submenu": {
|
||||
"to-help-translate": "Θέλετε να βοηθήσετε στη μετάφραση; Κάντε κλικ εδώ"
|
||||
}
|
||||
},
|
||||
"resume-on-start": "Συνέχιση τελευταίου τραγουδιού όταν η εφαρμογή ξεκινά",
|
||||
"single-instance-lock": "Κλείδωμα Μοναδικής Εκδοχής",
|
||||
"start-at-login": "Έναρξη κατά την σύνδεση",
|
||||
"starting-page": {
|
||||
"label": "Σελίδα έναρξης",
|
||||
"unset": "Κατάργηση ορισμού"
|
||||
},
|
||||
"tray": {
|
||||
"label": "Δίσκος",
|
||||
"submenu": {
|
||||
"disabled": "Απενεργοποιημένο",
|
||||
"enabled-and-hide-app": "Ενεργοποιημένο και απόκρυψη της εφαρμογής",
|
||||
"play-pause-on-click": "Play/Pause στο πάτημα"
|
||||
"enabled-and-show-app": "Ενεργοποιημένο και εμφάνιση της εφαρμογής",
|
||||
"play-pause-on-click": "Αναπαραγωγή/Παύση με κλικ"
|
||||
}
|
||||
},
|
||||
"visual-tweaks": {
|
||||
"label": "Τροποποιήσεις εμφάνισης",
|
||||
"submenu": {
|
||||
"like-buttons": {
|
||||
"default": "Default"
|
||||
"default": "Προεπιλογή",
|
||||
"force-show": "Επιβολή εμφάνισης",
|
||||
"hide": "Απόκρυψη",
|
||||
"label": "Μου αρέσει"
|
||||
},
|
||||
"remove-upgrade-button": "Αφαίρεση κουμπιού αναβάθμισης",
|
||||
"theme": {
|
||||
"label": "Theme",
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "Άκυρο",
|
||||
"remove": "Αφαίρεση"
|
||||
},
|
||||
"remove-theme": "Είστε βέβαιοι ότι θέλετε να αφαιρέσετε το προσαρμοσμένο θέμα;",
|
||||
"remove-theme-message": "Αυτό θα αφαιρέσει το προσαρμοσμένο θέμα"
|
||||
},
|
||||
"label": "Θέμα",
|
||||
"submenu": {
|
||||
"no-theme": "No theme"
|
||||
"import-css-file": "Εισαγωγή προσαρμοσμένου αρχείου CSS",
|
||||
"no-theme": "Κανένα θέμα"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -68,29 +177,68 @@
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"label": "Plugins"
|
||||
"enabled": "Ενεργοποιημένο",
|
||||
"label": "Πρόσθετα",
|
||||
"new": "ΝΕΟ"
|
||||
},
|
||||
"view": {
|
||||
"label": "View"
|
||||
"label": "Προβολή",
|
||||
"submenu": {
|
||||
"force-reload": "Επιβολή επαναφόρτωσης",
|
||||
"reload": "Επαναφόρτωση",
|
||||
"reset-zoom": "Πραγματικό μέγεθος",
|
||||
"toggle-fullscreen": "Εναλλαγή πλήρους οθόνης",
|
||||
"zoom-in": "Μεγέθυνση",
|
||||
"zoom-out": "Σμίκρυνση"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"next": "Επόμενο",
|
||||
"play-pause": "Αναπαραγωγή/Παύση",
|
||||
"previous": "Προηγούμενο",
|
||||
"quit": "Έξοδος",
|
||||
"restart": "Επανεκκίνηση εφαρμογής",
|
||||
"show": "Εμφάνιση παραθύρου",
|
||||
"tooltip": {
|
||||
"default": "YouTube Μουσική",
|
||||
"with-song-info": "YouTube Μουσική: {{artist}} - {{title}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "Εάν παίξει διαφήμιση κάνει σίγαση του ήχου και θέτει την ταχύτητα αναπαραγωγής στο 16x",
|
||||
"name": "Γρήγορη προώθηση διαφημίσεων"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "Αποκλεισμός όλων των διαφημίσεων και tracker",
|
||||
"menu": {
|
||||
"blocker": "Μέθοδος αποκλεισμού"
|
||||
},
|
||||
"name": "Adblocker"
|
||||
"name": "Μπλοκάρισμα Διαφημίσεων"
|
||||
},
|
||||
"album-actions": {
|
||||
"description": "Προσθέτει κουμπιά Like/Unlike και Dislike/Undislike που δρουν συνολικά σε όλα τα κομμάτια μιας playlist ή ενός άλμπουμ",
|
||||
"name": "Ενέργειες σε Άλμπουμ"
|
||||
},
|
||||
"album-color-theme": {
|
||||
"description": "Εφαρμόζει ένα δυναμικό θέμα και εφέ με βάση τη χρωματική παλέτα του άλμπουμ",
|
||||
"name": "Album Color Theme"
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "Αναλογία μίξης χρωμάτων",
|
||||
"submenu": {
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Θέμα χρώματος άλμπουμ"
|
||||
},
|
||||
"ambient-mode": {
|
||||
"description": "Εφαρμόζει ένα εφέ φωτισμού ρίχνοντας απαλά χρώματα από το βίντεο, στο φόντο της οθόνης σας.",
|
||||
"description": "Εφαρμόζει ένα εφέ φωτισμού ρίχνοντας απαλά χρώματα από το βίντεο στο φόντο της οθόνης σας",
|
||||
"menu": {
|
||||
"blur-amount": {
|
||||
"label": "Ένταση θαμπώματος",
|
||||
"submenu": {
|
||||
"pixels": "{{blurAmount}} pixels"
|
||||
}
|
||||
@ -102,59 +250,138 @@
|
||||
}
|
||||
},
|
||||
"opacity": {
|
||||
"label": "Ποσότητα αδιαφάνειας",
|
||||
"label": "Αδιαφάνεια",
|
||||
"submenu": {
|
||||
"percent": "{{opacity}}%"
|
||||
}
|
||||
},
|
||||
"quality": {
|
||||
"label": "Ποιότητα",
|
||||
"submenu": {
|
||||
"pixels": "{{quality}} pixels"
|
||||
}
|
||||
},
|
||||
"size": {
|
||||
"label": "Μέγεθος",
|
||||
"submenu": {
|
||||
"percent": "{{size}}%"
|
||||
}
|
||||
},
|
||||
"smoothness-transition": {
|
||||
"label": "Ομαλή μετάβαση",
|
||||
"submenu": {
|
||||
"during": "Σε {{interpolationTime}} δεύτερα"
|
||||
"during": "Σε {{interpolationTime}} δευτερόλεπτα"
|
||||
}
|
||||
},
|
||||
"use-fullscreen": {
|
||||
"label": "Χρήση πλήρους οθόνης"
|
||||
}
|
||||
},
|
||||
"name": "Λειτουργία περιβάλλοντος"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "Προσθέτει υποστήριξη μουσικής YouTube για το widget Amuse now playing από την 6K Labs",
|
||||
"name": "Διασκέδαση",
|
||||
"response": {
|
||||
"query": "Ο διακομιστής Amuse API εκτελείται. GET /query για να λάβετε πληροφορίες για το τραγούδι."
|
||||
}
|
||||
},
|
||||
"api-server": {
|
||||
"description": "Προσθέτει έναν διακομιστή API για τον έλεγχο του παίκτη",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "Αποδοχή",
|
||||
"deny": "Άρνηση"
|
||||
},
|
||||
"message": "Επιτρέψτε {{ID}} ({{origin}}) να έχει πρόσβαση στο API;",
|
||||
"title": "Αίτημα εξουσιοδότησης API"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Στρατηγική εξουσιοδότησης",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "Εξουσιοδότηση στο πρώτο αίτημα"
|
||||
},
|
||||
"none": {
|
||||
"label": "Χωρίς εξουσιοδότηση"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "Όνομα κεντρικού υπολογιστή"
|
||||
},
|
||||
"port": {
|
||||
"label": "Θύρα"
|
||||
}
|
||||
},
|
||||
"name": "Διακομιστής API [Beta]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "Εισάγετε το όνομα κεντρικού υπολογιστή (όπως 0.0.0.0.0) για τον διακομιστή API:",
|
||||
"title": "Όνομα κεντρικού υπολογιστή"
|
||||
},
|
||||
"port": {
|
||||
"label": "Εισάγετε τη θύρα για το διακομιστή API:",
|
||||
"title": "Θύρα"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Συμπίεση ήχου (μειώνει την ένταση των πιο δυνατών τμημάτων του κύματος και αυξάνει την ένταση των πιο μαλακών τμημάτων)"
|
||||
"description": "Συμπίεση ήχου (μειώνει την ένταση των πιο δυνατών τμημάτων του κύματος και αυξάνει την ένταση των πιο μαλακών τμημάτων)",
|
||||
"name": "Συμπιεστής ήχου"
|
||||
},
|
||||
"blur-nav-bar": {
|
||||
"description": "Κάνει τη γραμμή πλοήγησης διαφανή και θολή"
|
||||
"description": "θέτει τη γραμμή πλοήγησης διαφανή και θολή",
|
||||
"name": "Θόλωμα γραμμής πλοήγησης"
|
||||
},
|
||||
"bypass-age-restrictions": {
|
||||
"description": "Παράκαμψη της επαλήθευσης ηλικίας του YouTube"
|
||||
"description": "Παράκαμψη επαλήθευσης ηλικίας στο YouTube",
|
||||
"name": "Παράκαμψη ηλικιακών περιορισμών"
|
||||
},
|
||||
"captions-selector": {
|
||||
"description": "Επιλογέας λεζάντας για μουσικά κομμάτια ήχου του YouTube",
|
||||
"menu": {
|
||||
"autoload": "Αυτόματη επιλογή της τελευταίας χρησιμοποιούμενης λεζάντας",
|
||||
"disable-captions": "Χωρίς λεζάντες από προεπιλογή"
|
||||
},
|
||||
"name": "Επιλογέας λεζάντες",
|
||||
"prompt": {
|
||||
"selector": {
|
||||
"none": "None"
|
||||
"label": "Τρέχουσα γλώσσα λεζάντας: {{language}}",
|
||||
"none": "None",
|
||||
"title": "Επιλογή γλώσσας λεζάντας"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"title": "Ανοίξτε τον επιλογέα λεζάντας"
|
||||
}
|
||||
},
|
||||
"compact-sidebar": {
|
||||
"description": "Να είναι πάντα συμπαγές το sidebar"
|
||||
"description": "Να είναι πάντα συμπαγές το sidebar",
|
||||
"name": "Συμπαγής πλευρική μπάρα"
|
||||
},
|
||||
"crossfade": {
|
||||
"description": "Crossfade μεταξύ τραγουδιών",
|
||||
"menu": {
|
||||
"advanced": "Για προχωρημένους"
|
||||
},
|
||||
"name": "Crossfade [Beta]",
|
||||
"prompt": {
|
||||
"options": {
|
||||
"multi-input": {
|
||||
"fade-in-duration": "Διάρκεια εξασθένισης (ms)",
|
||||
"fade-out-duration": "Διάρκεια σβήσιμου (ms)",
|
||||
"fade-scaling": {
|
||||
"label": "Κλιμάκωση εξασθένισης",
|
||||
"linear": "Γραμμική",
|
||||
"logarithmic": "Λογαριθμική"
|
||||
}
|
||||
}
|
||||
},
|
||||
"seconds-before-end": "Crossfade N δευτερόλεπτα πριν το τέλος"
|
||||
},
|
||||
"title": "Επιλογές Crossfade"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -162,14 +389,33 @@
|
||||
"description": "Κάνει τα τραγούδια να είναι αυτόματα σε παύση",
|
||||
"menu": {
|
||||
"apply-once": "Εφαρμόζεται μόνο στο πρώτο τραγούδι"
|
||||
}
|
||||
},
|
||||
"name": "Απενεργοποίηση αυτόματης αναπαραγωγής"
|
||||
},
|
||||
"discord": {
|
||||
"backend": {
|
||||
"already-connected": "Προσπάθεια σύνδεσης με ενεργή σύνδεση",
|
||||
"connected": "Συνδεδεμένος με το Discord",
|
||||
"disconnected": "Αποσυνδεδεμένος από το Discord"
|
||||
},
|
||||
"description": "Δείξτε στους φίλους σας τι ακούτε με το Rich Presence",
|
||||
"menu": {
|
||||
"auto-reconnect": "Αυτόματη επανασύνδεση",
|
||||
"clear-activity": "Εκκαθάριση δραστηριότητας",
|
||||
"clear-activity-after-timeout": "Εκκαθάριση δραστηριότητας μετά από χρονικό όριο",
|
||||
"connected": "Συνδεδεμένο",
|
||||
"disconnected": "Αποσυνδεδεμένο",
|
||||
"hide-duration-left": "Απόκρυψη της διάρκειας που απομένει",
|
||||
"hide-github-button": "Απόκρυψη του συνδέσμου προς GitHub",
|
||||
"hide-github-button": "Απόκρυψη κουμπιού συνδέσμου GitHub",
|
||||
"play-on-youtube-music": "Αναπαραγωγή στο YouTube Music",
|
||||
"set-inactivity-timeout": "Ορισμός χρονικού ορίου αδράνειας"
|
||||
},
|
||||
"name": "Discord Πλούσια παρουσία",
|
||||
"prompt": {
|
||||
"set-inactivity-timeout": {
|
||||
"label": "Εισαγωγή χρονικού ορίου αδράνειας σε δευτερόλεπτα:",
|
||||
"title": "Ορισμός χρονικού ορίου αδράνειας"
|
||||
}
|
||||
}
|
||||
},
|
||||
"downloader": {
|
||||
@ -179,68 +425,421 @@
|
||||
"buttons": {
|
||||
"ok": "OK"
|
||||
},
|
||||
"title": "Error in download!"
|
||||
"message": "Ωχ! Λυπούμαστε, η λήψη απέτυχε…",
|
||||
"title": "Σφάλμα στη λήψη!"
|
||||
},
|
||||
"start-download-playlist": {
|
||||
"buttons": {
|
||||
"ok": "OK"
|
||||
},
|
||||
"message": "Λήψη λίστας αναπαραγωγής {{playlistTitle}}",
|
||||
"title": "Λήψη ξεκίνησε"
|
||||
"detail": "{{playlistSize}} τραγούδια)",
|
||||
"message": "Λήψη της λίστας αναπαραγωγής {{playlistTitle}}",
|
||||
"title": "Η λήψη ξεκίνησε"
|
||||
}
|
||||
},
|
||||
"feedback": {
|
||||
"conversion-progress": "Μετατροπή: {{percent}}%",
|
||||
"download-progress": "Download: {{percent}}%",
|
||||
"preparing-file": "Προετοιμασία αρχείου…"
|
||||
"converting": "Μετατροπή…",
|
||||
"done": "Τέλος: {{filePath}}",
|
||||
"download-info": "Λήψη του {{artist}} - {{title}} [{{videoId}}",
|
||||
"download-progress": "Λήψη: {{percent}}%",
|
||||
"downloading": "Λήψη…",
|
||||
"downloading-counter": "Λήψη {{current}}/{{total}}…",
|
||||
"downloading-playlist": "Λήψη της λίστας αναπαραγωγής \"{{playlistTitle}}\" - {{playlistSize}} τραγούδια ({{playlistId}})",
|
||||
"error-while-downloading": "Σφάλμα λήψης \"{{author}} - {{title}}\": {{error}}",
|
||||
"folder-already-exists": "Ο φάκελος {{playlistFolder}} υπάρχει ήδη",
|
||||
"getting-playlist-info": "Λήψη πληροφοριών λίστας αναπαραγωγής…",
|
||||
"loading": "Φόρτωση…",
|
||||
"playlist-has-only-one-song": "Η λίστα αναπαραγωγής έχει μόνο ένα στοιχείο, κατεβάζοντάς το απευθείας",
|
||||
"playlist-id-not-found": "Δεν βρέθηκε ID λίστας αναπαραγωγής",
|
||||
"playlist-is-empty": "Η λίστα αναπραγωγής είναι άδεια",
|
||||
"playlist-is-mix-or-private": "Σφάλμα λήψης πληροφοριών λίστας αναπαραγωγής: βεβαιωθείτε ότι δεν είναι ιδιωτική ή «Μικτή για εσάς» λίστα αναπαραγωγής\n\n{{error}}",
|
||||
"preparing-file": "Προετοιμασία αρχείου…",
|
||||
"saving": "Αποθήκευση…",
|
||||
"trying-to-get-playlist-id": "Προσπαθώ να πάρω το αναγνωριστικό της λίστας αναπαραγωγής: {{playlistId}}",
|
||||
"video-id-not-found": "Το βίντεο δεν βρέθηκε",
|
||||
"writing-id3": "Εγγραφή ετικετών ID3…"
|
||||
}
|
||||
},
|
||||
"description": "Λήψεις MP3 / ήχου πηγής απευθείας από τη διεπαφή",
|
||||
"menu": {
|
||||
"choose-download-folder": "Επιλογή φακέλου λήψης",
|
||||
"download-finish-settings": {
|
||||
"label": "Λήψη στο τέλος",
|
||||
"prompt": {
|
||||
"last-percent": "Μετά από x ποσοστό",
|
||||
"last-seconds": "Τελευταία x δευτερόλεπτα",
|
||||
"title": "Ρύθμιση του πότε θα γίνεται λήψη"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "Για προχωρημένους",
|
||||
"enabled": "Ενεργοποιημένο",
|
||||
"mode": "Λειτουργία χρόνου",
|
||||
"percent": "Ποσοστό",
|
||||
"seconds": "Δευτερόλεπτα"
|
||||
}
|
||||
},
|
||||
"download-playlist": "Λήψη λίστας αναπαραγωγής",
|
||||
"presets": "Προεπιλογές",
|
||||
"skip-existing": "Παράλειψη υπάρχοντων αρχείων"
|
||||
},
|
||||
"name": "Κατεβαστής",
|
||||
"renderer": {
|
||||
"can-not-update-progress": "Δεν μπορεί να ενημερωθεί η πρόοδος"
|
||||
},
|
||||
"templates": {
|
||||
"button": "Download"
|
||||
"button": "Λήψη"
|
||||
}
|
||||
},
|
||||
"equalizer": {
|
||||
"description": "Προσθέτει έναν ισοσταθμιστή στο πρόγραμμα αναπαραγωγής",
|
||||
"menu": {
|
||||
"presets": {
|
||||
"label": "Προεπιλογές",
|
||||
"list": {
|
||||
"bass-booster": "Ενίσχυση μπάσου"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Ισοσταθμιστής"
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "Κάνει το ρυθμιστικό έντασης εκθετικό, ώστε να είναι ευκολότερη η επιλογή χαμηλότερων εντάσεων.",
|
||||
"name": "Εκθετικός όγκος"
|
||||
},
|
||||
"in-app-menu": {
|
||||
"description": "Δίνει στις γραμμές μενού μια φανταχτερή, σκοτεινή ή άλμπουμ-χρωματική εμφάνιση",
|
||||
"menu": {
|
||||
"hide-dom-window-controls": "Απόκρυψη στοιχείων ελέγχου παραθύρου DOM"
|
||||
},
|
||||
"name": "Μενού εντός της εφαρμογής"
|
||||
},
|
||||
"lumiastream": {
|
||||
"description": "Προσθέτει υποστήριξη Lumia Stream",
|
||||
"name": "Lumia Stream [Beta]"
|
||||
},
|
||||
"lyrics-genius": {
|
||||
"description": "Προσθέτει υποστήριξη στίχων για τα περισσότερα τραγούδια",
|
||||
"menu": {
|
||||
"romanized-lyrics": "Ρομαντικοποιημένοι στίχοι"
|
||||
},
|
||||
"name": "Στίχοι Genius",
|
||||
"renderer": {
|
||||
"fetched-lyrics": "Στίχοι για το Genius"
|
||||
}
|
||||
},
|
||||
"music-together": {
|
||||
"description": "Μοιραστείτε μια λίστα αναπαραγωγής με άλλους. Όταν ο οικοδεσπότης παίζει ένα τραγούδι, όλοι οι άλλοι θα ακούσουν το ίδιο τραγούδι",
|
||||
"dialog": {
|
||||
"enter-host": "Εισαγωγή ID κεντρικού υπολογιστή"
|
||||
},
|
||||
"internal": {
|
||||
"save": "Αποθήκευση",
|
||||
"track-source": "Πηγή διαδρομής",
|
||||
"unknown-user": "Άγνωστος χρήστης"
|
||||
},
|
||||
"menu": {
|
||||
"click-to-copy-id": "Αντιγραφή ID κεντρικού υπολογιστή",
|
||||
"close": "Κλείσιμο Music Together",
|
||||
"connected-users": "Συνδεδεμένοι χρήστες",
|
||||
"disconnect": "Αποσύνδεση Music Together",
|
||||
"empty-user": "Κανένας συνδεδεμένος χρήστης",
|
||||
"host": "Κεντρικός υπολογιστής Music Together",
|
||||
"join": "Γίνετε μέλος της Μουσικής Μαζί",
|
||||
"permission": {
|
||||
"all": "Επιτρέψτε στους επισκέπτες να ελέγχουν τη λίστα αναπαραγωγής και τον παίκτη",
|
||||
"host-only": "Μόνο ο οικοδεσπότης μπορεί να ελέγχει τη λίστα αναπαραγωγής και τον παίκτη",
|
||||
"playlist": "Επιτρέψτε στους επισκέπτες να ελέγχουν τη λίστα αναπαραγωγής"
|
||||
},
|
||||
"set-permission": "Άδεια ελέγχου αλλαγής",
|
||||
"status": {
|
||||
"disconnected": "Αποσυνδεδεμένο",
|
||||
"guest": "Συνδεδεμένος ως επισκέπτης",
|
||||
"host": "Συνδεδεμένος ως οικοδεσπότης"
|
||||
}
|
||||
},
|
||||
"name": "Music Together [Beta]",
|
||||
"toast": {
|
||||
"add-song-failed": "Απέτυχε η προσθήκη τραγουδιού",
|
||||
"closed": "Το Music Together έκλεισε",
|
||||
"disconnected": "Το Music Together αποσυνδέθηκε",
|
||||
"host-failed": "Απέτυχε να φιλοξενήσει το Μουσική Μαζί",
|
||||
"id-copied": "Το ID κεντρικού υπολογιστή αντιγράφηκε στο πρόχειρο",
|
||||
"id-copy-failed": "Απέτυχε η αντιγραφή ID κεντρικού υπολογιστή στο πρόχειρο",
|
||||
"join-failed": "Απέτυχε να ενταχθεί στη Μουσική Μαζί",
|
||||
"joined": "Ενωμένη μουσική μαζί",
|
||||
"permission-changed": "Η άδεια «Μουσική Μαζί» άλλαξε σε «{{permission}}»",
|
||||
"remove-song-failed": "Απέτυχε η αφαίρεση τραγουδιού",
|
||||
"user-connected": "{{name}} εντάχθηκε στη Μουσική Μαζί",
|
||||
"user-disconnected": "{{name}} αριστερά Μουσική Μαζί"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"name": "Navigation"
|
||||
"description": "Βέλη πλοήγησης Επόμενο/Πίσω ενσωματωμένα απευθείας στο περιβάλλον εργασίας, όπως στο αγαπημένο σας πρόγραμμα περιήγησης",
|
||||
"name": "Πλοήγηση"
|
||||
},
|
||||
"no-google-login": {
|
||||
"description": "Αφαίρεση των κουμπιών και των συνδέσμων σύνδεσης Google από το περιβάλλον εργασίας",
|
||||
"name": "No Google Login"
|
||||
},
|
||||
"notifications": {
|
||||
"name": "Notifications"
|
||||
"description": "Εμφάνιση ειδοποίησης όταν ξεκινάει η αναπαραγωγή ενός τραγουδιού (οι διαδραστικές ειδοποιήσεις είναι διαθέσιμες στα Windows)",
|
||||
"menu": {
|
||||
"interactive": "Διαδραστικές ειδοποιήσεις",
|
||||
"interactive-settings": {
|
||||
"label": "Διαδραστικές ρυθμίσεις",
|
||||
"submenu": {
|
||||
"hide-button-text": "Απόκρυψη κειμένου κουμπιού",
|
||||
"refresh-on-play-pause": "Ανανέωση σε Αναπαραγωγή/Παύση",
|
||||
"tray-controls": "Άνοιγμα/κλείσιμο με κλικ στο δίσκο"
|
||||
}
|
||||
},
|
||||
"priority": "Προτεραιότητα κοινοποίησης",
|
||||
"toast-style": "Στυλ τοστ",
|
||||
"unpause-notification": "Εμφάνιση ειδοποίησης κατά την κατάργηση της παύσης"
|
||||
},
|
||||
"name": "Ειδοποιήσεις"
|
||||
},
|
||||
"picture-in-picture": {
|
||||
"description": "Επιτρέπει την εναλλαγή της εφαρμογής σε λειτουργία εικόνας σε εικόνα",
|
||||
"menu": {
|
||||
"always-on-top": "Πάντα σε πρώτο πλάνο",
|
||||
"hotkey": {
|
||||
"label": "Πλήκτρο πρόσβασης",
|
||||
"prompt": {
|
||||
"keybind-options": {
|
||||
"hotkey": "Πλήκτρο πρόσβασης"
|
||||
},
|
||||
"label": "Επιλέξτε ένα πλήκτρο συντόμευσης για να ενεργοποιήσετε την εικόνα στην εικόνα",
|
||||
"title": "Πλήκτρο Hotkey Εικόνα-σε-Εικόνα"
|
||||
}
|
||||
},
|
||||
"save-window-position": "Αποθήκευση θέσης παραθύρου",
|
||||
"save-window-size": "Αποθήκευση μεγέθους παραθύρου",
|
||||
"use-native-pip": "Χρήση εγγενούς PiP του προγράμματος περιήγησης"
|
||||
},
|
||||
"name": "Εικόνα-στην-εικόνα",
|
||||
"templates": {
|
||||
"button": "Εικόνα-στην-εικόνα"
|
||||
}
|
||||
},
|
||||
"playback-speed": {
|
||||
"description": "Ακούστε γρήγορα, ακούστε αργά! Προσθέτει ένα ρυθμιστικό που ελέγχει την ταχύτητα του τραγουδιού",
|
||||
"name": "Ταχύτητα αναπαραγωγής",
|
||||
"templates": {
|
||||
"button": "Ταχύτητα"
|
||||
}
|
||||
},
|
||||
"precise-volume": {
|
||||
"description": "Ελέγξτε την ένταση του ήχου με ακρίβεια χρησιμοποιώντας τον τροχό του ποντικιού/τα πλήκτρα, με ένα προσαρμοσμένο HUD και προσαρμόσιμα βήματα έντασης",
|
||||
"menu": {
|
||||
"arrows-shortcuts": "Τοπικά πλήκτρα βέλους Έλεγχοι",
|
||||
"custom-volume-steps": "Ορισμός προσαρμοσμένων βημάτων έντασης ήχου",
|
||||
"global-shortcuts": "Παγκόσμια πλήκτρα συντόμευσης"
|
||||
},
|
||||
"name": "Ακριβής Ήχος",
|
||||
"prompt": {
|
||||
"global-shortcuts": {
|
||||
"keybind-options": {
|
||||
"decrease": "Μείωση έντασης",
|
||||
"increase": "Αύξηση έντασης"
|
||||
},
|
||||
"label": "Επιλέξτε Παγκόσμια δέσμευση πλήκτρων έντασης ήχου:",
|
||||
"title": "Επιλέξτε Παγκόσμια δέσμευση πλήκτρων έντασης ήχου"
|
||||
},
|
||||
"volume-steps": {
|
||||
"label": "Επιλέξτε Βήματα αύξησης/μείωσης έντασης ήχου",
|
||||
"title": "Βήματα έντασης"
|
||||
}
|
||||
}
|
||||
},
|
||||
"quality-changer": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"quality-changer": {
|
||||
"detail": "Τρέχουσα ποιότητα: {{quality}}",
|
||||
"message": "Επιλογή ποιότητας βίντεο:",
|
||||
"title": "Επιλογή ποιότητας βίντεο"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Επιτρέπει την αλλαγή της ποιότητας βίντεο με ένα κουμπί στην επικάλυψη βίντεο",
|
||||
"name": "Αλλαγή ποιότητας βίντεο"
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "Προσθήκη υποστήριξης scrobbling (κ.λπ. last.fm, Listenbrainz)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "Απέτυχε η πιστοποίηση ταυτότητας στο Last.fm\nΚρύψτε το αναδυόμενο παράθυρο μέχρι την επόμενη επανεκκίνηση.",
|
||||
"title": "Αποτυχία ελέγχου ταυτότητας"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "Ρυθμίσεις API Last.fm"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": "Εισάγετε το διακριτικό χρήστη ListenBrainz"
|
||||
},
|
||||
"scrobble-alternative-title": "Χρήση εναλλακτικών τίτλων",
|
||||
"scrobble-other-media": "Scrobble άλλα μέσα ενημέρωσης"
|
||||
},
|
||||
"name": "Σκρόμπλερ",
|
||||
"prompt": {
|
||||
"lastfm": {
|
||||
"api-key": "Κλειδί API Last.fm",
|
||||
"api-secret": "Μυστικό API του Last.fm"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": {
|
||||
"label": "Εισάγετε το διακριτικό χρήστη ListenBrainz:",
|
||||
"title": "Κουπόνι ListenBrainz"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"shortcuts": {
|
||||
"description": "Επιτρέπετε τον καθορισμό παγκόσμιων πλήκτρων άμεσης πρόσβασης για την παρακολούθηση (αναπαραγωγή/παύση/επόμενη/προηγούμενη) και την απενεργοποίηση του OSD πολυμέσων με παράκαμψη των πλήκτρων πολυμέσων, την ενεργοποίηση του Ctrl/CMD + F για αναζήτηση, την ενεργοποίηση της υποστήριξης Linux MPRIS για τα πλήκτρα πολυμέσων και προσαρμοσμένα πλήκτρα άμεσης πρόσβασης για προχωρημένους χρήστες",
|
||||
"menu": {
|
||||
"override-media-keys": "Παράκαμψη κλειδιών πολυμέσων",
|
||||
"set-keybinds": "Ορισμός παγκόσμιων ελέγχων τραγουδιού"
|
||||
},
|
||||
"name": "Συντομεύσεις (& MPRIS)",
|
||||
"prompt": {
|
||||
"keybind": {
|
||||
"keybind-options": {
|
||||
"next": "Next"
|
||||
}
|
||||
"next": "Επόμενο",
|
||||
"play-pause": "Αναπαραγωγή / Παύση",
|
||||
"previous": "Προηγούμενο"
|
||||
},
|
||||
"label": "Επιλέξτε Global Keybinds για το τραγούδι Έλεγχος:",
|
||||
"title": "Παγκόσμια δέσμευση πλήκτρων"
|
||||
}
|
||||
}
|
||||
},
|
||||
"skip-disliked-songs": {
|
||||
"description": "Παραλείπει τα αρεστά τραγούδια",
|
||||
"name": "Παραλείψτε τα τραγούδια που δεν άρεσαν"
|
||||
},
|
||||
"skip-silences": {
|
||||
"description": "Αυτόματη παράλειψη τμημάτων σιωπής σε τραγούδια",
|
||||
"name": "Παραλείψτε τις σιωπές"
|
||||
},
|
||||
"sponsorblock": {
|
||||
"description": "Παραλείπει αυτόματα μέρη που δεν είναι μουσικά, όπως intro/outro ή μέρη μουσικών βίντεο όπου δεν παίζεται το τραγούδι",
|
||||
"name": "SponsorBlock"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "Παρέχει συγχρονισμένους στίχους σε τραγούδια, χρησιμοποιώντας παρόχους όπως η LRClib.",
|
||||
"errors": {
|
||||
"fetch": "⚠️ Προέκυψε σφάλμα κατά την ανάκτηση των στίχων.\n\tΠροσπαθήστε ξανά αργότερα.",
|
||||
"not-found": "⚠️ Δεν βρέθηκαν στίχοι για αυτό το τραγούδι."
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "Προεπιλεγμένος χαρακτήρας μεταξύ στίχων",
|
||||
"tooltip": "Επιλέξτε τον προεπιλεγμένο χαρακτήρα που θα χρησιμοποιηθεί για το κενό μεταξύ των στίχων"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "Επίδραση γραμμής",
|
||||
"submenu": {
|
||||
"fancy": {
|
||||
"label": "Φανταχτερό",
|
||||
"tooltip": "Χρήση μεγάλων εφέ που μοιάζουν με εφαρμογές στην τρέχουσα γραμμή"
|
||||
},
|
||||
"focus": {
|
||||
"label": "Εστίαση",
|
||||
"tooltip": "Κάντε μόνο την τρέχουσα γραμμή λευκή"
|
||||
},
|
||||
"offset": {
|
||||
"label": "Μετατόπιση",
|
||||
"tooltip": "Μετατόπιση προς τα δεξιά της τρέχουσας γραμμής"
|
||||
},
|
||||
"scale": {
|
||||
"label": "Κλίμακα",
|
||||
"tooltip": "Κλιμάκωση της τρέχουσας γραμμής"
|
||||
}
|
||||
},
|
||||
"tooltip": "Επιλέξτε το εφέ που θα εφαρμοστεί στην τρέχουσα γραμμή"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "Κάντε τους στίχους τέλεια συγχρονισμένους",
|
||||
"tooltip": "Υπολογίζει με ακρίβεια χιλιοστού του δευτερολέπτου την εμφάνιση της επόμενης γραμμής (μπορεί να έχει μικρή επίπτωση στην απόδοση)"
|
||||
},
|
||||
"romanization": {
|
||||
"label": "Στίχοι Ρομαντικοποίηση",
|
||||
"tooltip": "Αν οι στίχοι είναι σε διαφορετική γλώσσα, προσπαθήστε να εμφανίσετε μια λατινική έκδοση."
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "Εμφάνιση στίχων ακόμα και αν είναι ανακριβείς",
|
||||
"tooltip": "Εάν το τραγούδι δεν βρεθεί, το πρόσθετο προσπαθεί ξανά με διαφορετικό ερώτημα αναζήτησης.\nΤο αποτέλεσμα της δεύτερης προσπάθειας μπορεί να μην είναι ακριβές."
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "Εμφάνιση κωδικών ώρας",
|
||||
"tooltip": "Εμφάνιση των κωδικών ώρας δίπλα στους στίχους"
|
||||
}
|
||||
},
|
||||
"name": "Συγχρονισμένοι στίχοι",
|
||||
"refetch-btn": {
|
||||
"fetching": "Φέρνοντας...",
|
||||
"normal": "Στίχοι Refetch"
|
||||
},
|
||||
"warnings": {
|
||||
"duration-mismatch": "⚠️ - Οι στίχοι ενδέχεται να μην είναι συγχρονισμένοι λόγω αναντιστοιχίας διάρκειας.",
|
||||
"inexact": "⚠️ - Οι στίχοι για αυτό το τραγούδι μπορεί να μην είναι ακριβείς",
|
||||
"instrumental": "⚠️ - Αυτό είναι ένα ορχηστρικό τραγούδι"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "Έλεγχος αναπαραγωγής από τη γραμμή εργασιών των Windows",
|
||||
"name": "Έλεγχος μέσων γραμμής εργασιών"
|
||||
},
|
||||
"touchbar": {
|
||||
"description": "Προσθέτει ένα γραφικό στοιχείο TouchBar για χρήστες macOS",
|
||||
"name": "TouchBar"
|
||||
},
|
||||
"tuna-obs": {
|
||||
"description": "Ενσωμάτωση με το plugin Tuna του OBS",
|
||||
"name": "Tuna OBS"
|
||||
},
|
||||
"unobtrusive-player": {
|
||||
"description": "Αποτρέπει την εμφάνιση του προγράμματος αναπαραγωγής κατά την αναπαραγωγή ενός τραγουδιού",
|
||||
"name": "Ανεπαίσθητος παίκτης"
|
||||
},
|
||||
"video-toggle": {
|
||||
"description": "Προσθέτει ένα κουμπί για εναλλαγή μεταξύ της λειτουργίας βίντεο/τραγουδιού. μπορεί επίσης προαιρετικά να αφαιρέσει ολόκληρη την καρτέλα βίντεο",
|
||||
"menu": {
|
||||
"align": {
|
||||
"label": "Στοίχιση",
|
||||
"submenu": {
|
||||
"left": "Αριστερά",
|
||||
"middle": "Middle",
|
||||
"right": "Right"
|
||||
"right": "Δεξιά"
|
||||
}
|
||||
},
|
||||
"force-hide": "Αναγκαστική αφαίρεση καρτέλας βίντεο",
|
||||
"mode": {
|
||||
"label": "Mode"
|
||||
"label": "Mode",
|
||||
"submenu": {
|
||||
"custom": "Προσαρμοσμένη εναλλαγή",
|
||||
"disabled": "Απενεργοποιημένο",
|
||||
"native": "Γηγενής εναλλαγή"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Εναλλαγή βίντεο",
|
||||
"templates": {
|
||||
"button": "Song"
|
||||
"button": "Τραγούδι"
|
||||
}
|
||||
},
|
||||
"visualizer": {
|
||||
"description": "Προσθέτει έναν απεικονιστή στο πρόγραμμα αναπαραγωγής",
|
||||
"menu": {
|
||||
"visualizer-type": "Τύπος απεικονιστή"
|
||||
},
|
||||
"name": "Απεικονιστής"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -158,6 +158,14 @@
|
||||
},
|
||||
"remove-upgrade-button": "Remove upgrade button",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "Cancel",
|
||||
"remove": "Remove"
|
||||
},
|
||||
"remove-theme": "Are you sure you want to remove the custom theme?",
|
||||
"remove-theme-message": "This will remove the custom theme"
|
||||
},
|
||||
"label": "Theme",
|
||||
"submenu": {
|
||||
"import-css-file": "Import custom CSS file",
|
||||
@ -199,6 +207,10 @@
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "If an ad play it mutes the audio and sets playback speed to 16x",
|
||||
"name": "Ad Speedup"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "Block all ads and tracking out of the box",
|
||||
"menu": {
|
||||
@ -212,7 +224,6 @@
|
||||
},
|
||||
"album-color-theme": {
|
||||
"description": "Applies a dynamic theme and visual effects based on the album color palette",
|
||||
"name": "Album Color Theme",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "Color mix ratio",
|
||||
@ -220,7 +231,8 @@
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Album Color Theme"
|
||||
},
|
||||
"ambient-mode": {
|
||||
"description": "Applies a lighting effect by casting gentle colors from the video, into your screen’s background",
|
||||
@ -267,6 +279,56 @@
|
||||
},
|
||||
"name": "Ambient Mode"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "Adds YouTube Music support for the Amuse now playing widget by 6K Labs",
|
||||
"name": "Amuse",
|
||||
"response": {
|
||||
"query": "Amuse API server is running. GET /query to get song info."
|
||||
}
|
||||
},
|
||||
"api-server": {
|
||||
"description": "Adds an API server to control the player",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "Allow",
|
||||
"deny": "Deny"
|
||||
},
|
||||
"message": "Allow {{ID}} ({{origin}}) to access the API?",
|
||||
"title": "API authorization request"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Authorization strategy",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "Authorize at first request"
|
||||
},
|
||||
"none": {
|
||||
"label": "No authorization"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "Hostname"
|
||||
},
|
||||
"port": {
|
||||
"label": "Port"
|
||||
}
|
||||
},
|
||||
"name": "API Server [Beta]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "Enter the hostname (like 0.0.0.0) for the API server:",
|
||||
"title": "Hostname"
|
||||
},
|
||||
"port": {
|
||||
"label": "Enter the port for the API server:",
|
||||
"title": "Port"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Apply compression to audio (lowers the volume of the loudest parts of the signal and raises the volume of the softest parts)",
|
||||
"name": "Audio Compressor"
|
||||
@ -402,6 +464,21 @@
|
||||
"description": "Downloads MP3 / source audio directly from the interface",
|
||||
"menu": {
|
||||
"choose-download-folder": "Choose download folder",
|
||||
"download-finish-settings": {
|
||||
"label": "Download on finish",
|
||||
"prompt": {
|
||||
"last-percent": "After x percent",
|
||||
"last-seconds": "Last x seconds",
|
||||
"title": "Configure when to download"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "Advanced",
|
||||
"enabled": "Enabled",
|
||||
"mode": "Time mode",
|
||||
"percent": "Percent",
|
||||
"seconds": "Seconds"
|
||||
}
|
||||
},
|
||||
"download-playlist": "Download playlist",
|
||||
"presets": "Presets",
|
||||
"skip-existing": "Skip existing files"
|
||||
@ -511,6 +588,10 @@
|
||||
},
|
||||
"name": "Notifications"
|
||||
},
|
||||
"performance-improvement": {
|
||||
"description": "Improve performance by enabling dangerous scripts",
|
||||
"name": "Performance improvement [Beta]"
|
||||
},
|
||||
"picture-in-picture": {
|
||||
"description": "Allows to switch the app to picture-in-picture mode",
|
||||
"menu": {
|
||||
@ -579,14 +660,23 @@
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "Add scrobbling support (etc. last.fm, Listenbrainz)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "Failed to authenticate with Last.fm\nHide the popup until the next restart.",
|
||||
"title": "Authentication Failed"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"scrobble-other-media": "Scrobble other media",
|
||||
"lastfm": {
|
||||
"api-settings": "Last.fm API Settings"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": "Enter ListenBrainz user token"
|
||||
}
|
||||
},
|
||||
"scrobble-other-media": "Scrobble other media",
|
||||
"scrobble-alternative-title": "Use alternative titles"
|
||||
},
|
||||
"name": "Scrobbler",
|
||||
"prompt": {
|
||||
@ -633,6 +723,67 @@
|
||||
"description": "Automatically Skips non-music parts like intro/outro or parts of music videos where the song isn't playing",
|
||||
"name": "SponsorBlock"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "Provides synced lyrics to songs, using providers like LRClib.",
|
||||
"errors": {
|
||||
"fetch": "⚠️\tAn error occurred while fetching the lyrics.\n\tPlease try again later.",
|
||||
"not-found": "⚠️ No lyrics found for this song."
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "Default character between lyrics",
|
||||
"tooltip": "Choose the default character to use for the gap between lyrics"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "Line effect",
|
||||
"submenu": {
|
||||
"fancy": {
|
||||
"label": "Fancy",
|
||||
"tooltip": "Use large, app-like effects on the current line"
|
||||
},
|
||||
"focus": {
|
||||
"label": "Focus",
|
||||
"tooltip": "Make only the current line white"
|
||||
},
|
||||
"offset": {
|
||||
"label": "Offset",
|
||||
"tooltip": "Offset on the right the current line"
|
||||
},
|
||||
"scale": {
|
||||
"label": "Scale",
|
||||
"tooltip": "Scale the current line"
|
||||
}
|
||||
},
|
||||
"tooltip": "Choose the effect to apply to the current line"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "Make the lyrics perfectly synced",
|
||||
"tooltip": "Calculate to the milisecond the display of the next line (can have a small impact on performance)"
|
||||
},
|
||||
"romanization": {
|
||||
"label": "Romanize lyrics",
|
||||
"tooltip": "If the lyrics are in a different language, try to display a latin version."
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "Show lyrics even if inexact",
|
||||
"tooltip": "If the song is not found, the plugin tries again with a different search query.\nThe result from the second attempt may not be exact."
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "Show time codes",
|
||||
"tooltip": "Show the time codes next to the lyrics"
|
||||
}
|
||||
},
|
||||
"name": "Synced Lyrics",
|
||||
"refetch-btn": {
|
||||
"fetching": "Fetching...",
|
||||
"normal": "Refetch lyrics"
|
||||
},
|
||||
"warnings": {
|
||||
"duration-mismatch": "⚠️ - The lyrics may be out of sync due to a duration mismatch.",
|
||||
"inexact": "⚠️ - The lyrics for this song may not be exact",
|
||||
"instrumental": "⚠️ - This is an instrumental song"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "Control playback from your Windows taskbar",
|
||||
"name": "Taskbar Media Control"
|
||||
@ -645,6 +796,10 @@
|
||||
"description": "Integration with OBS's plugin Tuna",
|
||||
"name": "Tuna OBS"
|
||||
},
|
||||
"unobtrusive-player": {
|
||||
"description": "Prevents the player from popping up when playing a song",
|
||||
"name": "Unobtrusive Player"
|
||||
},
|
||||
"video-toggle": {
|
||||
"description": "Adds a button to switch between Video/Song mode. can also optionally remove the whole video tab",
|
||||
"menu": {
|
||||
@ -677,6 +832,18 @@
|
||||
"visualizer-type": "Visualizer Type"
|
||||
},
|
||||
"name": "Visualizer"
|
||||
},
|
||||
"equalizer": {
|
||||
"description": "Adds an equalizer to the player",
|
||||
"name": "Equalizer",
|
||||
"menu": {
|
||||
"presets": {
|
||||
"label": "Presets",
|
||||
"list": {
|
||||
"bass-booster": "Bass booster"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,8 +3,8 @@
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "Error al ejecutar el plugin {{pluginName}}::{{contextName}}",
|
||||
"executed-at-ms": "Plugin {{pluginName}}: {{contextName}} ejecutado en {{ms}}ms",
|
||||
"initialize-failed": "Error al inicializar plugin \"{{pluginName}}\"",
|
||||
"executed-at-ms": "Plugin {{pluginName}}::{{contextName}} Ejecutó en {{ms}}ms",
|
||||
"initialize-failed": "Error al inicializar el plugin \"{{pluginName}}\"",
|
||||
"load-all": "Cargando todos los plugins",
|
||||
"load-failed": "Error al cargar el plugin \"{{pluginName}}\"",
|
||||
"loaded": "Plugin \"{{pluginName}}\" cargado",
|
||||
@ -15,13 +15,13 @@
|
||||
},
|
||||
"language": {
|
||||
"code": "es",
|
||||
"local-name": "Inglés",
|
||||
"local-name": "Español",
|
||||
"name": "Spanish"
|
||||
},
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "Carga finalizada. DevTools abiertos"
|
||||
"dev-tools": "Carga finalizada. DevTools abierto"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "i18n cargado"
|
||||
@ -36,7 +36,7 @@
|
||||
"details": "¡Error sin repuesta!\n{{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "Borrar caché de la aplicación"
|
||||
"clearing-cache-after-20s": "Borrando caché de la aplicación"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "La ventana intentó mostrarse fuera de la pantalla, windowSize={{windowSize}}, displaySize={{displaySize}}, posicion={{position}}"
|
||||
@ -45,21 +45,21 @@
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "El menú está oculto, utiliza \"Alt\" para mostrarlo (o \"Escape\" si utilizas el menú integrado en la aplicación)",
|
||||
"message": "Menu oculto esta deshabilitado",
|
||||
"title": "Menú oculto activado"
|
||||
"message": "Menú Oculto está habilitado",
|
||||
"title": "Menú oculto habilitado"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "Más tarde",
|
||||
"restart-now": "Reiniciar ahora"
|
||||
},
|
||||
"detail": "\"{{pluginName}}\" se requiere reiniciar para que el plugin tome efecto",
|
||||
"detail": "El plugin \"{{pluginName}}\" requiere reiniciar para tomar efecto",
|
||||
"message": "\"{{pluginName}}\" necesita reiniciar",
|
||||
"title": "Se requiere reinicio"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "Dejar",
|
||||
"quit": "Salir",
|
||||
"relaunch": "Volver a abrir",
|
||||
"wait": "Espera"
|
||||
},
|
||||
@ -74,7 +74,7 @@
|
||||
"ok": "OK"
|
||||
},
|
||||
"detail": "Una nueva versión está disponible y puede descargarse en {{downloadLink}}",
|
||||
"message": "Ya está disponible una nueva versión",
|
||||
"message": "Hay una nueva versión disponible",
|
||||
"title": "Actualización disponible"
|
||||
}
|
||||
},
|
||||
@ -84,7 +84,7 @@
|
||||
"label": "Navegación",
|
||||
"submenu": {
|
||||
"copy-current-url": "Copiar la URL actual",
|
||||
"go-back": "Regresar",
|
||||
"go-back": "Atrás",
|
||||
"go-forward": "Adelante",
|
||||
"quit": "Salir",
|
||||
"restart": "Reiniciar la aplicación"
|
||||
@ -99,10 +99,10 @@
|
||||
"auto-reset-app-cache": "Restablecer la caché de la aplicación al iniciarla",
|
||||
"disable-hardware-acceleration": "Desactivar la aceleración por hardware",
|
||||
"edit-config-json": "Editar config.json",
|
||||
"override-user-agent": "sobrescribir User-Agent",
|
||||
"restart-on-config-changes": "Reinicie al cambiar la configuración",
|
||||
"override-user-agent": "Sobrescribir User-Agent",
|
||||
"restart-on-config-changes": "Reiniciar al modificar la configuración",
|
||||
"set-proxy": {
|
||||
"label": "Definir proxy",
|
||||
"label": "Establecer proxy",
|
||||
"prompt": {
|
||||
"label": "Introduzca la dirección del proxy: (déjela vacía para desactivarla)",
|
||||
"placeholder": "Ejemplo: SOCKS5://127.0.0.1:9999",
|
||||
@ -112,28 +112,28 @@
|
||||
"toggle-dev-tools": "Activar DevTools"
|
||||
}
|
||||
},
|
||||
"always-on-top": "Siempre arriba",
|
||||
"always-on-top": "Siempre al frente",
|
||||
"auto-update": "Actualización automática",
|
||||
"hide-menu": {
|
||||
"dialog": {
|
||||
"message": "El menú se ocultará la próxima vez que lo inicies, usa [Alt] para mostrarlo (o pulsa [`] si usas el menú dentro de la aplicación)",
|
||||
"title": "Ocultar menú habilitado"
|
||||
"message": "El menú se ocultará la próxima vez que inicies la aplicación, usa [Alt] para mostrarlo (o pulsa [`] si usas el menú dentro de la aplicación)",
|
||||
"title": "Menú oculto habilitado"
|
||||
},
|
||||
"label": "Ocultar menú"
|
||||
},
|
||||
"language": {
|
||||
"dialog": {
|
||||
"message": "El idioma se cambiará después de reiniciar",
|
||||
"title": "Se cambio el idioma"
|
||||
"title": "Se cambió el idioma"
|
||||
},
|
||||
"label": "Idioma",
|
||||
"submenu": {
|
||||
"to-help-translate": "¿Quieres ayudar a traducir? Haz clic aquí"
|
||||
}
|
||||
},
|
||||
"resume-on-start": "Reanudar la última canción al iniciar la aplicación",
|
||||
"single-instance-lock": "Bloquear en una instancia unica",
|
||||
"start-at-login": "Comenzar al iniciar sesión",
|
||||
"resume-on-start": "Reanudar la última canción reproducida al iniciar la aplicación",
|
||||
"single-instance-lock": "Limitar a una única instancia",
|
||||
"start-at-login": "Iniciar al iniciar sesión",
|
||||
"starting-page": {
|
||||
"label": "Página de inicio",
|
||||
"unset": "Sin configurar"
|
||||
@ -142,8 +142,8 @@
|
||||
"label": "Bandeja",
|
||||
"submenu": {
|
||||
"disabled": "Desactivado",
|
||||
"enabled-and-hide-app": "Activar y ocultar la aplicación",
|
||||
"enabled-and-show-app": "Activado y mostrar aplicación",
|
||||
"enabled-and-hide-app": "Habilitado y ocultar la aplicación",
|
||||
"enabled-and-show-app": "Habilitado y mostrar aplicación",
|
||||
"play-pause-on-click": "Reproducir/Pausar al hacer clic"
|
||||
}
|
||||
},
|
||||
@ -156,8 +156,16 @@
|
||||
"hide": "Ocultar",
|
||||
"label": "Botones de \"Me Gusta\""
|
||||
},
|
||||
"remove-upgrade-button": "Remover el botón de Actualización",
|
||||
"remove-upgrade-button": "Eliminar el botón de Actualización",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "Cancelar",
|
||||
"remove": "Quitar"
|
||||
},
|
||||
"remove-theme": "¿Estás seguro de que quieres eliminar el tema personalizado?",
|
||||
"remove-theme-message": "Esto eliminará el tema personalizado"
|
||||
},
|
||||
"label": "Tema",
|
||||
"submenu": {
|
||||
"import-css-file": "Importar archivo CSS personalizado",
|
||||
@ -199,36 +207,40 @@
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "Si se reproduce un anuncio, silencia el audio y fija la velocidad de reproducción en 16x",
|
||||
"name": "Aumento de la velocidad de anuncios"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "Bloquear todos los anuncios y el rastreo",
|
||||
"description": "Bloquear todos los anuncios y el rastreo por defecto",
|
||||
"menu": {
|
||||
"blocker": "Bloqueador"
|
||||
},
|
||||
"name": "Bloqueador de anuncios"
|
||||
},
|
||||
"album-actions": {
|
||||
"description": "Añade los botones \"No me gusta\", \"No me gusta\", \"Me gusta\" y \"No me gusta\" para aplicarlos a todas las canciones de una lista de reproducción o un álbum",
|
||||
"description": "Añade los botones \"Quitar no me gusta\", \"No me gusta\", \"Me gusta\" y \"Quitar me gusta\" para aplicarlos a todas las canciones de una lista de reproducción o un álbum",
|
||||
"name": "Acciones en el álbum"
|
||||
},
|
||||
"album-color-theme": {
|
||||
"description": "Aplica un tema dinámico y efectos visuales basados en la paleta de colores del álbum",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "Proporción de la mezcla de color",
|
||||
"label": "Proporción de la mezcla de colores",
|
||||
"submenu": {
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Color del álbum"
|
||||
"name": "Tema de color del álbum"
|
||||
},
|
||||
"ambient-mode": {
|
||||
"description": "Aplica un efecto de iluminación mediante la proyección de colores suaves del vídeo en el fondo de la pantalla",
|
||||
"description": "Aplica un efecto de iluminación mediante la proyección de colores suaves extraídos del vídeo sobre el fondo de pantalla",
|
||||
"menu": {
|
||||
"blur-amount": {
|
||||
"label": "Cantidad de desenfoque",
|
||||
"submenu": {
|
||||
"pixels": "{{blurAmount}} pixeles"
|
||||
"pixels": "{{blurAmount}} píxeles"
|
||||
}
|
||||
},
|
||||
"buffer": {
|
||||
@ -238,7 +250,7 @@
|
||||
}
|
||||
},
|
||||
"opacity": {
|
||||
"label": "Transparencia",
|
||||
"label": "Opacidad",
|
||||
"submenu": {
|
||||
"percent": "{{opacity}}%"
|
||||
}
|
||||
@ -267,17 +279,67 @@
|
||||
},
|
||||
"name": "Modo ambiente"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "Agrega soporte a YouTube Music para el widget \"reproduciendo\" de Amuse por 6K Labs",
|
||||
"name": "Amuse",
|
||||
"response": {
|
||||
"query": "El servidor API de Amuse se está ejecutando. Usa GET /query para obtener información de la canción."
|
||||
}
|
||||
},
|
||||
"api-server": {
|
||||
"description": "Añade un servidor API para controlar el reproductor",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "Permitir",
|
||||
"deny": "Denegar"
|
||||
},
|
||||
"message": "¿Permitir que {{ID}} ({{origin}}) acceda a la API?",
|
||||
"title": "Petición de autorización API"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Estrategia de autorización",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "Autorizar a la primera solicitud"
|
||||
},
|
||||
"none": {
|
||||
"label": "Sin autorización"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "Nombre del host"
|
||||
},
|
||||
"port": {
|
||||
"label": "Puerto"
|
||||
}
|
||||
},
|
||||
"name": "Servidor API [Beta]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "Introduzca el nombre de host (como 0.0.0.0) para el servidor API:",
|
||||
"title": "Nombre de host"
|
||||
},
|
||||
"port": {
|
||||
"label": "Introduzca el puerto para el servidor API:",
|
||||
"title": "Puerto"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Aplicar compresión al audio (reduce la diferencia entre las partes más fuertes y más suaves de una pista para que tenga un nivel más consistente)",
|
||||
"name": "Compresor de audio"
|
||||
},
|
||||
"blur-nav-bar": {
|
||||
"description": "Hace que la barra de navegación sea transparente y borrosa",
|
||||
"description": "Hace que la barra de navegación se vea transparente y borrosa",
|
||||
"name": "Desenfocar barra de navegación"
|
||||
},
|
||||
"bypass-age-restrictions": {
|
||||
"description": "Saltar la verificación de edad de YouTube",
|
||||
"name": "Saltar las restricciones de edad"
|
||||
"description": "Saltarse la verificación de edad de YouTube",
|
||||
"name": "Saltarse las restricciones de edad"
|
||||
},
|
||||
"captions-selector": {
|
||||
"description": "Selector de subtítulos para pistas de audio de YouTube Music",
|
||||
@ -288,17 +350,17 @@
|
||||
"name": "Selector de subtítulos",
|
||||
"prompt": {
|
||||
"selector": {
|
||||
"label": "Idioma actual: {{language}}",
|
||||
"label": "Idioma actual de los subtítulos: {{language}}",
|
||||
"none": "Ninguno",
|
||||
"title": "Seleccionar idioma de los subtítulos"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"title": "Abra el selector de subtítulos"
|
||||
"title": "Abrir el selector de subtítulos"
|
||||
}
|
||||
},
|
||||
"compact-sidebar": {
|
||||
"description": "Poner siempre la barra lateral en modo compacto",
|
||||
"description": "Establecer siempre la barra lateral en modo compacto",
|
||||
"name": "Barra lateral compacta"
|
||||
},
|
||||
"crossfade": {
|
||||
@ -310,16 +372,16 @@
|
||||
"prompt": {
|
||||
"options": {
|
||||
"multi-input": {
|
||||
"fade-in-duration": "Duración del fundido (ms)",
|
||||
"fade-in-duration": "Duración del fundido de entrada (ms)",
|
||||
"fade-out-duration": "Duración del fundido de salida (ms)",
|
||||
"fade-scaling": {
|
||||
"label": "Escala de fundido",
|
||||
"label": "Escala del fundido",
|
||||
"linear": "Lineal",
|
||||
"logarithmic": "Logarítmico"
|
||||
},
|
||||
"seconds-before-end": "Crossfade N segundos antes del final"
|
||||
"seconds-before-end": "Activar Crossfade N segundos antes del final"
|
||||
},
|
||||
"title": "Opciones de crossfade"
|
||||
"title": "Opciones de Crossfade"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -348,7 +410,7 @@
|
||||
"play-on-youtube-music": "Reproducir en YouTube Music",
|
||||
"set-inactivity-timeout": "Establecer tiempo de inactividad"
|
||||
},
|
||||
"name": "Estado de actividad de Discord",
|
||||
"name": "Discord Rich Presence",
|
||||
"prompt": {
|
||||
"set-inactivity-timeout": {
|
||||
"label": "Introduzca el tiempo de inactividad en segundos:",
|
||||
@ -371,7 +433,7 @@
|
||||
"ok": "OK"
|
||||
},
|
||||
"detail": "({{playlistSize}} canciones)",
|
||||
"message": "Descargar Playlist {{playlistTitle}}",
|
||||
"message": "Descargando Playlist {{playlistTitle}}",
|
||||
"title": "Descarga iniciada"
|
||||
}
|
||||
},
|
||||
@ -383,30 +445,45 @@
|
||||
"download-progress": "Descarga: {{percent}}%",
|
||||
"downloading": "Descargando…",
|
||||
"downloading-counter": "Descargando {{current}}/{{total}}…",
|
||||
"downloading-playlist": "Descargar lista de reproducción \"{{playlistTitle}}\" - {{playlistSize}} canciones ({{playlistId}})",
|
||||
"downloading-playlist": "Descargando lista de reproducción \"{{playlistTitle}}\" - {{playlistSize}} canciones ({{playlistId}})",
|
||||
"error-while-downloading": "Error al descargar \"{{author}} - {{title}}\": {{error}}",
|
||||
"folder-already-exists": "La carpeta {{playlistFolder}} ya existe",
|
||||
"getting-playlist-info": "Obteniendo información de la lista de reproducción…",
|
||||
"loading": "Cargando…",
|
||||
"playlist-has-only-one-song": "La lista de reproducción sólo tiene un elemento, descárgala directamente",
|
||||
"playlist-id-not-found": "No se ha encontrado el ID de la lista de reproducción",
|
||||
"playlist-has-only-one-song": "La lista de reproducción sólo tiene un elemento, descargándolo directamente",
|
||||
"playlist-id-not-found": "No se ha encontrado la ID de la lista de reproducción",
|
||||
"playlist-is-empty": "La lista de reproducción está vacía",
|
||||
"playlist-is-mix-or-private": "Error obteniendo información de la lista de reproducción: asegúrese de que no es una lista privada o \"Mixed for you\"\n\n{{error}}",
|
||||
"playlist-is-mix-or-private": "Error obteniendo la información de la lista de reproducción: asegúrese de que no es una lista privada o \"Mixed for you\"\n\n{{error}}",
|
||||
"preparing-file": "Preparando archivo…",
|
||||
"saving": "Guardando…",
|
||||
"trying-to-get-playlist-id": "Intentando obtener el ID de la lista de reproducción: {{playlistId}}",
|
||||
"trying-to-get-playlist-id": "Intentando obtener la ID de la lista de reproducción: {{playlistId}}",
|
||||
"video-id-not-found": "Video no encontrado",
|
||||
"writing-id3": "Escribiendo las etiquetas ID3…"
|
||||
}
|
||||
},
|
||||
"description": "Descarga MP3 / audio fuente directamente desde la interfaz",
|
||||
"description": "Descarga audio MP3 / fuente directamente desde la interfaz",
|
||||
"menu": {
|
||||
"choose-download-folder": "Elija la carpeta de descarga",
|
||||
"download-finish-settings": {
|
||||
"label": "Descargar al finalizar",
|
||||
"prompt": {
|
||||
"last-percent": "Después de x porcentaje",
|
||||
"last-seconds": "Últimos x segundos",
|
||||
"title": "Configurar cuándo descargar"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "Avanzado",
|
||||
"enabled": "Habilitado",
|
||||
"mode": "Modo de tiempo",
|
||||
"percent": "Porcentaje",
|
||||
"seconds": "Segundos"
|
||||
}
|
||||
},
|
||||
"download-playlist": "Descargar lista de reproducción",
|
||||
"presets": "Preajustes",
|
||||
"presets": "Ajustes preestablecidos",
|
||||
"skip-existing": "Saltar archivos existentes"
|
||||
},
|
||||
"name": "Descargador",
|
||||
"name": "Gestor de descargas",
|
||||
"renderer": {
|
||||
"can-not-update-progress": "No se puede actualizar el progreso"
|
||||
},
|
||||
@ -414,8 +491,20 @@
|
||||
"button": "Descargar"
|
||||
}
|
||||
},
|
||||
"equalizer": {
|
||||
"description": "Añade un ecualizador al reproductor",
|
||||
"menu": {
|
||||
"presets": {
|
||||
"label": "Ajustes preestablecidos",
|
||||
"list": {
|
||||
"bass-booster": "Amplificador de graves"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Ecualizador"
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "Hace que el control deslizante de volumen sea exponencial para que sea más fácil seleccionar volúmenes más bajos.",
|
||||
"description": "Hace que la barra de volumen sea exponencial para que sea más fácil seleccionar volúmenes más bajos.",
|
||||
"name": "Volumen exponencial"
|
||||
},
|
||||
"in-app-menu": {
|
||||
@ -430,19 +519,19 @@
|
||||
"name": "Lumia Stream [Beta]"
|
||||
},
|
||||
"lyrics-genius": {
|
||||
"description": "Añade el soporte para las letras para la mayoría de las canciones",
|
||||
"description": "Añade soporte para letras para la mayoría de las canciones",
|
||||
"menu": {
|
||||
"romanized-lyrics": "Letras Romanizadas"
|
||||
},
|
||||
"name": "Lyrics Genius",
|
||||
"name": "Letras Genius",
|
||||
"renderer": {
|
||||
"fetched-lyrics": "Letras recuperadas de Genius"
|
||||
"fetched-lyrics": "Letras obtenidas de Genius"
|
||||
}
|
||||
},
|
||||
"music-together": {
|
||||
"description": "Comparte una lista de reproducción con los demás. Cuando el anfitrión reproduzca una canción, todos los demás escucharán la misma",
|
||||
"dialog": {
|
||||
"enter-host": "Introduzca el ID del host"
|
||||
"enter-host": "Introduzca la ID del host"
|
||||
},
|
||||
"internal": {
|
||||
"save": "Guardar",
|
||||
@ -450,7 +539,7 @@
|
||||
"unknown-user": "Usuario desconocido"
|
||||
},
|
||||
"menu": {
|
||||
"click-to-copy-id": "Copiar el ID del host",
|
||||
"click-to-copy-id": "Copiar la ID del host",
|
||||
"close": "Cerrar Music Together",
|
||||
"connected-users": "Usuarios conectados",
|
||||
"disconnect": "Desactivar Music Together",
|
||||
@ -460,7 +549,7 @@
|
||||
"permission": {
|
||||
"all": "Permite a los invitados controlar la lista de reproducción y el reproductor",
|
||||
"host-only": "Sólo el anfitrión puede controlar la lista de reproducción y el reproductor",
|
||||
"playlist": "Permita que los invitados controlen la lista de reproducción"
|
||||
"playlist": "Permitir que los invitados controlen la lista de reproducción"
|
||||
},
|
||||
"set-permission": "Permiso de control de cambios",
|
||||
"status": {
|
||||
@ -473,11 +562,11 @@
|
||||
"toast": {
|
||||
"add-song-failed": "No se puede añadir la canción",
|
||||
"closed": "Music Together cerrado",
|
||||
"disconnected": "Music Together desconectados",
|
||||
"host-failed": "Fallo el host de Music Together",
|
||||
"id-copied": "ID del host copiado en el portapapeles",
|
||||
"id-copy-failed": "No se ha podido copiar el ID del host en el portapapeles",
|
||||
"join-failed": "Fallo en la unión a Music Together",
|
||||
"disconnected": "Music Together desconectado",
|
||||
"host-failed": "Fallo al hostear Music Together",
|
||||
"id-copied": "ID del host copiada al portapapeles",
|
||||
"id-copy-failed": "No se ha podido copiar la ID del host al portapapeles",
|
||||
"join-failed": "Fallo al unirse a Music Together",
|
||||
"joined": "Unido a Music Together",
|
||||
"permission-changed": "Permiso de Music Together cambiado a \"{{permission}}\"",
|
||||
"remove-song-failed": "Error al eliminar la canción",
|
||||
@ -512,7 +601,7 @@
|
||||
"name": "Notificaciones"
|
||||
},
|
||||
"picture-in-picture": {
|
||||
"description": "Permite cambiar la aplicación al modo de imagen en imagen",
|
||||
"description": "Permite cambiar la aplicación al modo picture-in-picture",
|
||||
"menu": {
|
||||
"always-on-top": "Siempre encima",
|
||||
"hotkey": {
|
||||
@ -521,17 +610,17 @@
|
||||
"keybind-options": {
|
||||
"hotkey": "Tecla de acceso rápido"
|
||||
},
|
||||
"label": "Elige una tecla de acceso rápido para activar la función de imagen en imagen",
|
||||
"title": "Tecla de acceso directo a imagen en imagen"
|
||||
"label": "Elige una tecla de acceso rápido para activar la función picture-in-picture",
|
||||
"title": "Tecla de acceso directo a picture-in-picture"
|
||||
}
|
||||
},
|
||||
"save-window-position": "Guardar la posición de la ventana",
|
||||
"save-window-size": "Guardar tamaño de la ventana",
|
||||
"use-native-pip": "Utilizar \"Dos imágenes a la vez\" PiP nativo del navegador"
|
||||
"use-native-pip": "Utilizar PiP nativo del navegador"
|
||||
},
|
||||
"name": "Imagen en imagen",
|
||||
"name": "Picture-in-picture",
|
||||
"templates": {
|
||||
"button": "Imagen en imagen"
|
||||
"button": "Picture-in-picture"
|
||||
}
|
||||
},
|
||||
"playback-speed": {
|
||||
@ -542,7 +631,7 @@
|
||||
}
|
||||
},
|
||||
"precise-volume": {
|
||||
"description": "Controla el volumen de manera precisa utilizando la rueda del ratón/teclas de acceso rápido, con una interfaz personalizada y pasos de volumen personalizables",
|
||||
"description": "Controla el volumen de manera precisa utilizando la rueda del ratón/teclas de acceso rápido, con una interfaz personalizada y niveles de volumen personalizables",
|
||||
"menu": {
|
||||
"arrows-shortcuts": "Controles de teclas de flechas locales",
|
||||
"custom-volume-steps": "Establecer niveles de volumen personalizados",
|
||||
@ -559,7 +648,7 @@
|
||||
"title": "Combinaciones de teclas para el volumen"
|
||||
},
|
||||
"volume-steps": {
|
||||
"label": "Escoge los pasos de aumento o disminución del volumen",
|
||||
"label": "Escoge los niveles de aumento o disminución del volumen",
|
||||
"title": "Niveles de volumen"
|
||||
}
|
||||
}
|
||||
@ -579,6 +668,14 @@
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "Añadir soporte para scrobbling (last.fm, Listenbrainz, etc.)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "Error al autenticar con Last.fm\nOcultar la ventana emergente hasta el próximo reinicio.",
|
||||
"title": "Error de autenticación"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "Ajustes de la API de Last.fm"
|
||||
@ -586,6 +683,7 @@
|
||||
"listenbrainz": {
|
||||
"token": "Introduzca el token de usuario de ListenBrainz"
|
||||
},
|
||||
"scrobble-alternative-title": "Usar títulos alternativos",
|
||||
"scrobble-other-media": "Scrobble en otros medios"
|
||||
},
|
||||
"name": "Scrobbler",
|
||||
@ -603,7 +701,7 @@
|
||||
}
|
||||
},
|
||||
"shortcuts": {
|
||||
"description": "Permite configurar teclas de acceso rápido globales para la reproducción (reproducir/pausa/siguiente/anterior) y desactivar la OSD multimedia anulando las teclas multimedia, activar Ctrl/CMD + F para buscar, activar la compatibilidad con MPRIS de Linux para las teclas multimedia y teclas de acceso rápido personalizadas para usuarios avanzados",
|
||||
"description": "Permite configurar teclas de acceso rápido globales para la reproducción (reproducir/pausa/siguiente/anterior) y desactivar el OSD multimedia anulando las teclas multimedia, activar Ctrl/CMD + F para buscar, activar la compatibilidad con MPRIS de Linux para las teclas multimedia y teclas de acceso rápido personalizadas para usuarios avanzados",
|
||||
"menu": {
|
||||
"override-media-keys": "Anular teclas de medios",
|
||||
"set-keybinds": "Configurar controles globales de canciones"
|
||||
@ -633,26 +731,91 @@
|
||||
"description": "Salta automáticamente las partes no musicales como la introducción/final o secciones de videos musicales donde la canción no está sonando",
|
||||
"name": "SponsorBlock"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "Proporciona letras de canciones sincronizadas, utilizando proveedores como LRClib.",
|
||||
"errors": {
|
||||
"fetch": "⚠️\tHa ocurrido un error al obtener la letra.\n\tPor favor, inténtalo de nuevo más tarde.",
|
||||
"not-found": "⚠️ No se ha encontrado ninguna letra para esta canción."
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "Carácter predeterminado entre letras",
|
||||
"tooltip": "Elige el carácter predeterminado que se utilizará para el espacio entre letras"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "Efecto de la línea",
|
||||
"submenu": {
|
||||
"fancy": {
|
||||
"label": "Elegante",
|
||||
"tooltip": "Usar efectos grandes, similares a los de una aplicación, en la línea actual"
|
||||
},
|
||||
"focus": {
|
||||
"label": "Enfoque",
|
||||
"tooltip": "Mostrar solo la línea actual en blanco"
|
||||
},
|
||||
"offset": {
|
||||
"label": "Desplazamiento",
|
||||
"tooltip": "Desplazamiento a la derecha de la línea actual"
|
||||
},
|
||||
"scale": {
|
||||
"label": "Escala",
|
||||
"tooltip": "Escalar la línea actual"
|
||||
}
|
||||
},
|
||||
"tooltip": "Elige el efecto que deseas aplicar a la línea actual"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "Haz que la letra esté perfectamente sincronizada",
|
||||
"tooltip": "Calcular al milisegundo la visualización de la siguiente línea (puede tener un pequeño impacto en el rendimiento)"
|
||||
},
|
||||
"romanization": {
|
||||
"label": "Romanizar letras",
|
||||
"tooltip": "Si la letra está en un idioma diferente, intenta mostrar una versión en latín."
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "Mostrar la letra aunque sea inexacta",
|
||||
"tooltip": "Si no se encuentra la canción, el plugin vuelve a intentarlo con una búsqueda diferente.\nEl resultado del segundo intento puede no ser exacto."
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "Visualización del código de tiempo",
|
||||
"tooltip": "Mostrar los códigos de tiempo junto a la letra"
|
||||
}
|
||||
},
|
||||
"name": "Letras sincronizadas",
|
||||
"refetch-btn": {
|
||||
"fetching": "Obteniendo...",
|
||||
"normal": "Volver a buscar letras"
|
||||
},
|
||||
"warnings": {
|
||||
"duration-mismatch": "⚠️ - La letra puede estar desincronizada debido a un desajuste en la duración.",
|
||||
"inexact": "⚠️ - La letra de esta canción puede no ser exacta",
|
||||
"instrumental": "⚠️ - Se trata de una canción instrumental"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "Controla la reproducción desde la barra de tareas de Windows",
|
||||
"name": "Control de medios de la barra de tareas"
|
||||
"name": "Control de medios desde la barra de tareas"
|
||||
},
|
||||
"touchbar": {
|
||||
"description": "Añade un widget TouchBar para los usuarios de macOS",
|
||||
"name": "TouchBar"
|
||||
},
|
||||
"tuna-obs": {
|
||||
"description": "Integración con el complemento Tuna de OBS",
|
||||
"description": "Integración con el plugin Tuna de OBS",
|
||||
"name": "Tuna OBS"
|
||||
},
|
||||
"unobtrusive-player": {
|
||||
"description": "Evita que el reproductor aparezca al reproducir una canción",
|
||||
"name": "Jugador discreto"
|
||||
},
|
||||
"video-toggle": {
|
||||
"description": "Añade un botón para cambiar entre el modo Vídeo/Canción. también puede eliminar opcionalmente toda la pestaña de vídeo",
|
||||
"description": "Añade un botón para cambiar entre el modo Vídeo/Canción. También puede eliminar opcionalmente toda la pestaña de vídeo",
|
||||
"menu": {
|
||||
"align": {
|
||||
"label": "Alineación",
|
||||
"submenu": {
|
||||
"left": "Izquierda",
|
||||
"middle": "Medio",
|
||||
"middle": "Centro",
|
||||
"right": "Derecha"
|
||||
}
|
||||
},
|
||||
|
||||
224
src/i18n/resources/et.json
Normal file
@ -0,0 +1,224 @@
|
||||
{
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "{{pluginName}}::{{contextName}} lisamooduli käivitamine ei õnnestunud",
|
||||
"executed-at-ms": "{{pluginName}}::{{contextName}} lisamoodul käivitus {{ms}} millisekundiga",
|
||||
"initialize-failed": "„{{pluginName}}“ lisamooduli töö alustamine ei õnnestunud",
|
||||
"load-all": "Laadime kõiki lisamooduleid",
|
||||
"load-failed": "„{{pluginName}}“ lisamooduli laadimine ei õnnestunud",
|
||||
"loaded": "„{{pluginName}}“ lisamoodul on laaditud",
|
||||
"unload-failed": "„{{pluginName}}“ lisamooduli mälust eemaldamine ei õnnestunud",
|
||||
"unloaded": "„{{pluginName}}“ lisamoodul on mälust eemaldatud"
|
||||
}
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"code": "et",
|
||||
"local-name": "Eesti",
|
||||
"name": "Estonian"
|
||||
},
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "Laadimine lõppes, arendaja tarvikud on avatud"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "i18n on laaditud"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "„{{command}}“ käsk on vastu võetud"
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "CSS faili „{{cssFile}}“ pole olemas, seega eirame eelistust"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "Menüü on peidetud ja „Alt“ klahviga saad ta nähtavaks (rakenduse-siseses menüüs „Esc“ klahviga)",
|
||||
"message": "Menüü peitmine on sisselülitatud",
|
||||
"title": "Menüü peitmine on sisselülitatud"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "Hiljem",
|
||||
"restart-now": "Taaskäivita kohe"
|
||||
},
|
||||
"detail": "„{{pluginName}}“ lisamooduli sisselülitamine eeldab rakenduse taaskäivitamist",
|
||||
"message": "„{{pluginName}}“ lisamoodul eeldab rakenduse taaskäivitamist",
|
||||
"title": "Palun käivita rakendus uuesti"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "Välju",
|
||||
"relaunch": "Käivita uuesti",
|
||||
"wait": "Oota"
|
||||
},
|
||||
"detail": "Vabandame ebamugavuste pärast! Palun vali kuidas jätkata:",
|
||||
"message": "Rakendus ei vasta ega reageeri",
|
||||
"title": "Aken ei vasta ega reageeri"
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"disable": "Lülita uuendused välja",
|
||||
"download": "Laadi alla",
|
||||
"ok": "Sobib"
|
||||
},
|
||||
"detail": "Saadaval on uus versioon, ning seda saad alla laadida siit {{downloadLink}}",
|
||||
"message": "Uus versioon on saadaval"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"navigation": {
|
||||
"label": "Liikumine",
|
||||
"submenu": {
|
||||
"copy-current-url": "Kopeeri esitamisel oleva pala URL",
|
||||
"go-back": "Mine tagasi",
|
||||
"go-forward": "Mine edasi",
|
||||
"quit": "Välju",
|
||||
"restart": "Käivita rakendus uuesti"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"label": "Seadistused",
|
||||
"submenu": {
|
||||
"advanced-options": {
|
||||
"label": "Lisaseadistused",
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "Rakenduse käivitamisel lähtesta puhverdatud andmed",
|
||||
"disable-hardware-acceleration": "Lülita raudvaraline kiirendamine välja",
|
||||
"edit-config-json": "Muuda config.json faili"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"label": "Lisamoodulid",
|
||||
"new": "UUS"
|
||||
},
|
||||
"view": {
|
||||
"submenu": {
|
||||
"zoom-in": "Suumi sisse",
|
||||
"zoom-out": "Suumi välja"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"next": "Edasi",
|
||||
"play-pause": "Esita/Peata esitus",
|
||||
"previous": "Eelmine",
|
||||
"quit": "Välju",
|
||||
"restart": "Käivita rakendus uuesti",
|
||||
"show": "Näita akent",
|
||||
"tooltip": {
|
||||
"default": "YouTube Music",
|
||||
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "Reklaami esitamisel summutatakse heli ja keritakse edasi 16-kordse kiirusega",
|
||||
"name": "Reklaamikiirendaja"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "Blokeeri kõik reklaamid ja jälitajad",
|
||||
"menu": {
|
||||
"blocker": "Blokeerijad"
|
||||
},
|
||||
"name": "Reklaamiblokeerija"
|
||||
},
|
||||
"ambient-mode": {
|
||||
"menu": {
|
||||
"opacity": {
|
||||
"submenu": {
|
||||
"percent": "{{opacity}}%"
|
||||
}
|
||||
},
|
||||
"quality": {
|
||||
"label": "Kvaliteet",
|
||||
"submenu": {
|
||||
"pixels": "{{quality}} pikslit"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"blur-nav-bar": {
|
||||
"description": "Muudab navigatsiooniriba läbipaistavaks ja hägusaks",
|
||||
"name": "Hägus navigatsiooniriba"
|
||||
},
|
||||
"lyrics-genius": {
|
||||
"description": "Lisa enamustele lugudele laulusõnad",
|
||||
"menu": {
|
||||
"romanized-lyrics": "Latiniseeritud laulusõnad"
|
||||
},
|
||||
"name": "Lyrics Genius",
|
||||
"renderer": {
|
||||
"fetched-lyrics": "Leidsime Geeniuse jaoks ühed laulusõnad"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"name": "Liikumine"
|
||||
},
|
||||
"no-google-login": {
|
||||
"description": "Eemalda kasutajaliidesest Google'i sisselogimisnupud",
|
||||
"name": "Elu ilma Google'i sisselogimiseta"
|
||||
},
|
||||
"quality-changer": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"quality-changer": {
|
||||
"detail": "Praegune kvaliteet: {{quality}}",
|
||||
"message": "Vali video kvaliteet:",
|
||||
"title": "Videokvaliteedi valik"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Võimaldab muuta video kvaliteeti nupust, mis asub video ülekattes",
|
||||
"name": "Videokvaliteedi muutja"
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "Lisa kraasimise tugi (last.fm, Listenbrainz, jne)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "Last.fm'i autentimine ei õnnestunud\nPeida hüpikaken järgmise taaskäivituseni.",
|
||||
"title": "Autentimine ei õnnestunud"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "Last.fm API seadistused"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": "Sisesta ListenBrainz'i kasutaja tunnusluba"
|
||||
},
|
||||
"scrobble-other-media": "Kraasi muud meediat"
|
||||
},
|
||||
"name": "Kraasija",
|
||||
"prompt": {
|
||||
"lastfm": {
|
||||
"api-key": "Last.fm API võti",
|
||||
"api-secret": "Last.fm API saladus"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": {
|
||||
"label": "Sisesta oma ListenBrainz'i tunnusluba:",
|
||||
"title": "ListenBrainz'i tunnusluba"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"menu": {
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"tooltip": "Kui lugu ei leidu, siis lisamoodul üritab uut otsingut teistsuguse päringuga.\nTeise katse puhul tulemused ei pruugi olla väga täpsed."
|
||||
}
|
||||
}
|
||||
},
|
||||
"tuna-obs": {
|
||||
"description": "Lõimimine OBSi Tuna lisamooduliga"
|
||||
}
|
||||
}
|
||||
}
|
||||
845
src/i18n/resources/fa.json
Normal file
@ -0,0 +1,845 @@
|
||||
{
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "اجرای افزونه {{pluginName}}::{{contextName}} با خطا مواجه شد",
|
||||
"executed-at-ms": "افزونه {{pluginName}}::{{contextName}} در {{ms}} میلیثانیه اجرا شد",
|
||||
"initialize-failed": "افزونه \"{{pluginName}}\" با خطا در حین مقداردهی اولیه مواجه شد",
|
||||
"load-all": "در حال بارگذاری تمامی افزونهها",
|
||||
"load-failed": "افزونه \"{{pluginName}}\" بارگیری نشد",
|
||||
"loaded": "افزونه \"{{pluginName}}\" بارگیری شد",
|
||||
"unload-failed": "افزونه \"{{pluginName}}\" بارگذاری نشد",
|
||||
"unloaded": "افزونه \"{{pluginName}}\" بارگذاری شد"
|
||||
}
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"code": "fa",
|
||||
"local-name": "فارسی",
|
||||
"name": "Persian"
|
||||
},
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "بارگذاری کامل شد. DevTools باز شد"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "i18n بارگذاری شد"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "دریافت فرمان از طریق پروتکل: \"{{command}}\""
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "فایل CSS \"{{cssFile}}\" وجود ندارد، نادیده گرفته شد"
|
||||
},
|
||||
"unresponsive": {
|
||||
"details": "خطای عدم پاسخگویی!\n{{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "پاکسازی حافظه کش برنامه"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "پنجره تلاش کرد خارج از صفحه نمایش داده شود، اندازه پنجره={{windowSize}}، اندازه نمایشگر={{displaySize}}، موقعیت={{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "منو مخفی است، از 'Alt' برای نمایش آن استفاده کنید (یا 'Escape' اگر از منوی داخل برنامه استفاده میکنید)",
|
||||
"message": "پنهانسازی منو فعال است",
|
||||
"title": "پنهان کردن منو فعال شد"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "بعداً",
|
||||
"restart-now": "هماکنون راهاندازی مجدد کنید"
|
||||
},
|
||||
"detail": "افزونه \"{{pluginName}}\" برای اعمال تغییرات نیاز به راهاندازی مجدد دارد",
|
||||
"message": "\"{{pluginName}}\" نیاز به راهاندازی مجدد دارد",
|
||||
"title": "نیاز به راهاندازی مجدد"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "خروج",
|
||||
"relaunch": "راهاندازی مجدد",
|
||||
"wait": "منتظر بمانید"
|
||||
},
|
||||
"detail": "از بابت این مشکل متأسفیم! لطفاً انتخاب کنید که چه کاری انجام دهید:",
|
||||
"message": "برنامه پاسخی نمیدهد",
|
||||
"title": "پنجره بدون پاسخ"
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"disable": "غیرفعال کردن بهروزرسانیها",
|
||||
"download": "دانلود",
|
||||
"ok": "تأیید"
|
||||
},
|
||||
"detail": "نسخه جدیدی در دسترس است و میتوان آن را از {{downloadLink}} دانلود کرد",
|
||||
"message": "نسخه جدیدی در دسترس است",
|
||||
"title": "بهروزرسانی موجود است"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"about": "درباره",
|
||||
"navigation": {
|
||||
"label": "کنترلهای رابط",
|
||||
"submenu": {
|
||||
"copy-current-url": "کپی کردن لینک صفحه فعلی",
|
||||
"go-back": "صفحه قبل",
|
||||
"go-forward": "صفحه بعدی",
|
||||
"quit": "خروج از برنامه",
|
||||
"restart": "راهاندازی مجدد برنامه"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"label": "گزینهها",
|
||||
"submenu": {
|
||||
"advanced-options": {
|
||||
"label": "گزینههای پیشرفته",
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "ریست کردن حافظه کش برنامه هنگام شروع",
|
||||
"disable-hardware-acceleration": "غیرفعال کردن شتاب سختافزاری",
|
||||
"edit-config-json": "config.json ویرایش",
|
||||
"override-user-agent": "User-Agent تغییر",
|
||||
"restart-on-config-changes": "راهاندازی مجدد در صورت تغییرات در پیکربندی",
|
||||
"set-proxy": {
|
||||
"label": "تنظیم پراکسی",
|
||||
"prompt": {
|
||||
"label": "آدرس پراکسی را وارد کنید: (برای غیرفعال کردن، خالی بگذارید)",
|
||||
"placeholder": "مثال: SOCKS5://127.0.0.1:9999",
|
||||
"title": "تنظیم پراکسی"
|
||||
}
|
||||
},
|
||||
"toggle-dev-tools": "DevTools باز کردن"
|
||||
}
|
||||
},
|
||||
"always-on-top": "همیشه در بالا",
|
||||
"auto-update": "بهروزرسانی خودکار",
|
||||
"hide-menu": {
|
||||
"dialog": {
|
||||
"message": "منو در اجرای بعدی مخفی خواهد بود، از [Alt] برای نمایش استفاده کنید (یا [`] اگر از منوی داخل برنامه استفاده میکنید)",
|
||||
"title": "پنهانسازی منو فعال شد"
|
||||
},
|
||||
"label": "پنهان کردن منو"
|
||||
},
|
||||
"language": {
|
||||
"dialog": {
|
||||
"message": "زبان پس از راهاندازی مجدد تغییر خواهد کرد",
|
||||
"title": "زبان تغییر کرد"
|
||||
},
|
||||
"label": "زبان",
|
||||
"submenu": {
|
||||
"to-help-translate": "میخواهید به ترجمه کمک کنید؟ اینجا کلیک کنید"
|
||||
}
|
||||
},
|
||||
"resume-on-start": "ادامه آخرین آهنگ هنگام شروع برنامه",
|
||||
"single-instance-lock": "قفل تنها یک نمونه",
|
||||
"start-at-login": "شروع هنگام ورود",
|
||||
"starting-page": {
|
||||
"label": "صفحه شروع",
|
||||
"unset": "لغو تنظیم"
|
||||
},
|
||||
"tray": {
|
||||
"label": "نوار",
|
||||
"submenu": {
|
||||
"disabled": "غیرفعال",
|
||||
"enabled-and-hide-app": "فعال و پنهان کردن برنامه",
|
||||
"enabled-and-show-app": "فعال و نمایش برنامه",
|
||||
"play-pause-on-click": "پخش/توقف با کلیک"
|
||||
}
|
||||
},
|
||||
"visual-tweaks": {
|
||||
"label": "تغییرات ظاهری",
|
||||
"submenu": {
|
||||
"like-buttons": {
|
||||
"default": "پیشفرض",
|
||||
"force-show": "اجبار به نمایش",
|
||||
"hide": "پنهان کردن",
|
||||
"label": "دکمههای پسندیدن"
|
||||
},
|
||||
"remove-upgrade-button": "حذف دکمه ارتقا",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "لغو",
|
||||
"remove": "حذف"
|
||||
},
|
||||
"remove-theme": "آیا مطمئن هستید که میخواهید تم سفارشی را حذف کنید؟",
|
||||
"remove-theme-message": "این کار تم سفارشی را حذف خواهد کرد"
|
||||
},
|
||||
"label": "تم",
|
||||
"submenu": {
|
||||
"import-css-file": "سفارشی CSS وارد کردن فایل",
|
||||
"no-theme": "بدون تم"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"enabled": "فعال/غیرفعال کردن",
|
||||
"label": "افزونهها",
|
||||
"new": "جدید"
|
||||
},
|
||||
"view": {
|
||||
"label": "مشاهده",
|
||||
"submenu": {
|
||||
"force-reload": "اجبار به بارگذاری مجدد",
|
||||
"reload": "بارگذاری مجدد",
|
||||
"reset-zoom": "اندازه واقعی",
|
||||
"toggle-fullscreen": "تغییر به تمام صفحه",
|
||||
"zoom-in": "بزرگنمایی",
|
||||
"zoom-out": "کوچکنمایی"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"next": "بعدی",
|
||||
"play-pause": "پخش/توقف",
|
||||
"previous": "قبلی",
|
||||
"quit": "خروج",
|
||||
"restart": "راهاندازی مجدد برنامه",
|
||||
"show": "نمایش پنجره",
|
||||
"tooltip": {
|
||||
"default": "یوتیوب موسیقی",
|
||||
"with-song-info": "یوتیوب موسیقی: {{artist}} - {{title}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "اگر تبلیغ پخش شود، صدا را بیصدا کرده و سرعت پخش را به 16 برابر افزایش میدهد",
|
||||
"name": "سرعتدهی به تبلیغ"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "مسدود کردن تمامی تبلیغات و ردیابیها از ابتدا",
|
||||
"menu": {
|
||||
"blocker": "مسدودکننده"
|
||||
},
|
||||
"name": "مسدودکننده تبلیغات"
|
||||
},
|
||||
"album-actions": {
|
||||
"description": "اضافه کردن دکمههای عدم پسندیدن، پسندیدن و لغو پسندیدن برای اعمال این تغییرات به تمامی آهنگهای یک فهرست پخش یا آلبوم",
|
||||
"name": "عملیات آلبوم"
|
||||
},
|
||||
"album-color-theme": {
|
||||
"description": "اعمال یک تم پویا و جلوههای بصری بر اساس پالت رنگ آلبوم",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "نسبت ترکیب رنگ",
|
||||
"submenu": {
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "تم رنگ آلبوم"
|
||||
},
|
||||
"ambient-mode": {
|
||||
"description": "اعمال یک اثر نوری با پخش رنگهای ملایم از ویدئو به پسزمینه صفحه نمایش شما",
|
||||
"menu": {
|
||||
"blur-amount": {
|
||||
"label": "میزان تاری",
|
||||
"submenu": {
|
||||
"pixels": "{{blurAmount}} پیکسل"
|
||||
}
|
||||
},
|
||||
"buffer": {
|
||||
"label": "بافر",
|
||||
"submenu": {
|
||||
"buffer": "{{buffer}}"
|
||||
}
|
||||
},
|
||||
"opacity": {
|
||||
"label": "شفافیت",
|
||||
"submenu": {
|
||||
"percent": "{{opacity}}%"
|
||||
}
|
||||
},
|
||||
"quality": {
|
||||
"label": "کیفیت",
|
||||
"submenu": {
|
||||
"pixels": "{{quality}} پیکسل"
|
||||
}
|
||||
},
|
||||
"size": {
|
||||
"label": "اندازه",
|
||||
"submenu": {
|
||||
"percent": "{{size}}%"
|
||||
}
|
||||
},
|
||||
"smoothness-transition": {
|
||||
"label": "انتقال نرمی",
|
||||
"submenu": {
|
||||
"during": "در طول {{interpolationTime}} ثانیه"
|
||||
}
|
||||
},
|
||||
"use-fullscreen": {
|
||||
"label": "استفاده از تمامصفحه"
|
||||
}
|
||||
},
|
||||
"name": "حالت محیطی"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "حالا ویجت Amuse از YouTube Music هم پشتیبانی میکنه! (توسط 6K Labs)",
|
||||
"name": "Amuse",
|
||||
"response": {
|
||||
"query": "سرور Amuse فعال است. برای دریافت اطلاعات آهنگ، از آدرس /query استفاده کنید."
|
||||
}
|
||||
},
|
||||
"api-server": {
|
||||
"description": "برای کنترل پخشکننده API افزودن یک سرور",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "اجازه",
|
||||
"deny": "رد کردن"
|
||||
},
|
||||
"message": "اجازه دادن به {{ID}} ({{origin}}) برای دسترسی به API؟",
|
||||
"title": "درخواست مجوز API"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "استراتژی مجوز",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "مجوز در اولین درخواست"
|
||||
},
|
||||
"none": {
|
||||
"label": "بدون نیاز به مجوز"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "نام میزبان"
|
||||
},
|
||||
"port": {
|
||||
"label": "پورت"
|
||||
}
|
||||
},
|
||||
"name": "[بتا]API سرور",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "وارد کنید (مثل 0.0.0.0): API نام میزبان را برای سرور",
|
||||
"title": "نام میزبان"
|
||||
},
|
||||
"port": {
|
||||
"label": "وارد کنید: API پورت را برای سرور",
|
||||
"title": "پورت"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "اعمال فشردهسازی به صدا (کاهش حجم بلندترین بخشهای سیگنال و افزایش حجم بخشهای نرمتر)",
|
||||
"name": "فشردهساز صدا"
|
||||
},
|
||||
"blur-nav-bar": {
|
||||
"description": "شفاف و محو کردن نوار کنترل",
|
||||
"name": "محو کردن نوار کنترل"
|
||||
},
|
||||
"bypass-age-restrictions": {
|
||||
"description": "دور زدن تأیید سن یوتیوب",
|
||||
"name": "دور زدن محدودیتهای سنی"
|
||||
},
|
||||
"captions-selector": {
|
||||
"description": "انتخاب زیرنویس برای آهنگهای یوتیوب موسیقی",
|
||||
"menu": {
|
||||
"autoload": "به طور خودکار انتخاب آخرین زیرنویس استفاده شده",
|
||||
"disable-captions": "بدون زیرنویس به صورت پیشفرض"
|
||||
},
|
||||
"name": "انتخابکننده زیرنویس",
|
||||
"prompt": {
|
||||
"selector": {
|
||||
"label": "زبان زیرنویس فعلی: {{language}}",
|
||||
"none": "هیچکدام",
|
||||
"title": "انتخاب زبان زیرنویس"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"title": "باز کردن انتخابکننده زیرنویس"
|
||||
}
|
||||
},
|
||||
"compact-sidebar": {
|
||||
"description": "همیشه نوار کناری را در حالت فشرده تنظیم کن",
|
||||
"name": "نوار کناری فشرده"
|
||||
},
|
||||
"crossfade": {
|
||||
"description": "تداخل بین آهنگها",
|
||||
"menu": {
|
||||
"advanced": "پیشرفته"
|
||||
},
|
||||
"name": "تداخل [بتا]",
|
||||
"prompt": {
|
||||
"options": {
|
||||
"multi-input": {
|
||||
"fade-in-duration": "مدت زمان ورود تدریجی (میلیثانیه)",
|
||||
"fade-out-duration": "مدت زمان خروج تدریجی (میلیثانیه)",
|
||||
"fade-scaling": {
|
||||
"label": "مقیاسبندی ورود تدریجی",
|
||||
"linear": "خطی",
|
||||
"logarithmic": "لگاریتمی"
|
||||
},
|
||||
"seconds-before-end": "تداخل N ثانیه قبل از پایان"
|
||||
},
|
||||
"title": "گزینههای تداخل"
|
||||
}
|
||||
}
|
||||
},
|
||||
"disable-autoplay": {
|
||||
"description": "شروع آهنگ در حالت \"توقف\"",
|
||||
"menu": {
|
||||
"apply-once": "فقط در شروع اعمال میشود"
|
||||
},
|
||||
"name": "غیرفعال کردن پخش خودکار"
|
||||
},
|
||||
"discord": {
|
||||
"backend": {
|
||||
"already-connected": "تلاش برای برقراری ارتباط با اتصال فعال",
|
||||
"connected": "متصل به دیسکورد",
|
||||
"disconnected": "ارتباط با دیسکورد قطع شد"
|
||||
},
|
||||
"description": "Rich Presence نمایش آنچه گوش میدهید به دوستان با",
|
||||
"menu": {
|
||||
"auto-reconnect": "اتصال خودکار",
|
||||
"clear-activity": "پاک کردن فعالیت",
|
||||
"clear-activity-after-timeout": "حذف فعالیت پس از اتمام زمان تعیینشده",
|
||||
"connected": "اتصال برقرار شد",
|
||||
"disconnected": "اتصال قطع شد",
|
||||
"hide-duration-left": "مخفی کردن مدت زمان باقیمانده",
|
||||
"hide-github-button": "مخفی کردن دکمه لینک گیت هاب",
|
||||
"play-on-youtube-music": "پخش در یوتیوب موزیک",
|
||||
"set-inactivity-timeout": "تنظیم زمان عدم فعالیت"
|
||||
},
|
||||
"name": "Discord Rich Presence",
|
||||
"prompt": {
|
||||
"set-inactivity-timeout": {
|
||||
"label": "محدودیت زمان عدم فعالیت را به ثانیه وارد کنید:",
|
||||
"title": "تنظیم زمان عدم فعالیت"
|
||||
}
|
||||
}
|
||||
},
|
||||
"downloader": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"error": {
|
||||
"buttons": {
|
||||
"ok": "تأیید"
|
||||
},
|
||||
"message": "اوه! متاسفیم، دانلود شکست خورد…",
|
||||
"title": "خطا در دانلود!"
|
||||
},
|
||||
"start-download-playlist": {
|
||||
"buttons": {
|
||||
"ok": "تأیید"
|
||||
},
|
||||
"detail": "({{playlistSize}} آهنگ)",
|
||||
"message": "دانلود فهرست پخش {{playlistTitle}}",
|
||||
"title": "دانلود شروع شد"
|
||||
}
|
||||
},
|
||||
"feedback": {
|
||||
"conversion-progress": "تبدیل: {{percent}}%",
|
||||
"converting": "در حال تبدیل…",
|
||||
"done": "انجام شد: {{filePath}}",
|
||||
"download-info": "در حال دانلود {{artist}} - {{title}} [{{videoId}}",
|
||||
"download-progress": "دانلود: {{percent}}%",
|
||||
"downloading": "در حال دانلود…",
|
||||
"downloading-counter": "در حال دانلود {{current}}/{{total}}…",
|
||||
"downloading-playlist": "در حال دانلود فهرست پخش \"{{playlistTitle}}\" - {{playlistSize}} آهنگ ({{playlistId}})",
|
||||
"error-while-downloading": "خطا در دانلود \"{{author}} - {{title}}\": {{error}}",
|
||||
"folder-already-exists": "پوشه {{playlistFolder}} از قبل وجود دارد",
|
||||
"getting-playlist-info": "در حال دریافت اطلاعات فهرست پخش…",
|
||||
"loading": "در حال بارگذاری…",
|
||||
"playlist-has-only-one-song": "فهرست پخش فقط یک آیتم دارد، به طور مستقیم دانلود میشود",
|
||||
"playlist-id-not-found": "شناسه فهرست پخش یافت نشد",
|
||||
"playlist-is-empty": "فهرست پخش خالی است",
|
||||
"playlist-is-mix-or-private": "خطا در دریافت اطلاعات فهرست پخش: اطمینان حاصل کنید که فهرست پخش خصوصی یا \"مختص شما\" نباشد\n\n{{error}}",
|
||||
"preparing-file": "در حال آمادهسازی فایل…",
|
||||
"saving": "در حال ذخیرهسازی…",
|
||||
"trying-to-get-playlist-id": "تلاش برای دریافت شناسه فهرست پخش: {{playlistId}}",
|
||||
"video-id-not-found": "ویدئو یافت نشد",
|
||||
"writing-id3": "در حال نوشتن تگهای ID3…"
|
||||
}
|
||||
},
|
||||
"description": "دانلود MP3 / صدای منبع به طور مستقیم از رابط",
|
||||
"menu": {
|
||||
"choose-download-folder": "انتخاب پوشه دانلود",
|
||||
"download-finish-settings": {
|
||||
"label": "دانلود پس از پایان",
|
||||
"prompt": {
|
||||
"last-percent": "پس از x درصد",
|
||||
"last-seconds": "آخرین x ثانیه",
|
||||
"title": "پیکربندی زمان دانلود"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "پیشرفته",
|
||||
"enabled": "فعال",
|
||||
"mode": "حالت زمان",
|
||||
"percent": "درصد",
|
||||
"seconds": "ثانیه"
|
||||
}
|
||||
},
|
||||
"download-playlist": "دانلود فهرست پخش",
|
||||
"presets": "پیشتنظیمها",
|
||||
"skip-existing": "رد کردن فایلهای موجود"
|
||||
},
|
||||
"name": "دانلودر",
|
||||
"renderer": {
|
||||
"can-not-update-progress": "امکان بهروزرسانی پیشرفت نیست"
|
||||
},
|
||||
"templates": {
|
||||
"button": "دانلود"
|
||||
}
|
||||
},
|
||||
"equalizer": {
|
||||
"description": "اضافه کردن یک اکولایزر به پخشکننده",
|
||||
"menu": {
|
||||
"presets": {
|
||||
"label": "تنظیمات از پیش تعیین شده",
|
||||
"list": {
|
||||
"bass-booster": "تقویتکننده باس صدا"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "اکولایزر"
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "نوار لغزنده حجم را به صورت نمایی میسازد تا انتخاب حجمهای پایینتر آسانتر شود.",
|
||||
"name": "حجم نمایی"
|
||||
},
|
||||
"in-app-menu": {
|
||||
"description": "منوها را به صورت جذاب، تاریک یا با رنگ آلبوم نمایش میدهد",
|
||||
"menu": {
|
||||
"hide-dom-window-controls": "کنترلهای پنجره DOM را مخفی کن"
|
||||
},
|
||||
"name": "منوی داخل برنامه"
|
||||
},
|
||||
"lumiastream": {
|
||||
"description": "Lumia Stream افزودن پشتیبانی از",
|
||||
"name": "Lumia Stream [بتا]"
|
||||
},
|
||||
"lyrics-genius": {
|
||||
"description": "افزودن متن ترانه پشتیبان برای اکثر ترانه ها",
|
||||
"menu": {
|
||||
"romanized-lyrics": "الفبای لاتین برای آهنگهایی با الفبای شرقی (فینگلیش)"
|
||||
},
|
||||
"name": "Genius متن آهنگ",
|
||||
"renderer": {
|
||||
"fetched-lyrics": "بازیابی شد Genius متن ترانه توسط"
|
||||
}
|
||||
},
|
||||
"music-together": {
|
||||
"description": "اشتراکگذاری فهرست پخش با دیگران. وقتی میزبان آهنگی را پخش میکند، همه بقیه همان آهنگ را میشنوند",
|
||||
"dialog": {
|
||||
"enter-host": "شناسه میزبان را وارد کنید"
|
||||
},
|
||||
"internal": {
|
||||
"save": "ذخیره",
|
||||
"track-source": "منبع آهنگ",
|
||||
"unknown-user": "کاربر ناشناس"
|
||||
},
|
||||
"menu": {
|
||||
"click-to-copy-id": "کپی کردن شناسه میزبان",
|
||||
"close": "بستن Music Together",
|
||||
"connected-users": "کاربران متصل",
|
||||
"disconnect": "قطع اتصال Music Together",
|
||||
"empty-user": "هیچ کاربر متصلی وجود ندارد",
|
||||
"host": "میزبان Music Together",
|
||||
"join": "پیوستن به Music Together",
|
||||
"permission": {
|
||||
"all": "اجازه دادن به مهمانان برای کنترل فهرست پخش و پخشکننده",
|
||||
"host-only": "فقط میزبان میتواند فهرست پخش و پخشکننده را کنترل کند",
|
||||
"playlist": "اجازه دادن به مهمانان برای کنترل فهرست پخش"
|
||||
},
|
||||
"set-permission": "تغییر مجوز کنترل",
|
||||
"status": {
|
||||
"disconnected": "قطع اتصال",
|
||||
"guest": "متصل به عنوان مهمان",
|
||||
"host": "متصل به عنوان میزبان"
|
||||
}
|
||||
},
|
||||
"name": "Music Together [بتا]",
|
||||
"toast": {
|
||||
"add-song-failed": "افزودن آهنگ با شکست مواجه شد",
|
||||
"closed": "بسته شد Music Together",
|
||||
"disconnected": "Music Together قطع اتصال",
|
||||
"host-failed": "با شکست مواجه شد Music Together میزبانی",
|
||||
"id-copied": "شناسه میزبان به کلیپبورد کپی شد",
|
||||
"id-copy-failed": "کپی شناسه میزبان به کلیپبورد با شکست مواجه شد",
|
||||
"join-failed": "با شکست مواجه شد Music Together پیوستن به",
|
||||
"joined": "پیوست Music Together به",
|
||||
"permission-changed": "مجوز Music Together به \"{{permission}}\" تغییر یافت",
|
||||
"remove-song-failed": "حذف آهنگ با شکست مواجه شد",
|
||||
"user-connected": "{{name}} به Music Together پیوست",
|
||||
"user-disconnected": "{{name}} Music Together را ترک کرد"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"description": "بعدی/قبلی به طور مستقیم در رابط یکپارچه شدهاند، مانند مرورگر مورد علاقه شما",
|
||||
"name": "کنترل های رابط"
|
||||
},
|
||||
"no-google-login": {
|
||||
"description": "حذف دکمهها و لینکهای ورود به گوگل از رابط کاربری",
|
||||
"name": "بدون ورود به گوگل"
|
||||
},
|
||||
"notifications": {
|
||||
"description": "نمایش اعلان هنگامی که آهنگی شروع به پخش میکند (اعلانهای تعاملی در ویندوز در دسترس هستند)",
|
||||
"menu": {
|
||||
"interactive": "اعلانهای تعاملی",
|
||||
"interactive-settings": {
|
||||
"label": "تنظیمات تعاملی",
|
||||
"submenu": {
|
||||
"hide-button-text": "مخفی کردن متن دکمه",
|
||||
"refresh-on-play-pause": "تازهسازی در پخش/توقف",
|
||||
"tray-controls": "باز/بسته شدن با کلیک روی آیکون در نوار وظیفه"
|
||||
}
|
||||
},
|
||||
"priority": "اولویت اعلان",
|
||||
"toast-style": "Toast سبک",
|
||||
"unpause-notification": "نمایش اعلان هنگام از سرگیری پخش"
|
||||
},
|
||||
"name": "اعلانها"
|
||||
},
|
||||
"picture-in-picture": {
|
||||
"description": "اجازه میدهد تا برنامه به حالت تصویر در تصویر تغییر کند",
|
||||
"menu": {
|
||||
"always-on-top": "همیشه در بالا",
|
||||
"hotkey": {
|
||||
"label": "کلید میانبر",
|
||||
"prompt": {
|
||||
"keybind-options": {
|
||||
"hotkey": "کلید میانبر"
|
||||
},
|
||||
"label": "یک کلید میانبر انتخاب کنید برای فعال/غیرفعال کردن حالت تصویر در تصویر",
|
||||
"title": "کلید میانبر برای حالت تصویر در تصویر"
|
||||
}
|
||||
},
|
||||
"save-window-position": "ذخیره موقعیت پنجره",
|
||||
"save-window-size": "ذخیره اندازه پنجره",
|
||||
"use-native-pip": "استفاده از حالت تصویر در تصویر اصلی مرورگر"
|
||||
},
|
||||
"name": "تصویر در تصویر",
|
||||
"templates": {
|
||||
"button": "تصویر در تصویر"
|
||||
}
|
||||
},
|
||||
"playback-speed": {
|
||||
"description": "به سرعت گوش بده، به آرامی گوش بده! یک دکمه کشویی برای تنظیم سرعت آهنگ اضافه شد",
|
||||
"name": "سرعت پخش",
|
||||
"templates": {
|
||||
"button": "سرعت"
|
||||
}
|
||||
},
|
||||
"precise-volume": {
|
||||
"description": "کنترل دقیق صدا با استفاده از چرخ موس/میانبرها، همراه با HUD سفارشی و مراحل تنظیم حجم قابل تنظیم",
|
||||
"menu": {
|
||||
"arrows-shortcuts": "میانبرهای کلیدهای فلشی",
|
||||
"custom-volume-steps": "مراحل تنظیم صدای دلخواه",
|
||||
"global-shortcuts": "کلید های میانبر جهانی"
|
||||
},
|
||||
"name": "صدای دقیق",
|
||||
"prompt": {
|
||||
"global-shortcuts": {
|
||||
"keybind-options": {
|
||||
"decrease": "کاهش صدا",
|
||||
"increase": "افزایش صدا"
|
||||
},
|
||||
"label": "انتخاب کلیدهای میانبر سراسری صدا:",
|
||||
"title": "میانبرهای کلید سراسری صدا"
|
||||
},
|
||||
"volume-steps": {
|
||||
"label": "مراحل انتخاب افزایش/کاهش صدا",
|
||||
"title": "سطح صدا"
|
||||
}
|
||||
}
|
||||
},
|
||||
"quality-changer": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"quality-changer": {
|
||||
"detail": "کیفیت کنونی: {{quality}}",
|
||||
"message": "انتخاب کیفیت ویدیو:",
|
||||
"title": "انتخاب کیفیت ویدیو"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "امکان تغییر کیفیت ویدیو با استفاده از دکمه در رابط پخش ویدیو",
|
||||
"name": "تغییر دهنده کیفیت ویدیو"
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "اضافه کردن پشتیبانی از اسکرابلینگ (etc. last.fm, Listenbrainz)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "احراز هویت با Last.fm ناموفق بود\nپنجره شناور را تا راهاندازی مجدد بعدی مخفی کن.",
|
||||
"title": "احراز هویت ناموفق بود"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "تنظیمات \"Last.fm \"API"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": "توکن کاربری ListenBrainz را وارد کنید"
|
||||
},
|
||||
"scrobble-alternative-title": "از عناوین جایگزین استفاده کنید",
|
||||
"scrobble-other-media": "ردیابی رسانههای دیگر"
|
||||
},
|
||||
"name": "ابزار ثبتکنندهی آهنگ",
|
||||
"prompt": {
|
||||
"lastfm": {
|
||||
"api-key": "کلید Last.fm API",
|
||||
"api-secret": "API مخفی Last.fm"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": {
|
||||
"label": "توکن کاربری ListenBrainz خود را وارد کنید:",
|
||||
"title": "توکن ListenBrainz"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"shortcuts": {
|
||||
"description": "امکان تنظیم میانبرهای سراسری برای کنترل (پخش/توقف/بعدی/قبلی) و خاموش کردن OSD رسانه با بازنویسی کلیدهای رسانهای، فعالسازی Ctrl/CMD + F برای جستجو، فعالسازی پشتیبانی MPRIS در لینوکس برای کلیدهای رسانهای، و میانبرهای سفارشی برای کاربران پیشرفته",
|
||||
"menu": {
|
||||
"override-media-keys": "تغییر عملکرد کلیدهای رسانه",
|
||||
"set-keybinds": "تنظیم کنترلهای سراسری آهنگ"
|
||||
},
|
||||
"name": "میانبرها (& MPRIS)",
|
||||
"prompt": {
|
||||
"keybind": {
|
||||
"keybind-options": {
|
||||
"next": "بعدی",
|
||||
"play-pause": "پخش / توقف",
|
||||
"previous": "قبلی"
|
||||
},
|
||||
"label": "انتخاب میانبرهای سراسری برای کنترل آهنگها:",
|
||||
"title": "میانبرهای کلیدی سراسری"
|
||||
}
|
||||
}
|
||||
},
|
||||
"skip-disliked-songs": {
|
||||
"description": "خودکار آهنگ های غیر موردعلاقه رد میشن",
|
||||
"name": "رد آهنگهای غیر مورد علاقه"
|
||||
},
|
||||
"skip-silences": {
|
||||
"description": "رد خودکار بخشهای بی صدا آهنگ ها",
|
||||
"name": "رد بخشهای بیصدا"
|
||||
},
|
||||
"sponsorblock": {
|
||||
"description": "بهطور خودکار بخشهای غیرموسیقی مانند مقدمه/پایان یا قسمتهایی از ویدیوهای موسیقی که آهنگ در آن پخش نمیشود را رد میکند",
|
||||
"name": "مسدودکننده اسپانسر"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "ارائه متن ترانهها به صورت هماهنگ با آهنگها، با استفاده از ارائهدهندگانی مانند LRClib.",
|
||||
"errors": {
|
||||
"fetch": "⚠️هنگام بارگیری متن ترانه خطایی رخ داده است.\n\tلطفاً بعداً دوباره تلاش کنید.",
|
||||
"not-found": "⚠️ متنی برای این ترانه پیدا نشد."
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "حرف/کاراکتر پیشفرض بین متنهای ترانه",
|
||||
"tooltip": "حرف/کاراکتر پیشفرض را برای فاصله بین متنهای ترانه انتخاب کنید"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "افکت خط متن",
|
||||
"submenu": {
|
||||
"fancy": {
|
||||
"label": "شیک",
|
||||
"tooltip": "استفاده از افکتهای بزرگ و شبیه به اپلیکیشنها برای خط فعلی"
|
||||
},
|
||||
"focus": {
|
||||
"label": "تمرکز",
|
||||
"tooltip": "فقط خط فعلی رو سفید کن"
|
||||
},
|
||||
"offset": {
|
||||
"label": "جابجایی",
|
||||
"tooltip": "جابجایی خط فعلی به سمت راست"
|
||||
},
|
||||
"scale": {
|
||||
"label": "مقیاس",
|
||||
"tooltip": "تغییر اندازه خط فعلی"
|
||||
}
|
||||
},
|
||||
"tooltip": "افکت مورد نظر را برای خط فعلی انتخاب کنید"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "هماهنگسازی کامل متن ترانه",
|
||||
"tooltip": "محاسبه دقیق نمایش خط بعدی تا میلیثانیه (ممکن است تاثیر کمی بر عملکرد داشته باشد)"
|
||||
},
|
||||
"romanization": {
|
||||
"label": "اشعار رومی شده",
|
||||
"tooltip": "اگر اشعار به زبانی متفاوت هستند، سعی کنید نسخه لاتین را نمایش دهید."
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "نمایش متن ترانه ها حتی اگر دقیق نباشد",
|
||||
"tooltip": "اگر آهنگ پیدا نشد، افزونه دوباره با یک جستجوی متفاوت امتحان میکند.\nنتیجهی این تلاش ممکن است دقیق نباشد."
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "نمایش زمانبندیها",
|
||||
"tooltip": "نمایش زمانبندیها کنار متن ترانه"
|
||||
}
|
||||
},
|
||||
"name": "متن ترانه هماهنگ شد",
|
||||
"refetch-btn": {
|
||||
"fetching": "در حال بارگذاری...",
|
||||
"normal": "دریافت مجدد متن ترانه"
|
||||
},
|
||||
"warnings": {
|
||||
"duration-mismatch": "⚠️ - ممکن است متن ترانه به دلیل عدم تطابق زمان با مشکل هماهنگی مواجه شود.",
|
||||
"inexact": "⚠️ - ممکن است متن ترانه برای این آهنگ دقیق نباشد",
|
||||
"instrumental": "⚠️ - این آهنگ بی کلام است"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "کنترل پخش از نوار وظیفه ویندوز(taskbar)",
|
||||
"name": "کنترل رسانه از نوار وظیفه (taskbar)"
|
||||
},
|
||||
"touchbar": {
|
||||
"description": "افزودن ویجت TouchBar برای کاربران macOS",
|
||||
"name": "نوار لمسی"
|
||||
},
|
||||
"tuna-obs": {
|
||||
"description": "ادغام با پلاگین Tuna در OBS",
|
||||
"name": "Tuna OBS"
|
||||
},
|
||||
"unobtrusive-player": {
|
||||
"description": "هنگام پخش یک آهنگ از پخش کننده جلوگیری می کند",
|
||||
"name": "پخشکننده بی نظیر"
|
||||
},
|
||||
"video-toggle": {
|
||||
"description": "دکمهای اضافه میکند برای جابجایی بین حالت ویدیو/آهنگ. همچنین به صورت اختیاری میتواند تب ویدیو را حذف کند",
|
||||
"menu": {
|
||||
"align": {
|
||||
"label": "چینش",
|
||||
"submenu": {
|
||||
"left": "چپ",
|
||||
"middle": "میانه",
|
||||
"right": "راست"
|
||||
}
|
||||
},
|
||||
"force-hide": "حذف اجباری تب ویدیو",
|
||||
"mode": {
|
||||
"label": "حالت",
|
||||
"submenu": {
|
||||
"custom": "حالت شخصیسازی شده",
|
||||
"disabled": "غیرفعال",
|
||||
"native": "حالت پیشفرض"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "ویدیو به آهنگ",
|
||||
"templates": {
|
||||
"button": "ترانه"
|
||||
}
|
||||
},
|
||||
"visualizer": {
|
||||
"description": "اضافه کردن نمایشدهنده تصویری به پخشکننده",
|
||||
"menu": {
|
||||
"visualizer-type": "نوع نمایشدهنده تصویری"
|
||||
},
|
||||
"name": "نمایشدهنده تصویری"
|
||||
}
|
||||
}
|
||||
}
|
||||
653
src/i18n/resources/fi.json
Normal file
@ -0,0 +1,653 @@
|
||||
{
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "Virhe pluginin lataamisessa: {{pluginName}}, koska {{contextName}}",
|
||||
"executed-at-ms": "Lisäosa: {{pluginName}} ja {{contextName}} on ladattu/liitetty {{ms}}",
|
||||
"initialize-failed": "Laajennuksen alustaminen epäonnistui kohteelle \"{{pluginName}}\"",
|
||||
"load-all": "Ladataan kaikkia lisäosia",
|
||||
"load-failed": "Virhe lisäosan lataamisessa kohteelle: {{pluginName}}",
|
||||
"loaded": "Lisäosa {{pluginName}} on ladattu",
|
||||
"unload-failed": "Laajennuksen purkaminen epäonnistui kohtelle: {{pluginName}}",
|
||||
"unloaded": "Lisäosa {{pluginName}} on purettu"
|
||||
}
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"code": "fi",
|
||||
"local-name": "Suomi",
|
||||
"name": "Finnish"
|
||||
},
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "Onnistuneesti ladattu. Devtools avautuu"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "i18n ladattu"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "Komento \"{{command}}\" on vastaanotettu"
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "{{cssFile}} on jätetty väliin, koska tiedosto on virheellinen"
|
||||
},
|
||||
"unresponsive": {
|
||||
"details": "Reagoimaton virhe\n{{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "Puhdista välimuisti"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "Näyttö yritti renderöidä näyttöäsi asetuksilla: {{windowSize}}, {{displaySize}} sekä {{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "Valikko on piilotettu, avaa valikko uudestaan painamalla \"Alt\" näppäintä tai \"Escape\" näppäintä",
|
||||
"message": "Valikon piilotus on nyt päällä",
|
||||
"title": "Piilota valikko päällä"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "Myöhemmin",
|
||||
"restart-now": "Uudelleen käynnistä NYT"
|
||||
},
|
||||
"detail": "{{pluginName}} lisäosa vaatii uudelleen käynnistyksen YT musicille",
|
||||
"message": "{{pluginName}} vaatii uudelleen käynnistyksen YT musicille",
|
||||
"title": "Uudelleen käynnistä sovellus"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "Poistu",
|
||||
"relaunch": "Uudelleen käynnistä",
|
||||
"wait": "Odotas vähän"
|
||||
},
|
||||
"detail": "Pahoittelemme häiriötä! ole hyvä ja valitse mitä teet:",
|
||||
"message": "Sovellus ei ole saataville eli tapahtui virhe",
|
||||
"title": "Ikkuna ei vastaa"
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"disable": "Poista päivitykset käytöstä",
|
||||
"download": "Lataa",
|
||||
"ok": "Selvä"
|
||||
},
|
||||
"detail": "Uusin versio sovelluksesta on nyt saatavilla, lataa se tästä {{downloadLink}}",
|
||||
"message": "Uusin versio on nyt saatavilla",
|
||||
"title": "Päivitys saatavilla"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"about": "Tietoa",
|
||||
"navigation": {
|
||||
"label": "Selaa",
|
||||
"submenu": {
|
||||
"copy-current-url": "Kopio URL osoite",
|
||||
"go-back": "Takaisin",
|
||||
"go-forward": "Eteenpäin",
|
||||
"quit": "Poistu alustalta",
|
||||
"restart": "Uudelleen käynnistä aplikaatio"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"label": "Asetukset",
|
||||
"submenu": {
|
||||
"advanced-options": {
|
||||
"label": "Lisäasetukset",
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "Puhdista sovelluksen välimuisti aina sovelluksen käynnistyksen aikana",
|
||||
"disable-hardware-acceleration": "Poista laitteistokiihdytys käytöstä",
|
||||
"edit-config-json": "Muokkaa \"config.json\" tiedostoa",
|
||||
"override-user-agent": "Ohita käyttäjäagentti",
|
||||
"restart-on-config-changes": "Käynnistä uudelleen asetusten muuton jälkeen",
|
||||
"set-proxy": {
|
||||
"label": "Aseta välityspalvelin (proxy)",
|
||||
"prompt": {
|
||||
"label": "Aseta välityspalvelimen IP-osoite: (jos jätät tyhjäksi, palvelin ei käynnisty)",
|
||||
"placeholder": "Esimerkki osoite: penapertti://127.0.0.0:6969",
|
||||
"title": "Aseta välityspalvelin (proxy)"
|
||||
}
|
||||
},
|
||||
"toggle-dev-tools": "Ota DevTools käyttöön"
|
||||
}
|
||||
},
|
||||
"always-on-top": "Aina päällä",
|
||||
"auto-update": "Automaattisest päivitykset",
|
||||
"hide-menu": {
|
||||
"dialog": {
|
||||
"message": "Valikko piilotetaan seuraavan käynnistyksen yhteydessä. Saat sen päälle painamalla [Alt] näppäintä (tai merkitse takaisin [`], jos käytät sovelluksen sisäistä valikkoa)",
|
||||
"title": "Piilota valikko (päällä)"
|
||||
},
|
||||
"label": "Piilota valikko"
|
||||
},
|
||||
"language": {
|
||||
"dialog": {
|
||||
"message": "Kieli vaihtuu uudelleen käynnistyksen jälkeen (Language will be changed after restart)",
|
||||
"title": "Kieli vaihdettu (Language Changed)"
|
||||
},
|
||||
"label": "Kieli (languages)",
|
||||
"submenu": {
|
||||
"to-help-translate": "Haluatko kääntää puuttuvan kielen? Klkkaa tästä! (Want to help translate? Click here)"
|
||||
}
|
||||
},
|
||||
"resume-on-start": "Jatka kappaleesta, johon jäin aikaisemmin",
|
||||
"single-instance-lock": "Yhden instanssin lukko",
|
||||
"start-at-login": "Aloita kirjautuminen",
|
||||
"starting-page": {
|
||||
"label": "Etusivu",
|
||||
"unset": "Valitsematta"
|
||||
},
|
||||
"tray": {
|
||||
"label": "Suositukset",
|
||||
"submenu": {
|
||||
"disabled": "Pois päältä",
|
||||
"enabled-and-hide-app": "Suositukset ovat käytössä ja piilota valikko",
|
||||
"enabled-and-show-app": "Päällä ja sovellus näkyvissä",
|
||||
"play-pause-on-click": "Soita/pysäytä klikkaamalla"
|
||||
}
|
||||
},
|
||||
"visual-tweaks": {
|
||||
"label": "Visuaalisia tehosteita",
|
||||
"submenu": {
|
||||
"like-buttons": {
|
||||
"default": "Vakio",
|
||||
"force-show": "Pakota näyttämään",
|
||||
"hide": "Piilota",
|
||||
"label": "Tykkäys nappula"
|
||||
},
|
||||
"remove-upgrade-button": "Poista päivitys nappula",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "Peruuta",
|
||||
"remove": "Poista"
|
||||
},
|
||||
"remove-theme": "Oletko aivan varma, että haluat poistaa kustomoidun teeman?",
|
||||
"remove-theme-message": "Tämä poistaa kustomoidun teeman"
|
||||
},
|
||||
"label": "Teema",
|
||||
"submenu": {
|
||||
"import-css-file": "Liitä kustomoitu CSS tiedosto",
|
||||
"no-theme": "Ei teemaa"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"enabled": "Päällä",
|
||||
"label": "Lisäosat",
|
||||
"new": "UUSI"
|
||||
},
|
||||
"view": {
|
||||
"label": "Katso",
|
||||
"submenu": {
|
||||
"force-reload": "pakota uudelleen lataamaan",
|
||||
"reload": "Uudelleen lataa",
|
||||
"reset-zoom": "Todellinen koko",
|
||||
"toggle-fullscreen": "Koko näyttö päälle/pois",
|
||||
"zoom-in": "Zoomaa lähemmäksi",
|
||||
"zoom-out": "Zoomaa kauemmaksi"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"next": "Seuraava",
|
||||
"play-pause": "Soita/pysäytä",
|
||||
"previous": "Edellinen",
|
||||
"quit": "Lähde pois",
|
||||
"restart": "Uudelleen käynnistä appi",
|
||||
"show": "Näytä ikkuna",
|
||||
"tooltip": {
|
||||
"default": "Youtube Music",
|
||||
"with-song-info": "Youtube Music {{artist}} - {{title}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "Jos mainos toistuu, mykistä ääni ja aseta toistonopeus 16x:een",
|
||||
"name": "Mainoksen nopeutus"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "Estä kaikki mainokset ja seuranta",
|
||||
"menu": {
|
||||
"blocker": "Estäjät (blockerit)"
|
||||
},
|
||||
"name": "Mainos estäjä"
|
||||
},
|
||||
"album-actions": {
|
||||
"description": "Lisää tykkäysnappulat, joilla voit lisätä tai poistaa tykkäyksiä kerralla kaikille soittolistan tai albumin kappaleille",
|
||||
"name": "Albumin Toiminnot"
|
||||
},
|
||||
"album-color-theme": {
|
||||
"description": "Käyttää dynaamista teemaa ja visuaalisia tehosteita albumin väripaletin perusteella",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "Värien sekoitussuhde",
|
||||
"submenu": {
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Albumin Värinen Teema"
|
||||
},
|
||||
"ambient-mode": {
|
||||
"description": "Antaa valaistustehosteen heittämällä videosta lempeitä värejä näytön taustalle",
|
||||
"menu": {
|
||||
"blur-amount": {
|
||||
"label": "Sumennuksen voimakkuus",
|
||||
"submenu": {
|
||||
"pixels": "{{blurAmount}} pikseliä"
|
||||
}
|
||||
},
|
||||
"buffer": {
|
||||
"label": "Puskurointi",
|
||||
"submenu": {
|
||||
"buffer": "{{buffer}}"
|
||||
}
|
||||
},
|
||||
"opacity": {
|
||||
"label": "Läpinäkyvyys",
|
||||
"submenu": {
|
||||
"percent": "{{opacity}}%"
|
||||
}
|
||||
},
|
||||
"quality": {
|
||||
"label": "Laatu",
|
||||
"submenu": {
|
||||
"pixels": "{{quality}} pikseliä"
|
||||
}
|
||||
},
|
||||
"size": {
|
||||
"label": "Koko",
|
||||
"submenu": {
|
||||
"percent": "{{size}}%"
|
||||
}
|
||||
},
|
||||
"smoothness-transition": {
|
||||
"label": "Siirtymän sujuvuus",
|
||||
"submenu": {
|
||||
"during": "Kesto {{interpolationTime}} s"
|
||||
}
|
||||
},
|
||||
"use-fullscreen": {
|
||||
"label": "Käytetään koko näytön tilaa"
|
||||
}
|
||||
},
|
||||
"name": "Tunnelmallinen Tila"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "Lisää YouTube Music tuen Amusen nyt soitetaan -widgetille, kehittäjänä 6K Labs"
|
||||
},
|
||||
"api-server": {
|
||||
"description": "Lisää API-palvelimen hallitsemaan soitinta",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "Hyväksy",
|
||||
"deny": "Kiellä"
|
||||
},
|
||||
"message": "Sallitaanko {{ID}} ({{origin}}) pääsy API:in?",
|
||||
"title": "API vahvistuspyyntö"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"submenu": {
|
||||
"none": {
|
||||
"label": "Ei valtuuksia"
|
||||
}
|
||||
}
|
||||
},
|
||||
"port": {
|
||||
"label": "Portti"
|
||||
}
|
||||
},
|
||||
"name": "API Serveri [Beta]",
|
||||
"prompt": {
|
||||
"port": {
|
||||
"title": "Portti"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Lisää äänen kompressointia (hiljentää voimakkaimpien äänien voimakkuutta ja tehostaa pehmeämpien äänien voimakkuutta)",
|
||||
"name": "Äänen Kompressoija"
|
||||
},
|
||||
"blur-nav-bar": {
|
||||
"description": "Tekee siirtymäpalkista läpikuultavan ja sumean",
|
||||
"name": "Sumenna Siirtymäpalkki"
|
||||
},
|
||||
"bypass-age-restrictions": {
|
||||
"description": "Ohita YouTuben iän vahvistus",
|
||||
"name": "Ohita Ikään Perustuvat Rajoitukset"
|
||||
},
|
||||
"captions-selector": {
|
||||
"description": "YouTube Music ääniraitojen tekstitysten valitsin",
|
||||
"menu": {
|
||||
"autoload": "Valitse automaattisesti viimeksi käytetty tekstitys",
|
||||
"disable-captions": "Tekstitys ei oletusarvoisesti käytössä"
|
||||
},
|
||||
"name": "Tekstitysten valinta",
|
||||
"prompt": {
|
||||
"selector": {
|
||||
"label": "Tekstitysten nykyinen kieli: {{language}}",
|
||||
"none": "Ei mitään",
|
||||
"title": "Valitse tekstitysten kieli"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"title": "Avaa tekstitysten valitsin"
|
||||
}
|
||||
},
|
||||
"compact-sidebar": {
|
||||
"description": "Asettaa sivupalkin aina kompaktiin tilaan",
|
||||
"name": "Kompakti sivupalkki"
|
||||
},
|
||||
"crossfade": {
|
||||
"description": "Ristihäivytä kappaleet",
|
||||
"menu": {
|
||||
"advanced": "Edistynyt"
|
||||
},
|
||||
"name": "Ristihäivytys [Beta]",
|
||||
"prompt": {
|
||||
"options": {
|
||||
"multi-input": {
|
||||
"fade-in-duration": "Sisään häivytyksen kesto (ms)",
|
||||
"fade-out-duration": "Ulos häivytyksen kesto (ms)",
|
||||
"fade-scaling": {
|
||||
"label": "Häivytyksen skaalaus",
|
||||
"linear": "Lineaarinen",
|
||||
"logarithmic": "Logaritminen"
|
||||
},
|
||||
"seconds-before-end": "Ristihäivytä N sekuntia ennen loppua"
|
||||
},
|
||||
"title": "Ristihäivytyksen asetukset"
|
||||
}
|
||||
}
|
||||
},
|
||||
"disable-autoplay": {
|
||||
"description": "Kappaleet alkavat \"pysäytetty\" tilassa",
|
||||
"name": "Poista automaattinen toisto käytöstä"
|
||||
},
|
||||
"discord": {
|
||||
"backend": {
|
||||
"already-connected": "Yritettiin yhdistää vaikka yhteys on jo aktiivinen",
|
||||
"connected": "Yhdistetty Discordiin",
|
||||
"disconnected": "Katkaistu yhteys Discordiin"
|
||||
},
|
||||
"description": "Näytä ystävillesi mitä kuuntelet \"Rich Presence\":n avulla",
|
||||
"menu": {
|
||||
"auto-reconnect": "Automaatinen uudelleenyhdistys",
|
||||
"clear-activity": "Nollaa toiminta",
|
||||
"clear-activity-after-timeout": "Nollaa toiminta aikakatkaisun jälkeen",
|
||||
"connected": "Yhdistetty",
|
||||
"disconnected": "Yhteys katkaistu",
|
||||
"hide-duration-left": "Piilota kappaleen jäljellä oleva kesto",
|
||||
"hide-github-button": "Piilota \"linkki GitHubiin\" -nappi",
|
||||
"play-on-youtube-music": "Kuuntele palvelussa YouTube Music",
|
||||
"set-inactivity-timeout": "Aseta toimettomuuden aikakatkaisu"
|
||||
},
|
||||
"name": "Discord Aktiviteetti (Rich Presence)",
|
||||
"prompt": {
|
||||
"set-inactivity-timeout": {
|
||||
"label": "Anna toimettomuuden aikakatkaisun aika sekunteina:",
|
||||
"title": "Aseta toimettomuuden aikakatkaisu"
|
||||
}
|
||||
}
|
||||
},
|
||||
"downloader": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"error": {
|
||||
"buttons": {
|
||||
"ok": "OK"
|
||||
},
|
||||
"message": "Äh! Pahoittelut, lataus epäonnistui…",
|
||||
"title": "Virhe latauksessa!"
|
||||
},
|
||||
"start-download-playlist": {
|
||||
"buttons": {
|
||||
"ok": "OK"
|
||||
},
|
||||
"detail": "({{playlistSize}} kappaletta)",
|
||||
"message": "Lataa Soittolista {{playlistTitle}}",
|
||||
"title": "Lataus aloitettu"
|
||||
}
|
||||
},
|
||||
"feedback": {
|
||||
"conversion-progress": "Muunnetaan: {{percent}}%",
|
||||
"converting": "Muuntaa…",
|
||||
"done": "Valmis: {{filePath}}",
|
||||
"download-info": "Ladataan {{artist}} -{{title}} [{{videoId}}",
|
||||
"download-progress": "Latauksen edistyminen: {{percent}}%",
|
||||
"downloading": "Ladataan…",
|
||||
"downloading-counter": "Ladataan {{current}}/{{total}}…",
|
||||
"downloading-playlist": "Ladataan soittolistaa \"{{playlistTitle}}\" {{playlistSize}} kappaletta ({{playlistId}})",
|
||||
"error-while-downloading": "Virhe ladattaessa \"{{author}} - {{title}}\": {{error}}",
|
||||
"folder-already-exists": "Kansio {{playlistFolder}} on jo olemassa",
|
||||
"getting-playlist-info": "Haetaan soittolistan tietoja…",
|
||||
"loading": "Ladataan…",
|
||||
"playlist-has-only-one-song": "Soittolistalla on vain yksi kappale, se ladataan suoraan",
|
||||
"playlist-id-not-found": "Soittolistan tunnistetta ei löytynyt",
|
||||
"playlist-is-empty": "Soittolista on tyhjä",
|
||||
"playlist-is-mix-or-private": "Virhe haettaessa soittolista tietoja: varmista ettei soittolista ole yksityinen tai \"Miksattu sinulle\" soittolista\n\n{{error}}",
|
||||
"preparing-file": "Valmistellaan tiedostoa…",
|
||||
"saving": "Tallennetaan…",
|
||||
"trying-to-get-playlist-id": "Yritetään hakea soittolistan tunnistetta: {{playlistId}}",
|
||||
"video-id-not-found": "Videota ei löytynyt",
|
||||
"writing-id3": "Kirjoitetaan ID3-tunnisteita…"
|
||||
}
|
||||
},
|
||||
"description": "Lataa MP3- tai lähdetiedoston suoraan käyttöliittymästä",
|
||||
"menu": {
|
||||
"choose-download-folder": "Valitse latauskansio",
|
||||
"download-finish-settings": {
|
||||
"prompt": {
|
||||
"last-seconds": "Viimeiset x sekuntia"
|
||||
},
|
||||
"submenu": {
|
||||
"enabled": "Päällä",
|
||||
"percent": "Prosentti"
|
||||
}
|
||||
},
|
||||
"download-playlist": "Lataa soittolista",
|
||||
"presets": "Esiasetukset",
|
||||
"skip-existing": "Ohita olemassa olevat tiedostot"
|
||||
},
|
||||
"name": "Lataaja",
|
||||
"renderer": {
|
||||
"can-not-update-progress": "Edistystä ei voida päivittää"
|
||||
},
|
||||
"templates": {
|
||||
"button": "Lataa"
|
||||
}
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "Tekee äänenvoimakkuuden säätimestä eksponentiaalisen, jotta matalampien äänenvoimakkuuksien valinta on helpompaa.",
|
||||
"name": "Eksponentiaalinen Äänenvoimakkuus"
|
||||
},
|
||||
"in-app-menu": {
|
||||
"description": "Antaa valikkopalkeille hienon tumman tai albumin värisen ulkonäön",
|
||||
"menu": {
|
||||
"hide-dom-window-controls": "Piilota ikkunan DOM ohjaimet"
|
||||
},
|
||||
"name": "Sovelluksen sisäinen valikko"
|
||||
},
|
||||
"lumiastream": {
|
||||
"description": "Lisää tuen Lumia Stream -palvelulle",
|
||||
"name": "Lumia Stream [Beta]"
|
||||
},
|
||||
"lyrics-genius": {
|
||||
"description": "Lisää tuen useimpien kappaleiden sanoituksille",
|
||||
"menu": {
|
||||
"romanized-lyrics": "Latinaistetut sanoitukset"
|
||||
},
|
||||
"name": "Lyrics Genius",
|
||||
"renderer": {
|
||||
"fetched-lyrics": "Sanoitukset haettu Geniukselle"
|
||||
}
|
||||
},
|
||||
"music-together": {
|
||||
"description": "Jaa soittolista muiden kanssa. Kun isäntä soittaa kappaleen, kaikki muut kuulevat saman kappaleen",
|
||||
"dialog": {
|
||||
"enter-host": "Anna Istunnon tunniste"
|
||||
},
|
||||
"internal": {
|
||||
"save": "Tallenna",
|
||||
"track-source": "Kappaleen lähde",
|
||||
"unknown-user": "Tuntematon käyttäjä"
|
||||
},
|
||||
"menu": {
|
||||
"click-to-copy-id": "Kopioi Istunnon tunniste",
|
||||
"close": "Sulje \"Music Together\"",
|
||||
"connected-users": "Yhdistetyt käyttäjät",
|
||||
"disconnect": "Katkaise yhteys \"Music Together\" -istuntoon",
|
||||
"empty-user": "Ei yhdistyneitä käyttäjiä",
|
||||
"host": "\"Music Together\" -istunnon isäntä",
|
||||
"join": "Yhdistä \"Music Together\" -istuntoon",
|
||||
"permission": {
|
||||
"all": "Salli vieraiden hallita soittolistaa ja soitinta",
|
||||
"host-only": "Vain isäntä voi hallita soittolistaa ja soitinta",
|
||||
"playlist": "Salli vieraiden hallita soittolistaa"
|
||||
},
|
||||
"set-permission": "Muuta hallintaoikeuksia",
|
||||
"status": {
|
||||
"disconnected": "Yhteys katkaistu",
|
||||
"guest": "Yhdistetty vieraana",
|
||||
"host": "Yhdistetty isäntänä"
|
||||
}
|
||||
},
|
||||
"name": "Music Together [Beta]",
|
||||
"toast": {
|
||||
"add-song-failed": "Kappaleen lisääminen epäonnistui",
|
||||
"closed": "Music Together suljettu",
|
||||
"disconnected": "\"Music Together\" yhteys katkaistu",
|
||||
"host-failed": "Music Together -istunnon isännöinti epäonnistui",
|
||||
"id-copied": "Istunnon tunnus kopioitu leikepöydälle",
|
||||
"id-copy-failed": "Istunnon tunnisteen kopioiminen epäonnistui",
|
||||
"join-failed": "Music Together -istuntoon liittyminen epäonnistui",
|
||||
"joined": "Liityttiin Music Together -istuntoon",
|
||||
"permission-changed": "Music Together -istunnon oikeuksia muutettiin \"{{permission}}\"",
|
||||
"remove-song-failed": "Kappaleen poistaminen epäonnistui",
|
||||
"user-connected": "{{name}} liittyi Music Together -istuntoon",
|
||||
"user-disconnected": "{{name}} poistui Music Together -istunnosta"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"description": "Eteen- ja taaksepäin vievät nuolet suoraan integroituna käyttöliittymään. Juuri niin kuin lempiselaimessasi",
|
||||
"name": "Siirtyminen"
|
||||
},
|
||||
"no-google-login": {
|
||||
"description": "Poista Googlen kirjautumispainikkeet ja linkit käyttöliittymästä",
|
||||
"name": "Ei Google kirjautumista"
|
||||
},
|
||||
"notifications": {
|
||||
"description": "Näytä ilmoitus, kun kappale alkaa soida (interaktiiviset ilmoitukset ovat käytettävissä Windowsilla)",
|
||||
"menu": {
|
||||
"interactive": "Interaktiiviset Ilmoitukset",
|
||||
"interactive-settings": {
|
||||
"label": "Interaktiiviset Asetukset",
|
||||
"submenu": {
|
||||
"hide-button-text": "Piilota painikkeen teksti",
|
||||
"refresh-on-play-pause": "Päivitä Toistamisen/Tauottamisen yhteydessä",
|
||||
"tray-controls": "Avaa/Sulje tehtäväpalkista"
|
||||
}
|
||||
},
|
||||
"priority": "Ilmoitusten tärkeys",
|
||||
"unpause-notification": "Näytä ilmoitus toistamisen yhteydessä"
|
||||
},
|
||||
"name": "Ilmoitukset"
|
||||
},
|
||||
"picture-in-picture": {
|
||||
"description": "Sallii sovelluksen vaihtamisen \"kuva kuvassa\" tilaan",
|
||||
"menu": {
|
||||
"always-on-top": "Aina päällimmäisenä",
|
||||
"hotkey": {
|
||||
"label": "Pikanäppäin",
|
||||
"prompt": {
|
||||
"keybind-options": {
|
||||
"hotkey": "Pikanäppäin"
|
||||
},
|
||||
"label": "Valitse pikanäppäin \"kuva kuvassa\" -tilan kytkemiseksi",
|
||||
"title": "\"Kuva kuvassa\" -tilan pikanäppäin"
|
||||
}
|
||||
},
|
||||
"save-window-position": "Tallenna ikkunan sijainti",
|
||||
"save-window-size": "Tallenna ikkunan koko",
|
||||
"use-native-pip": "Käytä selaimen natiivia \"Kuva kuvassa\" -tilaa"
|
||||
},
|
||||
"name": "Kuva kuvassa",
|
||||
"templates": {
|
||||
"button": "Kuva kuvassa"
|
||||
}
|
||||
},
|
||||
"playback-speed": {
|
||||
"description": "Kuuntele nopeasti, kuuntele hitaasti! Lisää säätimen, jolla voit säätää kappaleen toistonopeutta",
|
||||
"name": "Toistonopeus",
|
||||
"templates": {
|
||||
"button": "Nopeus"
|
||||
}
|
||||
},
|
||||
"precise-volume": {
|
||||
"description": "Säädä äänenvoimakkuutta tarkasti hiiren rullaa tai pikanäppäimiä käyttäen. Kustomoidulla käyttöliittymällä ja säädettävällä äänenvoimakkuuden porrastuksella",
|
||||
"menu": {
|
||||
"custom-volume-steps": "Aseta mukautettu äänenvoimakkuuden porrastus",
|
||||
"global-shortcuts": "Yleiset pikanäppäimet"
|
||||
},
|
||||
"name": "Tarkka äänenvoimakkuus",
|
||||
"prompt": {
|
||||
"global-shortcuts": {
|
||||
"keybind-options": {
|
||||
"decrease": "Vähennä äänenvoimakkuutta",
|
||||
"increase": "Lisää äänenvoimakkuutta"
|
||||
},
|
||||
"label": "Valitse yleiset äänenvoimakkuuden pikanäppäimet:"
|
||||
}
|
||||
}
|
||||
},
|
||||
"quality-changer": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"quality-changer": {
|
||||
"detail": "Nykyinen laatu: {{quality}}"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"scrobbler": {
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"title": "Todennus epäonnistui"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"shortcuts": {
|
||||
"prompt": {
|
||||
"keybind": {
|
||||
"keybind-options": {
|
||||
"previous": "Edellinen"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"tuna-obs": {
|
||||
"name": "Tuna OBS"
|
||||
},
|
||||
"video-toggle": {
|
||||
"menu": {
|
||||
"align": {
|
||||
"submenu": {
|
||||
"left": "Vasen",
|
||||
"right": "Oikea"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
793
src/i18n/resources/fil.json
Normal file
@ -0,0 +1,793 @@
|
||||
{
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "Nabigong patakbuin ang plugin {{pluginName}}::{{contextName}}",
|
||||
"executed-at-ms": "Ang plugin na {{pluginName}}::{{contextName}} ay pinatakbo sa loob ng {{ms}}ms",
|
||||
"initialize-failed": "Nabigo ang pagsimula ng plugin na \"{{pluginName}}\"",
|
||||
"load-all": "Nilo-load lahat ng mga plugin",
|
||||
"load-failed": "Nabigong i-load ang plugin na \"{{pluginName}}\"",
|
||||
"loaded": "Na-load ang \"{{pluginName}}\" na plugin",
|
||||
"unload-failed": "Nabigong i-unload ang plugin na \"{{pluginName}}\"",
|
||||
"unloaded": "Na-unload ang \"{{pluginName}}\" na plugin"
|
||||
}
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"code": "fil",
|
||||
"local-name": "Tagalog",
|
||||
"name": "Filipino"
|
||||
},
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "Natapos ang pag-load. Nabuksan ang DevTools"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "na-load ang i18n"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "Natanggap ang command sa pamamagitan ng protocol: \"{{command}}\""
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "Ang CSS file na \"{{cssFile}}\" ay hindi umiiral, hindi papansin"
|
||||
},
|
||||
"unresponsive": {
|
||||
"details": "Hindi tumutugon na Error!\n{{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "Naglilinis ng app cache"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "Nasubukan ng window na mag-render sa labas ng screen, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "Nakatago ang menu, gamitin ang 'Alt' para makita ito (o 'Escape' kung gagamitin ang In-App na Menu)",
|
||||
"message": "Ang Pagtatago ng Menu ay napagana na",
|
||||
"title": "Napagana ang Pagtatago ng Menu"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "Mamaya",
|
||||
"restart-now": "Mag-restart na"
|
||||
},
|
||||
"detail": "Ang plugin na \"{{pluginName}}\" ay kinakailangan ng restart para gumana ito",
|
||||
"message": "Kinakailangan ng \"{{pluginName}}\" na mag-restart",
|
||||
"title": "Kinakailangan ng Restart"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "Umalis",
|
||||
"relaunch": "Muling patakbuhin",
|
||||
"wait": "Maghintay"
|
||||
},
|
||||
"detail": "Ikinalulungkot namin ang abala! piliin kung ano ang gagawin:",
|
||||
"message": "Ang Application ay Hindi Tumutugon",
|
||||
"title": "Di tumutugon ang Window"
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"disable": "Di-paganahin ang mga Update",
|
||||
"download": "I-download",
|
||||
"ok": "OK"
|
||||
},
|
||||
"detail": "Ang isang bagong bersyon ay available at maaaring i-download sa {{downloadLink}}",
|
||||
"message": "Mayroong bagong version ay available",
|
||||
"title": "Available ang Update"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"about": "Patungkol",
|
||||
"navigation": {
|
||||
"label": "Nabigasyon",
|
||||
"submenu": {
|
||||
"copy-current-url": "Kopyahin ang kasalukuyang URL",
|
||||
"go-back": "Bumalik",
|
||||
"go-forward": "Pasulong",
|
||||
"quit": "Lumabas",
|
||||
"restart": "I-restart ang App"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"label": "Mga Opsyon",
|
||||
"submenu": {
|
||||
"advanced-options": {
|
||||
"label": "Mga advance na opsyon",
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "I-reset ang app cache kapag nagsisimula ang app",
|
||||
"disable-hardware-acceleration": "Di paganahin ang pagpapabilis ng hardware",
|
||||
"edit-config-json": "I-edit ang config.json",
|
||||
"override-user-agent": "I-override ang User-Agent",
|
||||
"restart-on-config-changes": "I-restart kada may pagbabago sa config",
|
||||
"set-proxy": {
|
||||
"label": "I-set ang proxy",
|
||||
"prompt": {
|
||||
"label": "Ilagay ang Proxy Address: (iwanang walang laman para di-paganahin)",
|
||||
"placeholder": "Halimbawa: SOCKS5://127.0.0.1:9999",
|
||||
"title": "I-set ang proxy"
|
||||
}
|
||||
},
|
||||
"toggle-dev-tools": "I-toggle ang DevTools"
|
||||
}
|
||||
},
|
||||
"always-on-top": "Laging nasa ibabaw",
|
||||
"auto-update": "Awto Update",
|
||||
"hide-menu": {
|
||||
"dialog": {
|
||||
"message": "Ang menu ay itatago sa susunod na pag-launch, gamitin ang [Alt] upang ipakita ito (o backtick [`] kung gumagamit ng in-app-menu)",
|
||||
"title": "Pinagana ang Pagtatago ng Menu"
|
||||
},
|
||||
"label": "Pagtatago ng Menu"
|
||||
},
|
||||
"language": {
|
||||
"dialog": {
|
||||
"message": "Ang wika ay mababago pagkatapos mag-restart",
|
||||
"title": "Napalitan ang Wika"
|
||||
},
|
||||
"label": "Wika",
|
||||
"submenu": {
|
||||
"to-help-translate": "Gusto mong tumulong sa pagsasalin? Mag-click dito"
|
||||
}
|
||||
},
|
||||
"resume-on-start": "Ipagpatuloy ang huling kanta kapag nagsisimula ang app",
|
||||
"single-instance-lock": "I-lock sa isang Instance",
|
||||
"start-at-login": "Magsimula sa pag-login",
|
||||
"starting-page": {
|
||||
"label": "Simulang page",
|
||||
"unset": "I-unset"
|
||||
},
|
||||
"tray": {
|
||||
"label": "Tray",
|
||||
"submenu": {
|
||||
"disabled": "Di-napagana",
|
||||
"enabled-and-hide-app": "Napagana at natago ang app",
|
||||
"enabled-and-show-app": "Napagana at napakita ang app",
|
||||
"play-pause-on-click": "Mag play/pause kada click"
|
||||
}
|
||||
},
|
||||
"visual-tweaks": {
|
||||
"label": "Mga Biswal na Tweak",
|
||||
"submenu": {
|
||||
"like-buttons": {
|
||||
"default": "Default",
|
||||
"force-show": "Pilitang ipakita",
|
||||
"hide": "Itago",
|
||||
"label": "Mga Like na button"
|
||||
},
|
||||
"remove-upgrade-button": "Tanggalin ang upgrade na button",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "Kanselahin",
|
||||
"remove": "Tanggalin"
|
||||
},
|
||||
"remove-theme": "Sigurado ka bang gusto mong alisin ang custom na tema?",
|
||||
"remove-theme-message": "Aalisin nito ang custom na tema"
|
||||
},
|
||||
"label": "Tema",
|
||||
"submenu": {
|
||||
"import-css-file": "Mag-import ng custom na CSS file",
|
||||
"no-theme": "Walang tema"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"enabled": "Napagana",
|
||||
"label": "Mga Plugin",
|
||||
"new": "BAGO"
|
||||
},
|
||||
"view": {
|
||||
"label": "View",
|
||||
"submenu": {
|
||||
"force-reload": "Pilitang I-reload",
|
||||
"reload": "I-reload",
|
||||
"reset-zoom": "Aktuwal na Size",
|
||||
"toggle-fullscreen": "I-toggle ang Full Screen",
|
||||
"zoom-in": "Mag-zoom in",
|
||||
"zoom-out": "Mag-zoom out"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"next": "Susunod",
|
||||
"play-pause": "Mag-play/Mag-pause",
|
||||
"previous": "Nakaraan",
|
||||
"quit": "Lumabas",
|
||||
"restart": "I-restart ang App",
|
||||
"show": "Ipakita ang window",
|
||||
"tooltip": {
|
||||
"default": "YouTube Music",
|
||||
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "Pag mag-play ng ad, I-mute ang audio at i-set ang bilis ng playback ng 16x",
|
||||
"name": "Pagbilis ng Ad"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "I-block ang lahat ng ad at tracking",
|
||||
"menu": {
|
||||
"blocker": "Blocker"
|
||||
},
|
||||
"name": "Pag-block ng Ad"
|
||||
},
|
||||
"album-actions": {
|
||||
"description": "Idadagdag ang Undislike, Dislike, Like, at Unlike na button para ilapat ito sa lahat ng kanta sa isang playlist o album",
|
||||
"name": "Mga aksyon sa Album"
|
||||
},
|
||||
"album-color-theme": {
|
||||
"description": "Naglalapat ng dynamic na tema at visual effect batay sa color palette ng album",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "Ratio ng paghahalo ng kulay",
|
||||
"submenu": {
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Tema ng Kulay ng Album"
|
||||
},
|
||||
"ambient-mode": {
|
||||
"description": "Naglalapat ng lighting effect sa pamamagitan ng pag-cast ng mga magiliw na kulay mula sa video, sa background ng iyong screen",
|
||||
"menu": {
|
||||
"blur-amount": {
|
||||
"label": "Dami ng blur",
|
||||
"submenu": {
|
||||
"pixels": "{{blurAmount}} na pixel"
|
||||
}
|
||||
},
|
||||
"buffer": {
|
||||
"label": "Buffer",
|
||||
"submenu": {
|
||||
"buffer": "{{buffer}}"
|
||||
}
|
||||
},
|
||||
"opacity": {
|
||||
"label": "Kalabuan (Opacity)",
|
||||
"submenu": {
|
||||
"percent": "{{opacity}}%"
|
||||
}
|
||||
},
|
||||
"quality": {
|
||||
"label": "Kalidad",
|
||||
"submenu": {
|
||||
"pixels": "{{quality}} na pixel"
|
||||
}
|
||||
},
|
||||
"size": {
|
||||
"label": "Laki",
|
||||
"submenu": {
|
||||
"percent": "{{size}}%"
|
||||
}
|
||||
},
|
||||
"smoothness-transition": {
|
||||
"label": "Ayos ng Transisyon",
|
||||
"submenu": {
|
||||
"during": "Habang {{interpolationTime}} s"
|
||||
}
|
||||
},
|
||||
"use-fullscreen": {
|
||||
"label": "Gumamit ng fullscreen"
|
||||
}
|
||||
},
|
||||
"name": "Ambient Mode"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "Nagdaragdag ng suporta sa YouTube Music para sa Amuse now playing widget ng 6K Labs",
|
||||
"response": {
|
||||
"query": "Tumatakbo ang Amuse API server. Gamitin ang GET /query para makuha ang impo ng kanta."
|
||||
}
|
||||
},
|
||||
"api-server": {
|
||||
"description": "Nagdadagdag ng API Server upang kontrolin ang player",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "Payagan",
|
||||
"deny": "Tanggihan"
|
||||
},
|
||||
"message": "Payagan ang {{ID}} ({{origin}}) upang ma-access ang API?",
|
||||
"title": "Awtorisasyon ng API request"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Estratehiya ng awtorisasyon",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "Mag-autorisa sa unang request"
|
||||
},
|
||||
"none": {
|
||||
"label": "Walang awtorisasyon"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "Hostname"
|
||||
},
|
||||
"port": {
|
||||
"label": "Port"
|
||||
}
|
||||
},
|
||||
"name": "API Server [Beta]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "Itala ang hostname (tulad ng 0.0.0.0) para sa API server:",
|
||||
"title": "Hostname"
|
||||
},
|
||||
"port": {
|
||||
"label": "Itala ang port para sa API server:",
|
||||
"title": "Port"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Ilapat ang compression sa audio (pinababa ang volume ng pinakamalakas na bahagi ng signal at pinapataas ang volume ng pinakamalambot na bahagi)",
|
||||
"name": "Compressor ng Audio"
|
||||
},
|
||||
"blur-nav-bar": {
|
||||
"description": "Gawing transparent at malabo ang bar ng nabigasyon",
|
||||
"name": "Palabuin ang Bar ng Nabigasyon"
|
||||
},
|
||||
"bypass-age-restrictions": {
|
||||
"description": "I-bypass ang pag-verify ng edad ng YouTube",
|
||||
"name": "I-bypass ang Restriksyon sa Edad"
|
||||
},
|
||||
"captions-selector": {
|
||||
"description": "Tagapili ng caption para sa mga audio track ng YouTube Music",
|
||||
"menu": {
|
||||
"autoload": "Awtomatikong piliin ang huling ginamit na caption",
|
||||
"disable-captions": "Walang mga caption bilang default"
|
||||
},
|
||||
"name": "Tagapili ng Caption",
|
||||
"prompt": {
|
||||
"selector": {
|
||||
"label": "Kasalukuyang wika ng caption:{{language}}",
|
||||
"none": "Wala",
|
||||
"title": "Pumili ng wika ng caption"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"title": "Bumukas ng pagpilian ng caption"
|
||||
}
|
||||
},
|
||||
"compact-sidebar": {
|
||||
"description": "Laging i-set ang sidebar sa compact mode",
|
||||
"name": "Pinaliit na Sidebar"
|
||||
},
|
||||
"crossfade": {
|
||||
"description": "I-crossfade kada kanta",
|
||||
"prompt": {
|
||||
"options": {
|
||||
"multi-input": {
|
||||
"fade-in-duration": "Tagal ng pag-fade in (ms)",
|
||||
"fade-out-duration": "Tagal ng pag-fade out (ms)",
|
||||
"fade-scaling": {
|
||||
"label": "Scaling ng pag-fade"
|
||||
},
|
||||
"seconds-before-end": "I-crossfade sa loob ng N segundo bago ang katapusan"
|
||||
},
|
||||
"title": "Pagpipilian sa crossfade"
|
||||
}
|
||||
}
|
||||
},
|
||||
"disable-autoplay": {
|
||||
"description": "Gawing simulan ang kanta sa \"naka-pause\" na mode",
|
||||
"menu": {
|
||||
"apply-once": "Nalalapat lamang sa startup"
|
||||
},
|
||||
"name": "Patayin ang Pag-Autoplay"
|
||||
},
|
||||
"discord": {
|
||||
"backend": {
|
||||
"already-connected": "Sinubukang kumonekta sa aktibong koneksyon",
|
||||
"connected": "Nakakonekta sa Discord",
|
||||
"disconnected": "Nadiskonekta sa Discord"
|
||||
},
|
||||
"description": "Ipakita sa iyong mga kaibigan kung ano ang pinapakinggan mo gamit ang Rich Presence",
|
||||
"menu": {
|
||||
"auto-reconnect": "Awtomatikong kumonekta muli",
|
||||
"clear-activity": "I-clear ang aktibidad",
|
||||
"clear-activity-after-timeout": "I-clear ang aktibidad pagkatapos ng timeout",
|
||||
"connected": "Nakakonekta",
|
||||
"disconnected": "Nadiskonekta",
|
||||
"hide-duration-left": "Itago ang natitirang oras",
|
||||
"hide-github-button": "Itago ang button na GitHub link",
|
||||
"play-on-youtube-music": "Patugtugin sa YouTube Music",
|
||||
"set-inactivity-timeout": "I-set ang inactivity timeout"
|
||||
},
|
||||
"prompt": {
|
||||
"set-inactivity-timeout": {
|
||||
"label": "Ilagay ang inactivity timeout sa ilang segundo:",
|
||||
"title": "I-set ang inactivity timeout"
|
||||
}
|
||||
}
|
||||
},
|
||||
"downloader": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"error": {
|
||||
"message": "Kainis! Paumanhin, nabigo ang pag-download…",
|
||||
"title": "Nagkaroon ng error sa pag-download!"
|
||||
},
|
||||
"start-download-playlist": {
|
||||
"detail": "({{playlistSize}} na mga kanta)",
|
||||
"message": "Dina-download ang Playlist na {{playlistTitle}}",
|
||||
"title": "Nasimulan na ang pag-download"
|
||||
}
|
||||
},
|
||||
"feedback": {
|
||||
"conversion-progress": "Pag-convert: {{percent}}%",
|
||||
"converting": "Kino-convert…",
|
||||
"done": "Natapos na: {{filePath}}",
|
||||
"download-info": "Dina-download ang {{artist}} - {{title}} [{{videoId}}",
|
||||
"download-progress": "Dina-download: {{percent}}%",
|
||||
"downloading": "Dina-download…",
|
||||
"downloading-counter": "Dina-download {{current}}/{{total}}…",
|
||||
"downloading-playlist": "Dina-download ang playlist \"{{playlistTitle}}\" - {{playlistSize}} na mga kanta ({{playlistId}})",
|
||||
"error-while-downloading": "Error sa pag-download \"{{author}} - {{title}}\": {{error}}",
|
||||
"folder-already-exists": "Ang folder na {{playlistFolder}} ay umiiral na",
|
||||
"getting-playlist-info": "Kinukuha ang impo ng playlist…",
|
||||
"loading": "Naglo-load…",
|
||||
"playlist-has-only-one-song": "May isang aytem lang ang playlist, direktang dina-download na",
|
||||
"playlist-id-not-found": "Walang playlist ID na nahanap",
|
||||
"playlist-is-empty": "Walang laman ang playlist",
|
||||
"playlist-is-mix-or-private": "Error sa pagkuha ng impo ng playlist: tiyaking hindi ito pribado o \"Mixed para sa iyo\" na playlist\n\n{{error}}",
|
||||
"preparing-file": "Inihahanda ang file…",
|
||||
"saving": "Sine-save…",
|
||||
"trying-to-get-playlist-id": "Sinusubukang makuha ang playlist ID: {{playlistId}}",
|
||||
"video-id-not-found": "Hindi nahanap ang video",
|
||||
"writing-id3": "Sinusulat ang mga ID3 na tag…"
|
||||
}
|
||||
},
|
||||
"description": "Dina-download ang mga MP3 / source audio direkta mula sa interface",
|
||||
"menu": {
|
||||
"choose-download-folder": "Pumili ng download folder",
|
||||
"download-finish-settings": {
|
||||
"label": "Kung natapos ang download",
|
||||
"prompt": {
|
||||
"last-percent": "Tapos ng x na porsyento",
|
||||
"last-seconds": "Huling x na segundo",
|
||||
"title": "I-configure kung kailan magda-download"
|
||||
},
|
||||
"submenu": {
|
||||
"enabled": "Napagana na",
|
||||
"percent": "Porsyento",
|
||||
"seconds": "Segundo"
|
||||
}
|
||||
},
|
||||
"download-playlist": "Dina-download ang playlist",
|
||||
"presets": "Mga preset",
|
||||
"skip-existing": "Laktawan ang mga kasalukuyang file"
|
||||
},
|
||||
"renderer": {
|
||||
"can-not-update-progress": "Hindi ma-update ang progress"
|
||||
},
|
||||
"templates": {
|
||||
"button": "Mag-download"
|
||||
}
|
||||
},
|
||||
"equalizer": {
|
||||
"description": "Nagdaragdag ng equalizer sa player",
|
||||
"menu": {
|
||||
"presets": {
|
||||
"label": "Mga Preset"
|
||||
}
|
||||
}
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "Ginagawang exponential ang volume slider para mas madaling pumili ng mas mababang volume."
|
||||
},
|
||||
"in-app-menu": {
|
||||
"description": "Nagbibigay sa mga menu-bar ng magarbo, madilim o kulay ng album",
|
||||
"menu": {
|
||||
"hide-dom-window-controls": "Itago ang mga DOM window control"
|
||||
}
|
||||
},
|
||||
"lumiastream": {
|
||||
"description": "Nabibigay suporta sa Lumia Stream",
|
||||
"name": "Lumia Stream [Beta]"
|
||||
},
|
||||
"lyrics-genius": {
|
||||
"description": "Nagdaragdag ng suporta sa lyrics para sa karamihan ng kanta",
|
||||
"renderer": {
|
||||
"fetched-lyrics": "Kinuha ang lyrics para sa Genius"
|
||||
}
|
||||
},
|
||||
"music-together": {
|
||||
"description": "Magbahagi ng playlist sa iba. Kapag nagpatugtog ang host ng isang kanta, maririnig ng lahat ang parehong kanta",
|
||||
"dialog": {
|
||||
"enter-host": "Ilagay ang Host ID"
|
||||
},
|
||||
"internal": {
|
||||
"save": "I-save",
|
||||
"unknown-user": "Di-kilalang User"
|
||||
},
|
||||
"menu": {
|
||||
"click-to-copy-id": "Kopyahin ang Host ID",
|
||||
"close": "Isara ang Music Together",
|
||||
"connected-users": "Nakakonektang (mga) User",
|
||||
"disconnect": "Mag-diskonekta sa Music Together",
|
||||
"empty-user": "Walang naka-konektang user",
|
||||
"host": "Host ng Music Together",
|
||||
"join": "Sumali sa Music Together",
|
||||
"permission": {
|
||||
"all": "Payagan ang mga guest na kontrolin ang playlist at player",
|
||||
"host-only": "Ang host lamang ang maka-kontrol ng playlist at player",
|
||||
"playlist": "Payagan ang mga guest na kontrolin ang playlist"
|
||||
},
|
||||
"set-permission": "Palitan ng permiso ng pag-control",
|
||||
"status": {
|
||||
"disconnected": "Nadiskonekta",
|
||||
"guest": "Nakakonekta bilang Guest",
|
||||
"host": "Nakakonekta bilang Host"
|
||||
}
|
||||
},
|
||||
"toast": {
|
||||
"add-song-failed": "Nabigong magdagdag ng kanta",
|
||||
"closed": "Nakasara ang Music Together",
|
||||
"disconnected": "Nakadiskonekta ang Music Together",
|
||||
"host-failed": "Nabigong mag-host ng Music Together",
|
||||
"id-copied": "Nakopya na ang Host ID sa clipboard",
|
||||
"id-copy-failed": "Nabigong nakopya ang Host ID sa clipboard",
|
||||
"join-failed": "Nabigong sumali sa Music Together",
|
||||
"joined": "Nakasali sa Music Together",
|
||||
"permission-changed": "Ang permiso ng Music Together ay nabago sa \"{{permission}}\"",
|
||||
"remove-song-failed": "Nabigong natanggal ang kanta",
|
||||
"user-connected": "{{name}} ay sumali sa Music Together",
|
||||
"user-disconnected": "{{name}} ay umalis sa Music Together"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"description": "Ang Next/Back navigation na arrow ay direktang magamit sa interface, katulad sa iyong paboritong browser",
|
||||
"name": "Nabigasyon"
|
||||
},
|
||||
"no-google-login": {
|
||||
"description": "Tanggalin ang mga Google login na button at mga link mula sa interface",
|
||||
"name": "Walang Google na Login"
|
||||
},
|
||||
"notifications": {
|
||||
"description": "Magpakita ng notification kapag nagsimulang tumugtog ang kanta (magagamit ang mga interactive na notification sa Windows)",
|
||||
"menu": {
|
||||
"interactive": "Interactive na Notification",
|
||||
"interactive-settings": {
|
||||
"label": "Mga Interactive na Setting",
|
||||
"submenu": {
|
||||
"hide-button-text": "Itago ang button na texto",
|
||||
"refresh-on-play-pause": "I-refresh sa Pag-play/Pag-pause",
|
||||
"tray-controls": "Buksan/Isara sa pag-click sa tray"
|
||||
}
|
||||
},
|
||||
"priority": "Prioridad ng Notification",
|
||||
"toast-style": "Estilo ng toast",
|
||||
"unpause-notification": "Ipakita ang notification sa pag-unpause"
|
||||
},
|
||||
"name": "Mga Abiso"
|
||||
},
|
||||
"picture-in-picture": {
|
||||
"description": "Payagan ang pag-palit ng app sa picture-in-picture mode",
|
||||
"menu": {
|
||||
"always-on-top": "Laging sa itaas",
|
||||
"hotkey": {
|
||||
"prompt": {
|
||||
"label": "Pumili ng hotkey sa pag-toggle ng picture-in-picture",
|
||||
"title": "Hotkey ng Picture-in-picture"
|
||||
}
|
||||
},
|
||||
"save-window-position": "I-save ang posisyon ng window",
|
||||
"save-window-size": "I-save ang laki ng window",
|
||||
"use-native-pip": "Gamitin ang browser native na PiP"
|
||||
},
|
||||
"name": "Picture-na-picture",
|
||||
"templates": {
|
||||
"button": "Picture-na-picture"
|
||||
}
|
||||
},
|
||||
"playback-speed": {
|
||||
"description": "Makinig na mabilisan, makinig na mabagalan! Nagdaragdag ito ng slider upang makontrol ang bilis ng kanta",
|
||||
"name": "Bilis ng Playback",
|
||||
"templates": {
|
||||
"button": "Bilis"
|
||||
}
|
||||
},
|
||||
"precise-volume": {
|
||||
"description": "Kontrolin nang wasto ang volume gamit ang mousewheel/mga hotkey, na may custom HUD at customizable na volume step",
|
||||
"menu": {
|
||||
"arrows-shortcuts": "Lokal na Arrow-key na Kontrol",
|
||||
"custom-volume-steps": "I-set ang custom na Volume Step"
|
||||
},
|
||||
"prompt": {
|
||||
"global-shortcuts": {
|
||||
"keybind-options": {
|
||||
"decrease": "Bawasan ang Volume",
|
||||
"increase": "Dagdagan ang Volume"
|
||||
},
|
||||
"label": "Pumili ng Keybind para sa Global Volume:"
|
||||
},
|
||||
"volume-steps": {
|
||||
"label": "Pumili ng Dagdagan/Bawasan ang volume step"
|
||||
}
|
||||
}
|
||||
},
|
||||
"quality-changer": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"quality-changer": {
|
||||
"detail": "Kasalukuyang Kalidad: {{quality}}",
|
||||
"message": "Pumili ng Kalidad ng Video:",
|
||||
"title": "Pumili ng Kalidad ng Video"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Payagang mapapalitan ang kalidad ng video na may button sa video overlay"
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "Idagdag ang scrobbling support (last.fm, Listenbrains, atbp.)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "Nabigong mag-authenticate sa Last.fm\nItago ang popup hanggang sa susunod na pag-restart.",
|
||||
"title": "Nabigo ang Authentication"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "Mga setting ng API para sa Last.fm"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": "Ilagay ang user token ng ListenBrainz"
|
||||
},
|
||||
"scrobble-alternative-title": "Gumamit ng alternatibong mga title",
|
||||
"scrobble-other-media": "Mag-Scrobble ng ibang media"
|
||||
},
|
||||
"prompt": {
|
||||
"lastfm": {
|
||||
"api-key": "API key ng Last.fm",
|
||||
"api-secret": "API secret ng Last.fm"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": {
|
||||
"label": "Ilagay ang ListenBrainz user token:",
|
||||
"title": "Token ng ListenBrainz"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"shortcuts": {
|
||||
"description": "Nagbibigay-daan sa pagtatakda ng mga global hotkey para sa playback (play/pause/susunod/nakaraan) at pag-off ng media OSD sa pamamagitan ng pag-override sa mga media key, pag-on sa Ctrl/CMD + F para maghanap, pag-on sa suporta ng Linux MPRIS para sa mga media key, at mga custom na hotkey para sa mga advanced na user",
|
||||
"menu": {
|
||||
"override-media-keys": "I-override ang mga Media Key",
|
||||
"set-keybinds": "I-set ang Global Song Control"
|
||||
},
|
||||
"name": "Mga shortcut (at MPRIS)",
|
||||
"prompt": {
|
||||
"keybind": {
|
||||
"keybind-options": {
|
||||
"next": "Susunod",
|
||||
"play-pause": "Mag-play / Mag-pause",
|
||||
"previous": "Nakaraan"
|
||||
},
|
||||
"label": "Pumili ng Global na Keybind para sa Songs Control:"
|
||||
}
|
||||
}
|
||||
},
|
||||
"skip-disliked-songs": {
|
||||
"description": "Laktawan ang na-dislike na kanta",
|
||||
"name": "I-skip ang mga Na-dislike na Kanta"
|
||||
},
|
||||
"skip-silences": {
|
||||
"description": "Automatikong laktawan ang mga tahimik na mga seksyon sa kanta",
|
||||
"name": "I-skip ang mga Katahimikan"
|
||||
},
|
||||
"sponsorblock": {
|
||||
"description": "Automatikong Laktawan ang di part ng kanta tulad ng intro/outro o part ng mga music video na ang kanta ay di nagple-play"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "Nagbibigay ng naka-sync na lyrics sa mga kanta, gamit ang mga provider tulad ng LRClib.",
|
||||
"errors": {
|
||||
"fetch": "⚠️\t Nagkaroon ng error habang kinukuha ang lyrics.\n\t Subukang muli mamaya.",
|
||||
"not-found": "⚠️ Walang nakitang lyrics para sa kantang ito."
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "Default na character sa pagitan ng lyrics",
|
||||
"tooltip": "Pumili ng default na character na gagamitin sa pagitan ng lyrics"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "Effect ng Linya",
|
||||
"submenu": {
|
||||
"fancy": {
|
||||
"label": "Magarbo",
|
||||
"tooltip": "Gumamit ng malaki, mala-app na effect sa kasalukuyang linya"
|
||||
},
|
||||
"focus": {
|
||||
"tooltip": "Gawing puti lamang ang kasalukuyang linya"
|
||||
},
|
||||
"offset": {
|
||||
"tooltip": "I-offset sa kanan ang kasalukuyang linya"
|
||||
},
|
||||
"scale": {
|
||||
"tooltip": "I-scale ang kasalukuyang linya"
|
||||
}
|
||||
},
|
||||
"tooltip": "Pumili ng effect na ilalapat sa kasalukuyang linya"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "Gawing perpektong naka-sync ang lyrics",
|
||||
"tooltip": "Kalkulahin sa millisecond ang pagpapakita ng susunod na linya (maaaring magkaroon ng maliit na epekto sa performance)"
|
||||
},
|
||||
"romanization": {
|
||||
"label": "I-romanize ang lyrics",
|
||||
"tooltip": "Kung ang lyrics ay nasa ibang wika, subukang magpakita ng latin na bersyon."
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "Ipakita ang lyrics kahit di-eksakto",
|
||||
"tooltip": "Kung hindi matagpuan ang kanta, susubukan muli ng plugin gamit ang ibang query sa paghahanap.\nAng resulta mula sa pangalawang pagsubok ay maaaring hindi eksakto."
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "Ipakita ang mga time code",
|
||||
"tooltip": "Ipakita ang mga time code kasunod sa lyrics"
|
||||
}
|
||||
},
|
||||
"name": "Pag-sync ng Lyrics",
|
||||
"refetch-btn": {
|
||||
"fetching": "Nag-fe-fetch...",
|
||||
"normal": "I-fetch muli ang lyrics"
|
||||
},
|
||||
"warnings": {
|
||||
"duration-mismatch": "⚠️ - Maaaring hindi naka-sync ang lyrics dahil sa hindi pagkakatugma ng duration.",
|
||||
"inexact": "⚠️ - Maaaring hindi eksakto ang lyrics para sa kantang ito",
|
||||
"instrumental": "⚠️ - Ito ay isang instrumental na kanta"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "Kontrolin ang pag-play mula sa iyong taskbar ng Windows"
|
||||
},
|
||||
"touchbar": {
|
||||
"description": "Idaragdag ang TouchBar na widget para sa mga user ng macOS"
|
||||
},
|
||||
"tuna-obs": {
|
||||
"description": "Integrasyon kasama ang Tuna na OBS plugin"
|
||||
},
|
||||
"unobtrusive-player": {
|
||||
"description": "Pinipigilan ang player na mag-pop up kapag nagpe-play ng kanta",
|
||||
"name": "Hindi mapanghimasok na Player"
|
||||
},
|
||||
"video-toggle": {
|
||||
"description": "Idaragdag ng button na magpalit sa Video/Kanta na mode. maaari ding opsyonal na alisin ang tab ng video",
|
||||
"menu": {
|
||||
"align": {
|
||||
"label": "Pag-align",
|
||||
"submenu": {
|
||||
"left": "Kaliwa",
|
||||
"middle": "Gitna",
|
||||
"right": "Kanan"
|
||||
}
|
||||
},
|
||||
"force-hide": "Piliting tanggalin ang video tab",
|
||||
"mode": {
|
||||
"submenu": {
|
||||
"disabled": "Naka-disable"
|
||||
}
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"button": "Kanta"
|
||||
}
|
||||
},
|
||||
"visualizer": {
|
||||
"description": "Idaragdag ng visualizer sa player",
|
||||
"menu": {
|
||||
"visualizer-type": "Uri ng Visualizer"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -33,7 +33,7 @@
|
||||
"css-file-not-found": "Le fichier de CSS \"{{cssFile}}\" n'existe pas, ignorer"
|
||||
},
|
||||
"unresponsive": {
|
||||
"details": "Erreur : ne répond pas !\n{{error}}"
|
||||
"details": "Erreur : Aucune réponse!\n{{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "Effacement du cache de l'application"
|
||||
@ -44,7 +44,7 @@
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "Le menu est masqué, utilisez « Alt » pour l'afficher (ou « Échap » si vous utilisez le menu de l'application)",
|
||||
"detail": "Le menu est masqué, utilisez 'Alt' pour l'afficher (ou 'Échap' si vous utilisez le menu de l'application)",
|
||||
"message": "Le masquage du menu est activé",
|
||||
"title": "Masquer le menu activé"
|
||||
},
|
||||
@ -59,7 +59,7 @@
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "Quitté",
|
||||
"quit": "Quitter",
|
||||
"relaunch": "Relancer",
|
||||
"wait": "Attendre"
|
||||
},
|
||||
@ -105,7 +105,7 @@
|
||||
"label": "Définir un proxy",
|
||||
"prompt": {
|
||||
"label": "Entrez l'adresse proxy : (laissez vide pour désactiver)",
|
||||
"placeholder": "Exemple: socks5://127.0.0.1:9999",
|
||||
"placeholder": "Exemple : SOCKS5://127.0.0.1:9999",
|
||||
"title": "Définir un proxy"
|
||||
}
|
||||
},
|
||||
@ -158,6 +158,14 @@
|
||||
},
|
||||
"remove-upgrade-button": "Supprimer le bouton de mise à niveau",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "Annuler",
|
||||
"remove": "Supprimer"
|
||||
},
|
||||
"remove-theme": "Êtes-vous sûr de supprimer le thème personnalisé ?",
|
||||
"remove-theme-message": "Cela va supprimer le thème personnalisé"
|
||||
},
|
||||
"label": "Thème",
|
||||
"submenu": {
|
||||
"import-css-file": "Importer fichier CSS personnalisé",
|
||||
@ -171,7 +179,7 @@
|
||||
"plugins": {
|
||||
"enabled": "Activé",
|
||||
"label": "Extensions",
|
||||
"new": "NOUVELLE"
|
||||
"new": "NOUVEAU"
|
||||
},
|
||||
"view": {
|
||||
"label": "Vue",
|
||||
@ -194,11 +202,15 @@
|
||||
"show": "Afficher la fenêtre",
|
||||
"tooltip": {
|
||||
"default": "YouTube Music",
|
||||
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
|
||||
"with-song-info": "YouTube Music : {{artist}} - {{title}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "Si une publicité apparaît, le son est coupé et la vitesse de lecture est réglée sur 16x",
|
||||
"name": "Accélérer les publicités"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "Bloquer toutes les annonces et le suivi par défaut",
|
||||
"menu": {
|
||||
@ -212,10 +224,18 @@
|
||||
},
|
||||
"album-color-theme": {
|
||||
"description": "Applique un thème dynamique et des effets visuels basés sur la palette des couleurs de l'album",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "Ratio de mélange des couleurs",
|
||||
"submenu": {
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Thème de couleur d'album"
|
||||
},
|
||||
"ambient-mode": {
|
||||
"description": "Applique un effet d'éclairage en jetant des couleurs douces de la vidéo, dans le fond de votre écran.",
|
||||
"description": "Applique un effet d'éclairage en jetant des couleurs douces de la vidéo, dans le fond de votre écran",
|
||||
"menu": {
|
||||
"blur-amount": {
|
||||
"label": "Quantité de flou",
|
||||
@ -259,6 +279,56 @@
|
||||
},
|
||||
"name": "Mode ambiant"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "Ajoute la prise en charge de YouTube Music pour le widget de lecture en cours Amuse par 6K Labs",
|
||||
"name": "Amuse",
|
||||
"response": {
|
||||
"query": "Le serveur API Amuse est en cours d'exécution. Envoyez une requête GET /query pour obtenir des informations sur la chanson."
|
||||
}
|
||||
},
|
||||
"api-server": {
|
||||
"description": "Ajouter un serveur API pour contrôler le lecteur",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "Autoriser",
|
||||
"deny": "Interdire"
|
||||
},
|
||||
"message": "Autoriser {{ID}} ({{origin}}) à accéder à l'API ?",
|
||||
"title": "Requête d'autorisation d'API"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Plan d'autorisation",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "Autoriser à la première requête"
|
||||
},
|
||||
"none": {
|
||||
"label": "Pas d'autorisation"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "Nom de l'hôte"
|
||||
},
|
||||
"port": {
|
||||
"label": "Port"
|
||||
}
|
||||
},
|
||||
"name": "Serveur API [Beta]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "Entrer le nom de l'hôte (par exemple 0.0.0.0) pour le serveur API:",
|
||||
"title": "Nom d'hôte"
|
||||
},
|
||||
"port": {
|
||||
"label": "Entrez le port du serveur de l'API:",
|
||||
"title": "Port"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Appliquer une compression à l'audio (diminue le volume des parties les plus fortes du signal et augmente le volume des parties les plus faibles)",
|
||||
"name": "Compresseur audio"
|
||||
@ -302,8 +372,8 @@
|
||||
"prompt": {
|
||||
"options": {
|
||||
"multi-input": {
|
||||
"fade-in-duration": "Durée du fondu (millisecondes)",
|
||||
"fade-out-duration": "Durée du fondu (millisecondes)",
|
||||
"fade-in-duration": "Durée du début du fondu (ms)",
|
||||
"fade-out-duration": "Durée de sortie du fondu (ms)",
|
||||
"fade-scaling": {
|
||||
"label": "Mise à l'échelle du fondu",
|
||||
"linear": "Linéaire",
|
||||
@ -372,7 +442,7 @@
|
||||
"converting": "Conversion…",
|
||||
"done": "Terminé : {{filePath}}",
|
||||
"download-info": "Téléchargement {{artist}} - {{title}} [{{videoId}}",
|
||||
"download-progress": "Télécharger: {{percent}}%",
|
||||
"download-progress": "Téléchargé : {{percent}}%",
|
||||
"downloading": "Télécharge…",
|
||||
"downloading-counter": "Télécharge {{current}}/{{total}}…",
|
||||
"downloading-playlist": "Téléchargement de la playlist \"{{playlistTitle}}\" – {{playlistSize}} chansons ({{playlistId}})",
|
||||
@ -394,6 +464,21 @@
|
||||
"description": "Télécharge les fichiers MP3/source audio directement depuis l'interface",
|
||||
"menu": {
|
||||
"choose-download-folder": "Choisissez le dossier de téléchargement",
|
||||
"download-finish-settings": {
|
||||
"label": "Télécharger une fois terminé",
|
||||
"prompt": {
|
||||
"last-percent": "Après x pour cent",
|
||||
"last-seconds": "Dernières x secondes",
|
||||
"title": "Configurer quand télécharger"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "Avancé",
|
||||
"enabled": "Activé",
|
||||
"mode": "Mode de temps",
|
||||
"percent": "Pourcent",
|
||||
"seconds": "Secondes"
|
||||
}
|
||||
},
|
||||
"download-playlist": "Télécharger la liste de lecture",
|
||||
"presets": "Préconfigurations",
|
||||
"skip-existing": "Passer les fichiers existants"
|
||||
@ -406,6 +491,18 @@
|
||||
"button": "Télécharger"
|
||||
}
|
||||
},
|
||||
"equalizer": {
|
||||
"description": "Ajoute un égaliseur au lecteur",
|
||||
"menu": {
|
||||
"presets": {
|
||||
"label": "Préréglages",
|
||||
"list": {
|
||||
"bass-booster": "Amplificateur de basses"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Égaliseur"
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "Rend le curseur de volume exponentiel afin qu'il soit plus facile de sélectionner des volumes plus faibles.",
|
||||
"name": "Volume exponentiel"
|
||||
@ -431,6 +528,52 @@
|
||||
"fetched-lyrics": "Paroles récupérées pour Genius"
|
||||
}
|
||||
},
|
||||
"music-together": {
|
||||
"description": "Partage une playlist avec d'autres personnes. Quand l'hôte joue un son, tout les participants entendront le même son",
|
||||
"dialog": {
|
||||
"enter-host": "Entrer l'identifiant de l'hôte"
|
||||
},
|
||||
"internal": {
|
||||
"save": "Enregistrer",
|
||||
"track-source": "Source de la piste audio",
|
||||
"unknown-user": "Utilisateur inconnu"
|
||||
},
|
||||
"menu": {
|
||||
"click-to-copy-id": "Copier l'identifiant de l'hôte",
|
||||
"close": "Fermer Music Together",
|
||||
"connected-users": "Utilisateurs connectés",
|
||||
"disconnect": "Déconnecter Music Together",
|
||||
"empty-user": "Aucun utilisateur connecté",
|
||||
"host": "Hôte du Music Together",
|
||||
"join": "Rejoindre le Music Together",
|
||||
"permission": {
|
||||
"all": "Autorisez les invités à contrôler la musique et le player",
|
||||
"host-only": "Seulement l'hôte peut contrôler les playlists et le lecteur",
|
||||
"playlist": "Autoriser les invités à contrôler les playlists"
|
||||
},
|
||||
"set-permission": "Changer les permissions de contrôle",
|
||||
"status": {
|
||||
"disconnected": "Déconnecté",
|
||||
"guest": "Connecté en tant qu'invité",
|
||||
"host": "Connecté en tant qu'hôte"
|
||||
}
|
||||
},
|
||||
"name": "Music Together [BETA]",
|
||||
"toast": {
|
||||
"add-song-failed": "Echec d'ajout de musique",
|
||||
"closed": "Music Together fermé",
|
||||
"disconnected": "Music Together déconnecté",
|
||||
"host-failed": "Echec de l'hébergement du Music Together",
|
||||
"id-copied": "Identifiant de l'hôte copié dans le presse papier",
|
||||
"id-copy-failed": "Echec de la copie de l'identifiant de l'hôte dans le presse papier",
|
||||
"join-failed": "Echec en rejoignant le Music Together",
|
||||
"joined": "Rejoint le Music Together",
|
||||
"permission-changed": "Permission du Music Together changé à \"{{permission}}\"",
|
||||
"remove-song-failed": "Echec du retrait de la piste",
|
||||
"user-connected": "{{name}} à rejoint le Music Together",
|
||||
"user-disconnected": "{{name}} à quitté le Music Together"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"description": "Flèches de navigation Suivant/Retour directement intégrées dans l'interface, comme dans votre navigateur préféré",
|
||||
"name": "Navigation"
|
||||
@ -467,7 +610,7 @@
|
||||
"keybind-options": {
|
||||
"hotkey": "Raccourci clavier"
|
||||
},
|
||||
"label": "Choisissez un raccourci clavier pour activer l'image dans l'image",
|
||||
"label": "Choisissez un raccourci clavier pour activer le mode Image dans l'image",
|
||||
"title": "Touche de raccourci Image dans l'image"
|
||||
}
|
||||
},
|
||||
@ -523,8 +666,42 @@
|
||||
"description": "Permet de changer la qualité vidéo avec un bouton sur la vidéo",
|
||||
"name": "Changeur de qualité vidéo"
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "Ajouter le support de scrobbling (ex. last.fm, Listenbrainz)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "Erreur lors de l'authetification avec Last.fm\nCachez la popup jusqu'au prochain redémarrage.",
|
||||
"title": "Authentification échouée"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "Paramètres API de Last.fm"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": "Entrer le token utilisateur de ListenBrainz"
|
||||
},
|
||||
"scrobble-alternative-title": "Utiliser des titres alternatifs",
|
||||
"scrobble-other-media": "Scrobbler d'autres médias"
|
||||
},
|
||||
"name": "Scrobble",
|
||||
"prompt": {
|
||||
"lastfm": {
|
||||
"api-key": "Clé API de Last.fm",
|
||||
"api-secret": "API secret de Last.fm"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": {
|
||||
"label": "Entrez votre token utilisateur ListenBrainz :",
|
||||
"title": "Token ListenBrainz"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"shortcuts": {
|
||||
"description": "Permet de définir des raccourcis clavier globaux pour la lecture (lecture/pause/suivant/précédent) + désactiver l'OSD multimédia en remplaçant les touches multimédias + activer Ctrl/CMD + F pour rechercher + activer la prise en charge Linux MPRIS pour les touches multimédias + raccourcis clavier personnalisés pour les utilisateurs avancés",
|
||||
"description": "Permet de définir des raccourcis clavier globaux pour la lecture (lecture/pause/suivant/précédent) + désactiver l'OSD multimédia en remplaçant les touches multimédias + activer Ctrl/CMD + F pour rechercher + activer la prise en charge Linux MPRIS pour les touches multimédias + raccourcis clavier personnalisés pour les utilisateurs avancés.",
|
||||
"menu": {
|
||||
"override-media-keys": "Remplacer les touches multimédias",
|
||||
"set-keybinds": "Définir les contrôles globaux des morceaux"
|
||||
@ -554,6 +731,67 @@
|
||||
"description": "Saute automatiquement les parties non musicales comme l'intro/outro ou les parties de clips vidéo où la chanson n'est pas lue",
|
||||
"name": "SponsorBlock"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "Ajoute des paroles synchronisées aux chansons, grâce à LRClib par exemple.",
|
||||
"errors": {
|
||||
"fetch": "⚠️\tUne erreur s'est produite en allant chercher les paroles.\n\tMerci de réessayer plus tard.",
|
||||
"not-found": "⚠️ Aucune paroles trouvées pour cette musique."
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "Caractère par défaut entre les paroles",
|
||||
"tooltip": "Choisi le caractère par défaut à utiliser pour l'espace entre les paroles"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "Effet de ligne",
|
||||
"submenu": {
|
||||
"fancy": {
|
||||
"label": "Raffiné",
|
||||
"tooltip": "Utilise de grands effets de type application sur la ligne actuelle"
|
||||
},
|
||||
"focus": {
|
||||
"label": "Focus",
|
||||
"tooltip": "Rend seulement la ligne actuelle blanche"
|
||||
},
|
||||
"offset": {
|
||||
"label": "Décalage",
|
||||
"tooltip": "Décale sur la droite la ligne actuelle"
|
||||
},
|
||||
"scale": {
|
||||
"label": "Grossissement",
|
||||
"tooltip": "Agrandis la ligne actuelle"
|
||||
}
|
||||
},
|
||||
"tooltip": "Choisi l'effet à appliquer sur la ligne actuelle"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "Rend les paroles parfaitement synchronisées",
|
||||
"tooltip": "Calcul à la milliseconde près l'affichage de la ligne suivante (peut avoir un faible impact sur les performances)"
|
||||
},
|
||||
"romanization": {
|
||||
"label": "Romaniser les paroles",
|
||||
"tooltip": "Si les paroles sont dans une autre langue, essayez de les afficher dans une version latine."
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "Afficher les paroles même si inexactes",
|
||||
"tooltip": "Si la musique n'est pas trouvé, le plugin essaye à nouveau avec une différence requête.\nLe résultat du deuxième essais peut ne pas être exacte."
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "Afficher les timecodes",
|
||||
"tooltip": "Affiche à côté de chaque paroles son timecode"
|
||||
}
|
||||
},
|
||||
"name": "Paroles Synchronisées",
|
||||
"refetch-btn": {
|
||||
"fetching": "Chargement...",
|
||||
"normal": "Rafraîchir les paroles"
|
||||
},
|
||||
"warnings": {
|
||||
"duration-mismatch": "⚠️ - Les paroles peuvent ne pas être synchronisées à cause d'une différence de durée.",
|
||||
"inexact": "⚠️ - Les paroles de cette chanson peuvent ne pas être exactes",
|
||||
"instrumental": "⚠️ - Cette musique n'a pas de paroles"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "Contrôlez la lecture depuis votre barre des tâches Windows",
|
||||
"name": "Contrôle multimédia de la barre des tâches"
|
||||
@ -566,6 +804,10 @@
|
||||
"description": "Intégration avec le plugin OBS Tuna",
|
||||
"name": "Tuna OBS"
|
||||
},
|
||||
"unobtrusive-player": {
|
||||
"description": "Empêche le lecteur de s'afficher quand un chanson est en lecture",
|
||||
"name": "Lecteur Non-Intrusif"
|
||||
},
|
||||
"video-toggle": {
|
||||
"description": "Ajoute un bouton pour basculer entre le mode Vidéo/Chanson. peut également supprimer tout l'onglet vidéo",
|
||||
"menu": {
|
||||
|
||||
329
src/i18n/resources/he.json
Normal file
@ -0,0 +1,329 @@
|
||||
{
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "שגיאה בהרצת התוסף {{pluginName}}::{{contextName}}",
|
||||
"executed-at-ms": "התוסף {{pluginName}}:{{contextName}} בוצע ב {{ms}}ms",
|
||||
"initialize-failed": "טעינת התוסף \"{{pluginName}}\" נכשלה",
|
||||
"load-all": "טוען את כל התוספים",
|
||||
"load-failed": "שגיאה בטעינת התוסף \"{{pluginName}}\"",
|
||||
"loaded": "התוסף \"{{pluginName}}\" נטען",
|
||||
"unload-failed": "הסרת התוסף \"{{pluginName}} נכשלה",
|
||||
"unloaded": "תוסף {{pluginName}} הורד"
|
||||
}
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"code": "he",
|
||||
"local-name": "עברית",
|
||||
"name": "Hebrew"
|
||||
},
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "הטעינה הסתיימה. הכלים לפמתחים נפתחו"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "i18n נטען"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "התקבלה פקודה מעבר פרוטוקל: {{command}}"
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "קובץ ה-CSS \"{{cssFile}}\" לא קיים. מדלג"
|
||||
},
|
||||
"unresponsive": {
|
||||
"details": "שגיאה ללא תגובה\n{{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "מוחק קבצי מתמון"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "ווינדוס ניסה להציג תוכן מחוץ למסך, גודל חלון={{windowSize}}, גודל מסך={{displaySize}}, מיקום={{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "התפריט מוחבא, השתמש \"Alt\" על להציג אותו (או \"Esacpe\" אם משתמשים בתפריט בתוך האפליקציה)",
|
||||
"message": "הסתרת התפריט מופעלת",
|
||||
"title": "הסתרת התפריט הופעלה"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "אחר כך",
|
||||
"restart-now": "מתחיל את התוכנה מחדש עכשיו"
|
||||
},
|
||||
"detail": "\"{{pluginName}}\" מצריך אתחול",
|
||||
"message": "\"{{pluginName}}\" דורש אתחול",
|
||||
"title": "נדרשת הפעלה מחדש"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "יציאה",
|
||||
"relaunch": "הפעל מחדש",
|
||||
"wait": "המתן"
|
||||
},
|
||||
"detail": "אנו מצטערים על אי הנוחות! אנא בחר מה לעשות:",
|
||||
"message": "האפליקציה אינה מגיבה",
|
||||
"title": "החלון אינו מגיב"
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"disable": "בטל עדכונים",
|
||||
"download": "הורדה",
|
||||
"ok": "אוקיי"
|
||||
},
|
||||
"detail": "גרסה חדשה זמינה, ניתן להוריד אותה ב-{{downloadLink}}",
|
||||
"message": "גירסה חדשה זמינה כעת",
|
||||
"title": "קיים עדכון חדש"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"about": "אודות",
|
||||
"navigation": {
|
||||
"label": "ניווט",
|
||||
"submenu": {
|
||||
"copy-current-url": "העתק את כתובת ה-URL",
|
||||
"go-back": "חזור אחורה",
|
||||
"go-forward": "לך קדימה",
|
||||
"quit": "יציאה",
|
||||
"restart": "הפעל מחדש את היישום"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"label": "אפשרויות",
|
||||
"submenu": {
|
||||
"advanced-options": {
|
||||
"label": "אפשרויות מתקדמות",
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "אפס את מטמון האפליקציה כאשר האפליקציה מתחילה",
|
||||
"disable-hardware-acceleration": "השבת האצת החומרה",
|
||||
"edit-config-json": "ערוך את config.json",
|
||||
"override-user-agent": "עוקף את סוכן המשתמש",
|
||||
"restart-on-config-changes": "הפעל מחדש בשינויי תצורה",
|
||||
"set-proxy": {
|
||||
"label": "הגדר שרת proxy",
|
||||
"prompt": {
|
||||
"label": "הזן כתובת פרוקסי: (להשאיר ריק כדי להשבית)",
|
||||
"placeholder": "דוגמה: SOCKS5://127.0.0.1:9999",
|
||||
"title": "הגדר שרת proxy"
|
||||
}
|
||||
},
|
||||
"toggle-dev-tools": "שנה את מצב כלי המפתחים"
|
||||
}
|
||||
},
|
||||
"always-on-top": "השאר מקדימה",
|
||||
"auto-update": "עדכון אוטומטי",
|
||||
"hide-menu": {
|
||||
"dialog": {
|
||||
"message": "התפריט יוסתר בהפעלה הבאה, השתמש ב-[Alt] כדי להציג אותו (או סמן את [`] אם אתה משתמש בתפריט בתוך האפליקציה)",
|
||||
"title": "הסתר תפריט מופעל"
|
||||
},
|
||||
"label": "הסתר את התפריט"
|
||||
},
|
||||
"language": {
|
||||
"dialog": {
|
||||
"message": "השפה תשתנה לאחר הפעלת היישום מחדש",
|
||||
"title": "השפה שונתה"
|
||||
},
|
||||
"label": "שפה",
|
||||
"submenu": {
|
||||
"to-help-translate": "רוצים לעזור לתרגם? לחץ כאן"
|
||||
}
|
||||
},
|
||||
"resume-on-start": "המשך את השיר האחרון עם הפעלת האפליקציה",
|
||||
"single-instance-lock": "נעילת מופע יחיד",
|
||||
"start-at-login": "התחל בכניסה",
|
||||
"starting-page": {
|
||||
"label": "דף פתיחה",
|
||||
"unset": "בטל"
|
||||
},
|
||||
"tray": {
|
||||
"label": "מגש",
|
||||
"submenu": {
|
||||
"disabled": "מושבת",
|
||||
"enabled-and-hide-app": "מופעל והסתר אפליקציה",
|
||||
"enabled-and-show-app": "מופעל והמציג את האפליקציה",
|
||||
"play-pause-on-click": "הפעל/השהה בלחיצה"
|
||||
}
|
||||
},
|
||||
"visual-tweaks": {
|
||||
"label": "תיקונים חזותיים",
|
||||
"submenu": {
|
||||
"like-buttons": {
|
||||
"default": "ברירת מחדל",
|
||||
"force-show": "הפעל בכוח",
|
||||
"hide": "הסתר",
|
||||
"label": "כפתורי לייק"
|
||||
},
|
||||
"remove-upgrade-button": "הסר לחצן שדרוג",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "ביטול",
|
||||
"remove": "הסר"
|
||||
},
|
||||
"remove-theme": "האם אתה בטוח שברצונך להסיר את העיצוב המותאם אישית?",
|
||||
"remove-theme-message": "פעולה זו תסיר את ערכת הנושא המותאמת אישית"
|
||||
},
|
||||
"label": "ערכת נושא",
|
||||
"submenu": {
|
||||
"import-css-file": "ייבא קובץ CSS מותאם אישית",
|
||||
"no-theme": "ללא ערכת נושא"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"enabled": "מופעל",
|
||||
"label": "פלאגינים",
|
||||
"new": "חדש"
|
||||
},
|
||||
"view": {
|
||||
"label": "מראה",
|
||||
"submenu": {
|
||||
"force-reload": "התחל מחדש בכוח",
|
||||
"reload": "טען מחדש",
|
||||
"reset-zoom": "גודל אמיתי",
|
||||
"toggle-fullscreen": "מסך מלא",
|
||||
"zoom-in": "התקרב",
|
||||
"zoom-out": "התרחק"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"next": "הבא",
|
||||
"play-pause": "נגן/הפסק",
|
||||
"previous": "הקודם",
|
||||
"quit": "יציאה",
|
||||
"restart": "הפעל מחדש",
|
||||
"show": "הראה חלון",
|
||||
"tooltip": {
|
||||
"default": "יוטיוב מיוזיק",
|
||||
"with-song-info": "יוטיוב מיוזיק: {{artist}} - {{title}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "במקרה של פרסומת, הסאונד מושתק ומהירות הוידאו מוכפלת ב-16",
|
||||
"name": "הגבר מהירות פרסומת"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "חסום את כל המודעות והמעקב מחוץ לקופסה",
|
||||
"menu": {
|
||||
"blocker": "חוסם"
|
||||
},
|
||||
"name": "חוסם פרסומות"
|
||||
},
|
||||
"album-actions": {
|
||||
"description": "מוסיף לחצני ביטול אהבתי, דיסלייק, 'אהבתי' ו'לא אהבתי' כדי להחיל זאת על כל השירים ברשימת השמעה או אלבום",
|
||||
"name": "פעולות אלבום"
|
||||
},
|
||||
"album-color-theme": {
|
||||
"description": "מחיל נושא דינמי ואפקטים חזותיים המבוססים על לוח הצבעים של האלבום",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"submenu": {
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "ערכת נושא צבע אלבום"
|
||||
},
|
||||
"ambient-mode": {
|
||||
"description": "מחיל אפקט תאורה על ידי הטלת צבעים עדינים מהסרטון, אל הרקע של המסך",
|
||||
"menu": {
|
||||
"blur-amount": {
|
||||
"label": "כמות טשטוש",
|
||||
"submenu": {
|
||||
"pixels": "{{blurAmount}} פיקסלים"
|
||||
}
|
||||
},
|
||||
"buffer": {
|
||||
"submenu": {
|
||||
"buffer": "{{buffer}}"
|
||||
}
|
||||
},
|
||||
"opacity": {
|
||||
"label": "אֲטִימוּת",
|
||||
"submenu": {
|
||||
"percent": "{{opacity}}%"
|
||||
}
|
||||
},
|
||||
"quality": {
|
||||
"label": "אֵיכוּת",
|
||||
"submenu": {
|
||||
"pixels": "{{quality}} פיקסלים"
|
||||
}
|
||||
},
|
||||
"size": {
|
||||
"label": "גוֹדֶל",
|
||||
"submenu": {
|
||||
"percent": "{{size}}%"
|
||||
}
|
||||
},
|
||||
"smoothness-transition": {
|
||||
"submenu": {
|
||||
"during": "במהלך {{interpolationTime}} שניות"
|
||||
}
|
||||
},
|
||||
"use-fullscreen": {
|
||||
"label": "שימוש במסך מלא"
|
||||
}
|
||||
},
|
||||
"name": "מצב אווירה"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "מוסיף תמיכה ב-YouTube Music עבור הווידג'ט של Amuse המתנגן כעת על ידי 6K Labs"
|
||||
},
|
||||
"discord": {
|
||||
"menu": {
|
||||
"hide-github-button": "הסתר את לחצן הקישור של GitHub",
|
||||
"play-on-youtube-music": "הפעל ביוטיוב מיוזיק",
|
||||
"set-inactivity-timeout": "הגדר פסק זמן לחוסר פעילות"
|
||||
}
|
||||
},
|
||||
"downloader": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"error": {
|
||||
"title": "שגיאה בהורדה!"
|
||||
}
|
||||
},
|
||||
"feedback": {
|
||||
"downloading": "מוריד…",
|
||||
"loading": "בטְעִינָה…",
|
||||
"playlist-has-only-one-song": "לפלייליסט יש רק פריט אחד, מוריד אותו ישירות",
|
||||
"playlist-id-not-found": "לא נמצא מזהה ID פלייליסט",
|
||||
"preparing-file": "מכין קובץ…",
|
||||
"saving": "שומר…",
|
||||
"trying-to-get-playlist-id": "מנסה להשיג מזהה פלייליסט: {{playlistId}}",
|
||||
"video-id-not-found": "הסרטון לא נמצא"
|
||||
}
|
||||
},
|
||||
"description": "מוריד MP3 / אודיו מקור ישירות מהממשק",
|
||||
"menu": {
|
||||
"choose-download-folder": "בחר תיקיית הורדה",
|
||||
"download-finish-settings": {
|
||||
"label": "הורדה בסיום",
|
||||
"prompt": {
|
||||
"last-percent": "אחרי x אחוזים",
|
||||
"last-seconds": "נשארו x שניות",
|
||||
"title": "הגדר מתי להוריד"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "מִתקַדֵם",
|
||||
"enabled": "מופעל",
|
||||
"percent": "אָחוּז",
|
||||
"seconds": "שניות"
|
||||
}
|
||||
},
|
||||
"presets": "הגדרות קבועות מראש",
|
||||
"skip-existing": "דלג על קבצים קיימים"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
315
src/i18n/resources/hi.json
Normal file
@ -0,0 +1,315 @@
|
||||
{
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "{{pluginName}}::{{contextName}} प्लगइन निष्पादित करने में विफल",
|
||||
"executed-at-ms": "{{pluginName}}::{{contextName}} प्लगिन {{ms}} में निष्पाशित हुआ",
|
||||
"initialize-failed": "\"{{pluginName}}\" प्लगिन इनिशियलाइज़ होने में असफल रहा",
|
||||
"load-all": "सारे प्लगिन लोड हो चुके हैं",
|
||||
"load-failed": "\"{{pluginName}}\" प्लगिन लोड होने में असफल रहा",
|
||||
"loaded": "प्लगिन \"{{pluginName}}\" लोड हो चुका है",
|
||||
"unload-failed": "\"{{pluginName}}\" अनलोड होने में असफल रहा",
|
||||
"unloaded": "प्लगिन \"{{pluginName}}\" अनलोड हो गया है"
|
||||
}
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"code": "hi",
|
||||
"local-name": "हिंदी",
|
||||
"name": "Hindi"
|
||||
},
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "लोडिंग समाप्त हुई । डेवटूल्स खोले गए हैं"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "i18n लोड हो गया है"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "प्रोटोकॉल पर आदेश प्राप्त हुआ \"{{command}}\""
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "सीएसएस फाइल \"{{cssFile}}\" मौजूद नही है, अनदेखा किया जा रहा है"
|
||||
},
|
||||
"unresponsive": {
|
||||
"details": "अनरेस्पॉन्सिव एरर\n{{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "एप कैश साफ़ किया जा रहा है"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "विंडो ने ऑफस्क्रीन रेंडर करने का प्रयास किया, विंडो साइज={{windowSize}}, डिस्प्ले साइज={{displaySize}}, पोजिशन={{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "मेनू छिपा हुआ है, देखने के लिए 'Alt' का इस्तेमाल करें (या 'Escape' अगर आप इन-एप मेनू का उपयोग कर रहे हैं)",
|
||||
"message": "मेनू छिपाएँ सक्षम है",
|
||||
"title": "मेनू छिपाएँ सक्षम"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "बाद में",
|
||||
"restart-now": "पुनः आरंभ करें"
|
||||
},
|
||||
"detail": "\"{{pluginName}}\" प्रभाव लेने के लिए प्लगिन को पुनः शुरू करें",
|
||||
"message": "\"{{pluginName}}\" पुनः आरंभ करने की आवश्यकता है",
|
||||
"title": "पुनः आरंभ करने की आवश्यकता है"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "बंद करें",
|
||||
"relaunch": "पुनः लॉन्च करें",
|
||||
"wait": "रुकें"
|
||||
},
|
||||
"detail": "असुविधाए के लिए खेद हैं! कृपया चुनें कि क्या करना है:",
|
||||
"message": "एप्लीकेशन अनुत्तरदायी है",
|
||||
"title": "विंडो अनुत्तरदायी है"
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"disable": "अपडेट्स बंद करें",
|
||||
"download": "डाउनलोड",
|
||||
"ok": "ठीक है"
|
||||
},
|
||||
"detail": "एक नया वर्जन उपलब्ध है, {{downloadLink}} से डाउनलोड किया जा सकता है",
|
||||
"message": "एक नया वर्जन उपलब्ध है",
|
||||
"title": "अपडेट उपलब्ध है"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"about": "के बारे में",
|
||||
"navigation": {
|
||||
"label": "मार्गदर्शन",
|
||||
"submenu": {
|
||||
"copy-current-url": "मौजूदा यूआरएल कापी करें",
|
||||
"go-back": "पीछे जाएं",
|
||||
"go-forward": "आगे जाएं",
|
||||
"quit": "निकास",
|
||||
"restart": "एप को पुनः शुरू करें"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"label": "विकल्प",
|
||||
"submenu": {
|
||||
"advanced-options": {
|
||||
"label": "उन्नत विकल्प",
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "एप शुरू होते समय कैश रीसेट करें",
|
||||
"disable-hardware-acceleration": "हार्डवेयर एक्सीलरेशन बंद करें",
|
||||
"edit-config-json": "config.json को एडिट करें",
|
||||
"override-user-agent": "यूजर-एजेंट को रद्द करें",
|
||||
"restart-on-config-changes": "कनफिग बदलने पे पुनः शुरू करें",
|
||||
"set-proxy": {
|
||||
"label": "प्रॉक्सी तय करें",
|
||||
"prompt": {
|
||||
"label": "प्प्रॉक्सी पता डालें: (बंद करने के लिए खाली छोड़ें)",
|
||||
"placeholder": "उदाहरण: SOCKS5://127.0.0.1:9999",
|
||||
"title": "प्रॉक्सी तय करें"
|
||||
}
|
||||
},
|
||||
"toggle-dev-tools": "डेवटूल्स को टॉगल करें"
|
||||
}
|
||||
},
|
||||
"always-on-top": "हमेशा ऊपर",
|
||||
"auto-update": "ऑटो अपडेट",
|
||||
"hide-menu": {
|
||||
"dialog": {
|
||||
"message": "अगले लॉन्च पे मेनू छुपा दिया जायेगा, देखने के लिए [Alt] का प्रयोग करें (या बैकटिक [`] अगर आप इन एप मेनू का प्रयोग कर रहे हैं)",
|
||||
"title": "मेनू छुपाना सक्रिय है"
|
||||
},
|
||||
"label": "मेनू छुपाएं"
|
||||
},
|
||||
"language": {
|
||||
"dialog": {
|
||||
"message": "पुनः शुरू करने के बाद भाषा बदल दी जाएगी",
|
||||
"title": "भाषा बदल दी गई है"
|
||||
},
|
||||
"label": "भाषा",
|
||||
"submenu": {
|
||||
"to-help-translate": "अनुवाद करने में सहायता करना चाहते हैं? यहां दबाएं"
|
||||
}
|
||||
},
|
||||
"resume-on-start": "एप शुरू होने पर आखरी गाना फिर शुरू करें",
|
||||
"single-instance-lock": "सिंगल इंस्टेंस लॉक",
|
||||
"start-at-login": "शुरू होने पे लॉगिन करें",
|
||||
"starting-page": {
|
||||
"label": "स्टार्टिंग पेज",
|
||||
"unset": "अनसेट"
|
||||
},
|
||||
"tray": {
|
||||
"label": "ट्रे",
|
||||
"submenu": {
|
||||
"disabled": "बंद किया गया है",
|
||||
"enabled-and-hide-app": "सक्रिय है और एप छुपाएं",
|
||||
"enabled-and-show-app": "सक्रिय है और एप दिखाएं",
|
||||
"play-pause-on-click": "क्लिक पर प्ले/पोज"
|
||||
}
|
||||
},
|
||||
"visual-tweaks": {
|
||||
"label": "दृश्य परिवर्तन",
|
||||
"submenu": {
|
||||
"like-buttons": {
|
||||
"default": "डिफॉल्ट",
|
||||
"force-show": "बल पूर्वक दिखाएं",
|
||||
"hide": "छुपाएं",
|
||||
"label": "लाइक बटंस"
|
||||
},
|
||||
"remove-upgrade-button": "अपग्रेड बटन हटाएं",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "रद्द करें",
|
||||
"remove": "हटाएं"
|
||||
},
|
||||
"remove-theme": "क्या आप निश्चित है आपको कस्टम थीम हटानी है?",
|
||||
"remove-theme-message": "यह कस्टम थीम को हटा देगा"
|
||||
},
|
||||
"label": "थीम",
|
||||
"submenu": {
|
||||
"import-css-file": "कस्टम सीएसएस फाइल को आयात करें",
|
||||
"no-theme": "कोई थीम नही"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"enabled": "सक्रिय",
|
||||
"label": "प्लगिंस",
|
||||
"new": "नया"
|
||||
},
|
||||
"view": {
|
||||
"label": "देखें",
|
||||
"submenu": {
|
||||
"force-reload": "बल पूर्वक रिलोड करें",
|
||||
"reload": "रिलोड करें",
|
||||
"reset-zoom": "वास्तविक आकार",
|
||||
"toggle-fullscreen": "टागल फुल स्क्रीन",
|
||||
"zoom-in": "ज़ूम इन",
|
||||
"zoom-out": "ज़ूम आउट"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"next": "अगला",
|
||||
"play-pause": "चलाएँ/रोकें",
|
||||
"previous": "पिछला",
|
||||
"quit": "निकास",
|
||||
"restart": "ऐप पुनः प्रारंभ करें",
|
||||
"show": "ऐप दिखाए",
|
||||
"tooltip": {
|
||||
"default": "यूट्यूब म्यूजिक",
|
||||
"with-song-info": "यूट्यूब म्यूजिक: {{artist}} - {{title}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "यदि कोई विज्ञापन चलता है तो यह ऑडियो को म्यूट कर देता है और प्लेबैक गति 16x पर सेट कर देता है",
|
||||
"name": "विज्ञापन की गति बढ़ाना"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "डिफ़ॉल्ट रूप से सभी विज्ञापनों और ट्रैकिंग को ब्लॉक करें",
|
||||
"menu": {
|
||||
"blocker": "ब्लॉकर"
|
||||
},
|
||||
"name": "विज्ञापन अवरोधक"
|
||||
},
|
||||
"album-actions": {
|
||||
"description": "प्लेलिस्ट या एल्बम के सभी गानों पर लागू करने के लिए \"अंडिसलाइक,\" \"डिसलाइक,\" \"लाइक,\" और \"अनलाइक\" बटन जोड़ता है",
|
||||
"name": "एल्बम एक्शन"
|
||||
},
|
||||
"album-color-theme": {
|
||||
"description": "एल्बम रंग पैलेट के आधार पर एक गतिशील थीम और दृश्य प्रभाव लागू करता है",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "रंग मिश्रण अनुपात",
|
||||
"submenu": {
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "एल्बम रंग थीम"
|
||||
},
|
||||
"ambient-mode": {
|
||||
"description": "वीडियो से हल्के रंगों को आपकी स्क्रीन की पृष्ठभूमि में डालकर एक प्रकाश प्रभाव लागू करता है",
|
||||
"menu": {
|
||||
"blur-amount": {
|
||||
"label": "धुंधलापन मात्रा",
|
||||
"submenu": {
|
||||
"pixels": "{{blurAmount}} पिक्सल"
|
||||
}
|
||||
},
|
||||
"buffer": {
|
||||
"label": "बफर",
|
||||
"submenu": {
|
||||
"buffer": "{{buffer}}"
|
||||
}
|
||||
},
|
||||
"opacity": {
|
||||
"label": "अस्पष्टता",
|
||||
"submenu": {
|
||||
"percent": "{{opacity}}%"
|
||||
}
|
||||
},
|
||||
"quality": {
|
||||
"label": "गुणवत्ता",
|
||||
"submenu": {
|
||||
"pixels": "{{quality}} पिक्सल"
|
||||
}
|
||||
},
|
||||
"size": {
|
||||
"label": "माप",
|
||||
"submenu": {
|
||||
"percent": "{{size}}%"
|
||||
}
|
||||
},
|
||||
"smoothness-transition": {
|
||||
"label": "चिकनाई संक्रमण",
|
||||
"submenu": {
|
||||
"during": "दौरान {{interpolationTime}}"
|
||||
}
|
||||
},
|
||||
"use-fullscreen": {
|
||||
"label": "पूर्णस्क्रीन का उपयोग"
|
||||
}
|
||||
},
|
||||
"name": "अम्बिएन्ट मोड्"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "6K लैब्स द्वारा Amuse now playing विजेट के लिए YouTube म्यूजिक समर्थन जोड़ा गया",
|
||||
"name": "मन बहलाना",
|
||||
"response": {
|
||||
"query": "अमयूस ए.पि.ऐ. चल रहा है। गाने की जान्कारि होने के लिये GET /query कीजिये।"
|
||||
}
|
||||
},
|
||||
"api-server": {
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "अनुमति दें",
|
||||
"deny": "मना करना"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"video-toggle": {
|
||||
"menu": {
|
||||
"align": {
|
||||
"submenu": {
|
||||
"left": "बाएं",
|
||||
"middle": "मध्य",
|
||||
"right": "दाहिने"
|
||||
}
|
||||
},
|
||||
"force-hide": "वीडियो टैब को बलपूर्वक हटाएं",
|
||||
"mode": {
|
||||
"label": "तरीका"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
48
src/i18n/resources/hr.json
Normal file
@ -0,0 +1,48 @@
|
||||
{
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "Neuspjelo izvršenje plugina {{pluginName}}::{{contextName}}",
|
||||
"executed-at-ms": "Plugin{{pluginName}}::{{contextName}}{{je izvršen za {{ms}}ms",
|
||||
"initialize-failed": "Nije uspilo inicijalitirati plugin \"{{pluginName}}\"",
|
||||
"load-all": "Učitavaju se svi plugini",
|
||||
"load-failed": "Neuspješno ućitavanje plugina \"{{pluginName}}\"",
|
||||
"loaded": "Plugin \"{{pluginName}}\" je učitan"
|
||||
}
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"code": "hr",
|
||||
"local-name": "Hrvatski",
|
||||
"name": "Croatian"
|
||||
},
|
||||
"main": {
|
||||
"console": {
|
||||
"i18n": {
|
||||
"loaded": "i18n je učitan"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "Zaprimljena komanda preko protokola: \"{{command}}\""
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "CSS fajl \"{{cssFile}}\" ne postoji, ignorišem"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "Brisanje cache memorije u toku"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "Meni je sakriven, pritisni 'Alt' da bi se prikazao (ili 'Escape' ako se koristi In-App Menu)",
|
||||
"message": "Sakriveni Meni je uključen"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "Kasnije",
|
||||
"restart-now": "Pokreni ponovo"
|
||||
},
|
||||
"detail": "\"{{pluginName}}\" dodatak zahtjeva pokretanje aplikacije ponovo da bi promjene bile vidljive"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
845
src/i18n/resources/hu.json
Normal file
@ -0,0 +1,845 @@
|
||||
{
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "Nem sikerült futtatni a bővítményt {{pluginName}}::{{contextName}}",
|
||||
"executed-at-ms": "A {{pluginName}}::{{contextName}} bővítmény végrehajtva {{ms}} ms alatt",
|
||||
"initialize-failed": "Nem sikerült inicializálni a \"{{pluginName}}\" bővítményt",
|
||||
"load-all": "Összes bővítmény betöltése",
|
||||
"load-failed": "Nem sikerült betölteni a \"{{pluginName}}\" bővítményt",
|
||||
"loaded": "\"{{pluginName}}\" bővítmény betöltve",
|
||||
"unload-failed": "Nem sikerült a \"{{pluginName}}\" bővítményt kikapcsolni",
|
||||
"unloaded": "A \"{{pluginName}}\" bővítmény kikapcsolva"
|
||||
}
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"code": "hu",
|
||||
"local-name": "Magyar",
|
||||
"name": "Hungarian"
|
||||
},
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "Betöltés befejezve. DevTools megnyitva"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "i18n betöltve"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "Fogadott parancs a protokollon keresztül: \"{{command}}\""
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "CSS fájl \"{{cssFile}}\" nem létezik, figyelmen kívül hagyva"
|
||||
},
|
||||
"unresponsive": {
|
||||
"details": "Nem válaszol!\n{{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "Alkalmazás gyorsítótárának törlése"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "Az ablak a képernyőn kívül próbált betölteni, ablakMéret={{windowSize}}, kijelzőMéret={{displaySize}}, pozíció={{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "A menü el van rejtve, a megjelenítéshez használd az 'Alt' billentyűt (vagy az 'Escape' billentyűt, ha az alkalmazáson belüli menüt használod)",
|
||||
"message": "A menü elrejtése engedélyezve",
|
||||
"title": "Menü elrejtése engedélyezve"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "Később",
|
||||
"restart-now": "Újraindítás most"
|
||||
},
|
||||
"detail": "A \"{{pluginName}}\" bővítmény bekapcsolása az alkalmazás újraindítását igényli",
|
||||
"message": "\"{{pluginName}}\" nevű bővítményt újra kell indítani",
|
||||
"title": "Újraindítás szükséges"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "Kilépés",
|
||||
"relaunch": "Újraindítás",
|
||||
"wait": "Várj"
|
||||
},
|
||||
"detail": "Elnézést a kellemetlenségért! Válaszdd ki mi történjen:",
|
||||
"message": "Az alkalmazás nem válaszol",
|
||||
"title": "Az ablak nem válaszol"
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"disable": "Frissítések kikapcsolása",
|
||||
"download": "Letöltés",
|
||||
"ok": "OK"
|
||||
},
|
||||
"detail": "Új verzió elérhető, amely letölthető az alábbi linken {{downloadLink}}",
|
||||
"message": "Új verzió áll rendelkezésre",
|
||||
"title": "Frissítés elérhető"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"about": "Névjegy",
|
||||
"navigation": {
|
||||
"label": "Navigáció",
|
||||
"submenu": {
|
||||
"copy-current-url": "Jelenlegi URL másolása",
|
||||
"go-back": "Vissza",
|
||||
"go-forward": "Előre",
|
||||
"quit": "Kilépés",
|
||||
"restart": "Alkalmazás újraindítása"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"label": "Beállítások",
|
||||
"submenu": {
|
||||
"advanced-options": {
|
||||
"label": "Speciális beállítások",
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "Alkalmazás gyorsítótárának törlése indításkor",
|
||||
"disable-hardware-acceleration": "Hardveres gyorsítás kikapcsolása",
|
||||
"edit-config-json": "config.json szerkesztése",
|
||||
"override-user-agent": "Kliens felülírása",
|
||||
"restart-on-config-changes": "Újraindítás a konfigurációs változtatás után",
|
||||
"set-proxy": {
|
||||
"label": "Proxy beállítása",
|
||||
"prompt": {
|
||||
"label": "Proxy cím megadása: (Hagyja üresen a kikapcsoláshoz)",
|
||||
"placeholder": "Példa: SOCKS5://127.0.0.1:9999",
|
||||
"title": "Proxy beállítása"
|
||||
}
|
||||
},
|
||||
"toggle-dev-tools": "Fejlesztőeszközök BE/KI"
|
||||
}
|
||||
},
|
||||
"always-on-top": "Mindig látható",
|
||||
"auto-update": "Automatikus frissítés",
|
||||
"hide-menu": {
|
||||
"dialog": {
|
||||
"message": "A menü a következő indításnál rejtve lesz, használja az [Alt] billentyűt a megjelenítéséhez (vagy a backtick [`] billentyűt, ha az alkalmazás belső menüjét használja)",
|
||||
"title": "Menü elrejtés engedélyezve"
|
||||
},
|
||||
"label": "Menü elrejtése"
|
||||
},
|
||||
"language": {
|
||||
"dialog": {
|
||||
"message": "A nyelv az allkalmazás újraindítása után megváltozik",
|
||||
"title": "Nyelv megváltoztatva"
|
||||
},
|
||||
"label": "Nyelv",
|
||||
"submenu": {
|
||||
"to-help-translate": "Szeretnél segíteni a fordításban? Kattints ide"
|
||||
}
|
||||
},
|
||||
"resume-on-start": "Zene folytatása az alkalmazás indításakor",
|
||||
"single-instance-lock": "Csak egy példány",
|
||||
"start-at-login": "Futtatás rendszerindításkor",
|
||||
"starting-page": {
|
||||
"label": "Induláskor",
|
||||
"unset": "Visszaállítás"
|
||||
},
|
||||
"tray": {
|
||||
"label": "Tálca ikon",
|
||||
"submenu": {
|
||||
"disabled": "Letiltva",
|
||||
"enabled-and-hide-app": "Engedélyezve és alkalmazás elrejtése",
|
||||
"enabled-and-show-app": "Engedélyezve és alkalmazás megjelenítése",
|
||||
"play-pause-on-click": "Lejátszás/Szünet az ikonra kattintással"
|
||||
}
|
||||
},
|
||||
"visual-tweaks": {
|
||||
"label": "Megjelenési beállítások",
|
||||
"submenu": {
|
||||
"like-buttons": {
|
||||
"default": "Alapértelmezett",
|
||||
"force-show": "Megjelenítés kényszerítése",
|
||||
"hide": "Elrejtése",
|
||||
"label": "Reakció gombok"
|
||||
},
|
||||
"remove-upgrade-button": "Előfizetés gombjának eltávolítása",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "Mégse",
|
||||
"remove": "Eltávolít"
|
||||
},
|
||||
"remove-theme": "Biztos, hogy el szeretnéd távolítani az egyéni témát?",
|
||||
"remove-theme-message": "Ez eltávolítja az egyéni témát"
|
||||
},
|
||||
"label": "Téma",
|
||||
"submenu": {
|
||||
"import-css-file": "Egyéni CSS fájl importálása",
|
||||
"no-theme": "Nincs téma"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"enabled": "Bekapcsolva",
|
||||
"label": "Bővítmények",
|
||||
"new": "ÚJ"
|
||||
},
|
||||
"view": {
|
||||
"label": "Nézet",
|
||||
"submenu": {
|
||||
"force-reload": "Kényszerített újratöltés",
|
||||
"reload": "Újratöltés",
|
||||
"reset-zoom": "Alapértelmezett méret visszaállítása",
|
||||
"toggle-fullscreen": "Teljes képernyő be/ki",
|
||||
"zoom-in": "Szöveg nagyítása",
|
||||
"zoom-out": "Szöveg kicsinyítése"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"next": "Következő",
|
||||
"play-pause": "Lejátszás/Szünet",
|
||||
"previous": "Előző",
|
||||
"quit": "Kilépés",
|
||||
"restart": "YT Music újraindítása",
|
||||
"show": "Ablak megjelenítése",
|
||||
"tooltip": {
|
||||
"default": "YouTube Music",
|
||||
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "Ha egy hirdetés elindul, elnémítja a hangot, és a lejátszási sebességet 16x-ra állítja",
|
||||
"name": "Hirdetésgyorsítás"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "Alapértelmezetten minden hirdetés és nyomkövetés blokkolása",
|
||||
"menu": {
|
||||
"blocker": "Blokkolási módszer"
|
||||
},
|
||||
"name": "Reklámblokkoló"
|
||||
},
|
||||
"album-actions": {
|
||||
"description": "Hozzáadja a Tetszik, Nem tetszik és ezek visszavonására szolgáló gombokat, hogy ezeket az összes dalra alkalmazhasd egy lejátszási listán vagy albumban",
|
||||
"name": "Album műveletek"
|
||||
},
|
||||
"album-color-theme": {
|
||||
"description": "Dinamikus témát és vizuális effekteket alkalmaz az album színpalettája alapján",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "Színkeverés mértéke",
|
||||
"submenu": {
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Album színtéma"
|
||||
},
|
||||
"ambient-mode": {
|
||||
"description": "Fényhatás effektust alkalmaz, amely a videóból származó lágy színeket vetíti a képernyő hátterére",
|
||||
"menu": {
|
||||
"blur-amount": {
|
||||
"label": "Elmosódás mértéke",
|
||||
"submenu": {
|
||||
"pixels": "{{blurAmount}} pixel"
|
||||
}
|
||||
},
|
||||
"buffer": {
|
||||
"label": "Puffer",
|
||||
"submenu": {
|
||||
"buffer": "{{buffer}}"
|
||||
}
|
||||
},
|
||||
"opacity": {
|
||||
"label": "Átlátszóság",
|
||||
"submenu": {
|
||||
"percent": "{{opacity}}%"
|
||||
}
|
||||
},
|
||||
"quality": {
|
||||
"label": "Minőség",
|
||||
"submenu": {
|
||||
"pixels": "{{quality}} pixel"
|
||||
}
|
||||
},
|
||||
"size": {
|
||||
"label": "Méret",
|
||||
"submenu": {
|
||||
"percent": "{{size}}%"
|
||||
}
|
||||
},
|
||||
"smoothness-transition": {
|
||||
"label": "Sima átmenet",
|
||||
"submenu": {
|
||||
"during": "{{interpolationTime}} másodperc alatt"
|
||||
}
|
||||
},
|
||||
"use-fullscreen": {
|
||||
"label": "Teljes képernyő használata"
|
||||
}
|
||||
},
|
||||
"name": "Ambient mód"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "Hozzáadja a YouTube Music támogatását az Amuse \"now playing\" widgethez a 6K Labs által",
|
||||
"name": "Amuse",
|
||||
"response": {
|
||||
"query": "Az Amuse API szerver fut. Használja a GET /query kérést a dalinformációk lekéréséhez."
|
||||
}
|
||||
},
|
||||
"api-server": {
|
||||
"description": "Hozzáad egy API szervert a lejátszó vezérléséhez",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "Engedélyez",
|
||||
"deny": "Megtagad"
|
||||
},
|
||||
"message": "Engedélyezi, hogy {{ID}} ({{origin}}) hozzáférjen az API-hoz?",
|
||||
"title": "API-hozzáférési kérelem"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Engedélyezési módszer",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "Engedélyezés az első kérésnél"
|
||||
},
|
||||
"none": {
|
||||
"label": "Nincs engedélyezés"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "Kiszolgáló név"
|
||||
},
|
||||
"port": {
|
||||
"label": "Port"
|
||||
}
|
||||
},
|
||||
"name": "API szerver [Béta]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "Adja meg az API szerver kiszolgáló nevét (például 0.0.0.0):",
|
||||
"title": "Kiszolgáló neve"
|
||||
},
|
||||
"port": {
|
||||
"label": "Adja meg az API szerver portját:",
|
||||
"title": "Port"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Hang tömörítés alkalmazása (csökkenti a jel legzajosabb részeinek hangerősségét, és emeli a legcsendesebb részek hangerősségét)",
|
||||
"name": "Hangtömörítő"
|
||||
},
|
||||
"blur-nav-bar": {
|
||||
"description": "Átlátszóvá és elmosódottá teszi a navigációs sávot",
|
||||
"name": "Navigációs sáv elmosása"
|
||||
},
|
||||
"bypass-age-restrictions": {
|
||||
"description": "A YouTube korellenőrzését kihagyja, ezáltal nem kel meg erősíteni a zene meghallgatása elött. (Automatikusan megerősítve lesz.)",
|
||||
"name": "Korellenőrzés kihagyása"
|
||||
},
|
||||
"captions-selector": {
|
||||
"description": "Felirat választó a YouTube Music zenékhez",
|
||||
"menu": {
|
||||
"autoload": "Automatikusan kiválasztja az utoljára használt feliratot",
|
||||
"disable-captions": "Alapértelmezetten nincsenek feliratok"
|
||||
},
|
||||
"name": "Feliratválasztó",
|
||||
"prompt": {
|
||||
"selector": {
|
||||
"label": "Jelenlegi feliratnyelv: {{language}}",
|
||||
"none": "Nincs",
|
||||
"title": "Felirat nyelvének kiválasztása"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"title": "Feliratválasztó megnyitása"
|
||||
}
|
||||
},
|
||||
"compact-sidebar": {
|
||||
"description": "Mindig becsukva tartja a bal oldali savót, ahol a Kezdőlap. Felfedezés, Könyvtár és egyebek láthatók. (Amit bármikor ki lehet nyitni)",
|
||||
"name": "Kompakt oldalsáv"
|
||||
},
|
||||
"crossfade": {
|
||||
"description": "Áttünést biztosít a dalok között, ami folytonossá teszi a zenehallgatást anélkül, hogy érezhető lenne a váltás",
|
||||
"menu": {
|
||||
"advanced": "Haladó"
|
||||
},
|
||||
"name": "Áttünés [Béta]",
|
||||
"prompt": {
|
||||
"options": {
|
||||
"multi-input": {
|
||||
"fade-in-duration": "Áttünés időtartama (ms)",
|
||||
"fade-out-duration": "Fokozatos halkítás időtartama (ms)",
|
||||
"fade-scaling": {
|
||||
"label": "Áttünés mértéke",
|
||||
"linear": "Lineáris",
|
||||
"logarithmic": "Logaritmikus"
|
||||
},
|
||||
"seconds-before-end": "Áttünés N másodperccel a vége előtt"
|
||||
},
|
||||
"title": "Áttünési beállítások"
|
||||
}
|
||||
}
|
||||
},
|
||||
"disable-autoplay": {
|
||||
"description": "Ez a funkció kikapcsolja az automatikus lejátszást, így a zenék nem indulnak el maguktól. Amikor egy album vagy egy dal lejátszása véget ér, a következő szám nem kezdődik el automatikusan. A bővítmény használata során minden zenét manuálisan kell elindítani",
|
||||
"menu": {
|
||||
"apply-once": "Csak induláskor alkalmazza"
|
||||
},
|
||||
"name": "Automatikus lejátszás letiltása"
|
||||
},
|
||||
"discord": {
|
||||
"backend": {
|
||||
"already-connected": "Kapcsolódás kísérlete aktív kapcsolattal",
|
||||
"connected": "Kapcsolódva a Discord-hoz",
|
||||
"disconnected": "Kapcsolat bontva a Discord-al"
|
||||
},
|
||||
"description": "Mutassa meg barátainak, hogy mit hallgat a Rich Presence segítségével. (Ehez a Discord-on is engedélyezve kel lennie a Tevékenységállapot megosztásának [DC Beállítások -> Tevékenyég-adatvédelem -> Megoszthatod az észlelt tevékenységeidet másokkal])",
|
||||
"menu": {
|
||||
"auto-reconnect": "Automatikus újracsatlakozás",
|
||||
"clear-activity": "Tevékenység törlése",
|
||||
"clear-activity-after-timeout": "Tevékenység törlése időkorlát után",
|
||||
"connected": "Kapcsolódva",
|
||||
"disconnected": "Nincs Kapcsolódva",
|
||||
"hide-duration-left": "Hátralévő idő elrejtése",
|
||||
"hide-github-button": "GitHub url gombjának elrejtése",
|
||||
"play-on-youtube-music": "Lejátszás a YouTube Music-on",
|
||||
"set-inactivity-timeout": "Inaktivitási időkorlát beállítása"
|
||||
},
|
||||
"name": "Discord Rich Presence",
|
||||
"prompt": {
|
||||
"set-inactivity-timeout": {
|
||||
"label": "Írja be az inaktivitási időkorlátot másodpercben:",
|
||||
"title": "Inaktivitási időkorlát beállítása"
|
||||
}
|
||||
}
|
||||
},
|
||||
"downloader": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"error": {
|
||||
"buttons": {
|
||||
"ok": "Rendben"
|
||||
},
|
||||
"message": "Hoppá! Elnézést, a letöltés sikertelen volt…",
|
||||
"title": "A letöltés során hiba történt!"
|
||||
},
|
||||
"start-download-playlist": {
|
||||
"buttons": {
|
||||
"ok": "Rendben"
|
||||
},
|
||||
"detail": "({{playlistSize}} dal)",
|
||||
"message": "A(z) {{playlistTitle}} lejátszási lista letöltése",
|
||||
"title": "A letöltés elindult"
|
||||
}
|
||||
},
|
||||
"feedback": {
|
||||
"conversion-progress": "Konvetálás: {{percent}}%",
|
||||
"converting": "Konvertálás…",
|
||||
"done": "Kész: {{filePath}}",
|
||||
"download-info": "Letöltés: {{artist}} - {{title}} [{{videoId}}",
|
||||
"download-progress": "Letöltés: {{percent}}%",
|
||||
"downloading": "Letöltés folyamatban…",
|
||||
"downloading-counter": "Letöltés: {{current}}/{{total}}…",
|
||||
"downloading-playlist": "Letöltés a lejátszási listáról \"{{playlistTitle}}\" - {{playlistSize}} dal ({{playlistId}})",
|
||||
"error-while-downloading": "Hiba a \"{{author}} - {{title}}\" letöltésekor: {{error}}",
|
||||
"folder-already-exists": "A {{playlistFolder}} nevű mappa már létezik",
|
||||
"getting-playlist-info": "Lejátszási lista információinak lekérése…",
|
||||
"loading": "Betöltés…",
|
||||
"playlist-has-only-one-song": "A lejátszási listában csak egy elem van, letöltés közvetlenül",
|
||||
"playlist-id-not-found": "Nem található lejátszási lista azonosítója",
|
||||
"playlist-is-empty": "Lejátszási lista üres",
|
||||
"playlist-is-mix-or-private": "Hiba a lejátszási lista információinak lekérésekor: győződjön meg róla, hogy nem privát vagy \"Saját egyveleg\" lejátszási lista\n\n{{error}}",
|
||||
"preparing-file": "Fájl előkészítése…",
|
||||
"saving": "Mentés…",
|
||||
"trying-to-get-playlist-id": "Playlist ID lekérése: {{playlistId}}",
|
||||
"video-id-not-found": "Videó nem található",
|
||||
"writing-id3": "ID3 címkék írása…"
|
||||
}
|
||||
},
|
||||
"description": "MP3 / forrás hanganyag letöltése közvetlenül az interfészről",
|
||||
"menu": {
|
||||
"choose-download-folder": "Letöltési mappa kiválasztása",
|
||||
"download-finish-settings": {
|
||||
"label": "Letöltés befejezéskor",
|
||||
"prompt": {
|
||||
"last-percent": "x százalék után",
|
||||
"last-seconds": "Utolsó x másodperc",
|
||||
"title": "Letöltés idejének beállítása"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "Speciális",
|
||||
"enabled": "Engedélyezve",
|
||||
"mode": "Időmód",
|
||||
"percent": "Százalék",
|
||||
"seconds": "Másodpercek"
|
||||
}
|
||||
},
|
||||
"download-playlist": "Lejátszási lista letöltése",
|
||||
"presets": "Sablonok",
|
||||
"skip-existing": "Meglévő fájlok kihagyása"
|
||||
},
|
||||
"name": "Letöltő",
|
||||
"renderer": {
|
||||
"can-not-update-progress": "A haladást nem lehet frissíteni"
|
||||
},
|
||||
"templates": {
|
||||
"button": "Letöltés"
|
||||
}
|
||||
},
|
||||
"equalizer": {
|
||||
"description": "Hangszínszabályzót ad hozzá a zenelejátszóhoz",
|
||||
"menu": {
|
||||
"presets": {
|
||||
"label": "Hangprofil",
|
||||
"list": {
|
||||
"bass-booster": "Basszuskiemelés"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Hangszínszabályzó"
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "Az hangerő csúszka exponenciálissá tételével könnyebbé válik az alacsony hangerő kiválasztása.",
|
||||
"name": "Exponenciális hangerő"
|
||||
},
|
||||
"in-app-menu": {
|
||||
"description": "Menüsávok stílusos, sötét vagy album-színű megjelenítése",
|
||||
"menu": {
|
||||
"hide-dom-window-controls": "DOM ablakvezérlők elrejtése"
|
||||
},
|
||||
"name": "Alkalmazáson belüli menü"
|
||||
},
|
||||
"lumiastream": {
|
||||
"description": "Lumia Stream támogatás hozzáadása",
|
||||
"name": "Lumia Stream [Béta]"
|
||||
},
|
||||
"lyrics-genius": {
|
||||
"description": "Dalszöveg támogatást ad a legtöbb dalhoz",
|
||||
"menu": {
|
||||
"romanized-lyrics": "Latin betűs dalszövegek"
|
||||
},
|
||||
"name": "Lyrics Genius",
|
||||
"renderer": {
|
||||
"fetched-lyrics": "Dalszövegek lekérése a Genius-ról"
|
||||
}
|
||||
},
|
||||
"music-together": {
|
||||
"description": "Lehetővé teszi a lejátszási listák megosztását másokkal. Amikor a házigazda lejátszik egy dalt, mindenki más is ugyanazt a dalt fogja hallani",
|
||||
"dialog": {
|
||||
"enter-host": "Adja meg a házigazda azonosítóját"
|
||||
},
|
||||
"internal": {
|
||||
"save": "Mentés",
|
||||
"track-source": "Zeneszám forrása",
|
||||
"unknown-user": "Ismeretlen felhasználó"
|
||||
},
|
||||
"menu": {
|
||||
"click-to-copy-id": "Házigazda azonosítójának másolása",
|
||||
"close": "Zene együtt bezárása",
|
||||
"connected-users": "Csatlakozott felhasználók",
|
||||
"disconnect": "Zene együtt kapcsolatának megszakítása",
|
||||
"empty-user": "Nincs csatlakozva felhasználó",
|
||||
"host": "Music Together Házigazda",
|
||||
"join": "Csatlakozás a Zene együtt-höz",
|
||||
"permission": {
|
||||
"all": "Engedélyezi a vendégeknek a lejátszási lista és a lejátszó vezérlését",
|
||||
"host-only": "Csak a házigazda tudja vezérelni a lejátszási listát és a lejátszót",
|
||||
"playlist": "Engedélyezi a vendégeknek a lejátszási lista vezérlését"
|
||||
},
|
||||
"set-permission": "Vezérlési engedély módosítása",
|
||||
"status": {
|
||||
"disconnected": "Kapcsolat bontva",
|
||||
"guest": "Csatlakozva vendégként",
|
||||
"host": "Csatlakozva házigazdaként"
|
||||
}
|
||||
},
|
||||
"name": "Zene együtt [Béta]",
|
||||
"toast": {
|
||||
"add-song-failed": "Sikertelen volt a dal hozzáadása",
|
||||
"closed": "Zene együtt bezárva",
|
||||
"disconnected": "Kapcsolat megszakadt a Music Together-el",
|
||||
"host-failed": "Sikertelen volt a Zene együtt indítása",
|
||||
"id-copied": "Házigazda azonosító a vágólapra másolva",
|
||||
"id-copy-failed": "Nem sikerült a Házigazda azonosítóját a vágólapra másolni",
|
||||
"join-failed": "Nem sikerült csatlakozni a Music Together-hez",
|
||||
"joined": "Csatlakozott a Music Together-hez",
|
||||
"permission-changed": "Music Together engedély megváltoztatva \"{{permission}}\" -re",
|
||||
"remove-song-failed": "A dal eltávolítása sikertelen",
|
||||
"user-connected": "{{name}} csatlakozott a Music Together-hez",
|
||||
"user-disconnected": "{{name}} elhagyta a Music Together-t"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"description": "Következő/Vissza navigációs nyilak közvetlenül az interfészbe integrálva, mint a kedvenc böngésződben",
|
||||
"name": "Navigáció"
|
||||
},
|
||||
"no-google-login": {
|
||||
"description": "A Bejelentkezés gomb eltávolítása az interfészről (Jobb fentről eltünik a bejelentkezés gomb.)",
|
||||
"name": "Nincs Google bejelentkezés"
|
||||
},
|
||||
"notifications": {
|
||||
"description": "Értesítés megjelenítése, amikor egy dal elindul (interaktív értesítések elérhetők Windows-on)",
|
||||
"menu": {
|
||||
"interactive": "Interaktív Értesítések",
|
||||
"interactive-settings": {
|
||||
"label": "Interaktív beállítások",
|
||||
"submenu": {
|
||||
"hide-button-text": "Gombok szövegének elrejtése",
|
||||
"refresh-on-play-pause": "Frissítés lejátszás/szünet megnyomásakor",
|
||||
"tray-controls": "Megnyitás/Bezárás tálca ikonra kattintva"
|
||||
}
|
||||
},
|
||||
"priority": "Értesítési prioritás",
|
||||
"toast-style": "Értesítés stílusa",
|
||||
"unpause-notification": "Értesítés megjelenítése a lejátszás folytatásakor"
|
||||
},
|
||||
"name": "Értesítések"
|
||||
},
|
||||
"picture-in-picture": {
|
||||
"description": "Lehetővé teszi az alkalmazás kép a képben módra váltását",
|
||||
"menu": {
|
||||
"always-on-top": "Mindig látható",
|
||||
"hotkey": {
|
||||
"label": "Gyorsbillentyű",
|
||||
"prompt": {
|
||||
"keybind-options": {
|
||||
"hotkey": "Gyorsbillentyű"
|
||||
},
|
||||
"label": "Válassz egy gyorsbillentyűt a kép a képben mód váltásához",
|
||||
"title": "Kép a képben gyorsbillentyű"
|
||||
}
|
||||
},
|
||||
"save-window-position": "Ablakpozíciójának mentése",
|
||||
"save-window-size": "Ablakméretének mentése",
|
||||
"use-native-pip": "A böngésző natív PiP(Kép a képben) használata"
|
||||
},
|
||||
"name": "Kép a képben",
|
||||
"templates": {
|
||||
"button": "Kép a képben"
|
||||
}
|
||||
},
|
||||
"playback-speed": {
|
||||
"description": "Hallgassd gyorsan, hallgassd lassan! Hozzáad egy csúszkát, amely szabályozza a dal sebességét",
|
||||
"name": "Lejátszás sebessége",
|
||||
"templates": {
|
||||
"button": "Sebesség"
|
||||
}
|
||||
},
|
||||
"precise-volume": {
|
||||
"description": "A hangerő precíz szabályozása egérgörgővel/gyorsbillentyűkkel, egy egyedi HUD és testreszabható hangerő csuszka segítségével",
|
||||
"menu": {
|
||||
"arrows-shortcuts": "Helyi nyíl-billentyűkkel való vezérlés",
|
||||
"custom-volume-steps": "Egyedi hangerőléptetés beállítása",
|
||||
"global-shortcuts": "Globális Gyorsbillentyűk"
|
||||
},
|
||||
"name": "Precíz hangerő",
|
||||
"prompt": {
|
||||
"global-shortcuts": {
|
||||
"keybind-options": {
|
||||
"decrease": "Hangerő csökkentése",
|
||||
"increase": "Hangerő növelése"
|
||||
},
|
||||
"label": "Válaszd ki a globális hangerő gyorsbillentyűket:",
|
||||
"title": "Globális hangerő gyorsbillentyűk"
|
||||
},
|
||||
"volume-steps": {
|
||||
"label": "Hangerő növelés/csökkentés léptékének kiválasztása",
|
||||
"title": "Hangerő lépték"
|
||||
}
|
||||
}
|
||||
},
|
||||
"quality-changer": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"quality-changer": {
|
||||
"detail": "Jelenlegi minőség: {{quality}}",
|
||||
"message": "Válaszd ki a videó minőségét:",
|
||||
"title": "Válaszd ki a videó minőségét"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Lehetővé teszi a videó minőségének megváltoztatását egy gombbal a videó fedvényen",
|
||||
"name": "Videóminőség modosító"
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "Scrobbling támogatás hozzáadása (pl. last.fm, ListenBrainz)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "Last.fm hitelesítése nem sikerült\nA felugró ablak elrejtése a következő újraindításig.",
|
||||
"title": "Hitelesítés sikertelen"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "Last.fm API beállítások"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": "Add meg a ListenBrainz felhasználói tokenedet"
|
||||
},
|
||||
"scrobble-alternative-title": "Alternatív címek használata",
|
||||
"scrobble-other-media": "Más média scrobbelése"
|
||||
},
|
||||
"name": "Scrobbler",
|
||||
"prompt": {
|
||||
"lastfm": {
|
||||
"api-key": "Last.fm API kulcs",
|
||||
"api-secret": "Last.fm titkos API kulcs"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": {
|
||||
"label": "Add meg a ListenBrainz felhasználói tokenedet:",
|
||||
"title": "ListenBrainz kulcs"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"shortcuts": {
|
||||
"description": "Lehetővé teszi globális gyorsbillentyűk beállítását a lejátszáshoz (lejátszás/szünet/következő/előző), valamint a média OSD kikapcsolását a médiagombok felülírásával. Bekapcsolja a Ctrl/CMD + F billentyűkombinációt a kereséshez, a Linux MPRIS támogatását a médiagombokhoz, és egyedi gyorsbillentyűket a haladó felhasználók számára",
|
||||
"menu": {
|
||||
"override-media-keys": "Médiagombok felülírása",
|
||||
"set-keybinds": "Globális zenevezérlők beállítása"
|
||||
},
|
||||
"name": "Gyorsbillentyűk (& MPRIS)",
|
||||
"prompt": {
|
||||
"keybind": {
|
||||
"keybind-options": {
|
||||
"next": "Következő",
|
||||
"play-pause": "Lejátszás / Szünet",
|
||||
"previous": "Előző"
|
||||
},
|
||||
"label": "Globális billentyűparancsok választása a dalok vezérléséhez:",
|
||||
"title": "Globális gyorsbillentyűk"
|
||||
}
|
||||
}
|
||||
},
|
||||
"skip-disliked-songs": {
|
||||
"description": "Kihagyja a nem kedvelt dalokat",
|
||||
"name": "Nem kedvelt dal kihagyása"
|
||||
},
|
||||
"skip-silences": {
|
||||
"description": "Automatikusan kihagyja a csendes részeket a dalokban",
|
||||
"name": "Csend kihagyása"
|
||||
},
|
||||
"sponsorblock": {
|
||||
"description": "Automatikusan kihagyja a nem zenés részeket, mint például az intro/outro vagy a zenei videók olyan részeit, ahol a zene nem szól",
|
||||
"name": "SzponzorBlokk"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "Szinkronizált dalszövegeket biztosít dalokhoz, LRClib-hez hasonló szolgáltatókat használva.",
|
||||
"errors": {
|
||||
"fetch": "⚠️\tHiba történt a dalszöveg lekérése közben.\n\tKérjük, próbálja meg később újra.",
|
||||
"not-found": "⚠️ - Ehhez a dalhoz nem található dalszöveg."
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "Alapértelmezett karakter a dalszövegek között",
|
||||
"tooltip": "Válassza ki az alapértelmezett karaktert, amelyet a dalszövegek közötti szünethez használni szeretne"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "Soreffekt",
|
||||
"submenu": {
|
||||
"fancy": {
|
||||
"label": "Díszes",
|
||||
"tooltip": "Használj nagy, alkalmazásszerű effektusokat az aktuális sorhoz"
|
||||
},
|
||||
"focus": {
|
||||
"label": "Fókuszált",
|
||||
"tooltip": "Az aktuális sor kijelőlése fehérrel"
|
||||
},
|
||||
"offset": {
|
||||
"label": "Eltolás",
|
||||
"tooltip": "Az aktuális sort jobbra tolja. (mintha tabulálnád)"
|
||||
},
|
||||
"scale": {
|
||||
"label": "Méretezett",
|
||||
"tooltip": "Az aktuális sort kissé nagyobbra méretezi, kiemelve azt a többi sor közül"
|
||||
}
|
||||
},
|
||||
"tooltip": "Válassza ki az aktuális sorra alkalmazandó effektust"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "Dalszöveg tökéletes szinkronizálása",
|
||||
"tooltip": "Számítsa ki az aktuális sor megjelenítésének idejét ezredmásodperc pontossággal (ez kis mértékben befolyásolhatja a teljesítményt)"
|
||||
},
|
||||
"romanization": {
|
||||
"label": "Latin betűs szöveg",
|
||||
"tooltip": "Idegennyelvű szöveg esetén próbálkozás a szöveglatin betűs megjelenítésével."
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "Pontatlan időzítésű dalszövegek megjelenítése",
|
||||
"tooltip": "Ha a dalt nem találja, a bővítmény újra próbálkozik egy másik keresési lekérdezéssel.\nAz eredmény a második próbálkozás után nem biztos, hogy pontos lesz."
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "Időkódok megjelenítése",
|
||||
"tooltip": "Az időkódok megjelenítése a dalszövegek mellett"
|
||||
}
|
||||
},
|
||||
"name": "Szinkronizált dalszövegek",
|
||||
"refetch-btn": {
|
||||
"fetching": "Lekérés folyamatban...",
|
||||
"normal": "Dalszöveg újra lekérése"
|
||||
},
|
||||
"warnings": {
|
||||
"duration-mismatch": "⚠️ - A dalszövegek időzítése eltérhet a zene hossza miatt.",
|
||||
"inexact": "⚠️ - Ennek a zenének a dalszövege pontatlan lehet",
|
||||
"instrumental": "⚠️ - Ez egy hangszerekkel játszott zene"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "Lejátszás vezérlése a Windows tálcáról",
|
||||
"name": "Médiavezérlés a tálcán"
|
||||
},
|
||||
"touchbar": {
|
||||
"description": "macOS felhasználók számára hozzáad egy widgetet a TouchBar-hoz",
|
||||
"name": "TouchBar"
|
||||
},
|
||||
"tuna-obs": {
|
||||
"description": "Integráció az OBS Tuna pluginjával",
|
||||
"name": "Tuna OBS"
|
||||
},
|
||||
"unobtrusive-player": {
|
||||
"description": "Megakadályozza a lejátszó felugrását zenehallgatás közben",
|
||||
"name": "Rejtett lejátszó"
|
||||
},
|
||||
"video-toggle": {
|
||||
"description": "Hozzáad egy gombot a Videó/Dal mód közötti váltáshoz. Opcionálisan teljesen eltávolíthatja a videó fület is",
|
||||
"menu": {
|
||||
"align": {
|
||||
"label": "Igazítás",
|
||||
"submenu": {
|
||||
"left": "Balra",
|
||||
"middle": "Középre",
|
||||
"right": "Jobbra"
|
||||
}
|
||||
},
|
||||
"force-hide": "Videó fül kényszeritett eltávolítása",
|
||||
"mode": {
|
||||
"label": "Mód",
|
||||
"submenu": {
|
||||
"custom": "Egyedi kapcsoló",
|
||||
"disabled": "Letiltva",
|
||||
"native": "Natív kapcsoló"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Videó váltó",
|
||||
"templates": {
|
||||
"button": "Zeneszám"
|
||||
}
|
||||
},
|
||||
"visualizer": {
|
||||
"description": "Vizualizációt ad a lejátszóhoz",
|
||||
"menu": {
|
||||
"visualizer-type": "Vizualizáció típus"
|
||||
},
|
||||
"name": "Vizualizáció"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2,7 +2,7 @@
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "Gagal saat mengeksekusi plugin {{pluginName}}::{{contextName}}",
|
||||
"execute-failed": "Plugin {{pluginName}}::{{contextName}} dieksekusi di {{ms}}ms",
|
||||
"executed-at-ms": "Plugin {{pluginName}}::{{contextName}} dieksekusi pada {{ms}}ms",
|
||||
"initialize-failed": "Gagal dalam menginisialisasi plugin \"{{pluginName}}\"",
|
||||
"load-all": "Memuat semua plugin",
|
||||
@ -30,7 +30,7 @@
|
||||
"receive-command": "Menerima instruksi lewat protokol: \"{{command}}\""
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "CSS file \"{{cssFile}}\" tidak ada, mengabaikan"
|
||||
"css-file-not-found": "File CSS \"{{cssFile}}\" tidak ditemukan, mengabaikan"
|
||||
},
|
||||
"unresponsive": {
|
||||
"details": "Kesalahan Tidak Responsif!\n{{error}}"
|
||||
@ -45,17 +45,17 @@
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "Menu tersembunyi, gunakan 'Alt' untuk menampilkannya (atau 'Escape' jika menggunakan Menu Dalam Aplikasi)",
|
||||
"message": "Menu Sembunyikan diaktifkan",
|
||||
"message": "Sembunyikan Menu diaktifkan",
|
||||
"title": "Sembunyikan Menu Diaktifkan"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "Kemudian",
|
||||
"later": "Nanti",
|
||||
"restart-now": "Restart Sekarang"
|
||||
},
|
||||
"detail": "\"{{pluginName}}\" Plugin memerlukan pengaktifan ulang agar dapat diterapkan",
|
||||
"message": "\"{{pluginName}}\" harus dimulai ulang",
|
||||
"title": "Diperlukan Restart"
|
||||
"title": "Restart Diperlukan"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
@ -158,6 +158,14 @@
|
||||
},
|
||||
"remove-upgrade-button": "Hapus tombol peningkatan",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "Batalkan",
|
||||
"remove": "Hapus"
|
||||
},
|
||||
"remove-theme": "Apakah kamu yakin ingin menhapus tema ini?",
|
||||
"remove-theme-message": "Ini akan menghapus tema ini"
|
||||
},
|
||||
"label": "Tema",
|
||||
"submenu": {
|
||||
"import-css-file": "Impor file CSS khusus",
|
||||
@ -194,11 +202,15 @@
|
||||
"show": "Tampilkan jendela",
|
||||
"tooltip": {
|
||||
"default": "YouTube Musik",
|
||||
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
|
||||
"with-song-info": "YouTube Musik: {{artist}} - {{title}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "Jika iklan diputar, audio akan dimatikan dan kecepatan pemutaran akan diatur ke 16x",
|
||||
"name": "Percepatan Iklan"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "Blokir semua iklan dan pelacakan di luar kotak",
|
||||
"menu": {
|
||||
@ -267,6 +279,56 @@
|
||||
},
|
||||
"name": "Mode ambient"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "Menambahkan dukungan YouTube Music untuk widget Amuse yang sedang diputar oleh 6K Labs",
|
||||
"name": "Amuse",
|
||||
"response": {
|
||||
"query": "Server API Amuse sedang berjalan. GET /query untuk mendapatkan info lagu."
|
||||
}
|
||||
},
|
||||
"api-server": {
|
||||
"description": "Menambahkan server API untuk mengontrol pemutar",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "Izinkan",
|
||||
"deny": "Menolak"
|
||||
},
|
||||
"message": "Izinkan {{ID}} ({{origin}}) untuk mengakses API?",
|
||||
"title": "Permintaan otorisasi API"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Strategi otorisasi",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "Otorisasi pada permintaan pertama"
|
||||
},
|
||||
"none": {
|
||||
"label": "Tidak ada otorisasi"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "Nama host"
|
||||
},
|
||||
"port": {
|
||||
"label": "Port"
|
||||
}
|
||||
},
|
||||
"name": "API Server [Beta]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "Masukkan nama host (seperti 0.0.0.0) untuk server API:",
|
||||
"title": "Nama host"
|
||||
},
|
||||
"port": {
|
||||
"label": "Masukkan port untuk server API:",
|
||||
"title": "Port"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Menerapkan kompresi pada audio (mengurangi volume pada bagian paling keras dari sinyal dan meningkatkan volume pada bagian paling lembut)",
|
||||
"name": "Kompresi suara"
|
||||
@ -402,6 +464,21 @@
|
||||
"description": "Unduh MP3 / sumber suara secara langsung via antarmuka",
|
||||
"menu": {
|
||||
"choose-download-folder": "Pilih folder unduhan",
|
||||
"download-finish-settings": {
|
||||
"label": "Unduh setelah selesai",
|
||||
"prompt": {
|
||||
"last-percent": "x persen terakhir",
|
||||
"last-seconds": "x detik terakhir",
|
||||
"title": "Konfigurasikan kapan akan mengunduh"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "Lanjutan",
|
||||
"enabled": "Diaktifkan",
|
||||
"mode": "Mode waktu",
|
||||
"percent": "Persen",
|
||||
"seconds": "Detik"
|
||||
}
|
||||
},
|
||||
"download-playlist": "Unduh daftar putar",
|
||||
"presets": "Prasetel",
|
||||
"skip-existing": "Lewati berkas yang sudah ada"
|
||||
@ -414,6 +491,18 @@
|
||||
"button": "Unduh"
|
||||
}
|
||||
},
|
||||
"equalizer": {
|
||||
"description": "Menambahkan equalizer ke pemutar",
|
||||
"menu": {
|
||||
"presets": {
|
||||
"label": "Prasetel",
|
||||
"list": {
|
||||
"bass-booster": "Penguat Bass"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Equalizer"
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "Buat penggeser volume menjadi eksponen sehingga memudahkan memilih volume yang lebih rendah.",
|
||||
"name": "Volume Eksponen"
|
||||
@ -579,6 +668,14 @@
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "Tambahkan dukungan scrobbling (mis. last.fm, Listenbrainz)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "Gagal mengotentikasi Last.fm\nSembunyikan munculan hingga muat ulang selanjutnya.",
|
||||
"title": "Otentikasi Gagal"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "Pengaturan API Last.fm"
|
||||
@ -586,6 +683,7 @@
|
||||
"listenbrainz": {
|
||||
"token": "Masukkan token pengguna ListenBrainz"
|
||||
},
|
||||
"scrobble-alternative-title": "Gunakan judul alternatif",
|
||||
"scrobble-other-media": "Scrobble media lain"
|
||||
},
|
||||
"name": "Scrobbler",
|
||||
@ -633,6 +731,67 @@
|
||||
"description": "Otomatis Melewati bagian yang bukan musik seperti intro/outro atau bagian dari video musik di mana lagu tidak dimainkan",
|
||||
"name": "SponsorBlock"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "Menyediakan lirik lagu yang disinkronkan, menggunakan penyedia seperti LRClib.",
|
||||
"errors": {
|
||||
"fetch": "⚠️\tTerjadi kesalahan saat mengambil lirik.\n\tSilakan coba lagi nanti.",
|
||||
"not-found": "⚠️ Tidak ada lirik yang ditemukan untuk lagu ini."
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "Karakter default antara lirik",
|
||||
"tooltip": "Pilih karakter default yang akan digunakan untuk celah antar lirik"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "Efek garis",
|
||||
"submenu": {
|
||||
"fancy": {
|
||||
"label": "Mewah",
|
||||
"tooltip": "Gunakan efek besar seperti aplikasi pada baris saat ini"
|
||||
},
|
||||
"focus": {
|
||||
"label": "Fokus",
|
||||
"tooltip": "Jadikan hanya baris saat ini berwarna putih"
|
||||
},
|
||||
"offset": {
|
||||
"label": "Offset",
|
||||
"tooltip": "Mengimbangi garis saat ini di sebelah kanan"
|
||||
},
|
||||
"scale": {
|
||||
"label": "Skala",
|
||||
"tooltip": "Skala garis saat ini"
|
||||
}
|
||||
},
|
||||
"tooltip": "Pilih efek yang akan diterapkan ke baris saat ini"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "Buat liriknya tersinkronisasi dengan sempurna",
|
||||
"tooltip": "Hitung hingga milidetik tampilan baris berikutnya (dapat berdampak kecil pada kinerja)"
|
||||
},
|
||||
"romanization": {
|
||||
"label": "Romanize Liriknya",
|
||||
"tooltip": "Apabila lirik berada dalam bahasa berbeda, cobalah untuk menampilkan versi latinnya."
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "Tampilkan lirik meskipun tidak tepat",
|
||||
"tooltip": "Jika lagu tidak ditemukan, plugin akan mencoba lagi dengan kueri pencarian yang berbeda.\nHasil dari percobaan kedua mungkin tidak tepat."
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "Tampilkan kode waktu",
|
||||
"tooltip": "Tampilkan kode waktu di samping lirik"
|
||||
}
|
||||
},
|
||||
"name": "Lirik yang Disinkronkan",
|
||||
"refetch-btn": {
|
||||
"fetching": "Mengambil...",
|
||||
"normal": "Ambil ulang lirik"
|
||||
},
|
||||
"warnings": {
|
||||
"duration-mismatch": "⚠️ - Liriknya mungkin tidak sinkron karena ketidakcocokan durasi.",
|
||||
"inexact": "⚠️ - Lirik lagu ini mungkin tidak tepat",
|
||||
"instrumental": "⚠️ - Ini adalah lagu instrumental"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "Kendalikan pemutaran dari bilah alat Windows",
|
||||
"name": "Pengendali Media di Bilah Alat"
|
||||
@ -645,6 +804,10 @@
|
||||
"description": "Integrasi dengan plugin Tuna OBS",
|
||||
"name": "Tuna OBS"
|
||||
},
|
||||
"unobtrusive-player": {
|
||||
"description": "Cegah pemutar musik muncul ketika memutar musik",
|
||||
"name": "Pemutar simpel (tidak menganggu)"
|
||||
},
|
||||
"video-toggle": {
|
||||
"description": "Tambahkan tombol untuk beralih antara mode Lagu/Video. secara opsional juga dapat menghapus keseluruhan tab video",
|
||||
"menu": {
|
||||
|
||||
813
src/i18n/resources/is.json
Normal file
@ -0,0 +1,813 @@
|
||||
{
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "Tókst ekki að framkvæma tengiforrit {{pluginName}}::{{contextName}}",
|
||||
"executed-at-ms": "Tengiforrit {{pluginName}}::{{contextName}} var framkvæmd í {{ms}}ms",
|
||||
"initialize-failed": "Tókst ekki að frumstilla tengiforrit \"{{pluginName}}\"",
|
||||
"load-all": "Er að hlaða öllum tengiforritum",
|
||||
"load-failed": "Tókst ekki að hlaða tengiforritinu \"{{pluginName}}\"",
|
||||
"loaded": "Tengiforrit \"{{pluginName}}\" hlaðið",
|
||||
"unload-failed": "Tókst ekki að afhlaða tengiforritinu \"{{pluginName}}\"",
|
||||
"unloaded": "Tengiforrit „{{pluginName}}“ óhlaðin"
|
||||
}
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"code": "is",
|
||||
"local-name": "Íslenska",
|
||||
"name": "Icelandic"
|
||||
},
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "Lokið við hleðslu. DevTools opnuð"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "i18n hlaðið"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "Fengið skipun yfir prótókoll: \"{{command}}\""
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "CSS skrá \"{{cssFile}}\" er ekki til, er að hunsa"
|
||||
},
|
||||
"unresponsive": {
|
||||
"details": "Viðbragðslaust Villa!\n{{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "Er að hreinsa forritabúfera"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "Gluggi reyndi að birta utan skjás, gluggastærð={{windowSize}}, skjástærð={{displaySize}}, stöðu={{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "Valmyndin er falin, notaðu 'Breytingarlykil' til að sýna hana (eða 'Útfararlykil' ef þú notar valmynd í forriti)",
|
||||
"message": "Fela Valmynd er virkjuð",
|
||||
"title": "Fela Valmynd Virkjuð"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "Seinna",
|
||||
"restart-now": "Endurræsa Núna"
|
||||
},
|
||||
"detail": "\"{{pluginName}}\" tengiforrit þarfnast endurræsingar til að taka gildi",
|
||||
"message": "\"{{pluginName}}\" þarf að endurræsa",
|
||||
"title": "Endurræsa Krafist"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "Hætta",
|
||||
"relaunch": "Endurræsa",
|
||||
"wait": "Bíddu"
|
||||
},
|
||||
"detail": "Við biðjumst velvirðingar á óþægindunum! vinsamlegast veldu hvað á að gera:",
|
||||
"message": "Umsóknin svarar ekki",
|
||||
"title": "Gluggi er svarar ekki"
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"disable": "Gera Uppfærslur Óvirkar",
|
||||
"download": "Sækja",
|
||||
"ok": "Í lagi"
|
||||
},
|
||||
"detail": "Ný útgáfa er fáanleg og hægt er að hlaða henni niður á {{downloadLink}}",
|
||||
"message": "Ný útgáfa er fáanleg",
|
||||
"title": "Uppfærsla Fáanleg"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"about": "Um",
|
||||
"navigation": {
|
||||
"label": "Leiðsögn",
|
||||
"submenu": {
|
||||
"copy-current-url": "Afritaðu núverandi vefslóð",
|
||||
"go-back": "Farðu til baka",
|
||||
"go-forward": "Farðu áfram",
|
||||
"quit": "Útganga",
|
||||
"restart": "Endurræstu Forritið"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"label": "Valkostir",
|
||||
"submenu": {
|
||||
"advanced-options": {
|
||||
"label": "Ítarlegravalkostir",
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "Endurstilltu skyndiminni forritsins þegar forritið ræsir",
|
||||
"disable-hardware-acceleration": "Slökktu á vélbúnaðarhröðun",
|
||||
"edit-config-json": "Breyta config.json",
|
||||
"override-user-agent": "Hneka Notandaumboðsmanni",
|
||||
"restart-on-config-changes": "Endurræstu við stillingarbreytingar",
|
||||
"set-proxy": {
|
||||
"label": "Stilla umboð",
|
||||
"prompt": {
|
||||
"label": "Sláðu inn umboðsfang: (skilið eftir autt til að slökkva á)",
|
||||
"placeholder": "Dæmi: SOCKS5://127.0.0.1:9999",
|
||||
"title": "Stilla umboð"
|
||||
}
|
||||
},
|
||||
"toggle-dev-tools": "Breyta DevTools"
|
||||
}
|
||||
},
|
||||
"always-on-top": "Alltaf á toppnum",
|
||||
"auto-update": "Sjálfvirk Uppfærsla",
|
||||
"hide-menu": {
|
||||
"dialog": {
|
||||
"message": "Valmyndin verður falin við næstu ræsingu, notaðu [Alt] til að sýna hana (eða bakaðu við [`] ef þú notar valmynd í forriti)",
|
||||
"title": "Fela Valmynd Virkjuð"
|
||||
},
|
||||
"label": "Fela Valmynd"
|
||||
},
|
||||
"language": {
|
||||
"dialog": {
|
||||
"message": "Tungumáli verður breytt eftir endurræsingu",
|
||||
"title": "Tungumáli Breytt"
|
||||
},
|
||||
"label": "Tungumál",
|
||||
"submenu": {
|
||||
"to-help-translate": "Viltu hjálpa til við að þýða? Smellið hér"
|
||||
}
|
||||
},
|
||||
"resume-on-start": "Haltu áfram síðasta lagi þegar forritið byrjar",
|
||||
"single-instance-lock": "Eittdæmilás",
|
||||
"start-at-login": "Byrjaðu á innskráningu",
|
||||
"starting-page": {
|
||||
"label": "Upphafssíða",
|
||||
"unset": "Ósetja"
|
||||
},
|
||||
"tray": {
|
||||
"label": "Bakki",
|
||||
"submenu": {
|
||||
"disabled": "Fötluð",
|
||||
"enabled-and-hide-app": "Bakki virkt, og fela forritsgluggi",
|
||||
"enabled-and-show-app": "Virkjað og sýna forrit",
|
||||
"play-pause-on-click": "Spila/hlé við smell"
|
||||
}
|
||||
},
|
||||
"visual-tweaks": {
|
||||
"label": "Sjónrænaraðlögun",
|
||||
"submenu": {
|
||||
"like-buttons": {
|
||||
"default": "Sjálfgefinn",
|
||||
"force-show": "Þvingaðu sýna",
|
||||
"hide": "Fela",
|
||||
"label": "Líkartakkar"
|
||||
},
|
||||
"remove-upgrade-button": "Fjarlægja uppgræðartakkan",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "Hætta við",
|
||||
"remove": "Fjarlægja"
|
||||
},
|
||||
"remove-theme": "Ertu viss um að þú viljir fjarlægja þetta sérsniðna þema?",
|
||||
"remove-theme-message": "Þetta mun fjarlægja sérsniðna þema"
|
||||
},
|
||||
"label": "Þema",
|
||||
"submenu": {
|
||||
"import-css-file": "Flytja inn sérsniðna CSS skrá",
|
||||
"no-theme": "Engin þema"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"enabled": "Virkt",
|
||||
"label": "Tengiforrit",
|
||||
"new": "NÝR"
|
||||
},
|
||||
"view": {
|
||||
"label": "Útsýni",
|
||||
"submenu": {
|
||||
"force-reload": "Þvingaðu Endurhleðslu",
|
||||
"reload": "Endurhlaða",
|
||||
"reset-zoom": "Raunveruleg Stærð",
|
||||
"toggle-fullscreen": "Breyta Fullskjá",
|
||||
"zoom-in": "Aðdráttur",
|
||||
"zoom-out": "Aðdráttur út"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"next": "Næst",
|
||||
"play-pause": "Spila/Hlé",
|
||||
"previous": "Fyrri",
|
||||
"quit": "Útganga",
|
||||
"restart": "Endurræstu Forritið",
|
||||
"show": "Sýna glugga",
|
||||
"tooltip": {
|
||||
"default": "YouTube Tónlist",
|
||||
"with-song-info": "YouTube Tónlist: {{artist}} - {{title}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "Ef auglýsing spilar slökknar hún á hljóðinu og stillir spilunarhraðann á 16x",
|
||||
"name": "Auglýsingahraða"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "Lokaðu fyrir allar auglýsingar og rakningar úr kassanum",
|
||||
"menu": {
|
||||
"blocker": "Blokkari"
|
||||
},
|
||||
"name": "Auglýsingablokkari"
|
||||
},
|
||||
"album-actions": {
|
||||
"description": "Bætir Ódíslika, Mislíkt, Líkt, og Ólíkt til að nota þetta á öll lög á spilunarlista eða albúm",
|
||||
"name": "Albúmsaðgerðir"
|
||||
},
|
||||
"album-color-theme": {
|
||||
"description": "Beitir kraftmikið þema og sjónrænum áhrifum sem byggjast á litavali albúmsins",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "Litablöndunarhlutfall",
|
||||
"submenu": {
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Albúmlitaþema"
|
||||
},
|
||||
"ambient-mode": {
|
||||
"description": "Beitir lýsingaráhrifum með því að varpa mildum litum úr myndbandinu í bakgrunn skjásins",
|
||||
"menu": {
|
||||
"blur-amount": {
|
||||
"label": "Þokuupphæð",
|
||||
"submenu": {
|
||||
"pixels": "{{blurAmount}} pixlum"
|
||||
}
|
||||
},
|
||||
"buffer": {
|
||||
"label": "Stuðpúði",
|
||||
"submenu": {
|
||||
"buffer": "{{buffer}}"
|
||||
}
|
||||
},
|
||||
"opacity": {
|
||||
"label": "Ógegnsæi",
|
||||
"submenu": {
|
||||
"percent": "{{opacity}}%"
|
||||
}
|
||||
},
|
||||
"quality": {
|
||||
"label": "Gæði",
|
||||
"submenu": {
|
||||
"pixels": "{{quality}} pixlum"
|
||||
}
|
||||
},
|
||||
"size": {
|
||||
"label": "Sæði",
|
||||
"submenu": {
|
||||
"percent": "{{size}}%"
|
||||
}
|
||||
},
|
||||
"smoothness-transition": {
|
||||
"label": "Slétt umskipti",
|
||||
"submenu": {
|
||||
"during": "Meðan á {{interpolationTime}} s"
|
||||
}
|
||||
},
|
||||
"use-fullscreen": {
|
||||
"label": "Er að nota fullskjár"
|
||||
}
|
||||
},
|
||||
"name": "Umhverfishamur"
|
||||
},
|
||||
"api-server": {
|
||||
"description": "Bætir API netþjóni til að stjórna spilaranum",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "Leyfa",
|
||||
"deny": "Óleyfa"
|
||||
},
|
||||
"message": "Leyfa {{ID}} ({{origin}}) að aðganga API-ið?",
|
||||
"title": "API heimildarbeiðni"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Heimildarstefna",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "Heimila á fyrst beiðni"
|
||||
},
|
||||
"none": {
|
||||
"label": "Nei heimild"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "Hýsitölvunafn"
|
||||
},
|
||||
"port": {
|
||||
"label": "Tengi"
|
||||
}
|
||||
},
|
||||
"name": "API-Netþjónn [Beta]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "Sláðu inn hýsitölvunafnið (eins og 0.0.0.0) fyrir API-netþjónninn:",
|
||||
"title": "Hýsitölvunafn"
|
||||
},
|
||||
"port": {
|
||||
"label": "Sláðu inn tengið fyrir API-netþjónninn:",
|
||||
"title": "Tengi"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Notaðu þjöppun á hljóð (lækkar hljóðstyrk háværustu hluta merkis og hækkar hljóðstyrk í mýkstu hlutunum)",
|
||||
"name": "Hljóðþjöppu"
|
||||
},
|
||||
"blur-nav-bar": {
|
||||
"description": "Gerir leiðsögustikuna gagnsæja og óskýrt",
|
||||
"name": "Þoka Leiðsagnarstika"
|
||||
},
|
||||
"bypass-age-restrictions": {
|
||||
"description": "Framhjá aldursstaðfestingu YouTube",
|
||||
"name": "Farið Framhjá Aldurstakmörkunum"
|
||||
},
|
||||
"captions-selector": {
|
||||
"description": "Skjátextavali fyrir YouTube Tónlist hljóðrásir",
|
||||
"menu": {
|
||||
"autoload": "Veldu sjálfkrafa síðast notaða myndatexta",
|
||||
"disable-captions": "Engir skjátextar sjálfgefið"
|
||||
},
|
||||
"name": "Yfirskriftarval",
|
||||
"prompt": {
|
||||
"selector": {
|
||||
"label": "Núverandi tungumál skjátexta: {{language}}",
|
||||
"none": "Enginn",
|
||||
"title": "Veldu tungumál fyrir skjátexta"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"title": "Opnaðu skjátextavali"
|
||||
}
|
||||
},
|
||||
"compact-sidebar": {
|
||||
"description": "Stilltu hliðarstikuna alltaf í þétta stillingu",
|
||||
"name": "Fyrirferðarlítillhliðarstika"
|
||||
},
|
||||
"crossfade": {
|
||||
"description": "Krossfæra á milli lög",
|
||||
"menu": {
|
||||
"advanced": "Háþróaður"
|
||||
},
|
||||
"name": "Krossfæra [Prófunarútgáfa]",
|
||||
"prompt": {
|
||||
"options": {
|
||||
"multi-input": {
|
||||
"fade-in-duration": "Dvína í lengd (ms)",
|
||||
"fade-out-duration": "Dvína út lengd (ms)",
|
||||
"fade-scaling": {
|
||||
"label": "Fölunarskala",
|
||||
"linear": "Línulegt",
|
||||
"logarithmic": "Logaritmískt"
|
||||
},
|
||||
"seconds-before-end": "Krossfæra N sekúndum fyrir enda"
|
||||
},
|
||||
"title": "Krossfæravalkosti"
|
||||
}
|
||||
}
|
||||
},
|
||||
"disable-autoplay": {
|
||||
"description": "Gerir lag að byrja í \"hlé\" ham",
|
||||
"menu": {
|
||||
"apply-once": "Á aðeins við ræsingu"
|
||||
},
|
||||
"name": "Slökkva á sjálfvirkri spilun"
|
||||
},
|
||||
"discord": {
|
||||
"backend": {
|
||||
"already-connected": "Reyndi að tengja við virka tengingu",
|
||||
"connected": "Tengdur við Discord",
|
||||
"disconnected": "Aftengdur frá Discord"
|
||||
},
|
||||
"description": "Sýndu vinum þínum hvað þú hlustar á með Rík Nærvera",
|
||||
"menu": {
|
||||
"auto-reconnect": "Sjálfvirk endurtengja",
|
||||
"clear-activity": "Hreinsa virkni",
|
||||
"clear-activity-after-timeout": "Hreinsa virkni eftir tímamörk",
|
||||
"connected": "Tengt",
|
||||
"disconnected": "Aftengt",
|
||||
"hide-duration-left": "Fela tímalengd til vinstri",
|
||||
"hide-github-button": "Fela GitHub tengilhnapp",
|
||||
"play-on-youtube-music": "Spilaðu á YouTube Tónlist",
|
||||
"set-inactivity-timeout": "Stilltu tímamörk fyrir óvirkni"
|
||||
},
|
||||
"name": "Discord Rík Nærvera",
|
||||
"prompt": {
|
||||
"set-inactivity-timeout": {
|
||||
"label": "Sláðu inn óvirknitíma eftir sekúndur:",
|
||||
"title": "Stilltu tímamörk fyrir óvirkni"
|
||||
}
|
||||
}
|
||||
},
|
||||
"downloader": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"error": {
|
||||
"buttons": {
|
||||
"ok": "Í lagi"
|
||||
},
|
||||
"message": "Úff! Afsakið, niðurhal mistókst…",
|
||||
"title": "Villa við niðurhal!"
|
||||
},
|
||||
"start-download-playlist": {
|
||||
"buttons": {
|
||||
"ok": "Í lagi"
|
||||
},
|
||||
"detail": "({{playlistSize}} lög)",
|
||||
"message": "Að sækja lagalista {{playlistTitle}}",
|
||||
"title": "Niðurhal byrjað"
|
||||
}
|
||||
},
|
||||
"feedback": {
|
||||
"conversion-progress": "Umbreyting: {{percent}}%",
|
||||
"converting": "Er að umbreytir…",
|
||||
"done": "Búið: {{filePath}}",
|
||||
"download-info": "Er að niðurhal {{artist}} - {{title}} [{{videoId}}",
|
||||
"download-progress": "Niðurhal: {{percent}}%",
|
||||
"downloading": "Er að niðurhal…",
|
||||
"downloading-counter": "Er að niðurhal {{current}}/{{total}}…",
|
||||
"downloading-playlist": "Er að niðurhal spilunarlisti \"{{playlistTitle}}\" - {{playlistSize}} lög ({{playlistId}})",
|
||||
"error-while-downloading": "Villa við niðurhal \"{{author}} - {{title}}\": {{error}}",
|
||||
"folder-already-exists": "Mappan {{playlistFolder}} er þegar til",
|
||||
"getting-playlist-info": "Sækir upplýsingar um spilunarlista…",
|
||||
"loading": "Er að hlaða.…",
|
||||
"playlist-has-only-one-song": "Spilunarlista hefur aðeins eitt atriði, það er verið að hlaða því niður beint",
|
||||
"playlist-id-not-found": "Ekkert auðkenni spilunarlista fannst",
|
||||
"playlist-is-empty": "Spilunarlistinn er tómur",
|
||||
"playlist-is-mix-or-private": "Villa við að fá upplýsingar um spilunarlista: Gakktu úr skugga um að þetta sé ekki einkaspilunarlisti eða \"Mixað fyrir þig\"\n\n{{error}}",
|
||||
"preparing-file": "Er að undirbúa skrá…",
|
||||
"saving": "Er að vista…",
|
||||
"trying-to-get-playlist-id": "Er að reyna að fá auðkenni spilunarlista: {{playlistId}}",
|
||||
"video-id-not-found": "Myndband fannst ekki",
|
||||
"writing-id3": "Að skrifa ID3 tög…"
|
||||
}
|
||||
},
|
||||
"description": "Niðurhalar MP3 / upprunahljóði beint úr viðmótinu",
|
||||
"menu": {
|
||||
"choose-download-folder": "Veldu niðurhalsmöppu",
|
||||
"download-finish-settings": {
|
||||
"label": "Sækja þegar lokið",
|
||||
"prompt": {
|
||||
"last-percent": "Eftir x sekúndur",
|
||||
"last-seconds": "Síðustu x sekúndur",
|
||||
"title": "Stilla hvenær á að hlaða niður"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "Ítarlegri",
|
||||
"enabled": "Virkt",
|
||||
"mode": "Tímastilling",
|
||||
"percent": "Hlutfall",
|
||||
"seconds": "Sekúndur"
|
||||
}
|
||||
},
|
||||
"download-playlist": "Sækja spilunarlista",
|
||||
"presets": "Forstillingar",
|
||||
"skip-existing": "Slepptu núverandi skrám"
|
||||
},
|
||||
"name": "Niðurhalari",
|
||||
"renderer": {
|
||||
"can-not-update-progress": "Ekki er hægt að uppfæra framvindu"
|
||||
},
|
||||
"templates": {
|
||||
"button": "Sækja"
|
||||
}
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "Gerir hljóðstyrkssleðann veldisvísis svo það er auðveldara að velja lægra hljóðstyrk.",
|
||||
"name": "Veldibundiðrúmmál"
|
||||
},
|
||||
"in-app-menu": {
|
||||
"description": "Gefur valmyndastikum glæsilegt, dökkt eða albúmslitsjáðu",
|
||||
"menu": {
|
||||
"hide-dom-window-controls": "Fela DOM gluggastýringar"
|
||||
},
|
||||
"name": "Valmynd í forriti"
|
||||
},
|
||||
"lumiastream": {
|
||||
"description": "Bætir við Lumia Stream stuðningi",
|
||||
"name": "Lumia Stream [Prófunarútgáfa]"
|
||||
},
|
||||
"lyrics-genius": {
|
||||
"description": "Bætir stuðningi við texta fyrir flest lög",
|
||||
"menu": {
|
||||
"romanized-lyrics": "Rómaníseraðir Söngtexti"
|
||||
},
|
||||
"name": "Söngtexti Snilld",
|
||||
"renderer": {
|
||||
"fetched-lyrics": "Sótt söngtexti fyrir Snilld"
|
||||
}
|
||||
},
|
||||
"music-together": {
|
||||
"description": "Deila spilunarlista með öðrum. Þegar gestgjafinn spilar lag munu allir aðrir heyra sama lagið",
|
||||
"dialog": {
|
||||
"enter-host": "Sláðu inn auðkenni gestgjafa"
|
||||
},
|
||||
"internal": {
|
||||
"save": "Vista",
|
||||
"track-source": "Lagsuppspretta",
|
||||
"unknown-user": "Óþekktur notandi"
|
||||
},
|
||||
"menu": {
|
||||
"click-to-copy-id": "Afritaðu hýsingarauðkenni",
|
||||
"close": "Lokaðu Tónlist Saman",
|
||||
"connected-users": "Tengdir Notendur",
|
||||
"disconnect": "Aftengdu Tónlist Saman",
|
||||
"empty-user": "Engir tengdir notendur",
|
||||
"host": "Tónlist Saman Gestgjafi",
|
||||
"join": "Vertu með Tónlist Saman",
|
||||
"permission": {
|
||||
"all": "Leyfðu gestum að stjórna spilunarlista og spilara",
|
||||
"host-only": "Aðeins gestgjafi getur stjórnað spilunarlista og spilara",
|
||||
"playlist": "Leyfðu gestum að stjórna spilunarlista"
|
||||
},
|
||||
"set-permission": "Breyta Stjórnunarheimild",
|
||||
"status": {
|
||||
"disconnected": "Aftengt",
|
||||
"guest": "Tengdur sem Gestur",
|
||||
"host": "Tengdur sem Gestgjafi"
|
||||
}
|
||||
},
|
||||
"name": "Tónlist Saman [Prófunarútgáfa]",
|
||||
"toast": {
|
||||
"add-song-failed": "Mistókst að bæta við lagi",
|
||||
"closed": "Tónlist Saman lokað",
|
||||
"disconnected": "Tónlist Saman aftengt",
|
||||
"host-failed": "Mistókst að hýsa Tónlist Saman",
|
||||
"id-copied": "Gestgjafaauðkenni afritað á klippiborð",
|
||||
"id-copy-failed": "Mistókst að afrita Hýsingarauðkenni á klippiborð",
|
||||
"join-failed": "Ekki tókst að taka þátt í Tónlist Saman",
|
||||
"joined": "Tengd Tónlist Saman",
|
||||
"permission-changed": "Tónlist Saman leyfi breytt í \"{{permission}}\"",
|
||||
"remove-song-failed": "Tókst ekki að fjarlægja lag",
|
||||
"user-connected": "{{name}} tengd Tónlist Saman",
|
||||
"user-disconnected": "{{name}} fór frá Tónlist Saman"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"description": "Næsta/Til baka leiðsagnarörvar beint samþættar í viðmótinu, eins og í uppáhalds vafranum þínum",
|
||||
"name": "Leiðsögn"
|
||||
},
|
||||
"no-google-login": {
|
||||
"description": "Fjarlægðu Google innskráningarhnappa og tengla úr viðmótinu",
|
||||
"name": "Engin Google innskráning"
|
||||
},
|
||||
"notifications": {
|
||||
"description": "Birta tilkynningu þegar lag byrjar að spila (gagnvirkartilkynningar eru fáanlegar á Windows)",
|
||||
"menu": {
|
||||
"interactive": "Gagnvirkartilkynningar",
|
||||
"interactive-settings": {
|
||||
"label": "Gagnvirkarstillingar",
|
||||
"submenu": {
|
||||
"hide-button-text": "Fela hnappatexta",
|
||||
"refresh-on-play-pause": "Endurnýjaðu í Spilun/Hlé",
|
||||
"tray-controls": "Opna/loka á bakka smellur"
|
||||
}
|
||||
},
|
||||
"priority": "Tilkynningaforgangur",
|
||||
"toast-style": "Ristað brauð stíl",
|
||||
"unpause-notification": "Sýna tilkynningu þegar ekki er gert hlé"
|
||||
},
|
||||
"name": "Tilkynningar"
|
||||
},
|
||||
"picture-in-picture": {
|
||||
"description": "Gerir kleift að skipta forritinu yfir í mynd-í-mynd stillingu",
|
||||
"menu": {
|
||||
"always-on-top": "Alltaf á toppnum",
|
||||
"hotkey": {
|
||||
"label": "Flýtilykil",
|
||||
"prompt": {
|
||||
"keybind-options": {
|
||||
"hotkey": "Flýtilykil"
|
||||
},
|
||||
"label": "Veldu flýtilykil til að skipta mynd-í-mynd",
|
||||
"title": "Mynd-í-mynd Flýtilykil"
|
||||
}
|
||||
},
|
||||
"save-window-position": "Vista gluggastöðu",
|
||||
"save-window-size": "Vista gluggastærð",
|
||||
"use-native-pip": "Notaðu innbyggða PiP í vafra"
|
||||
},
|
||||
"name": "Mynd-í-mynd",
|
||||
"templates": {
|
||||
"button": "Mynd-í-mynd"
|
||||
}
|
||||
},
|
||||
"playback-speed": {
|
||||
"description": "Hlustaðu hratt, hlustaðu hægt! Bætir við sleða sem stjórnar lagahraðanum",
|
||||
"name": "Spilunarhraði",
|
||||
"templates": {
|
||||
"button": "Hraði"
|
||||
}
|
||||
},
|
||||
"precise-volume": {
|
||||
"description": "Stjórnaðu hljóðstyrknum nákvæmlega með músarhjóli/hraðtökkum, með sérsniðnum HUD og sérsniðnum hljóðstyrksþrepum",
|
||||
"menu": {
|
||||
"arrows-shortcuts": "Staðbundnar Örvatakkar Stjórna",
|
||||
"custom-volume-steps": "Stilltu Sérsniðin Hljóðstyrksskref",
|
||||
"global-shortcuts": "Alþjóðlegarflýtilyklar"
|
||||
},
|
||||
"name": "Nákvæmshljóðstyrkur",
|
||||
"prompt": {
|
||||
"global-shortcuts": {
|
||||
"keybind-options": {
|
||||
"decrease": "Minnka Hljóðstyrk",
|
||||
"increase": "Auka Hljóðstyrk"
|
||||
},
|
||||
"label": "Veldu Alþjóðleghljóðstyrklyklabindingar:",
|
||||
"title": "Alþjóðleghljóðstyrklyklabindingar"
|
||||
},
|
||||
"volume-steps": {
|
||||
"label": "Veldu Hljóðstyrksauka/Minnka Skref",
|
||||
"title": "Hljóðstyrksskref"
|
||||
}
|
||||
}
|
||||
},
|
||||
"quality-changer": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"quality-changer": {
|
||||
"detail": "Núverandi Gæði: {{quality}}",
|
||||
"message": "Veldu Myndbandsgæði:",
|
||||
"title": "Veldu Myndbandsgæði"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Leyfir að breyta myndbandgæðum með hnappi á myndbandsyfirlaginu",
|
||||
"name": "Myndbandgæðisbreyting"
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "Bæta við scrobbling stuðningi (osv. last.fm, Listenbrainz)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "Mistókst að auðkenna með Last.fm\nFela sprettigluggann þar til næstu endurræsingu.",
|
||||
"title": "Auðkenning Mistókst"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "Last.fm API Stillingar"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": "Sláðu inn ListenBrainz notandalykilinn"
|
||||
},
|
||||
"scrobble-other-media": "Scrobble aðra fjölmiðla"
|
||||
},
|
||||
"name": "Scrobbler",
|
||||
"prompt": {
|
||||
"lastfm": {
|
||||
"api-key": "Last.fm API lykill",
|
||||
"api-secret": "Last.fm API leyndarmál"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": {
|
||||
"label": "Sláðu inn ListenBrainz notandatáknið þitt:",
|
||||
"title": "ListenBrainz tákn"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"shortcuts": {
|
||||
"description": "Leyfir að stilla alþjóðlegaflýtilykla fyrir spilun (spila/gera hlé/næsta/fyrri) og slökkva á OSD miðla með því að hnekkja miðlunartökkum, kveikja á Ctrl/CMD + F til að leita, kveikja á Linux MPRIS stuðningi fyrir miðlunarlykla og sérsniðna flýtilykla fyrir lengra komna notendur",
|
||||
"menu": {
|
||||
"override-media-keys": "Hneka Fjölmiðlalykla",
|
||||
"set-keybinds": "Stilltu Alþjóðlegslagastýringar"
|
||||
},
|
||||
"name": "Flýtileiðir (og MPRIS)",
|
||||
"prompt": {
|
||||
"keybind": {
|
||||
"keybind-options": {
|
||||
"next": "Næst",
|
||||
"play-pause": "Spila / Hlé",
|
||||
"previous": "Fyrri"
|
||||
},
|
||||
"label": "Veldu Alþjóðlegslyklabind fyrir Lagastýringu:",
|
||||
"title": "Alþjóðlegslyklabindingar"
|
||||
}
|
||||
}
|
||||
},
|
||||
"skip-disliked-songs": {
|
||||
"description": "Sleppir mislíkaði lög",
|
||||
"name": "Slepptu Mislíkaði Lög"
|
||||
},
|
||||
"skip-silences": {
|
||||
"description": "Slepptu sjálfkrafa þagnarköflum í lögum",
|
||||
"name": "Slepptu Þögnum"
|
||||
},
|
||||
"sponsorblock": {
|
||||
"description": "Sleppur sjálfkrafa hlutum sem ekki eru tónlist, eins og inngangur/lok eða hlutar af tónlistarmyndböndum þar sem lag er ekki að spila",
|
||||
"name": "Styrktarblokk"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "Veitir samstillta texta við lög, með því að nota veitur eins og LRClib.",
|
||||
"errors": {
|
||||
"fetch": "⚠️ - Villa kom upp við að sækja textann. Vinsamlegast reyndu aftur síðar.",
|
||||
"not-found": "⚠️ - Enginn texti fannst við þetta lag."
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "Sjálfgefið tákn á milli texta",
|
||||
"tooltip": "Veldu sjálfgefna tákn til að nota fyrir bilið á milli texta"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "Línuafleiðing",
|
||||
"submenu": {
|
||||
"focus": {
|
||||
"label": "Brennidepill",
|
||||
"tooltip": "Gerðu aðeins núverandi línu hvíta"
|
||||
},
|
||||
"offset": {
|
||||
"label": "Fararbyrjun",
|
||||
"tooltip": "Fararbyrjun á hægri af núverandi línan"
|
||||
},
|
||||
"scale": {
|
||||
"label": "Skali",
|
||||
"tooltip": "Skala núverandi línu"
|
||||
}
|
||||
},
|
||||
"tooltip": "Veldu áhrif til að nota á núverandi línu"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "Gera textana fullkomlega samstillta",
|
||||
"tooltip": "Reikna upp á millisekúndu birtingu næstu línu (getur haft lítil áhrif á frammistöðu)"
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "Sýna texta, jafnvel þótt hann sé ónákvæmur",
|
||||
"tooltip": "Ef lagið finnst ekki reynir tengiforritið aftur með annarri leitarfyrirspurn.\nNiðurstaðan úr annarri tilraun er kannski ekki nákvæm."
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "Sýna tímikóðar",
|
||||
"tooltip": "Sýna tímakóðana við hliðina á textanum"
|
||||
}
|
||||
},
|
||||
"name": "Samstilltur texti",
|
||||
"refetch-btn": {
|
||||
"fetching": "Er að sækja",
|
||||
"normal": "Endursækja texta"
|
||||
},
|
||||
"warnings": {
|
||||
"duration-mismatch": "⚠️ - Textarnir gætu verið ekki samstilltir vegna tímalengdar.",
|
||||
"inexact": "⚠️ - Textinn við þetta lag er kannski ekki nákvæmur",
|
||||
"instrumental": "⚠️ - Þetta er hljóðfærilegt lag"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "Stjórnaðu spilun frá Windows verkefnastikunni þinni",
|
||||
"name": "Miðlunarstýringarverkefnastikunnar"
|
||||
},
|
||||
"touchbar": {
|
||||
"description": "Bætir við Snertistiku græju fyrir macOS notendur",
|
||||
"name": "Snertistiku"
|
||||
},
|
||||
"tuna-obs": {
|
||||
"description": "Samþætting við OBS viðbót Tuna",
|
||||
"name": "Tuna OBS"
|
||||
},
|
||||
"video-toggle": {
|
||||
"description": "Bætir við hnappi til að skipta á milli myndbands/lagshams. Getur einnig valfrjálst fjarlægt allan myndbandsflipann",
|
||||
"menu": {
|
||||
"align": {
|
||||
"label": "Jöfnun",
|
||||
"submenu": {
|
||||
"left": "Vinstri",
|
||||
"middle": "Miðja",
|
||||
"right": "Rétt"
|
||||
}
|
||||
},
|
||||
"force-hide": "Þvingaðu fjarlægja myndbandsflipann",
|
||||
"mode": {
|
||||
"label": "Hamur",
|
||||
"submenu": {
|
||||
"custom": "Sérsniðinn rofi",
|
||||
"disabled": "Fötluð",
|
||||
"native": "Innfæddsrofi"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Myndbandsrofi",
|
||||
"templates": {
|
||||
"button": "Lag"
|
||||
}
|
||||
},
|
||||
"visualizer": {
|
||||
"description": "Bætir sýndarstýringar við spilarann",
|
||||
"menu": {
|
||||
"visualizer-type": "Sýndarstýringartegund"
|
||||
},
|
||||
"name": "Sýndarstýringar"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -158,6 +158,14 @@
|
||||
},
|
||||
"remove-upgrade-button": "Rimuovi il pulsante aggiorna",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "Annulla",
|
||||
"remove": "Rimuovi"
|
||||
},
|
||||
"remove-theme": "Sei sicuro di voler rimuovere il tema personalizzato?",
|
||||
"remove-theme-message": "Questo rimuoverà il tema personalizzato"
|
||||
},
|
||||
"label": "Tema",
|
||||
"submenu": {
|
||||
"import-css-file": "Importa file CSS personalizzato",
|
||||
@ -199,6 +207,10 @@
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "Se viene riprodotto un annuncio, l'audio viene disattivato e viene impostata la velocità di riproduzione su 16x",
|
||||
"name": "Accelerazione ad"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "Blocca tutti gli annunci e i tracker",
|
||||
"menu": {
|
||||
@ -212,6 +224,14 @@
|
||||
},
|
||||
"album-color-theme": {
|
||||
"description": "Applica un tema dinamico e degli effetti visivi basandosi sul colore dell'album",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "Percentiuale colore",
|
||||
"submenu": {
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Tema abbinato a colore album"
|
||||
},
|
||||
"ambient-mode": {
|
||||
@ -259,6 +279,56 @@
|
||||
},
|
||||
"name": "Modalità Ambiente"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "Aggiunge il supporto a YouTube Music per il widget Amuse Now Playing di 6K Labs",
|
||||
"name": "Amuse",
|
||||
"response": {
|
||||
"query": "Il server API di Amuse è in funzione. GET /query per ottenere informazioni sui brani."
|
||||
}
|
||||
},
|
||||
"api-server": {
|
||||
"description": "Aggiunge un server API per controllare il player",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "Permetti",
|
||||
"deny": "Nega"
|
||||
},
|
||||
"message": "Consentire a {{ID}} ({{origin}}) di accedere all'API?",
|
||||
"title": "Autorizzazione API richiesta"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Metodo di autorizzazione",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "Autorizza alla prima richiesta"
|
||||
},
|
||||
"none": {
|
||||
"label": "Nessuna autorizzazione"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "Hostname"
|
||||
},
|
||||
"port": {
|
||||
"label": "Porta"
|
||||
}
|
||||
},
|
||||
"name": "API Server [Beta]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "Inserisci il nome host (ad esempio 0.0.0.0) per il server API:",
|
||||
"title": "Hostname"
|
||||
},
|
||||
"port": {
|
||||
"label": "Inserisci la porta per il server API:",
|
||||
"title": "Porta"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Attiva la compressione audio (abbassa il volume delle parti più alte e alza quello delle parti più basse del segnale)",
|
||||
"name": "Compressore audio"
|
||||
@ -394,6 +464,21 @@
|
||||
"description": "Download MP3 / sorgenti audio direttamente dall'interfaccia",
|
||||
"menu": {
|
||||
"choose-download-folder": "Scegli cartella download",
|
||||
"download-finish-settings": {
|
||||
"label": "Scarica al termine",
|
||||
"prompt": {
|
||||
"last-percent": "Dopo x percento",
|
||||
"last-seconds": "Ultimi x secondi",
|
||||
"title": "Configura quando scaricare"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "Avanzato",
|
||||
"enabled": "Abilitato",
|
||||
"mode": "Modalità tempo",
|
||||
"percent": "Percentuale",
|
||||
"seconds": "Secondi"
|
||||
}
|
||||
},
|
||||
"download-playlist": "Scarica la playlist",
|
||||
"presets": "Preimpostazioni",
|
||||
"skip-existing": "Salta i file esistenti"
|
||||
@ -406,6 +491,18 @@
|
||||
"button": "Scarica"
|
||||
}
|
||||
},
|
||||
"equalizer": {
|
||||
"description": "Aggiunge un equalizzatore al player",
|
||||
"menu": {
|
||||
"presets": {
|
||||
"label": "Preset",
|
||||
"list": {
|
||||
"bass-booster": "Booster dei bassi"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Equalizzatore"
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "Rende esponenziale il cursore del volume, in modo da facilitare la selezione di volumi più bassi.",
|
||||
"name": "Volume esponenziale"
|
||||
@ -571,13 +668,23 @@
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "Aggiunge il supporto per lo scrobbling (Last.fm, Listenbrainz ecc.)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "Impossibile autenticarsi con Last.fm\nNascondi il popup fino al prossimo riavvio.",
|
||||
"title": "Autenticazione fallita"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "Impostazione Last.fm API"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": "Inserire il token utente per ListenBrainz"
|
||||
}
|
||||
},
|
||||
"scrobble-alternative-title": "Usa titoli alternativi",
|
||||
"scrobble-other-media": "Scrobble altri media"
|
||||
},
|
||||
"name": "Scrobbler",
|
||||
"prompt": {
|
||||
@ -624,6 +731,66 @@
|
||||
"description": "Salta automaticamente le parti non musicali, come l'intro/outro delle canzoni o le parti dei video musicali in cui non viene riprodotto il brano",
|
||||
"name": "Blocco sponsor"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "Fornisce testi sincronizzati alle canzoni, utilizzando provider come LRClib.",
|
||||
"errors": {
|
||||
"fetch": "⚠️ \tSi è verificato un errore nel recuperare il testo.\n\tPer favore riprova più tardi.",
|
||||
"not-found": "⚠️ Nessun testo trovato per questa canzone."
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "Carattere predefinito tra i testi",
|
||||
"tooltip": "Scegliere il carattere predefinito da utilizzare per l'intervallo tra i testi"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "Effetto linea",
|
||||
"submenu": {
|
||||
"fancy": {
|
||||
"tooltip": "Usa effetti grandi, simili a quelli di un'app sulla riga attuale"
|
||||
},
|
||||
"focus": {
|
||||
"label": "Focus",
|
||||
"tooltip": "Rendi bianca solo la riga corrente"
|
||||
},
|
||||
"offset": {
|
||||
"label": "Offset",
|
||||
"tooltip": "Offset a destra della riga corrente"
|
||||
},
|
||||
"scale": {
|
||||
"label": "Ingrandimento",
|
||||
"tooltip": "Ingrandisci la linea corrente"
|
||||
}
|
||||
},
|
||||
"tooltip": "Scegli l'effetto da applicare alla linea corrente"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "Rendi i testi perfettamente sincronizzati",
|
||||
"tooltip": "Calcola al millisecondo la visualizzazione della riga successiva (può avere un piccolo impatto sulle prestazioni)"
|
||||
},
|
||||
"romanization": {
|
||||
"label": "Testi in caratteri occidentali",
|
||||
"tooltip": "Qualora il testo fosse scritto in una lingua non occidentale, prova a visualizzarlo in caratteri latini."
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "Mostra le lyric anche se incorrette",
|
||||
"tooltip": "Se il brano non viene trovato, il plugin riprova con un'altra query di ricerca.\nIl risultato del secondo tentativo potrebbe non essere esatto."
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "Mostra time code",
|
||||
"tooltip": "Mostra i codici temporali accanto ai testi"
|
||||
}
|
||||
},
|
||||
"name": "Testi sincronizzati",
|
||||
"refetch-btn": {
|
||||
"fetching": "Sto recuperando...",
|
||||
"normal": "Recupera i testi"
|
||||
},
|
||||
"warnings": {
|
||||
"duration-mismatch": "⚠️ - I testi potrebbero non essere sincronizzati a causa di una mancata corrispondenza della durata.",
|
||||
"inexact": "⚠️ - Il testo di questa canzone potrebbe essere inesatto",
|
||||
"instrumental": "⚠️ - Questo è un brano strumentale"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "Controlla riproduzione dalla taskbar di Windows",
|
||||
"name": "Controlli multimediali sulla taskbar"
|
||||
@ -636,6 +803,10 @@
|
||||
"description": "Integrazione con il plugin OBS Tuna",
|
||||
"name": "Tuna OBS"
|
||||
},
|
||||
"unobtrusive-player": {
|
||||
"description": "Evita che il player si apra automaticamente durante la riproduzione di un brano",
|
||||
"name": "Player Discreto"
|
||||
},
|
||||
"video-toggle": {
|
||||
"description": "Aggiunge un pulsante per passare dalla modalità Video a quella Brano. Può anche rimuovere l'intera scheda Brano/Video",
|
||||
"menu": {
|
||||
|
||||
@ -2,11 +2,11 @@
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "プラグイン・{{pluginName}}:{{contextName}}を実行できませんでした",
|
||||
"execute-failed": "プラグイン・{{pluginName}}:{{contextName}}の実行に失敗しました",
|
||||
"executed-at-ms": "プラグイン {{pluginName}}::{{contextName}} は {{ms}}ms で実行されました",
|
||||
"initialize-failed": "プラグイン \"{{pluginName}}\" の初期化に失敗",
|
||||
"load-all": "すべてのプラグインをロード中",
|
||||
"load-failed": "プラグイン”{{pluginName}}”のロードが失敗しました",
|
||||
"load-failed": "プラグイン”{{pluginName}}”のロードに失敗しました",
|
||||
"loaded": "プラグイン”{{pluginName}}”ロード完了",
|
||||
"unload-failed": "プラグインのアンロードに失敗 \"{{pluginName}}\"",
|
||||
"unloaded": "プラグイン {{pluginName}} がアンロードされました"
|
||||
@ -24,10 +24,10 @@
|
||||
"dev-tools": "ロード完了。デベロッパーツールが開きました"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "翻訳ロード完了"
|
||||
"loaded": "i18n ロード完了"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "プロトコルより命令を受けました:”{{command}}”"
|
||||
"receive-command": "プロトコルから命令を受けました:”{{command}}”"
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "CSSファイル”{{cssFile}}”が存在しません。無視します"
|
||||
@ -51,7 +51,7 @@
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "あとで",
|
||||
"restart-now": "今すぐ再起動する"
|
||||
"restart-now": "今すぐ再起動"
|
||||
},
|
||||
"detail": "プラグイン ”{{pluginName}}” を有効にするには再起動が必要です",
|
||||
"message": "”{{pluginName}}”は再起動が必要です",
|
||||
@ -64,12 +64,12 @@
|
||||
"wait": "待つ"
|
||||
},
|
||||
"detail": "ご不便をおかけして申し訳ございません! 何をするか選んでください:",
|
||||
"message": "アプリケーションは応答しません",
|
||||
"title": "ウィンドウが応答しません"
|
||||
"message": "アプリケーションは応答していません",
|
||||
"title": "ウィンドウが応答していません"
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"disable": "更新を無効化",
|
||||
"disable": "アップデートを無効化",
|
||||
"download": "ダウンロード",
|
||||
"ok": "OK"
|
||||
},
|
||||
@ -98,13 +98,13 @@
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "アプリの開始時にキャッシュをリセット",
|
||||
"disable-hardware-acceleration": "ハードウェアアクセラレーションの無効化",
|
||||
"edit-config-json": "config.json を編集する",
|
||||
"edit-config-json": "config.json を編集",
|
||||
"override-user-agent": "ユーザーエージェントの上書き",
|
||||
"restart-on-config-changes": "設定変更時に再起動",
|
||||
"set-proxy": {
|
||||
"label": "プロキシ",
|
||||
"label": "プロキシ設定",
|
||||
"prompt": {
|
||||
"label": "プロキシのアドレスを入力: (空にすると無効化)",
|
||||
"label": "プロキシのアドレスを入力: (空で無効化)",
|
||||
"placeholder": "例: SOCKS5://127.0.0.1:9999",
|
||||
"title": "プロキシ"
|
||||
}
|
||||
@ -158,6 +158,14 @@
|
||||
},
|
||||
"remove-upgrade-button": "アップグレードボタンを削除",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "キャンセル",
|
||||
"remove": "削除"
|
||||
},
|
||||
"remove-theme": "本当にカスタムテーマを削除しますか?",
|
||||
"remove-theme-message": "カスタムテーマを削除します"
|
||||
},
|
||||
"label": "テーマ",
|
||||
"submenu": {
|
||||
"import-css-file": "CSSファイルをインポート",
|
||||
@ -199,6 +207,10 @@
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "広告が再生されると、自動的にミュートされ、再生速度が16倍に設定されます",
|
||||
"name": "広告のスピードを上げる"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "すべての広告とトラッカーをブロックj",
|
||||
"menu": {
|
||||
@ -267,6 +279,56 @@
|
||||
},
|
||||
"name": "アンビエント モード"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "6K LabsのAmuse再生中ウィジェットがYouTube Musicに対応しました",
|
||||
"name": "Amuse",
|
||||
"response": {
|
||||
"query": "AmuseのAPIサーバーが稼働中です。GET /query で楽曲情報を取得できます。"
|
||||
}
|
||||
},
|
||||
"api-server": {
|
||||
"description": "プレイヤーを制御するAPIサーバーを追加",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "許可",
|
||||
"deny": "拒否"
|
||||
},
|
||||
"message": "{{ID}}が{{origin}}にアクセスすることを許可しますか?",
|
||||
"title": "API承認リクエスト"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "許可方法",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "初回リクエスト時に承認"
|
||||
},
|
||||
"none": {
|
||||
"label": "不許可"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "ホスト名"
|
||||
},
|
||||
"port": {
|
||||
"label": "ポート"
|
||||
}
|
||||
},
|
||||
"name": "APIサーバー(Beta)",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "APIサーバーのポート名(0.0.0.0など)を入力:",
|
||||
"title": "ホスト名"
|
||||
},
|
||||
"port": {
|
||||
"label": "APIサーバーのポートを入力:",
|
||||
"title": "ポート"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "オーディオにコンプレッサーを適用します(信号での一番大きい部分の音量を下げ、小さい部分の音量を上げる)",
|
||||
"name": "オーディオコンプレッサー"
|
||||
@ -402,6 +464,21 @@
|
||||
"description": "UIから直にMP3・ソースオーディオをダウンロードします",
|
||||
"menu": {
|
||||
"choose-download-folder": "ダウンロードフォルダ",
|
||||
"download-finish-settings": {
|
||||
"label": "完了時にダウンロード",
|
||||
"prompt": {
|
||||
"last-percent": "x パーセント後",
|
||||
"last-seconds": "最後の x 秒",
|
||||
"title": "保存するタイミング"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "高度な設定",
|
||||
"enabled": "有効",
|
||||
"mode": "時間モード",
|
||||
"percent": "パーセント",
|
||||
"seconds": "秒"
|
||||
}
|
||||
},
|
||||
"download-playlist": "プレイリストをダウンロード",
|
||||
"presets": "プリセット",
|
||||
"skip-existing": "存在するファイルをスキップ"
|
||||
@ -414,6 +491,18 @@
|
||||
"button": "ダウンロード"
|
||||
}
|
||||
},
|
||||
"equalizer": {
|
||||
"description": "イコライザーを追加",
|
||||
"menu": {
|
||||
"presets": {
|
||||
"label": "プリセット",
|
||||
"list": {
|
||||
"bass-booster": "ベースブースター"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "イコライザー"
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "音量スライダを指数関数的にさせ、低い音量に設定しやすくなります。",
|
||||
"name": "指数音量"
|
||||
@ -451,15 +540,15 @@
|
||||
},
|
||||
"menu": {
|
||||
"click-to-copy-id": "ホストIDをコピー",
|
||||
"close": "一緒に音楽を閉じる",
|
||||
"connected-users": "接続されているユーザー",
|
||||
"disconnect": "一緒に音楽を切断する",
|
||||
"close": "Music Togetherを閉じる",
|
||||
"connected-users": "接続中のユーザー",
|
||||
"disconnect": "Music Togetherから切断",
|
||||
"empty-user": "接続中のユーザーはいません",
|
||||
"host": "Music Together ホスト",
|
||||
"join": "一緒に音楽に参加",
|
||||
"host": "Music Togetherをホスト",
|
||||
"join": "Music Togetherに参加",
|
||||
"permission": {
|
||||
"all": "ゲストがプレイリストとプレーヤーを制御できるようにする",
|
||||
"host-only": "ホストのみがプレイリストとプレーヤーを制御できます",
|
||||
"all": "ゲストの再生リストとプレーヤーを制御を許可",
|
||||
"host-only": "ホストのみがプレイリストとプレーヤーを制御",
|
||||
"playlist": "ゲストによるプレイリストの制御を許可する"
|
||||
},
|
||||
"set-permission": "制御権限を変更",
|
||||
@ -469,20 +558,20 @@
|
||||
"host": "ホストとして接続されています"
|
||||
}
|
||||
},
|
||||
"name": "一緒に音楽 [ベータ版]",
|
||||
"name": "Music Together [ベータ]",
|
||||
"toast": {
|
||||
"add-song-failed": "曲の追加に失敗しました",
|
||||
"closed": "一緒に音楽が閉じられました",
|
||||
"disconnected": "一緒に音楽が切断されました",
|
||||
"host-failed": "一緒に音楽のホストに失敗しました",
|
||||
"closed": "Music Together が閉じられました",
|
||||
"disconnected": "Music Together が切断されました",
|
||||
"host-failed": "Music Together のホストに失敗しました",
|
||||
"id-copied": "ホストIDがクリップボードにコピーされました",
|
||||
"id-copy-failed": "ホストIDをクリップボードにコピー出来ませんでした",
|
||||
"join-failed": "一緒に音楽に参加出来ませんでした",
|
||||
"joined": "一緒に音楽に参加しました",
|
||||
"permission-changed": "一緒に音楽の権限が \"{{permission}}\" に変更されました",
|
||||
"join-failed": "Music Together に参加出来ませんでした",
|
||||
"joined": "Music Together に参加しました",
|
||||
"permission-changed": "Music Togetherの権限が \"{{permission}}\" に変更されました",
|
||||
"remove-song-failed": "曲の削除に失敗しました",
|
||||
"user-connected": "{{name}} が一緒に音楽に参加しました",
|
||||
"user-disconnected": "{{name}} が一緒に音楽を退出しました"
|
||||
"user-connected": "{{name}} がMusic Togetherに参加しました",
|
||||
"user-disconnected": "{{name}} がMusic Togetherを退出しました"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
@ -579,6 +668,14 @@
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "スクロブリング対応を追加します(例:last.fm、Listenbrainzなど)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "Last.fm の認証に失敗しました\n次の再起動までポップアップは非表示になります。",
|
||||
"title": "認証に失敗"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "Last.fm API 設定"
|
||||
@ -586,6 +683,7 @@
|
||||
"listenbrainz": {
|
||||
"token": "ListenBrainzユーザートークンを入力してください"
|
||||
},
|
||||
"scrobble-alternative-title": "代替タイトルを使用する",
|
||||
"scrobble-other-media": "他のメディアをScrobbleする"
|
||||
},
|
||||
"name": "スクロブラー",
|
||||
@ -633,6 +731,67 @@
|
||||
"description": "イントロ/アウトロなどの音楽以外の部分や、曲が再生されていないミュージック ビデオの部分を自動的にスキップします",
|
||||
"name": "SponsorBlock"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "LRClibのようなプロバイダを使って、楽曲に同期した歌詞を使用する。",
|
||||
"errors": {
|
||||
"fetch": "⚠️ \t歌詞の取得中にエラーが発生しました。\n\t後でもう一度お試しください。",
|
||||
"not-found": "⚠️ この曲の歌詞は見つかりませんでした。"
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "デフォルトの歌詞間の文字",
|
||||
"tooltip": "歌詞と歌詞の間に使用するデフォルトの文字を選択してください"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "歌詞表示のエフェクト",
|
||||
"submenu": {
|
||||
"fancy": {
|
||||
"label": "ファンシー",
|
||||
"tooltip": "現在の行にアプリのような大きなエフェクトを使う"
|
||||
},
|
||||
"focus": {
|
||||
"label": "フォーカス",
|
||||
"tooltip": "現在の行だけを白くする"
|
||||
},
|
||||
"offset": {
|
||||
"label": "オフセット",
|
||||
"tooltip": "オフセットを現在の行の右側にする"
|
||||
},
|
||||
"scale": {
|
||||
"label": "サイズ",
|
||||
"tooltip": "現在の行のサイズ変更をする"
|
||||
}
|
||||
},
|
||||
"tooltip": "現在の行に適用するエフェクトを選択"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "歌詞を完璧に同期させる",
|
||||
"tooltip": "次の行の表示をミリ秒単位で計算する(パフォーマンスに若干の影響を与える可能性があります)"
|
||||
},
|
||||
"romanization": {
|
||||
"label": "ローマ字歌詞",
|
||||
"tooltip": "歌詞が異なる言語で書かれている場合は、ラテン語バージョンを表示するようにしてください。"
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "歌詞が不正確でも表示する",
|
||||
"tooltip": "曲が見つからなかった場合、プラグインは別の検索クエリで再試行します。\nただし、再試行の結果は正確でない可能性があります。"
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "タイムコードを表示",
|
||||
"tooltip": "歌詞の横にタイムコードを表示"
|
||||
}
|
||||
},
|
||||
"name": "歌詞を同期",
|
||||
"refetch-btn": {
|
||||
"fetching": "取得中...",
|
||||
"normal": "歌詞を再取得"
|
||||
},
|
||||
"warnings": {
|
||||
"duration-mismatch": "⚠️ - タイミングが合わないため、歌詞が同期されていない可能性があります。",
|
||||
"inexact": "⚠️ - この曲の歌詞は正確ではないかもしれません",
|
||||
"instrumental": "⚠️ - これは演奏のみの曲です"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "Windowsタスクバーから再生をコントロール",
|
||||
"name": "タスクバーメディアコントロール"
|
||||
@ -645,6 +804,10 @@
|
||||
"description": "OBSのプラグインTunaの統合",
|
||||
"name": "Tuna OBS"
|
||||
},
|
||||
"unobtrusive-player": {
|
||||
"description": "曲の再生時にプレーヤーがポップアップしないようにする",
|
||||
"name": "控えめなプレーヤー"
|
||||
},
|
||||
"video-toggle": {
|
||||
"description": "ビデオ/ソングモードを切り替えるボタンを追加します。オプションでビデオタブ全体を削除することもできます",
|
||||
"menu": {
|
||||
|
||||
308
src/i18n/resources/ka.json
Normal file
@ -0,0 +1,308 @@
|
||||
{
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "პლაგინის დაყენების შეცდომა {{pluginName}}::{{contextName}}",
|
||||
"executed-at-ms": "პლაგინი {{pluginName}}::{{contextName}} გაეშვა {{ms}} მილიწამში",
|
||||
"initialize-failed": "პლაგინის ინიციალიზაცია ვერ მოხდა\"{{pluginName}}\"",
|
||||
"load-all": "იტვირთება ყველა პლაგინი",
|
||||
"load-failed": "პლაგინის ჩატვირთვა ვერ მოხდა \"{{pluginName}}\"",
|
||||
"loaded": "პლაგინი \"{{pluginName}}\" ჩაიტვირთა",
|
||||
"unload-failed": "პლაგინის {{pluginName}} გათიშვა ვერ მოხერხდა",
|
||||
"unloaded": "პლაგინი {{pluginName}} გათიშულია"
|
||||
}
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"code": "ka",
|
||||
"local-name": "ქართული",
|
||||
"name": "Georgian"
|
||||
},
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "ჩატვირთვა დასრულებულია. DevTools გახსნილია"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "i18n ჩართულია"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "მიღებულია ბრძანება პროტოკოლზე: {{command}}"
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "CSS ფაილი {{cssFile}} არ არსებობს, იგნორირება"
|
||||
},
|
||||
"unresponsive": {
|
||||
"details": "უპასუხო შეცდომა!\n{{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "აპლიკაციის ქეშის გაწმენდვა"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "მოგვიანებით"
|
||||
}
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "გასვლა",
|
||||
"relaunch": "თავიდან გაშვება",
|
||||
"wait": "მოცდა"
|
||||
}
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"download": "გადმოწერა",
|
||||
"ok": "დიახ"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"about": "შესახებ",
|
||||
"navigation": {
|
||||
"label": "ნავიგაცია",
|
||||
"submenu": {
|
||||
"quit": "გასვლა"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"label": "მორგება",
|
||||
"submenu": {
|
||||
"language": {
|
||||
"label": "ენა"
|
||||
},
|
||||
"starting-page": {
|
||||
"unset": "მოხსნა"
|
||||
},
|
||||
"tray": {
|
||||
"submenu": {
|
||||
"disabled": "გამორთულია"
|
||||
}
|
||||
},
|
||||
"visual-tweaks": {
|
||||
"submenu": {
|
||||
"like-buttons": {
|
||||
"default": "ნაგულისხმევი",
|
||||
"hide": "დამალვა"
|
||||
},
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "გაუქმება",
|
||||
"remove": "წაშლა"
|
||||
}
|
||||
},
|
||||
"label": "თემა"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"enabled": "ჩართულია",
|
||||
"label": "დამატებები",
|
||||
"new": "ახალი"
|
||||
},
|
||||
"view": {
|
||||
"label": "ხედი",
|
||||
"submenu": {
|
||||
"reload": "თავიდან ჩატვირთვა"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"next": "შემდეგი",
|
||||
"play-pause": "დაკვრა/შეჩერება",
|
||||
"previous": "წინა",
|
||||
"quit": "გასვლა"
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"adblocker": {
|
||||
"menu": {
|
||||
"blocker": "დამბლოკავი"
|
||||
}
|
||||
},
|
||||
"album-color-theme": {
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"submenu": {
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"ambient-mode": {
|
||||
"menu": {
|
||||
"buffer": {
|
||||
"label": "ბუფერი",
|
||||
"submenu": {
|
||||
"buffer": "{{buffer}}"
|
||||
}
|
||||
},
|
||||
"opacity": {
|
||||
"label": "გაუმჭვირვალობა",
|
||||
"submenu": {
|
||||
"percent": "{{opacity}}%"
|
||||
}
|
||||
},
|
||||
"quality": {
|
||||
"label": "ხარისხი"
|
||||
},
|
||||
"size": {
|
||||
"label": "ზომა",
|
||||
"submenu": {
|
||||
"percent": "{{size}}%"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"amuse": {
|
||||
"name": "Amuse"
|
||||
},
|
||||
"api-server": {
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "დაშვება",
|
||||
"deny": "აკრძალვა"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"hostname": {
|
||||
"label": "ჰოსტის სახელი"
|
||||
},
|
||||
"port": {
|
||||
"label": "პორტი"
|
||||
}
|
||||
},
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"title": "ჰოსტის სახელი"
|
||||
},
|
||||
"port": {
|
||||
"title": "პორტი"
|
||||
}
|
||||
}
|
||||
},
|
||||
"captions-selector": {
|
||||
"prompt": {
|
||||
"selector": {
|
||||
"none": "არცერთი"
|
||||
}
|
||||
}
|
||||
},
|
||||
"crossfade": {
|
||||
"menu": {
|
||||
"advanced": "დამატებით"
|
||||
},
|
||||
"prompt": {
|
||||
"options": {
|
||||
"multi-input": {
|
||||
"fade-scaling": {
|
||||
"linear": "წრფივი",
|
||||
"logarithmic": "ლოგარითმული"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"discord": {
|
||||
"menu": {
|
||||
"connected": "დაკავშირებული",
|
||||
"disconnected": "გათიშული"
|
||||
}
|
||||
},
|
||||
"downloader": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"error": {
|
||||
"buttons": {
|
||||
"ok": "დიახ"
|
||||
}
|
||||
},
|
||||
"start-download-playlist": {
|
||||
"buttons": {
|
||||
"ok": "დიახ"
|
||||
}
|
||||
}
|
||||
},
|
||||
"feedback": {
|
||||
"converting": "გადაყვანა…",
|
||||
"downloading": "გადმოწერა…",
|
||||
"loading": "ჩატვირთვა…",
|
||||
"saving": "შენახვა…"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"download-finish-settings": {
|
||||
"submenu": {
|
||||
"advanced": "დამატებით",
|
||||
"enabled": "ჩართულია",
|
||||
"percent": "პროცენტი",
|
||||
"seconds": "წამი"
|
||||
}
|
||||
},
|
||||
"presets": "პრესეტი"
|
||||
},
|
||||
"name": "გადმომწერი",
|
||||
"templates": {
|
||||
"button": "გადმოწერა"
|
||||
}
|
||||
},
|
||||
"music-together": {
|
||||
"internal": {
|
||||
"save": "შენახვა"
|
||||
},
|
||||
"menu": {
|
||||
"status": {
|
||||
"disconnected": "გათიშული"
|
||||
}
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"name": "ნავიგაცია"
|
||||
},
|
||||
"notifications": {
|
||||
"name": "გაფრთხილებები"
|
||||
},
|
||||
"picture-in-picture": {
|
||||
"name": "სურათი სურათში",
|
||||
"templates": {
|
||||
"button": "სურათი სურათში"
|
||||
}
|
||||
},
|
||||
"playback-speed": {
|
||||
"templates": {
|
||||
"button": "სიჩქარე"
|
||||
}
|
||||
},
|
||||
"shortcuts": {
|
||||
"prompt": {
|
||||
"keybind": {
|
||||
"keybind-options": {
|
||||
"next": "შემდეგი",
|
||||
"previous": "წინა"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"sponsorblock": {
|
||||
"name": "სარეკლამო ბლოკი"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"menu": {
|
||||
"line-effect": {
|
||||
"submenu": {
|
||||
"focus": {
|
||||
"label": "ფოკუსი"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
7
src/i18n/resources/kn.json
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"language": {
|
||||
"code": "kn",
|
||||
"local-name": "ಕನ್ನಡ",
|
||||
"name": "Kannada"
|
||||
}
|
||||
}
|
||||
@ -158,6 +158,14 @@
|
||||
},
|
||||
"remove-upgrade-button": "업그레이드 버튼 제거",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "취소",
|
||||
"remove": "제거"
|
||||
},
|
||||
"remove-theme": "사용자 정의 테마를 제거하시겠습니까?",
|
||||
"remove-theme-message": "사용자 정의 테마가 제거됩니다. 계속하시겠습니까?"
|
||||
},
|
||||
"label": "테마",
|
||||
"submenu": {
|
||||
"import-css-file": "사용자 정의 CSS 파일 가져오기",
|
||||
@ -199,6 +207,10 @@
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "광고가 재생될 때, 오디오가 음소거되고 재생 속도가 16배로 설정됩니다",
|
||||
"name": "광고 배속"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "모든 광고와 트래커를 즉시 차단합니다",
|
||||
"menu": {
|
||||
@ -267,6 +279,56 @@
|
||||
},
|
||||
"name": "앰비언트 모드"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "6K Labs Amuse의 'now playing' 위젯에 YouTube Music 지원 추가",
|
||||
"name": "Amuse",
|
||||
"response": {
|
||||
"query": "Amuse API 서버가 실행 중입니다. GET /query로 노래 정보를 가져오세요."
|
||||
}
|
||||
},
|
||||
"api-server": {
|
||||
"description": "플레이어를 제어하기 위한 API 서버를 추가합니다",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "허용",
|
||||
"deny": "거부"
|
||||
},
|
||||
"message": "{{ID}} ({{origin}})이(가) API에 액세스하도록 허용하시겠습니까?",
|
||||
"title": "API 권한 요청"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "인증 정책",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "첫 번째 요청 시 인증"
|
||||
},
|
||||
"none": {
|
||||
"label": "인증 없음"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "호스트 명"
|
||||
},
|
||||
"port": {
|
||||
"label": "포트"
|
||||
}
|
||||
},
|
||||
"name": "API 서버 [베타]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "API 서버가 사용할 호스트 명(예: 0.0.0.0)을 입력하세요:",
|
||||
"title": "호스트 명"
|
||||
},
|
||||
"port": {
|
||||
"label": "API 서버가 사용할 포트를 입력하세요:",
|
||||
"title": "포트"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "오디오에 컴프레서를 적용합니다 (신호에서 가장 시끄러운 부분의 음량을 낮추고 가장 조용한 부분의 음량을 높임)",
|
||||
"name": "오디오 컴프레서"
|
||||
@ -402,6 +464,21 @@
|
||||
"description": "UI에서 직접 MP3/소스 오디오를 다운로드하세요",
|
||||
"menu": {
|
||||
"choose-download-folder": "다운로드 폴더 선택",
|
||||
"download-finish-settings": {
|
||||
"label": "노래가 끝날 때 자동 다운로드",
|
||||
"prompt": {
|
||||
"last-percent": "x 퍼센트 이후에",
|
||||
"last-seconds": "마지막 x 초에",
|
||||
"title": "다운로드 시기 구성"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "고급",
|
||||
"enabled": "활성화",
|
||||
"mode": "시간 모드",
|
||||
"percent": "퍼센트 기준",
|
||||
"seconds": "초 기준"
|
||||
}
|
||||
},
|
||||
"download-playlist": "재생목록 다운로드",
|
||||
"presets": "프리셋",
|
||||
"skip-existing": "이미 존재하는 파일 넘기기"
|
||||
@ -414,6 +491,18 @@
|
||||
"button": "다운로드"
|
||||
}
|
||||
},
|
||||
"equalizer": {
|
||||
"description": "플레이어에 이퀄라이저를 추가합니다",
|
||||
"menu": {
|
||||
"presets": {
|
||||
"label": "프리셋",
|
||||
"list": {
|
||||
"bass-booster": "베이스 부스터"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "이퀄라이저"
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "음량 슬라이더를 지수적으로 만들어 더 낮은 음량을 쉽게 선택할 수 있도록 합니다.",
|
||||
"name": "지수 음량"
|
||||
@ -511,6 +600,10 @@
|
||||
},
|
||||
"name": "알림"
|
||||
},
|
||||
"performance-improvement": {
|
||||
"description": "위험한 스크립트를 활성화하여 성능을 개선합니다",
|
||||
"name": "성능 개선 [베타]"
|
||||
},
|
||||
"picture-in-picture": {
|
||||
"description": "앱을 PiP 모드로 전환할 수 있게 허용합니다",
|
||||
"menu": {
|
||||
@ -579,6 +672,14 @@
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "스크로블링 지원을 추가합니다 (예: last.fm, Listenbrainz)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "Last.fm 인증에 실패했습니다\n다음에 다시 시작할 때까지 팝업을 숨깁니다.",
|
||||
"title": "인증 실패"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "Last.fm API 설정"
|
||||
@ -586,6 +687,7 @@
|
||||
"listenbrainz": {
|
||||
"token": "ListenBrainz 유저 토큰 입력"
|
||||
},
|
||||
"scrobble-alternative-title": "대체 제목 사용하기",
|
||||
"scrobble-other-media": "다른 미디어 스크로블하기"
|
||||
},
|
||||
"name": "스크로블러",
|
||||
@ -633,6 +735,67 @@
|
||||
"description": "인트로/아웃트로와 같은 음악이 아닌 부분이나, 노래가 재생되지 않는 뮤직 비디오의 일부를 자동으로 건너뜁니다",
|
||||
"name": "SponsorBlock"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "LRClib등의 가사 제공자에서 싱크 가사를 불러옵니다.",
|
||||
"errors": {
|
||||
"fetch": "⚠️\t가사를 불러오는 동안 오류가 발생했습니다.\n\t나중에 다시 시도해 주세요.",
|
||||
"not-found": "⚠️ 이 노래의 가사를 찾을 수 없습니다."
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "가사 사이에 표시할 문자",
|
||||
"tooltip": "가사 사이의 빈 공간에 사용할 문자를 선택합니다"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "줄 표시 효과",
|
||||
"submenu": {
|
||||
"fancy": {
|
||||
"label": "예쁘게",
|
||||
"tooltip": "유튜브 뮤직 앱처럼 커다란 효과를 현재 라인에 사용합니다"
|
||||
},
|
||||
"focus": {
|
||||
"label": "포커스",
|
||||
"tooltip": "현재 줄만 하얀색으로 표시"
|
||||
},
|
||||
"offset": {
|
||||
"label": "오프셋",
|
||||
"tooltip": "현재 줄의 오른쪽에 오프셋 적용"
|
||||
},
|
||||
"scale": {
|
||||
"label": "스케일",
|
||||
"tooltip": "현재 줄에 스케일 적용"
|
||||
}
|
||||
},
|
||||
"tooltip": "현재 줄에 적용할 효과를 선택합니다"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "가사를 최대한 정교하게 동기화",
|
||||
"tooltip": "다음 줄의 표시를 밀리초 단위로 계산합니다 (성능에 약간의 영향을 미칠 수 있음)"
|
||||
},
|
||||
"romanization": {
|
||||
"label": "가사 로마자 변환",
|
||||
"tooltip": "가사가 영어가 아닌 언어로 되어있는 경우, 로마자 표기를 표시합니다."
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "가사가 정확하지 않더라도 표시",
|
||||
"tooltip": "노래를 찾을 수 없는 경우, 플러그인이 다른 검색어로 다시 검색합니다.\n두번째 검색 결과는 정확하지 않을 수 있습니다."
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "시간 코드 표시",
|
||||
"tooltip": "가사 옆에 시간 코드 표시"
|
||||
}
|
||||
},
|
||||
"name": "싱크 가사",
|
||||
"refetch-btn": {
|
||||
"fetching": "가져오는 중...",
|
||||
"normal": "가사 다시 가져오기"
|
||||
},
|
||||
"warnings": {
|
||||
"duration-mismatch": "⚠️ - 곡 길이 불일치로 인해 가사가 일치하지 않을 수 있습니다.",
|
||||
"inexact": "⚠️ - 이 노래의 가사는 정확하지 않을 수 있습니다",
|
||||
"instrumental": "⚠️ - 연주곡입니다"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "Windows 작업 표시줄에서 재생을 제어하세요",
|
||||
"name": "작업표시줄 미디어 컨트롤"
|
||||
@ -645,6 +808,10 @@
|
||||
"description": "OBS의 확장인 Tuna와의 통합을 활성화합니다",
|
||||
"name": "Tuna OBS"
|
||||
},
|
||||
"unobtrusive-player": {
|
||||
"description": "노래 재생 중 플레이어가 팝업되는 것을 방지합니다",
|
||||
"name": "플레이어 방해 금지"
|
||||
},
|
||||
"video-toggle": {
|
||||
"description": "영상/노래 모드를 전환하는 버튼을 추가합니다. 선택적으로 전체 영상 탭을 제거할 수도 있습니다",
|
||||
"menu": {
|
||||
|
||||
@ -158,6 +158,14 @@
|
||||
},
|
||||
"remove-upgrade-button": "Nerodyti \"Patobulinti\" mygtuko",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "Atšaukti",
|
||||
"remove": "Pašalinti"
|
||||
},
|
||||
"remove-theme": "Ar tikrai norite pašalinti pasirinktinę temą?",
|
||||
"remove-theme-message": "Šis veiksmas pašalins pasirinktinę temą"
|
||||
},
|
||||
"label": "Tema",
|
||||
"submenu": {
|
||||
"import-css-file": "Įkelti pasirinktinį CSS failą",
|
||||
@ -170,7 +178,8 @@
|
||||
},
|
||||
"plugins": {
|
||||
"enabled": "Įjungta",
|
||||
"label": "Įskiepiai"
|
||||
"label": "Įskiepiai",
|
||||
"new": "NAUJIENA"
|
||||
},
|
||||
"view": {
|
||||
"label": "Vaizdas",
|
||||
@ -190,7 +199,11 @@
|
||||
"previous": "Ankstesnis",
|
||||
"quit": "Išeiti",
|
||||
"restart": "Perkrauti programą",
|
||||
"show": "Rodyti langą"
|
||||
"show": "Rodyti langą",
|
||||
"tooltip": {
|
||||
"default": "Youtube Music",
|
||||
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
@ -201,8 +214,19 @@
|
||||
},
|
||||
"name": "Reklamų blokuotojas"
|
||||
},
|
||||
"album-actions": {
|
||||
"name": "Albumo Veiksmai"
|
||||
},
|
||||
"album-color-theme": {
|
||||
"description": "Pritaiko dinamišką temą ir vizualinius efektus pagal albumo spalvų paletę",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "Spalvų maišymo santykis",
|
||||
"submenu": {
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Albumo Spalvų Tema"
|
||||
},
|
||||
"ambient-mode": {
|
||||
@ -422,6 +446,20 @@
|
||||
"fetched-lyrics": "Gauti žodžiai iš „Genius“"
|
||||
}
|
||||
},
|
||||
"music-together": {
|
||||
"description": "Pasidalinti grojaraščiu su kitais. Kai vedėjas paleis dainą, visi kiti girdės tą pačią dainą",
|
||||
"dialog": {
|
||||
"enter-host": "Įveskite vedėjo ID"
|
||||
},
|
||||
"internal": {
|
||||
"save": "Išsaugoti",
|
||||
"track-source": "Dainos kilmė",
|
||||
"unknown-user": "Nežinomas Naudotojas"
|
||||
},
|
||||
"menu": {
|
||||
"click-to-copy-id": "Kopijuoti Vedėjo ID"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"description": "Kitas/Ankstenis navigacijos rodyklės tiesiogiai integruotos sąsajoje, kaip tavo mėgstamiausioje naršyklėje",
|
||||
"name": "Navigacija"
|
||||
|
||||
57
src/i18n/resources/ml.json
Normal file
@ -0,0 +1,57 @@
|
||||
{
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"initialize-failed": "{{pluginName}}എന്ന പ്ലഗിൻ തുടങ്ങുന്നതിൽ പരാജയപെട്ടു",
|
||||
"load-all": "എല്ലാ പ്ലേഗിനും ലോഡ് ചെയ്യുന്നു",
|
||||
"loaded": "{{pluginName}} എന്ന പ്ലഗിൻ ലോഡ് ചെയ്തു",
|
||||
"unloaded": "{{pluginName}} എന്ന പ്ലഗിൻ അൺലോഡ് ചെയ്തു"
|
||||
}
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"code": "ml",
|
||||
"local-name": "മലയാളം",
|
||||
"name": "Malayalam"
|
||||
},
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "ലോഡിങ് തീർത്തു. DevTools തുറന്നു"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "i18n ലോഡ് ചെയ്തു"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "പ്രോട്ടോക്കോളിലൂടെ കമാൻഡ് ലഭിച്ചു : \"{{command}}\""
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "\"{{cssFile}}\" എന്ന CSS file നിലവിൽ ഇല്ല. ഉപേക്ഷിക്കുന്നു"
|
||||
},
|
||||
"unresponsive": {
|
||||
"details": "പ്രതികാരമില്ലാത്ത എറർ \n{{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "ആപ്പ് cache ക്ലിയർ ചെയ്യുന്നു"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "Window സ്ക്രീനിനു വെളിയിൽ render ചെയ്യാൻ ശ്രമിച്ചു, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "Menu മറച്ചിരിക്കുന്നു, അവതരിപ്പിക്കാൻ 'Alt' ഉപയോഗിക്കു (In-App Menu ഉപയോഗിക്കുന്നെങ്കിൽ 'Escape' )",
|
||||
"message": "Hide Menu പ്രവർത്തിയിൽ",
|
||||
"title": "Hide Menu പ്രവർത്തിയിൽ"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "പിന്നീട",
|
||||
"restart-now": "ഇപ്പോൾ പുനരാരംഭിക്കുക"
|
||||
},
|
||||
"detail": "\"{{pluginName}}\" പ്രവർത്തിയിൽ ആകാൻ restart വേണ്ടിയിരിക്കുന്നു",
|
||||
"message": "\"{{pluginName}}\" restart ആവശ്യപെടുന്നു"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
203
src/i18n/resources/ms.json
Normal file
@ -0,0 +1,203 @@
|
||||
{
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "Pelaksaan plugin gagal {{pluginName}}::{{contextName}}",
|
||||
"executed-at-ms": "Plugin {{pluginName}}::{{contextName}} dilaksanakan pada {{ms}}ms",
|
||||
"initialize-failed": "Gagal untuk memulakan plugin \"{{pluginName}}\"",
|
||||
"load-all": "Memuatkan semua plugin",
|
||||
"loaded": "Plugin \"{{pluginName}}\" dimuatkan",
|
||||
"unload-failed": "Gagal untuk memunggah plugin \"{{pluginName}}\"",
|
||||
"unloaded": "Plugin \"{{pluginName}}\" dipunggahkan"
|
||||
}
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"code": "ms",
|
||||
"local-name": "Bahasa Malaysia",
|
||||
"name": "Malay"
|
||||
},
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "Selesai memuat. DevTools dibuka"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "i18n dimuatkan"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "Menerima arahan atas protokol: \"{{command}}\""
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "Fail CSS \"{{cssFile}}\" tidak wujud, mengabaikan"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "Membersihkan cache aplikasi"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "Menu telah disembunyikan, guna 'Alt' untuk menunjukkannya (atau 'Escape' jika menggunakan In-App Menu)"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "Nanti",
|
||||
"restart-now": "Restart Sekarang"
|
||||
},
|
||||
"message": "\"{{pluginName}}\" perlu dimulakan semula",
|
||||
"title": "Mulakan Semula Diperlukan"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "Berhenti",
|
||||
"relaunch": "Lancar Semula",
|
||||
"wait": "Tunggu"
|
||||
},
|
||||
"detail": "Kami memohon maaf atas kesulitan! sila pilih apa yang perlu dilakukan:",
|
||||
"message": "Aplikasi Tidak Responsif",
|
||||
"title": "Window Tidak Responsif"
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"download": "Muat Turun",
|
||||
"ok": "OK"
|
||||
},
|
||||
"detail": "Versi baharu kini tersedia dan boleh dimuat turun di {{downloadLink}}"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"about": "Mengenai",
|
||||
"navigation": {
|
||||
"label": "Navigasi",
|
||||
"submenu": {
|
||||
"copy-current-url": "Salin URL semasa",
|
||||
"go-back": "Belakang",
|
||||
"go-forward": "Depan",
|
||||
"quit": "Keluar"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"label": "Tetapan",
|
||||
"submenu": {
|
||||
"advanced-options": {
|
||||
"label": "Tetapan Lanjutan",
|
||||
"submenu": {
|
||||
"set-proxy": {
|
||||
"prompt": {
|
||||
"placeholder": "Contoh: SOCKS5://127.0.0.1:9999",
|
||||
"title": "Set proksi"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"always-on-top": "Sentiasa di atas",
|
||||
"auto-update": "Kemas Kini Automatik",
|
||||
"hide-menu": {
|
||||
"dialog": {
|
||||
"message": "Menu akan disembunyikan pada pelancaran seterusnya, gunakan [Alt] untuk menunjukkannya (atau backtick [`] jika menggunakan dalam aplikasi-menu)"
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"dialog": {
|
||||
"message": "Bahasa akan ditukar selepas dimulakan semula",
|
||||
"title": "Bahasa Berubah"
|
||||
},
|
||||
"label": "Bahasa",
|
||||
"submenu": {
|
||||
"to-help-translate": "Ingin membantu menterjemah? Klik di sini"
|
||||
}
|
||||
},
|
||||
"resume-on-start": "Mulakan semula lagu terakhir apabila aplikasi dimulakan",
|
||||
"start-at-login": "Mulakan semasa log masuk",
|
||||
"starting-page": {
|
||||
"label": "Halaman Permulaan"
|
||||
},
|
||||
"tray": {
|
||||
"submenu": {
|
||||
"play-pause-on-click": "Main / Hentikan pada klik"
|
||||
}
|
||||
},
|
||||
"visual-tweaks": {
|
||||
"label": "Pembaikan Visual",
|
||||
"submenu": {
|
||||
"like-buttons": {
|
||||
"default": "Lalai",
|
||||
"hide": "Sembunyi"
|
||||
},
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "Batalkan",
|
||||
"remove": "Padam"
|
||||
}
|
||||
},
|
||||
"label": "Tema"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"next": "Seterusnya",
|
||||
"play-pause": "Main / Jeda",
|
||||
"previous": "Sebelumnya",
|
||||
"quit": "Keluar",
|
||||
"restart": "Mulakan Semula Aplikasi"
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ambient-mode": {
|
||||
"menu": {
|
||||
"quality": {
|
||||
"label": "Kualiti"
|
||||
},
|
||||
"size": {
|
||||
"label": "Saiz"
|
||||
}
|
||||
}
|
||||
},
|
||||
"captions-selector": {
|
||||
"prompt": {
|
||||
"selector": {
|
||||
"title": "Pilih bahasa kapsyen"
|
||||
}
|
||||
}
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"menu": {
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "Tunjukkan lirik walaupun tidak tepat",
|
||||
"tooltip": "Jika lagu tidak ditemui, plugin cuba lagi dengan pertanyaan carian yang berbeza. \nHasil dari percubaan kedua mungkin tidak tepat."
|
||||
},
|
||||
"show-time-codes": {
|
||||
"tooltip": "Tunjukkan kod masa di sebelah lirik"
|
||||
}
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "Kawalan main balik dari bar tugas Windows anda",
|
||||
"name": "Kawalan Media Bar Tugas"
|
||||
},
|
||||
"video-toggle": {
|
||||
"menu": {
|
||||
"align": {
|
||||
"submenu": {
|
||||
"left": "Kiri",
|
||||
"middle": "Tengah",
|
||||
"right": "Kanan"
|
||||
}
|
||||
},
|
||||
"force-hide": "Alih Keluar Tab Video",
|
||||
"mode": {
|
||||
"submenu": {
|
||||
"disabled": "Tidak Aktif"
|
||||
}
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"button": "Lagu"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -36,15 +36,15 @@
|
||||
"details": "Svarer ikke\n{{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "Tømmer programhurtiglager"
|
||||
"clearing-cache-after-20s": "Tømmer programhurtigbuffer"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "Prøvde å tegne vindu utenfor skjermen. Størrelse={{windowSize}}, skjermstørrelse={{displaySize}}, posisjon={{position}}"
|
||||
"tried-to-render-offscreen": "Prøvde å tegne vindu utenfor skjermen, størrelse={{windowSize}}, skjermstørrelse={{displaySize}}, posisjon={{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "Menyen er skjult. Bruk «Alt» for å vise den, (ller «Esc» for å bruke menyen i programmet).",
|
||||
"detail": "Menyen er skjult, bruk 'Alt' for å vise den (eller 'Escape' for å bruke menyen i programmet)",
|
||||
"message": "Meny skjult",
|
||||
"title": "Meny vist"
|
||||
},
|
||||
@ -85,7 +85,7 @@
|
||||
"submenu": {
|
||||
"copy-current-url": "Kopier nåværende nettadresse",
|
||||
"go-back": "Tilbake",
|
||||
"go-forward": "Forover",
|
||||
"go-forward": "Framover",
|
||||
"quit": "Avslutt",
|
||||
"restart": "Programomstart"
|
||||
}
|
||||
@ -96,7 +96,7 @@
|
||||
"advanced-options": {
|
||||
"label": "Avanserte alternativer",
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "Tilbakestill programhurtiglager når programmet startes",
|
||||
"auto-reset-app-cache": "Tilbakestill programhurtigbuffer når programmet startes",
|
||||
"disable-hardware-acceleration": "Skru av maskinvareakselerasjon",
|
||||
"edit-config-json": "Rediger config.json",
|
||||
"override-user-agent": "Overstyr brukeragent",
|
||||
|
||||
836
src/i18n/resources/ne.json
Normal file
@ -0,0 +1,836 @@
|
||||
{
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "प्लगइन {{pluginName}}::{{contextName}} को कार्यान्वयन गर्न असफल भयो",
|
||||
"executed-at-ms": "प्लगइन {{pluginName}}::{{contextName}} {{ms}} मिलिसेकेण्डमा कार्यान्वित भयो",
|
||||
"initialize-failed": "प्लगइन \"{{pluginName}}\" आरम्भ गर्न मिलेन",
|
||||
"load-all": "सबै प्लगइनहरू लोड हुँदैछ",
|
||||
"load-failed": "प्लगइन \"{{pluginName}}\" लोड गर्न मिलेन",
|
||||
"loaded": "प्लगइन \"{{pluginName}}\" लोड भयो",
|
||||
"unload-failed": "प्लगइन \"{{pluginName}}\" अनलोड गर्न मिलेन",
|
||||
"unloaded": "प्लगइन \"{{pluginName}}\" अनलोड भयो"
|
||||
}
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"code": "ne",
|
||||
"local-name": "नेपाली",
|
||||
"name": "Nepali"
|
||||
},
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "लोडिंग समाप्त भयो। डेभटुल्स खोलियो"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "i18n लोड भयो"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "प्रोटोकल मार्फत कमान प्राप्त गरियो: \"{{command}}\""
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "CSS फाइल \"{{cssFile}}\" मौजूद छैन, अनदेखी गर्दै छ"
|
||||
},
|
||||
"unresponsive": {
|
||||
"details": "अनाक्रियतामा त्रुटि!\n{{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "एप क्यास खाली गर्दै"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "Windowले स्क्रीन बाहिर रेन्डर गर्न कोशिस गर्यो, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "मेनु लुकिएको छ, यसलाई देखाउन 'Alt' प्रयोग गर्नुहोस् (वा 'Escape' यदि इन-एप मेनु प्रयोग गर्नुहोस्)",
|
||||
"message": "हाइड मेनु सक्षम गरिएको छ",
|
||||
"title": "हाइड मेनु इनेबल गरियो"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "पछि",
|
||||
"restart-now": "अहिले पुन: सुरु गर्नुहोस्"
|
||||
},
|
||||
"detail": "{{pluginName}}\" प्लगइनले प्रभाव समेत गर्नका लागि पुन: सुरु गर्नुपर्दछ",
|
||||
"message": "{{pluginName}}\" पुनः सुरु गर्नुपर्छ",
|
||||
"title": "पुनः सुरु गर्नुपर्छ"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "बन्द गर्नुहोस्",
|
||||
"relaunch": "पुन: सुरु गर्नुहोस्",
|
||||
"wait": "प्रतीक्षा गर्नुहोस्"
|
||||
},
|
||||
"detail": "हामी असुविधाका लागि क्षमा गर्दछौं! कृपया के गर्नुहोस् छन् छान्नुहोस्:",
|
||||
"message": "अनुप्रयोग असार्थक छ",
|
||||
"title": "विन्डो संपर्क नाघेको छ"
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"disable": "अपडेटहरू निष्क्रिय गर्नुहोस्",
|
||||
"download": "डाउनलोड गर्नुहोस्",
|
||||
"ok": "ठिक छ"
|
||||
},
|
||||
"detail": "नयाँ संस्करण उपलब्ध छ र यसलाई {{downloadLink}} बाट डाउनलोड गर्न सकिन्छ",
|
||||
"message": "नयाँ संस्करण उपलब्ध छ",
|
||||
"title": "अपडेट उपलब्ध छ"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"about": "बारेमा",
|
||||
"navigation": {
|
||||
"label": "नेभिगेसन",
|
||||
"submenu": {
|
||||
"copy-current-url": "हालको URL प्रतिलिपि गर्नुहोस्",
|
||||
"go-back": "पछाडि जानुहोस्",
|
||||
"go-forward": "अघि जानुहोस्",
|
||||
"quit": "बाहिर निस्कनुहोस्",
|
||||
"restart": "अनुप्रयोग पुनः सुरु गर्नुहोस्"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"label": "विकल्पहरू",
|
||||
"submenu": {
|
||||
"advanced-options": {
|
||||
"label": "उन्नत विकल्पहरू",
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "एप सुरु हुँदा एप क्यास रिसेट गर्नुहोस्",
|
||||
"disable-hardware-acceleration": "हार्डवेयर तेजीगरी निष्क्रिय गर्नुहोस्",
|
||||
"edit-config-json": "config.json सम्पादन गर्नुहोस्",
|
||||
"override-user-agent": "प्रयोगकर्ता-एजेन्ट अधिलेखन गर्नुहोस्",
|
||||
"restart-on-config-changes": "कन्फिगरेसन परिवर्तनमा पुनः सुरु गर्नुहोस्",
|
||||
"set-proxy": {
|
||||
"label": "प्रोक्सी सेट गर्नुहोस्",
|
||||
"prompt": {
|
||||
"label": "प्रोक्सी ठेगाना प्रविष्टि: (निष्क्रिय गर्नका लागि खाली छोड्नुहोस्)",
|
||||
"placeholder": "उदाहरण: SOCKS5://127.0.0.1:9999",
|
||||
"title": "प्रोक्सी सेट गर्नुहोस्"
|
||||
}
|
||||
},
|
||||
"toggle-dev-tools": "डेभटुल्स परिस्थिति परिवर्तन गर्नुहोस्"
|
||||
}
|
||||
},
|
||||
"always-on-top": "सधैं माथिल्लोमा",
|
||||
"auto-update": "स्वत: अपडेट",
|
||||
"hide-menu": {
|
||||
"dialog": {
|
||||
"message": "मेनु अर्को लन्चमा लुकिनेछ, यसलाई देखाउनका लागि [Alt] प्रयोग गर्नुहोस् (वा इन-एप-मेनु प्रयोग गर्दा backtick [`])प्रयोग गर्नुहोस्",
|
||||
"title": "हाइड मेनु इनेबल गरियो"
|
||||
},
|
||||
"label": "हाइड मेनु"
|
||||
},
|
||||
"language": {
|
||||
"dialog": {
|
||||
"message": "भाषा पुनः सुरु गर्नपछि परिवर्तन गरिनेछ",
|
||||
"title": "भाषा परिवर्तित गरियो"
|
||||
},
|
||||
"label": "भाषा",
|
||||
"submenu": {
|
||||
"to-help-translate": "अनुवाद गर्न मद्दत गर्न चाहनुहुन्छ? यहाँ क्लिक गर्नुहोस्"
|
||||
}
|
||||
},
|
||||
"resume-on-start": "एप सुरु हुँदा अन्तिम गीत पुनः सुरु गर्नुहोस्",
|
||||
"single-instance-lock": "एकल उदाहरण तालिका",
|
||||
"start-at-login": "लगइनमा सुरु गर्नुहोस्",
|
||||
"starting-page": {
|
||||
"label": "सुरु गर्नुहोस्",
|
||||
"unset": "अनसेट"
|
||||
},
|
||||
"tray": {
|
||||
"label": "ट्रे(tray)",
|
||||
"submenu": {
|
||||
"disabled": "हाल बन्द",
|
||||
"enabled-and-hide-app": "ट्रे इनेबल गरिएको छ र एप बन्द गरिएको छ",
|
||||
"enabled-and-show-app": "एप देखाउनुहोस्",
|
||||
"play-pause-on-click": "क्लिकमा खेल्नुहोस्/रोक्नुहोस्"
|
||||
}
|
||||
},
|
||||
"visual-tweaks": {
|
||||
"label": "भिजुअल ट्वीक्स",
|
||||
"submenu": {
|
||||
"like-buttons": {
|
||||
"default": "पूर्वनिर्धारित",
|
||||
"force-show": "देखाउनुहोस",
|
||||
"hide": "लुकाउनुहोस",
|
||||
"label": "लाइक बटनहरू"
|
||||
},
|
||||
"remove-upgrade-button": "अपग्रेड बटन हटाउनुहोस्",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "रद्द गर्नुहोस्",
|
||||
"remove": "हटाउनुहोस्"
|
||||
},
|
||||
"remove-theme": "के तपाईँ निश्चित हुनुहुन्छ कि तपाईँ कस्टम थिम हटाउन चाहनुहुन्छ?",
|
||||
"remove-theme-message": "यसले कस्टम थिम हटाउनेछ"
|
||||
},
|
||||
"label": "थिम",
|
||||
"submenu": {
|
||||
"import-css-file": "कस्टम CSS फाइल आयात गर्नुहोस्",
|
||||
"no-theme": "कुनै थिम छैन"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"enabled": "सक्षम गरियो",
|
||||
"label": "प्लगइनहरू",
|
||||
"new": "NEW"
|
||||
},
|
||||
"view": {
|
||||
"label": "हेर्नुहोस्",
|
||||
"submenu": {
|
||||
"force-reload": "फोर्स रिलोड",
|
||||
"reload": "पुनः लोड गर्नुहोस्",
|
||||
"reset-zoom": "वास्तविक आकार",
|
||||
"toggle-fullscreen": "पूर्ण स्क्रिन टगल गर्नुहोस्",
|
||||
"zoom-in": "जुम इन गर्नुहोस्",
|
||||
"zoom-out": "जुम आउट गर्नुहोस्"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"next": "अर्को",
|
||||
"play-pause": "खेल्नुहोस्/रोक्नुहोस्",
|
||||
"previous": "अघिल्ला",
|
||||
"quit": "बाहिर निस्कनुहोस्",
|
||||
"restart": "एप पुनः सुरु गर्नुहोस्",
|
||||
"show": "विन्डो देखाउनुहोस्",
|
||||
"tooltip": {
|
||||
"default": "युट्युब मिउजिक",
|
||||
"with-song-info": "युट्युब मिउजिक:{{artist}}-{{title}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "यदि कुनै विज्ञापन चल्छ भने, यसले अडियो म्यूट गर्छ र प्लेब्याक गतिको गति १६x मा सेट गर्छ",
|
||||
"name": "विज्ञापन तीव्रगति"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "सबै विज्ञापन र ट्र्याकइंगहरू ब्लक गर्नुहोस्",
|
||||
"menu": {
|
||||
"blocker": "अवरोधक"
|
||||
},
|
||||
"name": "विज्ञापन अवरोधक"
|
||||
},
|
||||
"album-actions": {
|
||||
"description": "प्लेलिस्ट वा एल्बममा सबै गीतहरूमा यो लागू गर्न नचाहेको, मन नपरोस्, मनपर्यो, र विपरीत बटनहरू थप्दछ",
|
||||
"name": "एल्बम कार्यहरू"
|
||||
},
|
||||
"album-color-theme": {
|
||||
"description": "एल्बम रङ प्यालेटमा आधारित गतिशील विषयवस्तु र दृश्य प्रभावहरू लागू गर्दछ",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "रङ मिश्रण अनुपात",
|
||||
"submenu": {
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "एल्बम रङ विषयवस्तु"
|
||||
},
|
||||
"ambient-mode": {
|
||||
"description": "तपाईँको स्क्रिनको पृष्ठभूमिमा भिडियोबाट कोमल रङहरू कास्ट गरेर प्रकाश प्रभाव लागू गर्दछ",
|
||||
"menu": {
|
||||
"blur-amount": {
|
||||
"label": "ब्लर रकम",
|
||||
"submenu": {
|
||||
"pixels": "{{blurAmount}} पिक्सेलमा"
|
||||
}
|
||||
},
|
||||
"buffer": {
|
||||
"label": "बफर",
|
||||
"submenu": {
|
||||
"buffer": "{{buffer}}"
|
||||
}
|
||||
},
|
||||
"opacity": {
|
||||
"label": "अपारदर्शिता",
|
||||
"submenu": {
|
||||
"percent": "{{opacity}}%"
|
||||
}
|
||||
},
|
||||
"quality": {
|
||||
"label": "गुणस्तर",
|
||||
"submenu": {
|
||||
"pixels": "{{quality}} पिक्सेलमा"
|
||||
}
|
||||
},
|
||||
"size": {
|
||||
"label": "आकार",
|
||||
"submenu": {
|
||||
"percent": "{{size}}%"
|
||||
}
|
||||
},
|
||||
"smoothness-transition": {
|
||||
"label": "सुगमता संक्रमण",
|
||||
"submenu": {
|
||||
"during": "{{interpolationTime}} सेकेन्ड को समयमा"
|
||||
}
|
||||
},
|
||||
"use-fullscreen": {
|
||||
"label": "फुलस्क्रिन प्रयोग गर्दै"
|
||||
}
|
||||
},
|
||||
"name": "परिवेश मोड"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "६के ल्याब्सद्वारा अम्यूस नाउ प्लेइङ विजेटका लागि युट्युब म्युजिक समर्थन थप्दछ",
|
||||
"name": "अम्यूस",
|
||||
"response": {
|
||||
"query": "Amuse API सर्भर चलिरहेको छ। गीत जानकारी प्राप्त गर्न GET /query प्रयोग गर्नुहोस्।"
|
||||
}
|
||||
},
|
||||
"api-server": {
|
||||
"description": "प्लेयर नियन्त्रण गर्नका लागि API सर्भर थप्दछ",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "अनुमति दिनुहोस्",
|
||||
"deny": "अस्वीकार गर्नुहोस्"
|
||||
},
|
||||
"message": "{{ID}} ({{origin}}) लाई API पहुँच अनुमति दिनुहुन्छ?",
|
||||
"title": "API अनुमतिको अनुरोध"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "अनुमति रणनीति",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "पहिलो अनुरोधमै अनुमति दिनुहोस्"
|
||||
},
|
||||
"none": {
|
||||
"label": "कुनै अनुमति आवश्यक छैन"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "होस्टनेम"
|
||||
},
|
||||
"port": {
|
||||
"label": "पोर्ट"
|
||||
}
|
||||
},
|
||||
"name": "API सर्भर [बिटा]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "API सर्भरका लागि होस्टनेम प्रविष्ट गर्नुहोस् (उदाहरण: 0.0.0.0):",
|
||||
"title": "होस्टनेम"
|
||||
},
|
||||
"port": {
|
||||
"label": "API सर्भरका लागि पोर्ट प्रविष्ट गर्नुहोस्:",
|
||||
"title": "पोर्ट"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "अडियोमा कम्प्रेसन लागू गर्नुहोस् (सङ्केतको सबैभन्दा चर्को भागहरूको भोल्युम कम गर्दछ र नरम भागहरूको भोल्युम बढाउँछ)",
|
||||
"name": "अडियो कम्प्रेसर"
|
||||
},
|
||||
"blur-nav-bar": {
|
||||
"description": "नेभिगेसन बारलाई पारदर्शी र धुवाँलो बनाउँछ",
|
||||
"name": "ब्लर नेभिगेसन बार"
|
||||
},
|
||||
"bypass-age-restrictions": {
|
||||
"description": "युट्युबको उमेर प्रमाणिकरणलाई बाइपास गर्नुहोस्",
|
||||
"name": "उमेरका प्रतिबन्धहरू बाइपास गर्नुहोस्"
|
||||
},
|
||||
"captions-selector": {
|
||||
"description": "युट्युब सङ्गीत अडियो ट्र्याकहरूका लागि क्याप्सन चयनकर्ता",
|
||||
"menu": {
|
||||
"autoload": "स्वचालित रूपमा अन्तिम प्रयोग गरिएको क्याप्सन चयन गर्नुहोस्",
|
||||
"disable-captions": "पूर्वनिर्धारित रूपमा कुनै क्याप्सनहरू छैनन्"
|
||||
},
|
||||
"name": "शीर्षक चयनकर्ता",
|
||||
"prompt": {
|
||||
"selector": {
|
||||
"label": "हालको शीर्षक भाषाः {{language}}",
|
||||
"none": "केही छैन",
|
||||
"title": "क्याप्सन भाषा चयन गर्नुहोस्"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"title": "क्याप्सन चयनकर्ता खोल्नुहोस्"
|
||||
}
|
||||
},
|
||||
"compact-sidebar": {
|
||||
"description": "सँधै साइडबारलाई कम्प्याक्ट मोडमा सेट गर्नुहोस्",
|
||||
"name": "कम्प्याक्ट साइडबार"
|
||||
},
|
||||
"crossfade": {
|
||||
"description": "गीतहरू बिच क्रसफेड",
|
||||
"menu": {
|
||||
"advanced": "उन्नत"
|
||||
},
|
||||
"name": "क्रसफेड [बीटा]",
|
||||
"prompt": {
|
||||
"options": {
|
||||
"multi-input": {
|
||||
"fade-in-duration": "फेड इन समय (ms)",
|
||||
"fade-out-duration": "फेड आउट समय (ms)",
|
||||
"fade-scaling": {
|
||||
"label": "फेड स्केलिङ",
|
||||
"linear": "रैखिक",
|
||||
"logarithmic": "लघुगणक"
|
||||
},
|
||||
"seconds-before-end": "अन्त्य हुनुभन्दा अघि क्रसफेड सेकेन्ड"
|
||||
},
|
||||
"title": "क्रसफेड विकल्पहरू"
|
||||
}
|
||||
}
|
||||
},
|
||||
"disable-autoplay": {
|
||||
"description": "\"रोकिएको\" स्मोथिथिमा गीत सुरु गराउँछ",
|
||||
"menu": {
|
||||
"apply-once": "स्टार्टअपमा मात्र लागु हुन्छ"
|
||||
},
|
||||
"name": "स्वतः खेल निष्क्रिय गर्नुहोस्"
|
||||
},
|
||||
"discord": {
|
||||
"backend": {
|
||||
"already-connected": "सक्रिय जडानसँग जडान गर्ने प्रयास गरियो",
|
||||
"connected": "डिस्कर्डमा जोडियो",
|
||||
"disconnected": "डिस्कोर्डबाट डिसकनेक्ट गरियो"
|
||||
},
|
||||
"description": "Rich Presence प्रयोग गरेर साथीहरुलाइ के सुन्दैछु देखाउने",
|
||||
"menu": {
|
||||
"auto-reconnect": "आफै रिकनेक्ट होस्",
|
||||
"clear-activity": "एकटिभिटी क्लियर गर",
|
||||
"clear-activity-after-timeout": "समय पछि एकटिभिटी क्लियर गर",
|
||||
"connected": "कनेक्टेड",
|
||||
"disconnected": "डिसकन्एक्टेड",
|
||||
"hide-duration-left": "बाकी समय लुकाऊ",
|
||||
"hide-github-button": "GitHub लिंक लुकाऊ",
|
||||
"play-on-youtube-music": "YouTube music मा बजाउ",
|
||||
"set-inactivity-timeout": "इनएक्टिभिटी टाइमआउट राख"
|
||||
},
|
||||
"name": "डिसकार्ड रिच प्रीसेंस",
|
||||
"prompt": {
|
||||
"set-inactivity-timeout": {
|
||||
"label": "इनएक्टिभिटी टाइमआउट सेकन्डमा लेख्नुहोस्:",
|
||||
"title": "इनएक्टिभिटी टाइमआउट राख्नुहोस्"
|
||||
}
|
||||
}
|
||||
},
|
||||
"downloader": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"error": {
|
||||
"buttons": {
|
||||
"ok": "ओके"
|
||||
},
|
||||
"message": "अह:! माफ गर्नुहोस्, डाउनलोड सफलहुन सकेन…",
|
||||
"title": "डाउनलोडमा त्रुटि भयो!"
|
||||
},
|
||||
"start-download-playlist": {
|
||||
"buttons": {
|
||||
"ok": "ओके"
|
||||
},
|
||||
"detail": "({{playlistSize}}गाना)",
|
||||
"message": "प्लेलिस्ट {{playlistTitle}} डाउनलोड हुदै छ",
|
||||
"title": "डाउनलोड सुरुभयो"
|
||||
}
|
||||
},
|
||||
"feedback": {
|
||||
"conversion-progress": "रूपान्तरणः {{percent}}%",
|
||||
"converting": "रूपान्तरण हुदैछ…",
|
||||
"done": "गरियो: {{filePath}}",
|
||||
"download-info": "{{artist}}को - {{title}}{{videoId}}डाउनलोड हुदैछ",
|
||||
"download-progress": "डाउनलोड: {{percent}}%",
|
||||
"downloading": "डाउनलोड हुदैछ…",
|
||||
"downloading-counter": "{{current}}/{{total}} डाउनलोड गरिदै…",
|
||||
"downloading-playlist": "प्लेलिस्ट \"{{playlistTitle}}\" -{{playlistSize}} गाना {{playlistId}} डाउनलोड गरिदैछ",
|
||||
"error-while-downloading": "\"{{author}}\" - {{title}}\":{{error}} डाउनलोडमा समस्या आयो",
|
||||
"folder-already-exists": "{{playlistFolder}} नाम गरेको फोल्डर अघाडी देखि छ",
|
||||
"getting-playlist-info": "प्लेलिस्टको डाटा हासिल गरिदै छ…",
|
||||
"loading": "लोडिंग…",
|
||||
"playlist-has-only-one-song": "प्लेलिस्टमा एउता मात्रै गानाछ, तेस्लाई डाइरेक्ट डाउनलोड गर्नुहोस",
|
||||
"playlist-id-not-found": "प्लेलिस्ट ID भेटियेन",
|
||||
"playlist-is-empty": "प्लेलिस्ट खाली छ",
|
||||
"playlist-is-mix-or-private": "प्लेलिस्ट जानकारी प्राप्त गर्न त्रुटिः निश्चित गर्नुहोस् कि यो निजी वा \"तपाईँका लागि मिश्रित\" प्लेलिस्ट होइन\n\n{{error}}",
|
||||
"preparing-file": "फाइल तयार गरिदै छ…",
|
||||
"saving": "सेव गरिदै…",
|
||||
"trying-to-get-playlist-id": "प्लेलिस्ट आईडी: {{playlistId}} प्राप्त गर्ने प्रयास",
|
||||
"video-id-not-found": "भिडियो फेला परेन",
|
||||
"writing-id3": "ID3 ट्यागहरू लेखीदै…"
|
||||
}
|
||||
},
|
||||
"description": "इन्टरफेसबाट सिधै MP3/स्रोत अडियो डाउनलोड गर",
|
||||
"menu": {
|
||||
"choose-download-folder": "डाउनलोड फोल्डर चयन गर्नुहोस्",
|
||||
"download-finish-settings": {
|
||||
"label": "समाप्त भएपछि डाउनलोड गर्नुहोस्",
|
||||
"prompt": {
|
||||
"last-percent": "x प्रतिशतपछि",
|
||||
"last-seconds": "अन्तिम x सेकेन्ड",
|
||||
"title": "कहिले डाउनलोड गर्ने भनेर कन्फिगर गर्नुहोस्"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "उन्नत",
|
||||
"enabled": "सक्रिय गरिएको",
|
||||
"mode": "समय मोड",
|
||||
"percent": "प्रतिशत",
|
||||
"seconds": "सेकेन्डहरू"
|
||||
}
|
||||
},
|
||||
"download-playlist": "डाउनलोड प्लेलिस्ट",
|
||||
"presets": "प्रिसेटहरू",
|
||||
"skip-existing": "विद्यमान फाइलहरू स्किप गर्नुहोस्"
|
||||
},
|
||||
"name": "डाउनलोडर",
|
||||
"renderer": {
|
||||
"can-not-update-progress": "प्रगति अद्यावधिक गर्न सकिँदैन"
|
||||
},
|
||||
"templates": {
|
||||
"button": "डाउनलोड"
|
||||
}
|
||||
},
|
||||
"equalizer": {
|
||||
"description": "प्लेयरमा इक्वलाइजर थप्दछ",
|
||||
"menu": {
|
||||
"presets": {
|
||||
"label": "पूर्वसेटहरू",
|
||||
"list": {
|
||||
"bass-booster": "बास बूस्टर"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "इक्वलाइजर"
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "भोल्युम स्लाइडरलाई घातीय बनाउँछ त्यसैले कम भोल्युमहरू चयन गर्न सजिलो हुन्छ।",
|
||||
"name": "एक्सपोनेन्सियल भोल्युम"
|
||||
},
|
||||
"in-app-menu": {
|
||||
"description": "मेनु-बारहरूलाई फेन्सी, गाढा वा एल्बम-रङ्गको रूप दिन्छ",
|
||||
"menu": {
|
||||
"hide-dom-window-controls": "DOM विन्डो नियन्त्रणहरू लुकाउनुहोस्"
|
||||
},
|
||||
"name": "इन-एप मेनु"
|
||||
},
|
||||
"lumiastream": {
|
||||
"description": "लुमिया स्ट्रिम सपोर्ट थप्दछ",
|
||||
"name": "लुमिया स्ट्रिम [बिटा]"
|
||||
},
|
||||
"lyrics-genius": {
|
||||
"description": "धेरैजसो गीतहरूका लागि लिरिक्स थप्दछ",
|
||||
"menu": {
|
||||
"romanized-lyrics": "रोमनाइज्ड लिरिक्स"
|
||||
},
|
||||
"name": "लिरिक्स जिनियस",
|
||||
"renderer": {
|
||||
"fetched-lyrics": "लिरिक्स जिनियसबाट लिरिक्स प्राप्त गरियो"
|
||||
}
|
||||
},
|
||||
"music-together": {
|
||||
"description": "अरूसँग प्लेलिस्ट साझा गर्नुहोस्। जब होस्टले गीत बजाउँछ, अरू सबैले एउटै गीत सुन्नेछन्",
|
||||
"dialog": {
|
||||
"enter-host": "होस्ट आईडी प्रविष्ट गर्नुहोस्"
|
||||
},
|
||||
"internal": {
|
||||
"save": "सेभ गर्नुहोस्",
|
||||
"track-source": "गानाको स्रोत",
|
||||
"unknown-user": "अज्ञात प्रयोगकर्ता"
|
||||
},
|
||||
"menu": {
|
||||
"click-to-copy-id": "होस्ट आईडी कपी गर्नुहोस्",
|
||||
"close": "मिउजीक टुगेदर बन्द गर्नुहोस्",
|
||||
"connected-users": "जोडिएका प्रयोगकर्ताहरू",
|
||||
"disconnect": "मिउजीक टुगेदर डिस्कनेक्ट गर्नुहोस्",
|
||||
"empty-user": "कोही प्रयोगकर्ताहरू जोडिएका छैनन्",
|
||||
"host": "मिउजीक टुगेदर होस्ट",
|
||||
"join": "मिउजीक टुगेदर जोइन गनुहोस",
|
||||
"permission": {
|
||||
"all": "पाहुनाहरूलाई प्लेलिस्ट र प्लेयर नियन्त्रण गर्न अनुमति दिनुहोस्",
|
||||
"host-only": "केवल होस्टले प्लेलिस्ट र प्लेयर नियन्त्रण गर्न सक्छ",
|
||||
"playlist": "पाहुनाहरूलाई प्लेलिस्ट नियन्त्रण गर्न अनुमति दिनुहोस्"
|
||||
},
|
||||
"set-permission": "नियन्त्रण अनुमति परिवर्तन गर्नुहोस्",
|
||||
"status": {
|
||||
"disconnected": "विच्छेदित",
|
||||
"guest": "पाहुनाका रूपमा जोडियो",
|
||||
"host": "होस्टका रूपमा जोडियो"
|
||||
}
|
||||
},
|
||||
"name": "मिउजीक टुगेदर [बिटा]",
|
||||
"toast": {
|
||||
"add-song-failed": "गीत थप्न असफल",
|
||||
"closed": "मिउजीक टुगेदर बन्द गरियो",
|
||||
"disconnected": "मिउजीक टुगेदर डिसकनेक्टेड",
|
||||
"host-failed": "मिउजीक टुगेदर होस्ट गर्न असफल",
|
||||
"id-copied": "होस्ट आईडी क्लिपबोर्डमा कपी गरियो",
|
||||
"id-copy-failed": "होस्ट आईडी क्लिपबोर्डमा कपी गर्न असफल",
|
||||
"join-failed": "मिउजीक टुगेदर जोइन हुन असफल",
|
||||
"joined": "मिउजीक टुगेदरमा जोडियो",
|
||||
"permission-changed": "मिउजीक टुगेदर अनुमति \"{{permission}}\" मा परिवर्तन गरियो",
|
||||
"remove-song-failed": "गाना हटाउनमा समस्या आयो",
|
||||
"user-connected": "मिउजीक टुगेदरमा {{name}} जोडीनुभायो",
|
||||
"user-disconnected": "{{name}}ले मिउजीक टुगेदर छोडनु भयो"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"description": "अर्को/पछाडि नेभिगेसन तपाईँको मनपर्ने ब्राउजरमा जस्तै सिधा इन्टरफेसमा एकीकृत तीरहरू",
|
||||
"name": "नेभिगेसन"
|
||||
},
|
||||
"no-google-login": {
|
||||
"description": "इन्टरफेसबाट गुगल लगइन बटन र लिङ्कहरू हटाउनुहोस्",
|
||||
"name": "गुगल लगइन छैन"
|
||||
},
|
||||
"notifications": {
|
||||
"description": "गीत बज्न थाल्दा सूचना देखाउनुहोस् (अन्तरक्रियात्मक सूचनाहरू Windowsमा उपलब्ध छन्)",
|
||||
"menu": {
|
||||
"interactive": "अन्तरक्रियात्मक सूचनाहरू",
|
||||
"interactive-settings": {
|
||||
"label": "अन्तरक्रियात्मक सेटिङहरू",
|
||||
"submenu": {
|
||||
"hide-button-text": "टेक्सट बटन लुकाउनुहोस्",
|
||||
"refresh-on-play-pause": "प्ले/पोजमा ताजा गर्नुहोस्",
|
||||
"tray-controls": "ट्रेमा क्लिक गर्दा खोल्नुहोस्/बन्द गर्नुहोस्"
|
||||
}
|
||||
},
|
||||
"priority": "अधिसूचना प्राथमिकता",
|
||||
"toast-style": "टोस्ट शैली",
|
||||
"unpause-notification": "अनपउसमा सूचना देखाउनुहोस्"
|
||||
},
|
||||
"name": "सूचनाहरू"
|
||||
},
|
||||
"picture-in-picture": {
|
||||
"description": "एपलाई पिक्चर-इन-पिक्चर मोडमा परिवर्तन गर्न अनुमति दिन्छ",
|
||||
"menu": {
|
||||
"always-on-top": "सधैँ शीर्षमा",
|
||||
"hotkey": {
|
||||
"label": "हटकी",
|
||||
"prompt": {
|
||||
"keybind-options": {
|
||||
"hotkey": "हटकी"
|
||||
},
|
||||
"label": "पिक्चर-इन-पिक्चर टगल गर्न हटकी छान्नुहोस्",
|
||||
"title": "पिक्चर-इन-पिक्चर हटकी"
|
||||
}
|
||||
},
|
||||
"save-window-position": "windowको स्थान सेव गर्नुहोस्",
|
||||
"save-window-size": "windowको आकार सेव गर्नुहोस्",
|
||||
"use-native-pip": "ब्राउजरको नेटिभ PiP प्रयोग गर्नुहोस्"
|
||||
},
|
||||
"name": "पिक्चर-इन-पिक्चर",
|
||||
"templates": {
|
||||
"button": "पिक्चर-इन-पिक्चर"
|
||||
}
|
||||
},
|
||||
"playback-speed": {
|
||||
"description": "छिटो सुन्नुहोस्, ढिलो सुन्नुहोस्! एसले गीतको गति नियन्त्रण गर्ने स्लाइडर थप्छ",
|
||||
"name": "प्लेब्याक स्पीड",
|
||||
"templates": {
|
||||
"button": "स्पीड"
|
||||
}
|
||||
},
|
||||
"precise-volume": {
|
||||
"description": "कस्टम HUD र अनुकूलन योग्य भोल्युम चरणहरूको साथ माउसव्हील/हटकीहरू प्रयोग गरेर भोल्युम नियन्त्रण गर्नुहोस्",
|
||||
"menu": {
|
||||
"arrows-shortcuts": "लोकल एरो-की नियन्त्रणहरू",
|
||||
"custom-volume-steps": "कस्टम भोल्युम चरणहरू सेट गर्नुहोस्",
|
||||
"global-shortcuts": "ग्लोबल हटकीहरू"
|
||||
},
|
||||
"name": "सटीक भोल्युम",
|
||||
"prompt": {
|
||||
"global-shortcuts": {
|
||||
"keybind-options": {
|
||||
"decrease": "भोल्युम घटाउनुहोस्",
|
||||
"increase": "भोल्युम बढाउनुहोस्"
|
||||
},
|
||||
"label": "ग्लोबल भोल्युम किबाइन्डहरू चयन गर्नुहोस्:",
|
||||
"title": "ग्लोबल भोल्युम किबाइन्डहरू"
|
||||
},
|
||||
"volume-steps": {
|
||||
"label": "भोल्युम वृद्धि/घटाउने चरणहरू चयन गर्नुहोस्",
|
||||
"title": "भोल्युमका चरणहरू"
|
||||
}
|
||||
}
|
||||
},
|
||||
"quality-changer": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"quality-changer": {
|
||||
"detail": "हालको गुणस्तरः {{quality}}",
|
||||
"message": "भिडियो गुणस्तर चयन गर्नुहोस्:",
|
||||
"title": "भिडियोको गुणस्तर चयन गर्नुहोस्"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "भिडियो ओभरलेमा बटनको साथ भिडियो गुणस्तर परिवर्तन गर्न अनुमति दिन्छ",
|
||||
"name": "भिडियो गुणस्तर परिवर्तनकर्ता"
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "स्क्रोब्लिङ समर्थन थप्नुहोस् (etc. last.fm, Listenbrainz)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "Last.fm सँग प्रमाणिकरण गर्न असफल\nअर्को पुनः सुरु नभएसम्म पपअप लुकाउनुहोस्।",
|
||||
"title": "प्रमाणीकरण असफल"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "Last.fm API सेटिङहरू"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": "ListenBrainz प्रयोगकर्ता टोकन प्रविष्ट गर्नुहोस्"
|
||||
},
|
||||
"scrobble-other-media": "अन्य मिडियालाई स्क्रबल गर्नुहोस्"
|
||||
},
|
||||
"name": "स्क्रबबलर",
|
||||
"prompt": {
|
||||
"lastfm": {
|
||||
"api-key": "Last.fm API कुञ्जी",
|
||||
"api-secret": "Last.fm एपीआई गुप्त"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": {
|
||||
"label": "आफ्नो ListenBrainz प्रयोगकर्ता टोकन प्रविष्ट गर्नुहोस्:",
|
||||
"title": "ListenBrainz टोकन"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"shortcuts": {
|
||||
"description": "प्लेब्याक (प्ले/विराम/अर्को/अघिल्लो) का लागि ग्लोबल हटकीहरू सेट गर्न र मिडिया कुञ्जीहरू ओभरराइड गरेर मिडिया ओएसडी बन्द गर्न अनुमति दिन्छ, खोजी गर्न Ctrl/CMD + F सक्रिय गर्दछ, मिडिया कुञ्जीहरूका लागि लिनक्स MPRIS र उन्नत प्रयोगकर्ताहरूका लागि कस्टम हटकीहरू समर्थन सक्रिय गर्दछ",
|
||||
"menu": {
|
||||
"override-media-keys": "मिडिया कुञ्जीहरूलाई ओभरराइड गर्नुहोस्",
|
||||
"set-keybinds": "विश्वव्यापी गीत नियन्त्रणहरू सेट गर्नुहोस्"
|
||||
},
|
||||
"name": "सर्टकटहरू (& MPRIS)",
|
||||
"prompt": {
|
||||
"keybind": {
|
||||
"keybind-options": {
|
||||
"next": "अर्को",
|
||||
"play-pause": "खेल्नुहोस् / रोक्नुहोस्",
|
||||
"previous": "अघिल्ला"
|
||||
},
|
||||
"label": "गीत नियन्त्रणका लागि ग्लोबल किबाइन्डहरू छान्नुहोस्:",
|
||||
"title": "ग्लोबल किबाइन्डहरू"
|
||||
}
|
||||
}
|
||||
},
|
||||
"skip-disliked-songs": {
|
||||
"description": "नापसन्द गरिएका गीतहरू छोड्नुहोस्",
|
||||
"name": "मन नपरेका गीतहरू छोड्नुहोस्"
|
||||
},
|
||||
"skip-silences": {
|
||||
"description": "गीतहरूमा मौन खण्डहरू स्वचालित रूपमा स्किप गर्नुहोस्",
|
||||
"name": "मौन छोड्नुहोस्"
|
||||
},
|
||||
"sponsorblock": {
|
||||
"description": "स्वचालित रूपमा गैर-सङ्गीत भागहरू जस्तै इन्ट्रो/आउट्रो वा सङ्गीत भिडियोका भागहरू छोड्नुहोस्",
|
||||
"name": "स्पन्सरब्लक"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "LRClib जस्ता प्रदायकहरू प्रयोग गरेर गीतहरूका लागि समक्रमित गीतहरू प्रदान गर्छ।",
|
||||
"errors": {
|
||||
"fetch": "⚠️ गीतहरूको जानकारी ल्याउने क्रममा त्रुटि भयो।\n\tकृपया केही समयपछि फेरि प्रयास गर्नुहोस्।",
|
||||
"not-found": "⚠️ यो गीतका लागि कुनै गीतशब्द फेला परेन।"
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "पूर्वनिर्धारित अक्षर गीतशब्दहरू बीचमा",
|
||||
"tooltip": "गीतशब्दहरू बीचको खाली ठाउँका लागि प्रयोग हुने पूर्वनिर्धारित अक्षर छनोट गर्नुहोस्"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "रेखा प्रभाव",
|
||||
"submenu": {
|
||||
"fancy": {
|
||||
"label": "रमणीय",
|
||||
"tooltip": "हालको लाइनमा ठूलो, एप-जस्तै प्रभावहरू प्रयोग गर्नुहोस्"
|
||||
},
|
||||
"focus": {
|
||||
"label": "केन्द्रित गर्नुहोस्",
|
||||
"tooltip": "मात्रै हालको लाइन सेतो बनाउनुहोस्"
|
||||
},
|
||||
"offset": {
|
||||
"label": "अफसेट",
|
||||
"tooltip": "हालको लाइनलाई दायाँतर्फ अफसेट गर्नुहोस्"
|
||||
},
|
||||
"scale": {
|
||||
"label": "स्केल",
|
||||
"tooltip": "हालको लाइनको आकार परिवर्तन गर्नुहोस्"
|
||||
}
|
||||
},
|
||||
"tooltip": "हालको लाइनमा लागू गर्ने प्रभाव चयन गर्नुहोस्"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "गीतशब्दहरू पूर्ण रूपमा समक्रमित बनाउनुहोस्",
|
||||
"tooltip": "अर्को लाइनको प्रदर्शनलाई मिलिसेकेन्डमा गणना गर्नुहोस् (यसले प्रदर्शनमा हल्का प्रभाव पार्न सक्छ)"
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "गीतशब्दहरू अपर्याप्त भए पनि देखाउनुहोस्",
|
||||
"tooltip": "यदि गीत फेला परेन भने, प्लगिनले फरक खोजी सोधपुछसँग पुन: प्रयास गर्छ।\nदोस्रो प्रयासको परिणाम ठ्याक्कै मिल्न नपनि सक्छ।"
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "समय कोडहरू देखाउनुहोस्",
|
||||
"tooltip": "गीतशब्दहरूको छेउमा समय कोडहरू देखाउनुहोस्"
|
||||
}
|
||||
},
|
||||
"name": "समक्रमित गीतशब्दहरू",
|
||||
"refetch-btn": {
|
||||
"fetching": "ल्याउँदैछ...",
|
||||
"normal": "गीतशब्दहरू पुनः ल्याउनुहोस्"
|
||||
},
|
||||
"warnings": {
|
||||
"duration-mismatch": "⚠️ - अवधि असमानताको कारण गीतशब्दहरू असमक्रमित हुन सक्छन्।",
|
||||
"inexact": "⚠️ - यो गीतका लागि गीतशब्दहरू ठ्याक्कै मिल्दैनन्",
|
||||
"instrumental": "⚠️ - यो एउटा वाद्य संगीत (इन्स्ट्रुमेन्टल) गीत हो"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "तपाईँको विन्डोज टास्कबारबाट प्लेब्याक नियन्त्रण गर्नुहोस्",
|
||||
"name": "टास्कबार मेडिया कन्ट्रोल"
|
||||
},
|
||||
"touchbar": {
|
||||
"description": "MacOS प्रयोगकर्ताहरूका लागि टचबार विजेट थप्दछ",
|
||||
"name": "टचबार"
|
||||
},
|
||||
"tuna-obs": {
|
||||
"description": "OBS को टुना प्लगइनसँग एकीकरण",
|
||||
"name": "टुना OBS"
|
||||
},
|
||||
"video-toggle": {
|
||||
"description": "भिडियो/गीत मोड बीच स्विच गर्न बटन थप्दछ। वैकल्पिक रूपमा सम्पूर्ण भिडियो ट्याब हटाउन पनि सक्छ",
|
||||
"menu": {
|
||||
"align": {
|
||||
"label": "संरेखण",
|
||||
"submenu": {
|
||||
"left": "बायाँ",
|
||||
"middle": "बिचमा",
|
||||
"right": "दायाँ"
|
||||
}
|
||||
},
|
||||
"force-hide": "बलपूर्वक भिडियो ट्याब हटाउनुहोस्",
|
||||
"mode": {
|
||||
"label": "मोड",
|
||||
"submenu": {
|
||||
"custom": "कस्टम टगल",
|
||||
"disabled": "अक्षम",
|
||||
"native": "नेटिभ टगल"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "भिडियो टगल",
|
||||
"templates": {
|
||||
"button": "गीत"
|
||||
}
|
||||
},
|
||||
"visualizer": {
|
||||
"description": "प्लेयरमा भिजुअलाइजर थप्छ",
|
||||
"menu": {
|
||||
"visualizer-type": "भिजुअलाइजरको प्रकार"
|
||||
},
|
||||
"name": "भिजुअलाइजर"
|
||||
}
|
||||
}
|
||||
}
|
||||
845
src/i18n/resources/nl.json
Normal file
@ -0,0 +1,845 @@
|
||||
{
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "Mislukt om plugin {{pluginName}}::{{contextName}} uit te voeren",
|
||||
"executed-at-ms": "Plugin {{pluginName}}::{{contextName}} uitgevoerd in {{ms}}ms",
|
||||
"initialize-failed": "Initialisatie van plugin \"{{pluginName}}\" mislukt",
|
||||
"load-all": "Alle plugins laden",
|
||||
"load-failed": "Mislukt om plugin \"{{pluginName}}\" te laden",
|
||||
"loaded": "Plugin \"{{pluginName}}\" geladen",
|
||||
"unload-failed": "Mislukt om plugin \"{{pluginName}}\" te lossen",
|
||||
"unloaded": "Plugin \"{{pluginName}}\" gelost"
|
||||
}
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"code": "nl",
|
||||
"local-name": "Nederlands",
|
||||
"name": "Nederlands"
|
||||
},
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "Laden voltooid. DevTools geopend"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "i18n geladen"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "Commando ontvangen via protocol: \"{{command}}\""
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "CSS-bestand \"{{cssFile}}\" bestaat niet, wordt genegeerd"
|
||||
},
|
||||
"unresponsive": {
|
||||
"details": "Niet-reagerende fout!\n{{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "App-cache wissen"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "Venster probeerde buiten het scherm te renderen, venstergrootte={{windowSize}}, weergavegrootte={{displaySize}}, positie={{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "Menu is verborgen, gebruik 'Alt' om het weer te geven (of 'Escape' als u de In-App Menu gebruikt)",
|
||||
"message": "Menu verbergen is ingeschakeld",
|
||||
"title": "Menu verbergen ingeschakeld"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "Later",
|
||||
"restart-now": "Nu Opnieuw Opstarten"
|
||||
},
|
||||
"detail": "\"{{pluginName}}\" plugin vereist een herstart om van kracht te worden",
|
||||
"message": "\"{{pluginName}}\" moet opnieuw worden opgestart",
|
||||
"title": "Herstart Vereist"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "Stoppen",
|
||||
"relaunch": "Opnieuw starten",
|
||||
"wait": "Wachten"
|
||||
},
|
||||
"detail": "Het programma reageert niet! Kies wat u wilt doen:",
|
||||
"message": "De applicatie reageert niet",
|
||||
"title": "Venster reageert niet"
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"disable": "Updates uitschakelen",
|
||||
"download": "Downloaden",
|
||||
"ok": "OK"
|
||||
},
|
||||
"detail": "Er is een nieuwe versie beschikbaar en kan worden gedownload op {{downloadLink}}",
|
||||
"message": "Een nieuwe versie is beschikbaar",
|
||||
"title": "Update Beschikbaar"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"about": "Over",
|
||||
"navigation": {
|
||||
"label": "Navigatie",
|
||||
"submenu": {
|
||||
"copy-current-url": "Huidige URL kopiëren",
|
||||
"go-back": "Terug",
|
||||
"go-forward": "Vooruit",
|
||||
"quit": "Afsluiten",
|
||||
"restart": "Applicatie Opnieuw Opstarten"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"label": "Opties",
|
||||
"submenu": {
|
||||
"advanced-options": {
|
||||
"label": "Geavanceerde opties",
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "App-cache resetten bij het starten van de app",
|
||||
"disable-hardware-acceleration": "Hardwareversnelling uitschakelen",
|
||||
"edit-config-json": "Config.json bewerken",
|
||||
"override-user-agent": "Gebruikersagent overschrijven",
|
||||
"restart-on-config-changes": "Herstarten bij configuratiewijzigingen",
|
||||
"set-proxy": {
|
||||
"label": "Proxy instellen",
|
||||
"prompt": {
|
||||
"label": "Proxy-adres invoeren: (leeg laten om uit te schakelen)",
|
||||
"placeholder": "Voorbeeld: SOCKS5://127.0.0.1:9999",
|
||||
"title": "Proxy instellen"
|
||||
}
|
||||
},
|
||||
"toggle-dev-tools": "DevTools schakelen"
|
||||
}
|
||||
},
|
||||
"always-on-top": "Altijd bovenop",
|
||||
"auto-update": "Automatisch bijwerken",
|
||||
"hide-menu": {
|
||||
"dialog": {
|
||||
"message": "Menu wordt verborgen bij de volgende start, gebruik [Alt] om het weer te geven (of backtick [`] als u de in-app-menu gebruikt)",
|
||||
"title": "Menu Verbergen Ingeschakeld"
|
||||
},
|
||||
"label": "Menu Verbergen"
|
||||
},
|
||||
"language": {
|
||||
"dialog": {
|
||||
"message": "Taal wordt gewijzigd na herstart",
|
||||
"title": "Taal Gewijzigd"
|
||||
},
|
||||
"label": "Taal",
|
||||
"submenu": {
|
||||
"to-help-translate": "Wil je helpen vertalen? Klik hier"
|
||||
}
|
||||
},
|
||||
"resume-on-start": "Hervat laatste liedje bij het opstarten van de app",
|
||||
"single-instance-lock": "Eenmalige instantievergrendeling",
|
||||
"start-at-login": "Starten bij het inloggen",
|
||||
"starting-page": {
|
||||
"label": "Startpagina",
|
||||
"unset": "Niet ingesteld"
|
||||
},
|
||||
"tray": {
|
||||
"label": "Systeemvak",
|
||||
"submenu": {
|
||||
"disabled": "Uitgeschakeld",
|
||||
"enabled-and-hide-app": "Ingeschakeld en applicatie verbergen",
|
||||
"enabled-and-show-app": "Ingeschakeld en applicatie weergeven",
|
||||
"play-pause-on-click": "Afspelen/Pauzeren bij klikken"
|
||||
}
|
||||
},
|
||||
"visual-tweaks": {
|
||||
"label": "Visuele Aanpassingen",
|
||||
"submenu": {
|
||||
"like-buttons": {
|
||||
"default": "Standaard",
|
||||
"force-show": "Forceren weergeven",
|
||||
"hide": "Verbergen",
|
||||
"label": "Vind ik leuk-knoppen"
|
||||
},
|
||||
"remove-upgrade-button": "Upgrade-knop verwijderen",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "Annuleren",
|
||||
"remove": "Verwijderen"
|
||||
},
|
||||
"remove-theme": "Weet je zeker dat je het aangepaste thema wilt verwijderen?",
|
||||
"remove-theme-message": "Dit verwijderd het aangepaste thema"
|
||||
},
|
||||
"label": "Thema",
|
||||
"submenu": {
|
||||
"import-css-file": "Aangepast CSS-bestand importeren",
|
||||
"no-theme": "Geen thema"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"enabled": "Ingeschakeld",
|
||||
"label": "Plugins",
|
||||
"new": "NIEUW"
|
||||
},
|
||||
"view": {
|
||||
"label": "Weergave",
|
||||
"submenu": {
|
||||
"force-reload": "Forceer Herladen",
|
||||
"reload": "Herladen",
|
||||
"reset-zoom": "Ware Grootte",
|
||||
"toggle-fullscreen": "Volledig Scherm Wisselen",
|
||||
"zoom-in": "Inzoomen",
|
||||
"zoom-out": "Uitzoomen"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"next": "Volgende",
|
||||
"play-pause": "Afspelen/Pauzeren",
|
||||
"previous": "Vorige",
|
||||
"quit": "Afsluiten",
|
||||
"restart": "Applicatie Opnieuw Opstarten",
|
||||
"show": "Venster Weergeven",
|
||||
"tooltip": {
|
||||
"default": "YouTube Music",
|
||||
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "Wanneer een advertentie afspeelt, dempt het geluid en versnelt de playback naar 16x",
|
||||
"name": "Snellere advertenties"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "Blokkeer alle advertenties en tracking vanuit de doos",
|
||||
"menu": {
|
||||
"blocker": "Blokkeerder"
|
||||
},
|
||||
"name": "Advertentieblokkeerder"
|
||||
},
|
||||
"album-actions": {
|
||||
"description": "Voegt knoppen toe voor Ondisliken, Disliken, Liken en Ontliken om dit toe te passen op alle nummers in een afspeellijst of album",
|
||||
"name": "Albumacties"
|
||||
},
|
||||
"album-color-theme": {
|
||||
"description": "Past een dynamisch thema en visuele effecten toe op basis van het kleurenpalet van het album",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "Kleurmixverhouding",
|
||||
"submenu": {
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Albumkleurthema"
|
||||
},
|
||||
"ambient-mode": {
|
||||
"description": "Past een verlichtingseffect toe door zachte kleuren van de video op het achtergrondscherm te werpen",
|
||||
"menu": {
|
||||
"blur-amount": {
|
||||
"label": "Vervagingshoeveelheid",
|
||||
"submenu": {
|
||||
"pixels": "{{blurAmount}} pixels"
|
||||
}
|
||||
},
|
||||
"buffer": {
|
||||
"label": "Buffer",
|
||||
"submenu": {
|
||||
"buffer": "{{buffer}}"
|
||||
}
|
||||
},
|
||||
"opacity": {
|
||||
"label": "Transparantie",
|
||||
"submenu": {
|
||||
"percent": "{{opacity}}%"
|
||||
}
|
||||
},
|
||||
"quality": {
|
||||
"label": "Kwaliteit",
|
||||
"submenu": {
|
||||
"pixels": "{{quality}} pixels"
|
||||
}
|
||||
},
|
||||
"size": {
|
||||
"label": "Formaat",
|
||||
"submenu": {
|
||||
"percent": "{{size}}%"
|
||||
}
|
||||
},
|
||||
"smoothness-transition": {
|
||||
"label": "Vloeiende overgang",
|
||||
"submenu": {
|
||||
"during": "Tijdens {{interpolationTime}} s"
|
||||
}
|
||||
},
|
||||
"use-fullscreen": {
|
||||
"label": "Volledig scherm gebruiken"
|
||||
}
|
||||
},
|
||||
"name": "Omgevingsmodus"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "Voegt YouTube Music ondersteuning toe voor de Amuse now playing widget van 6K Labs",
|
||||
"name": "Amuse",
|
||||
"response": {
|
||||
"query": "Amuse API server loopt. Gebruik /query voor nummer informatie."
|
||||
}
|
||||
},
|
||||
"api-server": {
|
||||
"description": "Voegt een API server toe om de speler te besturen",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "Toestaan",
|
||||
"deny": "Weigeren"
|
||||
},
|
||||
"message": "Sta {{ID}} {{origin}} toegang toe tot de API?",
|
||||
"title": "API autorisatieverzoek"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Autorisatie strategie",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "Autoriseer bij eerste verzoek"
|
||||
},
|
||||
"none": {
|
||||
"label": "geen autorisatie"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "Hostnaam"
|
||||
},
|
||||
"port": {
|
||||
"label": "Poort"
|
||||
}
|
||||
},
|
||||
"name": "API Server [Beta]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "Voeg de hostnaam (bv. 0.0.0.0) voor de API server in:",
|
||||
"title": "Hostnaam"
|
||||
},
|
||||
"port": {
|
||||
"label": "Voeg de poort voor de API server in:",
|
||||
"title": "Poort"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Past compressie toe op audio (verlaagt het volume van de luidste delen van het signaal en verhoogt het volume van de zachtste delen)",
|
||||
"name": "Audiocompressor"
|
||||
},
|
||||
"blur-nav-bar": {
|
||||
"description": "Maakt de navigatiebalk transparant en wazig",
|
||||
"name": "Vervagen Navigatiebalk"
|
||||
},
|
||||
"bypass-age-restrictions": {
|
||||
"description": "Omzeil de leeftijdsverificatie van YouTube",
|
||||
"name": "Leeftijdsbeperkingen Omzeilen"
|
||||
},
|
||||
"captions-selector": {
|
||||
"description": "Ondertitelkeuze voor YouTube Music-audiotracks",
|
||||
"menu": {
|
||||
"autoload": "Automatisch de laatst gebruikte ondertitel selecteren",
|
||||
"disable-captions": "Standaard geen ondertitels"
|
||||
},
|
||||
"name": "Ondertitelkeuze",
|
||||
"prompt": {
|
||||
"selector": {
|
||||
"label": "Huidige ondertitel taal: {{language}}",
|
||||
"none": "Geen",
|
||||
"title": "Selecteer ondertitel taal"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"title": "Open ondertitelkeuze"
|
||||
}
|
||||
},
|
||||
"compact-sidebar": {
|
||||
"description": "Stel de zijbalk altijd in op compacte modus",
|
||||
"name": "Compacte Zijbalk"
|
||||
},
|
||||
"crossfade": {
|
||||
"description": "Vervagen tussen nummers",
|
||||
"menu": {
|
||||
"advanced": "Geavanceerd"
|
||||
},
|
||||
"name": "Crossfade [Beta]",
|
||||
"prompt": {
|
||||
"options": {
|
||||
"multi-input": {
|
||||
"fade-in-duration": "Fade-in-duur (ms)",
|
||||
"fade-out-duration": "Fade-out-duur (ms)",
|
||||
"fade-scaling": {
|
||||
"label": "Vervagingschaal",
|
||||
"linear": "Lineair",
|
||||
"logarithmic": "Logaritmisch"
|
||||
},
|
||||
"seconds-before-end": "Vervagen N seconden voor het einde"
|
||||
},
|
||||
"title": "Crossfade-opties"
|
||||
}
|
||||
}
|
||||
},
|
||||
"disable-autoplay": {
|
||||
"description": "Zorgt ervoor dat nummers starten in 'gepauzeerde' modus",
|
||||
"menu": {
|
||||
"apply-once": "Alleen toepassen bij opstarten"
|
||||
},
|
||||
"name": "Automatisch afspelen uitschakelen"
|
||||
},
|
||||
"discord": {
|
||||
"backend": {
|
||||
"already-connected": "Geprobeerd verbinding te maken met een actieve verbinding",
|
||||
"connected": "Verbonden met Discord",
|
||||
"disconnected": "Verbinding met Discord verbroken"
|
||||
},
|
||||
"description": "Laat je vrienden zien waar je naar luistert met Rich Presence",
|
||||
"menu": {
|
||||
"auto-reconnect": "Automatisch opnieuw verbinden",
|
||||
"clear-activity": "Activiteit wissen",
|
||||
"clear-activity-after-timeout": "Activiteit na time-out wissen",
|
||||
"connected": "Verbonden",
|
||||
"disconnected": "Verbinding verbroken",
|
||||
"hide-duration-left": "Verberg resterende tijd",
|
||||
"hide-github-button": "GitHub-knop verbergen",
|
||||
"play-on-youtube-music": "Afspelen op YouTube Music",
|
||||
"set-inactivity-timeout": "Inactiviteitstime-out instellen"
|
||||
},
|
||||
"name": "Discord Rich Presence",
|
||||
"prompt": {
|
||||
"set-inactivity-timeout": {
|
||||
"label": "Voer inactiviteitstime-out in seconden in:",
|
||||
"title": "Inactiviteitstime-out instellen"
|
||||
}
|
||||
}
|
||||
},
|
||||
"downloader": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"error": {
|
||||
"buttons": {
|
||||
"ok": "Oke"
|
||||
},
|
||||
"message": "Excuses, de download is mislukt…",
|
||||
"title": "Er is een fout opgetreden tijdens het downloaden!"
|
||||
},
|
||||
"start-download-playlist": {
|
||||
"buttons": {
|
||||
"ok": "Oké"
|
||||
},
|
||||
"detail": "({{playlistSize}} nummers)",
|
||||
"message": "Afspeellijst \"{{playlistTitle}}\" aan het downloaden",
|
||||
"title": "Download is gestart"
|
||||
}
|
||||
},
|
||||
"feedback": {
|
||||
"conversion-progress": "Converteren: {{percent}}%",
|
||||
"converting": "Converteren…",
|
||||
"done": "Gereed: {{filePath}}",
|
||||
"download-info": "{{artist}} - {{title}} ([{{videoId}}) aan het downloaden",
|
||||
"download-progress": "Downloaden: {{percent}}%",
|
||||
"downloading": "Aan het downloaden…",
|
||||
"downloading-counter": "{{current}}/{{total}} aan het downloaden…",
|
||||
"downloading-playlist": "Afspeellijst \"{{playlistTitle}}\" {{playlistId}} aan het downloaden ({{playlistSize}} nummers)",
|
||||
"error-while-downloading": "Er is een fout opgetreden tijdens het downloaden van \"{{author}} - {{title}}\": {{error}}",
|
||||
"folder-already-exists": "De map \"{{playlistFolder}}\" bestaat al",
|
||||
"getting-playlist-info": "Afspeellijst informatie ophalen…",
|
||||
"loading": "Laden…",
|
||||
"playlist-has-only-one-song": "Afspeellijst heeft maar 1 item, item direct aan het downloaden",
|
||||
"playlist-id-not-found": "Geen playlist ID gevonden",
|
||||
"playlist-is-empty": "Afspeellijst is leeg",
|
||||
"playlist-is-mix-or-private": "Er is een fout opgetreden tijdens het ophalen van de afspeellijst informatie: zorg ervoor dat het geen verborgen of \"Mixed for you\" afspeellijst is\n\n{{error}}",
|
||||
"preparing-file": "Bestand voorbereiden…",
|
||||
"saving": "Opslaan…",
|
||||
"trying-to-get-playlist-id": "Proberen om het afspeellijst ID op te halen: {{playlistId}}",
|
||||
"video-id-not-found": "Video niet gevonden",
|
||||
"writing-id3": "ID3 tags aan het schrijven…"
|
||||
}
|
||||
},
|
||||
"description": "Download MP3 / bron-audio rechtstreeks vanuit de interface",
|
||||
"menu": {
|
||||
"choose-download-folder": "Kies de downloadmap",
|
||||
"download-finish-settings": {
|
||||
"label": "Downloaden bij voltooiing",
|
||||
"prompt": {
|
||||
"last-percent": "Na x procent",
|
||||
"last-seconds": "Laatste x seconden",
|
||||
"title": "Configureren wanneer te downloaden"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "Geavanceerd",
|
||||
"enabled": "Ingeschakeld",
|
||||
"mode": "Tijd-modus",
|
||||
"percent": "Procent",
|
||||
"seconds": "Seconden"
|
||||
}
|
||||
},
|
||||
"download-playlist": "Afspeellijst downloaden",
|
||||
"presets": "Voorinstellingen",
|
||||
"skip-existing": "Bestaande bestanden overslaan"
|
||||
},
|
||||
"name": "Downloader",
|
||||
"renderer": {
|
||||
"can-not-update-progress": "Kan de voortgang niet bijwerken"
|
||||
},
|
||||
"templates": {
|
||||
"button": "Download"
|
||||
}
|
||||
},
|
||||
"equalizer": {
|
||||
"description": "Voegt een equalizer toe aan de speler",
|
||||
"menu": {
|
||||
"presets": {
|
||||
"label": "Voorinstellingen",
|
||||
"list": {
|
||||
"bass-booster": "Basversterker"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Equalizer"
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "Maakt de volumeschuif exponentieel zodat het gemakkelijker is om lagere volumes te selecteren.",
|
||||
"name": "Exponentieel Volume"
|
||||
},
|
||||
"in-app-menu": {
|
||||
"description": "Geeft menubalken een chique, donkere of albumkleurige uitstraling",
|
||||
"menu": {
|
||||
"hide-dom-window-controls": "Verberg DOM-vensterbedieningselementen"
|
||||
},
|
||||
"name": "In-App Menu"
|
||||
},
|
||||
"lumiastream": {
|
||||
"description": "Voegt ondersteuning voor Lumia Stream toe",
|
||||
"name": "Lumia Stream [Beta]"
|
||||
},
|
||||
"lyrics-genius": {
|
||||
"description": "Voegt songtekstondersteuning toe voor de meeste nummers",
|
||||
"menu": {
|
||||
"romanized-lyrics": "Geromaniseerde Teksten"
|
||||
},
|
||||
"name": "Lyrics Genius",
|
||||
"renderer": {
|
||||
"fetched-lyrics": "Teksten opgehaald voor Genius"
|
||||
}
|
||||
},
|
||||
"music-together": {
|
||||
"description": "Deel een afspeellijst met anderen. Wanneer de host een nummer afspeelt, hoort iedereen hetzelfde nummer",
|
||||
"dialog": {
|
||||
"enter-host": "Voer Host-ID in"
|
||||
},
|
||||
"internal": {
|
||||
"save": "Opslaan",
|
||||
"track-source": "Bron van nummers",
|
||||
"unknown-user": "Onbekende gebruiker"
|
||||
},
|
||||
"menu": {
|
||||
"click-to-copy-id": "Host-ID kopiëren",
|
||||
"close": "Sluit Music Samen",
|
||||
"connected-users": "Verbonden gebruikers",
|
||||
"disconnect": "Music Samen verbreken",
|
||||
"empty-user": "Geen verbonden gebruikers",
|
||||
"host": "Music Samen Host",
|
||||
"join": "Voeg Music Samen toe",
|
||||
"permission": {
|
||||
"all": "Gasten toestaan de afspeellijst en speler te bedienen",
|
||||
"host-only": "Alleen de host kan de afspeellijst en speler bedienen",
|
||||
"playlist": "Gasten toestaan de afspeellijst te bedienen"
|
||||
},
|
||||
"set-permission": "Bedieningsmachtiging wijzigen",
|
||||
"status": {
|
||||
"disconnected": "Verbroken",
|
||||
"guest": "Verbonden als Gast",
|
||||
"host": "Verbonden als Host"
|
||||
}
|
||||
},
|
||||
"name": "Music Samen [Beta]",
|
||||
"toast": {
|
||||
"add-song-failed": "Toevoegen van nummer mislukt",
|
||||
"closed": "Music Samen gesloten",
|
||||
"disconnected": "Music Samen verbroken",
|
||||
"host-failed": "Hosten van Music Samen mislukt",
|
||||
"id-copied": "Host-ID gekopieerd naar klembord",
|
||||
"id-copy-failed": "Kopiëren van Host-ID naar klembord mislukt",
|
||||
"join-failed": "Aansluiten bij Music Samen mislukt",
|
||||
"joined": "Music Samen toegetreden",
|
||||
"permission-changed": "Music Samen machtiging gewijzigd naar \"{{permission}}\"",
|
||||
"remove-song-failed": "Verwijderen van nummer mislukt",
|
||||
"user-connected": "{{name}} heeft Music Samen toegetreden",
|
||||
"user-disconnected": "{{name}} heeft Music Samen verlaten"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"description": "Volgende/Vorige navigatiepijlen rechtstreeks geïntegreerd in de interface, zoals in je favoriete browser",
|
||||
"name": "Navigatie"
|
||||
},
|
||||
"no-google-login": {
|
||||
"description": "Verwijder Google aanmeldknoppen en -links uit de interface",
|
||||
"name": "Geen Google Aanmelding"
|
||||
},
|
||||
"notifications": {
|
||||
"description": "Toont een melding wanneer een nummer begint te spelen (interactieve meldingen zijn beschikbaar op Windows)",
|
||||
"menu": {
|
||||
"interactive": "Interactieve Meldingen",
|
||||
"interactive-settings": {
|
||||
"label": "Interactieve instellingen",
|
||||
"submenu": {
|
||||
"hide-button-text": "Knoptekst verbergen",
|
||||
"refresh-on-play-pause": "Herlaad bij het afspelen/pauzeren",
|
||||
"tray-controls": "Open/Sluit op tray klik"
|
||||
}
|
||||
},
|
||||
"priority": "Meldingprioriteit",
|
||||
"toast-style": "Toast stijl",
|
||||
"unpause-notification": "Laat een notificatie zijn bij het depauzeren"
|
||||
},
|
||||
"name": "Meldingen"
|
||||
},
|
||||
"picture-in-picture": {
|
||||
"description": "Laat de app toe om naar picture-in-picture modus om te schakelen",
|
||||
"menu": {
|
||||
"always-on-top": "Altijd bovenaan",
|
||||
"hotkey": {
|
||||
"label": "Sneltoets",
|
||||
"prompt": {
|
||||
"keybind-options": {
|
||||
"hotkey": "Sneltoets"
|
||||
},
|
||||
"label": "Kies een sneltoets om tussen picture-in-picture te schakelen",
|
||||
"title": "Picture-in-picture sneltoets"
|
||||
}
|
||||
},
|
||||
"save-window-position": "Sla schermpositie op",
|
||||
"save-window-size": "Sla schermgrootte op",
|
||||
"use-native-pip": "Gebruik browser ingebouwde PiP"
|
||||
},
|
||||
"name": "Picture-in-picture",
|
||||
"templates": {
|
||||
"button": "Picture-in-picture"
|
||||
}
|
||||
},
|
||||
"playback-speed": {
|
||||
"description": "Luister snel, luister langzaam! Voegt een schuifregelaar toe die de muzieksnelheid regelt",
|
||||
"name": "Afspeelsnelheid",
|
||||
"templates": {
|
||||
"button": "Snelheid"
|
||||
}
|
||||
},
|
||||
"precise-volume": {
|
||||
"description": "Regel het volume nauwkeurig met behulp van het muiswiel/sneltoetsen, met een aangepaste HUD en aanpasbare volumestappen",
|
||||
"menu": {
|
||||
"arrows-shortcuts": "Lokale Pijltjestoetsen bediening",
|
||||
"custom-volume-steps": "Stel aangepaste volumestappen in",
|
||||
"global-shortcuts": "Globale sneltoetsen"
|
||||
},
|
||||
"name": "Nauwkeurig volume",
|
||||
"prompt": {
|
||||
"global-shortcuts": {
|
||||
"keybind-options": {
|
||||
"decrease": "Volume verlagen",
|
||||
"increase": "Volume verhogen"
|
||||
},
|
||||
"label": "Kies Globale Volume toetsen:",
|
||||
"title": "Globale Volume toetsen"
|
||||
},
|
||||
"volume-steps": {
|
||||
"label": "Kies Stappen voor volumeverhoging/-verlaging",
|
||||
"title": "Volume Stappen"
|
||||
}
|
||||
}
|
||||
},
|
||||
"quality-changer": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"quality-changer": {
|
||||
"detail": "Huidige kwaliteit: {{quality}}",
|
||||
"message": "Kies videokwaliteit:",
|
||||
"title": "Kies Videokwaliteit"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Maakt het mogelijk de videokwaliteit te wijzigen met een knop op de video-overlay",
|
||||
"name": "Videokwaliteitwisselaar"
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "Ondersteuning voor scrobbling toevoegen (etc. last.fm, Listenbrainz)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "Kan niet verifiëren bij Last.fm\nVerberg de pop-up tot de volgende herstart.",
|
||||
"title": "Authenticatie mislukt"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "Last.fm API Instellingen"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": "Voer het ListenBrainz-gebruikerstoken in"
|
||||
},
|
||||
"scrobble-alternative-title": "Gebruik alternatieve titels",
|
||||
"scrobble-other-media": "Scrobble andere media"
|
||||
},
|
||||
"name": "Scrobbler",
|
||||
"prompt": {
|
||||
"lastfm": {
|
||||
"api-key": "Last.fm API sleutel",
|
||||
"api-secret": "Last.fm API geheim"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": {
|
||||
"label": "Voer uw ListenBrainz-gebruikerstoken in:",
|
||||
"title": "ListenBrainz token"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"shortcuts": {
|
||||
"description": "Maakt het mogelijk algemene sneltoetsen in te stellen voor afspelen (afspelen/pauzeren/volgende/vorige) en het uitschakelen van media-OSD door mediatoetsen te overschrijven, het inschakelen van Ctrl/CMD + F om te zoeken, het inschakelen van Linux MPRIS-ondersteuning voor mediatoetsen en aangepaste sneltoetsen voor gevorderde gebruikers",
|
||||
"menu": {
|
||||
"override-media-keys": "Media toetsen overschrijven",
|
||||
"set-keybinds": "Stel de algemene songbediening in"
|
||||
},
|
||||
"name": "Snelkoppelingen (& MPRIS)",
|
||||
"prompt": {
|
||||
"keybind": {
|
||||
"keybind-options": {
|
||||
"next": "Volgende",
|
||||
"play-pause": "Afspelen / Pauzeren",
|
||||
"previous": "Vorige"
|
||||
},
|
||||
"label": "Kies globale toetsen voor nummer bediening:",
|
||||
"title": "Globale toetsen"
|
||||
}
|
||||
}
|
||||
},
|
||||
"skip-disliked-songs": {
|
||||
"description": "Slaat disliked nummers over",
|
||||
"name": "Sla disliked nummers over"
|
||||
},
|
||||
"skip-silences": {
|
||||
"description": "Sla automatisch stiltesecties in nummers over",
|
||||
"name": "Stiltes overslaan"
|
||||
},
|
||||
"sponsorblock": {
|
||||
"description": "Slaat automatisch niet-muziekgedeelten over, zoals intro/outro of gedeelten van muziekvideo's waarin het nummer niet wordt afgespeeld",
|
||||
"name": "SponsorBlock"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "Biedt gesynchroniseerde songteksten voor nummers, met behulp van providers zoals LRClib.",
|
||||
"errors": {
|
||||
"fetch": "⚠️\tEr is een fout opgetreden bij het ophalen van de songtekst.\n\tProbeer het later opnieuw.",
|
||||
"not-found": "⚠️ Er is geen songtekst gevonden voor dit nummer."
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "Standaardteken tussen songteksten",
|
||||
"tooltip": "Kies het standaardteken dat u wilt gebruiken voor de opening tussen de songteksten"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "Lijneffect",
|
||||
"submenu": {
|
||||
"fancy": {
|
||||
"label": "Luxe",
|
||||
"tooltip": "Gebruik grote, app-achtige effecten op de huidige regel"
|
||||
},
|
||||
"focus": {
|
||||
"label": "Focus",
|
||||
"tooltip": "Maak alleen de huidige regel wit"
|
||||
},
|
||||
"offset": {
|
||||
"label": "Offset",
|
||||
"tooltip": "Offset aan de rechterkant van de huidige lijn"
|
||||
},
|
||||
"scale": {
|
||||
"label": "Schaal",
|
||||
"tooltip": "Schaal de huidige regel"
|
||||
}
|
||||
},
|
||||
"tooltip": "Kies het effect dat u op de huidige regel wilt toepassen"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "Zorg ervoor dat de songteksten perfect gesynchroniseerd zijn",
|
||||
"tooltip": "Bereken tot op de milliseconde de weergave van de volgende regel (kan een kleine impact hebben op de prestaties)"
|
||||
},
|
||||
"romanization": {
|
||||
"label": "Romaniseer songtekst",
|
||||
"tooltip": "Als de songtekst in een andere taal is, probeer dan een Latijnse versie weer te geven."
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "Toon songteksten, zelfs als ze onnauwkeurig zijn",
|
||||
"tooltip": "Als het nummer niet wordt gevonden, probeert de plug-in het opnieuw met een andere zoekopdracht.\nHet resultaat van de tweede poging is mogelijk niet exact."
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "Toon tijdcodes",
|
||||
"tooltip": "Toon de tijdcodes naast de songtekst"
|
||||
}
|
||||
},
|
||||
"name": "Gesynchroniseerde songteksten",
|
||||
"refetch-btn": {
|
||||
"fetching": "Ophalen...",
|
||||
"normal": "Songteksten opnieuw ophalen"
|
||||
},
|
||||
"warnings": {
|
||||
"duration-mismatch": "⚠️ - De songteksten zijn mogelijk niet synchroon vanwege een niet-overeenkomende duur.",
|
||||
"inexact": "⚠️ - De songtekst van dit nummer is mogelijk niet exact",
|
||||
"instrumental": "⚠️ - Dit is een instrumentaal nummer"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "Bedien het afspelen vanaf uw Windows-taakbalk",
|
||||
"name": "Taakbalk Mediabediening"
|
||||
},
|
||||
"touchbar": {
|
||||
"description": "Voegt een TouchBar-widget toe voor macOS-gebruikers",
|
||||
"name": "TouchBar"
|
||||
},
|
||||
"tuna-obs": {
|
||||
"description": "Integratie met OBS's plug-in Tuna",
|
||||
"name": "Tuna OBS"
|
||||
},
|
||||
"unobtrusive-player": {
|
||||
"description": "Voorkomt dat de speler bij het afspelen van een nummer verschijnt",
|
||||
"name": "Minder opdringerige speler"
|
||||
},
|
||||
"video-toggle": {
|
||||
"description": "Voegt een knop toe om te schakelen tussen de video-/nummermodus. kan optioneel ook het hele videotabblad verwijderen",
|
||||
"menu": {
|
||||
"align": {
|
||||
"label": "Uitlijning",
|
||||
"submenu": {
|
||||
"left": "Links",
|
||||
"middle": "Midden",
|
||||
"right": "Rechts"
|
||||
}
|
||||
},
|
||||
"force-hide": "Forceer het verwijderen van het videotabblad",
|
||||
"mode": {
|
||||
"label": "Modus",
|
||||
"submenu": {
|
||||
"custom": "Aangepaste schakelaar",
|
||||
"disabled": "Uitgeschakeld",
|
||||
"native": "Native schakelaar"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Videoschakelaar",
|
||||
"templates": {
|
||||
"button": "Nummer"
|
||||
}
|
||||
},
|
||||
"visualizer": {
|
||||
"description": "Voegt een visualisator toe aan de speler",
|
||||
"menu": {
|
||||
"visualizer-type": "Visualisatietype"
|
||||
},
|
||||
"name": "Visualisator"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -104,7 +104,7 @@
|
||||
"set-proxy": {
|
||||
"label": "Ustaw proxy",
|
||||
"prompt": {
|
||||
"label": "Podaj adres Proxy: (zostaw pusty aby wyłączyć)",
|
||||
"label": "Podaj adres proxy: (zostaw pusty aby wyłączyć)",
|
||||
"placeholder": "Przykład: SOCKS5://127.0.0.1:9999",
|
||||
"title": "Ustaw proxy"
|
||||
}
|
||||
@ -158,6 +158,14 @@
|
||||
},
|
||||
"remove-upgrade-button": "Usuń przycisk subskrypcji premium",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "Anuluj",
|
||||
"remove": "Usuń"
|
||||
},
|
||||
"remove-theme": "Czy na pewno chcesz usunąć niestandardowy motyw?",
|
||||
"remove-theme-message": "Spowoduje to usunięcie niestandarowego motywu"
|
||||
},
|
||||
"label": "Motyw",
|
||||
"submenu": {
|
||||
"import-css-file": "Importuj własny plik CSS",
|
||||
@ -199,6 +207,10 @@
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "Wycisza reklamę i przyśpiesza do 16x",
|
||||
"name": "Przyśpieszacz reklam"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "Blokuj wszystkie reklamy i śledzenie",
|
||||
"menu": {
|
||||
@ -214,6 +226,7 @@
|
||||
"description": "Stosuje dynamiczny motyw i efekty wizualne w oparciu o paletę kolorów albumu",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "Intensywność koloru",
|
||||
"submenu": {
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
@ -225,7 +238,7 @@
|
||||
"description": "Stosuje efekt świetlny, rzucając delikatne kolory z wideo na tło ekranu",
|
||||
"menu": {
|
||||
"blur-amount": {
|
||||
"label": "Ilość rozmycia",
|
||||
"label": "Siła rozmycia",
|
||||
"submenu": {
|
||||
"pixels": "{{blurAmount}} pikseli"
|
||||
}
|
||||
@ -266,6 +279,56 @@
|
||||
},
|
||||
"name": "Tryb otoczenia"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "Wspiera integrację YouTube Music z widgetami Amuse (od 6K Labs)",
|
||||
"name": "Amuse",
|
||||
"response": {
|
||||
"query": "Serwer API Amuse działa. Użyj metody GET do /query, aby zdobyć informację o utworze."
|
||||
}
|
||||
},
|
||||
"api-server": {
|
||||
"description": "Pozwala na kontrolowanie YouTube Music poprzez podłączenie specjalnego serwera API",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "Zezwól",
|
||||
"deny": "Odmów"
|
||||
},
|
||||
"message": "Zezwolić {{ID}} (pochodzenie: {{origin}}) na dostęp do API?",
|
||||
"title": "Prośba o autoryzację API"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Strategia autoryzacji",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "Autoryzuj przy pierwszej prośbie"
|
||||
},
|
||||
"none": {
|
||||
"label": "Nie autoryzuj"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "Nazwa hosta (IP)"
|
||||
},
|
||||
"port": {
|
||||
"label": "Port"
|
||||
}
|
||||
},
|
||||
"name": "YouTube Music API",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "Wpisz nazwę hosta (IP, np. 0.0.0.0), który będzie użyty do serwera API:",
|
||||
"title": "Nazwa hosta"
|
||||
},
|
||||
"port": {
|
||||
"label": "Wpisz port, z którego będzie korzystać serwer API:",
|
||||
"title": "Port"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Zastosuj kompresję do dźwięku (obniża głośność najgłośniejszych części sygnału i zwiększa głośność najcichszych części)",
|
||||
"name": "Kompresor dźwięku"
|
||||
@ -301,7 +364,7 @@
|
||||
"name": "Kompaktowy pasek boczny"
|
||||
},
|
||||
"crossfade": {
|
||||
"description": "Przenikanie pomiędzy utworami",
|
||||
"description": "Pozwól odtwarzaczowi płynnie przechodzić między utworami",
|
||||
"menu": {
|
||||
"advanced": "Zaawansowane"
|
||||
},
|
||||
@ -335,7 +398,7 @@
|
||||
"connected": "Połączono z Discordem",
|
||||
"disconnected": "Odłączono od Discorda"
|
||||
},
|
||||
"description": "Pokaż znajomym, czego słuchasz dzięki Rich Presence",
|
||||
"description": "Pokaż znajomym z Discorda czego słuchasz dzięki Rich Presence",
|
||||
"menu": {
|
||||
"auto-reconnect": "Automatyczne wznawianie połączenia",
|
||||
"clear-activity": "Wyczyść aktywność",
|
||||
@ -401,6 +464,21 @@
|
||||
"description": "Pobiera MP3/ źródło audio bezpośrednio z interfejsu",
|
||||
"menu": {
|
||||
"choose-download-folder": "Wybierz folder pobierania",
|
||||
"download-finish-settings": {
|
||||
"label": "Pobierz po zakończeniu",
|
||||
"prompt": {
|
||||
"last-percent": "Po x procentach",
|
||||
"last-seconds": "Ostatnie x sekund",
|
||||
"title": "Konfiguruj, kiedy pobierać"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "Zaawansowane",
|
||||
"enabled": "Włączone",
|
||||
"mode": "Tryb czasowy",
|
||||
"percent": "Procenty",
|
||||
"seconds": "Sekundy"
|
||||
}
|
||||
},
|
||||
"download-playlist": "Pobierz playlistę",
|
||||
"presets": "Predefiniowane ustawienia",
|
||||
"skip-existing": "Pomiń istniejące pliki"
|
||||
@ -413,6 +491,18 @@
|
||||
"button": "Pobierz"
|
||||
}
|
||||
},
|
||||
"equalizer": {
|
||||
"description": "Dodaje equalizer do odtwarzacza",
|
||||
"menu": {
|
||||
"presets": {
|
||||
"label": "Presety",
|
||||
"list": {
|
||||
"bass-booster": "Wzmacniacz basu"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Korektor"
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "Sprawia, że suwak głośności jest proporcjonalna, dzięki czemu łatwiej jest wybrać niższą głośność.",
|
||||
"name": "Proporcjonalna głośność"
|
||||
@ -439,7 +529,7 @@
|
||||
}
|
||||
},
|
||||
"music-together": {
|
||||
"description": "Pozwala na udostępnianie listy odtwarzania w taki sposób, że osoby po wejściu w link słuchają tego samego utworu co host (jeżeli słucha jej z owej listy odtwarzania)",
|
||||
"description": "Pozwala na udostępnianie listy odtwarzania z możliwością słuchania tego samego utworu co host",
|
||||
"dialog": {
|
||||
"enter-host": "Wpisz ID hosta"
|
||||
},
|
||||
@ -454,7 +544,7 @@
|
||||
"connected-users": "Połączeni użytkownicy",
|
||||
"disconnect": "Rozłącz z hosta",
|
||||
"empty-user": "Brak połączonych użytkowników",
|
||||
"host": "Host słuchania razem",
|
||||
"host": "Udostępnij tą listę odtwarzania",
|
||||
"join": "Połącz z hostem",
|
||||
"permission": {
|
||||
"all": "Połączeni użytkownicy mają kontrolę nad listą odtwarzania oraz playerem",
|
||||
@ -577,14 +667,30 @@
|
||||
"name": "Zmieniacz jakości wideo"
|
||||
},
|
||||
"scrobbler": {
|
||||
"menu": {
|
||||
"listenbrainz": {
|
||||
"token": "Podaj token użytkownika ListenBrainz"
|
||||
"description": "Umożliwia scrobbling utworów do m.in. last.fm lub Listenbrainz",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "Podczas autoryzowania z last.fm wystąpił błąd.\nSchowaj pop-up aż do następnego uruchomienia.",
|
||||
"title": "Podczas autoryzowania wystąpił błąd"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "Ustawienia API Last.fm"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": "Podaj token użytkownika ListenBrainz"
|
||||
},
|
||||
"scrobble-alternative-title": "Użyj alternatywnych tytułów",
|
||||
"scrobble-other-media": "Scrobbluj pozostałe multimedia"
|
||||
},
|
||||
"name": "Scrobblowanie",
|
||||
"prompt": {
|
||||
"lastfm": {
|
||||
"api-key": "klucz API Last.fm"
|
||||
"api-key": "klucz API Last.fm",
|
||||
"api-secret": "Sekretny klucz Last.fm API (\"secret key\")"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": {
|
||||
@ -625,6 +731,67 @@
|
||||
"description": "Automatycznie pomija fragmenty niebędące muzyką, takie jak wstęp/zakończenie lub fragmenty teledysków, w których utwór nie jest odtwarzany",
|
||||
"name": "Pomiń nieistotne fragmenty"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "Dodaje zsynchronizowane napisy do utworów używając między innymi LRClib.",
|
||||
"errors": {
|
||||
"fetch": "⚠️\tWystąpił błąd podczas pobierania tekstu utworu.\n\tSpróbuj ponownie później.",
|
||||
"not-found": "⚠️ Nie znaleziono napisów dla tego utworu."
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "Standardowy znak luki",
|
||||
"tooltip": "Wybierz domyślny znak, który ma być wyświetlany jako pauza między słowami"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "Efekty linijki",
|
||||
"submenu": {
|
||||
"fancy": {
|
||||
"label": "Facy",
|
||||
"tooltip": "Użyj specjalnych efektów w stylu aplikacji na obecną linię"
|
||||
},
|
||||
"focus": {
|
||||
"label": "Fokus",
|
||||
"tooltip": "Spraw, aby tylko obecna linijka była biała"
|
||||
},
|
||||
"offset": {
|
||||
"label": "Przesunięcie",
|
||||
"tooltip": "Przesuń w prawo obecną linijkę"
|
||||
},
|
||||
"scale": {
|
||||
"label": "Skala",
|
||||
"tooltip": "Zmień skalę aktualnej linijki"
|
||||
}
|
||||
},
|
||||
"tooltip": "Wybierz efekt, by zastosować go do aktualnej linijki"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "Zsynchronizuj tekst utworu do perfekcji",
|
||||
"tooltip": "Wylicz czas wyświetlania następnej linijki co do milisekundy (może mieć mały wpływ na wydajność systemu)"
|
||||
},
|
||||
"romanization": {
|
||||
"label": "Romanizacja utworów",
|
||||
"tooltip": "Jeżeli tekst piosenki nie jest w alfabecie łacińskim, poddaje ją romanizacji, czyli przedstawia mowy za pomocą owych liter."
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "Pokaż teksty, mimo niezgodności",
|
||||
"tooltip": "Jeżeli nie znaleziono tekstu piosenki z bazy danych, wtyczka spróbuje ponownie przez wyszukanie przybliżonej frazy.\nNależy jednak pamiętać, że następne próby mogą nie być trafne co do oryginału."
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "Pokaż znaczniki czasu",
|
||||
"tooltip": "Pokaż znaczniki czasu obok linijek"
|
||||
}
|
||||
},
|
||||
"name": "Napisy zsynchronizowane",
|
||||
"refetch-btn": {
|
||||
"fetching": "Pobieranie napisów...",
|
||||
"normal": "Odśwież napisy"
|
||||
},
|
||||
"warnings": {
|
||||
"duration-mismatch": "⚠️ - Napisy mogą nie być zsynchronizowane z powodu różnicy w czasie trwania utworu.",
|
||||
"inexact": "⚠️ - Tekst utworu może się różnić od oryginału",
|
||||
"instrumental": "⚠️ - To jest utwór instrumentalny"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "Steruj odtwarzaniem z paska zadań systemu Windows",
|
||||
"name": "Kontroler odtwarzania z paska zadań"
|
||||
@ -637,6 +804,10 @@
|
||||
"description": "Integracja z wtyczką OBS Tuna",
|
||||
"name": "Tuna OBS"
|
||||
},
|
||||
"unobtrusive-player": {
|
||||
"description": "Zapobiega wyświetlaniu się ekranu z utworem po wybraniu innego tytułu",
|
||||
"name": "Niewidoczny odtwarzacz"
|
||||
},
|
||||
"video-toggle": {
|
||||
"description": "Dodaje przycisk do przełączania między trybem wideo a piosenki. Może również opcjonalnie usunąć całą kartę wideo",
|
||||
"menu": {
|
||||
|
||||
845
src/i18n/resources/pt-BR.json
Normal file
@ -0,0 +1,845 @@
|
||||
{
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "Falha ao executar plugin {{pluginName}}::{{contextName}}",
|
||||
"executed-at-ms": "Plugin {{pluginName}}::{{contextName}} executado em {{ms}} ms",
|
||||
"initialize-failed": "Falha ao inicializar o plugin \"{{pluginName}}\"",
|
||||
"load-all": "Carregando todos os plugins",
|
||||
"load-failed": "Falha ao carregar o plugin \"{{pluginName}}\"",
|
||||
"loaded": "Plugin \"{{pluginName}}\" carregado",
|
||||
"unload-failed": "Falha ao descarregar o plugin \"{{pluginName}}\"",
|
||||
"unloaded": "Plugin \"{{pluginName}}\" descarregado"
|
||||
}
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"code": "pt-BR",
|
||||
"local-name": "Português (Brasil)",
|
||||
"name": "Portuguese (Brazil)"
|
||||
},
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "Carregamento concluído. DevTools aberto"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "i18n carregado"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "Comando recebido pelo protocolo: \"{{command}}\""
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "Arquivo CSS \"{{cssFile}}\" não existe, ignorando"
|
||||
},
|
||||
"unresponsive": {
|
||||
"details": "Erro de falta de resposta!\n{{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "Limpando cache do aplicativo"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "A janela tentou renderizar fora da tela, tamanho da janela={{windowSize}}, tamanho da tela={{displaySize}}, posição={{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "O menu está oculto, use 'Alt' para mostrá-lo (ou 'Esc' ao usar o menu dentro do aplicativo)",
|
||||
"message": "Ocultar menu está ativado",
|
||||
"title": "Ocultar menu ativado"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "Depois",
|
||||
"restart-now": "Reiniciar agora"
|
||||
},
|
||||
"detail": "O plugin \"{{pluginName}}\" requer uma reinicialização para entrar em vigor",
|
||||
"message": "\"{{pluginName}}\" precisa reiniciar",
|
||||
"title": "Necessário reiniciar"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "Fechar",
|
||||
"relaunch": "Reiniciar",
|
||||
"wait": "Aguardar"
|
||||
},
|
||||
"detail": "Lamentamos o inconveniente! Por favor, escolha o que fazer:",
|
||||
"message": "O aplicativo não está respondendo",
|
||||
"title": "Janela não responde"
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"disable": "Desativar atualizações",
|
||||
"download": "Baixar",
|
||||
"ok": "OK"
|
||||
},
|
||||
"detail": "Uma versão mais recente está disponível em {{downloadLink}}",
|
||||
"message": "Nova versão disponível",
|
||||
"title": "Atualização disponível"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"about": "Sobre",
|
||||
"navigation": {
|
||||
"label": "Navegação",
|
||||
"submenu": {
|
||||
"copy-current-url": "Copiar URL atual",
|
||||
"go-back": "Voltar",
|
||||
"go-forward": "Avançar",
|
||||
"quit": "Sair",
|
||||
"restart": "Reiniciar aplicativo"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"label": "Opções",
|
||||
"submenu": {
|
||||
"advanced-options": {
|
||||
"label": "Opções avançadas",
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "Limpar cache ao iniciar aplicativo",
|
||||
"disable-hardware-acceleration": "Desativar aceleração de hardware",
|
||||
"edit-config-json": "Editar config.json",
|
||||
"override-user-agent": "Substituir User-Agent",
|
||||
"restart-on-config-changes": "Reiniciar ao alterar configurações",
|
||||
"set-proxy": {
|
||||
"label": "Definir proxy",
|
||||
"prompt": {
|
||||
"label": "Digite o endereço do proxy: (deixe em branco para desativar)",
|
||||
"placeholder": "Exemplo: SOCKS5://127.0.0.1:9999",
|
||||
"title": "Definir proxy"
|
||||
}
|
||||
},
|
||||
"toggle-dev-tools": "Alternar DevTools"
|
||||
}
|
||||
},
|
||||
"always-on-top": "Sempre no topo",
|
||||
"auto-update": "Atualização automática",
|
||||
"hide-menu": {
|
||||
"dialog": {
|
||||
"message": "O menu ficará oculto na próxima inicialização, use [Alt] para exibi-lo (ou a tecla de crase [`] se estiver usando o menu do aplicativo)",
|
||||
"title": "Ocultar menu ativado"
|
||||
},
|
||||
"label": "Ocultar menu"
|
||||
},
|
||||
"language": {
|
||||
"dialog": {
|
||||
"message": "O idioma será alterado depois de reiniciar",
|
||||
"title": "Idioma alterado"
|
||||
},
|
||||
"label": "Idioma",
|
||||
"submenu": {
|
||||
"to-help-translate": "Quer ajudar a traduzir? Clique aqui"
|
||||
}
|
||||
},
|
||||
"resume-on-start": "Continuar última música ao iniciar o aplicativo",
|
||||
"single-instance-lock": "Bloqueio de instância única",
|
||||
"start-at-login": "Iniciar com o sistema",
|
||||
"starting-page": {
|
||||
"label": "Página inicial",
|
||||
"unset": "Limpar"
|
||||
},
|
||||
"tray": {
|
||||
"label": "Área de Notificação",
|
||||
"submenu": {
|
||||
"disabled": "Desativado",
|
||||
"enabled-and-hide-app": "Ativado e aplicativo oculto",
|
||||
"enabled-and-show-app": "Ativado e mostrar aplicativo",
|
||||
"play-pause-on-click": "Reproduzir/Pausar ao clicar"
|
||||
}
|
||||
},
|
||||
"visual-tweaks": {
|
||||
"label": "Ajustes visuais",
|
||||
"submenu": {
|
||||
"like-buttons": {
|
||||
"default": "Padrão",
|
||||
"force-show": "Forçar exibir",
|
||||
"hide": "Ocultar",
|
||||
"label": "Botões de 'Curtir'"
|
||||
},
|
||||
"remove-upgrade-button": "Remover botão de atualização",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "Cancelar",
|
||||
"remove": "Remover"
|
||||
},
|
||||
"remove-theme": "Deseja realmente remover o tema personalizado?",
|
||||
"remove-theme-message": "Isto removerá o tema personalizado"
|
||||
},
|
||||
"label": "Tema",
|
||||
"submenu": {
|
||||
"import-css-file": "Importar arquivo CSS personalizado",
|
||||
"no-theme": "Sem tema"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"enabled": "Ativado",
|
||||
"label": "Plugins",
|
||||
"new": "NOVO"
|
||||
},
|
||||
"view": {
|
||||
"label": "Visualização",
|
||||
"submenu": {
|
||||
"force-reload": "Forçar recarregar",
|
||||
"reload": "Recarregar",
|
||||
"reset-zoom": "Tamanho atual",
|
||||
"toggle-fullscreen": "Alternar tela cheia",
|
||||
"zoom-in": "Ampliar",
|
||||
"zoom-out": "Reduzir"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"next": "Próximo",
|
||||
"play-pause": "Reproduzir/Pausar",
|
||||
"previous": "Anterior",
|
||||
"quit": "Sair",
|
||||
"restart": "Reiniciar aplicativo",
|
||||
"show": "Mostrar janela",
|
||||
"tooltip": {
|
||||
"default": "YouTube Music",
|
||||
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "Se um anúncio for reproduzido, ele silencia o áudio e define a velocidade de reprodução para 16x",
|
||||
"name": "Acelerador de Anúncios"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "Bloqueio de todos os anúncios e rastreamentos imediatamente",
|
||||
"menu": {
|
||||
"blocker": "Bloqueador"
|
||||
},
|
||||
"name": "Bloqueador de Anúncios"
|
||||
},
|
||||
"album-actions": {
|
||||
"description": "Adiciona botões Remover Não curtir, Não curtir, Curtir e Remover Curtir para aplicar em todas as músicas em uma lista ou álbum",
|
||||
"name": "Ações do álbum"
|
||||
},
|
||||
"album-color-theme": {
|
||||
"description": "Aplica um tema dinâmico e efeitos visuais com base na paleta de cores do álbum",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "Proporção de mistura de cores",
|
||||
"submenu": {
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Tema da cor do álbum"
|
||||
},
|
||||
"ambient-mode": {
|
||||
"description": "Aplica um efeito de iluminação projetando cores suaves do vídeo no fundo da tela",
|
||||
"menu": {
|
||||
"blur-amount": {
|
||||
"label": "Quantidade de desfoque",
|
||||
"submenu": {
|
||||
"pixels": "{{blurAmount}} pixels"
|
||||
}
|
||||
},
|
||||
"buffer": {
|
||||
"label": "Buffer",
|
||||
"submenu": {
|
||||
"buffer": "{{buffer}}"
|
||||
}
|
||||
},
|
||||
"opacity": {
|
||||
"label": "Opacidade",
|
||||
"submenu": {
|
||||
"percent": "{{opacity}}%"
|
||||
}
|
||||
},
|
||||
"quality": {
|
||||
"label": "Qualidade",
|
||||
"submenu": {
|
||||
"pixels": "{{quality}} pixels"
|
||||
}
|
||||
},
|
||||
"size": {
|
||||
"label": "Tamanho",
|
||||
"submenu": {
|
||||
"percent": "{{size}}%"
|
||||
}
|
||||
},
|
||||
"smoothness-transition": {
|
||||
"label": "Transição suave",
|
||||
"submenu": {
|
||||
"during": "Durante {{interpolationTime}} s"
|
||||
}
|
||||
},
|
||||
"use-fullscreen": {
|
||||
"label": "Usando tela cheia"
|
||||
}
|
||||
},
|
||||
"name": "Modo ambiente"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "Adiciona suporte ao YouTube Music ao widget 'Reproduzindo agora' do Amuse da 6K Labs",
|
||||
"name": "Amuse",
|
||||
"response": {
|
||||
"query": "Servidor API do Amuse em execução. GET /query para obter informações da música."
|
||||
}
|
||||
},
|
||||
"api-server": {
|
||||
"description": "Adiciona um servidor API para controlar o player",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "Permitir",
|
||||
"deny": "Negar"
|
||||
},
|
||||
"message": "Permitir que {{ID}} {{origin}} acesse o API?",
|
||||
"title": "Pedido de autorização API"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Estratégia de autorização",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "Autorizar na primeira solicitação"
|
||||
},
|
||||
"none": {
|
||||
"label": "Não autorizar"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "Nome do anfitrião"
|
||||
},
|
||||
"port": {
|
||||
"label": "Porta"
|
||||
}
|
||||
},
|
||||
"name": "Servidor API [Beta]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "Entre o nome do host (como 0.0.0.0) para o servidor API:",
|
||||
"title": "Nome do anfitrião"
|
||||
},
|
||||
"port": {
|
||||
"label": "Entre a porta do servidor API:",
|
||||
"title": "Porta"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Aplicar compressão ao áudio (reduz o volume das partes mais altas e aumenta o volume das partes mais baixas)",
|
||||
"name": "Compressor de áudio"
|
||||
},
|
||||
"blur-nav-bar": {
|
||||
"description": "Torna a barra de navegação transparente e desfocada",
|
||||
"name": "Desfocar barra de navegação"
|
||||
},
|
||||
"bypass-age-restrictions": {
|
||||
"description": "Pular a verificação de idade do YouTube",
|
||||
"name": "Ignorar restrições de idade"
|
||||
},
|
||||
"captions-selector": {
|
||||
"description": "Seletor de legendas para faixas de áudio do YouTube Music",
|
||||
"menu": {
|
||||
"autoload": "Selecionar automaticamente a última legenda usada",
|
||||
"disable-captions": "Sem legendas por padrão"
|
||||
},
|
||||
"name": "Seletor de legendas",
|
||||
"prompt": {
|
||||
"selector": {
|
||||
"label": "Idioma atual da legenda: {{language}}",
|
||||
"none": "Nenhum",
|
||||
"title": "Selecionar idioma da legenda"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"title": "Abrir seletor de legendas"
|
||||
}
|
||||
},
|
||||
"compact-sidebar": {
|
||||
"description": "Sempre definir a barra lateral no modo compacto",
|
||||
"name": "Barra lateral compacta"
|
||||
},
|
||||
"crossfade": {
|
||||
"description": "Crossfade entre músicas",
|
||||
"menu": {
|
||||
"advanced": "Avançado"
|
||||
},
|
||||
"name": "Crossfade [Beta]",
|
||||
"prompt": {
|
||||
"options": {
|
||||
"multi-input": {
|
||||
"fade-in-duration": "Duração do fade (ms)",
|
||||
"fade-out-duration": "Duração do fade out (ms)",
|
||||
"fade-scaling": {
|
||||
"label": "Escala do fade",
|
||||
"linear": "Linear",
|
||||
"logarithmic": "Logarítmico"
|
||||
},
|
||||
"seconds-before-end": "Crossfade N segundos antes do fim"
|
||||
},
|
||||
"title": "Opções de crossfade"
|
||||
}
|
||||
}
|
||||
},
|
||||
"disable-autoplay": {
|
||||
"description": "Faz a música começar no modo \"pausado\"",
|
||||
"menu": {
|
||||
"apply-once": "Aplicar somente ao iniciar"
|
||||
},
|
||||
"name": "Desativar reprodução automática"
|
||||
},
|
||||
"discord": {
|
||||
"backend": {
|
||||
"already-connected": "Tentativa de conectar-se com conexão ativa",
|
||||
"connected": "Conectado no Discord",
|
||||
"disconnected": "Desconectado do Discord"
|
||||
},
|
||||
"description": "Mostre aos seus amigos o que você ouve com Rich Presence",
|
||||
"menu": {
|
||||
"auto-reconnect": "Reconexão automática",
|
||||
"clear-activity": "Limpar atividades",
|
||||
"clear-activity-after-timeout": "Limpar atividades após tempo limite",
|
||||
"connected": "Conectado",
|
||||
"disconnected": "Desconectado",
|
||||
"hide-duration-left": "Ocultar duração restante",
|
||||
"hide-github-button": "Ocultar botão do GitHub",
|
||||
"play-on-youtube-music": "Reproduzir no YouTube Music",
|
||||
"set-inactivity-timeout": "Definir tempo limite de inatividade"
|
||||
},
|
||||
"name": "Rich Presence do Discord",
|
||||
"prompt": {
|
||||
"set-inactivity-timeout": {
|
||||
"label": "Digite o tempo de inatividade em segundos:",
|
||||
"title": "Definir tempo limite de inatividade"
|
||||
}
|
||||
}
|
||||
},
|
||||
"downloader": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"error": {
|
||||
"buttons": {
|
||||
"ok": "OK"
|
||||
},
|
||||
"message": "Ah! Desculpe, o download falhou…",
|
||||
"title": "Erro no download!"
|
||||
},
|
||||
"start-download-playlist": {
|
||||
"buttons": {
|
||||
"ok": "OK"
|
||||
},
|
||||
"detail": "({{playlistSize}} músicas)",
|
||||
"message": "Baixando lista de reprodução {{playlistTitle}}",
|
||||
"title": "Download iniciado"
|
||||
}
|
||||
},
|
||||
"feedback": {
|
||||
"conversion-progress": "Convertendo: {{percent}}%",
|
||||
"converting": "Convertendo…",
|
||||
"done": "Concluído: {{filePath}}",
|
||||
"download-info": "Baixando {{artist}} - {{title}} [{{videoId}}",
|
||||
"download-progress": "Download: {{percent}}%",
|
||||
"downloading": "Baixando…",
|
||||
"downloading-counter": "Baixando {{current}}/{{total}}…",
|
||||
"downloading-playlist": "Baixando lista de reprodução \"{{playlistTitle}}\" - {{playlistSize}} músicas ({{playlistId}})",
|
||||
"error-while-downloading": "Erro ao baixar \"{{author}} - {{title}}\": {{error}}",
|
||||
"folder-already-exists": "A pasta {{playlistFolder}} já existe",
|
||||
"getting-playlist-info": "Obtendo informações da playlist…",
|
||||
"loading": "Carregando…",
|
||||
"playlist-has-only-one-song": "Playlist possui apenas um item, baixando diretamente",
|
||||
"playlist-id-not-found": "Nenhum playlist ID encontrado",
|
||||
"playlist-is-empty": "Playlist está vazia",
|
||||
"playlist-is-mix-or-private": "Erro ao obter informações da playlist: verifique se não é uma playlist privada ou “”Mixada para você”\n\n{{error}}",
|
||||
"preparing-file": "Preparando arquivo…",
|
||||
"saving": "Salvando…",
|
||||
"trying-to-get-playlist-id": "Tentando obter playlist ID: {{playlistId}}",
|
||||
"video-id-not-found": "Vídeo não encontrado",
|
||||
"writing-id3": "Salvando tags ID3…"
|
||||
}
|
||||
},
|
||||
"description": "Faça download do MP3 / fonte de áudio diretamente da interface",
|
||||
"menu": {
|
||||
"choose-download-folder": "Escolha a pasta de download",
|
||||
"download-finish-settings": {
|
||||
"label": "Baixar ao finalizar",
|
||||
"prompt": {
|
||||
"last-percent": "Após x %",
|
||||
"last-seconds": "Últimos x segundos",
|
||||
"title": "Configurar quando baixar"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "Avançado",
|
||||
"enabled": "Ativado",
|
||||
"mode": "Modo de tempo",
|
||||
"percent": "Porcento",
|
||||
"seconds": "Segundos"
|
||||
}
|
||||
},
|
||||
"download-playlist": "Baixar playlist",
|
||||
"presets": "Predefinições",
|
||||
"skip-existing": "Pular arquivos existentes"
|
||||
},
|
||||
"name": "Downloader",
|
||||
"renderer": {
|
||||
"can-not-update-progress": "Não é possível atualizar o progresso"
|
||||
},
|
||||
"templates": {
|
||||
"button": "Baixar"
|
||||
}
|
||||
},
|
||||
"equalizer": {
|
||||
"description": "Adiciona um equalizador ao player",
|
||||
"menu": {
|
||||
"presets": {
|
||||
"label": "Predefinições",
|
||||
"list": {
|
||||
"bass-booster": "Reforço de graves"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Equalizador"
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "Torna o controle deslizante de volume exponencial para que seja mais fácil selecionar volumes mais baixos.",
|
||||
"name": "Volume Exponencial"
|
||||
},
|
||||
"in-app-menu": {
|
||||
"description": "Dá às barras de menu uma aparência elegante, escura ou com a cor do álbum",
|
||||
"menu": {
|
||||
"hide-dom-window-controls": "Ocultar controles da janela DOM"
|
||||
},
|
||||
"name": "Menu no aplicativo"
|
||||
},
|
||||
"lumiastream": {
|
||||
"description": "Adiciona suporte ao Lumia Stream",
|
||||
"name": "Lumia Stream [Beta]"
|
||||
},
|
||||
"lyrics-genius": {
|
||||
"description": "Adiciona suporte a letras para a maioria das músicas",
|
||||
"menu": {
|
||||
"romanized-lyrics": "Letras Romanizadas"
|
||||
},
|
||||
"name": "Letras Genius",
|
||||
"renderer": {
|
||||
"fetched-lyrics": "Letras buscadas por Genius"
|
||||
}
|
||||
},
|
||||
"music-together": {
|
||||
"description": "Compartilhe uma playlist com outras pessoas. Quando o anfitrião toca uma música, todos os outros ouvirão",
|
||||
"dialog": {
|
||||
"enter-host": "Insira o ID do host"
|
||||
},
|
||||
"internal": {
|
||||
"save": "Salvar",
|
||||
"track-source": "Fonte da Faixa",
|
||||
"unknown-user": "Usuário Desconhecido"
|
||||
},
|
||||
"menu": {
|
||||
"click-to-copy-id": "Copiar ID do host",
|
||||
"close": "Fechar Music Together",
|
||||
"connected-users": "Usuários Conectados",
|
||||
"disconnect": "Desconectar Music Together",
|
||||
"empty-user": "Nenhum usuário conectado",
|
||||
"host": "Anfitrião do Music Together",
|
||||
"join": "Entrar no Music Together",
|
||||
"permission": {
|
||||
"all": "Permitir que os convidados controlem a lista de reprodução e o player",
|
||||
"host-only": "Somente o host pode controlar a lista de reprodução e o player",
|
||||
"playlist": "Permitir que os convidados controlem a lista de reprodução"
|
||||
},
|
||||
"set-permission": "Mudar Permissões de Controle",
|
||||
"status": {
|
||||
"disconnected": "Desconectado",
|
||||
"guest": "Conectado como convidado",
|
||||
"host": "Conectado como Anfitrião"
|
||||
}
|
||||
},
|
||||
"name": "Music Together [Beta]",
|
||||
"toast": {
|
||||
"add-song-failed": "Falha ao adicionar música",
|
||||
"closed": "Music Together fechado",
|
||||
"disconnected": "Music Together desconectado",
|
||||
"host-failed": "Falha ao hospedar o Music Together",
|
||||
"id-copied": "ID do anfitrião copiado para a área de transferência",
|
||||
"id-copy-failed": "Falha ao copiar o ID do anfitrião para a área de transferência",
|
||||
"join-failed": "Falha ao ingressar no Music Together",
|
||||
"joined": "Entrou no Music Together",
|
||||
"permission-changed": "A permissão do Music Together foi alterada para \"{{permission}}\"",
|
||||
"remove-song-failed": "Falha ao remover música",
|
||||
"user-connected": "{{name}} juntou-se ao Music Together",
|
||||
"user-disconnected": "{{name}} saiu do Music Together"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"description": "Setas de navegação para avançar/retornar diretamente integradas na interface, como no seu navegador favorito",
|
||||
"name": "Navegação"
|
||||
},
|
||||
"no-google-login": {
|
||||
"description": "Remova os botões e links de login do Google da interface",
|
||||
"name": "Sem login do Google"
|
||||
},
|
||||
"notifications": {
|
||||
"description": "Exibir uma notificação quando uma música começar a tocar (notificações interativas estão disponíveis no Windows)",
|
||||
"menu": {
|
||||
"interactive": "Notificações interativas",
|
||||
"interactive-settings": {
|
||||
"label": "Configurações interativas",
|
||||
"submenu": {
|
||||
"hide-button-text": "Ocultar texto do botão",
|
||||
"refresh-on-play-pause": "Atualizar ao Reproduzir/Pausar",
|
||||
"tray-controls": "Abrir/Fechar ao clicar na área de notificação"
|
||||
}
|
||||
},
|
||||
"priority": "Prioridade da notificação",
|
||||
"toast-style": "Estilo de alerta",
|
||||
"unpause-notification": "Mostrar notificação ao despausar"
|
||||
},
|
||||
"name": "Notificações"
|
||||
},
|
||||
"picture-in-picture": {
|
||||
"description": "Permite alternar o aplicativo para o modo picture-in-picture",
|
||||
"menu": {
|
||||
"always-on-top": "Sempre no topo",
|
||||
"hotkey": {
|
||||
"label": "Tecla de atalho",
|
||||
"prompt": {
|
||||
"keybind-options": {
|
||||
"hotkey": "Tecla de atalho"
|
||||
},
|
||||
"label": "Escolha uma tecla de atalho para alternar entre picture-in-picture",
|
||||
"title": "Atalho do picture-in-picture"
|
||||
}
|
||||
},
|
||||
"save-window-position": "Salvar posição da janela",
|
||||
"save-window-size": "Salvar tamanho da janela",
|
||||
"use-native-pip": "Usar PiP nativo do navegador"
|
||||
},
|
||||
"name": "Picture-in-picture",
|
||||
"templates": {
|
||||
"button": "Picture-in-picture"
|
||||
}
|
||||
},
|
||||
"playback-speed": {
|
||||
"description": "Ouça rápido, ouça devagar! Adiciona um controle deslizante que controla a velocidade da música",
|
||||
"name": "Velocidade de reprodução",
|
||||
"templates": {
|
||||
"button": "Velocidade"
|
||||
}
|
||||
},
|
||||
"precise-volume": {
|
||||
"description": "Controle o volume com precisão usando a roda do mouse/teclas de atalho, com um HUD personalizado e etapas de volume personalizáveis",
|
||||
"menu": {
|
||||
"arrows-shortcuts": "Controles de teclas de seta locais",
|
||||
"custom-volume-steps": "Definir etapas de volume personalizadas",
|
||||
"global-shortcuts": "Teclas de atalho globais"
|
||||
},
|
||||
"name": "Volume preciso",
|
||||
"prompt": {
|
||||
"global-shortcuts": {
|
||||
"keybind-options": {
|
||||
"decrease": "Diminuir volume",
|
||||
"increase": "Aumentar volume"
|
||||
},
|
||||
"label": "Selecione as teclas de atalho global do volume:",
|
||||
"title": "Teclas de atalho global de volume"
|
||||
},
|
||||
"volume-steps": {
|
||||
"label": "Escolha as etapas de aumento/diminuição do volume",
|
||||
"title": "Fases de volume"
|
||||
}
|
||||
}
|
||||
},
|
||||
"quality-changer": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"quality-changer": {
|
||||
"detail": "Qualidade atual: {{quality}}",
|
||||
"message": "Escolher qualidade do vídeo:",
|
||||
"title": "Escolher qualidade do vídeo"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Permite alterar a qualidade do vídeo com um botão na sobreposição de vídeo",
|
||||
"name": "Alterador de qualidade do vídeo"
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "Adicionar suporte para scrobbling (last.fm, Listenbrainz, etc.)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "Falha ao autenticar com Last.fm\nOcultar o pop-up até a próxima reinicialização.",
|
||||
"title": "Falha na autenticação"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "Configurações da API do Last.fm"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": "Insira o token de usuário ListenBrainz"
|
||||
},
|
||||
"scrobble-alternative-title": "Usar títulos alternativos",
|
||||
"scrobble-other-media": "Scrobble outras mídias"
|
||||
},
|
||||
"name": "Scrobbler",
|
||||
"prompt": {
|
||||
"lastfm": {
|
||||
"api-key": "Chave de API do Last.fm",
|
||||
"api-secret": "Chave secreta da API do Last.fm"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": {
|
||||
"label": "Insira seu token de usuário do ListenBrainz:",
|
||||
"title": "ListenBrainz token"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"shortcuts": {
|
||||
"description": "Permite definir teclas de atalho globais para reprodução (reproduzir/pausar/próximo/anterior) e desativar o OSD de mídia substituindo as teclas de mídia, ativando Ctrl/CMD + F para pesquisar, ativando o suporte Linux MPRIS para teclas de mídia e teclas de atalho personalizadas para usuários avançados",
|
||||
"menu": {
|
||||
"override-media-keys": "Substituir chaves de multimédia",
|
||||
"set-keybinds": "Definir controles globais de música"
|
||||
},
|
||||
"name": "Atalhos (& MPRIS)",
|
||||
"prompt": {
|
||||
"keybind": {
|
||||
"keybind-options": {
|
||||
"next": "Próximo",
|
||||
"play-pause": "Reproduzir / Pausar",
|
||||
"previous": "Anterior"
|
||||
},
|
||||
"label": "Escolha atalhos de teclado globais para controle de músicas:",
|
||||
"title": "Atalhos de teclado global"
|
||||
}
|
||||
}
|
||||
},
|
||||
"skip-disliked-songs": {
|
||||
"description": "Ignora músicas marcadas com \"não gostei\"",
|
||||
"name": "Pular músicas marcadas com \"não gostei\""
|
||||
},
|
||||
"skip-silences": {
|
||||
"description": "Pular automaticamente seções de silêncio em músicas",
|
||||
"name": "Pular silêncios"
|
||||
},
|
||||
"sponsorblock": {
|
||||
"description": "Pula automaticamente partes não musicais, como introdução/finalização ou partes de videoclipes onde a música não está tocando",
|
||||
"name": "SponsorBlock [Bloquear patrocínios]"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "Fornece letras sincronizadas para músicas, usando provedores como LRClib.",
|
||||
"errors": {
|
||||
"fetch": "⚠️\tOcorreu um erro ao buscar a letra.\n\tTente novamente mais tarde.",
|
||||
"not-found": "⚠️ Nenhuma letra encontrada para esta música."
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "Caractere padrão entre letras",
|
||||
"tooltip": "Escolha o caractere padrão a ser usado para o intervalo entre as letras"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "Efeito de linha",
|
||||
"submenu": {
|
||||
"fancy": {
|
||||
"label": "Fancy",
|
||||
"tooltip": "Use efeitos grandes, semelhantes a aplicativos, na linha atual"
|
||||
},
|
||||
"focus": {
|
||||
"label": "Foco",
|
||||
"tooltip": "Deixe apenas a linha atual branca"
|
||||
},
|
||||
"offset": {
|
||||
"label": "Deslocar",
|
||||
"tooltip": "Deslocamento à direita da linha atual"
|
||||
},
|
||||
"scale": {
|
||||
"label": "Aumentar",
|
||||
"tooltip": "Aumentar a linha atual"
|
||||
}
|
||||
},
|
||||
"tooltip": "Escolha o efeito a ser aplicado à linha atual"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "Deixa as letras perfeitamente sincronizadas",
|
||||
"tooltip": "Calcular até o milissegundo a exibição da próxima linha (pode ter um pequeno impacto no desempenho)"
|
||||
},
|
||||
"romanization": {
|
||||
"label": "Letras romanizadas",
|
||||
"tooltip": "Se as letras estiverem em um idioma diferente, tente exibir uma versão latina."
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "Mostrar letras mesmo que não sejam exatas",
|
||||
"tooltip": "Se a música não for encontrada, o plugin tenta novamente com uma consulta de pesquisa diferente.\nO resultado da segunda tentativa pode não ser exato."
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "Mostrar códigos de tempo",
|
||||
"tooltip": "Mostrar os códigos de tempo ao lado das letras"
|
||||
}
|
||||
},
|
||||
"name": "Letras sincronizadas",
|
||||
"refetch-btn": {
|
||||
"fetching": "Buscando...",
|
||||
"normal": "Buscar letras novamente"
|
||||
},
|
||||
"warnings": {
|
||||
"duration-mismatch": "⚠️ - A letra pode estar dessincronizada devido a uma incompatibilidade de duração.",
|
||||
"inexact": "⚠️ - A letra desta música pode não ser exata",
|
||||
"instrumental": "⚠️ - Esta é uma música instrumental"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "Controle a reprodução na barra de tarefas do Windows",
|
||||
"name": "Controle de mídia da barra de tarefas"
|
||||
},
|
||||
"touchbar": {
|
||||
"description": "Adiciona um widget TouchBar para usuários do macOS",
|
||||
"name": "TouchBar"
|
||||
},
|
||||
"tuna-obs": {
|
||||
"description": "Integração com o plugin Tuna do OBS",
|
||||
"name": "Tuna OBS"
|
||||
},
|
||||
"unobtrusive-player": {
|
||||
"description": "Evita que o player apareça ao tocar uma música",
|
||||
"name": "Player discreto"
|
||||
},
|
||||
"video-toggle": {
|
||||
"description": "Adiciona um botão para alternar entre o modo Vídeo/Música. Também é possível remover opcionalmente toda a aba de vídeo",
|
||||
"menu": {
|
||||
"align": {
|
||||
"label": "Alinhamento",
|
||||
"submenu": {
|
||||
"left": "Esquerda",
|
||||
"middle": "Meio",
|
||||
"right": "Direita"
|
||||
}
|
||||
},
|
||||
"force-hide": "Forçar remoção da aba de vídeo",
|
||||
"mode": {
|
||||
"label": "Modo",
|
||||
"submenu": {
|
||||
"custom": "Alternância personalizada",
|
||||
"disabled": "Desativado",
|
||||
"native": "Alternância nativa"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Alternar vídeo",
|
||||
"templates": {
|
||||
"button": "Música"
|
||||
}
|
||||
},
|
||||
"visualizer": {
|
||||
"description": "Adiciona um visualizador ao player",
|
||||
"menu": {
|
||||
"visualizer-type": "Tipo de visualizador"
|
||||
},
|
||||
"name": "Visualizador"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2,14 +2,14 @@
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "Falha ao executar o plugin {{pluginName}}::{{contextName}}",
|
||||
"executed-at-ms": "Plugin {{pluginName}}::{{contextName}} executado com {{ms}}ms",
|
||||
"initialize-failed": "Falha ao inicializar o plugin \"{{pluginName}}\"",
|
||||
"load-all": "Carregando todos os plugins",
|
||||
"load-failed": "Falha ao carregar o plugin \"{{pluginName}}\"",
|
||||
"loaded": "Plugin \"{{pluginName}}\" carregado",
|
||||
"unload-failed": "Falha ao descarregar o plugin \"{{pluginName}}\"",
|
||||
"unloaded": "Plugin \"{{pluginName}}\" descarregado"
|
||||
"execute-failed": "Não foi possível executar o plugin {{pluginName}}::{{contextName}}",
|
||||
"executed-at-ms": "Plugin {{pluginName}}::{{contextName}} executado em {{ms}}ms",
|
||||
"initialize-failed": "Não foi possível iniciar o plugin \"{{pluginName}}\"",
|
||||
"load-all": "A carregar todos os plugins",
|
||||
"load-failed": "Não foi possível ativar o plugin \"{{pluginName}}\"",
|
||||
"loaded": "Plugin \"{{pluginName}}\" ativado",
|
||||
"unload-failed": "Não foi possível desativar o plugin \"{{pluginName}}\"",
|
||||
"unloaded": "Plugin \"{{pluginName}}\" desativado"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -21,7 +21,7 @@
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "Carregamento finalizado. DevTools aberto"
|
||||
"dev-tools": "Carregamento concluído. DevTools aberto"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "i18n carregado"
|
||||
@ -30,64 +30,64 @@
|
||||
"receive-command": "Comando recebido através do protocolo: \"{{command}}\""
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "Arquivo CSS \"{{cssFile}}\" não existe, ignorando"
|
||||
"css-file-not-found": "O ficheiro CSS \"{{cssFile}}\" não existe, a ignorar"
|
||||
},
|
||||
"unresponsive": {
|
||||
"details": "Erro sem resposta!\n{{error}}"
|
||||
"details": "Erro de falta de resposta!\n{{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "Limpando o cache do aplicativo"
|
||||
"clearing-cache-after-20s": "A limpar a cache da aplicação"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "Janela tentou desenhar fora do ecrã, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
|
||||
"tried-to-render-offscreen": "Tentativa de desenho fora do ecrã na janela, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "O menu está oculto, use a tecla 'Alt' para mostra-lo (ou 'Esc' se estiver usando o menu do aplicativo)",
|
||||
"message": "Ocultar menu está ativado",
|
||||
"title": "Ocultar menu ativado"
|
||||
"detail": "O menu está oculto, utilize \"Alt\" para o mostrar (ou \"Escape\" se estiver a utilizar o menu da aplicação)",
|
||||
"message": "Ocultar Menu está ativado",
|
||||
"title": "Ocultar Menu ativado"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "Depois",
|
||||
"restart-now": "Reiniciar agora"
|
||||
},
|
||||
"detail": "O plugin {{pluginName}} precisa ser reiniciado para ter efeito",
|
||||
"message": "\"{{pluginName}}\" precisa ser reiniciado",
|
||||
"detail": "O plugin \"{{pluginName}}\" requer um reinício para ter efeito",
|
||||
"message": "\"{{pluginName}}\" precisa de ser reiniciado",
|
||||
"title": "É necessário reiniciar"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "Sair",
|
||||
"relaunch": "Reiniciar",
|
||||
"wait": "Espere"
|
||||
"wait": "Esperar"
|
||||
},
|
||||
"detail": "Lamentamos o inconveniente! Por favor escolha o que fazer:",
|
||||
"message": "A aplicação não está respondendo",
|
||||
"title": "A janela não está respondendo"
|
||||
"detail": "Lamentamos o incómodo! Por favor, escolha o que fazer:",
|
||||
"message": "A aplicação não está a responder",
|
||||
"title": "A janela não está a responder"
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"disable": "Desabilitar atualizações",
|
||||
"download": "Baixar",
|
||||
"disable": "Desativar atualizações",
|
||||
"download": "Transferir",
|
||||
"ok": "Ok"
|
||||
},
|
||||
"detail": "Uma nova versão está disponível e pode ser baixada em {{downloadLink}}",
|
||||
"message": "Uma nova versão está disponível",
|
||||
"detail": "Está disponível uma nova versão que pode ser descarregada em {{downloadLink}}",
|
||||
"message": "Está disponível uma nova versão",
|
||||
"title": "Atualização disponível"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"about": "Sobre",
|
||||
"about": "Acerca de",
|
||||
"navigation": {
|
||||
"label": "Navegação",
|
||||
"submenu": {
|
||||
"copy-current-url": "Copiar URL atual",
|
||||
"go-back": "Voltar",
|
||||
"go-back": "Retroceder",
|
||||
"go-forward": "Avançar",
|
||||
"quit": "Saída",
|
||||
"restart": "Reiniciar aplicativo"
|
||||
"quit": "Sair",
|
||||
"restart": "Reiniciar a aplicação"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
@ -96,15 +96,15 @@
|
||||
"advanced-options": {
|
||||
"label": "Opções avançadas",
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "Reiniciar cache do aplicativo quando o aplicativo abrir",
|
||||
"disable-hardware-acceleration": "Desabilitar aceleração por hardware",
|
||||
"auto-reset-app-cache": "Repor a cache quando a aplicação é iniciada",
|
||||
"disable-hardware-acceleration": "Desativar a aceleração de hardware",
|
||||
"edit-config-json": "Editar config.json",
|
||||
"override-user-agent": "Substituir User-Agent",
|
||||
"restart-on-config-changes": "Reinicie as alterações de configurações feitas",
|
||||
"restart-on-config-changes": "Reiniciar após alterações de configuração",
|
||||
"set-proxy": {
|
||||
"label": "Definir proxy",
|
||||
"prompt": {
|
||||
"label": "Inserir Endereço do Proxy: (deixe em branco para desativar)",
|
||||
"label": "Introduza o endereço do proxy: (deixe em branco para desativar)",
|
||||
"placeholder": "Exemplo: SOCKS5://127.0.0.1:9999",
|
||||
"title": "Definir proxy"
|
||||
}
|
||||
@ -113,54 +113,62 @@
|
||||
}
|
||||
},
|
||||
"always-on-top": "Sempre no topo",
|
||||
"auto-update": "Atualização automática",
|
||||
"auto-update": "Atualizações automáticas",
|
||||
"hide-menu": {
|
||||
"dialog": {
|
||||
"message": "O menu será ocultado na próxima inicialização, use [Alt] para mostrá-lo (ou acento grave [`] se estiver usando o menu interno do aplicativo)",
|
||||
"title": "Ocultar Menu Ativado"
|
||||
"message": "O menu será ocultado da próxima vez que abrir a aplicação, utilize [Alt] para o mostrar (ou [`] se estiver a utilizar o menu interno da aplicação)",
|
||||
"title": "Ocultar Menu ativado"
|
||||
},
|
||||
"label": "Ocultar Menu"
|
||||
},
|
||||
"language": {
|
||||
"dialog": {
|
||||
"message": "Idioma será alterado após reiniciar",
|
||||
"title": "Idioma Alterado"
|
||||
"message": "O idioma será alterado após o reinício",
|
||||
"title": "Idioma alterado"
|
||||
},
|
||||
"label": "Idioma",
|
||||
"submenu": {
|
||||
"to-help-translate": "Quer ajudar na tradução? Clique aqui"
|
||||
}
|
||||
},
|
||||
"resume-on-start": "Continuar última música ao iniciar o aplicativo",
|
||||
"single-instance-lock": "Trava de instância única",
|
||||
"start-at-login": "Iniciar no login",
|
||||
"resume-on-start": "Retomar a última música quando a app é iniciada",
|
||||
"single-instance-lock": "Limitar a uma única instância",
|
||||
"start-at-login": "Iniciar com o sistema",
|
||||
"starting-page": {
|
||||
"label": "Página inicial",
|
||||
"unset": "Indefinido"
|
||||
"unset": "Não definida"
|
||||
},
|
||||
"tray": {
|
||||
"label": "Bandeja",
|
||||
"label": "Tabuleiro do sistema",
|
||||
"submenu": {
|
||||
"disabled": "Desabilitado",
|
||||
"enabled-and-hide-app": "Ativado e esconder aplicativo",
|
||||
"enabled-and-show-app": "Ativado e mostrar aplicativo",
|
||||
"play-pause-on-click": "Play/Pausa ao clicar"
|
||||
"disabled": "Desativado",
|
||||
"enabled-and-hide-app": "Ativado e ocultar a aplicação",
|
||||
"enabled-and-show-app": "Ativado e mostrar a aplicação",
|
||||
"play-pause-on-click": "Reproduzir/Pausar ao clicar"
|
||||
}
|
||||
},
|
||||
"visual-tweaks": {
|
||||
"label": "Tweaks Visuais",
|
||||
"label": "Ajustes visuais",
|
||||
"submenu": {
|
||||
"like-buttons": {
|
||||
"default": "Padrão",
|
||||
"force-show": "Forçar mostrar",
|
||||
"force-show": "Mostrar sempre",
|
||||
"hide": "Esconder",
|
||||
"label": "Botões de curtida"
|
||||
"label": "Botões do \"Gosto\""
|
||||
},
|
||||
"remove-upgrade-button": "Remover botão upgrade",
|
||||
"remove-upgrade-button": "Remover o botão de upgrade",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "Cancelar",
|
||||
"remove": "Remover"
|
||||
},
|
||||
"remove-theme": "Tem a certeza de que pretende remover o tema personalizado?",
|
||||
"remove-theme-message": "Isto irá remover o tema personalizado"
|
||||
},
|
||||
"label": "Tema",
|
||||
"submenu": {
|
||||
"import-css-file": "Importar arquivo CSS personalizado",
|
||||
"import-css-file": "Importar ficheiro CSS personalizado",
|
||||
"no-theme": "Sem tema"
|
||||
}
|
||||
}
|
||||
@ -178,19 +186,19 @@
|
||||
"submenu": {
|
||||
"force-reload": "Forçar Recarregamento",
|
||||
"reload": "Recarregar",
|
||||
"reset-zoom": "Tamanho Atual",
|
||||
"toggle-fullscreen": "Ativar Tela Cheia",
|
||||
"zoom-in": "Zoom Dentro",
|
||||
"zoom-out": "Zoom Fora"
|
||||
"reset-zoom": "Tamanho real",
|
||||
"toggle-fullscreen": "Ativar ecrã inteiro",
|
||||
"zoom-in": "Aumentar o zoom",
|
||||
"zoom-out": "Diminuir o zoom"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"next": "Próximo",
|
||||
"play-pause": "Play/Pausa",
|
||||
"next": "Próxima",
|
||||
"play-pause": "Reproduzir/Pausar",
|
||||
"previous": "Anterior",
|
||||
"quit": "Sair",
|
||||
"restart": "Reiniciar aplicativo",
|
||||
"restart": "Reiniciar aplicação",
|
||||
"show": "Mostrar janela",
|
||||
"tooltip": {
|
||||
"default": "YouTube Music",
|
||||
@ -199,23 +207,35 @@
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "Se um anúncio for reproduzido, silencia o áudio e define a velocidade de reprodução para 16x",
|
||||
"name": "Acelerar os anúncios"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "Bloquear todos os anúncios e rastreamento automaticamente",
|
||||
"description": "Bloqueie todos os anúncios e monitorização automaticamente",
|
||||
"menu": {
|
||||
"blocker": "Bloqueador"
|
||||
},
|
||||
"name": "Bloqueador de anúncios"
|
||||
},
|
||||
"album-actions": {
|
||||
"description": "Adiciona os botões Gostei e Não Gostei para ser aplicado a todas as músicas em uma lista de reprodução ou álbum.",
|
||||
"description": "Adiciona os botões Anular Rejeição, Não Gostei, Gostei e Anular o Gosto para ser aplicado a todas as músicas de uma lista de reprodução ou álbum",
|
||||
"name": "Ações no álbum"
|
||||
},
|
||||
"album-color-theme": {
|
||||
"description": "Aplica um tema dinâmico e efeitos visuais com base na paleta de cores do álbum",
|
||||
"description": "Aplica um tema dinâmico e efeitos visuais baseados na paleta de cores do álbum",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "Proporção de mistura de cores",
|
||||
"submenu": {
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Tema de cores do álbum"
|
||||
},
|
||||
"ambient-mode": {
|
||||
"description": "Aplica um efeito de iluminação lançando cores suaves do vídeo no fundo da tela.",
|
||||
"description": "Aplica um efeito de iluminação, projetando cores suaves do vídeo no fundo do ecrã",
|
||||
"menu": {
|
||||
"blur-amount": {
|
||||
"label": "Quantidade de desfoque",
|
||||
@ -254,14 +274,64 @@
|
||||
}
|
||||
},
|
||||
"use-fullscreen": {
|
||||
"label": "Tela cheia"
|
||||
"label": "Utilizar o ecrã inteiro"
|
||||
}
|
||||
},
|
||||
"name": "Modo Ambiente"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "Adiciona suporte ao YouTube Music para o widget Amuse now playing da 6K Labs",
|
||||
"name": "Amuse",
|
||||
"response": {
|
||||
"query": "O servidor da API Amuse está a ser executado. GET /query para obter informações sobre uma música."
|
||||
}
|
||||
},
|
||||
"api-server": {
|
||||
"description": "Adiciona um servidor API para controlar o leitor",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "Permitir",
|
||||
"deny": "Negar"
|
||||
},
|
||||
"message": "Permitir que {{ID}} ({{origin}}) aceda à API?",
|
||||
"title": "Pedido de autorização da API"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Estratégia de autorização",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "Autorizar no primeiro pedido"
|
||||
},
|
||||
"none": {
|
||||
"label": "Sem autorização"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "Nome do anfitrião"
|
||||
},
|
||||
"port": {
|
||||
"label": "Porta"
|
||||
}
|
||||
},
|
||||
"name": "Servidor API [Beta]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "Introduza o nome do anfitrião (como 0.0.0.0) para o servidor API:",
|
||||
"title": "Nome do anfitrião"
|
||||
},
|
||||
"port": {
|
||||
"label": "Introduza a porta para o servidor API:",
|
||||
"title": "Porta"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Aplicar compressão ao áudio (diminui o volume das partes mais altas do sinal e aumenta o volume das partes mais suaves)",
|
||||
"name": "Compressor de áudio"
|
||||
"name": "Compressor de Áudio"
|
||||
},
|
||||
"blur-nav-bar": {
|
||||
"description": "Torna a barra de navegação transparente e desfocada",
|
||||
@ -272,21 +342,21 @@
|
||||
"name": "Ignorar restrições de idade"
|
||||
},
|
||||
"captions-selector": {
|
||||
"description": "Seletor de legenda para faixas de áudio do YouTube Music",
|
||||
"description": "Seletor de legendas para as faixas de áudio do YouTube Music",
|
||||
"menu": {
|
||||
"autoload": "Selecionar automaticamente a última legenda usada",
|
||||
"disable-captions": "Sem legendas por padrão"
|
||||
"autoload": "Selecionar automaticamente a última legenda utilizada",
|
||||
"disable-captions": "Sem legendas por defeito"
|
||||
},
|
||||
"name": "Seletor de legendas",
|
||||
"prompt": {
|
||||
"selector": {
|
||||
"label": "Idioma da legenda atual: {{language}}",
|
||||
"label": "Idioma atual das legendas: {{language}}",
|
||||
"none": "Nenhuma",
|
||||
"title": "Selecione o idioma da legenda"
|
||||
"title": "Selecione o idioma das legendas"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"title": "Seletor de legendas aberto"
|
||||
"title": "Abrir o seletor de legendas"
|
||||
}
|
||||
},
|
||||
"compact-sidebar": {
|
||||
@ -302,41 +372,41 @@
|
||||
"prompt": {
|
||||
"options": {
|
||||
"multi-input": {
|
||||
"fade-in-duration": "Duração da transição no início (ms)",
|
||||
"fade-out-duration": "Duração da transição no final (ms)",
|
||||
"fade-in-duration": "Duração da transição (fade-in) no início (ms)",
|
||||
"fade-out-duration": "Duração da transição (fade-out) no final (ms)",
|
||||
"fade-scaling": {
|
||||
"label": "Escala da transição",
|
||||
"linear": "Linear",
|
||||
"logarithmic": "Logarítmica"
|
||||
},
|
||||
"seconds-before-end": "Realizar transição N segundos antes do final"
|
||||
"seconds-before-end": "Realizar transição N segundos antes do fim"
|
||||
},
|
||||
"title": "Opções de transição"
|
||||
"title": "Opções da transição"
|
||||
}
|
||||
}
|
||||
},
|
||||
"disable-autoplay": {
|
||||
"description": "Faz a música começar no modo \"pausado\"",
|
||||
"description": "Faz com que a música comece no modo \"pausado\"",
|
||||
"menu": {
|
||||
"apply-once": "Aplicar apenas na inicialização"
|
||||
"apply-once": "Aplicar apenas no arranque"
|
||||
},
|
||||
"name": "Desativar reprodução automática"
|
||||
},
|
||||
"discord": {
|
||||
"backend": {
|
||||
"already-connected": "Tentativa de conexão com conexão já ativa",
|
||||
"already-connected": "Tentativa de conexão com ligação já ativa",
|
||||
"connected": "Conectado ao Discord",
|
||||
"disconnected": "Desconectado do Discord"
|
||||
},
|
||||
"description": "Mostre aos seus amigos o que você ouve com Rich Presence",
|
||||
"description": "Mostre aos seus amigos o que está a ouvir com a Rich Presence",
|
||||
"menu": {
|
||||
"auto-reconnect": "Reconexão automática",
|
||||
"auto-reconnect": "Reconectar automaticamente",
|
||||
"clear-activity": "Limpar atividade",
|
||||
"clear-activity-after-timeout": "Limpar atividade após o tempo limite",
|
||||
"connected": "Conectado",
|
||||
"disconnected": "Desconectado",
|
||||
"hide-duration-left": "Ocultar duração restante",
|
||||
"hide-github-button": "Ocultar botão de link do GitHub",
|
||||
"hide-github-button": "Ocultar botão do GitHub",
|
||||
"play-on-youtube-music": "Reproduzir no YouTube Music",
|
||||
"set-inactivity-timeout": "Definir tempo limite de inatividade"
|
||||
},
|
||||
@ -355,70 +425,97 @@
|
||||
"buttons": {
|
||||
"ok": "OK"
|
||||
},
|
||||
"message": "Poxa! Desculpe, o download falhou…",
|
||||
"title": "Erro no download!"
|
||||
"message": "Ah! Desculpas, o download falhou…",
|
||||
"title": "Erro ao transferir!"
|
||||
},
|
||||
"start-download-playlist": {
|
||||
"buttons": {
|
||||
"ok": "OK"
|
||||
},
|
||||
"detail": "({{playlistSize}} músicas)",
|
||||
"message": "Baixando lista de reprodução {{playlistTitle}}",
|
||||
"message": "A descarregar a lista de reprodução {{playlistTitle}}",
|
||||
"title": "Download iniciado"
|
||||
}
|
||||
},
|
||||
"feedback": {
|
||||
"conversion-progress": "Conversão: {{percent}}%",
|
||||
"converting": "Convertendo…",
|
||||
"done": "Finalizado: {{filePath}}",
|
||||
"download-info": "Baixando {{artist}} - {{title}} {{videoId}}",
|
||||
"download-progress": "Baixando: {{percent}}%",
|
||||
"downloading": "Baixando…",
|
||||
"downloading-counter": "Baixando {{current}}/{{total}}…",
|
||||
"downloading-playlist": "Baixando lista de reprodução \"{{playlistTitle}}\" - {{playlistSize}} músicas ({{playlistId}})",
|
||||
"error-while-downloading": "Erro ao baixar \"{{author}} - {{title}}\": {{error}}",
|
||||
"converting": "A converter…",
|
||||
"done": "Concluído: {{filePath}}",
|
||||
"download-info": "A descarregar {{artist}} - {{title}} {{videoId}}",
|
||||
"download-progress": "A transferir: {{percent}}%",
|
||||
"downloading": "A transferir…",
|
||||
"downloading-counter": "A transferir {{current}}/{{total}}…",
|
||||
"downloading-playlist": "A descarregar a lista de reprodução \"{{playlistTitle}}\" - {{playlistSize}} músicas ({{playlistId}})",
|
||||
"error-while-downloading": "Erro ao descarregar \"{{author}} - {{title}}\": {{error}}",
|
||||
"folder-already-exists": "A pasta {{playlistFolder}} já existe",
|
||||
"getting-playlist-info": "Obtendo informações da lista de reprodução…",
|
||||
"loading": "Carregando…",
|
||||
"playlist-has-only-one-song": "A lista de reprodução possui apenas um item, baixando-o diretamente",
|
||||
"playlist-id-not-found": "ID da lista de reprodução não encontrado",
|
||||
"getting-playlist-info": "A obter informações da playlist…",
|
||||
"loading": "A carregar…",
|
||||
"playlist-has-only-one-song": "A lista de reprodução tem apenas um item, descarregando-o diretamente",
|
||||
"playlist-id-not-found": "Não foi encontrado nenhum ID da lista de reprodução",
|
||||
"playlist-is-empty": "Lista de reprodução vazia",
|
||||
"playlist-is-mix-or-private": "Erro ao obter informações da lista de reprodução: tenha certeza que ela não está privada ou não seja \"Mixtapes criadas para você\"\n\n{{error}}",
|
||||
"preparing-file": "Preparando arquivos…",
|
||||
"saving": "Salvando…",
|
||||
"trying-to-get-playlist-id": "Tentando pegar ID da lista de reprodução: {{playlistId}}",
|
||||
"playlist-is-mix-or-private": "Erro ao obter informações da playlist: certifique-se de que ela não seja privada ou uma mix personalizada\n\n{{error}}",
|
||||
"preparing-file": "A preparar o ficheiro…",
|
||||
"saving": "A guardar…",
|
||||
"trying-to-get-playlist-id": "A tentar obter o ID da playlist: {{playlistId}}",
|
||||
"video-id-not-found": "Vídeo não encontrado",
|
||||
"writing-id3": "Escrevendo tags ID3…"
|
||||
"writing-id3": "A guardar etiquetas ID3…"
|
||||
}
|
||||
},
|
||||
"description": "Baixa MP3 / fonte de áudio diretamente da interface",
|
||||
"description": "Descarregue MP3 / fonte de áudio diretamente da interface",
|
||||
"menu": {
|
||||
"choose-download-folder": "Escolha a pasta de download",
|
||||
"download-playlist": "Baixar lista de reprodução",
|
||||
"presets": "Predefinições",
|
||||
"skip-existing": "Ignorar arquivos existentes"
|
||||
"download-finish-settings": {
|
||||
"label": "Transferir ao terminar",
|
||||
"prompt": {
|
||||
"last-percent": "Depois de x por cento",
|
||||
"last-seconds": "Últimos x segundos",
|
||||
"title": "Configurar quando descarregar"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "Avançado",
|
||||
"enabled": "Ativado",
|
||||
"mode": "Modo de tempo",
|
||||
"percent": "Percentagem",
|
||||
"seconds": "Segundos"
|
||||
}
|
||||
},
|
||||
"download-playlist": "Descarregar playlist",
|
||||
"presets": "Pré-configurações",
|
||||
"skip-existing": "Ignorar ficheiros existentes"
|
||||
},
|
||||
"name": "Downloader",
|
||||
"renderer": {
|
||||
"can-not-update-progress": "Não é possível atualizar o progresso"
|
||||
},
|
||||
"templates": {
|
||||
"button": "Baixar"
|
||||
"button": "Descarregar"
|
||||
}
|
||||
},
|
||||
"equalizer": {
|
||||
"description": "Adiciona um equalizador ao leitor",
|
||||
"menu": {
|
||||
"presets": {
|
||||
"label": "Pré-configurações",
|
||||
"list": {
|
||||
"bass-booster": "Amplificador de graves"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Equalizador"
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "Torna o controle deslizante de volume exponencial, facilitando a seleção de volumes mais baixos.",
|
||||
"description": "Torna o controlo do volume exponencial para que seja mais fácil selecionar volumes mais baixos.",
|
||||
"name": "Volume Exponencial"
|
||||
},
|
||||
"in-app-menu": {
|
||||
"description": "Dá às barras de menu uma aparência sofisticada, escura ou com a cor do álbum",
|
||||
"menu": {
|
||||
"hide-dom-window-controls": "Ocultar controles da janela DOM"
|
||||
"hide-dom-window-controls": "Ocultar os controlos da janela DOM"
|
||||
},
|
||||
"name": "Menu no aplicativo"
|
||||
"name": "Menu da aplicação"
|
||||
},
|
||||
"lumiastream": {
|
||||
"description": "Adiciona suporte Lumia Stream",
|
||||
"description": "Adiciona suporte a Lumia Stream",
|
||||
"name": "Lumia Stream [Beta]"
|
||||
},
|
||||
"lyrics-genius": {
|
||||
@ -428,61 +525,61 @@
|
||||
},
|
||||
"name": "Letras Genius",
|
||||
"renderer": {
|
||||
"fetched-lyrics": "Buscar letras no Genius"
|
||||
"fetched-lyrics": "Letras encontradas no Genius"
|
||||
}
|
||||
},
|
||||
"music-together": {
|
||||
"description": "Compartilha a playlist com outros. Quando o host tocar uma música, todos poderão ouvir a mesma canção",
|
||||
"description": "Partilhe uma playlist com outros. Quando o anfitrião tocar uma música, todos os outros ouvirão a mesma música",
|
||||
"dialog": {
|
||||
"enter-host": "Digite o ID do Host"
|
||||
"enter-host": "Introduza o ID do anfitrião"
|
||||
},
|
||||
"internal": {
|
||||
"save": "Salvar",
|
||||
"track-source": "Fonte da faixa",
|
||||
"unknown-user": "Usuário Desconhecido"
|
||||
"save": "Guardar",
|
||||
"track-source": "Origem da faixa",
|
||||
"unknown-user": "Utilizador desconhecido"
|
||||
},
|
||||
"menu": {
|
||||
"click-to-copy-id": "Copiar ID do Host",
|
||||
"close": "Fechar o Música Juntos",
|
||||
"connected-users": "Usuários Conectados",
|
||||
"disconnect": "Desconectar do Música Juntos",
|
||||
"empty-user": "Sem usuários conectados",
|
||||
"host": "Host do Música Juntos",
|
||||
"join": "Juntar ao Música Juntos",
|
||||
"click-to-copy-id": "Copiar o ID do anfitrião",
|
||||
"close": "Fechar o Music Together",
|
||||
"connected-users": "Utilizadores conectados",
|
||||
"disconnect": "Desconectar Music Together",
|
||||
"empty-user": "Sem utilizadores conectados",
|
||||
"host": "Anfitrião do Music Together",
|
||||
"join": "Juntar-se ao Music Together",
|
||||
"permission": {
|
||||
"all": "Permita que outros controlem a playlist e ao player",
|
||||
"host-only": "Apenas o host pode controlar a playlist e ao player",
|
||||
"playlist": "Permitir que outros controlem a playlist"
|
||||
"all": "Permitir que os convidados controlem a playlist e o leitor",
|
||||
"host-only": "Apenas o anfitrião pode controlar a playlist e o leitor",
|
||||
"playlist": "Permitir que os convidados controlem a playlist"
|
||||
},
|
||||
"set-permission": "Alterar permissões de controle",
|
||||
"set-permission": "Alterar permissões de controlo",
|
||||
"status": {
|
||||
"disconnected": "Desconectado",
|
||||
"guest": "Conectado como Convidado",
|
||||
"host": "Conectado como Host"
|
||||
"guest": "Conectado como convidado",
|
||||
"host": "Conectado como anfitrião"
|
||||
}
|
||||
},
|
||||
"name": "Música Juntos [Beta]",
|
||||
"name": "Music Together [Beta]",
|
||||
"toast": {
|
||||
"add-song-failed": "Falha ao adicionar canção",
|
||||
"closed": "Música Juntos encerrado",
|
||||
"disconnected": "Música Juntos foi desconectado",
|
||||
"host-failed": "Falha ao hospedar o Música Juntos",
|
||||
"id-copied": "ID de anfitrião copiado para a área de transferência",
|
||||
"id-copy-failed": "Falha ao copiar o ID de anfitrião para a área de transferência",
|
||||
"join-failed": "Falha ao entrar em Música Juntos",
|
||||
"joined": "Entrou em Música Juntos",
|
||||
"permission-changed": "A permissão do Música Juntos foi alterada para \"{{permission}}\"",
|
||||
"add-song-failed": "Falha ao adicionar música",
|
||||
"closed": "Music Together fechado",
|
||||
"disconnected": "Music Together desconectado",
|
||||
"host-failed": "Falha ao hospedar o Music Together",
|
||||
"id-copied": "ID do anfitrião copiado para a Área de Transferência",
|
||||
"id-copy-failed": "Falha ao copiar o ID do anfitrião para a Área de Transferência",
|
||||
"join-failed": "Falha ao entrar no Music Together",
|
||||
"joined": "Entrou no Music Together",
|
||||
"permission-changed": "A permissão do Music Together foi alterada para \"{{permission}}\"",
|
||||
"remove-song-failed": "Falha ao remover música",
|
||||
"user-connected": "{{name}} entrou em Música Juntos",
|
||||
"user-disconnected": "{{name}} saiu do Música Juntos"
|
||||
"user-connected": "{{name}} entrou no Music Together",
|
||||
"user-disconnected": "{{name}} saiu do Music Together"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"description": "Setas de navegação Próximo/Voltar integradas diretamente na interface, como no seu navegador favorito",
|
||||
"description": "Setas de navegação Avançar/Retroceder integradas diretamente na interface, como no seu navegador favorito",
|
||||
"name": "Navegação"
|
||||
},
|
||||
"no-google-login": {
|
||||
"description": "Remove os botões e links de login do Google da interface",
|
||||
"description": "Remove os botões de login do Google e links da interface",
|
||||
"name": "Sem login do Google"
|
||||
},
|
||||
"notifications": {
|
||||
@ -490,36 +587,36 @@
|
||||
"menu": {
|
||||
"interactive": "Notificações interativas",
|
||||
"interactive-settings": {
|
||||
"label": "Configurações interativas",
|
||||
"label": "Definições interativas",
|
||||
"submenu": {
|
||||
"hide-button-text": "Ocultar texto do botão",
|
||||
"hide-button-text": "Ocultar o texto do botão",
|
||||
"refresh-on-play-pause": "Atualizar ao reproduzir/pausar",
|
||||
"tray-controls": "Abrir/Fechar no clique da bandeja"
|
||||
"tray-controls": "Abrir/Fechar com um clique no tabuleiro do sistema"
|
||||
}
|
||||
},
|
||||
"priority": "Prioridade de notificação",
|
||||
"toast-style": "Estilo de alerta",
|
||||
"unpause-notification": "Mostrar notificação ao despausar"
|
||||
"priority": "Prioridade da notificação",
|
||||
"toast-style": "Estilo da notificação",
|
||||
"unpause-notification": "Mostrar notificação ao desativar a pausa"
|
||||
},
|
||||
"name": "Notificações"
|
||||
},
|
||||
"picture-in-picture": {
|
||||
"description": "Permite mudar o aplicativo para o modo picture-in-picture",
|
||||
"description": "Permite mudar a aplicação para o modo picture-in-picture",
|
||||
"menu": {
|
||||
"always-on-top": "Sempre no topo",
|
||||
"always-on-top": "Sempre em cima",
|
||||
"hotkey": {
|
||||
"label": "Tecla de atalho",
|
||||
"prompt": {
|
||||
"keybind-options": {
|
||||
"hotkey": "Tecla de atalho"
|
||||
},
|
||||
"label": "Escolha uma tecla de atalho para alternar o picture-in-picture",
|
||||
"label": "Escolha uma tecla de atalho para ativar o picture-in-picture",
|
||||
"title": "Tecla de atalho picture-in-picture"
|
||||
}
|
||||
},
|
||||
"save-window-position": "Salvar posição da janela",
|
||||
"save-window-size": "Salvar tamanho da janela",
|
||||
"use-native-pip": "Use PiP nativo do navegador"
|
||||
"save-window-position": "Guardar posição da janela",
|
||||
"save-window-size": "Guardar tamanho da janela",
|
||||
"use-native-pip": "Utilizar PiP nativo do navegador"
|
||||
},
|
||||
"name": "Picture-in-picture",
|
||||
"templates": {
|
||||
@ -527,17 +624,17 @@
|
||||
}
|
||||
},
|
||||
"playback-speed": {
|
||||
"description": "Ouça rápido, ouça devagar! Adiciona um controle deslizante que controla a velocidade da música",
|
||||
"description": "Ouça rápido, ouça devagar! Adiciona um controlo deslizante que controla a velocidade da música",
|
||||
"name": "Velocidade de reprodução",
|
||||
"templates": {
|
||||
"button": "Velocidade"
|
||||
}
|
||||
},
|
||||
"precise-volume": {
|
||||
"description": "Controle o volume com precisão usando a roda do mouse/teclas de atalho, com um HUD personalizado e etapas de volume personalizáveis",
|
||||
"description": "Controle o volume com precisão utilizando a roda do rato/teclas de atalho, com um HUD personalizado e incrementos de volume personalizáveis",
|
||||
"menu": {
|
||||
"arrows-shortcuts": "Controles locais das teclas de seta",
|
||||
"custom-volume-steps": "Definir etapas de volume personalizadas",
|
||||
"arrows-shortcuts": "Controlo preciso com as teclas de seta esq./dir.",
|
||||
"custom-volume-steps": "Definir incrementos de volume personalizados",
|
||||
"global-shortcuts": "Teclas de atalho globais"
|
||||
},
|
||||
"name": "Volume preciso",
|
||||
@ -547,12 +644,12 @@
|
||||
"decrease": "Diminuir o volume",
|
||||
"increase": "Aumentar o volume"
|
||||
},
|
||||
"label": "Escolha atalhos de teclado de volume global:",
|
||||
"title": "Atalhos de teclado de volume global"
|
||||
"label": "Escolha atalhos de teclado para o volume global:",
|
||||
"title": "Atalhos de teclado para o volume global"
|
||||
},
|
||||
"volume-steps": {
|
||||
"label": "Escolha as etapas de aumento/diminuição de volume",
|
||||
"title": "Etapas de volume"
|
||||
"label": "Escolha o tamanho dos incrementos/decrementos de volume",
|
||||
"title": "Incrementos de volume"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -566,54 +663,153 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Permite alterar a qualidade do vídeo com um botão na sobreposição de vídeo",
|
||||
"name": "Trocador de qualidade do vídeo"
|
||||
"description": "Permite alterar a qualidade do vídeo com um botão sobreposto ao vídeo",
|
||||
"name": "Alterador de qualidade de vídeo"
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "Adicionar suporte para scrobbling (last.fm, Listenbrainz, etc.)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "Falha ao autenticar com a Last.fm\nO pop-up será ocultado até reiniciar a aplicação.",
|
||||
"title": "Falha na autenticação"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "Definições da API da Last.fm"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": "Introduza o token de utilizador do ListenBrainz"
|
||||
},
|
||||
"scrobble-alternative-title": "Usar títulos alternativos",
|
||||
"scrobble-other-media": "Scrobble de outros conteúdos"
|
||||
},
|
||||
"name": "Scrobbler",
|
||||
"prompt": {
|
||||
"lastfm": {
|
||||
"api-key": "Chave da API da Last.fm",
|
||||
"api-secret": "Segredo da API da Last.fm"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": {
|
||||
"label": "Introduza o seu token de utilizador ListenBrainz:",
|
||||
"title": "Token ListenBrainz"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"shortcuts": {
|
||||
"description": "Permite definir teclas de atalho globais para reprodução (reproduzir/pausar/próximo/anterior) e desligar o OSD de mídia substituindo as teclas de mídia, ativando Ctrl/CMD + F para pesquisar, ativando o suporte Linux MPRIS para teclas de mídia e teclas de atalho personalizadas para usuários avançados.",
|
||||
"description": "Permite definir teclas de atalho globais para a reprodução (reproduzir/pausar/próximo/anterior) e desativar o OSD multimédia substituindo as teclas multimédia, ativar Ctrl/CMD + F para pesquisar, ativar o suporte Linux MPRIS para teclas multimédia e teclas de atalho personalizadas para utilizadores avançados",
|
||||
"menu": {
|
||||
"override-media-keys": "Substituir teclas de mídia",
|
||||
"set-keybinds": "Definir controles globais de música"
|
||||
"override-media-keys": "Substituir as teclas de multimédia",
|
||||
"set-keybinds": "Definir controlos globais para a música"
|
||||
},
|
||||
"name": "Atalhos (& MPRIS)",
|
||||
"prompt": {
|
||||
"keybind": {
|
||||
"keybind-options": {
|
||||
"next": "Próximo",
|
||||
"play-pause": "Reproduzir/Pausar",
|
||||
"play-pause": "Reproduzir / Pausar",
|
||||
"previous": "Anterior"
|
||||
},
|
||||
"label": "Escolha atalhos de teclado globais para controle de músicas:",
|
||||
"label": "Escolha teclas globais para o controlo da música:",
|
||||
"title": "Atalhos globais do teclado"
|
||||
}
|
||||
}
|
||||
},
|
||||
"skip-disliked-songs": {
|
||||
"description": "Pula músicas com 'não gostei'",
|
||||
"name": "Pular músicas com 'não gostei'"
|
||||
"description": "Salta as canções de que não gosta",
|
||||
"name": "Saltar músicas que não gostei"
|
||||
},
|
||||
"skip-silences": {
|
||||
"description": "Pular automaticamente seções de silêncio nas músicas",
|
||||
"name": "Pular silêncios"
|
||||
"description": "Saltar automaticamente as partes silenciosas das canções",
|
||||
"name": "Saltar silêncios"
|
||||
},
|
||||
"sponsorblock": {
|
||||
"description": "Ignora automaticamente partes não musicais, como introdução/final ou partes de videoclipes onde a música não está tocando",
|
||||
"name": "SponsorBlock (bloqueador de patrocínios)"
|
||||
"description": "Salta automaticamente partes que não são música, como a intro/outro ou partes de vídeos de música em que a música não está a ser reproduzida",
|
||||
"name": "SponsorBlock"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "Fornece letras de músicas sincronizadas, utilizando fornecedores como o LRClib.",
|
||||
"errors": {
|
||||
"fetch": "⚠️ Ocorreu um erro ao obter a letra da música.\n\tPor favor, tente novamente mais tarde.",
|
||||
"not-found": "⚠️ Não foram encontradas letras para esta canção."
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "Carácter predefinido entre letras",
|
||||
"tooltip": "Escolha o carácter predefinido a utilizar para o intervalo entre letras"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "Efeito da linha",
|
||||
"submenu": {
|
||||
"fancy": {
|
||||
"label": "Elegante",
|
||||
"tooltip": "Utilizar grandes efeitos semelhantes aos da aplicação na linha atual"
|
||||
},
|
||||
"focus": {
|
||||
"label": "Foco",
|
||||
"tooltip": "Tornar branca apenas a linha atual"
|
||||
},
|
||||
"offset": {
|
||||
"label": "Deslocamento",
|
||||
"tooltip": "Desloque a linha atual para a direita"
|
||||
},
|
||||
"scale": {
|
||||
"label": "Escala",
|
||||
"tooltip": "Escalar a linha atual"
|
||||
}
|
||||
},
|
||||
"tooltip": "Escolha o efeito a ser aplicado à linha atual"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "Fazer com que as letras estejam perfeitamente sincronizadas",
|
||||
"tooltip": "Calcular ao milissegundo a visualização da linha seguinte (pode ter um pequeno impacto no desempenho)"
|
||||
},
|
||||
"romanization": {
|
||||
"label": "Letras Romanas",
|
||||
"tooltip": "Se as letras estiverem numa linguagem diferente, tente mostrar uma versão em latim."
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "Mostrar as letras, mesmo que sejam imprecisas",
|
||||
"tooltip": "Se a música não for encontrada, o plugin tenta novamente com uma consulta de pesquisa diferente.\nO resultado da segunda tentativa pode não ser exato."
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "Mostrar códigos de tempo",
|
||||
"tooltip": "Mostrar os códigos de tempo ao lado das letras"
|
||||
}
|
||||
},
|
||||
"name": "Letras Sincronizadas",
|
||||
"refetch-btn": {
|
||||
"fetching": "A obter...",
|
||||
"normal": "Buscar as letras novamente"
|
||||
},
|
||||
"warnings": {
|
||||
"duration-mismatch": "⚠️ - A letra da música pode estar dessincronizada devido a um erro de duração.",
|
||||
"inexact": "⚠️ - A letra desta canção pode não ser exata",
|
||||
"instrumental": "⚠️ - Esta é uma música instrumental"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "Controle a reprodução na barra de tarefas do Windows",
|
||||
"name": "Controle de mídia da barra de tarefas"
|
||||
"description": "Controle a reprodução a partir da barra de tarefas do Windows",
|
||||
"name": "Controlo multimédia da barra de tarefas"
|
||||
},
|
||||
"touchbar": {
|
||||
"description": "Adiciona um widget TouchBar para usuários do macOS",
|
||||
"name": "Barra de toque"
|
||||
"description": "Adiciona um widget TouchBar para utilizadores do macOS",
|
||||
"name": "TouchBar"
|
||||
},
|
||||
"tuna-obs": {
|
||||
"description": "Integração com o plugin Tuna do OBS",
|
||||
"name": "Tuna OBS"
|
||||
},
|
||||
"unobtrusive-player": {
|
||||
"description": "Previne o programa de aparecer enquanto toca uma música",
|
||||
"name": "Reprodutor não obstrutivo"
|
||||
},
|
||||
"video-toggle": {
|
||||
"description": "Adiciona um botão para alternar entre o modo Vídeo/Música. Também pode, opcionalmente, remover toda a guia de vídeo",
|
||||
"description": "Adiciona um botão para alternar entre o modo Vídeo/ Música. Opcionalmente, também pode remover completamente o separador do vídeo",
|
||||
"menu": {
|
||||
"align": {
|
||||
"label": "Alinhamento",
|
||||
@ -623,12 +819,12 @@
|
||||
"right": "Direita"
|
||||
}
|
||||
},
|
||||
"force-hide": "Forçar remoção da guia de vídeo",
|
||||
"force-hide": "Forçar a remoção do separador de vídeo",
|
||||
"mode": {
|
||||
"label": "Modo",
|
||||
"submenu": {
|
||||
"custom": "Alternar personalizado",
|
||||
"disabled": "Desabilitado",
|
||||
"disabled": "Desativado",
|
||||
"native": "Alternar nativo"
|
||||
}
|
||||
}
|
||||
@ -639,11 +835,11 @@
|
||||
}
|
||||
},
|
||||
"visualizer": {
|
||||
"description": "Adiciona um visualizador ao player",
|
||||
"description": "Adiciona um visualizador ao leitor",
|
||||
"menu": {
|
||||
"visualizer-type": "Tipo de visualizador"
|
||||
},
|
||||
"name": "Visualizer"
|
||||
"name": "Visualizador"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
835
src/i18n/resources/ro.json
Normal file
@ -0,0 +1,835 @@
|
||||
{
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "Nu s-a reusit executarea plugin-ului {{pluginName}}::{{contextName}}",
|
||||
"executed-at-ms": "Plugin-ul {{pluginName}}::{{contextName}} s-a executat in {{ms}} ms",
|
||||
"initialize-failed": "Initializarea plugin-ului \"{{pluginName}}\" a esuat",
|
||||
"load-all": "Se incarca toate plugin-urile",
|
||||
"load-failed": "Esec la incarcarea plugin-ului \"{{pluginName}}\"",
|
||||
"loaded": "Plugin-ul \"{{pluginName}}\" s-a incarcat",
|
||||
"unload-failed": "Esec la oprirea plugin-ului \"{{pluginName}}\"",
|
||||
"unloaded": "Plugin-ul \"{{pluginName}}\" s-a terminat"
|
||||
}
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"code": "ro",
|
||||
"local-name": "Română",
|
||||
"name": "Romanian"
|
||||
},
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "S-a terminat incarcarea. Panoul de developer e deschis"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "i18n incarcat"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "Comanda primita prin protocol: \"{{command}}\""
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "Fisierul CSS \"{{cssFile}}\" nu exista, se ignora"
|
||||
},
|
||||
"unresponsive": {
|
||||
"details": "Eroare, procesul nu raspunde\n{{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "Se sterge cache-ul aplicatiei"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "Fereastra a incercat sa fie randata in afara ecranului, marimeaFerestrei={{windowSize}}, marimeaEcranului={{displaySize}}, pozitia={{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "Meniul este ascuns, folositi tasta 'Alt' pentru a-l face sa apara (sau tasta 'Esc' daca folositi meniul din aplicatie)",
|
||||
"message": "Ascunderea meniului este activata",
|
||||
"title": "Ascunderea meniului activata"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "Mai tarziu",
|
||||
"restart-now": "Reporneste acum"
|
||||
},
|
||||
"detail": "Plugin-ul \"{{pluginName}}\" necesita o repornire pentru a intra in efect",
|
||||
"message": "Pugin-ul \"{{pluginName}}\" trebuie repornit",
|
||||
"title": "Repornire necesara"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "Iesi",
|
||||
"relaunch": "Reporneste",
|
||||
"wait": "Asteapta"
|
||||
},
|
||||
"detail": "Ne cerem scuze pentru incovenient! va rugam alegeti ce doriti sa faceti:",
|
||||
"message": "Applicatia nu raspunde",
|
||||
"title": "Fereastra nu raspunde"
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"disable": "Dezactiveaza actualizarile",
|
||||
"download": "Descarca",
|
||||
"ok": "OK"
|
||||
},
|
||||
"detail": "O noua versiune este disponibila si poate fi descarcata pe {{downloadLink}}",
|
||||
"message": "O noua versiune este disponibila",
|
||||
"title": "Actualizare disponibila"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"about": "Despre",
|
||||
"navigation": {
|
||||
"label": "Navigatie",
|
||||
"submenu": {
|
||||
"copy-current-url": "Copiaza URL-ul actual",
|
||||
"go-back": "Mergi inapoi",
|
||||
"go-forward": "Mergi inainte",
|
||||
"quit": "Iesi",
|
||||
"restart": "Reporneste aplicatia"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"label": "Setari",
|
||||
"submenu": {
|
||||
"advanced-options": {
|
||||
"label": "Setari avansate",
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "Reseteaza cache-ul aplicatiei la pornire",
|
||||
"disable-hardware-acceleration": "Dezactiveaza acceleratia hardware",
|
||||
"edit-config-json": "Editeaza config,json",
|
||||
"override-user-agent": "Suprascrie User-Agent-ul",
|
||||
"restart-on-config-changes": "Reporneste la modificarea configuratiei",
|
||||
"set-proxy": {
|
||||
"label": "Seteaza proxy",
|
||||
"prompt": {
|
||||
"label": "Introduceti adresa proxy: (lasati liber pentru a dezactiva)",
|
||||
"placeholder": "Exemplu: SOCKS5://127.0.0.1:9999",
|
||||
"title": "Seteaza proxy"
|
||||
}
|
||||
},
|
||||
"toggle-dev-tools": "Deschide uneltele de dezvoltator"
|
||||
}
|
||||
},
|
||||
"always-on-top": "Mereu deasupra",
|
||||
"auto-update": "Actualizare automata",
|
||||
"hide-menu": {
|
||||
"dialog": {
|
||||
"message": "Meniul va fi ascuns la urmatoarea pornire, folositi [Alt] pentru a-l face sa apara (sau ghilimea intoarsa [`] daca folositi meniul applicatiei)",
|
||||
"title": "Ascunderea meniului pornita"
|
||||
},
|
||||
"label": "Ascunde meniul"
|
||||
},
|
||||
"language": {
|
||||
"dialog": {
|
||||
"message": "Limba va fi schimbata dupa repornire",
|
||||
"title": "Limba actualizata"
|
||||
},
|
||||
"label": "Limba",
|
||||
"submenu": {
|
||||
"to-help-translate": "Vrei să ajuți la traducere? Apasă aici"
|
||||
}
|
||||
},
|
||||
"resume-on-start": "Continuă ultimul cântec ascultat când pornește aplicația",
|
||||
"single-instance-lock": "Blocare cu o singură instanță",
|
||||
"start-at-login": "Începe de la autentificare",
|
||||
"starting-page": {
|
||||
"label": "Pagina de pornire",
|
||||
"unset": "Deselectat"
|
||||
},
|
||||
"tray": {
|
||||
"label": "Tray",
|
||||
"submenu": {
|
||||
"disabled": "Dezactivat",
|
||||
"enabled-and-hide-app": "Activează și ascunde fereastra aplicației",
|
||||
"enabled-and-show-app": "Activează și arata fereastra aplicației",
|
||||
"play-pause-on-click": "Start/Pauza la click"
|
||||
}
|
||||
},
|
||||
"visual-tweaks": {
|
||||
"label": "Modificări Vizuale",
|
||||
"submenu": {
|
||||
"like-buttons": {
|
||||
"default": "Default",
|
||||
"force-show": "Forțează randarea",
|
||||
"hide": "Ascunde",
|
||||
"label": "Butoane de like"
|
||||
},
|
||||
"remove-upgrade-button": "Elimina butonul de upgrade",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "Anulează",
|
||||
"remove": "Elimină"
|
||||
},
|
||||
"remove-theme": "Ești sigur că vrei să elimini tema personalizata?",
|
||||
"remove-theme-message": "Acesta va elimina tema personalizata"
|
||||
},
|
||||
"label": "Tema",
|
||||
"submenu": {
|
||||
"import-css-file": "Importa fisiere CSS proprii",
|
||||
"no-theme": "Fara tema"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"enabled": "Activat",
|
||||
"label": "Plugins",
|
||||
"new": "NOU"
|
||||
},
|
||||
"view": {
|
||||
"label": "Aspect",
|
||||
"submenu": {
|
||||
"force-reload": "Reimprospatare fortata",
|
||||
"reload": "Reimprospateaza",
|
||||
"reset-zoom": "Marimea actuala",
|
||||
"toggle-fullscreen": "Porneste Full Screen",
|
||||
"zoom-in": "Mareste",
|
||||
"zoom-out": "Micsoreaza"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"next": "Urmatorul",
|
||||
"play-pause": "Reda/Pauza",
|
||||
"previous": "Anteriorul",
|
||||
"quit": "Iesi",
|
||||
"restart": "Reporneste aplicatia",
|
||||
"show": "Arata fereastra",
|
||||
"tooltip": {
|
||||
"default": "YouTube Music",
|
||||
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "Reclamele au sunetul dezactivat si viteza de redare este x16",
|
||||
"name": "Accelerare reclame"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "Blocheaza toate reclamele si trackers",
|
||||
"menu": {
|
||||
"blocker": "Blocator"
|
||||
},
|
||||
"name": "Blocator de reclame"
|
||||
},
|
||||
"album-actions": {
|
||||
"description": "Adauga butoane pentru Undislike, Like si Unlike pentru toate piesele dintr-un playlist sau album",
|
||||
"name": "Actiuni pentru album"
|
||||
},
|
||||
"album-color-theme": {
|
||||
"description": "Aplica o tema dinamica si efecte vizuale bazate pe paleta de culori a albumului",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "Raportul amestecului de culori",
|
||||
"submenu": {
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Tema de culori a albumului"
|
||||
},
|
||||
"ambient-mode": {
|
||||
"description": "Aplica un efect de iluminare, aplicand culori preluate din video pe fundalul ecranului",
|
||||
"menu": {
|
||||
"blur-amount": {
|
||||
"label": "Cantitatea de blur",
|
||||
"submenu": {
|
||||
"pixels": "{{blurAmount}} pixeli"
|
||||
}
|
||||
},
|
||||
"buffer": {
|
||||
"label": "Buffer",
|
||||
"submenu": {
|
||||
"buffer": "{{buffer}}"
|
||||
}
|
||||
},
|
||||
"opacity": {
|
||||
"label": "Opacitate",
|
||||
"submenu": {
|
||||
"percent": "{{opacity}}%"
|
||||
}
|
||||
},
|
||||
"quality": {
|
||||
"label": "Calitate",
|
||||
"submenu": {
|
||||
"pixels": "{{quality}} pixeli"
|
||||
}
|
||||
},
|
||||
"size": {
|
||||
"label": "Marime",
|
||||
"submenu": {
|
||||
"percent": "{{size}}%"
|
||||
}
|
||||
},
|
||||
"smoothness-transition": {
|
||||
"label": "Fluiditatea tranzitiei",
|
||||
"submenu": {
|
||||
"during": "In timpul {{interpolationTime}} s"
|
||||
}
|
||||
},
|
||||
"use-fullscreen": {
|
||||
"label": "Ecran Plin în utilizare"
|
||||
}
|
||||
},
|
||||
"name": "Mod ambiental"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "Adauga suport Youtube Music pentru Amuse se redă acum widget de 6K Labs",
|
||||
"name": "Amuse",
|
||||
"response": {
|
||||
"query": "Server-ul API-ului Amuse rulează. GET /query pentru a obține informații despre melodie."
|
||||
}
|
||||
},
|
||||
"api-server": {
|
||||
"description": "Adaugă un server API pentru a controla player-ul",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "Permite",
|
||||
"deny": "Respinge"
|
||||
},
|
||||
"message": "Permite {{ID}} {{origin}} să acceseze API-ul?",
|
||||
"title": "Cerere autorizare API"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Strategie de autorizare",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "Autorizare la prima cerere"
|
||||
},
|
||||
"none": {
|
||||
"label": "Fără autorizare"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "Nume host"
|
||||
},
|
||||
"port": {
|
||||
"label": "Port"
|
||||
}
|
||||
},
|
||||
"name": "Server API [Beta]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "Introduceți nume host (0.0.0.0 de ex.) pentru server-ul API:",
|
||||
"title": "Nume host"
|
||||
},
|
||||
"port": {
|
||||
"label": "Introduceți port-ul pentru server-ul API:",
|
||||
"title": "Port"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Aplică compresie pe audio (scade volumul părților cele mai zgomotoase și crește volumul părților mai puțin zgomotoase)",
|
||||
"name": "Compresor audio"
|
||||
},
|
||||
"blur-nav-bar": {
|
||||
"description": "Face bara de navigare semi-transparentă",
|
||||
"name": "Estompează Bara de Navigație"
|
||||
},
|
||||
"bypass-age-restrictions": {
|
||||
"description": "Treci peste verificarea de vârstă a YouTube-ului",
|
||||
"name": "Ignoră restricțiile de vârstă"
|
||||
},
|
||||
"captions-selector": {
|
||||
"description": "Selector de subtitrări pentru piesele audio de pe YouTube Music",
|
||||
"menu": {
|
||||
"autoload": "Selectează automat ultima subtitrare folosită",
|
||||
"disable-captions": "Fără subtitrări în mod implicit"
|
||||
},
|
||||
"name": "Selector de subtitrări",
|
||||
"prompt": {
|
||||
"selector": {
|
||||
"label": "Limba curentă a subtitrărilor: {{language}}",
|
||||
"none": "Niciuna",
|
||||
"title": "Alege limba subtitrărilor"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"title": "Deschide selectorul de subtitrări"
|
||||
}
|
||||
},
|
||||
"compact-sidebar": {
|
||||
"description": "Păstrează bara laterală mereu în modul compact",
|
||||
"name": "Bara Laterală Compactă"
|
||||
},
|
||||
"crossfade": {
|
||||
"description": "Tranziționează între melodii",
|
||||
"menu": {
|
||||
"advanced": "Avansat"
|
||||
},
|
||||
"name": "Tranziție [Beta]",
|
||||
"prompt": {
|
||||
"options": {
|
||||
"multi-input": {
|
||||
"fade-in-duration": "Durată tranziție de început (ms)",
|
||||
"fade-out-duration": "Durată tranziției de sfârșit (ms)",
|
||||
"fade-scaling": {
|
||||
"label": "Scalare de estompare",
|
||||
"linear": "Liniar",
|
||||
"logarithmic": "Logaritmic"
|
||||
},
|
||||
"seconds-before-end": "Tranziție N secunde înainte de final"
|
||||
},
|
||||
"title": "Opțiuni de tranziție"
|
||||
}
|
||||
}
|
||||
},
|
||||
"disable-autoplay": {
|
||||
"description": "Face cântecul să înceapă în modul \"pauză\"",
|
||||
"menu": {
|
||||
"apply-once": "Se aplică doar la pornirea aplicației"
|
||||
},
|
||||
"name": "Dezactivează redarea automată"
|
||||
},
|
||||
"discord": {
|
||||
"backend": {
|
||||
"already-connected": "S-a încercat conectarea cu o conexiune activă",
|
||||
"connected": "Conectat la Discord",
|
||||
"disconnected": "Deconectat de la Discord"
|
||||
},
|
||||
"description": "Arată-le prietenilor ce asculți cu Rich Presence",
|
||||
"menu": {
|
||||
"auto-reconnect": "Reconectare automată",
|
||||
"clear-activity": "Șterge activitatea",
|
||||
"clear-activity-after-timeout": "Șterge activitatea după timeout",
|
||||
"connected": "Conectat",
|
||||
"disconnected": "Deconectat",
|
||||
"hide-duration-left": "Ascunde timpul rămas",
|
||||
"hide-github-button": "Ascunde butonul cu link-ul GitHub",
|
||||
"play-on-youtube-music": "Redă pe YouTube Music",
|
||||
"set-inactivity-timeout": "Setează intervalul de inactivitate"
|
||||
},
|
||||
"name": "Discord Rich Presence",
|
||||
"prompt": {
|
||||
"set-inactivity-timeout": {
|
||||
"label": "Introduceți perioada de inactivitate dorită în secunde:",
|
||||
"title": "Setează timpul de inactivitate"
|
||||
}
|
||||
}
|
||||
},
|
||||
"downloader": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"error": {
|
||||
"buttons": {
|
||||
"ok": "OK"
|
||||
},
|
||||
"message": "Ah! Scuze, descărcarea a eșuat…",
|
||||
"title": "Eroare la descărcare!"
|
||||
},
|
||||
"start-download-playlist": {
|
||||
"buttons": {
|
||||
"ok": "OK"
|
||||
},
|
||||
"detail": "({{playlistSize}} melodii)",
|
||||
"message": "Se descarca Playlist-ul {{playlistTitle}}",
|
||||
"title": "Descărcarea a început"
|
||||
}
|
||||
},
|
||||
"feedback": {
|
||||
"conversion-progress": "Conversie: {{percent}}%",
|
||||
"converting": "Se convertește…",
|
||||
"done": "Descărcat: {{filePath}}",
|
||||
"download-info": "Se descarcă {{artist}} -{{title}} [{{videoId}}",
|
||||
"download-progress": "Se descarcă: {{percent}}%",
|
||||
"downloading": "Se descarcă…",
|
||||
"downloading-counter": "Se descarcă {{current}}/{{total}}…",
|
||||
"downloading-playlist": "Se descarcă lista de redare \"{{playlistTitle}}\" - {{playlistSize}} piese ({{playlistId}})",
|
||||
"error-while-downloading": "Eroare la descarcareă piesei \"{{author}} - {{title}}\":{{error}}",
|
||||
"folder-already-exists": "Dosarul {{playlistFolder}} există deja",
|
||||
"getting-playlist-info": "Se adună informațiile despre lista de redare…",
|
||||
"loading": "Se incarcă…",
|
||||
"playlist-has-only-one-song": "Lista de redare are doar un element, acesta va fi descărcat direct",
|
||||
"playlist-id-not-found": "Niciun ID al listei de redare nu a fost gasit",
|
||||
"playlist-is-empty": "Lista de redare este goală",
|
||||
"playlist-is-mix-or-private": "Eroare la colectarea informațiilor despre lista de redare: asigurați-vă că nu este privat sau o listă de redare \"Mixed for you\"\n\n{{error}}",
|
||||
"preparing-file": "Se pregătește fișierul…",
|
||||
"saving": "Se salvează…",
|
||||
"trying-to-get-playlist-id": "Se încearcă obținerea ID-ului listei de redare: {{playlistId}}",
|
||||
"video-id-not-found": "Videoclipul nu a fost găsit",
|
||||
"writing-id3": "Se scriu tag-urile ID3…"
|
||||
}
|
||||
},
|
||||
"description": "Descarcă MP3 / sursa audio direct din interfață",
|
||||
"menu": {
|
||||
"choose-download-folder": "Alege folderul de descărcări",
|
||||
"download-finish-settings": {
|
||||
"label": "Descărcare la finalizare",
|
||||
"prompt": {
|
||||
"last-percent": "După x la sută",
|
||||
"last-seconds": "Ultimele x secunde",
|
||||
"title": "Configurează când să se descarce"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "Avansat",
|
||||
"enabled": "Activat",
|
||||
"mode": "Mod timp",
|
||||
"percent": "Procentaj",
|
||||
"seconds": "Secunde"
|
||||
}
|
||||
},
|
||||
"download-playlist": "Descarcă lista de redare",
|
||||
"presets": "Setări implicite",
|
||||
"skip-existing": "Treci peste fișierele existente"
|
||||
},
|
||||
"name": "Descărcător",
|
||||
"renderer": {
|
||||
"can-not-update-progress": "Nu se poate actualiza progresul"
|
||||
},
|
||||
"templates": {
|
||||
"button": "Descarcă"
|
||||
}
|
||||
},
|
||||
"equalizer": {
|
||||
"description": "Adauă un egalizator la player",
|
||||
"menu": {
|
||||
"presets": {
|
||||
"label": "Setări implicite",
|
||||
"list": {
|
||||
"bass-booster": "Amplificator de bas"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Egalizator"
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "Face glisorul de volum exponențial pentru a fi mai ușor de selectat volume reduse.",
|
||||
"name": "Volum exponențial"
|
||||
},
|
||||
"in-app-menu": {
|
||||
"description": "Oferă barelor de meniu un aspect extravagant, întunecat sau de culoarea albumului",
|
||||
"menu": {
|
||||
"hide-dom-window-controls": "Ascunde controalele ferestrei DOM"
|
||||
},
|
||||
"name": "Meniul aplicației"
|
||||
},
|
||||
"lumiastream": {
|
||||
"description": "Adaugă asistenta pentru Lumia Stream",
|
||||
"name": "Lumia Stream [Beta]"
|
||||
},
|
||||
"lyrics-genius": {
|
||||
"description": "Adaugă versuri pentru majoritatea cântecelor",
|
||||
"menu": {
|
||||
"romanized-lyrics": "Versuri romantizate"
|
||||
},
|
||||
"name": "Lyrics Genius",
|
||||
"renderer": {
|
||||
"fetched-lyrics": "Versuri preluate de pe Genius"
|
||||
}
|
||||
},
|
||||
"music-together": {
|
||||
"description": "Împărtășește lista de redare cu alții. Când gazda va pune o piesă, toți ceilalți vor auzi aceeași melodie",
|
||||
"dialog": {
|
||||
"enter-host": "Introdu ID-ul host-ului"
|
||||
},
|
||||
"internal": {
|
||||
"save": "Salvează",
|
||||
"track-source": "Sursa piesei",
|
||||
"unknown-user": "Utilizator necunoscut"
|
||||
},
|
||||
"menu": {
|
||||
"click-to-copy-id": "Copiază ID-ul host-ului",
|
||||
"close": "Închide Music Together",
|
||||
"connected-users": "Utilizatori conecțati",
|
||||
"disconnect": "Deconectează Music Together",
|
||||
"empty-user": "Niciun utilizator conectat",
|
||||
"host": "Gazda Music Together",
|
||||
"join": "Alătura-te Music Together",
|
||||
"permission": {
|
||||
"all": "Permite invitaților să controleze lista de redare si player-ul",
|
||||
"host-only": "Doar gazda poate controla lista de redare și player-ul",
|
||||
"playlist": "Permite invitaților controlul asupra listei de redare"
|
||||
},
|
||||
"set-permission": "Schimbă controlul permisiunilor",
|
||||
"status": {
|
||||
"disconnected": "Deconectat",
|
||||
"guest": "Conectat ca invitat",
|
||||
"host": "Conectat ca gazda"
|
||||
}
|
||||
},
|
||||
"name": "Music Together [Beta]",
|
||||
"toast": {
|
||||
"add-song-failed": "Adăugarea piesei a eșuat",
|
||||
"closed": "Music Together închis",
|
||||
"disconnected": "Music Together deconectat",
|
||||
"host-failed": "Nu s-a reușit găzduirea Music Together",
|
||||
"id-copied": "ID-ul host-ului a fost copiat în clipboard",
|
||||
"id-copy-failed": "Eroare la copierea ID-ului host-ului în clipboard",
|
||||
"join-failed": "Nu s-a reușit alăturarea la Music Together",
|
||||
"joined": "V-ați alăturat Music Together",
|
||||
"permission-changed": "Permisiunile Music Together s-au schimbat la \"{{permission}}\"",
|
||||
"remove-song-failed": "Eroare la îndepărtarea melodiei",
|
||||
"user-connected": "{{name}} s-a alăturat la Music Together",
|
||||
"user-disconnected": "{{name}} a părăsit Music Together"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"description": "Săgețile pentru Următorul/Anteriorul integrate direct în interfață, ca în browser-ul tău preferat",
|
||||
"name": "Navigație"
|
||||
},
|
||||
"no-google-login": {
|
||||
"description": "Elimină butonul de autentificare Google și link-urile din interfață",
|
||||
"name": "Nicio autentificare Google"
|
||||
},
|
||||
"notifications": {
|
||||
"description": "Afișează o notificare când începe să cânte o piesă (notificările interactive sunt disponibile pe Windows)",
|
||||
"menu": {
|
||||
"interactive": "Notificări interactive",
|
||||
"interactive-settings": {
|
||||
"label": "Setări interactive",
|
||||
"submenu": {
|
||||
"hide-button-text": "Ascunde textul butoanelor",
|
||||
"refresh-on-play-pause": "Reîmprospătează la Redă/Pauză",
|
||||
"tray-controls": "Deschide/Închide la apăsarea iconiței pentru meniul Tray"
|
||||
}
|
||||
},
|
||||
"priority": "Prioritatea notificărilor",
|
||||
"toast-style": "Stilul notificărilor",
|
||||
"unpause-notification": "Arată notificările la pauză"
|
||||
},
|
||||
"name": "Notificări"
|
||||
},
|
||||
"picture-in-picture": {
|
||||
"description": "Permite să schimbi aplicația la modul picture-in-picture",
|
||||
"menu": {
|
||||
"always-on-top": "Mereu deasupra",
|
||||
"hotkey": {
|
||||
"label": "Scurtături pe tastatură",
|
||||
"prompt": {
|
||||
"keybind-options": {
|
||||
"hotkey": "Scurtături din taste"
|
||||
},
|
||||
"label": "Alege tasta pentru picture-in-picture",
|
||||
"title": "Scurtătura Picture-in-picture"
|
||||
}
|
||||
},
|
||||
"save-window-position": "Salvează poziția ferestrei",
|
||||
"save-window-size": "Salvează mărimea ferestrei",
|
||||
"use-native-pip": "Folosește PiP-ul nativ pentru broswer"
|
||||
},
|
||||
"name": "Picture-in-picture",
|
||||
"templates": {
|
||||
"button": "Picture-in-picture"
|
||||
}
|
||||
},
|
||||
"playback-speed": {
|
||||
"description": "Ascultă rapid, ascultă lent! Adaugă un slider pentru viteza de redare a melodiei",
|
||||
"name": "Viteza de redare",
|
||||
"templates": {
|
||||
"button": "Viteză"
|
||||
}
|
||||
},
|
||||
"precise-volume": {
|
||||
"description": "Controlează volumul precis folosind rotița mouse-ului/scurtăturii din tastatură, cu un HUD personalizat și incremente de volum personalizate",
|
||||
"menu": {
|
||||
"arrows-shortcuts": "Control cu tastele-săgeți locale",
|
||||
"custom-volume-steps": "Setează incrementele de volum",
|
||||
"global-shortcuts": "Scurtături de tastatură globale"
|
||||
},
|
||||
"name": "Volum precis",
|
||||
"prompt": {
|
||||
"global-shortcuts": {
|
||||
"keybind-options": {
|
||||
"decrease": "Redu volumul audio",
|
||||
"increase": "Crește volumul audio"
|
||||
},
|
||||
"label": "Alege combinațiile de taste globale pentru volumul audio:",
|
||||
"title": "Combinații globale de taste pentru volum"
|
||||
},
|
||||
"volume-steps": {
|
||||
"label": "Alege pașii de increment pentru volum audio",
|
||||
"title": "Incremente de volum"
|
||||
}
|
||||
}
|
||||
},
|
||||
"quality-changer": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"quality-changer": {
|
||||
"detail": "Calitate actuală: {{quality}}",
|
||||
"message": "Alegeți calitatea video:",
|
||||
"title": "Alegeți calitatea video"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Permite schimbarea calității video cu un buton prezent peste video",
|
||||
"name": "Schimbător de calitate video"
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "Adaugă asistenta pentru scrobbling (etc. last.fm, Listenbrainz)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "Autentificarea cu Last.fm a eșuat\nAscunde acest pop-up până la următoarea repornire.",
|
||||
"title": "Autentificare Eșuată"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "Setări pentru API-ul Last.fm"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": "Introdu token-ul de utilizator ListenBrainz"
|
||||
},
|
||||
"scrobble-other-media": "Scrobble alte surse media"
|
||||
},
|
||||
"name": "Scrobbler",
|
||||
"prompt": {
|
||||
"lastfm": {
|
||||
"api-key": "Cheia API Last.fm",
|
||||
"api-secret": "Secret API Last.fm"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": {
|
||||
"label": "Introdu token-ul tău de utilizator ListenBrainz:",
|
||||
"title": "Token-ul ListenBrainz"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"shortcuts": {
|
||||
"description": "Permite setari globale pentru scurtături pe tastatură pentru redare (redă/pauză/următorul/anteriorul) și pentru oprirea media OSD prin suprascriera tastelor media, pentru folosirea combinației Ctrl/CMD + F pentru a căuta, pentru pornirea asistenței Linux MPRIS pentru taste media și pentru scurtături personalizate pentru utilizatori avansați",
|
||||
"menu": {
|
||||
"override-media-keys": "Suprascrie tastele media",
|
||||
"set-keybinds": "Setează scurtăturile globale pentru melodii"
|
||||
},
|
||||
"name": "Scurtături (& MPRIS)",
|
||||
"prompt": {
|
||||
"keybind": {
|
||||
"keybind-options": {
|
||||
"next": "Următorul",
|
||||
"play-pause": "Redă / Pauză",
|
||||
"previous": "Anteriorul"
|
||||
},
|
||||
"label": "Alege combinația de taste globală pentru controlul melodiilor:",
|
||||
"title": "Scurtături pe tastatură globale"
|
||||
}
|
||||
}
|
||||
},
|
||||
"skip-disliked-songs": {
|
||||
"description": "Sari peste melodiile neplăcute",
|
||||
"name": "Treci peste melodiile neplăcute"
|
||||
},
|
||||
"skip-silences": {
|
||||
"description": "Treci automat peste secțiunile de liniște din melodii",
|
||||
"name": "Treci peste liniște"
|
||||
},
|
||||
"sponsorblock": {
|
||||
"description": "Treci automat peste părțile non-muzicale precum intro/outro sau părți din video-ul melodiei, când nu se aude melodia",
|
||||
"name": "SponsorBlock"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "Furnizează versuri sincronizate melodiilor, folosind furnizori precum LRClib.",
|
||||
"errors": {
|
||||
"fetch": "⚠️ - A apărut o eroare în timpul încărcării versurilor. \nTe rog încearcă din nou mai târziu.",
|
||||
"not-found": "⚠️ Nu au fost găsite versuri pentru această melodie."
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "Caracter implicit între versuri",
|
||||
"tooltip": "Alege caracterul implicit folosit pentru spațiul dintre versuri"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "Efect de linie",
|
||||
"submenu": {
|
||||
"fancy": {
|
||||
"tooltip": "Folosește efecte largi pe linia curentă"
|
||||
},
|
||||
"focus": {
|
||||
"label": "Focalizare",
|
||||
"tooltip": "Doar linia curentă este albă"
|
||||
},
|
||||
"offset": {
|
||||
"label": "Deplasare",
|
||||
"tooltip": "Deplasare la dreapta pentru linia curentă"
|
||||
},
|
||||
"scale": {
|
||||
"label": "Mărime",
|
||||
"tooltip": "Schimbă dimensiunea liniei curente"
|
||||
}
|
||||
},
|
||||
"tooltip": "Alege efectul aplicat liniei curente"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "Sincronizează versurile perfect",
|
||||
"tooltip": "Calculează afisarea următoarei linii până la milisecundă (poate afecta performanța)"
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "Afișează versurile chiar dacă sunt inexacte",
|
||||
"tooltip": "Dacă melodia nu este găsită, plugin-ul încearcă din nou cu o căutare diferită.\nRezultatul acestei încercări poate să nu fie exact."
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "Afișează codurile de timp",
|
||||
"tooltip": "Afișează codurile de timp lângă versuri"
|
||||
}
|
||||
},
|
||||
"name": "Versuri Sincronizate",
|
||||
"refetch-btn": {
|
||||
"fetching": "Încărcare...",
|
||||
"normal": "Reîncărcare versuri"
|
||||
},
|
||||
"warnings": {
|
||||
"duration-mismatch": "⚠️ - Versurile pot fi desincronizate din cauza unei nepotriviri de durație.",
|
||||
"inexact": "⚠️ - Versurile pentru această melodie pot fi inexacte",
|
||||
"instrumental": "⚠️ - Această melodie este instrumentală"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "Controlează redarea din Bara de Activități Windows",
|
||||
"name": "Control media in Bara de Activitate"
|
||||
},
|
||||
"touchbar": {
|
||||
"description": "Adaugă un widget TouchBar pentru utilizatorii macOS",
|
||||
"name": "TouchBar"
|
||||
},
|
||||
"tuna-obs": {
|
||||
"description": "Integrare cu plugin-ul OBS Tuna",
|
||||
"name": "Tuna OBS"
|
||||
},
|
||||
"video-toggle": {
|
||||
"description": "Adaugă un buton ce schimbă între modurile Video/Melodie. De asemenea se poate elimina opțional toată fila video",
|
||||
"menu": {
|
||||
"align": {
|
||||
"label": "Aliniere",
|
||||
"submenu": {
|
||||
"left": "Stânga",
|
||||
"middle": "Mijloc",
|
||||
"right": "Dreapta"
|
||||
}
|
||||
},
|
||||
"force-hide": "Forțează eliminarea filei video",
|
||||
"mode": {
|
||||
"label": "Mod",
|
||||
"submenu": {
|
||||
"custom": "Comutatoare personalizate",
|
||||
"disabled": "Dezactivat",
|
||||
"native": "Comutatoare native"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Comutator video",
|
||||
"templates": {
|
||||
"button": "Melodie"
|
||||
}
|
||||
},
|
||||
"visualizer": {
|
||||
"description": "Adaugă un vizualizator la player",
|
||||
"menu": {
|
||||
"visualizer-type": "Tip de vizualizator"
|
||||
},
|
||||
"name": "Vizualizator"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -158,6 +158,14 @@
|
||||
},
|
||||
"remove-upgrade-button": "Убрать кнопку Youtube Premium",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "Отмена",
|
||||
"remove": "Убрать"
|
||||
},
|
||||
"remove-theme": "Вы уверены, что хотите убрать пользовательскую тему?",
|
||||
"remove-theme-message": "Это уберёт пользовательскую тему"
|
||||
},
|
||||
"label": "Тема",
|
||||
"submenu": {
|
||||
"import-css-file": "Импортировать кастомный CSS файл",
|
||||
@ -199,6 +207,10 @@
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "Если воспроизводится реклама, аудио заглушается и скорость воспроизведения устанавливается на 16х",
|
||||
"name": "Ускоренная перемотка"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "Блокируйте всю рекламу и трекинг сразу после установки",
|
||||
"menu": {
|
||||
@ -267,9 +279,59 @@
|
||||
},
|
||||
"name": "Режим Ambient"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "Добавляет поддержку виджета Amuse „сейчас играет“ от 6K Labs",
|
||||
"name": "Amuse",
|
||||
"response": {
|
||||
"query": "Сервер Amuse API запущен. GET /query чтобы получить информацию о треке."
|
||||
}
|
||||
},
|
||||
"api-server": {
|
||||
"description": "Добавляет API сервер для контроля за плеером",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "Разрешить",
|
||||
"deny": "Отказать"
|
||||
},
|
||||
"message": "Разрешить {{ID}} ({{origin}}) доступ к API?",
|
||||
"title": "Запрос на авторизацию в API"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Способ авторизации",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "Авторизация при первом запросе"
|
||||
},
|
||||
"none": {
|
||||
"label": "Без авторизации"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "Имя хоста"
|
||||
},
|
||||
"port": {
|
||||
"label": "Порт"
|
||||
}
|
||||
},
|
||||
"name": "API Сервер [БЕТА]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "Введите имя хоста (на подобии 0.0.0.0) для API сервера:",
|
||||
"title": "Имя хоста"
|
||||
},
|
||||
"port": {
|
||||
"label": "Введите порт для API сервера:",
|
||||
"title": "Порт"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Применяет компрессию к аудио (уменьшает громкость самых громких частей сигнала и повышает громкость самых тихих частей)",
|
||||
"name": "Аудио компрессор"
|
||||
"name": "Нормализация аудио"
|
||||
},
|
||||
"blur-nav-bar": {
|
||||
"description": "Делает панель навигации прозрачной и размытой",
|
||||
@ -402,6 +464,21 @@
|
||||
"description": "Скачивать MP3 / исходное аудио напрямую из интерфейса",
|
||||
"menu": {
|
||||
"choose-download-folder": "Выберите папку для загрузок",
|
||||
"download-finish-settings": {
|
||||
"label": "Скачать по завершению",
|
||||
"prompt": {
|
||||
"last-percent": "После х процентов",
|
||||
"last-seconds": "Осталось x сек",
|
||||
"title": "Условия скачивания"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "Расширенные настройки",
|
||||
"enabled": "Включено",
|
||||
"mode": "Режим по времени",
|
||||
"percent": "Процент",
|
||||
"seconds": "Секунды"
|
||||
}
|
||||
},
|
||||
"download-playlist": "Скачать плейлист",
|
||||
"presets": "Пресеты",
|
||||
"skip-existing": "Пропускать уже существующие файлы"
|
||||
@ -414,6 +491,18 @@
|
||||
"button": "Скачать"
|
||||
}
|
||||
},
|
||||
"equalizer": {
|
||||
"description": "Добавляет эквалайзер к плееру",
|
||||
"menu": {
|
||||
"presets": {
|
||||
"label": "Предустановки",
|
||||
"list": {
|
||||
"bass-booster": "Усилитель баса"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Эквалайзер"
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "Делает слайдер громкости расширенным чтобы было легче понижать громкость.",
|
||||
"name": "Расширенная громкость"
|
||||
@ -491,7 +580,7 @@
|
||||
},
|
||||
"no-google-login": {
|
||||
"description": "Убрать из интерфейса кнопки и ссылки для входа через Google",
|
||||
"name": "Нет входа в систему Google"
|
||||
"name": "Без входа в систему Google"
|
||||
},
|
||||
"notifications": {
|
||||
"description": "Показывать уведомления о начале воспроизведения песни (интерактивные уведомления доступны в Windows)",
|
||||
@ -578,7 +667,15 @@
|
||||
"name": "Изменение качества видео"
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "Добавьте поддержку скробблинга (например, last.fm, Listenbrainz)",
|
||||
"description": "Добавляет поддержку скробблинга (last.fm, Listenbrainz)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "Не удалось войти с помощью Last.fm\nСкрыть сообщение до следующего запуска.",
|
||||
"title": "Ошибка аунтефикации"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "Настройки API Last.fm"
|
||||
@ -586,6 +683,7 @@
|
||||
"listenbrainz": {
|
||||
"token": "Введите токен пользователя ListenBrainz"
|
||||
},
|
||||
"scrobble-alternative-title": "Использовать альтернативные названия",
|
||||
"scrobble-other-media": "Скробблинг других медиа"
|
||||
},
|
||||
"name": "Скробблер",
|
||||
@ -633,6 +731,67 @@
|
||||
"description": "Автоматически пропускает не музыкальные фрагменты, например интро/аутро или фрагменты музыкальных клипов, в которых песня не звучит (тишина)",
|
||||
"name": "SponsorBlock"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "Предоставляет синхронизированные слова для песен из таких источников, как LRClib.",
|
||||
"errors": {
|
||||
"fetch": "⚠️\tПроизошла ошибка во время получения слов.\n\tПовторите попытку позже.",
|
||||
"not-found": "⚠️ Для этой песни не найдено слов."
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "Стандартный символ между словами",
|
||||
"tooltip": "Выберите стандартный символ для заполнения пространства между словами"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "Эффект строки",
|
||||
"submenu": {
|
||||
"fancy": {
|
||||
"label": "Красивый",
|
||||
"tooltip": "Использовать большие эффекты строки, как в приложении"
|
||||
},
|
||||
"focus": {
|
||||
"label": "Фокусировка",
|
||||
"tooltip": "Делает только текущую строку белой"
|
||||
},
|
||||
"offset": {
|
||||
"label": "Сдвиг",
|
||||
"tooltip": "Сдвигает текущую строку вправо"
|
||||
},
|
||||
"scale": {
|
||||
"label": "Увеличение",
|
||||
"tooltip": "Увеличивает текущую строку"
|
||||
}
|
||||
},
|
||||
"tooltip": "Выберите эффект применяемый к текущей строке"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "Идеально синхронизировать слова",
|
||||
"tooltip": "До миллисекунды рассчитывает отображение следующей строки(может оказать небольшое влияние на производительность)"
|
||||
},
|
||||
"romanization": {
|
||||
"label": "Романизировать слова",
|
||||
"tooltip": "Если слова на другом языке, пытаться отображать версию на латинице."
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "Показывать слова, даже если неточные",
|
||||
"tooltip": "Если песня не найдена, плагин попытается снова с другим поисковым запросом.\nСо второй попытки результат может быть неточным."
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "Показывать временные метки",
|
||||
"tooltip": "Показывает временные метки рядом со словами"
|
||||
}
|
||||
},
|
||||
"name": "Синхронизированные тексты песен",
|
||||
"refetch-btn": {
|
||||
"fetching": "Сбор данных...",
|
||||
"normal": "Обновить слова"
|
||||
},
|
||||
"warnings": {
|
||||
"duration-mismatch": "⚠️ - Слова могут быть неточно синхронизированы из-за несовпадения длины трека.",
|
||||
"inexact": "⚠️ - Слова для этой песни могут быть неточными",
|
||||
"instrumental": "⚠️ - Это инструментальная музыка"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "Управляйте воспроизведением с панели задач Windows",
|
||||
"name": "Управление мультимедиа на панели задач"
|
||||
@ -645,6 +804,10 @@
|
||||
"description": "Интеграция с плагином Tuna от OBS",
|
||||
"name": "Tuna OBS"
|
||||
},
|
||||
"unobtrusive-player": {
|
||||
"description": "Предотвращает выскакивание плеера при воспроизведении",
|
||||
"name": "Ненавязчивый плеер"
|
||||
},
|
||||
"video-toggle": {
|
||||
"description": "Добавляет кнопку для переключения между режимами видео и песни. Также можно удалить всю вкладку с видео",
|
||||
"menu": {
|
||||
@ -676,7 +839,7 @@
|
||||
"menu": {
|
||||
"visualizer-type": "Вид визуализации"
|
||||
},
|
||||
"name": "Визуалайзер"
|
||||
"name": "Визуализатор"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
108
src/i18n/resources/si.json
Normal file
@ -0,0 +1,108 @@
|
||||
{
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "ප්ලගිනය ක්රියාත්මක කිරීමට අසමත් විය {{pluginName}}::{{contextName}}",
|
||||
"executed-at-ms": "ප්ලගිනය {{pluginName}}::{{contextName}} {{ms}}ms හිදී ක්රියාත්මක කරන ලදී",
|
||||
"initialize-failed": "\"{{pluginName}}\" ප්ලගිනය ආරම්භ කිරීමට අසමත් විය",
|
||||
"load-all": "සියලුම ප්ලගින පූරණය කරමින්",
|
||||
"load-failed": "\"{{pluginName}}\" ප්ලගිනය පූරණය කිරීමට අසමත් විය",
|
||||
"loaded": "\"{{pluginName}}\" ප්ලගිනය පූරණය විය",
|
||||
"unload-failed": "\"{{pluginName}}\" ප්ලගිනය යළි ඉවත් කිරීමට අසාර්ථක විය",
|
||||
"unloaded": "\"{{pluginName}}\" ප්ලගිනය යළි ඉවත් කරන ලදී"
|
||||
}
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"code": "si",
|
||||
"local-name": "සිංහල",
|
||||
"name": "Sinhala"
|
||||
},
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "පූරණය අවසන්. DevTools විවෘත වී ඇත"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "i18n පූරණය කරන ලදී"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "ප්රෝටෝකාල් හරහා විධානය ලැබුණි: \"{{command}}\""
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "css ගොනුව \"{{cssFile}}\" නොපවතී, නොසලකා හරී"
|
||||
},
|
||||
"unresponsive": {
|
||||
"details": "ප්රතිචාර නොදක්වයි, දෝෂයක්\n{{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "යෙදුමේ දත්ත සංචිතය හිස් කරමින්"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "වින්ඩෝව තිරයෙන් පිටත පෙන්වීමට උත්සාහ කළේය, වින්ඩෝවේ ප්රමාණය={{windowSize}}, තිරයෙ ප්රමාණය={{displaySize}}, පිහිටීම={{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "මෙනුව සැගවී ඇත, නැවත පෙන්වීමට 'Alt' යතුර භාවිතා කරන්න. (හෝ In-App මෙනුවේ 'Escape')",
|
||||
"message": "මෙනුව සැගවීම සක්රීය කර ඇත",
|
||||
"title": "මෙනුව සැගවීම සක්රීයයි"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "පසුව",
|
||||
"restart-now": "නැවත ආරම්භ කරන්න"
|
||||
},
|
||||
"detail": "\"{{pluginName}}\" ප්ලගිනය ක්රියාත්මක වීමට නැවත ආරම්භ කිරීමක් අවශ්යයි",
|
||||
"message": "\"{{pluginName}}\" නැවත ආරම්භ කළ යුතුය",
|
||||
"title": "නැවත ආරම්භ කිරීම අවශ්යයි"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "ඉවත් වන්න",
|
||||
"relaunch": "නැවත ආරම්භ කරන්න",
|
||||
"wait": "රැදී සිටින්න"
|
||||
},
|
||||
"detail": "සිදු වූ දේ සම්බන්ධව අපගේ කණගාටුව! කළ යුතු දේ තෝරන්න:",
|
||||
"message": "යෙදුම ප්රතිචාර නොදක්වයි",
|
||||
"title": "වින්ඩෝව ප්රතිචාර නොදක්වයි"
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"disable": "යාවත්කාලීන කිරීම් අක්රිය කරන්න",
|
||||
"download": "බාගත කරන්න",
|
||||
"ok": "හරි"
|
||||
},
|
||||
"detail": "නව අනුවාදයක් ඇති අතර එය මෙයින් බාගන්න {{downloadLink}}",
|
||||
"message": "නව අනුවාදයක් ඇත",
|
||||
"title": "යාවත්කාලීන කිරීමක් ඇත"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"about": "පිළිබදව",
|
||||
"navigation": {
|
||||
"label": "සංචලනය",
|
||||
"submenu": {
|
||||
"copy-current-url": "යොමුව පිටපත් කරගන්න",
|
||||
"go-back": "පිටුපසට",
|
||||
"go-forward": "ඉදිරියට",
|
||||
"quit": "පිටවන්න",
|
||||
"restart": "යෙදුම යලි අරඹන්න"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"label": "විකල්ප",
|
||||
"submenu": {
|
||||
"advanced-options": {
|
||||
"label": "උසස් විකල්ප",
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "යෙදුම් කෑච් යෙදුම ආරම්භයේදී යලි පිහිටුවන්න",
|
||||
"disable-hardware-acceleration": "දෘඩාංග භාවිත වේගවත් කිරීම් අක්රීය කරන්න",
|
||||
"edit-config-json": "config.json සකසන්න"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
553
src/i18n/resources/sl.json
Normal file
@ -0,0 +1,553 @@
|
||||
{
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "Napaka pri inicilizaciji dodatka {{pluginName}}::{{contextName}}",
|
||||
"executed-at-ms": "Dodatek {{pluginName}}::{{contextName}} izvršen pri {{ms}}ms",
|
||||
"initialize-failed": "Napaka pri inicilizaciji dodatka \"{{pluginName}}\"",
|
||||
"load-all": "Nalaganje dodatkov",
|
||||
"load-failed": "Napaka pri nalaganju dodatka \"{{pluginName}}\"",
|
||||
"loaded": "Dodatek \"{{pluginName}}\" naložen",
|
||||
"unload-failed": "Napaka pri raztvorbi dodatka \"{{pluginName}}\"",
|
||||
"unloaded": "Dodatek \"{{pluginName}}\" raztvorjen"
|
||||
}
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"code": "sl",
|
||||
"local-name": "Slovenščina",
|
||||
"name": "Slovenian"
|
||||
},
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "Nalaganje končano. DevTools odprt"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "i18n naložen"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "Prejel ukaz preko protokola: \"{{command}}\""
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "CSS datoteka \"{{cssFile}}\" ne obstaja, ignoriram"
|
||||
},
|
||||
"unresponsive": {
|
||||
"details": "Neodzivna napaka!\n{{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "Čiščenje predpomnilnika"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "Okno se je poskusilo prikazati izven ekrana, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "Meni je skrit, pritisni 'Alt' za odpiranje (ali 'Escape' če uporabljaš In-App Meni)",
|
||||
"message": "Skriti meni je prižgan",
|
||||
"title": "Skrij meni vklopljen"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "Kasneje",
|
||||
"restart-now": "Ponovno zaženi zdaj"
|
||||
},
|
||||
"detail": "\"{{pluginName}}\" dodatek potrebuje ponovni zagon",
|
||||
"message": "\"{{pluginName}}\" je potrebno ponovno zagnati",
|
||||
"title": "Potreben je ponovni zagon"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "Zapri",
|
||||
"relaunch": "Ponovno zaženi",
|
||||
"wait": "Počakaj"
|
||||
},
|
||||
"detail": "Opravičujemo se za nevšečnost! Prosim odločite se kaj narediti:",
|
||||
"message": "Aplikacija se ne odziva",
|
||||
"title": "Okno se ne odziva"
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"disable": "Izklopi posodobitve",
|
||||
"download": "Prenesi",
|
||||
"ok": "OK"
|
||||
},
|
||||
"detail": "Nova verzija je na voljo, lahko jo naložiš na {{downloadLink}}",
|
||||
"message": "Nova verzija je na voljo",
|
||||
"title": "Posodobitev je na voljo"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"about": "O aplikaciji",
|
||||
"navigation": {
|
||||
"label": "Navigacija",
|
||||
"submenu": {
|
||||
"copy-current-url": "Kopiraj trenutni URL",
|
||||
"go-back": "Nazaj",
|
||||
"go-forward": "Naprej",
|
||||
"quit": "Izhod",
|
||||
"restart": "Ponovni zagon"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"label": "Nastavitve",
|
||||
"submenu": {
|
||||
"advanced-options": {
|
||||
"label": "Dodatne nastavitve",
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "Resetiraj predpomnilnik aplikacije ob zagonu",
|
||||
"disable-hardware-acceleration": "Izklopi strojno pospeševanje",
|
||||
"edit-config-json": "Spremeni config.json",
|
||||
"override-user-agent": "Prepiši User-Agent",
|
||||
"restart-on-config-changes": "Ponovni zagon ko se spremeni config",
|
||||
"set-proxy": {
|
||||
"label": "Nastavi proxy",
|
||||
"prompt": {
|
||||
"label": "Napiši Proxy naslov: (pusti prazno, da izklopiš)",
|
||||
"placeholder": "Primer: SOCKS5://127.0.0.1:9999",
|
||||
"title": "Nastavi Proxy"
|
||||
}
|
||||
},
|
||||
"toggle-dev-tools": "Vklopi DevTools"
|
||||
}
|
||||
},
|
||||
"always-on-top": "Vedno na vrhu",
|
||||
"auto-update": "Avtomatsko posodobi",
|
||||
"hide-menu": {
|
||||
"dialog": {
|
||||
"message": "Meni se bo skrit pri naslednjem zagonu, uporabi [Alt] da se prikaže (ali [`] v meniju aplikacije)",
|
||||
"title": "Skrij meni vklopljen"
|
||||
},
|
||||
"label": "Skrij meni"
|
||||
},
|
||||
"language": {
|
||||
"dialog": {
|
||||
"message": "Jezik bo spremenjen po ponovnem zagonu",
|
||||
"title": "Jezik je bil spremenjen"
|
||||
},
|
||||
"label": "Jezik",
|
||||
"submenu": {
|
||||
"to-help-translate": "Želiš pomagati pri prevajanju? Klikni tukaj"
|
||||
}
|
||||
},
|
||||
"resume-on-start": "Predvajaj zadnjo pesem, ko se aplikacija zažene",
|
||||
"single-instance-lock": "Zaklep ene instance",
|
||||
"start-at-login": "Zaženi pri zagonu",
|
||||
"starting-page": {
|
||||
"label": "Začetna stran",
|
||||
"unset": "Ni nastavljeno"
|
||||
},
|
||||
"tray": {
|
||||
"label": "Pladenj",
|
||||
"submenu": {
|
||||
"disabled": "Izklopljeno",
|
||||
"enabled-and-hide-app": "Vklopljeno in skrij",
|
||||
"enabled-and-show-app": "Vklopljeno in pokaži",
|
||||
"play-pause-on-click": "Predvajaj/Pavza z klikom"
|
||||
}
|
||||
},
|
||||
"visual-tweaks": {
|
||||
"label": "Vizualni popravki",
|
||||
"submenu": {
|
||||
"like-buttons": {
|
||||
"default": "Privzeto",
|
||||
"force-show": "Prisilno pokaži",
|
||||
"hide": "Skrij",
|
||||
"label": "Gumbi za všečkanje"
|
||||
},
|
||||
"remove-upgrade-button": "Odstrani gumb za nadgradnjo",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "Prekliči",
|
||||
"remove": "Odstrani"
|
||||
},
|
||||
"remove-theme": "Ali želite odstraniti temo po meri?",
|
||||
"remove-theme-message": "Tema po meri bo odstranjena"
|
||||
},
|
||||
"label": "Tema",
|
||||
"submenu": {
|
||||
"import-css-file": "Vstavi poljubni CSS",
|
||||
"no-theme": "Brez teme"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"enabled": "Vključeno",
|
||||
"label": "Dodatki",
|
||||
"new": "NOVO"
|
||||
},
|
||||
"view": {
|
||||
"label": "Pogled",
|
||||
"submenu": {
|
||||
"force-reload": "Prisilno ponovno naloži",
|
||||
"reload": "Ponovno naloži",
|
||||
"reset-zoom": "Prava velikost",
|
||||
"toggle-fullscreen": "Prikaži cel zaslon",
|
||||
"zoom-in": "Povečaj",
|
||||
"zoom-out": "Pomanjšaj"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"next": "Naprej",
|
||||
"play-pause": "Predvajaj/Pavza",
|
||||
"previous": "Prejšni",
|
||||
"quit": "Izhod",
|
||||
"restart": "Ponovni zagon",
|
||||
"show": "Pokaži okno",
|
||||
"tooltip": {
|
||||
"default": "YouTube Glasba",
|
||||
"with-song-info": "YouTube Glasba: {{artist}} - {{title}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "Če se predvaja oglas se zvok utišja. Prav tako se hitrost predvajanja nastavi na 16 krat",
|
||||
"name": "Pospeševanje oglasov"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "Izklopi vse oglase in sledenje",
|
||||
"menu": {
|
||||
"blocker": "Blokator"
|
||||
},
|
||||
"name": "Blokator reklam"
|
||||
},
|
||||
"album-actions": {
|
||||
"description": "Doda Undislike, Dislike, Like, in Unlike gumbe vsem glasbam v seznamu predvajanja ali albumu",
|
||||
"name": "Nastavitve albuma"
|
||||
},
|
||||
"album-color-theme": {
|
||||
"description": "Doda dinamično temo in vizualne efekte glede na barve albuma",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "Razmerje barv",
|
||||
"submenu": {
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Barvna tema Albuma"
|
||||
},
|
||||
"ambient-mode": {
|
||||
"description": "Doda barvni učinek iz video posnetka na ozadje",
|
||||
"menu": {
|
||||
"blur-amount": {
|
||||
"label": "Stopnja zameglitve",
|
||||
"submenu": {
|
||||
"pixels": "{{blurAmount}} pikslov"
|
||||
}
|
||||
},
|
||||
"buffer": {
|
||||
"label": "Medpomnilnik",
|
||||
"submenu": {
|
||||
"buffer": "{{buffer}}"
|
||||
}
|
||||
},
|
||||
"opacity": {
|
||||
"label": "Prozornost",
|
||||
"submenu": {
|
||||
"percent": "{{opacity}}%"
|
||||
}
|
||||
},
|
||||
"quality": {
|
||||
"label": "Kvaliteta",
|
||||
"submenu": {
|
||||
"pixels": "{{quality}} pikslov"
|
||||
}
|
||||
},
|
||||
"size": {
|
||||
"label": "Velikost",
|
||||
"submenu": {
|
||||
"percent": "{{size}}%"
|
||||
}
|
||||
},
|
||||
"smoothness-transition": {
|
||||
"label": "Gladkost prehoda",
|
||||
"submenu": {
|
||||
"during": "Med {{interpolationTime}} s"
|
||||
}
|
||||
},
|
||||
"use-fullscreen": {
|
||||
"label": "Uporablja celoten zaslon"
|
||||
}
|
||||
},
|
||||
"name": "Ambienten način"
|
||||
},
|
||||
"api-server": {
|
||||
"description": "Doda API strežnik za nadzor predvajalnika",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "Dovoli",
|
||||
"deny": "Zavrni"
|
||||
},
|
||||
"message": "Dovolite {{ID}} ({{origin}}) da dostopa do API-ja?",
|
||||
"title": "Prošnja za avtomatizacijo API-ja"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Strategija avtorizacije",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "Avtorizacija ob prvem zahtevku"
|
||||
},
|
||||
"none": {
|
||||
"label": "Ni avtorizacije"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "Hostname"
|
||||
},
|
||||
"port": {
|
||||
"label": "Port"
|
||||
}
|
||||
},
|
||||
"name": "API strežnik [Beta]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "Vnesite hostname (npr. 0.0.0.0) za API strežnik:",
|
||||
"title": "Hostname"
|
||||
},
|
||||
"port": {
|
||||
"label": "Vnesite port za API strežnik:",
|
||||
"title": "Port"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Doda kompresijo zvoka (izenači ravni zvoka, zniža glasnost najglasnejših delov in zviša najtišje)",
|
||||
"name": "Kompresija zvoka"
|
||||
},
|
||||
"blur-nav-bar": {
|
||||
"description": "Naredi navigacijsko vrstico prozorno in zamegljeno",
|
||||
"name": "Zameglji navigacijsko vrstico"
|
||||
},
|
||||
"bypass-age-restrictions": {
|
||||
"description": "Preskoči YouTubo-vo preverjanje starosti",
|
||||
"name": "Preskoči starostno omejitev"
|
||||
},
|
||||
"captions-selector": {
|
||||
"description": "Izberi podnapise za YouTube Music zvočne posnetke",
|
||||
"menu": {
|
||||
"autoload": "Avtomatsko uporabi zadnje izbrane podnapise",
|
||||
"disable-captions": "Avtomatsko brez podnapisov"
|
||||
},
|
||||
"name": "Izberi podnapise",
|
||||
"prompt": {
|
||||
"selector": {
|
||||
"label": "Trenutni jezik podnapisov: {{language}}",
|
||||
"none": "Brez",
|
||||
"title": "Izberi jezik podnapisov"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"title": "Odpri izbiro podnapisov"
|
||||
}
|
||||
},
|
||||
"compact-sidebar": {
|
||||
"description": "Vedno izberi kompakten način stranske vrstice",
|
||||
"name": "Kompaktna stranska vrstica"
|
||||
},
|
||||
"crossfade": {
|
||||
"description": "Bledenje med pesmimi",
|
||||
"menu": {
|
||||
"advanced": "Dodatno"
|
||||
},
|
||||
"name": "Bledenje med pesmimi [Beta]",
|
||||
"prompt": {
|
||||
"options": {
|
||||
"multi-input": {
|
||||
"fade-in-duration": "Čas zbledenja (v pesem) (ms)",
|
||||
"fade-out-duration": "Čas zbledenja (izven pesemi) (ms)",
|
||||
"fade-scaling": {
|
||||
"label": "Zbledi skaliranje",
|
||||
"linear": "Linearno",
|
||||
"logarithmic": "Logaritmično"
|
||||
},
|
||||
"seconds-before-end": "Bledenje (crossfade) N sekund pred koncem"
|
||||
},
|
||||
"title": "Možnosti zbledenja"
|
||||
}
|
||||
}
|
||||
},
|
||||
"disable-autoplay": {
|
||||
"description": "Začne pesem v zaustavljenem načinu",
|
||||
"menu": {
|
||||
"apply-once": "Uporabi samo ob zagonu"
|
||||
},
|
||||
"name": "Onemogoči samodejno predvajanje"
|
||||
},
|
||||
"discord": {
|
||||
"backend": {
|
||||
"already-connected": "Poizkus povezave z aktivno povezavo",
|
||||
"connected": "Povezan na Discord",
|
||||
"disconnected": "Povezava z Discord-om prekinjena"
|
||||
},
|
||||
"description": "Pokaži svojim prijateljem kaj poslušaš z bogato prisotnostjo (Rich Presence)",
|
||||
"menu": {
|
||||
"auto-reconnect": "Samodejna unovična povezava",
|
||||
"clear-activity": "Počisti dejavnost",
|
||||
"clear-activity-after-timeout": "Počisti dejavnost po časovni omejitvi",
|
||||
"connected": "Povezan",
|
||||
"disconnected": "Prekinjena povezava",
|
||||
"hide-duration-left": "Skrij preostali čas",
|
||||
"hide-github-button": "Skrij povezavo do GitHub-a",
|
||||
"play-on-youtube-music": "Predvajaj v YouTube Music",
|
||||
"set-inactivity-timeout": "Nastavite časovno omejitev neaktivnosti"
|
||||
},
|
||||
"name": "Discord bogata prisotnost (Rich Presence)",
|
||||
"prompt": {
|
||||
"set-inactivity-timeout": {
|
||||
"label": "Vnesite časovno omejitev neaktivnosti v sekundah:",
|
||||
"title": "Nastavite časovno omejitev nedejavnosti"
|
||||
}
|
||||
}
|
||||
},
|
||||
"downloader": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"error": {
|
||||
"buttons": {
|
||||
"ok": "OK"
|
||||
},
|
||||
"message": "Uff! Se opravičujemo, prenos neuspešen…",
|
||||
"title": "Napaka v prenosu!"
|
||||
},
|
||||
"start-download-playlist": {
|
||||
"buttons": {
|
||||
"ok": "OK"
|
||||
},
|
||||
"detail": "({{playlistSize}} pesmi)",
|
||||
"message": "Prenašanje seznama {{playlistTitle}}",
|
||||
"title": "Prenos se je začel"
|
||||
}
|
||||
},
|
||||
"feedback": {
|
||||
"conversion-progress": "Konverzija: {{percent}}%",
|
||||
"converting": "Pretvarjanje…",
|
||||
"done": "Končano: {{filePath}}",
|
||||
"download-info": "Prenašanje {{artist}} - {{title}} [{{videoId}}",
|
||||
"download-progress": "Prenos: {{percent}}%",
|
||||
"downloading": "Prenašanje…",
|
||||
"downloading-counter": "Prenašanje {{current}}/{{total}}…",
|
||||
"downloading-playlist": "Prenašanje seznama \"{{playlistTitle}}\" - {{playlistSize}} pesmi ({{playlistId}})",
|
||||
"error-while-downloading": "Napaka pri prenosu \"{{author}} - {{title}}\": {{error}}",
|
||||
"folder-already-exists": "Ta mapa {{playlistFolder}} že obstaja",
|
||||
"getting-playlist-info": "Pridobivam informacije o seznamu…",
|
||||
"loading": "Nalaganje…",
|
||||
"playlist-has-only-one-song": "Ta seznam ima samo eno pesem, uporabljam direkten prenos",
|
||||
"playlist-id-not-found": "ID seznama ni najden",
|
||||
"playlist-is-empty": "Seznam je prazen",
|
||||
"playlist-is-mix-or-private": "Napaka v pridobivanju informacij o seznamu: poskrbite da seznam ni zaseben ali \"Mixed for you\" seznam\n\n{{error}}",
|
||||
"preparing-file": "Pripravljanje datoteke…",
|
||||
"saving": "Shranjujem…",
|
||||
"trying-to-get-playlist-id": "Poizkušam pridobiti ID seznama: {{playlistId}}",
|
||||
"video-id-not-found": "Videoposnetek ni najden",
|
||||
"writing-id3": "Zapisujem ID3 oznake…"
|
||||
}
|
||||
},
|
||||
"description": "Prenese MP3 / izviren zvok direktno iz vmesnika",
|
||||
"menu": {
|
||||
"choose-download-folder": "Izberite mapo s prenosi",
|
||||
"download-finish-settings": {
|
||||
"label": "Prenesi ob koncu",
|
||||
"prompt": {
|
||||
"last-percent": "Po x odstotkov",
|
||||
"last-seconds": "Zadnjih x sekund",
|
||||
"title": "Nastavite čas prenosa"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "Napredno",
|
||||
"enabled": "Omogočen",
|
||||
"mode": "Časovni način",
|
||||
"percent": "Odstotek",
|
||||
"seconds": "Sekunde"
|
||||
}
|
||||
},
|
||||
"download-playlist": "Prenesi seznam",
|
||||
"presets": "Prednastavitve",
|
||||
"skip-existing": "Preskoči obstoječe datoteke"
|
||||
},
|
||||
"name": "Prenaševalec",
|
||||
"renderer": {
|
||||
"can-not-update-progress": "Nemorem osvežiti napredka"
|
||||
},
|
||||
"templates": {
|
||||
"button": "Prenos"
|
||||
}
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "Drsnik za glasnost naredi eksponenten, da bo lažje izbrati nižje glasnosti.",
|
||||
"name": "Eksponentna glasnost"
|
||||
},
|
||||
"in-app-menu": {
|
||||
"description": "Menijem doda eleganten videz v temnih barvah ali barvah albuma",
|
||||
"menu": {
|
||||
"hide-dom-window-controls": "Skrije DOM gumbe za okno"
|
||||
},
|
||||
"name": "Meni v aplikaciji"
|
||||
},
|
||||
"lumiastream": {
|
||||
"description": "Doda podporo za Lumia pretočno predvajanje",
|
||||
"name": "Lumina pretočno predavanje [Beta]"
|
||||
},
|
||||
"lyrics-genius": {
|
||||
"description": "Doda podporo besedil za večino pesmi",
|
||||
"menu": {
|
||||
"romanized-lyrics": "Romanizerana besedila"
|
||||
},
|
||||
"name": "Besedila Genius",
|
||||
"renderer": {
|
||||
"fetched-lyrics": "Prestregel besedila za Genius"
|
||||
}
|
||||
},
|
||||
"music-together": {
|
||||
"description": "Delite seznam predvajanja z drugimi. Ko gostitelj predvaja skladbo, bodo vsi ostali slišali isto skladbo",
|
||||
"dialog": {
|
||||
"enter-host": "Vnesite Host ID"
|
||||
},
|
||||
"internal": {
|
||||
"save": "Shrani",
|
||||
"track-source": "Vir pesmi",
|
||||
"unknown-user": "Neznan uporabnik"
|
||||
},
|
||||
"menu": {
|
||||
"click-to-copy-id": "Kopiraj Host ID",
|
||||
"close": "Zapri Glasba Skupaj",
|
||||
"connected-users": "Povezani uporabniki",
|
||||
"disconnect": "Prekini povezavo z Pesmi Skupaj",
|
||||
"empty-user": "Ni povezanih uporabnikov",
|
||||
"host": "Gkasba Skupaj gostitelj",
|
||||
"join": "Pridruži se Glasba Skupaj",
|
||||
"permission": {
|
||||
"all": "Dovoli da gosti nadzorujejo seznam predvajanja in predvajalnik",
|
||||
"host-only": "Samo gostitelj lahko spreminja seznam predvajanja in predvajalnik",
|
||||
"playlist": "Dovoli da gostje nadzorujejo predvajalnik"
|
||||
},
|
||||
"set-permission": "Spremeni dovoljenje nadzora",
|
||||
"status": {
|
||||
"disconnected": "Odklopljen",
|
||||
"guest": "Povezan kot Gost",
|
||||
"host": "Povezan kot Gostitelj"
|
||||
}
|
||||
},
|
||||
"name": "Gkasba Skupaj [Beta]",
|
||||
"toast": {
|
||||
"add-song-failed": "Skladba ni bila dodana",
|
||||
"closed": "Glasba Skupaj zaprto",
|
||||
"disconnected": "Gkasba Skupaj odklopljena",
|
||||
"host-failed": "Gkasba Skupaj nisem mogel gostiti",
|
||||
"id-copied": "Host ID je kopiran v odložišče",
|
||||
"id-copy-failed": "Host ID ni bilo mogoče kopirati"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
7
src/i18n/resources/sr.json
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"language": {
|
||||
"code": "sr",
|
||||
"local-name": "Српски",
|
||||
"name": "Serbian"
|
||||
}
|
||||
}
|
||||
229
src/i18n/resources/sv.json
Normal file
@ -0,0 +1,229 @@
|
||||
{
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "Misslyckades med att köra plugin {{pluginName}}::{{contextName}}",
|
||||
"executed-at-ms": "Plugin {{pluginName}}::{{contextName}} kördes på {{ms}} ms",
|
||||
"initialize-failed": "Misslyckades med att initialisera pluginen \"{{pluginName}}\"",
|
||||
"load-all": "Laddar alla pluginer",
|
||||
"load-failed": "Misslyckades med att ladda pluginen \"{{pluginName}}\"",
|
||||
"loaded": "Pluginen \"{{pluginName}}\" laddad",
|
||||
"unload-failed": "Misslyckades med att avlasta pluginen \"{{pluginName}}\"",
|
||||
"unloaded": "Pluginen \"{{pluginName}}\" avlastad"
|
||||
}
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"code": "sv",
|
||||
"local-name": "Svenska",
|
||||
"name": "Swedish"
|
||||
},
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "Laddning klar. DevTools öppnad"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "i18n laddad"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "Mottog kommando via protokoll: \"{{command}}\""
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "CSS-filen \"{{cssFile}}\" finns inte, ignorerar"
|
||||
},
|
||||
"unresponsive": {
|
||||
"details": "Oresponsivt fel!\n{{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "Rensar appens cache"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "Fönstret försökte rendera utanför skärmen, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "Menyn är dold, använd 'Alt' för att visa den (eller 'Escape' om du använder inbyggd meny)",
|
||||
"message": "Dölj Meny är aktiverat",
|
||||
"title": "Dölj Meny aktiverad"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "Senare",
|
||||
"restart-now": "Starta om nu"
|
||||
},
|
||||
"detail": "\"{{pluginName}}\" pluginen kräver en omstart för att träda i kraft",
|
||||
"message": "\"{{pluginName}}\" behöver startas om",
|
||||
"title": "Omstart krävs"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "Avsluta",
|
||||
"relaunch": "Starta om",
|
||||
"wait": "Vänta"
|
||||
},
|
||||
"detail": "Vi beklagar besväret! Välj vad du vill göra:",
|
||||
"message": "Programmet svarar inte",
|
||||
"title": "Fönstret svarar inte"
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"disable": "Stäng av uppdateringar",
|
||||
"download": "Ladda ned",
|
||||
"ok": "OK"
|
||||
},
|
||||
"detail": "En ny version är tillgänglig och kan laddas ned på {{downloadLink}}",
|
||||
"message": "En ny version är tillgänglig",
|
||||
"title": "Uppdatering tillgänglig"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"about": "Om",
|
||||
"navigation": {
|
||||
"label": "Navigering",
|
||||
"submenu": {
|
||||
"copy-current-url": "Kopiera nuvarande länk",
|
||||
"go-back": "Föregående",
|
||||
"go-forward": "Nästa",
|
||||
"quit": "Lämna",
|
||||
"restart": "Starta om appen"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"label": "Valmöjligheter",
|
||||
"submenu": {
|
||||
"advanced-options": {
|
||||
"label": "Avancerade valmöjligheter",
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "Nollställ appcache när appen startar",
|
||||
"disable-hardware-acceleration": "Stäng av hårdvaruacceleration",
|
||||
"edit-config-json": "Redigera config.json",
|
||||
"override-user-agent": "Ersätt User-Agent",
|
||||
"restart-on-config-changes": "Starta om vid konfigurationsändringar",
|
||||
"set-proxy": {
|
||||
"label": "Ställ in proxy",
|
||||
"prompt": {
|
||||
"label": "Ange Proxy-adress: (lämna tomt för att inaktivera)",
|
||||
"placeholder": "Exempel: SOCKS5://127.0.0.1:9999",
|
||||
"title": "Ställ in proxy"
|
||||
}
|
||||
},
|
||||
"toggle-dev-tools": "Utvecklarverktyg"
|
||||
}
|
||||
},
|
||||
"always-on-top": "Alltid överst",
|
||||
"auto-update": "Uppdatera automatiskt",
|
||||
"language": {
|
||||
"dialog": {
|
||||
"message": "Språket ändras efter omstart",
|
||||
"title": "Språket har ändrats"
|
||||
},
|
||||
"label": "Språk"
|
||||
},
|
||||
"resume-on-start": "Fortsätt spela när appen öppnas"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"navigation": {
|
||||
"name": "Navigering"
|
||||
},
|
||||
"no-google-login": {
|
||||
"name": "Inget Google Login"
|
||||
},
|
||||
"notifications": {
|
||||
"name": "Notiser"
|
||||
},
|
||||
"picture-in-picture": {
|
||||
"menu": {
|
||||
"hotkey": {
|
||||
"label": "Snabbkommando",
|
||||
"prompt": {
|
||||
"keybind-options": {
|
||||
"hotkey": "Snabbkommando"
|
||||
},
|
||||
"title": "Bild-I-Bild genväg"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Bild-I-Bild",
|
||||
"templates": {
|
||||
"button": "Bild-i-bild"
|
||||
}
|
||||
},
|
||||
"playback-speed": {
|
||||
"name": "Uppspelningshastighet",
|
||||
"templates": {
|
||||
"button": "Hasighet"
|
||||
}
|
||||
},
|
||||
"precise-volume": {
|
||||
"prompt": {
|
||||
"global-shortcuts": {
|
||||
"keybind-options": {
|
||||
"decrease": "Minska Volym",
|
||||
"increase": "Öka Volym"
|
||||
}
|
||||
},
|
||||
"volume-steps": {
|
||||
"title": "Volymsteg"
|
||||
}
|
||||
}
|
||||
},
|
||||
"quality-changer": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"quality-changer": {
|
||||
"detail": "Nuvarande kvalité: {{quality}}",
|
||||
"message": "Välj Video Kvalité:",
|
||||
"title": "Välj Video Kvalité"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"scrobbler": {
|
||||
"prompt": {
|
||||
"lastfm": {
|
||||
"api-key": "Last.fm API nyckel"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": {
|
||||
"title": "ListenBrainz token"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"shortcuts": {
|
||||
"prompt": {
|
||||
"keybind": {
|
||||
"keybind-options": {
|
||||
"next": "Nästa",
|
||||
"play-pause": "Spela / Pausa",
|
||||
"previous": "Föregående"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"video-toggle": {
|
||||
"menu": {
|
||||
"align": {
|
||||
"submenu": {
|
||||
"left": "Vänster",
|
||||
"middle": "Mitten",
|
||||
"right": "Höger"
|
||||
}
|
||||
},
|
||||
"mode": {
|
||||
"submenu": {
|
||||
"disabled": "Inaktiverad"
|
||||
}
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"button": "Låt"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
836
src/i18n/resources/ta.json
Normal file
@ -0,0 +1,836 @@
|
||||
{
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "சொருகி செயல்படுத்துவதில் தோல்வி {{pluginName}} :: {{contextName}}",
|
||||
"executed-at-ms": "சொருகி {{pluginName}} :: {{contextName}} {{ms}} ms இல் செயல்படுத்தப்படுகிறது",
|
||||
"initialize-failed": "சொருகி தொடங்குவதில் தோல்வி \"{{pluginName}}\"",
|
||||
"load-all": "அனைத்து செருகுநிரல்களையும் ஏற்றுகிறது",
|
||||
"load-failed": "சொருகி ஏற்றுவதில் தோல்வி \"{{pluginName}}\"",
|
||||
"loaded": "சொருகி \"{{pluginName}}\" ஏற்றப்பட்டது",
|
||||
"unload-failed": "சொருகி \"{{pluginName}}\"",
|
||||
"unloaded": "சொருகி \"{{pluginName}}\" இறக்கப்பட்டது"
|
||||
}
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"code": "ta",
|
||||
"local-name": "தமிழ்",
|
||||
"name": "Tamil"
|
||||
},
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "ஏற்றுதல் முடிந்தது. டெவ்டூல்ச் திறக்கப்பட்டது"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "ப18ல் ஏற்றப்பட்டது"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "நெறிமுறை மீது கட்டளை பெறப்பட்டது: \"{{command}}\""
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "சிஎச்எச் கோப்பு \"{{cssFile}}\" புறக்கணிக்கிறது"
|
||||
},
|
||||
"unresponsive": {
|
||||
"details": "பதிலளிக்காத பிழை!\n {{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "பயன்பாட்டு தற்காலிக சேமிப்பை அழித்தல்"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "சாளரம் ஆஃப்ச்கிரீன், சாளரங்கள் = {{windowSize}}, டிச்ப்ளேச்ச் = {{displaySize}}, நிலை = {{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "பட்டியல் மறைக்கப்பட்டுள்ளது, அதைக் காட்ட 'ஆல்ட்' ஐப் பயன்படுத்தவும் (அல்லது பயன்பாட்டில் மெனுவைப் பயன்படுத்தினால் 'தப்பிக்க')",
|
||||
"message": "மறை பட்டியல் இயக்கப்பட்டது",
|
||||
"title": "பட்டியல் இயக்கப்பட்டது"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "பின்னர்",
|
||||
"restart-now": "இப்போது மறுதொடக்கம் செய்யுங்கள்"
|
||||
},
|
||||
"detail": "\"{{pluginName}}\" சொருகி நடைமுறைக்கு மறுதொடக்கம் தேவை",
|
||||
"message": "\"{{pluginName}}\" மறுதொடக்கம் செய்ய வேண்டும்",
|
||||
"title": "மறுதொடக்கம் தேவை"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "வெளியேறு",
|
||||
"relaunch": "மீண்டும் தொடங்கவும்",
|
||||
"wait": "காத்திருங்கள்"
|
||||
},
|
||||
"detail": "சிரமத்திற்கு வருந்துகிறோம்! என்ன செய்ய வேண்டும் என்பதைத் தேர்வுசெய்க:",
|
||||
"message": "பயன்பாடு பதிலளிக்கவில்லை",
|
||||
"title": "சாளரம் பதிலளிக்கவில்லை"
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"disable": "புதுப்பிப்புகளை முடக்கு",
|
||||
"download": "பதிவிறக்கம்",
|
||||
"ok": "சரி"
|
||||
},
|
||||
"detail": "ஒரு புதிய பதிப்பு கிடைக்கிறது மற்றும் {{downloadLink}} இல் பதிவிறக்கம் செய்யலாம்",
|
||||
"message": "புதிய பதிப்பு கிடைக்கிறது",
|
||||
"title": "புதுப்பிப்பு கிடைக்கிறது"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"about": "பற்றி",
|
||||
"navigation": {
|
||||
"label": "வானோடல்",
|
||||
"submenu": {
|
||||
"copy-current-url": "தற்போதைய முகவரி ஐ நகலெடுக்கவும்",
|
||||
"go-back": "திரும்பிச் செல்லுங்கள்",
|
||||
"go-forward": "முன்னோக்கிச் செல்லுங்கள்",
|
||||
"quit": "வெளியேறு",
|
||||
"restart": "பயன்பாட்டை மறுதொடக்கம் செய்யுங்கள்"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"label": "விருப்பங்கள்",
|
||||
"submenu": {
|
||||
"advanced-options": {
|
||||
"label": "மேம்பட்ட விருப்பங்கள்",
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "பயன்பாடு தொடங்கும் போது பயன்பாட்டு தற்காலிக சேமிப்பை மீட்டமைக்கவும்",
|
||||
"disable-hardware-acceleration": "வன்பொருள் முடுக்கம் முடக்கு",
|
||||
"edit-config-json": "Config.json ஐத் திருத்து",
|
||||
"override-user-agent": "பயனர்-முகவர் மீறவும்",
|
||||
"restart-on-config-changes": "கட்டமைப்பு மாற்றங்களை மறுதொடக்கம் செய்யுங்கள்",
|
||||
"set-proxy": {
|
||||
"label": "பதிலாள் அமைக்கவும்",
|
||||
"prompt": {
|
||||
"label": "பதிலாள் முகவரியை உள்ளிடவும்: (முடக்க காலியாக விடவும்)",
|
||||
"placeholder": "எடுத்துக்காட்டு: SOCKS5: //127.0.0.1: 9999",
|
||||
"title": "பதிலாள் அமைக்கவும்"
|
||||
}
|
||||
},
|
||||
"toggle-dev-tools": "டெவ்டூல்சை மாற்றவும்"
|
||||
}
|
||||
},
|
||||
"always-on-top": "எப்போதும் மேலே",
|
||||
"auto-update": "ஆட்டோ புதுப்பிப்பு",
|
||||
"hide-menu": {
|
||||
"dialog": {
|
||||
"message": "அடுத்த துவக்கத்தில் பட்டியல் மறைக்கப்படும், அதைக் காட்ட [Alt] ஐப் பயன்படுத்தவும் (அல்லது App-menu ஐப் பயன்படுத்தினால் [அல்லது பின்னணி [`])",
|
||||
"title": "பட்டியல் இயக்கப்பட்டது"
|
||||
},
|
||||
"label": "மெனுவை மறைக்கவும்"
|
||||
},
|
||||
"language": {
|
||||
"dialog": {
|
||||
"message": "மறுதொடக்கம் செய்த பிறகு மொழி மாற்றப்படும்",
|
||||
"title": "மொழி மாற்றப்பட்டது"
|
||||
},
|
||||
"label": "மொழி",
|
||||
"submenu": {
|
||||
"to-help-translate": "மொழிபெயர்க்க உதவ வேண்டுமா? இங்கே சொடுக்கு செய்க"
|
||||
}
|
||||
},
|
||||
"resume-on-start": "பயன்பாடு தொடங்கும் போது கடைசி பாடலை மீண்டும் தொடங்குங்கள்",
|
||||
"single-instance-lock": "ஒற்றை நிகழ்வு பூட்டு",
|
||||
"start-at-login": "உள்நுழைவில் தொடங்கவும்",
|
||||
"starting-page": {
|
||||
"label": "தொடக்க பக்கம்",
|
||||
"unset": "அமைக்கப்படாதது"
|
||||
},
|
||||
"tray": {
|
||||
"label": "தட்டு",
|
||||
"submenu": {
|
||||
"disabled": "முடக்கப்பட்டது",
|
||||
"enabled-and-hide-app": "இயக்கப்பட்ட மற்றும் பயன்பாட்டை மறைக்கவும்",
|
||||
"enabled-and-show-app": "இயக்கப்பட்டது மற்றும் பயன்பாட்டைக் காட்டு",
|
||||
"play-pause-on-click": "சொடுக்கு செய்யவும்/இடைநிறுத்தவும்"
|
||||
}
|
||||
},
|
||||
"visual-tweaks": {
|
||||
"label": "காட்சி மாற்றங்கள்",
|
||||
"submenu": {
|
||||
"like-buttons": {
|
||||
"default": "இயல்புநிலை",
|
||||
"force-show": "படை நிகழ்ச்சி",
|
||||
"hide": "மறை",
|
||||
"label": "பொத்தான்கள் போன்றவை"
|
||||
},
|
||||
"remove-upgrade-button": "மேம்படுத்தல் பொத்தானை அகற்று",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "ரத்துசெய்",
|
||||
"remove": "அகற்று"
|
||||
},
|
||||
"remove-theme": "தனிப்பயன் கருப்பொருளை அகற்ற விரும்புகிறீர்களா?",
|
||||
"remove-theme-message": "இது தனிப்பயன் கருப்பொருளை அகற்றும்"
|
||||
},
|
||||
"label": "கருப்பொருள்",
|
||||
"submenu": {
|
||||
"import-css-file": "தனிப்பயன் சிஎச்எச் கோப்பை இறக்குமதி செய்க",
|
||||
"no-theme": "கருப்பொருள் இல்லை"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"enabled": "இயக்கப்பட்டது",
|
||||
"label": "செருகுநிரல்கள்",
|
||||
"new": "புதிய"
|
||||
},
|
||||
"view": {
|
||||
"label": "பார்வை",
|
||||
"submenu": {
|
||||
"force-reload": "படை மறுஏற்றம்",
|
||||
"reload": "ஏற்றவும்",
|
||||
"reset-zoom": "உண்மையான அளவு",
|
||||
"toggle-fullscreen": "முழுத் திரையை மாற்றவும்",
|
||||
"zoom-in": "பெரிதாக்கு",
|
||||
"zoom-out": "சிறிதாக்கு"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"next": "அடுத்தது",
|
||||
"play-pause": "விளையாடு/இடைநிறுத்தம்",
|
||||
"previous": "முந்தைய",
|
||||
"quit": "வெளியேறு",
|
||||
"restart": "பயன்பாட்டை மறுதொடக்கம் செய்யுங்கள்",
|
||||
"show": "சாளரத்தைக் காட்டு",
|
||||
"tooltip": {
|
||||
"default": "யூடியூப் இசை",
|
||||
"with-song-info": "YouTube இசை: {{artist}} - {{title}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "ஒரு விளம்பரம் விளையாடினால் அது ஆடியோவை முடக்குகிறது மற்றும் பின்னணி வேகத்தை 16x ஆக அமைக்கிறது",
|
||||
"name": "விளம்பர விரைவு"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "எல்லா விளம்பரங்களையும் தடுத்து பெட்டியிலிருந்து கண்காணிக்கவும்",
|
||||
"menu": {
|
||||
"blocker": "தடுப்பான்"
|
||||
},
|
||||
"name": "விளம்பர தடுப்பான்"
|
||||
},
|
||||
"album-actions": {
|
||||
"description": "பிளேலிச்ட் அல்லது ஆல்பத்தில் உள்ள அனைத்து பாடல்களுக்கும் இதைப் பயன்படுத்த பொத்தான்கள் போன்றவற்றைச் சேர்க்கவும், விரும்பாதது, போன்றவை, மற்றும் பொத்தான்களைப் போலல்லாமல் சேர்க்கவும்",
|
||||
"name": "ஆல்பம் செயல்கள்"
|
||||
},
|
||||
"album-color-theme": {
|
||||
"description": "வண்ணத் தட்டு ஆல்பத்தின் அடிப்படையில் மாறும் கருப்பொருள் மற்றும் காட்சி விளைவுகளைப் பயன்படுத்துகிறது",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "வண்ண கலவை விகிதம்",
|
||||
"submenu": {
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "ஆல்பம் வண்ண கருப்பொருள்"
|
||||
},
|
||||
"ambient-mode": {
|
||||
"description": "வீடியோவிலிருந்து மென்மையான வண்ணங்களை உங்கள் திரையின் பின்னணியில் போடுவதன் மூலம் லைட்டிங் விளைவைப் பயன்படுத்துகிறது",
|
||||
"menu": {
|
||||
"blur-amount": {
|
||||
"label": "மங்கலான தொகை",
|
||||
"submenu": {
|
||||
"pixels": "{{blurAmount}} படப்புள்ளிகள்"
|
||||
}
|
||||
},
|
||||
"buffer": {
|
||||
"label": "இடையக",
|
||||
"submenu": {
|
||||
"buffer": "{{buffer}}"
|
||||
}
|
||||
},
|
||||
"opacity": {
|
||||
"label": "ஒளிபுகாநிலை",
|
||||
"submenu": {
|
||||
"percent": "{{opacity}}%"
|
||||
}
|
||||
},
|
||||
"quality": {
|
||||
"label": "தகுதி",
|
||||
"submenu": {
|
||||
"pixels": "{{quality}} படப்புள்ளிகள்"
|
||||
}
|
||||
},
|
||||
"size": {
|
||||
"label": "அளவு",
|
||||
"submenu": {
|
||||
"percent": "{{size}}%"
|
||||
}
|
||||
},
|
||||
"smoothness-transition": {
|
||||
"label": "மென்மையான மாற்றம்",
|
||||
"submenu": {
|
||||
"during": "{{interpolationTime}} s இன் போது"
|
||||
}
|
||||
},
|
||||
"use-fullscreen": {
|
||||
"label": "முழுத்திரை பயன்படுத்துதல்"
|
||||
}
|
||||
},
|
||||
"name": "சுற்றுப்புற முறை"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "6K ஆய்வகங்களால் இப்போது விட்செட்டில் விளையாடும் Amuse க்கு YouTube இசை ஆதரவை சேர்க்கிறது",
|
||||
"name": "பொழுதுபோக்கு",
|
||||
"response": {
|
||||
"query": "பநிஇ சேவையகம் இயங்குகிறது. பாடல் தகவலைப் பெற /வினவல்."
|
||||
}
|
||||
},
|
||||
"api-server": {
|
||||
"description": "பிளேயரைக் கட்டுப்படுத்த பநிஇ சேவையகத்தைச் சேர்க்கிறது",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "இசைவு",
|
||||
"deny": "மறுக்கவும்"
|
||||
},
|
||||
"message": "பநிஇ ஐ அணுக {{ID}} ({{origin}}) அனுமதிக்கவா?",
|
||||
"title": "பநிஇ அங்கீகார கோரிக்கை"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "அங்கீகார உத்தி",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "முதல் கோரிக்கையின் பேரில் ஏற்பு"
|
||||
},
|
||||
"none": {
|
||||
"label": "ஏற்பு இல்லை"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "புரவலன்பெயர்"
|
||||
},
|
||||
"port": {
|
||||
"label": "துறைமுகம்"
|
||||
}
|
||||
},
|
||||
"name": "பநிஇ சேவையகம் [பீட்டா]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "பநிஇ சேவையகத்திற்கு ஓச்ட்பெயரை (0.0.0.0 போன்றவை) உள்ளிடவும்:",
|
||||
"title": "புரவலன்பெயர்"
|
||||
},
|
||||
"port": {
|
||||
"label": "பநிஇ சேவையகத்திற்கான துறைமுகத்தை உள்ளிடவும்:",
|
||||
"title": "துறைமுகம்"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "ஆடியோவுக்கு சுருக்கத்தைப் பயன்படுத்துங்கள் (சமிக்ஞையின் உரத்த பகுதிகளின் அளவைக் குறைத்து, மென்மையான பகுதிகளின் அளவை உயர்த்துகிறது)",
|
||||
"name": "ஆடியோ அமுக்கி"
|
||||
},
|
||||
"blur-nav-bar": {
|
||||
"description": "வழிசெலுத்தல் பட்டியை வெளிப்படையானதாகவும் மங்கலாகவும் ஆக்குகிறது",
|
||||
"name": "மங்கலான வழிசெலுத்தல் பட்டி"
|
||||
},
|
||||
"bypass-age-restrictions": {
|
||||
"description": "YouTube அகவை சரிபார்ப்பு பைபாச்",
|
||||
"name": "அகவை கட்டுப்பாடுகள் பைபாச்"
|
||||
},
|
||||
"captions-selector": {
|
||||
"description": "YouTube இசை ஆடியோ டிராக்குகளுக்கான தலைப்பு தேர்வாளர்",
|
||||
"menu": {
|
||||
"autoload": "கடைசியாக பயன்படுத்தப்பட்ட தலைப்பை தானாகத் தேர்ந்தெடுக்கவும்",
|
||||
"disable-captions": "முன்னிருப்பாக தலைப்புகள் இல்லை"
|
||||
},
|
||||
"name": "தலைப்புகள் தேர்வாளர்",
|
||||
"prompt": {
|
||||
"selector": {
|
||||
"label": "தற்போதைய தலைப்பு மொழி: {{language}}",
|
||||
"none": "எதுவுமில்லை",
|
||||
"title": "தலைப்பு மொழியைத் தேர்ந்தெடுக்கவும்"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"title": "திறந்த தலைப்புகள் தேர்வாளர்"
|
||||
}
|
||||
},
|
||||
"compact-sidebar": {
|
||||
"description": "எப்போதும் பக்கப்பட்டியை சிறிய பயன்முறையில் அமைக்கவும்",
|
||||
"name": "சிறிய பக்கப்பட்டி"
|
||||
},
|
||||
"crossfade": {
|
||||
"description": "பாடல்களுக்கு இடையில் கிராச்ஃபேட்",
|
||||
"menu": {
|
||||
"advanced": "மேம்பட்ட"
|
||||
},
|
||||
"name": "கிராச்ஃபேட் [பீட்டா]",
|
||||
"prompt": {
|
||||
"options": {
|
||||
"multi-input": {
|
||||
"fade-in-duration": "காலகட்டத்தில் (எம்.எச்) மங்கிவிடும்",
|
||||
"fade-out-duration": "காலத்தை மங்கச் செய்யுங்கள் (எம்.எச்)",
|
||||
"fade-scaling": {
|
||||
"label": "மங்கலான அளவிடுதல்",
|
||||
"linear": "நேரியல்",
|
||||
"logarithmic": "மடக்கை"
|
||||
},
|
||||
"seconds-before-end": "கிராச்ஃபேட் n வினாடிகள் முடிவுக்கு முன்"
|
||||
},
|
||||
"title": "கிராச்ஃபேட் விருப்பங்கள்"
|
||||
}
|
||||
}
|
||||
},
|
||||
"disable-autoplay": {
|
||||
"description": "\"இடைநிறுத்தப்பட்ட\" பயன்முறையில் பாடல் தொடங்குகிறது",
|
||||
"menu": {
|
||||
"apply-once": "தொடக்கத்தில் மட்டுமே பொருந்தும்"
|
||||
},
|
||||
"name": "ஆட்டோபிளேவை முடக்கு"
|
||||
},
|
||||
"discord": {
|
||||
"backend": {
|
||||
"already-connected": "செயலில் இணைப்புடன் இணைக்க முயற்சித்தது",
|
||||
"connected": "முரண்பாட்டுடன் இணைக்கப்பட்டுள்ளது",
|
||||
"disconnected": "முரண்பாட்டிலிருந்து துண்டிக்கப்பட்டது"
|
||||
},
|
||||
"description": "பணக்கார இருப்பைக் கொண்டு நீங்கள் கேட்பதை உங்கள் நண்பர்களுக்குக் காட்டுங்கள்",
|
||||
"menu": {
|
||||
"auto-reconnect": "ஆட்டோ மீண்டும் இணைக்கவும்",
|
||||
"clear-activity": "தெளிவான செயல்பாடு",
|
||||
"clear-activity-after-timeout": "காலக்கெடுவுக்குப் பிறகு தெளிவான செயல்பாடு",
|
||||
"connected": "இணைக்கப்பட்டுள்ளது",
|
||||
"disconnected": "துண்டிக்கப்பட்டது",
|
||||
"hide-duration-left": "காலம் மீதமுள்ளதை மறைக்கவும்",
|
||||
"hide-github-button": "அறிவிலிமையம் இணைப்பு பொத்தானை மறைக்கவும்",
|
||||
"play-on-youtube-music": "யூடியூப் இசையில் விளையாடுங்கள்",
|
||||
"set-inactivity-timeout": "செயலற்ற நேரம் முடிந்தது"
|
||||
},
|
||||
"name": "முரண்பாடு பணக்கார இருப்பு",
|
||||
"prompt": {
|
||||
"set-inactivity-timeout": {
|
||||
"label": "நொடிகளில் செயலற்ற நேரத்தை உள்ளிடவும்:",
|
||||
"title": "செயலற்ற நேரம் முடிந்தது"
|
||||
}
|
||||
}
|
||||
},
|
||||
"downloader": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"error": {
|
||||
"buttons": {
|
||||
"ok": "சரி"
|
||||
},
|
||||
"message": "ஆர்க்! மன்னிப்பு, பதிவிறக்கம் தோல்வியுற்றது…",
|
||||
"title": "பதிவிறக்கத்தில் பிழை!"
|
||||
},
|
||||
"start-download-playlist": {
|
||||
"buttons": {
|
||||
"ok": "சரி"
|
||||
},
|
||||
"detail": "({{playlistSize}} பாடல்கள்)",
|
||||
"message": "பிளேலிச்ட்டைப் பதிவிறக்குகிறது {{playlistTitle}}",
|
||||
"title": "பதிவிறக்கம் தொடங்கியது"
|
||||
}
|
||||
},
|
||||
"feedback": {
|
||||
"conversion-progress": "மாற்றம்: {{percent}}%",
|
||||
"converting": "மாற்றுகிறது…",
|
||||
"done": "முடிந்தது: {{filePath}}",
|
||||
"download-info": "பதிவிறக்கம் {{artist}} - {{title}} [{{videoId}}}",
|
||||
"download-progress": "பதிவிறக்கம்: {{percent}}%",
|
||||
"downloading": "பதிவிறக்கம்…",
|
||||
"downloading-counter": "பதிவிறக்கம் {{current}}/{{total}}…",
|
||||
"downloading-playlist": "பிளேலிச்ட்டைப் பதிவிறக்குதல் \"{{playlistTitle}}\" - {{playlistSize}} பாடல்கள் ({{playlistId}})",
|
||||
"error-while-downloading": "பிழை \"{{author}} - {{title}}\": {{error}}",
|
||||
"folder-already-exists": "{{playlistFolder}}} ஏற்கனவே உள்ளது",
|
||||
"getting-playlist-info": "பிளேலிச்ட் தகவலைப் பெறுதல்…",
|
||||
"loading": "ஏற்றுகிறது…",
|
||||
"playlist-has-only-one-song": "பிளேலிச்ட்டில் ஒரே ஒரு உருப்படி மட்டுமே உள்ளது, அதை நேரடியாக பதிவிறக்குகிறது",
|
||||
"playlist-id-not-found": "பிளேலிச்ட் ஐடி எதுவும் கிடைக்கவில்லை",
|
||||
"playlist-is-empty": "பிளேலிச்ட் காலியாக உள்ளது",
|
||||
"playlist-is-mix-or-private": "பிளேலிச்ட் தகவலைப் பெறுவதில் பிழை: இது ஒரு தனிப்பட்ட அல்லது \"உங்களுக்காக கலப்பு\" பிளேலிச்ட் அல்ல என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள்\n\n {{error}}",
|
||||
"preparing-file": "கோப்பைத் தயாரித்தல்…",
|
||||
"saving": "சேமிப்பு…",
|
||||
"trying-to-get-playlist-id": "பிளேலிச்ட் ஐடியைப் பெற முயற்சிக்கிறது: {{playlistId}}}",
|
||||
"video-id-not-found": "வீடியோ கிடைக்கவில்லை",
|
||||
"writing-id3": "ஐடி 3 குறிச்சொற்களை எழுதுதல்…"
|
||||
}
|
||||
},
|
||||
"description": "எம்பி 3 / மூல ஆடியோவை இடைமுகத்திலிருந்து நேரடியாக பதிவிறக்குகிறது",
|
||||
"menu": {
|
||||
"choose-download-folder": "பதிவிறக்க கோப்புறையைத் தேர்வுசெய்க",
|
||||
"download-finish-settings": {
|
||||
"label": "முடிவில் பதிவிறக்கவும்",
|
||||
"prompt": {
|
||||
"last-percent": "ஃச் சதவீதத்திற்குப் பிறகு",
|
||||
"last-seconds": "கடைசி ஃச் விநாடிகள்",
|
||||
"title": "எப்போது பதிவிறக்கம் செய்ய வேண்டும் என்பதை உள்ளமைக்கவும்"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "மேம்பட்ட",
|
||||
"enabled": "இயக்கப்பட்டது",
|
||||
"mode": "நேர முறை",
|
||||
"percent": "விழுக்காடு",
|
||||
"seconds": "நொடிகள்"
|
||||
}
|
||||
},
|
||||
"download-playlist": "பிளேலிச்ட்டைப் பதிவிறக்கவும்",
|
||||
"presets": "முன்னமைவுகள்",
|
||||
"skip-existing": "இருக்கும் கோப்புகளைத் தவிர்க்கவும்"
|
||||
},
|
||||
"name": "பதிவிறக்குபவர்",
|
||||
"renderer": {
|
||||
"can-not-update-progress": "முன்னேற்றத்தை புதுப்பிக்க முடியாது"
|
||||
},
|
||||
"templates": {
|
||||
"button": "பதிவிறக்கம்"
|
||||
}
|
||||
},
|
||||
"equalizer": {
|
||||
"description": "பிளேயருக்கு ஒரு சமநிலையைச் சேர்க்கிறது",
|
||||
"menu": {
|
||||
"presets": {
|
||||
"label": "முன்னமைவுகள்",
|
||||
"list": {
|
||||
"bass-booster": "பாச் பூச்டர்"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "சமநிலைப்படுத்தி"
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "தொகுதி ச்லைடர் அதிவேகமானது, எனவே குறைந்த தொகுதிகளைத் தேர்ந்தெடுப்பது எளிது.",
|
||||
"name": "அதிவேக தொகுதி"
|
||||
},
|
||||
"in-app-menu": {
|
||||
"description": "மெனு-பட்டியை ஒரு ஆடம்பரமான, இருண்ட அல்லது ஆல்பம்-வண்ண தோற்றத்தைக் கொடுங்கள்",
|
||||
"menu": {
|
||||
"hide-dom-window-controls": "டோம் சாளர கட்டுப்பாடுகளை மறைக்கவும்"
|
||||
},
|
||||
"name": "பயன்பாட்டில் பட்டியல்"
|
||||
},
|
||||
"lumiastream": {
|
||||
"description": "லூமியா ச்ட்ரீம் ஆதரவை சேர்க்கிறது",
|
||||
"name": "லூமியா ச்ட்ரீம் [பீட்டா]"
|
||||
},
|
||||
"lyrics-genius": {
|
||||
"description": "பெரும்பாலான பாடல்களுக்கு பாடல் ஆதரவை சேர்க்கிறது",
|
||||
"menu": {
|
||||
"romanized-lyrics": "ரோமானிய பாடல்"
|
||||
},
|
||||
"name": "பாடல் சீனியச்",
|
||||
"renderer": {
|
||||
"fetched-lyrics": "சீனியசுக்கு பாடல் வரிகள்"
|
||||
}
|
||||
},
|
||||
"music-together": {
|
||||
"description": "ஒரு பிளேலிச்ட்டை மற்றவர்களுடன் பகிர்ந்து கொள்ளுங்கள். புரவலன் ஒரு பாடலை விளையாடும்போது, மற்றவர்கள் அனைவரும் ஒரே பாடலைக் கேட்பார்கள்",
|
||||
"dialog": {
|
||||
"enter-host": "புரவலன் ஐடியை உள்ளிடவும்"
|
||||
},
|
||||
"internal": {
|
||||
"save": "சேமி",
|
||||
"track-source": "ட்ராக் சோர்ச்",
|
||||
"unknown-user": "தெரியாத பயனர்"
|
||||
},
|
||||
"menu": {
|
||||
"click-to-copy-id": "புரவலன் ஐடியை நகலெடுக்கவும்",
|
||||
"close": "ஒன்றாக இசையை மூடு",
|
||||
"connected-users": "இணைக்கப்பட்ட பயனர்கள்",
|
||||
"disconnect": "ஒன்றாக இசையை துண்டிக்கவும்",
|
||||
"empty-user": "இணைக்கப்பட்ட பயனர்கள் இல்லை",
|
||||
"host": "இசை ஒன்றாக புரவலன்",
|
||||
"join": "ஒன்றாக இசையில் சேரவும்",
|
||||
"permission": {
|
||||
"all": "பிளேலிச்ட் மற்றும் பிளேயரைக் கட்டுப்படுத்த விருந்தினர்களை அனுமதிக்கவும்",
|
||||
"host-only": "ஓச்டால் மட்டுமே பிளேலிச்ட் மற்றும் பிளேயரை கட்டுப்படுத்த முடியும்",
|
||||
"playlist": "பிளேலிச்ட்டைக் கட்டுப்படுத்த விருந்தினர்களை அனுமதிக்கவும்"
|
||||
},
|
||||
"set-permission": "கட்டுப்பாட்டு அனுமதியை மாற்றவும்",
|
||||
"status": {
|
||||
"disconnected": "துண்டிக்கப்பட்டது",
|
||||
"guest": "விருந்தினராக இணைக்கப்பட்டுள்ளது",
|
||||
"host": "ஓச்டாக இணைக்கப்பட்டுள்ளது"
|
||||
}
|
||||
},
|
||||
"name": "இசை ஒன்றாக [பீட்டா]",
|
||||
"toast": {
|
||||
"add-song-failed": "பாடல் சேர்க்கத் தவறிவிட்டது",
|
||||
"closed": "இசை ஒன்றாக மூடப்பட்டது",
|
||||
"disconnected": "இசை ஒன்றாக துண்டிக்கப்பட்டது",
|
||||
"host-failed": "ஒன்றாக இசையை புரவலன் செய்யத் தவறிவிட்டது",
|
||||
"id-copied": "இடைநிலைப்பலகைக்கு புரவலன் ஐடி நகலெடுக்கப்பட்டது",
|
||||
"id-copy-failed": "புரவலன் ஐடியை இடைநிலைப்பலகைக்கு நகலெடுப்பதில் தோல்வி",
|
||||
"join-failed": "ஒன்றாக இசையில் சேரத் தவறிவிட்டது",
|
||||
"joined": "ஒன்றாக இசையில் சேர்ந்தார்",
|
||||
"permission-changed": "இசை ஒன்றாக இசைவு \"{{permission}}\" என மாற்றப்பட்டது",
|
||||
"remove-song-failed": "பாடலை அகற்றுவதில் தோல்வி",
|
||||
"user-connected": "{{name}} ஒன்றாக இசையில் சேர்ந்தார்",
|
||||
"user-disconnected": "{{name}}} இடது இசையை ஒன்றாக"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"description": "உங்களுக்கு பிடித்த உலாவியைப் போலவே இடைமுகத்தில் நேரடியாக ஒருங்கிணைக்கப்பட்ட அடுத்த/பின் வழிசெலுத்தல் அம்புகள்",
|
||||
"name": "வானோடல்"
|
||||
},
|
||||
"no-google-login": {
|
||||
"description": "இடைமுகத்திலிருந்து Google உள்நுழைவு பொத்தான்கள் மற்றும் இணைப்புகளை அகற்று",
|
||||
"name": "கூகிள் உள்நுழைவு இல்லை"
|
||||
},
|
||||
"notifications": {
|
||||
"description": "ஒரு பாடல் இயக்கத் தொடங்கும் போது அறிவிப்பைக் காண்பி (விண்டோசில் ஊடாடும் அறிவிப்புகள் கிடைக்கின்றன)",
|
||||
"menu": {
|
||||
"interactive": "ஊடாடும் அறிவிப்புகள்",
|
||||
"interactive-settings": {
|
||||
"label": "ஊடாடும் அமைப்புகள்",
|
||||
"submenu": {
|
||||
"hide-button-text": "பொத்தான் உரையை மறைக்கவும்",
|
||||
"refresh-on-play-pause": "விளையாட்டு/இடைநிறுத்தத்தில் புதுப்பிக்கவும்",
|
||||
"tray-controls": "தட்டு சொடுக்கு செய்யவும்/மூடு"
|
||||
}
|
||||
},
|
||||
"priority": "அறிவிப்பு முன்னுரிமை",
|
||||
"toast-style": "சிற்றுண்டி நடை",
|
||||
"unpause-notification": "பொருத்தமற்ற அறிவிப்பைக் காட்டு"
|
||||
},
|
||||
"name": "அறிவிப்புகள்"
|
||||
},
|
||||
"picture-in-picture": {
|
||||
"description": "பயன்பாட்டை பட-பட பயன்முறைக்கு மாற்ற அனுமதிக்கிறது",
|
||||
"menu": {
|
||||
"always-on-top": "எப்போதும் மேலே",
|
||||
"hotkey": {
|
||||
"label": "ஆட்ச்கி",
|
||||
"prompt": {
|
||||
"keybind-options": {
|
||||
"hotkey": "ஆட்ச்கி"
|
||||
},
|
||||
"label": "படம்-இன்-படத்தை மாற்ற ஆட்கியைத் தேர்வுசெய்க",
|
||||
"title": "படம்-இன்-பட ஆட்ச்கி"
|
||||
}
|
||||
},
|
||||
"save-window-position": "சாளர நிலையை சேமி",
|
||||
"save-window-size": "சாளர அளவை சேமி",
|
||||
"use-native-pip": "உலாவி சொந்த பிப் பயன்படுத்தவும்"
|
||||
},
|
||||
"name": "படம்-படம்",
|
||||
"templates": {
|
||||
"button": "படம்-படம்"
|
||||
}
|
||||
},
|
||||
"playback-speed": {
|
||||
"description": "வேகமாக கேளுங்கள், மெதுவாக கேளுங்கள்! பாடல் வேகத்தைக் கட்டுப்படுத்தும் ச்லைடரைச் சேர்க்கிறது",
|
||||
"name": "பின்னணி விரைவு",
|
||||
"templates": {
|
||||
"button": "வேகம்"
|
||||
}
|
||||
},
|
||||
"precise-volume": {
|
||||
"description": "தனிப்பயன் HUD மற்றும் தனிப்பயனாக்கக்கூடிய தொகுதி படிகளுடன், மவுச்வீல்/ஆட்கீசைப் பயன்படுத்தி துல்லியமாக அளவைக் கட்டுப்படுத்தவும்",
|
||||
"menu": {
|
||||
"arrows-shortcuts": "உள்ளக அம்பு-கீச் கட்டுப்பாடுகள்",
|
||||
"custom-volume-steps": "தனிப்பயன் தொகுதி படிகளை அமைக்கவும்",
|
||||
"global-shortcuts": "உலகளாவிய ஆட்கீச்"
|
||||
},
|
||||
"name": "துல்லியமான தொகுதி",
|
||||
"prompt": {
|
||||
"global-shortcuts": {
|
||||
"keybind-options": {
|
||||
"decrease": "அளவைக் குறைக்கவும்",
|
||||
"increase": "அளவை அதிகரிக்கவும்"
|
||||
},
|
||||
"label": "உலகளாவிய தொகுதி விசைப்பலகைகளைத் தேர்வுசெய்க:",
|
||||
"title": "உலகளாவிய தொகுதி கீபிண்ட்ச்"
|
||||
},
|
||||
"volume-steps": {
|
||||
"label": "தொகுதி அதிகரிப்பு/குறைத்தல் படிகளைத் தேர்வுசெய்க",
|
||||
"title": "தொகுதி படிகள்"
|
||||
}
|
||||
}
|
||||
},
|
||||
"quality-changer": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"quality-changer": {
|
||||
"detail": "தற்போதைய தரம்: {{quality}}",
|
||||
"message": "வீடியோ தரத்தைத் தேர்வுசெய்க:",
|
||||
"title": "வீடியோ தரத்தைத் தேர்வுசெய்க"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "வீடியோ மேலடுக்கில் ஒரு பொத்தானைக் கொண்டு வீடியோ தரத்தை மாற்ற அனுமதிக்கிறது",
|
||||
"name": "வீடியோ தர மாற்றி"
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "ச்க்ரோப்ளிங் ஆதரவைச் சேர் (last.fm, Listenbrainz முதலியன)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "Last.fm உடன் அங்கீகரிக்கத் தவறிவிட்டது\n அடுத்த மறுதொடக்கம் வரை பாப்அப்பை மறைக்கவும்.",
|
||||
"title": "ஏற்பு தோல்வியடைந்தது"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "Last.fm பநிஇ அமைப்புகள்"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": "WeskBrainz பயனர் கிள்ளாக்கை உள்ளிடவும்"
|
||||
},
|
||||
"scrobble-other-media": "மற்ற ஊடகங்களை வெல்லுங்கள்"
|
||||
},
|
||||
"name": "ச்க்ரோபிளர்",
|
||||
"prompt": {
|
||||
"lastfm": {
|
||||
"api-key": "Last.fm பநிஇ key",
|
||||
"api-secret": "Last.fm பநிஇ மறைபொருள்"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": {
|
||||
"label": "உங்கள் கயிட் பிரைன்ச் பயனர் கிள்ளாக்கை உள்ளிடவும்:",
|
||||
"title": "கேளுங்கள் பிரெய்ன்ச் கிள்ளாக்கு"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"shortcuts": {
|
||||
"description": "பிளேபேக்கிற்கான உலகளாவிய ஆட்கீசை அமைக்க அனுமதிக்கிறது (நாடகம்/இடைநிறுத்தம்/அடுத்த/முந்தைய) மீடியா விசைகளை மீறுவதன் மூலம் மீடியா ஓஎச்டி",
|
||||
"menu": {
|
||||
"override-media-keys": "மீடியா விசைகளை மேலெழுதவும்",
|
||||
"set-keybinds": "உலகளாவிய பாடல் கட்டுப்பாடுகளை அமைக்கவும்"
|
||||
},
|
||||
"name": "குறுக்குவழிகள் (& MPRIS)",
|
||||
"prompt": {
|
||||
"keybind": {
|
||||
"keybind-options": {
|
||||
"next": "அடுத்தது",
|
||||
"play-pause": "விளையாடு / இடைநிறுத்தம்",
|
||||
"previous": "முந்தைய"
|
||||
},
|
||||
"label": "பாடல்கள் கட்டுப்பாட்டுக்கு உலகளாவிய விசைப்பல்களைத் தேர்வுசெய்க:",
|
||||
"title": "உலகளாவிய கீபிண்ட்ச்"
|
||||
}
|
||||
}
|
||||
},
|
||||
"skip-disliked-songs": {
|
||||
"description": "ச்கிப்ச் விரும்பாத பாடல்கள்",
|
||||
"name": "விரும்பாத பாடல்களைத் தவிர்க்கவும்"
|
||||
},
|
||||
"skip-silences": {
|
||||
"description": "பாடல்களில் அமைதியான பகுதிகளை தானாகத் தவிர்க்கவும்",
|
||||
"name": "ம n னங்களைத் தவிர்க்கவும்"
|
||||
},
|
||||
"sponsorblock": {
|
||||
"description": "அறிமுகம்/அவுட்ரோ போன்ற இசை அல்லாத பகுதிகள் அல்லது பாடல் இசைக்காத இசை வீடியோக்களின் பகுதிகளை தானாகவே தவிர்க்கிறது",
|
||||
"name": "ஒப்புரவாளர் தொகுதி"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "எல்.ஆர்.சி.எல்.ஐ.பி போன்ற வழங்குநர்களைப் பயன்படுத்தி பாடல்களுக்கு ஒத்திசைக்கப்பட்ட பாடல்களை வழங்குகிறது.",
|
||||
"errors": {
|
||||
"fetch": "The பாடல் வரிகளைப் பெறும்போது பிழை ஏற்பட்டது.\n தயவுசெய்து பின்னர் மீண்டும் முயற்சிக்கவும்.",
|
||||
"not-found": "Ling இந்த பாடலுக்கு வரிகள் எதுவும் கிடைக்கவில்லை."
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "பாடல் வரிகளுக்கு இடையில் இயல்புநிலை எழுத்து",
|
||||
"tooltip": "பாடல் வரிகளுக்கு இடையிலான இடைவெளியைப் பயன்படுத்த இயல்புநிலை எழுத்தைத் தேர்வுசெய்க"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "வரி விளைவு",
|
||||
"submenu": {
|
||||
"fancy": {
|
||||
"label": "ஆடம்பரமான",
|
||||
"tooltip": "தற்போதைய வரியில் பெரிய, பயன்பாடு போன்ற விளைவுகளைப் பயன்படுத்தவும்"
|
||||
},
|
||||
"focus": {
|
||||
"label": "குவி",
|
||||
"tooltip": "தற்போதைய வரியை மட்டுமே வெள்ளை செய்யுங்கள்"
|
||||
},
|
||||
"offset": {
|
||||
"label": "ஈடுசெய்யும்",
|
||||
"tooltip": "வலதுபுறத்தில் தற்போதைய வரியை ஈடுசெய்யவும்"
|
||||
},
|
||||
"scale": {
|
||||
"label": "அளவு",
|
||||
"tooltip": "தற்போதைய வரியை அளவிடவும்"
|
||||
}
|
||||
},
|
||||
"tooltip": "தற்போதைய வரிக்கு பொருந்தக்கூடிய விளைவைத் தேர்வுசெய்க"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "பாடல் வரிகளை சரியாக ஒத்திசைக்கவும்",
|
||||
"tooltip": "அடுத்த வரியின் காட்சியைக் கணக்கிடுங்கள் (செயல்திறனில் ஒரு சிறிய தாக்கத்தை ஏற்படுத்தும்)"
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "துல்லியமாக இருந்தாலும் பாடல்களைக் காட்டு",
|
||||
"tooltip": "பாடல் காணப்படாவிட்டால், சொருகி மீண்டும் வேறு தேடல் வினவலுடன் முயற்சிக்கிறது.\n இரண்டாவது முயற்சியின் முடிவு துல்லியமாக இருக்காது."
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "நேரக் குறியீடுகளைக் காட்டு",
|
||||
"tooltip": "பாடல் வரிகளுக்கு அடுத்த நேர குறியீடுகளைக் காட்டு"
|
||||
}
|
||||
},
|
||||
"name": "ஒத்திசைக்கப்பட்ட பாடல்",
|
||||
"refetch-btn": {
|
||||
"fetching": "பெறுதல் ...",
|
||||
"normal": "ரீஃபட்ச் பாடல்"
|
||||
},
|
||||
"warnings": {
|
||||
"duration-mismatch": "⚠.எம் - கால பொருத்தமின்மை காரணமாக பாடல் வரிகள் ஒத்திசைக்கப்படாமல் இருக்கலாம்.",
|
||||
"inexact": "- - இந்த பாடலுக்கான வரிகள் துல்லியமாக இருக்காது",
|
||||
"instrumental": "- இது ஒரு கருவி பாடல்"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "உங்கள் சாளரங்கள் பணிப்பட்டியிலிருந்து பிளேபேக்கைக் கட்டுப்படுத்தவும்",
|
||||
"name": "பணிப்பட்டு மீடியா கட்டுப்பாடு"
|
||||
},
|
||||
"touchbar": {
|
||||
"description": "MACOS பயனர்களுக்கான டச்ச்பார் விட்செட்டை சேர்க்கிறது",
|
||||
"name": "டக்பார்"
|
||||
},
|
||||
"tuna-obs": {
|
||||
"description": "OBS இன் சொருகி டுனாவுடன் ஒருங்கிணைப்பு",
|
||||
"name": "டுனா குறிப்பு"
|
||||
},
|
||||
"video-toggle": {
|
||||
"description": "வீடியோ/பாடல் பயன்முறைக்கு இடையில் மாற ஒரு பொத்தானைச் சேர்க்கிறது. முழு வீடியோ தாவலையும் விருப்பமாக அகற்றலாம்",
|
||||
"menu": {
|
||||
"align": {
|
||||
"label": "இருப்புவழி",
|
||||
"submenu": {
|
||||
"left": "இடது",
|
||||
"middle": "நடுத்தர",
|
||||
"right": "வலது"
|
||||
}
|
||||
},
|
||||
"force-hide": "வீடியோ தாவலை அகற்றவும்",
|
||||
"mode": {
|
||||
"label": "பயன்முறை",
|
||||
"submenu": {
|
||||
"custom": "தனிப்பயன் மாற்று",
|
||||
"disabled": "முடக்கப்பட்டது",
|
||||
"native": "சொந்த மாற்று"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "வீடியோ மாற்று",
|
||||
"templates": {
|
||||
"button": "பாடல்"
|
||||
}
|
||||
},
|
||||
"visualizer": {
|
||||
"description": "பிளேயருக்கு ஒரு காட்சிப்படுத்தியைச் சேர்க்கிறது",
|
||||
"menu": {
|
||||
"visualizer-type": "விசுவலைசர் வகை"
|
||||
},
|
||||
"name": "காட்சிப்படுத்தல்"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -4,12 +4,12 @@
|
||||
"plugins": {
|
||||
"execute-failed": "ปลั๊กอิน {{pluginName}}::{{contextName}} ไม่สามารถทำงานได้",
|
||||
"executed-at-ms": "ปลั๊กอิน {{pluginName}}::{{contextName}} ทำงานแล้วที่ {{ms}}ms",
|
||||
"initialize-failed": "ไม่สามารถเริ่มต้นปลั๊กอิน \"{{pluginName}}\"",
|
||||
"initialize-failed": "ไม่สามารถเริ่มปลั๊กอิน \"{{pluginName}}\"ได้",
|
||||
"load-all": "กำลังโหลดปลั๊กอินทั้งหมด",
|
||||
"load-failed": "ไม่สามารถโหลดปลั๊กอิน \"{{pluginName}}\"",
|
||||
"loaded": "โหลดปลั๊กอิน \"{{pluginName}}\" แล้ว",
|
||||
"unload-failed": "ล้มเหลวในการยกเลิกการโหลดปลั๊กอิน \"{{pluginName}}\"",
|
||||
"unloaded": "ยกเลิกการโหลดปลั๊กอิน \"{{pluginName}}\" แล้ว"
|
||||
"load-failed": "ไม่สามารถโหลดปลั๊กอิน \"{{pluginName}}\"ได้",
|
||||
"loaded": "โหลดปลั๊กอิน \"{{pluginName}}\" เรียบร้อยแล้ว",
|
||||
"unload-failed": "ไม่สามารถโหลดปลั๊กอิน \"{{pluginName}}\"ได้",
|
||||
"unloaded": "ยกเลิกโหลดปลั๊กอิน \"{{pluginName}}\" แล้ว"
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -21,32 +21,51 @@
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "การโหลดเสร็จสิ้น DevTools ได้ถูกเปิดแล้ว"
|
||||
"dev-tools": "การโหลดเสร็จสิ้น. โหมดนักพัฒนาสามรถใช้งานได้แล้ว"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "โหลด i18n แล้ว"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "คำสั่งที่ได้รับผ่านโปรโตคอล: \"{{command}}\""
|
||||
"receive-command": "รับคำสั่งผ่านโปรโตคอล: \"{{command}}\""
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "กำลังเพิกเฉยไฟล์ CSS \"{{cssFile}}\" เนื่องจากไม่มีอยู่"
|
||||
"css-file-not-found": "ไม่พบไฟล์ CSS \"{{cssFile}}\" กำลังข้าม"
|
||||
},
|
||||
"unresponsive": {
|
||||
"details": "มีข้อผิดพลาดจากไม่การตอบสนอง!\n{{error}}"
|
||||
"details": "พบข้อผิดพลาด!\n{{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "กำลังล้างแคชของแอป"
|
||||
"clearing-cache-after-20s": "กำลังล้างแคชแอป"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "หน้าต่างพยายามแสดงผลเกินขนาดหน้าจอ windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
|
||||
"tried-to-render-offscreen": "หน้าต่างพยายามแสดงผลเกินขนาดหน้าจอ ขนาดหน้าต่าง={{windowSize}}, ขนาดหน้าจอ={{displaySize}}, ตำแหน่ง={{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "เมนูถูกซ่อนไว้ กด'Alt' เพื่อแสดงเมนู (หรือ 'Escape' หากกำลังใช้เมนูบนแอป)",
|
||||
"message": "การซ่อนเมนูเปิดใช้งานอยู่",
|
||||
"title": "เปิดใช้งานการซ่อนเมนู"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "รีสตาร์ตภายหลัง",
|
||||
"restart-now": "รีสตาร์ตตอนนี้"
|
||||
},
|
||||
"detail": "ปลั๊กอิน \"{{pluginName}}\" ต้องการการรีสตาร์ตเพื่อจะทำงานได้",
|
||||
"message": "\"{{pluginName}}\" ต้องการรีสตาร์ต",
|
||||
"title": "แนะนำให้รีสตาร์ต"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "เลิก"
|
||||
}
|
||||
"quit": "ออก",
|
||||
"relaunch": "ปิดแล้วเปิดใหม่",
|
||||
"wait": "รอให้ตอบสนอง"
|
||||
},
|
||||
"detail": "ขออภัยในความไม่สะดวก! โปรดเลือกสิ่งที่ต้องการจะทำ:",
|
||||
"message": "แอปพลิเคชันไม่ตอบสนอง",
|
||||
"title": "หน้าต่างไม่ตอบสนอง"
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
@ -54,7 +73,7 @@
|
||||
"download": "ดาวน์โหลด",
|
||||
"ok": "ตกลง"
|
||||
},
|
||||
"detail": "มีเวอร์ชันใหม่ให้ดาวน์โหลดแล้วที่ {{downloadLink}}",
|
||||
"detail": "มีเวอร์ชันใหม่ให้ใช้งานได้สามารถดาวน์โหลดได้ที่ {{downloadLink}}",
|
||||
"message": "มีเวอร์ชันใหม่ให้ใช้งานแล้ว",
|
||||
"title": "อัปเดตพร้อมใช้งาน"
|
||||
}
|
||||
@ -62,12 +81,13 @@
|
||||
"menu": {
|
||||
"about": "เกี่ยวกับ",
|
||||
"navigation": {
|
||||
"label": "การนำทาง",
|
||||
"submenu": {
|
||||
"copy-current-url": "คัดลอก URL ปัจจุบัน",
|
||||
"go-back": "ก่อนหน้า",
|
||||
"go-forward": "ถัดไป",
|
||||
"quit": "ออก",
|
||||
"restart": "รีสตาร์ทแอป"
|
||||
"restart": "รีสตาร์ตแอป"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
@ -76,25 +96,356 @@
|
||||
"advanced-options": {
|
||||
"label": "ตัวเลือกขั้นสูง",
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "รีเซตแอปแคชเมื่อเริ่มแอป",
|
||||
"auto-reset-app-cache": "รีเซตแคชของแอปเมื่อเริ่มแอป",
|
||||
"disable-hardware-acceleration": "ปิดการใช้งานตัวเร่งประสิทธิภาพด้วยฮาร์ดแวร์",
|
||||
"edit-config-json": "แก้ไข config.json",
|
||||
"override-user-agent": "แทนที่ User-Agent"
|
||||
"override-user-agent": "แทนที่ User-Agent",
|
||||
"restart-on-config-changes": "รีสตาร์ตเมื่อมีการเปลี่ยนแปลงคอนฟิก",
|
||||
"set-proxy": {
|
||||
"label": "ตั้งค่าพร็อกซี่",
|
||||
"prompt": {
|
||||
"label": "ใส่ที่อยู่ของพร็อกซี่: (เว้นว่างเพื่อปิดใช้งาน)",
|
||||
"placeholder": "ตัวอย่าง: SOCKS5://127.0.0.1:9999",
|
||||
"title": "ตั้งค่าพร็อกซี่"
|
||||
}
|
||||
},
|
||||
"toggle-dev-tools": "เปิด/ปิดเครื่องมือสำหรับนักพัฒนา"
|
||||
}
|
||||
},
|
||||
"always-on-top": "อยู่ด้านบนหน้าต่างอื่นตลอดเวลา",
|
||||
"auto-update": "อัปเดตอัตโนมัติ",
|
||||
"hide-menu": {
|
||||
"dialog": {
|
||||
"message": "เมนูจะถูกซ่อนในการเปิดครั้งถัดไป กด [Alt] เพื่อแสดงเมนู (หรือใช้ backtick [`] หากอยู่ในเมนูแอป)",
|
||||
"title": "เปิดใช้งานการซ่อนเมนู"
|
||||
},
|
||||
"label": "ซ่อนเมนู"
|
||||
},
|
||||
"language": {
|
||||
"dialog": {
|
||||
"message": "ภาษาจะเปลี่ยนหลังจากทำการรีสตาร์ต",
|
||||
"title": "ภาษาถูกเปลี่ยนแล้ว"
|
||||
},
|
||||
"label": "ภาษา",
|
||||
"submenu": {
|
||||
"to-help-translate": "ต้องการช่วยแปลภาษา? คลิกที่นี่"
|
||||
}
|
||||
},
|
||||
"resume-on-start": "เล่นเพลงที่เล่นล่าสุดต่อ เมื่อเปิดแอป",
|
||||
"single-instance-lock": "ล็อกไม่ให้เปิดซำ้ซ้อน",
|
||||
"start-at-login": "เริ่มต้นเมื่อเข้าสู่ระบบ",
|
||||
"starting-page": {
|
||||
"label": "หน้าเริ่มต้น",
|
||||
"unset": "ยกเลิกการตั้งค่า"
|
||||
},
|
||||
"tray": {
|
||||
"label": "ถาดรายการ",
|
||||
"submenu": {
|
||||
"disabled": "ปิดการใช้งาน",
|
||||
"enabled-and-hide-app": "เปิดใช้งานและซ่อนแอป",
|
||||
"enabled-and-show-app": "เปิดใช้งานและแสดงแอป",
|
||||
"play-pause-on-click": "เล่น/หยุดเล่น เมื่อคลิก"
|
||||
}
|
||||
},
|
||||
"visual-tweaks": {
|
||||
"label": "ปรับแต่งหน้าตาแอป",
|
||||
"submenu": {
|
||||
"like-buttons": {
|
||||
"default": "ค่าเริ่มต้น",
|
||||
"force-show": "บังคับให้แสดง",
|
||||
"hide": "ซ่อน",
|
||||
"label": "ปุ่มถูกใจ"
|
||||
},
|
||||
"remove-upgrade-button": "ลบปุ่มอัปเกรด",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "ยกเลิก",
|
||||
"remove": "ลบ"
|
||||
},
|
||||
"remove-theme": "คุณแน่ใจหรือหรือไม่ที่จะลบธีม?",
|
||||
"remove-theme-message": "สิ่งนี้จะลบธีมที่กำหนดเอง"
|
||||
},
|
||||
"label": "ธีม",
|
||||
"submenu": {
|
||||
"import-css-file": "นำเข้าไฟล์ CSS ที่กำหนดเอง",
|
||||
"no-theme": "ไม่ใช้ธีม"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"enabled": "เปิดใช้งาน",
|
||||
"label": "ปลั๊กอิน",
|
||||
"new": "ใหม่"
|
||||
},
|
||||
"view": {
|
||||
"label": "มุมมอง",
|
||||
"submenu": {
|
||||
"force-reload": "บังคับโหลดใหม่",
|
||||
"reload": "โหลดใหม่",
|
||||
"reset-zoom": "ขนาดจริง",
|
||||
"toggle-fullscreen": "เปิด/ปิดโหมดเต็มหน้าจอ",
|
||||
"zoom-in": "ซูมเข้า",
|
||||
"zoom-out": "ซูมออก"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"next": "ต่อไป",
|
||||
"play-pause": "เล่น/หยุดชั่วคราว",
|
||||
"previous": "ก่อนหน้า",
|
||||
"quit": "ออก",
|
||||
"restart": "รีสตาร์ตแอป",
|
||||
"show": "แสดงหน้าต่าง",
|
||||
"tooltip": {
|
||||
"default": "YouTube Music",
|
||||
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "หากมีโฆษณาเล่นขึ้น เสียงจะถูกปิดและตั้งความเร็วในการเล่นเป็น 16 เท่า",
|
||||
"name": "เพิ่มความเร็วโฆษณา"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "บล็อกโฆษณาและการติดตามทั้งหมดอย่างอัตโนมัติ",
|
||||
"menu": {
|
||||
"blocker": "เครื่องมือบล็อก"
|
||||
},
|
||||
"name": "ตัวบล็อกโฆษณา"
|
||||
},
|
||||
"album-actions": {
|
||||
"description": "เพิ่ม ยกเลิกไม่ชอบ, ไม่ชอบ, ถูกใจ, และ ยกเลิกถูกใจ ที่มีผลกับเพลงทั้งหมดในรายการเพลงหรืออัลบั้ม",
|
||||
"name": "การกระทำที่เกี่ยวกับอัลบั้ม"
|
||||
},
|
||||
"album-color-theme": {
|
||||
"description": "ใช้ธีมและเอฟเฟกต์ไดนามิก โดยขึ้นอยู่กับสีของอัลบั้ม",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "สัดส่วนการผสมสี",
|
||||
"submenu": {
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "ธีมสีของอัลบั้ม"
|
||||
},
|
||||
"ambient-mode": {
|
||||
"description": "เอฟเฟกต์แสงที่ดึงสีอ่อนๆจากวีดิโอมาบนพื้นหลังแอป",
|
||||
"menu": {
|
||||
"blur-amount": {
|
||||
"label": "ระดับความเบลอ",
|
||||
"submenu": {
|
||||
"pixels": "{{blurAmount}} พิกเซล"
|
||||
}
|
||||
},
|
||||
"buffer": {
|
||||
"label": "บัฟเฟอร์",
|
||||
"submenu": {
|
||||
"buffer": "{{buffer}}"
|
||||
}
|
||||
},
|
||||
"opacity": {
|
||||
"label": "ความโปร่งใส",
|
||||
"submenu": {
|
||||
"percent": "{{opacity}}%"
|
||||
}
|
||||
},
|
||||
"quality": {
|
||||
"label": "คุณภาพ",
|
||||
"submenu": {
|
||||
"pixels": "{{quality}} พิกเซล"
|
||||
}
|
||||
},
|
||||
"size": {
|
||||
"label": "ขนาด",
|
||||
"submenu": {
|
||||
"percent": "{{size}}%"
|
||||
}
|
||||
},
|
||||
"smoothness-transition": {
|
||||
"label": "ความเรียบการเปลี่ยน",
|
||||
"submenu": {
|
||||
"during": "ในระยะเวลา {{interpolationTime}} วินาที"
|
||||
}
|
||||
},
|
||||
"use-fullscreen": {
|
||||
"label": "ใช้โหมดเต็มหน้าจอ"
|
||||
}
|
||||
},
|
||||
"name": "โหมดสภาพแวดล้อม"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "เพิ่มการรองรับ Youtube Music สำหรับ Widget Amuse Now Playing ของ 6K Labs",
|
||||
"name": "Amuse",
|
||||
"response": {
|
||||
"query": "API Server ของ Amuse ทำงานอยู่ ส่ง GET ไปที่ /query เพื่อขอข้อมูลเกี่ยวกับเพลง"
|
||||
}
|
||||
},
|
||||
"api-server": {
|
||||
"description": "เพิ่มเซิร์ฟเวอร์ API เพื่อควบคุมการเล่น",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "อนุญาต",
|
||||
"deny": "ปฏิเสธ"
|
||||
},
|
||||
"message": "อนุญาตให้ {{ID}} ({{origin}}) เข้าถึง API หรือไม่?",
|
||||
"title": "คำขอลงชื่อเข้าใช้งาน API"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "วิธีการลงชื่อเข้าใช้งาน",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "ลงชื่อเข้าใช้งานในคำขอแรก"
|
||||
},
|
||||
"none": {
|
||||
"label": "ไม่ต้องลงชื่อเข้าใช้งาน"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "ชื่อโฮสต์ (Hostname)"
|
||||
},
|
||||
"port": {
|
||||
"label": "พอร์ต (Port) ของ Server"
|
||||
}
|
||||
},
|
||||
"name": "เซิร์ฟเวอร์ API [เบต้า]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "ใส่ชื่อโฮสต์ (Hostname) เช่น 0.0.0.0 สำหรับเซิร์ฟเวอร์ API:",
|
||||
"title": "ชื่อโฮสต์ (Hostname)"
|
||||
},
|
||||
"port": {
|
||||
"label": "ใส่พอร์ต (Port) ในการเข้าถึงเซิร์ฟเวอร์ API:",
|
||||
"title": "พอร์ต (Port) ของ Server"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "ใช้การบีบอัดเสียง (ลดระดับเสียงของส่วนที่ดังที่สุดของสัญญาณและเพิ่มระดับเสียงของส่วนที่เบาที่สุด)",
|
||||
"name": "เครื่องมือบีบอัดเสียง"
|
||||
},
|
||||
"blur-nav-bar": {
|
||||
"description": "ทำให้แถบนำทางโปร่งแสงและเบลอ",
|
||||
"name": "เบลอแถบนำทาง"
|
||||
},
|
||||
"bypass-age-restrictions": {
|
||||
"description": "ข้ามการตรวจสอบอายุของ YouTube",
|
||||
"name": "ข้ามข้อจำกัดอายุ"
|
||||
},
|
||||
"captions-selector": {
|
||||
"description": "ตัวเลือกคำบรรยายสำหรับเพลงใน YouTube Music",
|
||||
"menu": {
|
||||
"autoload": "เลือกคำบรรยายที่ใช้ครั้งล่าสุดโดยอัตโนมัติ",
|
||||
"disable-captions": "ไม่มีคำบรรยายเป็นค่าเริ่มต้น"
|
||||
},
|
||||
"name": "ตัวเลือกคำบรรยาย",
|
||||
"prompt": {
|
||||
"selector": {
|
||||
"label": "ภาษาคำบรรยายปัจจุบัน: {{language}}",
|
||||
"none": "ไม่มี",
|
||||
"title": "เลือกภาษาคำบรรยาย"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
"title": "เปิดตัวเลือกคำบรรยาย"
|
||||
}
|
||||
},
|
||||
"compact-sidebar": {
|
||||
"description": "ตั้งค่าแถบข้างให้อยู่ในโหมดกระชับเสมอ",
|
||||
"name": "แถบข้างแบบกระชับ"
|
||||
},
|
||||
"crossfade": {
|
||||
"description": "การเฟดเพลงระหว่างเพลง",
|
||||
"menu": {
|
||||
"advanced": "ขั้นสูง"
|
||||
},
|
||||
"name": "การเฟดเพลง [เบต้า]",
|
||||
"prompt": {
|
||||
"options": {
|
||||
"multi-input": {
|
||||
"fade-in-duration": "ระยะเวลาการเฟดเข้าสู่ (มิลลิวินาที)",
|
||||
"fade-out-duration": "ระยะเวลาการเฟดออก (มิลลิวินาที)",
|
||||
"fade-scaling": {
|
||||
"label": "การปรับขนาดของการเฟด",
|
||||
"linear": "การเปลี่ยนแปลงเชิงเส้น",
|
||||
"logarithmic": "การเปลี่ยนแปลงเชิงลอการิทึม"
|
||||
},
|
||||
"seconds-before-end": "เฟดเพลง N วินาทีก่อนจบ"
|
||||
},
|
||||
"title": "ตัวเลือกเฟดเพลง"
|
||||
}
|
||||
}
|
||||
},
|
||||
"disable-autoplay": {
|
||||
"description": "เริ่มเพลงในโหมดหยุดชั่วคราว",
|
||||
"menu": {
|
||||
"apply-once": "ใช้เฉพาะเมื่อเริ่มต้นแอป"
|
||||
},
|
||||
"name": "ปิดใช้งานการเล่นอัตโนมัติ"
|
||||
},
|
||||
"discord": {
|
||||
"backend": {
|
||||
"already-connected": "กำลังพยายามเชื่อมต่อด้วยการเชื่อมต่อที่มีอยู่",
|
||||
"connected": "เชื่อมต่อกับดิสคอร์ดแล้ว",
|
||||
"disconnected": "ไม่มีการเชื่อมต่อกับดิสคอร์ดอยู่"
|
||||
},
|
||||
"description": "แสดงให้เพื่อนเห็นว่าคุณกำลังฟังอะไรด้วย Rich Presence บนดิสคอร์ด",
|
||||
"menu": {
|
||||
"auto-reconnect": "เชื่อมต่อใหม่โดยอัตโนมัติ",
|
||||
"clear-activity": "ล้างกิจกรรม",
|
||||
"clear-activity-after-timeout": "ล้างกิจกรรมหลังจากหมดเวลา",
|
||||
"connected": "เชื่อมต่อแล้ว",
|
||||
"disconnected": "ตัดการเชื่อมต่อ",
|
||||
"hide-duration-left": "ซ่อนระยะเวลาที่เหลือ",
|
||||
"hide-github-button": "ซ่อนปุ่มลิงก์ GitHub",
|
||||
"play-on-youtube-music": "เล่นบน YouTube Music",
|
||||
"set-inactivity-timeout": "ตั้งระยะเวลาไม่มีกิจกรรม"
|
||||
},
|
||||
"name": "แสดงกิจกรรมบนดิสคอร์ด",
|
||||
"prompt": {
|
||||
"set-inactivity-timeout": {
|
||||
"label": "ป้อนระยะเวลาไม่มีกิจกรรมเป็นวินาที:",
|
||||
"title": "ตั้งระยะเวลาไม่มีกิจกรรม"
|
||||
}
|
||||
}
|
||||
},
|
||||
"downloader": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"error": {
|
||||
"buttons": {
|
||||
"ok": "ตกลง"
|
||||
},
|
||||
"message": "อ๊ะ! ขออภัย ดาวน์โหลดล้มเหลว…",
|
||||
"title": "มีข้อผิดพลาดในการดาวน์โหลด!"
|
||||
},
|
||||
"start-download-playlist": {
|
||||
"buttons": {
|
||||
"ok": "ตกลง"
|
||||
},
|
||||
"detail": "({{playlistSize}} เพลง)",
|
||||
"message": "กำลังดาวน์โหลดเพลย์ลิสต์ {{playlistTitle}}",
|
||||
"title": "เริ่มต้นการดาวน์โหลดแล้ว"
|
||||
}
|
||||
},
|
||||
"feedback": {
|
||||
"conversion-progress": "การแปลง: {{percent}}%",
|
||||
"converting": "กำลังแปลง…",
|
||||
"done": "เสร็จสิ้น: {{filePath}}",
|
||||
"download-info": "กำลังดาวน์โหลด {{artist}} - {{title}} [{{videoId}}",
|
||||
"download-progress": "ดาวน์โหลด: {{percent}}%",
|
||||
"downloading": "กำลังดาวน์โหลด…",
|
||||
"downloading-counter": "กำลังดาวน์โหลด {{current}}/{{total}}…",
|
||||
"downloading-playlist": "กำลังดาวน์โหลดเพลย์ลีสต์ \"{{playlistTitle}}\" - {{playlistSize}} เพลง ({{playlistId}})",
|
||||
"downloading-playlist": "กำลังดาวน์โหลดเพลย์ลิสต์ \"{{playlistTitle}}\" - {{playlistSize}} เพลง ({{playlistId}})",
|
||||
"error-while-downloading": "เกิดข้อผิดพลาดในการดาวน์โหลด \"{{author}} - {{title}}\": {{error}}",
|
||||
"folder-already-exists": "มีโฟลเดอร์ {{playlistFolder}} อยู่แล้ว",
|
||||
"getting-playlist-info": "กำลังรับข้อมูลเพลย์ลิสต์…",
|
||||
@ -113,7 +464,23 @@
|
||||
"description": "ดาวน์โหลด MP3 / เสียงต้นฉบับโดยตรงจากอินเทอร์เฟซ",
|
||||
"menu": {
|
||||
"choose-download-folder": "เลือกโฟลเดอร์ดาวน์โหลด",
|
||||
"download-finish-settings": {
|
||||
"label": "ดาวน์โหลดเมื่อเล่นเสร็จ",
|
||||
"prompt": {
|
||||
"last-percent": "หลังจาก x เปอร์เซ็นต์",
|
||||
"last-seconds": "x วินาทีล่าสุด",
|
||||
"title": "ตั่งค่าเวลาที่จะดาวน์โหลด"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "การตั้งค่าขั้นสูง",
|
||||
"enabled": "เปิดใช้งาน",
|
||||
"mode": "โหมดเวลา",
|
||||
"percent": "โหมดเปอร์เซ็นต์",
|
||||
"seconds": "โหมดวินาที"
|
||||
}
|
||||
},
|
||||
"download-playlist": "ดาวน์โหลดเพลย์ลิสต์",
|
||||
"presets": "พรีเซ็ต",
|
||||
"skip-existing": "ข้ามไฟล์ที่มีอยู่แล้ว"
|
||||
},
|
||||
"name": "ตัวดาวน์โหลด",
|
||||
@ -123,6 +490,356 @@
|
||||
"templates": {
|
||||
"button": "ดาวน์โหลด"
|
||||
}
|
||||
},
|
||||
"equalizer": {
|
||||
"description": "เพิ่มอีควอไลเซอร์ให้ที่เล่นเพลง",
|
||||
"menu": {
|
||||
"presets": {
|
||||
"label": "การตั้งค่าล่วงหน้า",
|
||||
"list": {
|
||||
"bass-booster": "เพิ่มเบส"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "อีควอไลเซอร์"
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "ทำให้ตัวเลือกความดังมีลักษณะเอ็กซ์โปเนนเชียล เพื่อให้ง่ายต่อการเลือกระดับความดังที่ต่ำลง",
|
||||
"name": "ระดับเสียงแบบเอ็กซโปเนนเชียล"
|
||||
},
|
||||
"in-app-menu": {
|
||||
"description": "ให้เแถบเมนูดูทันสมัย มืดหรือเป็นสีของอัลบั้มอย่างน่าสนใจ",
|
||||
"menu": {
|
||||
"hide-dom-window-controls": "ซ่อนตัวควบคุมหน้าต่าง DOM"
|
||||
},
|
||||
"name": "เมนูในแอป"
|
||||
},
|
||||
"lumiastream": {
|
||||
"description": "เพิ่มการรองรับ ลูเมีย สตรีม",
|
||||
"name": "ลูเมีย สตรีม [เบต้า]"
|
||||
},
|
||||
"lyrics-genius": {
|
||||
"description": "เพิ่มการสนับสนุนเนื้อเพลงสำหรับเพลงหลายๆ เพลง",
|
||||
"menu": {
|
||||
"romanized-lyrics": "เนื้อเพลงโรมันไรซ์"
|
||||
},
|
||||
"name": "เนื้อเพลงแบบอัจฉริยะ",
|
||||
"renderer": {
|
||||
"fetched-lyrics": "ดึงข้อมูลเนื้อเพลงแบบอัจฉริยะแล้ว"
|
||||
}
|
||||
},
|
||||
"music-together": {
|
||||
"description": "แบ่งปันเพลย์ลิสต์กับผู้อื่น โดยเมื่อเจ้าภาพเล่นเพลง ทุกคนอื่นๆ จะได้ยินเพลงเดียวกัน",
|
||||
"dialog": {
|
||||
"enter-host": "ป้อนรหัสโฮสต์"
|
||||
},
|
||||
"internal": {
|
||||
"save": "บันทึก",
|
||||
"track-source": "แหล่งข้อมูลเพลง",
|
||||
"unknown-user": "ผู้ใช้ที่ไม่รู้จัก"
|
||||
},
|
||||
"menu": {
|
||||
"click-to-copy-id": "คัดลอกรหัสโฮสต์",
|
||||
"close": "ปิด Music Together",
|
||||
"connected-users": "ผู้ใช้ที่เชื่อมต่อ",
|
||||
"disconnect": "ตัดการเชื่อมต่อ Music Together",
|
||||
"empty-user": "ไม่มีผู้ใช้ที่เชื่อมต่อ",
|
||||
"host": "โฮสต์ Music Together",
|
||||
"join": "เข้าร่วม Music Together",
|
||||
"permission": {
|
||||
"all": "อนุญาตให้แขกควบคุมเพลย์ลิสต์และเครื่องเล่น",
|
||||
"host-only": "เฉพาะโฮสต์เท่านั้นที่สามารถควบคุมเพลย์ลิสต์และเครื่องเล่นได้",
|
||||
"playlist": "อนุญาตให้แขกควบคุมเพลย์ลิสต์"
|
||||
},
|
||||
"set-permission": "เปลี่ยนการอนุญาตในการควบคุม",
|
||||
"status": {
|
||||
"disconnected": "ตัดการเชื่อมต่อแล้ว",
|
||||
"guest": "เชื่อมต่อเป็นแขก",
|
||||
"host": "เชื่อมต่อเป็นโฮสต์"
|
||||
}
|
||||
},
|
||||
"name": "Music Together [เบต้า]",
|
||||
"toast": {
|
||||
"add-song-failed": "เพิ่มเพลงล้มเหลว",
|
||||
"closed": "ปิด Music Together แล้ว",
|
||||
"disconnected": "การฟังเพลงร่วมกัน ถูกตัดการเชื่อมต่อแล้ว",
|
||||
"host-failed": "มีปัญหาสำหรับโฮสต์ฟังเพลงร่วมกัน",
|
||||
"id-copied": "ID โฮสต์ถูกคัดลอกแล้ว",
|
||||
"id-copy-failed": "ไม่สามรถคัดลอก ID โฮสต์ได้",
|
||||
"join-failed": "ไม่สามรถเข้าร่วมฟังเพลงร่วมกันได้",
|
||||
"joined": "เข้าร่วมฟังเพลงด้วยกันแล้ว",
|
||||
"permission-changed": "สิทธิการฟังเพลงร่วมกันเปลี่ยนเป็น \"{{permission}}\"",
|
||||
"remove-song-failed": "ไม่สารถลบเพลงได้",
|
||||
"user-connected": "{{name}}เข้าร่วมตี้ฟังเพลงด้วยกัน",
|
||||
"user-disconnected": "{{name}}ออกจากตี้ฟังเพลงด้วยกัน"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"description": "ลูกศรนำทางถัดไป/ย้อนกลับรวมอยู่ในอินเทอร์เฟซโดยตรง เช่นเดียวกับในเบราว์เซอร์ที่คุณชื่นชอบ",
|
||||
"name": "การนำทาง"
|
||||
},
|
||||
"no-google-login": {
|
||||
"description": "ลบปุ่มเข้าสู่ระบบ Google และลิงก์ออกจากอินเทอร์เฟซ",
|
||||
"name": "ไม่ล็อกอิน Google"
|
||||
},
|
||||
"notifications": {
|
||||
"description": "แสดงการแจ้งเตือนเมื่อเพลงเริ่มเล่น (การแจ้งเตือนมีให้ใช้งานบน Windows)",
|
||||
"menu": {
|
||||
"interactive": "การแจ้งเตือนแบบโต้ตอบ",
|
||||
"interactive-settings": {
|
||||
"label": "การตั้งค่าการโต้ตอบ",
|
||||
"submenu": {
|
||||
"hide-button-text": "ซ่อนข้อความปุ่ม",
|
||||
"refresh-on-play-pause": "รีเฟรชเมื่อเล่น/หยุดชั่วคราว",
|
||||
"tray-controls": "เปิด/ปิดเมื่อคลิกถาด"
|
||||
}
|
||||
},
|
||||
"priority": "ลำดับความสำคัญของการแจ้งเตือน",
|
||||
"toast-style": "แบบไม่ถาวร",
|
||||
"unpause-notification": "แสดงการแจ้งเตือนเมื่อหยุดพัก"
|
||||
},
|
||||
"name": "การแจ้งเตือน"
|
||||
},
|
||||
"picture-in-picture": {
|
||||
"description": "อนุญาตให้สลับแอปเป็นโหมดภาพในภาพ",
|
||||
"menu": {
|
||||
"always-on-top": "อยู่ด้านบนเสมอ",
|
||||
"hotkey": {
|
||||
"label": "ปุ่มลัด",
|
||||
"prompt": {
|
||||
"keybind-options": {
|
||||
"hotkey": "ปุ่มลัด"
|
||||
},
|
||||
"label": "เลือกปุ่มลัดเพื่อสลับโหมดภาพในภาพ",
|
||||
"title": "ปุ่มลัดสำหรับโหมดภาพในภาพ"
|
||||
}
|
||||
},
|
||||
"save-window-position": "บันทึกตำแหน่งหน้าต่าง",
|
||||
"save-window-size": "บันทึกขนาดหน้าต่าง",
|
||||
"use-native-pip": "ใช้โหมดภาพซ้อนภาพของเบราเซอร์"
|
||||
},
|
||||
"name": "โหมดภาพซ้อนภาพ",
|
||||
"templates": {
|
||||
"button": "เปิดโหมดภาพซ้อนภาพ"
|
||||
}
|
||||
},
|
||||
"playback-speed": {
|
||||
"description": "ฟังเพลงได้ทั้งช้าและเร็ว เพิ่มที่เลื่อนปรับความเร็วของเพลง",
|
||||
"name": "ความเร็วเพลง",
|
||||
"templates": {
|
||||
"button": "ความเร็ว"
|
||||
}
|
||||
},
|
||||
"precise-volume": {
|
||||
"description": "ควบคุมระดับเสียงได้อย่างแม่นยำด้วยที่เลื่อนเมาส์หรือปุ่มลัด พร้อมด้วยหน้าจอแสดงข้อมูลและขั้นระดับเสียงที่ปรับแต่งได้",
|
||||
"menu": {
|
||||
"arrows-shortcuts": "ควบคุมด้วยปุ่มลูกศรเมื่ออยู่ในแอป",
|
||||
"custom-volume-steps": "ตั้งขั้นการปรับระดับเสียง",
|
||||
"global-shortcuts": "ตั้งปุ่มลัดที่ใช้ได้ทั้งระบบ"
|
||||
},
|
||||
"name": "ระดับเสียงแม่นยำ",
|
||||
"prompt": {
|
||||
"global-shortcuts": {
|
||||
"keybind-options": {
|
||||
"decrease": "ปุ่มลดระดับเสียง",
|
||||
"increase": "ปุ่มเพิ่มระดับเสียง"
|
||||
},
|
||||
"label": "ตั้งค่าปุ่มลัดระดับเสียงที่ใช้ได้ทั้งระบบ:",
|
||||
"title": "ปุ่มลัดระดับเสียงที่ใช้ได้ทั้งระบบ"
|
||||
},
|
||||
"volume-steps": {
|
||||
"label": "ตั้งขั้นการเพิ่ม/ลดระดับเสียง",
|
||||
"title": "ขั้นการปรับระดับเสียง"
|
||||
}
|
||||
}
|
||||
},
|
||||
"quality-changer": {
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"quality-changer": {
|
||||
"detail": "คุณภาพปัจจุบัน: {{quality}}",
|
||||
"message": "เลือกคุณภาพวิดีโอ:",
|
||||
"title": "เลือกคุณภาพวิดีโอ"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "อนุญาตให้เปลี่ยนคุณภาพของวิดีโอด้วยปุ่มที่แสดงเหนือวิดีโอ",
|
||||
"name": "ที่เปลี่ยนคุณภาพวิดีโอ"
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "รองรับการบันทึกการเล่นเพลง (เช่น last.fm, Listenbrainz)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "เกิดปัญหาระหว่างเข้าใช้งาน Last.fm\nซ่อนข้อความนี้จนการรีสตาร์ตครั้งถัดไป",
|
||||
"title": "เกิดปัญหาในการเข้าใช้งาน"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "การตั้งค่า API Last.fm"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": "ใส่ user token ของ ListenBrainz"
|
||||
},
|
||||
"scrobble-alternative-title": "ใช้ชื่ออื่น",
|
||||
"scrobble-other-media": "บันทึกการเล่นสื่ออื่นๆ"
|
||||
},
|
||||
"name": "บันทึกการเล่น (Scrobbler)",
|
||||
"prompt": {
|
||||
"lastfm": {
|
||||
"api-key": "API Key ของ Last.fm",
|
||||
"api-secret": "API secret ของ Last.fm"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": {
|
||||
"label": "ใส่ user token ListenBrainz ของคุณ:",
|
||||
"title": "token ListenBrainz"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"shortcuts": {
|
||||
"description": "อนุญาตให้ตั้งปุ่มลัดทั่วระบบสำหรับการเล่น (เล่น/หยุดชั่วคราว/ถัดไป/ก่อนหน้า) และปิดการแสดงผลสื่อโดยทับปุ่มควบคุมสื่อ เปิด Ctrl/CMD + F เพื่อค้นหา เปิดการใช้งานการควบคุมเพลงผ่าน MPRIS สำหรับ Linux และปุ่มลัดที่กำหนดเองได้สำหรับผู้ใช้ขั้นสูง",
|
||||
"menu": {
|
||||
"override-media-keys": "เปลี่ยนการทำงานของปุ่มควบคุมสื่อ",
|
||||
"set-keybinds": "ตั้งค่าปุ่มลัดควบคุมเพลง"
|
||||
},
|
||||
"name": "ปุ่มลัด (และ MPRIS)",
|
||||
"prompt": {
|
||||
"keybind": {
|
||||
"keybind-options": {
|
||||
"next": "เพลงถัดไป",
|
||||
"play-pause": "เล่น/หยุดชั่วคราว",
|
||||
"previous": "เพลงก่อนหน้า"
|
||||
},
|
||||
"label": "ตั้งค่าปุ่มลัดทั่วระบบสำหรับควบคุมเพลง:",
|
||||
"title": "ปุ่มลัดทั่วระบบ"
|
||||
}
|
||||
}
|
||||
},
|
||||
"skip-disliked-songs": {
|
||||
"description": "ข้ามเพลงที่ไม่ถูกใจ",
|
||||
"name": "ข้ามเพลงที่ไม่ถูกใจ"
|
||||
},
|
||||
"skip-silences": {
|
||||
"description": "ข้ามช่วงที่เงียบในเพลงโดยอัตโนมัติ",
|
||||
"name": "ข้ามช่วงเงียบ"
|
||||
},
|
||||
"sponsorblock": {
|
||||
"description": "ข้ามช่วงที่ไม่ใช่เพลงเช่น intro/outro หรือ ช่วงที่ไม่มีเพลงเล่นใน mv โดยอัตโนมัติ",
|
||||
"name": "SponsorBlock"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "ให้เนื้อเพลงที่ตรงกับเวลาของเพลง ผ่านผู้ให้บริการเช่น LRClib",
|
||||
"errors": {
|
||||
"fetch": "⚠️\tเกิดปัญหาในการดึงเนื้อเพลง\n\tกรุณาลองใหม่ภายหลัง",
|
||||
"not-found": "⚠️ ไม่เจอเนื้อเพลงสำหรับเพลงนี้"
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "อักขระคั่นระหว่างเนื้อเพลง",
|
||||
"tooltip": "เลือกอักขระที่คั่นในช่วงที่อยู่ระหว่างเนื้อเพลง"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "เอฟเฟกต์บรรทัด",
|
||||
"submenu": {
|
||||
"fancy": {
|
||||
"label": "อลังการ",
|
||||
"tooltip": "ใช้เอฟเฟกต์ใหญ่คล้ายบนแอพ บนบรรทัดปัจจุบัน"
|
||||
},
|
||||
"focus": {
|
||||
"label": "เด่น",
|
||||
"tooltip": "ทำให้แค่บรรทัดปัจจุบันสีขาว"
|
||||
},
|
||||
"offset": {
|
||||
"label": "เลื่อน",
|
||||
"tooltip": "เลื่อนบรรทัดปัจจุบันไปทางขวา"
|
||||
},
|
||||
"scale": {
|
||||
"label": "ขยายขนาด",
|
||||
"tooltip": "ขยายบรรทัดปัจจุบันให้ใหญ่ขึ้น"
|
||||
}
|
||||
},
|
||||
"tooltip": "เลือกเอฟเฟกต์ที่จะใช้กับบรรทัดปัจจุบัน"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "ให้เนื้อเพลงตรงกับเพลงเป๊ะๆ",
|
||||
"tooltip": "คำนวณมิลิวินาทีในการแสดงบรรทัดถัดไป (มีผลเล็กน้อยกับประสิทธิภาพการทำงาน)"
|
||||
},
|
||||
"romanization": {
|
||||
"label": "เนื้อเพลงตัวด้วยอักษรโรมัน",
|
||||
"tooltip": "ถ้าหากเนื้อเพลงอยู่ในภาษาอื่น ลองเปลี่ยนการแสดงผลโดยใช้เวอร์ชั่นลาติน"
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "แสดงเนื้อเพลงแม้ไม่ตรงเป๊ะ",
|
||||
"tooltip": "ถ้าหาเนื้อเพลงไม่เจอจะลองหาด้วยคำค้นหาที่ต่างกัน\nอาจได้เนื้อเพลงไม่ตรง"
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "แสดงตำแหน่งเวลา",
|
||||
"tooltip": "แสดงตำแหน่งเวลาข้างๆเนื้อเพลง"
|
||||
}
|
||||
},
|
||||
"name": "เนื้อเพลงตรงกับเพลง",
|
||||
"refetch-btn": {
|
||||
"fetching": "กำลังดึงข้อมูล...",
|
||||
"normal": "ดึงเนื้อเพลงใหม่"
|
||||
},
|
||||
"warnings": {
|
||||
"duration-mismatch": "⚠️ - เนื้อเพลงอาจไม่ตรงกับเวลาเนื่องจากความยาวไม่ตรงกัน",
|
||||
"inexact": "⚠️ - เนื้อเพลงอาจไม่ตรง",
|
||||
"instrumental": "⚠️ - เพลงนี้เป็นเพลงบรรเลง"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "ควบคุมการเล่นผ่าน taskbar ของ Windows",
|
||||
"name": "ควบคุมสื่อผ่าน Taskbar"
|
||||
},
|
||||
"touchbar": {
|
||||
"description": "เพิ่ม Widget บน TouchBar สำหรับผู้ใช้ macOS",
|
||||
"name": "TouchBar"
|
||||
},
|
||||
"tuna-obs": {
|
||||
"description": "ใช้งานร่วมกันกับปลั้กอิน Tuna บน OBS",
|
||||
"name": "Tuna OBS"
|
||||
},
|
||||
"unobtrusive-player": {
|
||||
"description": "ป้องกันเครื่องเล่นแสดงขึ้นเมื่อเริ่มเล่นเพลง",
|
||||
"name": "เครื่องเล่นที่ไม่รบกวน"
|
||||
},
|
||||
"video-toggle": {
|
||||
"description": "เพิ่มปุ่มสลับระหว่างโหมดเพลงกับโหมดวิดีโอ หรือลบแถบวิดีโอออกทั้งแถบ",
|
||||
"menu": {
|
||||
"align": {
|
||||
"label": "ตำแหน่งปุ่ม",
|
||||
"submenu": {
|
||||
"left": "ซ้าย",
|
||||
"middle": "กลาง",
|
||||
"right": "ขวา"
|
||||
}
|
||||
},
|
||||
"force-hide": "บังคับลบแถบวิดีโอ",
|
||||
"mode": {
|
||||
"label": "โหมด",
|
||||
"submenu": {
|
||||
"custom": "ปุ่มกำหนดเอง",
|
||||
"disabled": "ปิด",
|
||||
"native": "ปุ่มเริ่มต้น"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "ปุ่มวิดีโอ",
|
||||
"templates": {
|
||||
"button": "เพลง"
|
||||
}
|
||||
},
|
||||
"visualizer": {
|
||||
"description": "เพิ่มวิชวลไลเซอร์ให้ที่เล่นเพลง",
|
||||
"menu": {
|
||||
"visualizer-type": "ประเภทวิชวลไลเซอร์"
|
||||
},
|
||||
"name": "วิชวลไลเซอร์"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -158,6 +158,14 @@
|
||||
},
|
||||
"remove-upgrade-button": "Yükseltme düğmesini kaldır",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "İptal",
|
||||
"remove": "Kaldır"
|
||||
},
|
||||
"remove-theme": "Özel temayı kaldırmak istediğinizden emin misiniz?",
|
||||
"remove-theme-message": "Bu işlem özel temayı kaldıracaktır"
|
||||
},
|
||||
"label": "Tema",
|
||||
"submenu": {
|
||||
"import-css-file": "Özel CSS dosyanı içeri aktar",
|
||||
@ -199,6 +207,10 @@
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "Bir reklam oynatılırsa sesi kapatır ve oynatma hızını 16x olarak ayarlar",
|
||||
"name": "Hızlandırma"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "Tüm reklamları ve izleyicileri engelle",
|
||||
"menu": {
|
||||
@ -267,6 +279,56 @@
|
||||
},
|
||||
"name": "Ambiyans Modu"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "6K Labs'ın Amuse oynatma widget'ı için YouTube Music desteği ekler",
|
||||
"name": "Amuse",
|
||||
"response": {
|
||||
"query": "Amuse API sunucusu çalışıyor. Şarkı bilgilerini almak için GET /query kullanabilirsiniz."
|
||||
}
|
||||
},
|
||||
"api-server": {
|
||||
"description": "APİ ekle ve oynatıcıyı kontrol et",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "İzin ver",
|
||||
"deny": "Reddet"
|
||||
},
|
||||
"message": "{{ID}} ({{origin}}) 'nın APIye erişmesine izin verilsin mi?",
|
||||
"title": "APİ yetkilendirme isteği"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Yetkilendirme stratejisi",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "İlk istekte yetkilendir"
|
||||
},
|
||||
"none": {
|
||||
"label": "Yetkilendirme Yok"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "Ana bilgisayar adı"
|
||||
},
|
||||
"port": {
|
||||
"label": "Port"
|
||||
}
|
||||
},
|
||||
"name": "API sunucusu [Beta]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "API sunucusu için hostname (örneğin 0.0.0.0) girin:",
|
||||
"title": "Hostname"
|
||||
},
|
||||
"port": {
|
||||
"label": "API sunucusu için port girin:",
|
||||
"title": "Bağlantı Noktası"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Ses sıkıştırma (dalganın en gürültülü bölümlerinin ses düzeyini azaltır ve daha yumuşak bölümlerin ses düzeyini artırır)",
|
||||
"name": "Ses Sıkıştırma"
|
||||
@ -402,6 +464,21 @@
|
||||
"description": "MP3 / kaynak sesini doğrudan arayüzden indir",
|
||||
"menu": {
|
||||
"choose-download-folder": "İndirme klasörünü seç",
|
||||
"download-finish-settings": {
|
||||
"label": "Bittiğinde indir",
|
||||
"prompt": {
|
||||
"last-percent": "Yüzde x'ten sonra",
|
||||
"last-seconds": "Son x saniyede",
|
||||
"title": "Ne zaman indirileceğini ayarla"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "Gelişmiş",
|
||||
"enabled": "Etkin",
|
||||
"mode": "Zaman türü",
|
||||
"percent": "Yüzde",
|
||||
"seconds": "Saniye"
|
||||
}
|
||||
},
|
||||
"download-playlist": "Oynatma listesini indir",
|
||||
"presets": "Hazır Ayarlar",
|
||||
"skip-existing": "Mevcut dosyaları atla"
|
||||
@ -414,6 +491,18 @@
|
||||
"button": "İndir"
|
||||
}
|
||||
},
|
||||
"equalizer": {
|
||||
"description": "Oynatıcıya ekolayzer desteği ekler",
|
||||
"menu": {
|
||||
"presets": {
|
||||
"label": "Ön Ayarlar",
|
||||
"list": {
|
||||
"bass-booster": "Bass güçlendirici"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Ekolayzer"
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "Ses seviyesi kaydırıcısını üstel hale getirir, böylece daha düşük ses seviyelerini seçmek daha kolay olur.",
|
||||
"name": "Üstel Ses Seviyesi"
|
||||
@ -579,6 +668,14 @@
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "Listeleme desteği ekler (lastfm, listenbrainz ve benzeri)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "Last.fm ile kimlik doğrulaması yapılamadı\nBir sonraki yeniden başlatmaya kadar açılır pencereyi gizle.",
|
||||
"title": "Kimlik Doğrulama Başarısız"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "Last.fm API Ayarları"
|
||||
@ -586,6 +683,7 @@
|
||||
"listenbrainz": {
|
||||
"token": "ListenBrainz kullanıcı kimliğinizi girin"
|
||||
},
|
||||
"scrobble-alternative-title": "Alternatif başlıklar kullan",
|
||||
"scrobble-other-media": "Diğer medya ortamlarında listele"
|
||||
},
|
||||
"name": "Listeleyici",
|
||||
@ -633,6 +731,67 @@
|
||||
"description": "Giriş/Çıkış gibi müzik olmayan kısımları veya müzik videolarında şarkının çalmadığı kısımları otomatik olarak atlar",
|
||||
"name": "SponsorBlock"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "LRClib gibi sağlayıcıları kullanarak şarkılara senkronize şarkı sözleri sağlar.",
|
||||
"errors": {
|
||||
"fetch": "⚠️ \tŞarkı sözleri alınırken bir hata oluştu.\n\tLütfen daha sonra tekrar deneyin.",
|
||||
"not-found": "⚠️ Bu şarkı için şarkı sözleri bulunamadı."
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "Şarkı sözleri arasında varsayılan karakter",
|
||||
"tooltip": "Şarkı sözleri arasındaki boşluk için kullanılacak varsayılan karakteri seçin"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "Çizgi etkisi",
|
||||
"submenu": {
|
||||
"fancy": {
|
||||
"label": "Süslü",
|
||||
"tooltip": "Mevcut satırda büyük, uygulama benzeri efektler kullan"
|
||||
},
|
||||
"focus": {
|
||||
"label": "odak",
|
||||
"tooltip": "Yalnızca geçerli satırı beyaz yapın"
|
||||
},
|
||||
"offset": {
|
||||
"label": "telafi etmek,ofset",
|
||||
"tooltip": "Geçerli satırın sağındaki ofset"
|
||||
},
|
||||
"scale": {
|
||||
"label": "ölçek",
|
||||
"tooltip": "Geçerli satırı ölçeklendirir"
|
||||
}
|
||||
},
|
||||
"tooltip": "Geçerli satıra uygulanacak efekti seçin"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "Şarkı sözlerini mükemmel şekilde senkronize edin",
|
||||
"tooltip": "Bir sonraki satırın görüntülenmesini milisaniyesine kadar hesaplayın (performans üzerinde küçük bir etkisi olabilir)"
|
||||
},
|
||||
"romanization": {
|
||||
"label": "Sözleri Romanize Et",
|
||||
"tooltip": "Sözler başka bir dilde gözüküyorsa, Latin versiyonunu dene."
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "Kesin olmasa bile şarkı sözlerini gösterin",
|
||||
"tooltip": "Şarkı bulunamazsa, eklenti farklı bir arama sorgusuyla tekrar dener. \nİkinci denemenin sonucu tam olmayabilir."
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "Zaman kodlarını göster",
|
||||
"tooltip": "Şarkı sözlerinin yanında zaman kodlarını gösterin"
|
||||
}
|
||||
},
|
||||
"name": "Senkronize Şarkı Sözleri",
|
||||
"refetch-btn": {
|
||||
"fetching": "Getiriliyor...",
|
||||
"normal": "Refetch şarkı sözleri"
|
||||
},
|
||||
"warnings": {
|
||||
"duration-mismatch": "⚠️ - Süre uyuşmazlığı nedeniyle şarkı sözleri senkronize olmayabilir.",
|
||||
"inexact": "⚠️ - Bu şarkının sözleri tam olmayabilir",
|
||||
"instrumental": "⚠️ - Bu enstrümantal bir şarkıdır"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "Windows görev çubuğu üzerinden oynatmayı kontrol edebilmenize olanak sağlar",
|
||||
"name": "Görev Çubuğu Medya Kontrolü"
|
||||
@ -645,6 +804,10 @@
|
||||
"description": "OBS eklentisi Tuna ile entegrasyon sağlar",
|
||||
"name": "Tuna OBS"
|
||||
},
|
||||
"unobtrusive-player": {
|
||||
"description": "Müzik oynatıcının şarkı çalarken saçmalamasını engeller",
|
||||
"name": "Göze Batmayan Çalar"
|
||||
},
|
||||
"video-toggle": {
|
||||
"description": "Video/Şarkı modu arasında geçiş yapmak için bir düğme ekler. ayrıca isteğe bağlı olarak tüm video sekmesini kaldırabilir",
|
||||
"menu": {
|
||||
|
||||
@ -158,6 +158,14 @@
|
||||
},
|
||||
"remove-upgrade-button": "Прибрати кнопку оновлення",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "Скасувати",
|
||||
"remove": "Видалити"
|
||||
},
|
||||
"remove-theme": "Ви впевнені, що хочете видалити власну тему?",
|
||||
"remove-theme-message": "Це видалить власну тему"
|
||||
},
|
||||
"label": "Тема",
|
||||
"submenu": {
|
||||
"import-css-file": "Імпортувати власний CSS файл",
|
||||
@ -199,6 +207,10 @@
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "При програванні реклами звук вимикається і встановлюється швидкість відтворення 16х",
|
||||
"name": "Пришвидшення релками"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "Блокувати всю рекламу та відстеження з коробки",
|
||||
"menu": {
|
||||
@ -267,6 +279,56 @@
|
||||
},
|
||||
"name": "Режим навколишнього середовища"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "Додає підтримку YouTube Music для віджета Amuse now playing від 6K Labs",
|
||||
"name": "Amuse",
|
||||
"response": {
|
||||
"query": "Сервер Amuse API запущено. Запит GET /query для отримання інформації про пісню."
|
||||
}
|
||||
},
|
||||
"api-server": {
|
||||
"description": "Додає API сервер для контролю плеєра",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "Дозволити",
|
||||
"deny": "Відмінити"
|
||||
},
|
||||
"message": "Дозволити {{ID}} ({{origin}}) доступ до API?",
|
||||
"title": "Запит авторизації до API"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Стратегія авторизації",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "Авторизувати при першому запиті"
|
||||
},
|
||||
"none": {
|
||||
"label": "Немає авторизації"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "Назва серверу"
|
||||
},
|
||||
"port": {
|
||||
"label": "Порт"
|
||||
}
|
||||
},
|
||||
"name": "API сервер [Бета]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "Введіть ім'я хоста (наприклад 0.0.0.0) для API серверу:",
|
||||
"title": "Ім'я хоста"
|
||||
},
|
||||
"port": {
|
||||
"label": "Введіть порт API серверу:",
|
||||
"title": "Порт"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Застосувати стиснення аудіо (зменшити гучність найгучніших фрагментів сигналу та збільшити гучність тихих фрагментів)",
|
||||
"name": "Аудіокомпресор"
|
||||
@ -402,6 +464,21 @@
|
||||
"description": "Завантажує MP3 / джерело аудіо безпосередньо з інтерфейсу",
|
||||
"menu": {
|
||||
"choose-download-folder": "Оберіть папку для завантаження",
|
||||
"download-finish-settings": {
|
||||
"label": "Скачати по завершенню",
|
||||
"prompt": {
|
||||
"last-percent": "Після Х відсотків",
|
||||
"last-seconds": "Останні Х секунд",
|
||||
"title": "Налаштувати коли завантажувати"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "Розширені",
|
||||
"enabled": "Увімкнено",
|
||||
"mode": "Режим часу",
|
||||
"percent": "Відсоток",
|
||||
"seconds": "Секунди"
|
||||
}
|
||||
},
|
||||
"download-playlist": "Завантажити плейлист",
|
||||
"presets": "Попередні налаштування",
|
||||
"skip-existing": "Пропустити наявні файли"
|
||||
@ -414,6 +491,18 @@
|
||||
"button": "Завантажити"
|
||||
}
|
||||
},
|
||||
"equalizer": {
|
||||
"description": "Додає еквалайзер до програвача",
|
||||
"menu": {
|
||||
"presets": {
|
||||
"label": "Пресети",
|
||||
"list": {
|
||||
"bass-booster": "Підсилювач басів"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Еквалайзер"
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "Робить регулятор гучності експоненціальним, що полегшує вибір тихих рівнів гучності.",
|
||||
"name": "Експоненціальна гучність"
|
||||
@ -579,6 +668,14 @@
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "Додає підтримку скроблінгу (last.fm, Listenbrainz тощо)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "Не вдалося автентифікуватися на Last.fm\nСховати до наступного запуску.",
|
||||
"title": "Не вдалося автентифікуватися"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "Налаштування API Last.fm"
|
||||
@ -586,6 +683,7 @@
|
||||
"listenbrainz": {
|
||||
"token": "Ввести токен користувача ListenBrainz"
|
||||
},
|
||||
"scrobble-alternative-title": "Використовувати альтернативні назви",
|
||||
"scrobble-other-media": "Скробилити інші медіа"
|
||||
},
|
||||
"name": "Скроблер",
|
||||
@ -633,6 +731,67 @@
|
||||
"description": "Автоматично пропускати немузичні частини, такі як вступ/закінчення або частини музичних відеороликів, де не відтворюється музика",
|
||||
"name": "SponsorBlock"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "Додає синхронізовані тексти до пісень використовуючи провайдери, такі як LRClib.",
|
||||
"errors": {
|
||||
"fetch": "⚠️ - При завантаженні слів пісні сталась помилка. Спробуйте пізніше.",
|
||||
"not-found": "⚠️ До цієї пісні текст не знайдено."
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "Символ за замовчуванням між текстами пісень",
|
||||
"tooltip": "Виберіть символ за замовчуванням, який буде використовуватися для проміжку між текстами пісень"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "Лінійний ефект",
|
||||
"submenu": {
|
||||
"fancy": {
|
||||
"label": "Fancy",
|
||||
"tooltip": "Використовуйте великі, додаткоподібні ефекти на поточному рядку"
|
||||
},
|
||||
"focus": {
|
||||
"label": "Зосереджитись",
|
||||
"tooltip": "Зробити білим лише поточний рядок"
|
||||
},
|
||||
"offset": {
|
||||
"label": "Офсет",
|
||||
"tooltip": "Офсет з права від нинішньої лінії"
|
||||
},
|
||||
"scale": {
|
||||
"label": "Масштабувати",
|
||||
"tooltip": "Масштабувати поточну лінію"
|
||||
}
|
||||
},
|
||||
"tooltip": "Виберіть ефект, який потрібно застосувати до поточної лінії"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "Зробити текст пісні ідеально синхронізованим",
|
||||
"tooltip": "Обчисли до мілісекунд відображення наступного рядка (може мати невеликий вплив на продуктивність)"
|
||||
},
|
||||
"romanization": {
|
||||
"label": "Транслітерувати текст пісень",
|
||||
"tooltip": "Якщо текст пісні іншою мовою, спробувати його відобразити латинською версією."
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "Показувати текст пісні, навіть якщо він неточний",
|
||||
"tooltip": "Якщо пісня не знайдена, плагін повторює спробу з іншим пошуковим запитом.\nРезультат з другої спроби може бути не точним."
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "Відображати часові коди",
|
||||
"tooltip": "Відображати часові коди біля тексту"
|
||||
}
|
||||
},
|
||||
"name": "Синхронізовані тексти",
|
||||
"refetch-btn": {
|
||||
"fetching": "Завантаження...",
|
||||
"normal": "Перезавантажити текст"
|
||||
},
|
||||
"warnings": {
|
||||
"duration-mismatch": "⚠️ - Тексти цієї пісні можуть бути не синхронізовані через не співпадіння довжини пісні.",
|
||||
"inexact": "⚠️ - Текст цієї пісні може не співпадати",
|
||||
"instrumental": "⚠️ - Це інструментал"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "Керування відтворенням з панелі завдань Windows",
|
||||
"name": "Керування медіа на панелі завдань"
|
||||
@ -645,6 +804,10 @@
|
||||
"description": "Інтеграція з плагіном Tuna для OBS",
|
||||
"name": "Tuna OBS"
|
||||
},
|
||||
"unobtrusive-player": {
|
||||
"description": "Запобігання спливання плеєру під час відтворення пісні",
|
||||
"name": "Ненав'язливий програвач"
|
||||
},
|
||||
"video-toggle": {
|
||||
"description": "Додає кнопку для перемикання між режимом відео і режимом пісні. Також може опціонально видаляти вкладку відео",
|
||||
"menu": {
|
||||
|
||||
204
src/i18n/resources/ur.json
Normal file
@ -0,0 +1,204 @@
|
||||
{
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "پلگ ان {{pluginName}}::{{contextName}} پر عمل کرنے میں ناکام",
|
||||
"executed-at-ms": "پلگ ان {{pluginName}}::{{contextName}} کو {{ms}}ms پر عمل میں لایا گیا",
|
||||
"initialize-failed": "پلگ ان \"{{pluginName}}\" کو شروع کرنے میں ناکام",
|
||||
"load-all": "تمام پلگ ان لوڈ ہو رہے ہیں",
|
||||
"load-failed": "\"{{pluginName}}\" پلگ ان لوڈ کرنے میں ناکام",
|
||||
"loaded": "پلگ ان \"{{pluginName}}\" لوڈ ہو گیا",
|
||||
"unload-failed": "پلگ ان \"{{pluginName}}\" کو لوڈ کرنے میں ناکام",
|
||||
"unloaded": "پلگ ان \"{{pluginName}}\" کو لوڈ نہیں کیا گیا"
|
||||
}
|
||||
}
|
||||
},
|
||||
"language": {
|
||||
"code": "ur",
|
||||
"local-name": "اردو",
|
||||
"name": "Urdu"
|
||||
},
|
||||
"main": {
|
||||
"console": {
|
||||
"did-finish-load": {
|
||||
"dev-tools": "لوڈنگ مکمل ہو گئی۔ DevTools کھل گیا"
|
||||
},
|
||||
"i18n": {
|
||||
"loaded": "i18n لوڈ ہو گیا"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "پروٹوکول پر کمانڈ موصول ہوئی: \"{{command}}\""
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "CSS فائل \"{{cssFile}}\" موجود نہیں ہے، نظر انداز کر رہے ہیں"
|
||||
},
|
||||
"unresponsive": {
|
||||
"details": "غیر جوابی غلطی!\n{{error}}"
|
||||
},
|
||||
"when-ready": {
|
||||
"clearing-cache-after-20s": "ایپ کیشے کو صاف کرنا"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "ونڈو نے آف اسکرین رینڈر کرنے کی کوشش کی، windowSize={{windowSize}}، displaySize={{displaySize}}، position={{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
"hide-menu-enabled": {
|
||||
"detail": "مینو پوشیدہ ہے، اسے دکھانے کے لیے 'Alt' استعمال کریں (یا 'Escape' اگر ایپ مینیو استعمال کر رہے ہیں)",
|
||||
"message": "پوشیدہ مینو فعال ہے",
|
||||
"title": "پوشیدہ مینو فعال ہو گیا"
|
||||
},
|
||||
"need-to-restart": {
|
||||
"buttons": {
|
||||
"later": "بعد میں",
|
||||
"restart-now": "ابھی دوبارہ شروع کریں"
|
||||
},
|
||||
"detail": "\"{{pluginName}}\" پلگ ان کو اثر انداز ہونے کے لیے دوبارہ شروع کرنے کی ضرورت ہے",
|
||||
"message": "\"{{pluginName}}\" کو دوبارہ شروع کرنے کی ضرورت ہے",
|
||||
"title": "دوبارہ شروع کرنے کی ضرورت ہے"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "چھوڑو",
|
||||
"relaunch": "دوبارہ لانچ کریں",
|
||||
"wait": "انتظار کرو"
|
||||
},
|
||||
"detail": "ہم زحمت کے لیے معذرت خواہ ہیں! براہ کرم منتخب کریں کہ کیا کرنا ہے:",
|
||||
"message": "پروگرام غیر ذمہ دار ہے",
|
||||
"title": "ونڈو غیر جوابدہ"
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"disable": "اپ ڈیٹس کو غیر فعال کریں",
|
||||
"download": "ڈاؤن لوڈ کریں",
|
||||
"ok": "ٹھیک ہے"
|
||||
},
|
||||
"detail": "ایک نیا ورژن دستیاب ہے اور اسے {{downloadLink}} پر ڈاؤن لوڈ کیا جا سکتا ہے",
|
||||
"message": "ایک نیا ورژن دستیاب ہے",
|
||||
"title": "اپ ڈیٹ دستیاب ہے"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"about": "پروگرام کے بارے میں",
|
||||
"navigation": {
|
||||
"label": "نیویگیشن",
|
||||
"submenu": {
|
||||
"copy-current-url": "موجودہ URL کاپی کریں",
|
||||
"go-back": "واپس جاؤ",
|
||||
"go-forward": "آگے بڑھو",
|
||||
"quit": "باہر نکلیں",
|
||||
"restart": "ایپ کو دوبارہ شروع کریں"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"label": "آپشنز",
|
||||
"submenu": {
|
||||
"advanced-options": {
|
||||
"label": "اعلی درجے کے آپشنز",
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "ایپ شروع ہونے پر ایپ کیشے کو دوبارہ ترتیب دیں",
|
||||
"disable-hardware-acceleration": "ہارڈ ویئر ایکسلریشن کو غیر فعال کریں",
|
||||
"edit-config-json": "config.json میں ترمیم کریں",
|
||||
"override-user-agent": "یوزر ایجنٹ کو اوور رائیڈ کریں",
|
||||
"restart-on-config-changes": "کنفیگریشن تبدیلیوں پر دوبارہ شروع کریں",
|
||||
"set-proxy": {
|
||||
"label": "پراکسی سیٹ کریں",
|
||||
"prompt": {
|
||||
"label": "پراکسی ایڈریس درج کریں: (غیر فعال کرنے کے لیے خالی چھوڑ دیں)",
|
||||
"placeholder": "مثال: SOCKS5://127.0.0.1:9999",
|
||||
"title": "پراکسی سیٹ کریں"
|
||||
}
|
||||
},
|
||||
"toggle-dev-tools": "DevTools ٹوگل کریں"
|
||||
}
|
||||
},
|
||||
"always-on-top": "ہمیشہ اوپر",
|
||||
"auto-update": "خودکار اپ ڈیٹ",
|
||||
"hide-menu": {
|
||||
"dialog": {
|
||||
"message": "اگلے لانچ پر مینو کو چھپایا جائے گا، اسے دکھانے کے لیے [Alt] استعمال کریں (یا in-app-menu استعمال کرنے پر بیک ٹک [`] کریں)",
|
||||
"title": "پوشیدہ مینو کو فعال کر دیا گیا"
|
||||
},
|
||||
"label": "مینو کو چھپائیں"
|
||||
},
|
||||
"language": {
|
||||
"dialog": {
|
||||
"message": "دوبارہ شروع کرنے کے بعد زبان بدل دی جائے گی",
|
||||
"title": "زبان بدل گئی ہے"
|
||||
},
|
||||
"label": "زبان",
|
||||
"submenu": {
|
||||
"to-help-translate": "ترجمہ میں مدد کرنا چاہتے ہیں؟ یہاں دبائیں"
|
||||
}
|
||||
},
|
||||
"resume-on-start": "ایپ شروع ہونے پر آخری گانا دوبارہ شروع کریں",
|
||||
"single-instance-lock": "ایک واحد مثال لاک",
|
||||
"start-at-login": "لاگ ان پر شروع کریں",
|
||||
"starting-page": {
|
||||
"label": "شروعاتی صفحہ",
|
||||
"unset": "غیر متعین"
|
||||
},
|
||||
"tray": {
|
||||
"label": "سسٹم ٹرے",
|
||||
"submenu": {
|
||||
"disabled": "غیر فعال",
|
||||
"enabled-and-hide-app": "فعال اور ایپ کو چھپائیں",
|
||||
"enabled-and-show-app": "فعال اور ایپ دکھائیں",
|
||||
"play-pause-on-click": "دبانے پر چلائیں/روکیں"
|
||||
}
|
||||
},
|
||||
"visual-tweaks": {
|
||||
"label": "بصری تبدیلیاں",
|
||||
"submenu": {
|
||||
"like-buttons": {
|
||||
"default": "پہلے سے طے شدہ",
|
||||
"force-show": "زبردستی دکھائیں",
|
||||
"hide": "چھپائیں",
|
||||
"label": "لائیک بٹن"
|
||||
},
|
||||
"remove-upgrade-button": "اپ گریڈ بٹن ہٹائیں",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "منسوخ کریں",
|
||||
"remove": "ہٹائیں"
|
||||
},
|
||||
"remove-theme": "کیا آپ واقعی کسٹم تھیم کو ہٹانا چاہتے ہیں؟",
|
||||
"remove-theme-message": "یہ کسٹم تھیم کو ہٹا دے گا"
|
||||
},
|
||||
"label": "تھیم",
|
||||
"submenu": {
|
||||
"import-css-file": "کسٹم CSS فائل درآمد کریں",
|
||||
"no-theme": "کوئی تھیم نہیں"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"enabled": "فعال",
|
||||
"label": "پلگ انز",
|
||||
"new": "نیا"
|
||||
},
|
||||
"view": {
|
||||
"label": "دیکھیں",
|
||||
"submenu": {
|
||||
"force-reload": "زبردستی دوبارہ لوڈ کریں",
|
||||
"reload": "دوبارہ لوڈ کریں",
|
||||
"reset-zoom": "اصل سائز",
|
||||
"toggle-fullscreen": "پوری سکرین ٹوگل کریں",
|
||||
"zoom-in": "زوم ان کریں",
|
||||
"zoom-out": "زوم آؤٹ کریں"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"next": "اگلا",
|
||||
"play-pause": "چلائیں/روکیں",
|
||||
"previous": "پچھلا",
|
||||
"quit": "باہر نکلیں",
|
||||
"restart": "ایپ دوبارہ شروع کریں"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2,7 +2,7 @@
|
||||
"common": {
|
||||
"console": {
|
||||
"plugins": {
|
||||
"execute-failed": "Lỗi khi bắt đầu phần mở rộng {{pluginName}}::{{contextName}}",
|
||||
"execute-failed": "Lỗi thực thi plugin {{pluginName}}::{{contextName}}",
|
||||
"executed-at-ms": "Phần mở rộng {{pluginName}}::{{contextName}} đã bắt đầu trong {{ms}}ms",
|
||||
"initialize-failed": "Lỗi khi khởi động phần mở rộng \"{{pluginName}}\"",
|
||||
"load-all": "Đang tải tất cả phần mở rộng",
|
||||
@ -158,6 +158,14 @@
|
||||
},
|
||||
"remove-upgrade-button": "Xóa nút nâng cấp",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "Hủy",
|
||||
"remove": "Loại bỏ"
|
||||
},
|
||||
"remove-theme": "Bạn có chắc muốn loại bỏ chủ đề tùy chỉnh không?",
|
||||
"remove-theme-message": "Tùy chọn này sẽ loại bỏ chủ đề tùy chỉnh"
|
||||
},
|
||||
"label": "Chủ đề",
|
||||
"submenu": {
|
||||
"import-css-file": "Nhập tệp CSS tùy chỉnh",
|
||||
@ -199,6 +207,10 @@
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "Nếu một quảng cáo được phát thì sẽ bị tắt tiếng và tăng tốc độ phát lên 16x",
|
||||
"name": "Tăng tốc quảng cáo"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "Chặn toàn bộ quảng cáo và trình theo dõi",
|
||||
"menu": {
|
||||
@ -212,6 +224,14 @@
|
||||
},
|
||||
"album-color-theme": {
|
||||
"description": "Áp dụng chủ đề động và hiệu ứng hình ảnh dựa trên bảng màu của album",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "Tỉ lệ trộn màu",
|
||||
"submenu": {
|
||||
"percent": "{{ratio}}%"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Màu nền album"
|
||||
},
|
||||
"ambient-mode": {
|
||||
@ -259,6 +279,55 @@
|
||||
},
|
||||
"name": "Chế độ Môi trường xung quanh"
|
||||
},
|
||||
"amuse": {
|
||||
"name": "Amuse",
|
||||
"response": {
|
||||
"query": "Máy chủ API của Amuse đang chạy. GET /query để lấy thông tin về bài hát."
|
||||
}
|
||||
},
|
||||
"api-server": {
|
||||
"description": "Thêm máy chủ API để điều khiển trình phát",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "Cho phép",
|
||||
"deny": "Từ chối"
|
||||
},
|
||||
"message": "Cho phép {{ID}} ({{origin}}) truy cập API?",
|
||||
"title": "Yêu cầu cho phép API"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "Chiến thuật xác thực",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "Xác thực ngay yêu cầu đầu tiên"
|
||||
},
|
||||
"none": {
|
||||
"label": "Không xác thực"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "Tên máy chủ"
|
||||
},
|
||||
"port": {
|
||||
"label": "Cổng"
|
||||
}
|
||||
},
|
||||
"name": "Máy chủ API [Beta]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "Điền tên máy chủ (như 0.0.0.0) cho máy chủ API:",
|
||||
"title": "Tên máy chủ"
|
||||
},
|
||||
"port": {
|
||||
"label": "Nhập cổng cho máy chủ API:",
|
||||
"title": "Cổng"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "Áp dụng tính năng nén cho âm thanh (giảm âm lượng của phần to nhất của tín hiệu và tăng âm lượng của phần nhỏ nhất)",
|
||||
"name": "Bộ nén âm thanh"
|
||||
@ -394,6 +463,21 @@
|
||||
"description": "Tải xuống MP3 / âm thanh nguồn trực tiếp từ giao diện",
|
||||
"menu": {
|
||||
"choose-download-folder": "Chọn thư mục tải xuống",
|
||||
"download-finish-settings": {
|
||||
"label": "Tải xuống khi hoàn tất",
|
||||
"prompt": {
|
||||
"last-percent": "Sau x phần trăm",
|
||||
"last-seconds": "x giây cuối",
|
||||
"title": "Định cấu hình thời điểm tải xuống"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "Nâng cao",
|
||||
"enabled": "Đã kích hoạt",
|
||||
"mode": "Chế độ thời gian",
|
||||
"percent": "Phần trăm",
|
||||
"seconds": "Giây"
|
||||
}
|
||||
},
|
||||
"download-playlist": "Tải danh sách phát",
|
||||
"presets": "Cài đặt sẵn",
|
||||
"skip-existing": "Bỏ qua các tập tin hiện có"
|
||||
@ -406,6 +490,9 @@
|
||||
"button": "Tải xuống"
|
||||
}
|
||||
},
|
||||
"equalizer": {
|
||||
"name": "Cân bằng âm thanh"
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "Làm cho thanh trượt âm lượng theo cấp số nhân để dễ dàng chọn âm lượng thấp hơn.",
|
||||
"name": "Âm lượng theo cấp số nhân"
|
||||
@ -498,7 +585,7 @@
|
||||
}
|
||||
},
|
||||
"priority": "Ưu tiên thông báo",
|
||||
"toast-style": "Kiểu toast",
|
||||
"toast-style": "Kiểu thông báo bật lên",
|
||||
"unpause-notification": "Hiển thị thông báo khi bỏ tạm dừng"
|
||||
},
|
||||
"name": "Thông báo"
|
||||
@ -571,13 +658,23 @@
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "Thêm hỗ trợ scrobbling (v.v. Last.fm, Listenbrainz)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "Không thể xác minh với \nẨn thông báo cho đến lần bật ứng dụng tiếp theo.",
|
||||
"title": "Xác minh thất bại"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "Cài đặt API Last.fm"
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": "Nhập mã người dùng ListenBrainz"
|
||||
}
|
||||
},
|
||||
"scrobble-alternative-title": "Dùng tiêu đề thay thế",
|
||||
"scrobble-other-media": "Scrobber nội dung khác"
|
||||
},
|
||||
"name": "Scrobbler",
|
||||
"prompt": {
|
||||
@ -624,6 +721,65 @@
|
||||
"description": "Tự động bỏ qua các phần không phải âm nhạc như phần giới thiệu/kết thúc hoặc các phần của video nhạc mà bài hát không được phát",
|
||||
"name": "SponsorBlock"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "Cung cấp lời bài hát được đồng bộ hoá với các bài hát, sử dụng những nhà cung cấp như LRClib.",
|
||||
"errors": {
|
||||
"fetch": "⚠️\t\tĐã xảy ra lỗi khi tìm lời bài hát.\n\tVui lòng thử lại sau.",
|
||||
"not-found": "⚠️ Không tìm thấy lời cho bài hát này."
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "Kí tự mặc định giữa các lời bài hát",
|
||||
"tooltip": "Chọn kí tự mặc định cho khoảng trống giữa các lời bài hát"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "Kiểu đường thẳng",
|
||||
"submenu": {
|
||||
"fancy": {
|
||||
"label": "Màu mè"
|
||||
},
|
||||
"focus": {
|
||||
"label": "Tập trung",
|
||||
"tooltip": "Chỉ làm cho dòng hiện tại có màu trắng"
|
||||
},
|
||||
"offset": {
|
||||
"label": "Độ lệch",
|
||||
"tooltip": "Độ lệch bên phải của dòng hiện tại"
|
||||
},
|
||||
"scale": {
|
||||
"label": "Tỉ lệ",
|
||||
"tooltip": "Áp dụng tỉ lệ cho dòng hiện tại"
|
||||
}
|
||||
},
|
||||
"tooltip": "Chọn kiểu để áp dụng cho dòng hiện tại"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "Làm cho lời bài hát được đồng bộ hoàn hảo",
|
||||
"tooltip": "Tính toán chính xác đến mili giây thời gian hiển thị dòng tiếp theo (có thể có tác động nhỏ đến hiệu suất)"
|
||||
},
|
||||
"romanization": {
|
||||
"tooltip": "Nếu lời bài hát đang ở ngôn ngữ khác, thử hiển thị phiên bản bảng chữ cái La-tinh."
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "Hiển thị lời bài hát ngay cả khi không chính xác",
|
||||
"tooltip": "Nếu không tìm thấy bài hát, plugin sẽ thử lại bằng truy vấn tìm kiếm khác.\nKết quả từ lần thử thứ hai có thể không chính xác."
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "Hiện mốc thời gian",
|
||||
"tooltip": "Hiện mốc thời gian bên cạnh lời bài hát"
|
||||
}
|
||||
},
|
||||
"name": "Lời bài hát được đồng bộ hoá",
|
||||
"refetch-btn": {
|
||||
"fetching": "Đang tìm nạp...",
|
||||
"normal": "Tải lại lời bài hát"
|
||||
},
|
||||
"warnings": {
|
||||
"duration-mismatch": "⚠️ - Lời bài hát có thể không đồng bộ do thời lượng không khớp.",
|
||||
"inexact": "⚠️ - Lời bài hát này có thể không chính xác",
|
||||
"instrumental": "⚠️ - Đây là một bài hát trình diễn bằng nhạc khí"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "Kiểm soát phát lại từ thanh tác vụ Windows của bạn",
|
||||
"name": "Kiểm soát phương tiện trên thanh tác vụ"
|
||||
|
||||
@ -39,7 +39,7 @@
|
||||
"clearing-cache-after-20s": "正在清理应用缓存"
|
||||
},
|
||||
"window": {
|
||||
"tried-to-render-offscreen": "窗口试图于屏幕外绘制, windowSize={{windowSize}}, displaySize={{displaySize}}, position={{position}}"
|
||||
"tried-to-render-offscreen": "窗口试图于屏幕外绘制,窗口大小={{windowSize}},显示尺寸={{displaySize}},位置={{position}}"
|
||||
}
|
||||
},
|
||||
"dialog": {
|
||||
@ -158,6 +158,14 @@
|
||||
},
|
||||
"remove-upgrade-button": "移除升级按钮",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "取消",
|
||||
"remove": "移除"
|
||||
},
|
||||
"remove-theme": "您确定要移除自定义主题?",
|
||||
"remove-theme-message": "此操作将移除自定义主题"
|
||||
},
|
||||
"label": "主题",
|
||||
"submenu": {
|
||||
"import-css-file": "导入自定义 CSS 文件",
|
||||
@ -199,6 +207,10 @@
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "使用静音以及 16 倍速播放跳过广告片段",
|
||||
"name": "广告加速跳过"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "屏蔽所有广告与跟踪器",
|
||||
"menu": {
|
||||
@ -267,6 +279,56 @@
|
||||
},
|
||||
"name": "沉浸模式"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "为 6K Labs 的 Amuse 正在播放小部件添加 YouTube Music 支持",
|
||||
"name": "Amuse",
|
||||
"response": {
|
||||
"query": "Amuse API服务器已在运行。使用 /query 以获取歌曲信息。"
|
||||
}
|
||||
},
|
||||
"api-server": {
|
||||
"description": "添加一个 API 服务器来控制播放器",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "允许",
|
||||
"deny": "拒绝"
|
||||
},
|
||||
"message": "允许 {{ID}} {{origin}} 访问该 API 吗?",
|
||||
"title": "API 授权请求"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "授权策略",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "首次请求时授权"
|
||||
},
|
||||
"none": {
|
||||
"label": "无需授权"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "主机名"
|
||||
},
|
||||
"port": {
|
||||
"label": "端口号"
|
||||
}
|
||||
},
|
||||
"name": "API 服务器 [测试]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "请输入 API 服务器的主机名(如 0.0.0.0):",
|
||||
"title": "主机名"
|
||||
},
|
||||
"port": {
|
||||
"label": "请输入 API 服务器的端口号:",
|
||||
"title": "端口号"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "对音频应用压缩(压低响亮部分,提升柔和部分)",
|
||||
"name": "音频压缩器"
|
||||
@ -402,6 +464,21 @@
|
||||
"description": "在界面内直接下载 MP3 / 源音频",
|
||||
"menu": {
|
||||
"choose-download-folder": "选择下载文件夹",
|
||||
"download-finish-settings": {
|
||||
"label": "边播边下",
|
||||
"prompt": {
|
||||
"last-percent": "播放超过指定百分比时开始下载",
|
||||
"last-seconds": "歌曲剩余指定秒数时开始下载",
|
||||
"title": "配置在何时开始下载"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "高级",
|
||||
"enabled": "已启用",
|
||||
"mode": "激活时机",
|
||||
"percent": "按播放百分比",
|
||||
"seconds": "按播放秒数"
|
||||
}
|
||||
},
|
||||
"download-playlist": "下载播放列表",
|
||||
"presets": "预设",
|
||||
"skip-existing": "跳过已存在的文件"
|
||||
@ -414,6 +491,18 @@
|
||||
"button": "下载"
|
||||
}
|
||||
},
|
||||
"equalizer": {
|
||||
"description": "为播放器添加均衡器",
|
||||
"menu": {
|
||||
"presets": {
|
||||
"label": "预设",
|
||||
"list": {
|
||||
"bass-booster": "低音增强器"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "均衡器"
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "让音量滑块指数化以便选择更低的音量。",
|
||||
"name": "指数化音量"
|
||||
@ -432,11 +521,11 @@
|
||||
"lyrics-genius": {
|
||||
"description": "为大多数歌曲添加歌词支持",
|
||||
"menu": {
|
||||
"romanized-lyrics": "罗马化字幕"
|
||||
"romanized-lyrics": "罗马化歌词"
|
||||
},
|
||||
"name": "Genius 歌词",
|
||||
"renderer": {
|
||||
"fetched-lyrics": "已从 Genius 获取字幕"
|
||||
"fetched-lyrics": "已从 Genius 获取歌词"
|
||||
}
|
||||
},
|
||||
"music-together": {
|
||||
@ -451,12 +540,12 @@
|
||||
},
|
||||
"menu": {
|
||||
"click-to-copy-id": "复制发起者 ID",
|
||||
"close": "关闭 Music Together",
|
||||
"close": "关闭一起听",
|
||||
"connected-users": "已连接用户",
|
||||
"disconnect": "断开 Music Together 连接",
|
||||
"disconnect": "断开一起听连接",
|
||||
"empty-user": "没有已连接的用户",
|
||||
"host": "Music Together 发起者",
|
||||
"join": "加入 Music Together",
|
||||
"host": "一起听发起者",
|
||||
"join": "加入一起听",
|
||||
"permission": {
|
||||
"all": "允许来宾控制播放列表与播放器",
|
||||
"host-only": "仅发起人可以控制播放列表与播放器",
|
||||
@ -469,20 +558,20 @@
|
||||
"host": "已作为发起人连接"
|
||||
}
|
||||
},
|
||||
"name": "Music Together [测试]",
|
||||
"name": "一起听 [测试]",
|
||||
"toast": {
|
||||
"add-song-failed": "添加歌曲失败",
|
||||
"closed": "Music Together 已关闭",
|
||||
"disconnected": "Music Together 已断开连接",
|
||||
"host-failed": "发起 Music Together 失败",
|
||||
"closed": "一起听已关闭",
|
||||
"disconnected": "一起听已断开连接",
|
||||
"host-failed": "发起一起听失败",
|
||||
"id-copied": "已将发起者 ID 复制到剪切板",
|
||||
"id-copy-failed": "复制发起者 ID 到剪贴板时失败",
|
||||
"join-failed": "加入 Music Together 失败",
|
||||
"joined": "已加入 Music Together",
|
||||
"permission-changed": "Music Together 权限已改为 \"{{permission}}\"",
|
||||
"join-failed": "加入一起听失败",
|
||||
"joined": "已加入一起听",
|
||||
"permission-changed": "一起听权限已改为 \"{{permission}}\"",
|
||||
"remove-song-failed": "移除歌曲失败",
|
||||
"user-connected": "{{name}} 加入了 Music Together",
|
||||
"user-disconnected": "{{name}} 离开了 Music Together"
|
||||
"user-connected": "{{name}} 加入了一起听",
|
||||
"user-disconnected": "{{name}} 离开了一起听"
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
@ -579,6 +668,14 @@
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "添加歌曲追踪支持(如 Last.fm 和 Listenbrainz)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "与 Last.fm 认证时失败\n弹出窗口将在下次重启前隐藏。",
|
||||
"title": "认证失败"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "Last.fm API 设置"
|
||||
@ -586,6 +683,7 @@
|
||||
"listenbrainz": {
|
||||
"token": "输入 ListenBrainz 用户令牌"
|
||||
},
|
||||
"scrobble-alternative-title": "使用替代标题",
|
||||
"scrobble-other-media": "记录其他媒体文件"
|
||||
},
|
||||
"name": "歌曲记录器",
|
||||
@ -596,7 +694,7 @@
|
||||
},
|
||||
"listenbrainz": {
|
||||
"token": {
|
||||
"label": "输入您的v ListenBrainz 用户令牌:",
|
||||
"label": "输入您的 ListenBrainz 用户令牌:",
|
||||
"title": "ListenBrainz 令牌"
|
||||
}
|
||||
}
|
||||
@ -633,6 +731,67 @@
|
||||
"description": "自动跳过非音乐部分,如 MV 的介绍/结语以及歌曲未开始的部分",
|
||||
"name": "SponsorBlock"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "透过 LRClib 等服务提供滚动歌词显示。",
|
||||
"errors": {
|
||||
"fetch": "⚠️ 获取歌词时发生错误。\n 请稍后再试。",
|
||||
"not-found": "⚠️ 未找到此歌曲的歌词。"
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "默认的歌词行间字符",
|
||||
"tooltip": "选择在歌词间隙期间默认显示的字符"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "歌词行特效",
|
||||
"submenu": {
|
||||
"fancy": {
|
||||
"label": "Fancy",
|
||||
"tooltip": "在当前行上使用大的、类似应用的效果"
|
||||
},
|
||||
"focus": {
|
||||
"label": "高亮",
|
||||
"tooltip": "仅将当前歌词行显示为白色"
|
||||
},
|
||||
"offset": {
|
||||
"label": "偏移",
|
||||
"tooltip": "将当前歌词行向右偏移"
|
||||
},
|
||||
"scale": {
|
||||
"label": "放大",
|
||||
"tooltip": "放大当前歌词行"
|
||||
}
|
||||
},
|
||||
"tooltip": "选择当前歌词行应用的特效"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "让滚动歌词完全同步",
|
||||
"tooltip": "以毫秒精度估算下句歌词的显示时间(可能对性能有小幅影响)"
|
||||
},
|
||||
"romanization": {
|
||||
"label": "将歌词罗马化",
|
||||
"tooltip": "如果歌词以不同语言显示,试着展示拉丁字母版本。"
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "即使时值不精确依然显示歌词",
|
||||
"tooltip": "若首次搜索未找到该歌曲的歌词,插件将尝试用不同的查询方式重新获取。\n重试查询的结果可能不精确。"
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "显示时值",
|
||||
"tooltip": "在歌词旁显示时值"
|
||||
}
|
||||
},
|
||||
"name": "滚动歌词",
|
||||
"refetch-btn": {
|
||||
"fetching": "正在获取…",
|
||||
"normal": "重新获取歌词"
|
||||
},
|
||||
"warnings": {
|
||||
"duration-mismatch": "⚠️ - 由于持续时间不对应,滚动歌词可能不同步。",
|
||||
"inexact": "⚠️ - 此曲目的歌词可能不准确",
|
||||
"instrumental": "⚠️ - 此曲目为纯音乐"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "从 Windows 任务栏控制音乐回放",
|
||||
"name": "任务栏媒体控件"
|
||||
@ -645,6 +804,10 @@
|
||||
"description": "与 OBS 的 Tuna 插件集成",
|
||||
"name": "Tuna OBS"
|
||||
},
|
||||
"unobtrusive-player": {
|
||||
"description": "防止播放器在播放歌曲时弹出",
|
||||
"name": "非侵扰式播放器"
|
||||
},
|
||||
"video-toggle": {
|
||||
"description": "增加视频/音频模式间的切换按钮。兼具移除整个视频页面的功能",
|
||||
"menu": {
|
||||
|
||||
@ -27,7 +27,7 @@
|
||||
"loaded": "i18n 已載入"
|
||||
},
|
||||
"second-instance": {
|
||||
"receive-command": "使用協定來接收指令:「{{command}}」"
|
||||
"receive-command": "使用通訊協定來接收指令:「{{command}}」"
|
||||
},
|
||||
"theme": {
|
||||
"css-file-not-found": "CSS 檔案「{{cssFile}}」不存在,已忽略"
|
||||
@ -53,13 +53,13 @@
|
||||
"later": "稍後",
|
||||
"restart-now": "立即重啟"
|
||||
},
|
||||
"detail": "\"{{pluginName}}\" 外掛需要重啟應用之後才會生效",
|
||||
"message": "\"{{pluginName}}\" 需要重啟應用",
|
||||
"title": "需要重啟應用"
|
||||
"detail": "\"{{pluginName}}\" 外掛需要重新啟動之後才會生效",
|
||||
"message": "\"{{pluginName}}\" 需要重新啟動",
|
||||
"title": "需要重新啟動"
|
||||
},
|
||||
"unresponsive": {
|
||||
"buttons": {
|
||||
"quit": "離開",
|
||||
"quit": "結束",
|
||||
"relaunch": "重新啟動",
|
||||
"wait": "等一下"
|
||||
},
|
||||
@ -69,9 +69,9 @@
|
||||
},
|
||||
"update-available": {
|
||||
"buttons": {
|
||||
"disable": "停用更新",
|
||||
"download": "下載",
|
||||
"ok": "確定"
|
||||
"disable": "停用新版本通知",
|
||||
"download": "前往下載",
|
||||
"ok": "略過"
|
||||
},
|
||||
"detail": "新版本已經推出,你可以至 {{downloadLink}} 下載",
|
||||
"message": "有新版本可用",
|
||||
@ -83,11 +83,11 @@
|
||||
"navigation": {
|
||||
"label": "導覽列",
|
||||
"submenu": {
|
||||
"copy-current-url": "複製目前的網址",
|
||||
"copy-current-url": "複製目前頁面的網址",
|
||||
"go-back": "回到上一頁",
|
||||
"go-forward": "回到下一頁",
|
||||
"quit": "退出",
|
||||
"restart": "重啟應用"
|
||||
"quit": "結束",
|
||||
"restart": "重新啟動"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
@ -96,11 +96,11 @@
|
||||
"advanced-options": {
|
||||
"label": "進階選項",
|
||||
"submenu": {
|
||||
"auto-reset-app-cache": "當程式啟動時重設應用程式快取",
|
||||
"auto-reset-app-cache": "啟動時重設應用快取",
|
||||
"disable-hardware-acceleration": "關閉硬體加速",
|
||||
"edit-config-json": "編輯 config.json",
|
||||
"override-user-agent": "覆寫使用者代理",
|
||||
"restart-on-config-changes": "在設定檔更動時自動重啟應用程式",
|
||||
"restart-on-config-changes": "設定變更時自動重新啟動",
|
||||
"set-proxy": {
|
||||
"label": "設定代理伺服器",
|
||||
"prompt": {
|
||||
@ -112,7 +112,7 @@
|
||||
"toggle-dev-tools": "切換開發者人員工具"
|
||||
}
|
||||
},
|
||||
"always-on-top": "永遠顯示在最上層",
|
||||
"always-on-top": "最上層顯示",
|
||||
"auto-update": "自動更新",
|
||||
"hide-menu": {
|
||||
"dialog": {
|
||||
@ -123,28 +123,28 @@
|
||||
},
|
||||
"language": {
|
||||
"dialog": {
|
||||
"message": "語言會在下一次重啟應用程式時變更",
|
||||
"message": "語言會在重新啟動後變更",
|
||||
"title": "語言已變更"
|
||||
},
|
||||
"label": "語言",
|
||||
"submenu": {
|
||||
"to-help-translate": "想要協助翻譯?按一下這裡"
|
||||
"to-help-translate": "想協助翻譯?按一下這裡"
|
||||
}
|
||||
},
|
||||
"resume-on-start": "應用啟動時繼續上次播放的歌曲",
|
||||
"single-instance-lock": "單視窗鎖定",
|
||||
"resume-on-start": "應用開啟時繼續播放上次的歌曲",
|
||||
"single-instance-lock": "單實例模式",
|
||||
"start-at-login": "開機時啟動",
|
||||
"starting-page": {
|
||||
"label": "啟動頁面",
|
||||
"unset": "不指定"
|
||||
},
|
||||
"tray": {
|
||||
"label": "系統閘圖式",
|
||||
"label": "系統匣",
|
||||
"submenu": {
|
||||
"disabled": "已停用",
|
||||
"enabled-and-hide-app": "啟用並隱藏應用程式",
|
||||
"enabled-and-hide-app": "啟用並最小化應用程式",
|
||||
"enabled-and-show-app": "啟用並顯示應用程式",
|
||||
"play-pause-on-click": "點擊時播放/暫停"
|
||||
"play-pause-on-click": "點選時播放/暫停"
|
||||
}
|
||||
},
|
||||
"visual-tweaks": {
|
||||
@ -158,6 +158,14 @@
|
||||
},
|
||||
"remove-upgrade-button": "移除升級按鈕",
|
||||
"theme": {
|
||||
"dialog": {
|
||||
"button": {
|
||||
"cancel": "取消",
|
||||
"remove": "確定移除"
|
||||
},
|
||||
"remove-theme": "確定要移除自訂主題嗎?",
|
||||
"remove-theme-message": "這將會移除自訂主題"
|
||||
},
|
||||
"label": "主題",
|
||||
"submenu": {
|
||||
"import-css-file": "匯入自訂 CSS 檔案",
|
||||
@ -169,17 +177,17 @@
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"enabled": "啟用",
|
||||
"enabled": "已啟用",
|
||||
"label": "外掛功能",
|
||||
"new": "新的"
|
||||
},
|
||||
"view": {
|
||||
"label": "視窗",
|
||||
"label": "檢視",
|
||||
"submenu": {
|
||||
"force-reload": "強制重新整理",
|
||||
"reload": "重新整理",
|
||||
"reset-zoom": "重設大小",
|
||||
"toggle-fullscreen": "全螢幕",
|
||||
"toggle-fullscreen": "切換全螢幕",
|
||||
"zoom-in": "放大",
|
||||
"zoom-out": "縮小"
|
||||
}
|
||||
@ -190,15 +198,19 @@
|
||||
"play-pause": "播放/暫停",
|
||||
"previous": "上一首",
|
||||
"quit": "關閉",
|
||||
"restart": "重啟程式",
|
||||
"restart": "重新啟動應用程式",
|
||||
"show": "顯示視窗",
|
||||
"tooltip": {
|
||||
"default": "Youtube Music",
|
||||
"default": "YouTube Music",
|
||||
"with-song-info": "YouTube Music: {{artist}} - {{title}}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"plugins": {
|
||||
"ad-speedup": {
|
||||
"description": "使用 16 倍速播放及靜音來跳過廣告片段",
|
||||
"name": "加速略過"
|
||||
},
|
||||
"adblocker": {
|
||||
"description": "阻擋所有廣告",
|
||||
"menu": {
|
||||
@ -211,7 +223,7 @@
|
||||
"name": "進階專輯操作"
|
||||
},
|
||||
"album-color-theme": {
|
||||
"description": "依歌曲色調自動更改應用程式主題",
|
||||
"description": "根據專輯封面色調更改應用程式主題顏色",
|
||||
"menu": {
|
||||
"color-mix-ratio": {
|
||||
"label": "顏色混合程度",
|
||||
@ -223,7 +235,7 @@
|
||||
"name": "隨歌曲色調變更主題"
|
||||
},
|
||||
"ambient-mode": {
|
||||
"description": "影片周圍背景根據影片內容改變顏色, 讓觀眾在觀賞影片時更有臨場感",
|
||||
"description": "影片周圍背景根據影片內容改變顏色,讓觀眾在觀賞影片時更有臨場感",
|
||||
"menu": {
|
||||
"blur-amount": {
|
||||
"label": "模糊等級",
|
||||
@ -267,8 +279,58 @@
|
||||
},
|
||||
"name": "微光效果"
|
||||
},
|
||||
"amuse": {
|
||||
"description": "加入支援 6K Labs 的 Amuse OBS 外掛以取得 YouTube Music 現正播放資訊",
|
||||
"name": "Amuse",
|
||||
"response": {
|
||||
"query": "Amuse API 伺服器正在運作中,使用 /query 以取得歌曲資訊。"
|
||||
}
|
||||
},
|
||||
"api-server": {
|
||||
"description": "新增伺服器以使用 API 控制播放器",
|
||||
"dialog": {
|
||||
"request": {
|
||||
"buttons": {
|
||||
"allow": "允許",
|
||||
"deny": "拒絕"
|
||||
},
|
||||
"message": "允許 {{ID}} ({{origin}}) 存取 API 嗎?",
|
||||
"title": "API 驗證請求"
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"auth-strategy": {
|
||||
"label": "驗證策略",
|
||||
"submenu": {
|
||||
"auth-at-first": {
|
||||
"label": "首次請求時驗證"
|
||||
},
|
||||
"none": {
|
||||
"label": "不要驗證"
|
||||
}
|
||||
}
|
||||
},
|
||||
"hostname": {
|
||||
"label": "主機名稱"
|
||||
},
|
||||
"port": {
|
||||
"label": "連接埠"
|
||||
}
|
||||
},
|
||||
"name": "API 伺服器 [Beta]",
|
||||
"prompt": {
|
||||
"hostname": {
|
||||
"label": "輸入 API 伺服器的主機名稱 例 (0.0.0.0):",
|
||||
"title": "主機名稱"
|
||||
},
|
||||
"port": {
|
||||
"label": "輸入 API 伺服器連接埠:",
|
||||
"title": "連接埠"
|
||||
}
|
||||
}
|
||||
},
|
||||
"audio-compressor": {
|
||||
"description": "使用音效壓縮 (大聲部份的音量降低, 柔和部份的音量提高)",
|
||||
"description": "使用音效壓縮 (大聲部份的音量降低,柔和部份的音量提高)",
|
||||
"name": "音效壓縮器"
|
||||
},
|
||||
"blur-nav-bar": {
|
||||
@ -276,21 +338,21 @@
|
||||
"name": "模糊導覽列"
|
||||
},
|
||||
"bypass-age-restrictions": {
|
||||
"description": "繞過Youtube年齡驗證",
|
||||
"description": "繞過 YouTube 年齡驗證",
|
||||
"name": "繞過年齡驗證"
|
||||
},
|
||||
"captions-selector": {
|
||||
"description": "音軌標題選擇",
|
||||
"description": "YouTube Music 音軌字幕選擇器",
|
||||
"menu": {
|
||||
"autoload": "自動選擇最後使用的標題",
|
||||
"autoload": "自動選擇上次使用的字幕",
|
||||
"disable-captions": "預設無標題"
|
||||
},
|
||||
"name": "標題選擇器",
|
||||
"prompt": {
|
||||
"selector": {
|
||||
"label": "目前標題語言: {{language}}",
|
||||
"label": "目前字幕語言:{{language}}",
|
||||
"none": "無",
|
||||
"title": "選擇標題語言"
|
||||
"title": "選擇字幕語言"
|
||||
}
|
||||
},
|
||||
"templates": {
|
||||
@ -332,26 +394,26 @@
|
||||
},
|
||||
"discord": {
|
||||
"backend": {
|
||||
"already-connected": "已嘗試可用連接",
|
||||
"connected": "已連接至Discord",
|
||||
"disconnected": "與Discord斷開連接"
|
||||
"already-connected": "已嘗試可用連線",
|
||||
"connected": "已連線至 Discord",
|
||||
"disconnected": "已與 Discord 中斷連線"
|
||||
},
|
||||
"description": "使用Discord狀態與你的好友分享你正在收聽的音樂",
|
||||
"description": "使用 Discord 狀態與你的好友分享你正在收聽的音樂",
|
||||
"menu": {
|
||||
"auto-reconnect": "自動重新連接",
|
||||
"auto-reconnect": "自動重新連線",
|
||||
"clear-activity": "清除狀態",
|
||||
"clear-activity-after-timeout": "在音樂暫停後清除狀態",
|
||||
"connected": "已連接",
|
||||
"disconnected": "已斷開連接",
|
||||
"connected": "已連線",
|
||||
"disconnected": "已斷開連線",
|
||||
"hide-duration-left": "隱藏音樂剩餘時間狀態",
|
||||
"hide-github-button": "隱藏Github頁面按鈕",
|
||||
"play-on-youtube-music": "顯示Play on YouTube Music按鈕",
|
||||
"hide-github-button": "隱藏 GitHub 頁面按鈕",
|
||||
"play-on-youtube-music": "顯示 Play on YouTube Music 按鈕",
|
||||
"set-inactivity-timeout": "設定閒置狀態時長"
|
||||
},
|
||||
"name": "Discord狀態",
|
||||
"name": "Discord 狀態",
|
||||
"prompt": {
|
||||
"set-inactivity-timeout": {
|
||||
"label": "設定多少秒後清除狀態:",
|
||||
"label": "設定多少秒後清除狀態:",
|
||||
"title": "設定閒置狀態時長"
|
||||
}
|
||||
}
|
||||
@ -363,8 +425,8 @@
|
||||
"buttons": {
|
||||
"ok": "完成"
|
||||
},
|
||||
"message": "啊!抱歉,下載失敗了…",
|
||||
"title": "下載出現錯誤!"
|
||||
"message": "啊!抱歉,下載失敗了…",
|
||||
"title": "下載出現錯誤!"
|
||||
},
|
||||
"start-download-playlist": {
|
||||
"buttons": {
|
||||
@ -376,32 +438,47 @@
|
||||
}
|
||||
},
|
||||
"feedback": {
|
||||
"conversion-progress": "轉檔進度: {{percent}}%",
|
||||
"conversion-progress": "轉檔進度:{{percent}}%",
|
||||
"converting": "轉檔中…",
|
||||
"done": "完成下載: {{filePath}}",
|
||||
"done": "完成下載:{{filePath}}",
|
||||
"download-info": "正在下載 {{artist}} - {{title}} [{{videoId}}",
|
||||
"download-progress": "下載進度: {{percent}}%",
|
||||
"download-progress": "下載進度:{{percent}}%",
|
||||
"downloading": "下載中…",
|
||||
"downloading-counter": "正在下載第 {{current}}/{{total}}…",
|
||||
"downloading-playlist": "正在下載播放清單 \"{{playlistTitle}}\" - 共 {{playlistSize}} 首歌 ({{playlistId}})",
|
||||
"error-while-downloading": "無法下載 \"{{author}} - {{title}}\": {{error}}",
|
||||
"folder-already-exists": "資料夾 {{playlistFolder}} 已經存在",
|
||||
"getting-playlist-info": "正在獲取播放清單資訊…",
|
||||
"getting-playlist-info": "正在取得播放清單資訊…",
|
||||
"loading": "載入中…",
|
||||
"playlist-has-only-one-song": "播放清單內只有一首歌曲, 將直接下載",
|
||||
"playlist-has-only-one-song": "播放清單內只有一首歌曲,將直接下載",
|
||||
"playlist-id-not-found": "沒有找到播放清單 ID",
|
||||
"playlist-is-empty": "播放清單是空的",
|
||||
"playlist-is-mix-or-private": "獲取播放清單資訊時發生錯誤: 請確認非私人播放清單或是\"為你推薦的合輯\"\n\n{{error}}",
|
||||
"playlist-is-mix-or-private": "取得播放清單資訊時發生錯誤:請確認非私人播放清單或是\"為你推薦的合輯\"\n\n{{error}}",
|
||||
"preparing-file": "正在準備檔案…",
|
||||
"saving": "儲存中…",
|
||||
"trying-to-get-playlist-id": "正在嘗試獲取播放清單 ID: {{playlistId}}",
|
||||
"trying-to-get-playlist-id": "正在嘗試取得播放清單 ID:{{playlistId}}",
|
||||
"video-id-not-found": "未能找到該影片",
|
||||
"writing-id3": "正在寫入 ID3 標籤…"
|
||||
}
|
||||
},
|
||||
"description": "在應用程式內下載 MP3/原始音樂檔",
|
||||
"description": "開啟應用程式內下載 MP3/原始音檔功能",
|
||||
"menu": {
|
||||
"choose-download-folder": "選擇下載位置",
|
||||
"download-finish-settings": {
|
||||
"label": "智慧下載",
|
||||
"prompt": {
|
||||
"last-percent": "歌曲剩餘多少 % 時下載",
|
||||
"last-seconds": "歌曲剩餘多少秒時下載",
|
||||
"title": "智慧下載進階設定"
|
||||
},
|
||||
"submenu": {
|
||||
"advanced": "進階",
|
||||
"enabled": "啟用",
|
||||
"mode": "判斷方式",
|
||||
"percent": "百分比",
|
||||
"seconds": "秒數"
|
||||
}
|
||||
},
|
||||
"download-playlist": "下載播放清單",
|
||||
"presets": "預設格式",
|
||||
"skip-existing": "跳過已存在的檔案"
|
||||
@ -414,6 +491,18 @@
|
||||
"button": "下載"
|
||||
}
|
||||
},
|
||||
"equalizer": {
|
||||
"description": "為播放器加入等化器",
|
||||
"menu": {
|
||||
"presets": {
|
||||
"label": "預設格式",
|
||||
"list": {
|
||||
"bass-booster": "低音增強器"
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "等化器"
|
||||
},
|
||||
"exponential-volume": {
|
||||
"description": "使音量滑桿指數化,以便更容易選擇較低的音量。",
|
||||
"name": "指數化音量調整"
|
||||
@ -421,7 +510,7 @@
|
||||
"in-app-menu": {
|
||||
"description": "使選單列變更為黑色或隨主題變色",
|
||||
"menu": {
|
||||
"hide-dom-window-controls": "隱藏DOM視窗控制"
|
||||
"hide-dom-window-controls": "隱藏 DOM 視窗控制"
|
||||
},
|
||||
"name": "程式內選單列"
|
||||
},
|
||||
@ -436,13 +525,13 @@
|
||||
},
|
||||
"name": "第三方字幕",
|
||||
"renderer": {
|
||||
"fetched-lyrics": "為Genius獲取字幕"
|
||||
"fetched-lyrics": "為 Genius 取得字幕"
|
||||
}
|
||||
},
|
||||
"music-together": {
|
||||
"description": "與他人共享播放清單。當發起人播放歌曲時,其他成員也會同步收聽",
|
||||
"description": "與他人共享播放清單。當主持人播放歌曲時,其他成員也會同步收聽",
|
||||
"dialog": {
|
||||
"enter-host": "輸入發起人 ID"
|
||||
"enter-host": "輸入主持人 ID"
|
||||
},
|
||||
"internal": {
|
||||
"save": "儲存",
|
||||
@ -450,11 +539,11 @@
|
||||
"unknown-user": "未知使用者"
|
||||
},
|
||||
"menu": {
|
||||
"click-to-copy-id": "複製發起人 ID",
|
||||
"click-to-copy-id": "複製主持人 ID",
|
||||
"close": "同步關閉音樂",
|
||||
"connected-users": "已連接的使用者",
|
||||
"disconnect": "斷開連接共享音樂",
|
||||
"empty-user": "無已連接的使用者",
|
||||
"connected-users": "已連線的使用者",
|
||||
"disconnect": "斷開連線共享音樂",
|
||||
"empty-user": "無已連線的使用者",
|
||||
"host": "發起共享音樂",
|
||||
"join": "加入共享音樂",
|
||||
"permission": {
|
||||
@ -462,23 +551,23 @@
|
||||
"host-only": "不允許加入的使用者控制播放清單及播放控制",
|
||||
"playlist": "只允許加入的使用者控制播放清單"
|
||||
},
|
||||
"set-permission": "切換共享音樂播放權限",
|
||||
"set-permission": "切換共享音樂播放許可權",
|
||||
"status": {
|
||||
"disconnected": "已斷開連接",
|
||||
"guest": "以使用者身份加入",
|
||||
"host": "以發起人身份加入"
|
||||
"disconnected": "已斷開連線",
|
||||
"guest": "以訪客身份加入",
|
||||
"host": "以主持人身份加入"
|
||||
}
|
||||
},
|
||||
"name": "共享音樂 [Beta]",
|
||||
"toast": {
|
||||
"add-song-failed": "歌曲加入失敗",
|
||||
"closed": "關閉共享音樂",
|
||||
"disconnected": "共享音樂已斷開連接",
|
||||
"disconnected": "共享音樂已斷開連線",
|
||||
"host-failed": "發起共享音樂失敗",
|
||||
"id-copied": "已複製發起人 ID",
|
||||
"id-copy-failed": "複製發起人 ID 失敗",
|
||||
"id-copied": "已複製主持人 ID",
|
||||
"id-copy-failed": "複製主持人 ID 失敗",
|
||||
"join-failed": "加入共享音樂失敗",
|
||||
"joined": "加入共享音樂",
|
||||
"joined": "已加入共享音樂",
|
||||
"permission-changed": "共享音樂播放權限已切換至 \"{{permission}}\"",
|
||||
"remove-song-failed": "歌曲移除失敗",
|
||||
"user-connected": "{{name}} 已加入共享音樂",
|
||||
@ -486,35 +575,35 @@
|
||||
}
|
||||
},
|
||||
"navigation": {
|
||||
"description": "將上一頁/下一頁按鈕新增至應用程式上方, 就像你最熟悉的瀏覽器",
|
||||
"description": "允許應用程式上方顯示上一頁/下一頁按鈕",
|
||||
"name": "導覽列"
|
||||
},
|
||||
"no-google-login": {
|
||||
"description": "移除Google登入按鈕及連結",
|
||||
"name": "停用Google登入"
|
||||
"description": "移除 Google 登入按鈕及連結",
|
||||
"name": "停用 Google 登入"
|
||||
},
|
||||
"notifications": {
|
||||
"description": "在歌曲播放時發送一個系統通知 (可互動通知僅限Windows)",
|
||||
"description": "在歌曲播放時傳送一個系統通知 (可互動通知僅限 Windows)",
|
||||
"menu": {
|
||||
"interactive": "可互動通知",
|
||||
"interactive-settings": {
|
||||
"label": "通知互動設定",
|
||||
"submenu": {
|
||||
"hide-button-text": "隱藏按鈕文字",
|
||||
"refresh-on-play-pause": "在播放/暫停時刷新",
|
||||
"tray-controls": "點擊系統閘圖示時打開/關閉"
|
||||
"refresh-on-play-pause": "在播放/暫停時重新整理",
|
||||
"tray-controls": "點選系統閘圖示時開啟/關閉"
|
||||
}
|
||||
},
|
||||
"priority": "通知優先權",
|
||||
"toast-style": "通知樣式",
|
||||
"unpause-notification": "在取消暫停時發送通知"
|
||||
"unpause-notification": "在取消暫停時傳送通知"
|
||||
},
|
||||
"name": "歌曲播放通知"
|
||||
},
|
||||
"picture-in-picture": {
|
||||
"description": "允許應用程式切換至子母畫面模式",
|
||||
"menu": {
|
||||
"always-on-top": "永遠顯示在最上層",
|
||||
"always-on-top": "最上層顯示",
|
||||
"hotkey": {
|
||||
"label": "快捷鍵",
|
||||
"prompt": {
|
||||
@ -535,7 +624,7 @@
|
||||
}
|
||||
},
|
||||
"playback-speed": {
|
||||
"description": "傷心的人別聽慢歌, 新增一個滑桿控制歌曲速度",
|
||||
"description": "傷心的人別聽慢歌,新增一個滑桿控制歌曲速度",
|
||||
"name": "控制歌曲速度",
|
||||
"templates": {
|
||||
"button": "速度"
|
||||
@ -555,7 +644,7 @@
|
||||
"decrease": "降低音量",
|
||||
"increase": "增加音量"
|
||||
},
|
||||
"label": "選擇全域音量控制快捷鍵:",
|
||||
"label": "選擇全域音量控制快捷鍵:",
|
||||
"title": "全域音量控制快捷鍵"
|
||||
},
|
||||
"volume-steps": {
|
||||
@ -568,8 +657,8 @@
|
||||
"backend": {
|
||||
"dialog": {
|
||||
"quality-changer": {
|
||||
"detail": "目前畫質: {{quality}}",
|
||||
"message": "選擇影片畫質:",
|
||||
"detail": "目前畫質:{{quality}}",
|
||||
"message": "選擇影片畫質:",
|
||||
"title": "選擇影片畫質"
|
||||
}
|
||||
}
|
||||
@ -579,6 +668,14 @@
|
||||
},
|
||||
"scrobbler": {
|
||||
"description": "額外新增 scrobbling 支援 (例如:last.fm, Listenbrainz)",
|
||||
"dialog": {
|
||||
"lastfm": {
|
||||
"auth-failed": {
|
||||
"message": "Last.fm 認證失敗\n將隱藏彈窗直到重啟。",
|
||||
"title": "認證失敗"
|
||||
}
|
||||
}
|
||||
},
|
||||
"menu": {
|
||||
"lastfm": {
|
||||
"api-settings": "Last.fm API 設定"
|
||||
@ -586,7 +683,8 @@
|
||||
"listenbrainz": {
|
||||
"token": "輸入 ListenBrainz 使用者憑證"
|
||||
},
|
||||
"scrobble-other-media": "紀錄其他媒體文件"
|
||||
"scrobble-alternative-title": "使用替代歌曲標題",
|
||||
"scrobble-other-media": "紀錄其他媒體檔案"
|
||||
},
|
||||
"name": "Scrobbler",
|
||||
"prompt": {
|
||||
@ -603,7 +701,7 @@
|
||||
}
|
||||
},
|
||||
"shortcuts": {
|
||||
"description": "使用全域快捷鍵控制音樂 (播放/暫停/下一首/上一首) + 透過覆寫媒體快捷鍵停用媒體OSD + 允許Ctrl/CMD + F來搜尋 + 支援Linux MPRIS媒體快捷鍵 + 更多自訂快捷鍵給進階使用者",
|
||||
"description": "使用全域快捷鍵控制音樂 (播放/暫停/下一首/上一首) + 透過覆寫媒體快捷鍵停用媒體 OSD + 允許 Ctrl/CMD + F 來搜尋 + 支援 Linux MPRIS 媒體快捷鍵 + 更多自訂快捷鍵給進階使用者",
|
||||
"menu": {
|
||||
"override-media-keys": "覆寫媒體快捷鍵",
|
||||
"set-keybinds": "設定全域歌曲控制"
|
||||
@ -616,7 +714,7 @@
|
||||
"play-pause": "播放/暫停",
|
||||
"previous": "上一首"
|
||||
},
|
||||
"label": "選擇全域音樂控制快捷鍵:",
|
||||
"label": "選擇全域音樂控制快捷鍵:",
|
||||
"title": "全域快捷鍵"
|
||||
}
|
||||
}
|
||||
@ -631,20 +729,85 @@
|
||||
},
|
||||
"sponsorblock": {
|
||||
"description": "自動跳過贊助片段",
|
||||
"name": "贊助阻擋"
|
||||
"name": "SponsorBlock"
|
||||
},
|
||||
"synced-lyrics": {
|
||||
"description": "使用 LRClib 等管道提供歌詞同步顯示。",
|
||||
"errors": {
|
||||
"fetch": "⚠️\t擷取歌詞時發生錯誤\n請稍後再試。",
|
||||
"not-found": "⚠️未找到該首歌曲的歌詞。"
|
||||
},
|
||||
"menu": {
|
||||
"default-text-string": {
|
||||
"label": "預設歌詞中間隔的符號",
|
||||
"tooltip": "選擇歌詞中間隔要使用的符號"
|
||||
},
|
||||
"line-effect": {
|
||||
"label": "歌詞顯示效果",
|
||||
"submenu": {
|
||||
"fancy": {
|
||||
"label": "絢麗",
|
||||
"tooltip": "使用較為接近原生樣式並且放大目前該行歌詞"
|
||||
},
|
||||
"focus": {
|
||||
"label": "聚焦",
|
||||
"tooltip": "聚焦目前的歌詞"
|
||||
},
|
||||
"offset": {
|
||||
"label": "凸行",
|
||||
"tooltip": "凸行目前的歌詞"
|
||||
},
|
||||
"scale": {
|
||||
"label": "放大",
|
||||
"tooltip": "放大目前的歌詞"
|
||||
}
|
||||
},
|
||||
"tooltip": "選擇要使用的歌詞顯示效果"
|
||||
},
|
||||
"precise-timing": {
|
||||
"label": "使歌詞完美同步",
|
||||
"tooltip": "更精確的計算下一行歌詞的顯示 (將會降低些許效能)"
|
||||
},
|
||||
"romanization": {
|
||||
"label": "羅馬拼音化歌詞",
|
||||
"tooltip": "如果歌詞使用不同語言,嘗試使用拉丁文顯示。"
|
||||
},
|
||||
"show-lyrics-even-if-inexact": {
|
||||
"label": "即使不精確依然強制顯示歌詞",
|
||||
"tooltip": "當找不到符合該歌曲的歌詞時,該功能會嘗試不同的搜尋方式。\n使用不同的搜尋方式會導致不精確的結果。"
|
||||
},
|
||||
"show-time-codes": {
|
||||
"label": "顯示時間線",
|
||||
"tooltip": "在歌詞旁顯示時間線"
|
||||
}
|
||||
},
|
||||
"name": "歌詞同步",
|
||||
"refetch-btn": {
|
||||
"fetching": "擷取中...",
|
||||
"normal": "重新擷取歌詞"
|
||||
},
|
||||
"warnings": {
|
||||
"duration-mismatch": "⚠️歌詞可能會出現不同步的情況。",
|
||||
"inexact": "⚠️該歌曲的歌詞可能並不精確",
|
||||
"instrumental": "⚠️該首歌曲為純音樂"
|
||||
}
|
||||
},
|
||||
"taskbar-mediacontrol": {
|
||||
"description": "透過工作列應用程式圖式控制媒體播放",
|
||||
"description": "允許工作列應用程式預覽介面顯示媒體控制相關按鈕",
|
||||
"name": "工作列媒體控制"
|
||||
},
|
||||
"touchbar": {
|
||||
"description": "為macOS使用者新增觸控列支援",
|
||||
"description": "為 macOS 使用者新增觸控列支援",
|
||||
"name": "觸控列 (Touchbar) 支援"
|
||||
},
|
||||
"tuna-obs": {
|
||||
"description": "與 OBS 的 Tuna 外掛連接",
|
||||
"description": "與 OBS 的 Tuna 外掛連線",
|
||||
"name": "Tuna OBS"
|
||||
},
|
||||
"unobtrusive-player": {
|
||||
"description": "防止播放器介面在點選歌曲後彈出",
|
||||
"name": "低干擾播放器介面"
|
||||
},
|
||||
"video-toggle": {
|
||||
"description": "新增一個按鈕可以控制影片/歌曲切換和完全移除整個影片頁面的功能",
|
||||
"menu": {
|
||||
@ -658,7 +821,7 @@
|
||||
},
|
||||
"force-hide": "強制移除整個影片頁面",
|
||||
"mode": {
|
||||
"label": "樣式",
|
||||
"label": "模式",
|
||||
"submenu": {
|
||||
"custom": "自訂樣式",
|
||||
"disabled": "停用",
|
||||
@ -672,11 +835,11 @@
|
||||
}
|
||||
},
|
||||
"visualizer": {
|
||||
"description": "新增一個可視化音樂效果",
|
||||
"description": "新增一個視覺化音樂效果",
|
||||
"menu": {
|
||||
"visualizer-type": "樣式"
|
||||
"visualizer-type": "視覺化效果類型"
|
||||
},
|
||||
"name": "可視化音樂效果"
|
||||
"name": "視覺化效果"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
156
src/index.ts
@ -11,6 +11,8 @@ import {
|
||||
shell,
|
||||
dialog,
|
||||
ipcMain,
|
||||
protocol,
|
||||
type BrowserWindowConstructorOptions,
|
||||
} from 'electron';
|
||||
import enhanceWebRequest, {
|
||||
BetterSession,
|
||||
@ -53,6 +55,8 @@ import {
|
||||
import { LoggerPrefix } from '@/utils';
|
||||
import { loadI18n, setLanguage, t } from '@/i18n';
|
||||
|
||||
import ErrorHtmlAsset from '@assets/error.html?asset';
|
||||
|
||||
import type { PluginConfig } from '@/types/plugins';
|
||||
|
||||
if (!is.macOS()) {
|
||||
@ -80,11 +84,43 @@ if (!gotTheLock) {
|
||||
app.exit();
|
||||
}
|
||||
|
||||
protocol.registerSchemesAsPrivileged([
|
||||
{
|
||||
scheme: 'http',
|
||||
privileges: {
|
||||
standard: true,
|
||||
bypassCSP: true,
|
||||
allowServiceWorkers: true,
|
||||
supportFetchAPI: true,
|
||||
corsEnabled: true,
|
||||
stream: true,
|
||||
codeCache: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
scheme: 'https',
|
||||
privileges: {
|
||||
standard: true,
|
||||
bypassCSP: true,
|
||||
allowServiceWorkers: true,
|
||||
supportFetchAPI: true,
|
||||
corsEnabled: true,
|
||||
stream: true,
|
||||
codeCache: true,
|
||||
},
|
||||
},
|
||||
{ scheme: 'mailto', privileges: { standard: true } },
|
||||
]);
|
||||
|
||||
// Ozone platform hint: Required for Wayland support
|
||||
app.commandLine.appendSwitch('ozone-platform-hint', 'auto');
|
||||
// SharedArrayBuffer: Required for downloader (@ffmpeg/core-mt)
|
||||
// OverlayScrollbar: Required for overlay scrollbars
|
||||
// UseOzonePlatform: Required for Wayland support
|
||||
// WaylandWindowDecorations: Required for Wayland decorations
|
||||
app.commandLine.appendSwitch(
|
||||
'enable-features',
|
||||
'OverlayScrollbar,SharedArrayBuffer',
|
||||
'OverlayScrollbar,SharedArrayBuffer,UseOzonePlatform,WaylandWindowDecorations',
|
||||
);
|
||||
if (config.get('options.disableHardwareAcceleration')) {
|
||||
if (is.dev()) {
|
||||
@ -94,9 +130,14 @@ if (config.get('options.disableHardwareAcceleration')) {
|
||||
app.disableHardwareAcceleration();
|
||||
}
|
||||
|
||||
if (is.linux() && config.plugins.isEnabled('shortcuts')) {
|
||||
if (is.linux()) {
|
||||
// Overrides WM_CLASS for X11 to correspond to icon filename
|
||||
app.setName('com.github.th_ch.youtube_music');
|
||||
|
||||
// Stops chromium from launching its own MPRIS service
|
||||
app.commandLine.appendSwitch('disable-features', 'MediaSessionService');
|
||||
if (config.plugins.isEnabled('shortcuts')) {
|
||||
app.commandLine.appendSwitch('disable-features', 'MediaSessionService');
|
||||
}
|
||||
}
|
||||
|
||||
if (config.get('options.proxy')) {
|
||||
@ -271,6 +312,23 @@ async function createMainWindow() {
|
||||
height: 32,
|
||||
};
|
||||
|
||||
const decorations: Partial<BrowserWindowConstructorOptions> = {
|
||||
frame: !is.macOS() && !useInlineMenu,
|
||||
titleBarOverlay: defaultTitleBarOverlayOptions,
|
||||
titleBarStyle: useInlineMenu
|
||||
? 'hidden'
|
||||
: is.macOS()
|
||||
? 'hiddenInset'
|
||||
: 'default',
|
||||
autoHideMenuBar: config.get('options.hideMenu'),
|
||||
};
|
||||
|
||||
// Note: on linux, for some weird reason, having these extra properties with 'frame: false' does not work
|
||||
if (is.linux() && useInlineMenu) {
|
||||
delete decorations.titleBarOverlay;
|
||||
delete decorations.titleBarStyle;
|
||||
}
|
||||
|
||||
const win = new BrowserWindow({
|
||||
icon,
|
||||
width: windowSize.width,
|
||||
@ -288,14 +346,7 @@ async function createMainWindow() {
|
||||
sandbox: false,
|
||||
}),
|
||||
},
|
||||
frame: !is.macOS() && !useInlineMenu,
|
||||
titleBarOverlay: defaultTitleBarOverlayOptions,
|
||||
titleBarStyle: useInlineMenu
|
||||
? 'hidden'
|
||||
: is.macOS()
|
||||
? 'hiddenInset'
|
||||
: 'default',
|
||||
autoHideMenuBar: config.get('options.hideMenu'),
|
||||
...decorations,
|
||||
});
|
||||
initHook(win);
|
||||
initTheme(win);
|
||||
@ -306,28 +357,31 @@ async function createMainWindow() {
|
||||
const { x: windowX, y: windowY } = windowPosition;
|
||||
const winSize = win.getSize();
|
||||
const display = screen.getDisplayNearestPoint(windowPosition);
|
||||
const scaleFactor = is.windows() ? display.scaleFactor: 1;
|
||||
const primaryDisplay = screen.getPrimaryDisplay();
|
||||
|
||||
const scaledWidth = Math.floor(windowSize.width / scaleFactor);
|
||||
const scaledHeight = Math.floor(windowSize.height / scaleFactor);
|
||||
const scaleFactor = is.windows()
|
||||
? primaryDisplay.scaleFactor / display.scaleFactor
|
||||
: 1;
|
||||
const scaledWidth = Math.floor(windowSize.width * scaleFactor);
|
||||
const scaledHeight = Math.floor(windowSize.height * scaleFactor);
|
||||
|
||||
const scaledX = windowX;
|
||||
const scaledY = windowY;
|
||||
|
||||
if (
|
||||
scaledX + scaledWidth < display.bounds.x - 8 ||
|
||||
scaledX - scaledWidth > display.bounds.x + display.bounds.width ||
|
||||
scaledY < display.bounds.y - 8 ||
|
||||
scaledY > display.bounds.y + display.bounds.height
|
||||
scaledX + scaledWidth / 2 < display.bounds.x - 8 || // Left
|
||||
scaledX + scaledWidth / 2 > display.bounds.x + display.bounds.width || // Right
|
||||
scaledY < display.bounds.y - 8 || // Top
|
||||
scaledY + scaledHeight / 2 > display.bounds.y + display.bounds.height // Bottom
|
||||
) {
|
||||
// Window is offscreen
|
||||
if (is.dev()) {
|
||||
console.warn(
|
||||
LoggerPrefix,
|
||||
t('main.console.window.tried-to-render-offscreen', {
|
||||
winSize: String(winSize),
|
||||
displaySize: String(display.bounds),
|
||||
windowPosition: String(windowPosition),
|
||||
windowSize: String(winSize),
|
||||
displaySize: JSON.stringify(display.bounds),
|
||||
position: JSON.stringify(windowPosition),
|
||||
}),
|
||||
);
|
||||
}
|
||||
@ -415,7 +469,7 @@ async function createMainWindow() {
|
||||
...defaultTitleBarOverlayOptions,
|
||||
height: Math.floor(
|
||||
defaultTitleBarOverlayOptions.height! *
|
||||
win.webContents.getZoomFactor(),
|
||||
win.webContents.getZoomFactor(),
|
||||
),
|
||||
});
|
||||
}
|
||||
@ -428,7 +482,7 @@ async function createMainWindow() {
|
||||
event.preventDefault();
|
||||
|
||||
win.webContents.loadURL(
|
||||
'https://accounts.google.com/ServiceLogin?ltmpl=music&service=youtube&continue=https%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26next%3Dhttps%253A%252F%252Fmusic.youtube.com%252F'
|
||||
'https://accounts.google.com/ServiceLogin?ltmpl=music&service=youtube&continue=https%3A%2F%2Fwww.youtube.com%2Fsignin%3Faction_handle_signin%3Dtrue%26next%3Dhttps%253A%252F%252Fmusic.youtube.com%252F',
|
||||
);
|
||||
}
|
||||
});
|
||||
@ -443,17 +497,18 @@ app.once('browser-window-created', (_event, win) => {
|
||||
// User agents are from https://developers.whatismybrowser.com/useragents/explore/
|
||||
const originalUserAgent = win.webContents.userAgent;
|
||||
const userAgents = {
|
||||
mac: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 12.1; rv:95.0) Gecko/20100101 Firefox/95.0',
|
||||
mac: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.152 Safari/537.36',
|
||||
windows:
|
||||
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0',
|
||||
linux: 'Mozilla/5.0 (Linux x86_64; rv:95.0) Gecko/20100101 Firefox/95.0',
|
||||
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.152 Safari/537.36',
|
||||
linux:
|
||||
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.152 Safari/537.36',
|
||||
};
|
||||
|
||||
const updatedUserAgent = is.macOS()
|
||||
? userAgents.mac
|
||||
: is.windows()
|
||||
? userAgents.windows
|
||||
: userAgents.linux;
|
||||
? userAgents.windows
|
||||
: userAgents.linux;
|
||||
|
||||
win.webContents.userAgent = updatedUserAgent;
|
||||
app.userAgentFallback = updatedUserAgent;
|
||||
@ -502,10 +557,14 @@ app.once('browser-window-created', (_event, win) => {
|
||||
console.log(log);
|
||||
}
|
||||
|
||||
if (errorCode !== -3) {
|
||||
if (
|
||||
errorCode !== -3 &&
|
||||
// Workaround for #2435
|
||||
!new URL(validatedURL).hostname.includes('doubleclick.net')
|
||||
) {
|
||||
// -3 is a false positive
|
||||
win.webContents.send('log', log);
|
||||
win.webContents.loadFile(path.join(__dirname, 'error.html'));
|
||||
win.webContents.loadFile(ErrorHtmlAsset);
|
||||
}
|
||||
},
|
||||
);
|
||||
@ -591,6 +650,7 @@ app.whenReady().then(async () => {
|
||||
shortcutDetails.target !== appLocation ||
|
||||
shortcutDetails.appUserModelId !== appID
|
||||
) {
|
||||
// eslint-disable-next-line @typescript-eslint/only-throw-error
|
||||
throw 'needUpdate';
|
||||
}
|
||||
} catch (error) {
|
||||
@ -614,7 +674,9 @@ app.whenReady().then(async () => {
|
||||
// In dev mode, get string from process.env.VITE_DEV_SERVER_URL, else use fs.readFileSync
|
||||
if (is.dev() && process.env.ELECTRON_RENDERER_URL) {
|
||||
// HACK: to make vite work with electron renderer (supports hot reload)
|
||||
event.returnValue = [null, `
|
||||
event.returnValue = [
|
||||
null,
|
||||
`
|
||||
console.log('${LoggerPrefix}', 'Loading vite from dev server');
|
||||
(async () => {
|
||||
await new Promise((resolve) => {
|
||||
@ -635,7 +697,8 @@ app.whenReady().then(async () => {
|
||||
document.body.appendChild(rendererScript);
|
||||
})();
|
||||
0
|
||||
`];
|
||||
`,
|
||||
];
|
||||
} else {
|
||||
const rendererPath = path.join(__dirname, '..', 'renderer');
|
||||
const indexHTML = parse(
|
||||
@ -647,7 +710,10 @@ app.whenReady().then(async () => {
|
||||
scriptSrc.getAttribute('src')!,
|
||||
);
|
||||
const scriptString = fs.readFileSync(scriptPath, 'utf-8');
|
||||
event.returnValue = [url.pathToFileURL(scriptPath).toString(), scriptString + ';0'];
|
||||
event.returnValue = [
|
||||
url.pathToFileURL(scriptPath).toString(),
|
||||
scriptString + ';0',
|
||||
];
|
||||
}
|
||||
});
|
||||
|
||||
@ -671,7 +737,9 @@ app.whenReady().then(async () => {
|
||||
);
|
||||
}
|
||||
|
||||
handleProtocol(command);
|
||||
const splited = decodeURIComponent(command).split(' ');
|
||||
|
||||
handleProtocol(splited.shift()!, splited);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -757,7 +825,7 @@ app.whenReady().then(async () => {
|
||||
|
||||
// Optimized for Mac OS X
|
||||
if (is.macOS() && !config.get('options.appVisible')) {
|
||||
app.dock.hide();
|
||||
app.dock?.hide();
|
||||
}
|
||||
|
||||
let forceQuit = false;
|
||||
@ -829,9 +897,21 @@ function removeContentSecurityPolicy(
|
||||
betterSession.webRequest.onHeadersReceived((details, callback) => {
|
||||
details.responseHeaders ??= {};
|
||||
|
||||
// Remove the content security policy
|
||||
delete details.responseHeaders['content-security-policy-report-only'];
|
||||
delete details.responseHeaders['content-security-policy'];
|
||||
// prettier-ignore
|
||||
if (new URL(details.url).protocol === 'https:') {
|
||||
// Remove the content security policy
|
||||
delete details.responseHeaders['content-security-policy-report-only'];
|
||||
delete details.responseHeaders['Content-Security-Policy-Report-Only'];
|
||||
delete details.responseHeaders['content-security-policy'];
|
||||
delete details.responseHeaders['Content-Security-Policy'];
|
||||
|
||||
if (
|
||||
!details.responseHeaders['access-control-allow-origin'] &&
|
||||
!details.responseHeaders['Access-Control-Allow-Origin']
|
||||
) {
|
||||
details.responseHeaders['access-control-allow-origin'] = ['https://music.youtube.com'];
|
||||
}
|
||||
}
|
||||
|
||||
callback({ cancel: false, responseHeaders: details.responseHeaders });
|
||||
});
|
||||
|
||||
@ -34,11 +34,12 @@ const createContext = (
|
||||
win.webContents.send(event, ...args);
|
||||
},
|
||||
handle: (event: string, listener: CallableFunction) => {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-return,@typescript-eslint/no-unsafe-call
|
||||
ipcMain.handle(event, (_, ...args: unknown[]) => listener(...args));
|
||||
},
|
||||
on: (event: string, listener: CallableFunction) => {
|
||||
ipcMain.on(event, (_, ...args: unknown[]) => {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
||||
listener(...args);
|
||||
});
|
||||
},
|
||||
@ -75,11 +76,11 @@ export const forceUnloadMainPlugin = async (
|
||||
);
|
||||
return;
|
||||
} else {
|
||||
console.log(
|
||||
LoggerPrefix,
|
||||
t('common.console.plugins.unload-failed', { pluginName: id }),
|
||||
);
|
||||
return Promise.reject();
|
||||
const message = t('common.console.plugins.unload-failed', {
|
||||
pluginName: id,
|
||||
});
|
||||
console.log(LoggerPrefix, message);
|
||||
return Promise.reject(new Error(message));
|
||||
}
|
||||
} catch (err) {
|
||||
console.error(
|
||||
@ -87,7 +88,7 @@ export const forceUnloadMainPlugin = async (
|
||||
t('common.console.plugins.unload-failed', { pluginName: id }),
|
||||
);
|
||||
console.trace(err);
|
||||
return Promise.reject(err);
|
||||
return Promise.reject(err as Error);
|
||||
}
|
||||
};
|
||||
|
||||
@ -111,11 +112,11 @@ export const forceLoadMainPlugin = async (
|
||||
) {
|
||||
loadedPluginMap[id] = plugin;
|
||||
} else {
|
||||
console.log(
|
||||
LoggerPrefix,
|
||||
t('common.console.plugins.load-failed', { pluginName: id }),
|
||||
);
|
||||
return Promise.reject();
|
||||
const message = t('common.console.plugins.load-failed', {
|
||||
pluginName: id,
|
||||
});
|
||||
console.log(LoggerPrefix, message);
|
||||
return Promise.reject(new Error(message));
|
||||
}
|
||||
} catch (err) {
|
||||
console.error(
|
||||
@ -123,7 +124,7 @@ export const forceLoadMainPlugin = async (
|
||||
t('common.console.plugins.initialize-failed', { pluginName: id }),
|
||||
);
|
||||
console.trace(err);
|
||||
return Promise.reject(err);
|
||||
return Promise.reject(err as Error);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -18,7 +18,8 @@ const loadedPluginMap: Record<
|
||||
export const createContext = <Config extends PluginConfig>(
|
||||
id: string,
|
||||
): RendererContext<Config> => ({
|
||||
getConfig: async () => window.ipcRenderer.invoke('ytmd:get-config', id),
|
||||
getConfig: async () =>
|
||||
window.ipcRenderer.invoke('ytmd:get-config', id) as Promise<Config>,
|
||||
setConfig: async (newConfig) => {
|
||||
await window.ipcRenderer.invoke('ytmd:set-config', id, newConfig);
|
||||
},
|
||||
@ -30,6 +31,7 @@ export const createContext = <Config extends PluginConfig>(
|
||||
window.ipcRenderer.invoke(event, ...args),
|
||||
on: (event: string, listener: CallableFunction) => {
|
||||
window.ipcRenderer.on(event, (_, ...args: unknown[]) => {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
||||
listener(...args);
|
||||
});
|
||||
},
|
||||
|
||||
89
src/menu.ts
@ -68,7 +68,7 @@ export const mainMenuTemplate = async (
|
||||
win: BrowserWindow,
|
||||
): Promise<MenuTemplate> => {
|
||||
const innerRefreshMenu = () => refreshMenu(win);
|
||||
|
||||
const { navigationHistory } = win.webContents;
|
||||
await loadAllMenuPlugins(win);
|
||||
|
||||
const menuResult = Object.entries(getAllMenuTemplate()).map(
|
||||
@ -76,12 +76,21 @@ export const mainMenuTemplate = async (
|
||||
const plugin = allPlugins[id];
|
||||
const pluginLabel = plugin?.name?.() ?? id;
|
||||
const pluginDescription = plugin?.description?.() ?? undefined;
|
||||
const isNew = plugin?.addedVersion ? satisfies(packageJson.version, plugin.addedVersion) : false;
|
||||
const isNew = plugin?.addedVersion
|
||||
? satisfies(packageJson.version, plugin.addedVersion)
|
||||
: false;
|
||||
|
||||
if (!config.plugins.isEnabled(id)) {
|
||||
return [
|
||||
id,
|
||||
pluginEnabledMenu(id, pluginLabel, pluginDescription, isNew, true, innerRefreshMenu),
|
||||
pluginEnabledMenu(
|
||||
id,
|
||||
pluginLabel,
|
||||
pluginDescription,
|
||||
isNew,
|
||||
true,
|
||||
innerRefreshMenu,
|
||||
),
|
||||
] as const;
|
||||
}
|
||||
|
||||
@ -123,9 +132,18 @@ export const mainMenuTemplate = async (
|
||||
const plugin = allPlugins[id];
|
||||
const pluginLabel = plugin?.name?.() ?? id;
|
||||
const pluginDescription = plugin?.description?.() ?? undefined;
|
||||
const isNew = plugin?.addedVersion ? satisfies(packageJson.version, plugin.addedVersion) : false;
|
||||
const isNew = plugin?.addedVersion
|
||||
? satisfies(packageJson.version, plugin.addedVersion)
|
||||
: false;
|
||||
|
||||
return pluginEnabledMenu(id, pluginLabel, pluginDescription, isNew, true, innerRefreshMenu);
|
||||
return pluginEnabledMenu(
|
||||
id,
|
||||
pluginLabel,
|
||||
pluginDescription,
|
||||
isNew,
|
||||
true,
|
||||
innerRefreshMenu,
|
||||
);
|
||||
});
|
||||
|
||||
const availableLanguages = Object.keys(languageResources);
|
||||
@ -235,16 +253,50 @@ export const mainMenuTemplate = async (
|
||||
'main.menu.options.submenu.visual-tweaks.submenu.theme.label',
|
||||
),
|
||||
submenu: [
|
||||
{
|
||||
label: t(
|
||||
'main.menu.options.submenu.visual-tweaks.submenu.theme.submenu.no-theme',
|
||||
),
|
||||
type: 'radio',
|
||||
checked: config.get('options.themes')?.length === 0, // Todo rename "themes"
|
||||
click() {
|
||||
config.set('options.themes', []);
|
||||
...((config.get('options.themes')?.length ?? 0) === 0
|
||||
? [
|
||||
{
|
||||
label: t(
|
||||
'main.menu.options.submenu.visual-tweaks.submenu.theme.submenu.no-theme',
|
||||
),
|
||||
},
|
||||
]
|
||||
: []),
|
||||
...(config.get('options.themes')?.map((theme: string) => ({
|
||||
type: 'normal' as const,
|
||||
label: theme,
|
||||
async click() {
|
||||
const { response } = await dialog.showMessageBox(win, {
|
||||
type: 'question',
|
||||
defaultId: 1,
|
||||
title: t(
|
||||
'main.menu.options.submenu.visual-tweaks.submenu.theme.dialog.remove-theme',
|
||||
),
|
||||
message: t(
|
||||
'main.menu.options.submenu.visual-tweaks.submenu.theme.dialog.remove-theme-message',
|
||||
{ theme },
|
||||
),
|
||||
buttons: [
|
||||
t(
|
||||
'main.menu.options.submenu.visual-tweaks.submenu.theme.dialog.button.cancel',
|
||||
),
|
||||
t(
|
||||
'main.menu.options.submenu.visual-tweaks.submenu.theme.dialog.button.remove',
|
||||
),
|
||||
],
|
||||
});
|
||||
|
||||
if (response === 1) {
|
||||
config.set(
|
||||
'options.themes',
|
||||
config
|
||||
.get('options.themes')
|
||||
?.filter((t) => t !== theme) ?? [],
|
||||
);
|
||||
innerRefreshMenu();
|
||||
}
|
||||
},
|
||||
},
|
||||
})) ?? []),
|
||||
{ type: 'separator' },
|
||||
{
|
||||
label: t(
|
||||
@ -258,6 +310,7 @@ export const mainMenuTemplate = async (
|
||||
});
|
||||
if (filePaths) {
|
||||
config.set('options.themes', filePaths);
|
||||
innerRefreshMenu();
|
||||
}
|
||||
},
|
||||
},
|
||||
@ -557,16 +610,16 @@ export const mainMenuTemplate = async (
|
||||
{
|
||||
label: t('main.menu.navigation.submenu.go-back'),
|
||||
click() {
|
||||
if (win.webContents.canGoBack()) {
|
||||
win.webContents.goBack();
|
||||
if (navigationHistory.canGoBack()) {
|
||||
navigationHistory.goBack();
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
label: t('main.menu.navigation.submenu.go-forward'),
|
||||
click() {
|
||||
if (win.webContents.canGoForward()) {
|
||||
win.webContents.goForward();
|
||||
if (navigationHistory.canGoForward()) {
|
||||
navigationHistory.goForward();
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
58
src/plugins/adblocker/adSpeedup.ts
Normal file
@ -0,0 +1,58 @@
|
||||
function skipAd(target: Element) {
|
||||
const skipButton = target.querySelector<HTMLButtonElement>(
|
||||
'button.ytp-ad-skip-button-modern',
|
||||
);
|
||||
if (skipButton) {
|
||||
skipButton.click();
|
||||
}
|
||||
}
|
||||
|
||||
function speedUpAndMute(player: Element, isAdShowing: boolean) {
|
||||
const video = player.querySelector<HTMLVideoElement>('video');
|
||||
if (!video) return;
|
||||
if (isAdShowing) {
|
||||
video.playbackRate = 16;
|
||||
video.muted = true;
|
||||
} else if (!isAdShowing) {
|
||||
video.playbackRate = 1;
|
||||
video.muted = false;
|
||||
}
|
||||
}
|
||||
|
||||
export const loadAdSpeedup = () => {
|
||||
const player = document.querySelector<HTMLVideoElement>('#movie_player');
|
||||
if (!player) return;
|
||||
|
||||
new MutationObserver((mutations) => {
|
||||
for (const mutation of mutations) {
|
||||
if (
|
||||
mutation.type === 'attributes' &&
|
||||
mutation.attributeName === 'class'
|
||||
) {
|
||||
const target = mutation.target as HTMLElement;
|
||||
|
||||
const isAdShowing =
|
||||
target.classList.contains('ad-showing') ||
|
||||
target.classList.contains('ad-interrupting');
|
||||
speedUpAndMute(target, isAdShowing);
|
||||
}
|
||||
if (
|
||||
mutation.type === 'childList' &&
|
||||
mutation.addedNodes.length &&
|
||||
mutation.target instanceof HTMLElement
|
||||
) {
|
||||
skipAd(mutation.target);
|
||||
}
|
||||
}
|
||||
}).observe(player, {
|
||||
attributes: true,
|
||||
childList: true,
|
||||
subtree: true,
|
||||
});
|
||||
|
||||
const isAdShowing =
|
||||
player.classList.contains('ad-showing') ||
|
||||
player.classList.contains('ad-interrupting');
|
||||
speedUpAndMute(player, isAdShowing);
|
||||
skipAd(player);
|
||||
};
|
||||
@ -2,19 +2,23 @@
|
||||
import path from 'node:path';
|
||||
import fs, { promises } from 'node:fs';
|
||||
|
||||
import { ElectronBlocker } from '@cliqz/adblocker-electron';
|
||||
import { ElectronBlocker } from '@ghostery/adblocker-electron';
|
||||
import { app, net } from 'electron';
|
||||
|
||||
const SOURCES = [
|
||||
'https://raw.githubusercontent.com/kbinani/adblock-youtube-ads/master/signed.txt',
|
||||
// UBlock Origin
|
||||
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters.txt',
|
||||
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters-2020.txt',
|
||||
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters-2021.txt',
|
||||
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters-2022.txt',
|
||||
'https://raw.githubusercontent.com/uBlockOrigin/uAssets/master/filters/filters-2023.txt',
|
||||
'https://raw.githubusercontent.com/ghostery/adblocker/master/packages/adblocker/assets/ublock-origin/filters.txt',
|
||||
'https://raw.githubusercontent.com/ghostery/adblocker/master/packages/adblocker/assets/ublock-origin/quick-fixes.txt',
|
||||
'https://raw.githubusercontent.com/ghostery/adblocker/master/packages/adblocker/assets/ublock-origin/unbreak.txt',
|
||||
'https://raw.githubusercontent.com/ghostery/adblocker/master/packages/adblocker/assets/ublock-origin/filters-2020.txt',
|
||||
'https://raw.githubusercontent.com/ghostery/adblocker/master/packages/adblocker/assets/ublock-origin/filters-2021.txt',
|
||||
'https://raw.githubusercontent.com/ghostery/adblocker/master/packages/adblocker/assets/ublock-origin/filters-2022.txt',
|
||||
'https://raw.githubusercontent.com/ghostery/adblocker/master/packages/adblocker/assets/ublock-origin/filters-2023.txt',
|
||||
// Fanboy Annoyances
|
||||
'https://secure.fanboy.co.nz/fanboy-annoyance_ubo.txt',
|
||||
// AdGuard
|
||||
'https://filters.adtidy.org/extension/ublock/filters/122_optimized.txt',
|
||||
];
|
||||
|
||||
let blocker: ElectronBlocker | undefined;
|
||||
@ -51,6 +55,7 @@ export const loadAdBlockerEngine = async (
|
||||
(url: string) => net.fetch(url),
|
||||
lists,
|
||||
{
|
||||
enableCompression: true,
|
||||
// When generating the engine for caching, do not load network filters
|
||||
// So that enhancing the session works as expected
|
||||
// Allowing to define multiple webRequest listeners
|
||||
@ -62,7 +67,7 @@ export const loadAdBlockerEngine = async (
|
||||
blocker.enableBlockingInSession(session);
|
||||
}
|
||||
} catch (error) {
|
||||
console.log('Error loading adBlocker engine', error);
|
||||
console.error('Error loading adBlocker engine', error);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@ -8,8 +8,8 @@ import {
|
||||
unloadAdBlockerEngine,
|
||||
} from './blocker';
|
||||
|
||||
import injectCliqzPreload from './injectors/inject-cliqz-preload';
|
||||
import { inject, isInjected } from './injectors/inject';
|
||||
import { loadAdSpeedup } from './adSpeedup';
|
||||
|
||||
import { t } from '@/i18n';
|
||||
|
||||
@ -72,6 +72,14 @@ export default createPlugin({
|
||||
},
|
||||
];
|
||||
},
|
||||
renderer: {
|
||||
async onPlayerApiReady(_, { getConfig }) {
|
||||
const config = await getConfig();
|
||||
if (config.blocker === blockers.AdSpeedup) {
|
||||
await loadAdSpeedup();
|
||||
}
|
||||
},
|
||||
},
|
||||
backend: {
|
||||
mainWindow: null as BrowserWindow | null,
|
||||
async start({ getConfig, window }) {
|
||||
@ -109,22 +117,29 @@ export default createPlugin({
|
||||
},
|
||||
},
|
||||
preload: {
|
||||
script: 'window.JSON.parse = window._proxyJsonParse; window._proxyJsonParse = undefined; window.Response.prototype.json = window._proxyResponseJson; window._proxyResponseJson = undefined; 0',
|
||||
// see #1478
|
||||
script: `const _prunerFn = window._pruner;
|
||||
window._pruner = undefined;
|
||||
JSON.parse = new Proxy(JSON.parse, {
|
||||
apply() {
|
||||
return _prunerFn(Reflect.apply(...arguments));
|
||||
},
|
||||
});
|
||||
Response.prototype.json = new Proxy(Response.prototype.json, {
|
||||
apply() {
|
||||
return Reflect.apply(...arguments).then((o) => _prunerFn(o));
|
||||
},
|
||||
}); 0`,
|
||||
async start({ getConfig }) {
|
||||
const config = await getConfig();
|
||||
|
||||
if (config.blocker === blockers.WithBlocklists) {
|
||||
// Preload adblocker to inject scripts/styles
|
||||
await injectCliqzPreload();
|
||||
} else if (config.blocker === blockers.InPlayer && !isInjected()) {
|
||||
if (config.blocker === blockers.InPlayer && !isInjected()) {
|
||||
inject(contextBridge);
|
||||
await webFrame.executeJavaScript(this.script);
|
||||
}
|
||||
},
|
||||
async onConfigChange(newConfig) {
|
||||
if (newConfig.blocker === blockers.WithBlocklists) {
|
||||
await injectCliqzPreload();
|
||||
} else if (newConfig.blocker === blockers.InPlayer && !isInjected()) {
|
||||
if (newConfig.blocker === blockers.InPlayer && !isInjected()) {
|
||||
inject(contextBridge);
|
||||
await webFrame.executeJavaScript(this.script);
|
||||
}
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
export default async () => {
|
||||
await import('@cliqz/adblocker-electron-preload');
|
||||
await import('@ghostery/adblocker-electron-preload');
|
||||
};
|
||||
|
||||
@ -22,32 +22,46 @@ export const inject = (contextBridge) => {
|
||||
const pruner = function (o) {
|
||||
delete o.playerAds;
|
||||
delete o.adPlacements;
|
||||
delete o.adSlots;
|
||||
//
|
||||
if (o.playerResponse) {
|
||||
delete o.playerResponse.playerAds;
|
||||
delete o.playerResponse.adPlacements;
|
||||
delete o.playerResponse.adSlots;
|
||||
}
|
||||
if (o.ytInitialPlayerResponse) {
|
||||
delete o.ytInitialPlayerResponse.playerAds;
|
||||
delete o.ytInitialPlayerResponse.adPlacements;
|
||||
delete o.ytInitialPlayerResponse.adSlots;
|
||||
}
|
||||
|
||||
//
|
||||
return o;
|
||||
};
|
||||
}
|
||||
|
||||
contextBridge.exposeInMainWorld('_proxyJsonParse', new Proxy(JSON.parse, {
|
||||
apply() {
|
||||
return pruner(Reflect.apply(...arguments));
|
||||
},
|
||||
}));
|
||||
|
||||
contextBridge.exposeInMainWorld('_proxyResponseJson', new Proxy(Response.prototype.json, {
|
||||
apply() {
|
||||
return Reflect.apply(...arguments).then((o) => pruner(o));
|
||||
},
|
||||
}));
|
||||
contextBridge.exposeInMainWorld('_pruner', pruner);
|
||||
}
|
||||
|
||||
(function () {
|
||||
let cValue = 'undefined';
|
||||
const chain = 'playerResponse.adPlacements';
|
||||
const chains = [
|
||||
{
|
||||
chain: 'playerResponse.adPlacements',
|
||||
cValue: 'undefined',
|
||||
},
|
||||
{
|
||||
chain: 'ytInitialPlayerResponse.playerAds',
|
||||
cValue: 'undefined',
|
||||
},
|
||||
{
|
||||
chain: 'ytInitialPlayerResponse.adPlacements',
|
||||
cValue: 'undefined',
|
||||
},
|
||||
{
|
||||
chain: 'ytInitialPlayerResponse.adSlots',
|
||||
cValue: 'undefined',
|
||||
}
|
||||
];
|
||||
|
||||
chains.forEach(function ({ chain, cValue }) {
|
||||
const thisScript = document.currentScript;
|
||||
//
|
||||
switch (cValue) {
|
||||
@ -241,203 +255,5 @@ export const inject = (contextBridge) => {
|
||||
|
||||
//
|
||||
trapChain(window, chain);
|
||||
})();
|
||||
|
||||
(function () {
|
||||
let cValue = 'undefined';
|
||||
const thisScript = document.currentScript;
|
||||
const chain = 'ytInitialPlayerResponse.adPlacements';
|
||||
//
|
||||
switch (cValue) {
|
||||
case 'null': {
|
||||
cValue = null;
|
||||
break;
|
||||
}
|
||||
|
||||
case "''": {
|
||||
cValue = '';
|
||||
break;
|
||||
}
|
||||
|
||||
case 'true': {
|
||||
cValue = true;
|
||||
break;
|
||||
}
|
||||
|
||||
case 'false': {
|
||||
cValue = false;
|
||||
break;
|
||||
}
|
||||
|
||||
case 'undefined': {
|
||||
cValue = undefined;
|
||||
break;
|
||||
}
|
||||
|
||||
case 'noopFunc': {
|
||||
cValue = function () {};
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case 'trueFunc': {
|
||||
cValue = function () {
|
||||
return true;
|
||||
};
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case 'falseFunc': {
|
||||
cValue = function () {
|
||||
return false;
|
||||
};
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
default: {
|
||||
if (/^\d+$/.test(cValue)) {
|
||||
cValue = Number.parseFloat(cValue);
|
||||
//
|
||||
if (isNaN(cValue)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (Math.abs(cValue) > 0x7f_ff) {
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
let aborted = false;
|
||||
const mustAbort = function (v) {
|
||||
if (aborted) {
|
||||
return true;
|
||||
}
|
||||
|
||||
aborted =
|
||||
v !== undefined &&
|
||||
v !== null &&
|
||||
cValue !== undefined &&
|
||||
cValue !== null &&
|
||||
typeof v !== typeof cValue;
|
||||
return aborted;
|
||||
};
|
||||
|
||||
/*
|
||||
Support multiple trappers for the same property:
|
||||
https://github.com/uBlockOrigin/uBlock-issues/issues/156
|
||||
*/
|
||||
|
||||
const trapProp = function (owner, prop, configurable, handler) {
|
||||
if (handler.init(owner[prop]) === false) {
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
const odesc = Object.getOwnPropertyDescriptor(owner, prop);
|
||||
let previousGetter;
|
||||
let previousSetter;
|
||||
if (odesc instanceof Object) {
|
||||
if (odesc.configurable === false) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (odesc.get instanceof Function) {
|
||||
previousGetter = odesc.get;
|
||||
}
|
||||
|
||||
if (odesc.set instanceof Function) {
|
||||
previousSetter = odesc.set;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
Object.defineProperty(owner, prop, {
|
||||
configurable,
|
||||
get() {
|
||||
if (previousGetter !== undefined) {
|
||||
previousGetter();
|
||||
}
|
||||
|
||||
//
|
||||
return handler.getter();
|
||||
},
|
||||
set(a) {
|
||||
if (previousSetter !== undefined) {
|
||||
previousSetter(a);
|
||||
}
|
||||
|
||||
//
|
||||
handler.setter(a);
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
const trapChain = function (owner, chain) {
|
||||
const pos = chain.indexOf('.');
|
||||
if (pos === -1) {
|
||||
trapProp(owner, chain, false, {
|
||||
v: undefined,
|
||||
getter() {
|
||||
return document.currentScript === thisScript ? this.v : cValue;
|
||||
},
|
||||
setter(a) {
|
||||
if (mustAbort(a) === false) {
|
||||
return;
|
||||
}
|
||||
|
||||
cValue = a;
|
||||
},
|
||||
init(v) {
|
||||
if (mustAbort(v)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
//
|
||||
this.v = v;
|
||||
return true;
|
||||
},
|
||||
});
|
||||
//
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
const prop = chain.slice(0, pos);
|
||||
const v = owner[prop];
|
||||
//
|
||||
chain = chain.slice(pos + 1);
|
||||
if (v instanceof Object || (typeof v === 'object' && v !== null)) {
|
||||
trapChain(v, chain);
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
trapProp(owner, prop, true, {
|
||||
v: undefined,
|
||||
getter() {
|
||||
return this.v;
|
||||
},
|
||||
setter(a) {
|
||||
this.v = a;
|
||||
if (a instanceof Object) {
|
||||
trapChain(a, chain);
|
||||
}
|
||||
},
|
||||
init(v) {
|
||||
this.v = v;
|
||||
return true;
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
//
|
||||
trapChain(window, chain);
|
||||
})();
|
||||
});
|
||||
};
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
export const blockers = {
|
||||
WithBlocklists: 'With blocklists',
|
||||
InPlayer: 'In player',
|
||||
AdSpeedup: 'Ad speedup',
|
||||
} as const;
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import { t } from '@/i18n';
|
||||
import { createPlugin } from '@/utils';
|
||||
import { ElementFromHtml } from '@/plugins/utils/renderer';
|
||||
import { waitForElement } from '@/utils/wait-for-element';
|
||||
|
||||
import undislikeHTML from './templates/undislike.html?raw';
|
||||
import dislikeHTML from './templates/dislike.html?raw';
|
||||
@ -16,7 +17,6 @@ export default createPlugin<
|
||||
changeObserver?: MutationObserver;
|
||||
waiting: boolean;
|
||||
onPageChange(): void;
|
||||
waitForElem(selector: string): Promise<HTMLElement>;
|
||||
loadFullList: (event: MouseEvent) => void;
|
||||
applyToList(id: string, loader: HTMLElement): void;
|
||||
start(): void;
|
||||
@ -50,7 +50,7 @@ export default createPlugin<
|
||||
} else {
|
||||
this.waiting = true;
|
||||
}
|
||||
const continuations = await this.waitForElem('#continuations');
|
||||
const continuations = await waitForElement<HTMLElement>('#continuations');
|
||||
this.waiting = false;
|
||||
//Gets the for buttons
|
||||
const buttons: Array<HTMLElement> = [
|
||||
@ -104,16 +104,28 @@ export default createPlugin<
|
||||
buttons.splice(i, 1);
|
||||
i--;
|
||||
} else {
|
||||
(buttons[i].children[0].children[0] as HTMLElement).style.setProperty(
|
||||
(
|
||||
buttons[i].children[0].children[0] as HTMLElement
|
||||
).style.setProperty(
|
||||
'-webkit-mask-size',
|
||||
`100% ${100 - ((count / listsLength) * 100)}%`,
|
||||
`100% ${100 - (count / listsLength) * 100}%`,
|
||||
);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
const menu = document.querySelector('.detail-page-menu');
|
||||
if (menu && !document.querySelector('.like-menu')) {
|
||||
const menuParent =
|
||||
document.querySelector('#action-buttons')?.parentElement;
|
||||
if (menuParent && !document.querySelector('.like-menu')) {
|
||||
const menu = document.createElement('div');
|
||||
menu.id = 'ytmd-album-action-buttons';
|
||||
menu.className =
|
||||
'action-buttons style-scope ytmusic-responsive-header-renderer';
|
||||
|
||||
menuParent.insertBefore(
|
||||
menu,
|
||||
menuParent.children[menuParent.children.length - 1],
|
||||
);
|
||||
for (const button of buttons) {
|
||||
menu.appendChild(button);
|
||||
button.addEventListener('click', this.loadFullList);
|
||||
@ -121,9 +133,11 @@ export default createPlugin<
|
||||
}
|
||||
},
|
||||
loadFullList(event: MouseEvent) {
|
||||
if (event.currentTarget instanceof Element) {
|
||||
if (event.target instanceof Element) {
|
||||
event.stopPropagation();
|
||||
const id = event.currentTarget.id;
|
||||
const button = event.target.closest('button') as HTMLElement;
|
||||
if (!button?.id) return;
|
||||
const id = button.id;
|
||||
const loader = document.getElementById('continuations')!;
|
||||
this.loadObserver = new MutationObserver(() => {
|
||||
this.applyToList(id, loader);
|
||||
@ -178,16 +192,5 @@ export default createPlugin<
|
||||
button.remove();
|
||||
}
|
||||
},
|
||||
waitForElem(selector: string) {
|
||||
return new Promise((resolve) => {
|
||||
const interval = setInterval(() => {
|
||||
const elem = document.querySelector<HTMLElement>(selector);
|
||||
if (!elem) return;
|
||||
|
||||
clearInterval(interval);
|
||||
resolve(elem);
|
||||
});
|
||||
});
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
@ -1,40 +1,58 @@
|
||||
<button
|
||||
id="alldislike"
|
||||
data-type="dislike"
|
||||
data-filled="false"
|
||||
class="like-menu yt-spec-button-shape-next yt-spec-button-shape-next--text yt-spec-button-shape-next--mono yt-spec-button-shape-next--size-m yt-spec-button-shape-next--icon-button"
|
||||
aria-pressed="false"
|
||||
aria-label="Dislike all"
|
||||
>
|
||||
<div
|
||||
class="yt-spec-button-shape-next__icon"
|
||||
style="color: var(--ytmusic-setting-item-toggle-active)"
|
||||
aria-hidden="true"
|
||||
<div class="style-scope">
|
||||
<button
|
||||
id="alldislike"
|
||||
data-type="dislike"
|
||||
data-filled="false"
|
||||
class="like-menu yt-spec-button-shape-next yt-spec-button-shape-next--text yt-spec-button-shape-next--mono yt-spec-button-shape-next--size-m yt-spec-button-shape-next--icon-button"
|
||||
aria-pressed="false"
|
||||
aria-label="Dislike all"
|
||||
>
|
||||
<div
|
||||
class="yt-spec-button-shape-next__icon"
|
||||
style="
|
||||
color: white;
|
||||
-webkit-mask: linear-gradient(grey, grey);
|
||||
-webkit-mask-size: 100% 50%;
|
||||
-webkit-mask-repeat: no-repeat;
|
||||
z-index: 1;
|
||||
position: absolute;
|
||||
"
|
||||
style="color: var(--ytmusic-setting-item-toggle-active)"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div
|
||||
class="yt-spec-button-shape-next__icon"
|
||||
style="
|
||||
color: white;
|
||||
-webkit-mask: linear-gradient(grey, grey);
|
||||
-webkit-mask-size: 100% 50%;
|
||||
-webkit-mask-repeat: no-repeat;
|
||||
z-index: 1;
|
||||
position: absolute;
|
||||
"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div style="width: 24px; height: 24px">
|
||||
<svg
|
||||
viewBox="0 0 24 24"
|
||||
preserveAspectRatio="xMidYMid meet"
|
||||
focusable="false"
|
||||
class="style-scope yt-icon"
|
||||
style="
|
||||
pointer-events: none;
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
"
|
||||
>
|
||||
<g class="style-scope yt-icon">
|
||||
<path
|
||||
d="M18,4h3v10h-3V4z M5.23,14h4.23l-1.52,4.94C7.62,19.97,8.46,21,9.62,21c0.58,0,1.14-0.24,1.52-0.65L17,14V4H6.57 C5.5,4,4.59,4.67,4.38,5.61l-1.34,6C2.77,12.85,3.82,14,5.23,14z"
|
||||
class="style-scope yt-icon"
|
||||
></path>
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 24px; height: 24px">
|
||||
<svg
|
||||
viewBox="0 0 24 24"
|
||||
preserveAspectRatio="xMidYMid meet"
|
||||
focusable="false"
|
||||
class="style-scope yt-icon"
|
||||
style="
|
||||
pointer-events: none;
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
"
|
||||
style="pointer-events: none; display: block; width: 100%; height: 100%"
|
||||
>
|
||||
<g class="style-scope yt-icon">
|
||||
<path
|
||||
@ -45,30 +63,14 @@
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 24px; height: 24px">
|
||||
<svg
|
||||
viewBox="0 0 24 24"
|
||||
preserveAspectRatio="xMidYMid meet"
|
||||
focusable="false"
|
||||
class="style-scope yt-icon"
|
||||
style="pointer-events: none; display: block; width: 100%; height: 100%"
|
||||
<yt-touch-feedback-shape style="border-radius: inherit">
|
||||
<div
|
||||
class="yt-spec-touch-feedback-shape yt-spec-touch-feedback-shape--touch-response"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<g class="style-scope yt-icon">
|
||||
<path
|
||||
d="M18,4h3v10h-3V4z M5.23,14h4.23l-1.52,4.94C7.62,19.97,8.46,21,9.62,21c0.58,0,1.14-0.24,1.52-0.65L17,14V4H6.57 C5.5,4,4.59,4.67,4.38,5.61l-1.34,6C2.77,12.85,3.82,14,5.23,14z"
|
||||
class="style-scope yt-icon"
|
||||
></path>
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<yt-touch-feedback-shape style="border-radius: inherit">
|
||||
<div
|
||||
class="yt-spec-touch-feedback-shape yt-spec-touch-feedback-shape--touch-response"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div class="yt-spec-touch-feedback-shape__stroke"></div>
|
||||
<div class="yt-spec-touch-feedback-shape__fill"></div>
|
||||
</div>
|
||||
</yt-touch-feedback-shape>
|
||||
</button>
|
||||
<div class="yt-spec-touch-feedback-shape__stroke"></div>
|
||||
<div class="yt-spec-touch-feedback-shape__fill"></div>
|
||||
</div>
|
||||
</yt-touch-feedback-shape>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@ -1,40 +1,58 @@
|
||||
<button
|
||||
id="alllike"
|
||||
data-type="like"
|
||||
data-filled="false"
|
||||
class="like-menu yt-spec-button-shape-next yt-spec-button-shape-next--text yt-spec-button-shape-next--mono yt-spec-button-shape-next--size-m yt-spec-button-shape-next--icon-button"
|
||||
aria-pressed="false"
|
||||
aria-label="Like all"
|
||||
>
|
||||
<div
|
||||
class="yt-spec-button-shape-next__icon"
|
||||
style="color: var(--ytmusic-setting-item-toggle-active)"
|
||||
aria-hidden="true"
|
||||
<div class="style-scope">
|
||||
<button
|
||||
id="alllike"
|
||||
data-type="like"
|
||||
data-filled="false"
|
||||
class="like-menu yt-spec-button-shape-next yt-spec-button-shape-next--text yt-spec-button-shape-next--mono yt-spec-button-shape-next--size-m yt-spec-button-shape-next--icon-button"
|
||||
aria-pressed="false"
|
||||
aria-label="Like all"
|
||||
>
|
||||
<div
|
||||
class="yt-spec-button-shape-next__icon"
|
||||
style="
|
||||
color: white;
|
||||
-webkit-mask: linear-gradient(grey, grey);
|
||||
-webkit-mask-size: 100% 50%;
|
||||
-webkit-mask-repeat: no-repeat;
|
||||
z-index: 1;
|
||||
position: absolute;
|
||||
"
|
||||
style="color: var(--ytmusic-setting-item-toggle-active)"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div
|
||||
class="yt-spec-button-shape-next__icon"
|
||||
style="
|
||||
color: white;
|
||||
-webkit-mask: linear-gradient(grey, grey);
|
||||
-webkit-mask-size: 100% 50%;
|
||||
-webkit-mask-repeat: no-repeat;
|
||||
z-index: 1;
|
||||
position: absolute;
|
||||
"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div style="width: 24px; height: 24px">
|
||||
<svg
|
||||
viewBox="0 0 24 24"
|
||||
preserveAspectRatio="xMidYMid meet"
|
||||
focusable="false"
|
||||
class="style-scope yt-icon"
|
||||
style="
|
||||
pointer-events: none;
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
"
|
||||
>
|
||||
<g class="style-scope yt-icon">
|
||||
<path
|
||||
d="M3,11h3v10H3V11z M18.77,11h-4.23l1.52-4.94C16.38,5.03,15.54,4,14.38,4c-0.58,0-1.14,0.24-1.52,0.65L7,11v10h10.43 c1.06,0,1.98-0.67,2.19-1.61l1.34-6C21.23,12.15,20.18,11,18.77,11z"
|
||||
class="style-scope yt-icon"
|
||||
></path>
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 24px; height: 24px">
|
||||
<svg
|
||||
viewBox="0 0 24 24"
|
||||
preserveAspectRatio="xMidYMid meet"
|
||||
focusable="false"
|
||||
class="style-scope yt-icon"
|
||||
style="
|
||||
pointer-events: none;
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
"
|
||||
style="pointer-events: none; display: block; width: 100%; height: 100%"
|
||||
>
|
||||
<g class="style-scope yt-icon">
|
||||
<path
|
||||
@ -45,30 +63,14 @@
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 24px; height: 24px">
|
||||
<svg
|
||||
viewBox="0 0 24 24"
|
||||
preserveAspectRatio="xMidYMid meet"
|
||||
focusable="false"
|
||||
class="style-scope yt-icon"
|
||||
style="pointer-events: none; display: block; width: 100%; height: 100%"
|
||||
<yt-touch-feedback-shape style="border-radius: inherit">
|
||||
<div
|
||||
class="yt-spec-touch-feedback-shape yt-spec-touch-feedback-shape--touch-response"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<g class="style-scope yt-icon">
|
||||
<path
|
||||
d="M3,11h3v10H3V11z M18.77,11h-4.23l1.52-4.94C16.38,5.03,15.54,4,14.38,4c-0.58,0-1.14,0.24-1.52,0.65L7,11v10h10.43 c1.06,0,1.98-0.67,2.19-1.61l1.34-6C21.23,12.15,20.18,11,18.77,11z"
|
||||
class="style-scope yt-icon"
|
||||
></path>
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<yt-touch-feedback-shape style="border-radius: inherit">
|
||||
<div
|
||||
class="yt-spec-touch-feedback-shape yt-spec-touch-feedback-shape--touch-response"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div class="yt-spec-touch-feedback-shape__stroke"></div>
|
||||
<div class="yt-spec-touch-feedback-shape__fill"></div>
|
||||
</div>
|
||||
</yt-touch-feedback-shape>
|
||||
</button>
|
||||
<div class="yt-spec-touch-feedback-shape__stroke"></div>
|
||||
<div class="yt-spec-touch-feedback-shape__fill"></div>
|
||||
</div>
|
||||
</yt-touch-feedback-shape>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@ -1,40 +1,58 @@
|
||||
<button
|
||||
id="allundislike"
|
||||
data-type="dislike"
|
||||
data-filled="true"
|
||||
class="like-menu yt-spec-button-shape-next yt-spec-button-shape-next--text yt-spec-button-shape-next--mono yt-spec-button-shape-next--size-m yt-spec-button-shape-next--icon-button"
|
||||
aria-pressed="false"
|
||||
aria-label="Undislike all"
|
||||
>
|
||||
<div
|
||||
class="yt-spec-button-shape-next__icon"
|
||||
style="color: var(--ytmusic-setting-item-toggle-active)"
|
||||
aria-hidden="true"
|
||||
<div class="style-scope">
|
||||
<button
|
||||
id="allundislike"
|
||||
data-type="dislike"
|
||||
data-filled="true"
|
||||
class="like-menu yt-spec-button-shape-next yt-spec-button-shape-next--text yt-spec-button-shape-next--mono yt-spec-button-shape-next--size-m yt-spec-button-shape-next--icon-button"
|
||||
aria-pressed="false"
|
||||
aria-label="Undislike all"
|
||||
>
|
||||
<div
|
||||
class="yt-spec-button-shape-next__icon"
|
||||
style="
|
||||
color: white;
|
||||
-webkit-mask: linear-gradient(grey, grey);
|
||||
-webkit-mask-size: 100% 50%;
|
||||
-webkit-mask-repeat: no-repeat;
|
||||
z-index: 1;
|
||||
position: absolute;
|
||||
"
|
||||
style="color: var(--ytmusic-setting-item-toggle-active)"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div
|
||||
class="yt-spec-button-shape-next__icon"
|
||||
style="
|
||||
color: white;
|
||||
-webkit-mask: linear-gradient(grey, grey);
|
||||
-webkit-mask-size: 100% 50%;
|
||||
-webkit-mask-repeat: no-repeat;
|
||||
z-index: 1;
|
||||
position: absolute;
|
||||
"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div style="width: 24px; height: 24px">
|
||||
<svg
|
||||
viewBox="0 0 24 24"
|
||||
preserveAspectRatio="xMidYMid meet"
|
||||
focusable="false"
|
||||
class="style-scope yt-icon"
|
||||
style="
|
||||
pointer-events: none;
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
"
|
||||
>
|
||||
<g class="style-scope yt-icon">
|
||||
<path
|
||||
d="M17,4h-1H6.57C5.5,4,4.59,4.67,4.38,5.61l-1.34,6C2.77,12.85,3.82,14,5.23,14h4.23l-1.52,4.94C7.62,19.97,8.46,21,9.62,21 c0.58,0,1.14-0.24,1.52-0.65L17,14h4V4H17z M10.4,19.67C10.21,19.88,9.92,20,9.62,20c-0.26,0-0.5-0.11-0.63-0.3 c-0.07-0.1-0.15-0.26-0.09-0.47l1.52-4.94l0.4-1.29H9.46H5.23c-0.41,0-0.8-0.17-1.03-0.46c-0.12-0.15-0.25-0.4-0.18-0.72l1.34-6 C5.46,5.35,5.97,5,6.57,5H16v8.61L10.4,19.67z M20,13h-3V5h3V13z"
|
||||
class="style-scope yt-icon"
|
||||
></path>
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 24px; height: 24px">
|
||||
<svg
|
||||
viewBox="0 0 24 24"
|
||||
preserveAspectRatio="xMidYMid meet"
|
||||
focusable="false"
|
||||
class="style-scope yt-icon"
|
||||
style="
|
||||
pointer-events: none;
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
"
|
||||
style="pointer-events: none; display: block; width: 100%; height: 100%"
|
||||
>
|
||||
<g class="style-scope yt-icon">
|
||||
<path
|
||||
@ -45,30 +63,14 @@
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 24px; height: 24px">
|
||||
<svg
|
||||
viewBox="0 0 24 24"
|
||||
preserveAspectRatio="xMidYMid meet"
|
||||
focusable="false"
|
||||
class="style-scope yt-icon"
|
||||
style="pointer-events: none; display: block; width: 100%; height: 100%"
|
||||
<yt-touch-feedback-shape style="border-radius: inherit">
|
||||
<div
|
||||
class="yt-spec-touch-feedback-shape yt-spec-touch-feedback-shape--touch-response"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<g class="style-scope yt-icon">
|
||||
<path
|
||||
d="M17,4h-1H6.57C5.5,4,4.59,4.67,4.38,5.61l-1.34,6C2.77,12.85,3.82,14,5.23,14h4.23l-1.52,4.94C7.62,19.97,8.46,21,9.62,21 c0.58,0,1.14-0.24,1.52-0.65L17,14h4V4H17z M10.4,19.67C10.21,19.88,9.92,20,9.62,20c-0.26,0-0.5-0.11-0.63-0.3 c-0.07-0.1-0.15-0.26-0.09-0.47l1.52-4.94l0.4-1.29H9.46H5.23c-0.41,0-0.8-0.17-1.03-0.46c-0.12-0.15-0.25-0.4-0.18-0.72l1.34-6 C5.46,5.35,5.97,5,6.57,5H16v8.61L10.4,19.67z M20,13h-3V5h3V13z"
|
||||
class="style-scope yt-icon"
|
||||
></path>
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<yt-touch-feedback-shape style="border-radius: inherit">
|
||||
<div
|
||||
class="yt-spec-touch-feedback-shape yt-spec-touch-feedback-shape--touch-response"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div class="yt-spec-touch-feedback-shape__stroke"></div>
|
||||
<div class="yt-spec-touch-feedback-shape__fill"></div>
|
||||
</div>
|
||||
</yt-touch-feedback-shape>
|
||||
</button>
|
||||
<div class="yt-spec-touch-feedback-shape__stroke"></div>
|
||||
<div class="yt-spec-touch-feedback-shape__fill"></div>
|
||||
</div>
|
||||
</yt-touch-feedback-shape>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@ -1,40 +1,58 @@
|
||||
<button
|
||||
id="allunlike"
|
||||
data-type="like"
|
||||
data-filled="true"
|
||||
class="like-menu yt-spec-button-shape-next yt-spec-button-shape-next--text yt-spec-button-shape-next--mono yt-spec-button-shape-next--size-m yt-spec-button-shape-next--icon-button"
|
||||
aria-pressed="false"
|
||||
aria-label="Unlike all"
|
||||
>
|
||||
<div
|
||||
class="yt-spec-button-shape-next__icon"
|
||||
style="color: var(--ytmusic-setting-item-toggle-active)"
|
||||
aria-hidden="true"
|
||||
<div class="style-scope">
|
||||
<button
|
||||
id="allunlike"
|
||||
data-type="like"
|
||||
data-filled="true"
|
||||
class="like-menu yt-spec-button-shape-next yt-spec-button-shape-next--text yt-spec-button-shape-next--mono yt-spec-button-shape-next--size-m yt-spec-button-shape-next--icon-button"
|
||||
aria-pressed="false"
|
||||
aria-label="Unlike all"
|
||||
>
|
||||
<div
|
||||
class="yt-spec-button-shape-next__icon"
|
||||
style="
|
||||
color: white;
|
||||
-webkit-mask: linear-gradient(grey, grey);
|
||||
-webkit-mask-size: 100% 50%;
|
||||
-webkit-mask-repeat: no-repeat;
|
||||
z-index: 1;
|
||||
position: absolute;
|
||||
"
|
||||
style="color: var(--ytmusic-setting-item-toggle-active)"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div
|
||||
class="yt-spec-button-shape-next__icon"
|
||||
style="
|
||||
color: white;
|
||||
-webkit-mask: linear-gradient(grey, grey);
|
||||
-webkit-mask-size: 100% 50%;
|
||||
-webkit-mask-repeat: no-repeat;
|
||||
z-index: 1;
|
||||
position: absolute;
|
||||
"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div style="width: 24px; height: 24px">
|
||||
<svg
|
||||
viewBox="0 0 24 24"
|
||||
preserveAspectRatio="xMidYMid meet"
|
||||
focusable="false"
|
||||
class="style-scope yt-icon"
|
||||
style="
|
||||
pointer-events: none;
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
"
|
||||
>
|
||||
<g class="style-scope yt-icon">
|
||||
<path
|
||||
d="M18.77,11h-4.23l1.52-4.94C16.38,5.03,15.54,4,14.38,4c-0.58,0-1.14,0.24-1.52,0.65L7,11H3v10h4h1h9.43 c1.06,0,1.98-0.67,2.19-1.61l1.34-6C21.23,12.15,20.18,11,18.77,11z M7,20H4v-8h3V20z M19.98,13.17l-1.34,6 C18.54,19.65,18.03,20,17.43,20H8v-8.61l5.6-6.06C13.79,5.12,14.08,5,14.38,5c0.26,0,0.5,0.11,0.63,0.3 c0.07,0.1,0.15,0.26,0.09,0.47l-1.52,4.94L13.18,12h1.35h4.23c0.41,0,0.8,0.17,1.03,0.46C19.92,12.61,20.05,12.86,19.98,13.17z"
|
||||
class="style-scope yt-icon"
|
||||
></path>
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 24px; height: 24px">
|
||||
<svg
|
||||
viewBox="0 0 24 24"
|
||||
preserveAspectRatio="xMidYMid meet"
|
||||
focusable="false"
|
||||
class="style-scope yt-icon"
|
||||
style="
|
||||
pointer-events: none;
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
"
|
||||
style="pointer-events: none; display: block; width: 100%; height: 100%"
|
||||
>
|
||||
<g class="style-scope yt-icon">
|
||||
<path
|
||||
@ -45,30 +63,14 @@
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 24px; height: 24px">
|
||||
<svg
|
||||
viewBox="0 0 24 24"
|
||||
preserveAspectRatio="xMidYMid meet"
|
||||
focusable="false"
|
||||
class="style-scope yt-icon"
|
||||
style="pointer-events: none; display: block; width: 100%; height: 100%"
|
||||
<yt-touch-feedback-shape style="border-radius: inherit">
|
||||
<div
|
||||
class="yt-spec-touch-feedback-shape yt-spec-touch-feedback-shape--touch-response"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<g class="style-scope yt-icon">
|
||||
<path
|
||||
d="M18.77,11h-4.23l1.52-4.94C16.38,5.03,15.54,4,14.38,4c-0.58,0-1.14,0.24-1.52,0.65L7,11H3v10h4h1h9.43 c1.06,0,1.98-0.67,2.19-1.61l1.34-6C21.23,12.15,20.18,11,18.77,11z M7,20H4v-8h3V20z M19.98,13.17l-1.34,6 C18.54,19.65,18.03,20,17.43,20H8v-8.61l5.6-6.06C13.79,5.12,14.08,5,14.38,5c0.26,0,0.5,0.11,0.63,0.3 c0.07,0.1,0.15,0.26,0.09,0.47l-1.52,4.94L13.18,12h1.35h4.23c0.41,0,0.8,0.17,1.03,0.46C19.92,12.61,20.05,12.86,19.98,13.17z"
|
||||
class="style-scope yt-icon"
|
||||
></path>
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<yt-touch-feedback-shape style="border-radius: inherit">
|
||||
<div
|
||||
class="yt-spec-touch-feedback-shape yt-spec-touch-feedback-shape--touch-response"
|
||||
aria-hidden="true"
|
||||
>
|
||||
<div class="yt-spec-touch-feedback-shape__stroke"></div>
|
||||
<div class="yt-spec-touch-feedback-shape__fill"></div>
|
||||
</div>
|
||||
</yt-touch-feedback-shape>
|
||||
</button>
|
||||
<div class="yt-spec-touch-feedback-shape__stroke"></div>
|
||||
<div class="yt-spec-touch-feedback-shape__fill"></div>
|
||||
</div>
|
||||
</yt-touch-feedback-shape>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { FastAverageColor } from 'fast-average-color';
|
||||
import Color from 'color';
|
||||
import Color, { ColorInstance } from 'color';
|
||||
|
||||
import style from './style.css?inline';
|
||||
|
||||
@ -14,8 +14,8 @@ export default createPlugin<
|
||||
unknown,
|
||||
unknown,
|
||||
{
|
||||
color?: Color;
|
||||
darkColor?: Color;
|
||||
color?: ColorInstance;
|
||||
darkColor?: ColorInstance;
|
||||
|
||||
playerPage: HTMLElement | null;
|
||||
navBarBackground: HTMLElement | null;
|
||||
@ -25,7 +25,12 @@ export default createPlugin<
|
||||
sidebarSmall: HTMLElement | null;
|
||||
ytmusicAppLayout: HTMLElement | null;
|
||||
|
||||
getMixedColor(color: string, key: string, alpha?: number, ratioMultiply?: number): string;
|
||||
getMixedColor(
|
||||
color: string,
|
||||
key: string,
|
||||
alpha?: number,
|
||||
ratioMultiply?: number,
|
||||
): string;
|
||||
updateColor(): void;
|
||||
},
|
||||
{
|
||||
@ -91,7 +96,10 @@ export default createPlugin<
|
||||
this.ytmusicAppLayout = document.querySelector<HTMLElement>('#layout');
|
||||
|
||||
const config = await getConfig();
|
||||
document.documentElement.style.setProperty(RATIO_KEY, `${~~(config.ratio * 100)}%`);
|
||||
document.documentElement.style.setProperty(
|
||||
RATIO_KEY,
|
||||
`${~~(config.ratio * 100)}%`,
|
||||
);
|
||||
},
|
||||
onPlayerApiReady(playerApi) {
|
||||
const fastAverageColor = new FastAverageColor();
|
||||
@ -100,10 +108,12 @@ export default createPlugin<
|
||||
if (event.detail.name !== 'dataloaded') return;
|
||||
|
||||
const playerResponse = playerApi.getPlayerResponse();
|
||||
const thumbnail = playerResponse?.videoDetails?.thumbnail?.thumbnails?.at(0);
|
||||
const thumbnail =
|
||||
playerResponse?.videoDetails?.thumbnail?.thumbnails?.at(0);
|
||||
if (!thumbnail) return;
|
||||
|
||||
const albumColor = await fastAverageColor.getColorAsync(thumbnail.url)
|
||||
const albumColor = await fastAverageColor
|
||||
.getColorAsync(thumbnail.url)
|
||||
.catch((err) => {
|
||||
console.error(err);
|
||||
return null;
|
||||
@ -120,8 +130,14 @@ export default createPlugin<
|
||||
this.darkColor = this.darkColor?.darken(0.05);
|
||||
}
|
||||
|
||||
document.documentElement.style.setProperty(COLOR_KEY, `${~~this.color.red()}, ${~~this.color.green()}, ${~~this.color.blue()}`);
|
||||
document.documentElement.style.setProperty(DARK_COLOR_KEY, `${~~this.darkColor.red()}, ${~~this.darkColor.green()}, ${~~this.darkColor.blue()}`);
|
||||
document.documentElement.style.setProperty(
|
||||
COLOR_KEY,
|
||||
`${~~this.color.red()}, ${~~this.color.green()}, ${~~this.color.blue()}`,
|
||||
);
|
||||
document.documentElement.style.setProperty(
|
||||
DARK_COLOR_KEY,
|
||||
`${~~this.darkColor.red()}, ${~~this.darkColor.green()}, ${~~this.darkColor.blue()}`,
|
||||
);
|
||||
} else {
|
||||
document.documentElement.style.setProperty(COLOR_KEY, '0, 0, 0');
|
||||
document.documentElement.style.setProperty(DARK_COLOR_KEY, '0, 0, 0');
|
||||
@ -131,7 +147,10 @@ export default createPlugin<
|
||||
});
|
||||
},
|
||||
onConfigChange(config) {
|
||||
document.documentElement.style.setProperty(RATIO_KEY, `${~~(config.ratio * 100)}%`);
|
||||
document.documentElement.style.setProperty(
|
||||
RATIO_KEY,
|
||||
`${~~(config.ratio * 100)}%`,
|
||||
);
|
||||
},
|
||||
getMixedColor(color: string, key: string, alpha = 1, ratioMultiply) {
|
||||
const keyColor = `rgba(var(${key}), ${alpha})`;
|
||||
@ -181,11 +200,23 @@ export default createPlugin<
|
||||
'--yt-spec-black-1-alpha-95': 'rgba(40,40,40,0.95)',
|
||||
};
|
||||
Object.entries(variableMap).map(([variable, color]) => {
|
||||
document.documentElement.style.setProperty(variable, this.getMixedColor(color, COLOR_KEY), 'important');
|
||||
document.documentElement.style.setProperty(
|
||||
variable,
|
||||
this.getMixedColor(color, COLOR_KEY),
|
||||
'important',
|
||||
);
|
||||
});
|
||||
|
||||
document.body.style.setProperty('background', this.getMixedColor('#030303', COLOR_KEY), 'important');
|
||||
document.documentElement.style.setProperty('--ytmusic-background', this.getMixedColor('#030303', DARK_COLOR_KEY), 'important');
|
||||
document.body.style.setProperty(
|
||||
'background',
|
||||
this.getMixedColor('#030303', COLOR_KEY),
|
||||
'important',
|
||||
);
|
||||
document.documentElement.style.setProperty(
|
||||
'--ytmusic-background',
|
||||
this.getMixedColor('#030303', DARK_COLOR_KEY),
|
||||
'important',
|
||||
);
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
@ -24,19 +24,13 @@ yt-page-navigation-progress {
|
||||
background-color 300ms cubic-bezier(0.2, 0, 0.6, 1) !important;
|
||||
}
|
||||
|
||||
#img,
|
||||
#player,
|
||||
.song-media-controls.style-scope.ytmusic-player {
|
||||
border-radius: 2% !important;
|
||||
}
|
||||
|
||||
#items {
|
||||
border-radius: 10px !important;
|
||||
}
|
||||
|
||||
/* fix blur navigation bar */
|
||||
|
||||
ytmusic-app-layout > [slot='player-page'] {
|
||||
ytmusic-app-layout > [slot="player-page"]:not([is-mweb-modernization-enabled]):not(:has(ytmusic-player[player-ui-state=FULLSCREEN])) {
|
||||
padding-top: 90px;
|
||||
margin-top: calc(-90px + var(--menu-bar-height, 0px)) !important;
|
||||
}
|
||||
|
||||
@ -1,18 +1,11 @@
|
||||
import style from './style.css?inline';
|
||||
|
||||
import { createPlugin } from '@/utils';
|
||||
import { t } from '@/i18n';
|
||||
import { createPlugin } from '@/utils';
|
||||
import { menu } from './menu';
|
||||
import { AmbientModePluginConfig } from './types';
|
||||
import { waitForElement } from '@/utils/wait-for-element';
|
||||
|
||||
export type AmbientModePluginConfig = {
|
||||
enabled: boolean;
|
||||
quality: number;
|
||||
buffer: number;
|
||||
interpolationTime: number;
|
||||
blur: number;
|
||||
size: number;
|
||||
opacity: number;
|
||||
fullscreen: boolean;
|
||||
};
|
||||
const defaultConfig: AmbientModePluginConfig = {
|
||||
enabled: false,
|
||||
quality: 50,
|
||||
@ -30,198 +23,80 @@ export default createPlugin({
|
||||
restartNeeded: false,
|
||||
config: defaultConfig,
|
||||
stylesheets: [style],
|
||||
menu: async ({ getConfig, setConfig }) => {
|
||||
const interpolationTimeList = [0, 500, 1000, 1500, 2000, 3000, 4000, 5000];
|
||||
const qualityList = [10, 25, 50, 100, 200, 500, 1000];
|
||||
const sizeList = [100, 110, 125, 150, 175, 200, 300];
|
||||
const bufferList = [1, 5, 10, 20, 30];
|
||||
const blurAmountList = [0, 5, 10, 25, 50, 100, 150, 200, 500];
|
||||
const opacityList = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1];
|
||||
|
||||
const config = await getConfig();
|
||||
|
||||
return [
|
||||
{
|
||||
label: t('plugins.ambient-mode.menu.smoothness-transition.label'),
|
||||
submenu: interpolationTimeList.map((interpolationTime) => ({
|
||||
label: t(
|
||||
'plugins.ambient-mode.menu.smoothness-transition.submenu.during',
|
||||
{
|
||||
interpolationTime: interpolationTime / 1000,
|
||||
},
|
||||
),
|
||||
type: 'radio',
|
||||
checked: config.interpolationTime === interpolationTime,
|
||||
click() {
|
||||
setConfig({ interpolationTime });
|
||||
},
|
||||
})),
|
||||
},
|
||||
{
|
||||
label: t('plugins.ambient-mode.menu.quality.label'),
|
||||
submenu: qualityList.map((quality) => ({
|
||||
label: t('plugins.ambient-mode.menu.quality.submenu.pixels', {
|
||||
quality,
|
||||
}),
|
||||
type: 'radio',
|
||||
checked: config.quality === quality,
|
||||
click() {
|
||||
setConfig({ quality });
|
||||
},
|
||||
})),
|
||||
},
|
||||
{
|
||||
label: t('plugins.ambient-mode.menu.size.label'),
|
||||
submenu: sizeList.map((size) => ({
|
||||
label: t('plugins.ambient-mode.menu.size.submenu.percent', { size }),
|
||||
type: 'radio',
|
||||
checked: config.size === size,
|
||||
click() {
|
||||
setConfig({ size });
|
||||
},
|
||||
})),
|
||||
},
|
||||
{
|
||||
label: t('plugins.ambient-mode.menu.buffer.label'),
|
||||
submenu: bufferList.map((buffer) => ({
|
||||
label: t('plugins.ambient-mode.menu.buffer.submenu.buffer', {
|
||||
buffer,
|
||||
}),
|
||||
type: 'radio',
|
||||
checked: config.buffer === buffer,
|
||||
click() {
|
||||
setConfig({ buffer });
|
||||
},
|
||||
})),
|
||||
},
|
||||
{
|
||||
label: t('plugins.ambient-mode.menu.opacity.label'),
|
||||
submenu: opacityList.map((opacity) => ({
|
||||
label: t('plugins.ambient-mode.menu.opacity.submenu.percent', {
|
||||
opacity: opacity * 100,
|
||||
}),
|
||||
type: 'radio',
|
||||
checked: config.opacity === opacity,
|
||||
click() {
|
||||
setConfig({ opacity });
|
||||
},
|
||||
})),
|
||||
},
|
||||
{
|
||||
label: t('plugins.ambient-mode.menu.blur-amount.label'),
|
||||
submenu: blurAmountList.map((blur) => ({
|
||||
label: t('plugins.ambient-mode.menu.blur-amount.submenu.pixels', {
|
||||
blurAmount: blur,
|
||||
}),
|
||||
type: 'radio',
|
||||
checked: config.blur === blur,
|
||||
click() {
|
||||
setConfig({ blur });
|
||||
},
|
||||
})),
|
||||
},
|
||||
{
|
||||
label: t('plugins.ambient-mode.menu.use-fullscreen.label'),
|
||||
type: 'checkbox',
|
||||
checked: config.fullscreen,
|
||||
click(item) {
|
||||
setConfig({ fullscreen: item.checked });
|
||||
},
|
||||
},
|
||||
];
|
||||
},
|
||||
menu: menu,
|
||||
|
||||
renderer: {
|
||||
interpolationTime: defaultConfig.interpolationTime,
|
||||
buffer: defaultConfig.buffer,
|
||||
qualityRatio: defaultConfig.quality,
|
||||
sizeRatio: defaultConfig.size / 100,
|
||||
size: defaultConfig.size,
|
||||
blur: defaultConfig.blur,
|
||||
opacity: defaultConfig.opacity,
|
||||
isFullscreen: defaultConfig.fullscreen,
|
||||
|
||||
unregister: null as (() => void) | null,
|
||||
update: null as (() => void) | null,
|
||||
observer: null as MutationObserver | null,
|
||||
interval: null as NodeJS.Timeout | null,
|
||||
lastMediaType: null as 'video' | 'image' | null,
|
||||
lastVideoSource: null as string | null,
|
||||
lastImageSource: null as string | null,
|
||||
|
||||
async start({ getConfig }) {
|
||||
const config = await getConfig();
|
||||
this.interpolationTime = config.interpolationTime;
|
||||
this.buffer = config.buffer;
|
||||
this.qualityRatio = config.quality;
|
||||
this.size = config.size;
|
||||
this.blur = config.blur;
|
||||
this.opacity = config.opacity;
|
||||
this.isFullscreen = config.fullscreen;
|
||||
|
||||
const songImage = document.querySelector<HTMLImageElement>('#song-image');
|
||||
const songVideo = document.querySelector<HTMLDivElement>('#song-video');
|
||||
const image = songImage?.querySelector<HTMLImageElement>(
|
||||
'yt-img-shadow > img',
|
||||
);
|
||||
const video = await waitForElement<HTMLVideoElement>(
|
||||
'.html5-video-container > video',
|
||||
);
|
||||
|
||||
const videoWrapper = document.querySelector(
|
||||
'#song-video > .player-wrapper',
|
||||
);
|
||||
|
||||
start() {
|
||||
const injectBlurImage = () => {
|
||||
const songImage = document.querySelector<HTMLImageElement>(
|
||||
'#song-image',
|
||||
);
|
||||
const image = document.querySelector<HTMLImageElement>(
|
||||
'#song-image yt-img-shadow > img',
|
||||
);
|
||||
if (!songImage || !image) return null;
|
||||
|
||||
if (!songImage) return null;
|
||||
if (!image) return null;
|
||||
this.lastImageSource = image.src;
|
||||
|
||||
const blurImage = document.createElement('img');
|
||||
blurImage.classList.add('html5-blur-image');
|
||||
blurImage.src = image.src;
|
||||
|
||||
const applyImageAttribute = () => {
|
||||
const rect = image.getBoundingClientRect();
|
||||
|
||||
const newWidth = Math.floor(image.width || rect.width);
|
||||
const newHeight = Math.floor(image.height || rect.height);
|
||||
|
||||
if (newWidth === 0 || newHeight === 0) return;
|
||||
|
||||
this.update = () => {
|
||||
if (this.isFullscreen) blurImage.classList.add('fullscreen');
|
||||
else blurImage.classList.remove('fullscreen');
|
||||
|
||||
const leftOffset = (newWidth * (this.sizeRatio - 1)) / 2;
|
||||
const topOffset = (newHeight * (this.sizeRatio - 1)) / 2;
|
||||
blurImage.style.setProperty('--left', `${-1 * leftOffset}px`);
|
||||
blurImage.style.setProperty('--top', `${-1 * topOffset}px`);
|
||||
blurImage.style.setProperty('--width', `${newWidth * this.sizeRatio}px`);
|
||||
blurImage.style.setProperty('--height', `${newHeight * this.sizeRatio}px`);
|
||||
blurImage.style.setProperty('--width', `${this.size}%`);
|
||||
blurImage.style.setProperty('--height', `${this.size}%`);
|
||||
blurImage.style.setProperty('--blur', `${this.blur}px`);
|
||||
blurImage.style.setProperty('--opacity', `${this.opacity}`);
|
||||
};
|
||||
|
||||
this.update = applyImageAttribute;
|
||||
|
||||
const observer = new MutationObserver((mutations) => {
|
||||
mutations.forEach((mutation) => {
|
||||
if (mutation.type === 'attributes') {
|
||||
applyImageAttribute();
|
||||
}
|
||||
});
|
||||
});
|
||||
const resizeObserver = new ResizeObserver(() => {
|
||||
applyImageAttribute();
|
||||
});
|
||||
|
||||
applyImageAttribute();
|
||||
observer.observe(songImage, { attributes: true });
|
||||
resizeObserver.observe(songImage);
|
||||
window.addEventListener('resize', applyImageAttribute);
|
||||
this.update();
|
||||
|
||||
/* injecting */
|
||||
songImage.prepend(blurImage);
|
||||
|
||||
/* cleanup */
|
||||
return () => {
|
||||
observer.disconnect();
|
||||
resizeObserver.disconnect();
|
||||
window.removeEventListener('resize', applyImageAttribute);
|
||||
|
||||
if (blurImage.isConnected) blurImage.remove();
|
||||
};
|
||||
};
|
||||
|
||||
const injectBlurVideo = (): (() => void) | null => {
|
||||
const songVideo = document.querySelector<HTMLDivElement>('#song-video');
|
||||
const video = document.querySelector<HTMLVideoElement>(
|
||||
'#song-video .html5-video-container > video',
|
||||
);
|
||||
const wrapper = document.querySelector('#song-video > .player-wrapper');
|
||||
const injectBlurVideo = () => {
|
||||
if (!songVideo || !video || !videoWrapper) return null;
|
||||
|
||||
if (!songVideo) return null;
|
||||
if (!video) return null;
|
||||
if (!wrapper) return null;
|
||||
this.lastVideoSource = video.src;
|
||||
|
||||
const blurCanvas = document.createElement('canvas');
|
||||
blurCanvas.classList.add('html5-blur-canvas');
|
||||
@ -253,7 +128,7 @@ export default createPlugin({
|
||||
if (lastImageData) {
|
||||
const frameOffset =
|
||||
(1 / this.buffer) * (1000 / this.interpolationTime);
|
||||
context.globalAlpha = 1 - (frameOffset * 2); // because of alpha value must be < 1
|
||||
context.globalAlpha = 1 - frameOffset * 2; // because of alpha value must be < 1
|
||||
context.putImageData(lastImageData, 0, 0);
|
||||
context.globalAlpha = frameOffset;
|
||||
}
|
||||
@ -265,7 +140,7 @@ export default createPlugin({
|
||||
});
|
||||
};
|
||||
|
||||
const applyVideoAttributes = () => {
|
||||
this.update = () => {
|
||||
const rect = video.getBoundingClientRect();
|
||||
|
||||
const newWidth = Math.floor(video.width || rect.width);
|
||||
@ -277,31 +152,16 @@ export default createPlugin({
|
||||
blurCanvas.height = Math.floor(
|
||||
(newHeight / newWidth) * this.qualityRatio,
|
||||
);
|
||||
blurCanvas.style.width = `${newWidth * this.sizeRatio}px`;
|
||||
blurCanvas.style.height = `${newHeight * this.sizeRatio}px`;
|
||||
|
||||
if (this.isFullscreen) blurCanvas.classList.add('fullscreen');
|
||||
else blurCanvas.classList.remove('fullscreen');
|
||||
|
||||
const leftOffset = (newWidth * (this.sizeRatio - 1)) / 2;
|
||||
const topOffset = (newHeight * (this.sizeRatio - 1)) / 2;
|
||||
blurCanvas.style.setProperty('--left', `${-1 * leftOffset}px`);
|
||||
blurCanvas.style.setProperty('--top', `${-1 * topOffset}px`);
|
||||
blurCanvas.style.setProperty('--width', `${this.size}%`);
|
||||
blurCanvas.style.setProperty('--height', `${this.size}%`);
|
||||
blurCanvas.style.setProperty('--blur', `${this.blur}px`);
|
||||
blurCanvas.style.setProperty('--opacity', `${this.opacity}`);
|
||||
};
|
||||
this.update = applyVideoAttributes;
|
||||
|
||||
const observer = new MutationObserver((mutations) => {
|
||||
mutations.forEach((mutation) => {
|
||||
if (mutation.type === 'attributes') {
|
||||
applyVideoAttributes();
|
||||
}
|
||||
});
|
||||
});
|
||||
const resizeObserver = new ResizeObserver(() => {
|
||||
applyVideoAttributes();
|
||||
});
|
||||
this.update();
|
||||
|
||||
/* hooking */
|
||||
let canvasInterval: NodeJS.Timeout | null = null;
|
||||
@ -309,10 +169,6 @@ export default createPlugin({
|
||||
onSync,
|
||||
Math.max(1, Math.ceil(1000 / this.buffer)),
|
||||
);
|
||||
applyVideoAttributes();
|
||||
observer.observe(songVideo, { attributes: true });
|
||||
resizeObserver.observe(songVideo);
|
||||
window.addEventListener('resize', applyVideoAttributes);
|
||||
|
||||
const onPause = () => {
|
||||
if (canvasInterval) clearInterval(canvasInterval);
|
||||
@ -329,7 +185,7 @@ export default createPlugin({
|
||||
songVideo.addEventListener('play', onPlay);
|
||||
|
||||
/* injecting */
|
||||
wrapper.prepend(blurCanvas);
|
||||
videoWrapper.prepend(blurCanvas);
|
||||
|
||||
/* cleanup */
|
||||
return () => {
|
||||
@ -338,55 +194,72 @@ export default createPlugin({
|
||||
songVideo.removeEventListener('pause', onPause);
|
||||
songVideo.removeEventListener('play', onPlay);
|
||||
|
||||
observer.disconnect();
|
||||
resizeObserver.disconnect();
|
||||
window.removeEventListener('resize', applyVideoAttributes);
|
||||
|
||||
if (blurCanvas.isConnected) blurCanvas.remove();
|
||||
};
|
||||
};
|
||||
|
||||
const isVideoMode = () => {
|
||||
const songVideo = document.querySelector<HTMLDivElement>('#song-video');
|
||||
if (!songVideo) return false;
|
||||
if (!songVideo) {
|
||||
this.lastMediaType = 'image';
|
||||
return false;
|
||||
}
|
||||
|
||||
return getComputedStyle(songVideo).display !== 'none';
|
||||
const isVideo = getComputedStyle(songVideo).display !== 'none';
|
||||
this.lastMediaType = isVideo ? 'video' : 'image';
|
||||
return isVideo;
|
||||
};
|
||||
|
||||
const playerPage = document.querySelector<HTMLElement>('#player-page');
|
||||
const ytmusicAppLayout = document.querySelector<HTMLElement>('#layout');
|
||||
|
||||
const isPageOpen = ytmusicAppLayout?.hasAttribute('player-page-open');
|
||||
if (isPageOpen) {
|
||||
this.unregister?.();
|
||||
this.unregister = (isVideoMode() ? injectBlurVideo() : injectBlurImage()) ?? null;
|
||||
}
|
||||
const injectBlurElement = (force?: boolean): boolean | void => {
|
||||
const isPageOpen = ytmusicAppLayout?.hasAttribute('player-page-open');
|
||||
if (isPageOpen) {
|
||||
const isVideo = isVideoMode();
|
||||
if (!force) {
|
||||
if (
|
||||
this.lastMediaType === 'video' &&
|
||||
this.lastVideoSource === video?.src
|
||||
)
|
||||
return false;
|
||||
if (
|
||||
this.lastMediaType === 'image' &&
|
||||
this.lastImageSource === image?.src
|
||||
)
|
||||
return false;
|
||||
}
|
||||
this.unregister?.();
|
||||
this.unregister =
|
||||
(isVideo ? injectBlurVideo() : injectBlurImage()) ?? null;
|
||||
} else {
|
||||
this.unregister?.();
|
||||
this.unregister = null;
|
||||
}
|
||||
};
|
||||
|
||||
/* needed for switching between different views (e.g. miniplayer) */
|
||||
const observer = new MutationObserver((mutationsList) => {
|
||||
for (const mutation of mutationsList) {
|
||||
if (mutation.type === 'attributes') {
|
||||
const isPageOpen =
|
||||
ytmusicAppLayout?.hasAttribute('player-page-open');
|
||||
if (isPageOpen) {
|
||||
this.unregister?.();
|
||||
this.unregister = (isVideoMode() ? injectBlurVideo() : injectBlurImage()) ?? null;
|
||||
} else {
|
||||
this.unregister?.();
|
||||
this.unregister = null;
|
||||
}
|
||||
injectBlurElement(true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (playerPage) {
|
||||
observer.observe(playerPage, { attributes: true });
|
||||
|
||||
/* fallback ticker for when the observer isn't triggered */
|
||||
this.interval = setInterval(injectBlurElement, 1000);
|
||||
}
|
||||
},
|
||||
onConfigChange(newConfig) {
|
||||
this.interpolationTime = newConfig.interpolationTime;
|
||||
this.buffer = newConfig.buffer;
|
||||
this.qualityRatio = newConfig.quality;
|
||||
this.sizeRatio = newConfig.size / 100;
|
||||
this.size = newConfig.size;
|
||||
this.blur = newConfig.blur;
|
||||
this.opacity = newConfig.opacity;
|
||||
this.isFullscreen = newConfig.fullscreen;
|
||||
@ -394,9 +267,9 @@ export default createPlugin({
|
||||
this.update?.();
|
||||
},
|
||||
stop() {
|
||||
this.observer?.disconnect();
|
||||
this.update = null;
|
||||
this.unregister?.();
|
||||
if (this.interval) clearInterval(this.interval);
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||