mirror of
https://github.com/localsend/localsend.git
synced 2026-06-23 04:10:07 +00:00
Compare commits
701 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5ccc6dea19 | |||
| 9e4a5985b5 | |||
| 3ec2d77875 | |||
| 90de693a9b | |||
| 70ba4f89af | |||
| 50451b233a | |||
| d27cdcc140 | |||
| 7dd96a9ad4 | |||
| ac5f1781d1 | |||
| 478a90d227 | |||
| 37287d7bdc | |||
| 535779802f | |||
| 1048b71330 | |||
| f657c76f56 | |||
| 731a48b10f | |||
| da6d18da43 | |||
| 22d41c88ff | |||
| fba694b968 | |||
| 1a9b8280ff | |||
| 8f3cec85aa | |||
| 14db482bba | |||
| 568b2f2d8d | |||
| ef459592a1 | |||
| 8fa3ade352 | |||
| e7097299b3 | |||
| 5ac1e66026 | |||
| 03fbd70607 | |||
| 62f4a13166 | |||
| b32970b5d1 | |||
| f9aa783669 | |||
| 574a54acdb | |||
| 98cc7488e6 | |||
| ea25d1fceb | |||
| a9e01b078a | |||
| 96a37c71b9 | |||
| 2c0bfaf1cd | |||
| c8fd944776 | |||
| fb4c6e9fe4 | |||
| 52f13086c9 | |||
| a8f9ece32f | |||
| 6dea005c53 | |||
| 5cf8c06eb3 | |||
| a6588717db | |||
| 1fe1e04b98 | |||
| 07650f4643 | |||
| 4305868970 | |||
| 5c279033d3 | |||
| 39b467ba18 | |||
| f04dfce09b | |||
| ce302adcf9 | |||
| c166ee480a | |||
| 1743a0f6cc | |||
| 15c68c74f8 | |||
| 3add4f2118 | |||
| 01d40e93f9 | |||
| 86adfd67af | |||
| beaa3634bb | |||
| 076fba40ac | |||
| 77ae5c3782 | |||
| 5ce851b604 | |||
| 8bd9a1d843 | |||
| 7a1bef4fbd | |||
| dac49182f8 | |||
| 343ef23448 | |||
| 9da194b71f | |||
| d829a8b0a8 | |||
| 2823bee062 | |||
| b00e187b5b | |||
| 46d96a6da8 | |||
| 1f135f10af | |||
| 8897dde46b | |||
| fd27037cac | |||
| 9b45fadd13 | |||
| 9ac82e9ef7 | |||
| e36afb8ac1 | |||
| 8ee9b1bd13 | |||
| e4c9b0cd36 | |||
| f57cae5561 | |||
| 5a7a15a553 | |||
| e605e78ebd | |||
| 13ba9b7008 | |||
| d7f73b9585 | |||
| 0b332bdd61 | |||
| ae2780638d | |||
| b6db22f1b5 | |||
| a14e610ee0 | |||
| bebd6f3ebc | |||
| 42d8c82898 | |||
| 0f26007f6f | |||
| 3ea7f142f0 | |||
| 786d7fb257 | |||
| 09b9482358 | |||
| a1607fe5e3 | |||
| 54ecdcd64f | |||
| 79519292ae | |||
| d67b84ffdb | |||
| fd50a0130a | |||
| 24aea067a7 | |||
| 88d84d3dfd | |||
| acbb3ea45e | |||
| 3ac3b3584f | |||
| f397522b51 | |||
| b0bafc07bd | |||
| 76eceb4f88 | |||
| ebdeb0d2b5 | |||
| 5627a304a1 | |||
| 6586c6a3c3 | |||
| a2740fa537 | |||
| 56f264d096 | |||
| 7f21d1f908 | |||
| b989d9ee70 | |||
| d16cf82f6f | |||
| 24020968c0 | |||
| e7a09f367a | |||
| 531bc714e0 | |||
| 856e01b075 | |||
| 19b98d850b | |||
| c9de11711f | |||
| e8635204ec | |||
| 221f40a90d | |||
| a64373693e | |||
| 8cda479950 | |||
| b776261d10 | |||
| e536ab4258 | |||
| 13c45cb812 | |||
| afea53127f | |||
| 03dccca3fe | |||
| ef09826f3b | |||
| f9a98512ba | |||
| d2df77f031 | |||
| 572955f1e0 | |||
| a2b6f6aa65 | |||
| c5baa75250 | |||
| 0f3a69d190 | |||
| 79e89c2ec2 | |||
| aaeb54b4f5 | |||
| 311ff64381 | |||
| 98253fe44a | |||
| 838c84115e | |||
| 54901f74c4 | |||
| a4b938be55 | |||
| 17d11c1b93 | |||
| eb0c1a1f9a | |||
| 1dcdb8b6df | |||
| 6a6bdb351c | |||
| 67a086ad13 | |||
| 2df255e7d7 | |||
| 4ecb64f7a6 | |||
| 01a77a4ebb | |||
| ade79974af | |||
| 9dd9c6cc3c | |||
| 3db73e2182 | |||
| 3a98edc4c8 | |||
| 8fee4aada7 | |||
| 0fbc9cc79b | |||
| 9701c0b5f1 | |||
| f34d4fc40d | |||
| cf67a77356 | |||
| 97d34dfa62 | |||
| 8a38a89e32 | |||
| a3ec31620d | |||
| 6c5f7ba060 | |||
| 0986cd105e | |||
| 49fb2d8010 | |||
| 743d726701 | |||
| df672340c6 | |||
| 9ccf744597 | |||
| a4782234ec | |||
| 36448c33d8 | |||
| 666e55e5ad | |||
| 4a87715f82 | |||
| 86ce2ef591 | |||
| 10faedcffa | |||
| ea13651762 | |||
| 5938321a0d | |||
| 17262cc19a | |||
| 3b143fd56f | |||
| 9a97584137 | |||
| eef02aac65 | |||
| aa54405222 | |||
| 4fc4376398 | |||
| 7b42deba77 | |||
| 308d2f1289 | |||
| 216eb5e2ee | |||
| 02954b7f5b | |||
| 856ff716db | |||
| 00c5cd6263 | |||
| 38d77f1633 | |||
| 19fd45e9ea | |||
| cc66e88e9c | |||
| 3b88ab551f | |||
| 7725b69944 | |||
| 73d8c6d9a9 | |||
| 82e2d8c0de | |||
| a155ebb57d | |||
| 1941e542db | |||
| e515beef0b | |||
| 696eb757d4 | |||
| 2d40ab9a17 | |||
| 4e473f3ed7 | |||
| 0f603d18cc | |||
| 1a7927f7e8 | |||
| b9e7693000 | |||
| 140546591e | |||
| d240a5b0d8 | |||
| 0645b9c367 | |||
| 02fe960261 | |||
| 15fc9a891c | |||
| 1c97db551b | |||
| 310addf92a | |||
| 4d05740380 | |||
| dd9f1dc7fe | |||
| 2e6d24accc | |||
| b3df83f14e | |||
| f56d6bde86 | |||
| 74ae622ff2 | |||
| f917db0599 | |||
| 7b96d73fbf | |||
| f9e6cfcc7f | |||
| 3deb5f38da | |||
| b12fabb644 | |||
| fa8170d05a | |||
| 8633e140e9 | |||
| 1cff64e493 | |||
| 11197d115c | |||
| 46b7f2ae0e | |||
| f2f3b79bc3 | |||
| 4a03f85267 | |||
| 68fdb3b27b | |||
| 4e6284dbe5 | |||
| d16ad0c626 | |||
| 6a47e1ec0f | |||
| c163830269 | |||
| 12402031d7 | |||
| 96d8534fda | |||
| 91261ba1c4 | |||
| 93396cd45b | |||
| 1a3026599c | |||
| 26e56627f3 | |||
| 7292fff162 | |||
| 0f02bc86fc | |||
| 480d7dfab6 | |||
| f43c9da494 | |||
| a87928b2e2 | |||
| 447d77e285 | |||
| bb81e00b24 | |||
| d30fbdb817 | |||
| 7a5ab04554 | |||
| fd26aec520 | |||
| 82ab18d387 | |||
| f1b50adf17 | |||
| f033659621 | |||
| 3be57d4407 | |||
| 35a32e07a7 | |||
| 57a023a039 | |||
| 76699a78d4 | |||
| d0ff18b8e1 | |||
| d612d5ba71 | |||
| ae9d28f6b5 | |||
| d3921ad1b5 | |||
| 0e1318bd14 | |||
| e109feac11 | |||
| 6aa7173bd1 | |||
| ef140266ed | |||
| f5e2094878 | |||
| 08fdc9165d | |||
| 7cc185373f | |||
| be531e2317 | |||
| d0e864ddf6 | |||
| f6443e6461 | |||
| 9b3ed3d1ad | |||
| 644542effd | |||
| 5e2be88e43 | |||
| ff932bc9a6 | |||
| 50df6a3a25 | |||
| e959e4a75c | |||
| 04c1aa3620 | |||
| 7017dde1d0 | |||
| 83a2cc595c | |||
| ffb3a145dd | |||
| 48aef534d4 | |||
| 09406512da | |||
| bd103c7d5a | |||
| 2d0f1e99fd | |||
| b25f1d5e2b | |||
| ad2ef80b87 | |||
| 233441bcc7 | |||
| 5e35363c1b | |||
| 48aa665e7f | |||
| 962b87c6c2 | |||
| 11e508d5bd | |||
| 5eb6a1f328 | |||
| 9a068562ef | |||
| e1a6bcff1d | |||
| 88bba52b10 | |||
| 0a71dae66c | |||
| 0a5b223ba5 | |||
| 86158e7112 | |||
| 076f8e6370 | |||
| 6afb770444 | |||
| 954664bebf | |||
| b14caed66a | |||
| 6d9da43041 | |||
| ab0432d8e3 | |||
| 4112232d47 | |||
| 3793f6d201 | |||
| e3b93c230d | |||
| 6e928c854e | |||
| 910724c8d8 | |||
| 67a3fc2c40 | |||
| ef027f7b83 | |||
| 999df21c3b | |||
| b39da6b871 | |||
| 2227716c9c | |||
| 43460f3d54 | |||
| 6757c0600a | |||
| 8e89165654 | |||
| fd8002e3bf | |||
| 3a5cf555b2 | |||
| 6d356ed751 | |||
| 66d88bf818 | |||
| b50a5effb5 | |||
| 7d8738dd41 | |||
| 4e130cba3b | |||
| b50b9ec348 | |||
| e0db2ca61f | |||
| e0d105d759 | |||
| 8b16c9f372 | |||
| 382ea97cde | |||
| 15c416b4e5 | |||
| 61f3ffdb8d | |||
| 414ae3ba76 | |||
| 889461289f | |||
| 65aac3c965 | |||
| dbd588beba | |||
| 70b579c064 | |||
| 031c6f61fa | |||
| 59613861f3 | |||
| 99add6944a | |||
| 7f4bc3ea61 | |||
| 05f2d8bc34 | |||
| 86a56feaf1 | |||
| 34a5c039e9 | |||
| 48c90d3141 | |||
| 04d46f2523 | |||
| 9bef26a335 | |||
| 78abc5e103 | |||
| c7ad84730d | |||
| dd95961bc9 | |||
| dbedac1464 | |||
| 3b1ce0756a | |||
| 50c00115e6 | |||
| 47ca597768 | |||
| 3e03e5cca4 | |||
| b5b760a712 | |||
| d7ff57eabb | |||
| 0bdcb8bb9f | |||
| cf48c539fd | |||
| e34d75bbcb | |||
| 4055ebb1c3 | |||
| 5b2bd28b8d | |||
| e29e896402 | |||
| 3bcfb5d641 | |||
| f67c2b90c0 | |||
| 71bbe5efdb | |||
| 565e2b8d13 | |||
| fdfc9c7f70 | |||
| aa838d7e68 | |||
| f2e895820f | |||
| ab52d6e1cd | |||
| fc810d1598 | |||
| 688f56266b | |||
| 1c5b98a19b | |||
| b266ffe2f0 | |||
| ea538a21e9 | |||
| 7db9df0973 | |||
| 201f921c59 | |||
| fedd884160 | |||
| 4ae402f773 | |||
| 6c6ba283d1 | |||
| 3444cdeeb3 | |||
| f6ec66cfd4 | |||
| 5354864063 | |||
| 7263250718 | |||
| 13880fa4f5 | |||
| b5ed1e642d | |||
| aecc8d2e86 | |||
| f6158d6907 | |||
| cb8709f82d | |||
| 0748f3ba39 | |||
| 87e748c6ce | |||
| d1039266ad | |||
| 92cfd4c61b | |||
| b97d845ccb | |||
| 39fc2c183b | |||
| d35c0edf76 | |||
| c60103aa32 | |||
| 1b45e76f6d | |||
| 087535a381 | |||
| 420915a3ed | |||
| a7e8f4a756 | |||
| 867c4cd3c0 | |||
| caab80f663 | |||
| c734216878 | |||
| 00f73a7964 | |||
| 5e77567f18 | |||
| fd8140b688 | |||
| 54fd3aff02 | |||
| 6ffe8f0f98 | |||
| 52edff436c | |||
| 79791e1b2d | |||
| b6c82e10c2 | |||
| 109cb4f066 | |||
| 33adde4215 | |||
| 02c51defc0 | |||
| 1a68c54eb4 | |||
| ecfe9a5c31 | |||
| bc4baba39d | |||
| 41c2b81a1b | |||
| 7048537a12 | |||
| 4dd4cde868 | |||
| 42a1036adf | |||
| 242bb961a1 | |||
| e1c8ae51e8 | |||
| 01233ee64c | |||
| b070314465 | |||
| 6bfd6efb2d | |||
| 4b6ede8684 | |||
| 1896fafc2b | |||
| 3e627772b0 | |||
| 426741d3b6 | |||
| d9de718d09 | |||
| 69104ec4a6 | |||
| 49b5a5a19f | |||
| 6d34b71153 | |||
| ca11351dbe | |||
| f5036ff009 | |||
| b48435c4cd | |||
| cc331f1638 | |||
| ee5e96b491 | |||
| 917cd1e002 | |||
| 15ffa4b93c | |||
| 357cc5db81 | |||
| c11529f059 | |||
| 1445d27dff | |||
| d9dff50d15 | |||
| d7cd310009 | |||
| cf9f150b94 | |||
| 3ef3a35364 | |||
| 059c7a2110 | |||
| 852febbe4c | |||
| cc459f1d66 | |||
| c850336223 | |||
| f0dca0ce53 | |||
| 587670b080 | |||
| b6246d89ca | |||
| d38b0a72aa | |||
| 8b99744c30 | |||
| 92c42c7dd5 | |||
| 3cc26c965b | |||
| 04cdfa5c5e | |||
| 5ac65cef26 | |||
| f66865639f | |||
| af662218f0 | |||
| c57bc7bc95 | |||
| 4eacbfdf2c | |||
| c95a189340 | |||
| 504bc213b1 | |||
| 99a72cbfd0 | |||
| 485226cc6d | |||
| 4f86e1ae5e | |||
| 822f429b59 | |||
| be0abe13ec | |||
| 90dfd88529 | |||
| 270700e259 | |||
| 397ca0a681 | |||
| a5d5d0a6f7 | |||
| e39f8d5c46 | |||
| cfd5486698 | |||
| c716eccab6 | |||
| 1359398502 | |||
| 372aeb11bf | |||
| 730b09974f | |||
| e9595abd19 | |||
| ba7c6d2c4c | |||
| e9ee6738cf | |||
| 1354887c25 | |||
| 655c83442f | |||
| 15c94d4660 | |||
| f6aec77ad0 | |||
| 5c18652786 | |||
| 75ba226cd0 | |||
| c0f64c8f70 | |||
| 9d464e3b79 | |||
| 1d0f5a1b10 | |||
| b67b96680b | |||
| d01481b138 | |||
| c1dab3e423 | |||
| f5e8a5652c | |||
| b70d3b813f | |||
| e7ca621fb7 | |||
| a8a24a2836 | |||
| 5406770af0 | |||
| 422e65dde1 | |||
| 8fe0d1bc32 | |||
| 76aeef5a4e | |||
| 1291210cc6 | |||
| 85dfb5294e | |||
| c05a3c93a3 | |||
| 2e21ffb33e | |||
| fe31832e22 | |||
| 3c1c3ad3ee | |||
| 7db69bfaba | |||
| b9ee9b84e0 | |||
| 33f3ed905b | |||
| 47e7327f2e | |||
| 7133b4ab8a | |||
| 6ef047b445 | |||
| ec8b5f6713 | |||
| 087149fe80 | |||
| 6cf915f448 | |||
| 3c2b01aec6 | |||
| 49701d0812 | |||
| accdf5e099 | |||
| f98cc75d7d | |||
| e9d0ae0bd0 | |||
| ae9d3509e5 | |||
| a379954bf0 | |||
| 32ce4d45aa | |||
| f97b5ba86b | |||
| 251cad9925 | |||
| c2e769609b | |||
| 5aaefddcb4 | |||
| 3d76e9eee7 | |||
| 2a2a38c171 | |||
| 93d6e9aa35 | |||
| c04cae352f | |||
| 79e9adecd9 | |||
| cadbdab0ca | |||
| f4727829ca | |||
| 28214a60dd | |||
| cf97f76545 | |||
| 6391364dca | |||
| c34df8138a | |||
| 9d523b4d05 | |||
| a95e61708e | |||
| 6a06d421c8 | |||
| 54e8810ef9 | |||
| 30a134f1c4 | |||
| 51e47790f6 | |||
| 632e31baae | |||
| a75450f1e6 | |||
| ea76e458ff | |||
| 2e1e5ca3e6 | |||
| 3250dc87c1 | |||
| 5a4528d49d | |||
| 394e01f283 | |||
| f754f8a830 | |||
| 4b414961fe | |||
| 25a78340f6 | |||
| c20ba3a22d | |||
| 2a19184ccd | |||
| e97c6bbe11 | |||
| b7704d7e8d | |||
| 94c798eeb1 | |||
| 8ebdac267d | |||
| 884bbbe9c4 | |||
| 42c58d5319 | |||
| fbee3b844c | |||
| 0b93d7b229 | |||
| 4a2f2ca45f | |||
| 5b03cad1c0 | |||
| 555051bf4c | |||
| 67d58a335b | |||
| 664f519e6b | |||
| 57058730f0 | |||
| c43193bf44 | |||
| 49a64c1513 | |||
| dd8702ff55 | |||
| 86ca557435 | |||
| 9e7f54c41c | |||
| 050664e0b7 | |||
| f654811748 | |||
| d392521ea7 | |||
| 63bb55a91f | |||
| 1d954e8322 | |||
| d39c41171f | |||
| 357e9de194 | |||
| a91a16737d | |||
| cc5f53bd21 | |||
| fc6fcd8418 | |||
| 887770b2d7 | |||
| bbd383ddf5 | |||
| 72a8de158a | |||
| bec8ef8cc6 | |||
| f39ee29b97 | |||
| 9b6691e1e2 | |||
| 7649d43209 | |||
| 6a6af590ca | |||
| 545a1015af | |||
| 6a7bf94a92 | |||
| 6ed92afa5b | |||
| 3282303b37 | |||
| b8068e6f5d | |||
| 0ced63b881 | |||
| 8f88be93f6 | |||
| a9921addc8 | |||
| b3212cece2 | |||
| d65b7e8491 | |||
| 6f8ef6cdd4 | |||
| a9f847e928 | |||
| 251a050807 | |||
| 109541821a | |||
| 14ae369d9e | |||
| d585297327 | |||
| 3b531fc143 | |||
| 0bc5c297bc | |||
| 99f95658ac | |||
| 59d666c58d | |||
| b73e2de5bf | |||
| 83013db29b | |||
| 4acf19c9c3 | |||
| 0e5bbe478e | |||
| af8404a20e | |||
| b15ef99572 | |||
| d1b6aa3b03 | |||
| c5ec396439 | |||
| b3dece9095 | |||
| e3f4a85613 | |||
| f6c0bf1611 | |||
| aa5469fac8 | |||
| 7fc2af0776 | |||
| a9f5e16a48 | |||
| 9f72cf2d5c | |||
| edb0b7f5d3 | |||
| d81bbf21d3 | |||
| d869aba07b | |||
| 4ffa09face | |||
| 6c8ba30cec | |||
| 37c1458f09 | |||
| 46d2afb73e | |||
| acd8a4eb2a | |||
| 1952624870 | |||
| 948e4d1968 | |||
| 5659c81f3a | |||
| f2eda9aa92 | |||
| 412ebd555c | |||
| 2ab356bdae | |||
| 734bc0e31f | |||
| 054ef29fef | |||
| 8f652cf569 | |||
| ee6fd917fa | |||
| fb267c43a1 | |||
| 6e6a7d8fde | |||
| c82a3de0e2 | |||
| fb644078e9 | |||
| 766a3f8217 | |||
| 5104fc0067 | |||
| 66af17353c | |||
| c04684a564 | |||
| 21651105b0 | |||
| c598cedf47 | |||
| ee0182015b | |||
| 0e1ffd9257 | |||
| c7b8a1ae8a | |||
| 7b87fbeba4 | |||
| 631e5bdd94 | |||
| 603c8f9625 | |||
| 1e10d2dd1e | |||
| a0a376adf7 | |||
| 60cd399fa6 | |||
| 3d6bf26c5f | |||
| 4f040e6fb1 | |||
| eb413281c8 | |||
| 86ef3aabc2 | |||
| 479b65a07b | |||
| f45c5c9598 | |||
| dafdf8e130 | |||
| b1bf652880 | |||
| 72121eff10 | |||
| c7344716be | |||
| 8cbd0c6e3e | |||
| 3a94419e02 | |||
| 1051e39ae1 | |||
| 90f125970a | |||
| 6e6f233adf | |||
| 367a76d2ba | |||
| 015291c425 | |||
| 277706ed61 | |||
| 94456caa7a | |||
| d83fff231c | |||
| e4b98100ea | |||
| bf908419c0 | |||
| cb88232252 | |||
| 0ef85bd5ba | |||
| 3f3544e365 | |||
| 7e2db95fc6 | |||
| fbcd598c18 | |||
| 003caade43 | |||
| 589d499818 | |||
| ff6b83b85e |
@@ -1,4 +0,0 @@
|
||||
{
|
||||
"flutterSdkVersion": "3.13.9",
|
||||
"flavors": {}
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
name: Bug report
|
||||
description: Create a report to help us improve
|
||||
title: Bug report
|
||||
labels: ["bug :bug:"]
|
||||
body:
|
||||
- type: textarea
|
||||
id: bug_report_description
|
||||
attributes:
|
||||
label: Describe the bug
|
||||
description: A clear and concise description of what the bug is
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: bug_report_reproduce
|
||||
attributes:
|
||||
label: To reproduce
|
||||
description: Steps to reproduce the behavior
|
||||
value: |
|
||||
1. Go to '...'
|
||||
2. Click on '...'
|
||||
3. Scroll down to '...'
|
||||
4. See error
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: bug_report_expected_behavior
|
||||
attributes:
|
||||
label: Expected behavior
|
||||
description: A clear and concise description of what you expected to happen
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: bug_report_screenshots
|
||||
attributes:
|
||||
label: Screenshots
|
||||
description: |
|
||||
If applicable, add screenshots to help explain your problem
|
||||
Tip: You can attach images by clicking this area to highlight it and then dragging files in.
|
||||
- type: textarea
|
||||
id: bug_report_desktop
|
||||
attributes:
|
||||
label: Desktop (please complete the following information)
|
||||
placeholder: |
|
||||
- OS: [e.g. iOS]
|
||||
- Version: [e.g. 1.6.2]
|
||||
- type: textarea
|
||||
id: bug_report_smartphone
|
||||
attributes:
|
||||
label: Smartphone (please complete the following information)
|
||||
placeholder: |
|
||||
- Device: [e.g. iPhone6]
|
||||
- OS: [e.g. iOS8.1]
|
||||
- Version: [e.g. 1.6.2]
|
||||
- type: textarea
|
||||
id: bug_report_additional_context
|
||||
attributes:
|
||||
label: Additional context
|
||||
description: Add any other context about the problem here
|
||||
@@ -0,0 +1,95 @@
|
||||
name: Bug report
|
||||
description: Create a report to help us address issues you are facing
|
||||
title: "bug: "
|
||||
labels: [bug]
|
||||
body:
|
||||
- type: checkboxes
|
||||
id: confirm
|
||||
attributes:
|
||||
label: Read [this](https://github.com/localsend/localsend/issues/528) before anything
|
||||
options:
|
||||
- label: I have read it.
|
||||
- label: Issues not fitting are closed.
|
||||
|
||||
- type: checkboxes
|
||||
id: duplication
|
||||
attributes:
|
||||
label: "Make sure about:"
|
||||
options:
|
||||
- label: This issue is not duplicated with any other open or closed issues.
|
||||
required: true
|
||||
- label: I am using the latest version from the release.
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Describe the bug
|
||||
description: A clear and concise description of what the bug is
|
||||
placeholder: |
|
||||
App crashes on startup every time after changing settings.
|
||||
/
|
||||
App crashes when sending/receiving massive files.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: expected
|
||||
attributes:
|
||||
label: Expected behavior
|
||||
description: A clear and concise description of what you expected to happen
|
||||
placeholder: |
|
||||
App started normally, everything worked fine.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: reproduce
|
||||
attributes:
|
||||
label: Reproduction
|
||||
description: Steps to reproduce the bug
|
||||
placeholder: |
|
||||
1. Turn on "..." in "... settings"
|
||||
2. Restart the app
|
||||
3. Crash
|
||||
/
|
||||
1. Transfer a "..." file is ... size takes ... long
|
||||
2. Observe ...
|
||||
3. Crash
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: environment
|
||||
attributes:
|
||||
label: Device information
|
||||
description: Provide details about your system environment
|
||||
placeholder: |
|
||||
Device: (Pixel 9 Pro/Lenovo Yoga 9i)
|
||||
System: (Android 16 BP31.2505/Windows 11 24H2)
|
||||
Special things: (Rooted/Hardware damaged)
|
||||
If applicable, both info of sender and receiver.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: screenshots
|
||||
attributes:
|
||||
label: Screenshots
|
||||
description: If applicable, add screenshots to help explain your problem
|
||||
placeholder: |
|
||||
modified_setting_items.jpg
|
||||
files_to_send.jpg
|
||||
crashed_screen.jpg
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
id: additional
|
||||
attributes:
|
||||
label: Additional context
|
||||
description: Add any other context about the problem here
|
||||
placeholder: |
|
||||
Crash report or any helpful information.
|
||||
validations:
|
||||
required: false
|
||||
@@ -0,0 +1,18 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Security issues
|
||||
url: https://github.com/localsend/localsend/blob/main/CONTRIBUTING.md#security-issues
|
||||
about: Help us address security issues as quickly and effectively as possible
|
||||
|
||||
- name: Get latest LocalSend
|
||||
url: https://localsend.org/download
|
||||
about: Your issue may be version related, so try updating first
|
||||
|
||||
- name: GitHub Discussions
|
||||
url: https://github.com/localsend/localsend/discussions
|
||||
about: If you think your issue isn't that serious, you can discuss it here
|
||||
|
||||
- name: Contributing guide
|
||||
url: https://github.com/localsend/localsend/blob/main/CONTRIBUTING.md
|
||||
about: Check our contributing guide if you’re interested or have time
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
name: Feature request
|
||||
description: Suggest an idea for this project
|
||||
title: Feature request
|
||||
labels: ["feature :sparkles:"]
|
||||
body:
|
||||
- type: textarea
|
||||
id: feature_request_description
|
||||
attributes:
|
||||
label: Is your feature request related to a problem? Please describe.
|
||||
description: A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: feature_request_solution_description
|
||||
attributes:
|
||||
label: Describe the solution you'd like
|
||||
description: A clear and concise description of what you want to happen
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: feature_request_alternatives
|
||||
attributes:
|
||||
label: Describe alternatives you've considered
|
||||
description: A clear and concise description of any alternative solutions or features you've considered
|
||||
- type: textarea
|
||||
id: feature_request_additional_context
|
||||
attributes:
|
||||
label: Additional context
|
||||
description: Add any other context or screenshots about the feature request here
|
||||
@@ -0,0 +1,59 @@
|
||||
name: Feature request
|
||||
description: Suggest an idea for this project
|
||||
title: "fr: "
|
||||
labels: ["enhancement"]
|
||||
body:
|
||||
- type: checkboxes
|
||||
id: confirm
|
||||
attributes:
|
||||
label: Read [this](https://github.com/localsend/localsend/issues/528) before anything
|
||||
options:
|
||||
- label: I have read it.
|
||||
- label: Issues not fitting are closed.
|
||||
|
||||
- type: checkboxes
|
||||
id: duplication
|
||||
attributes:
|
||||
label: "Make sure about:"
|
||||
options:
|
||||
- label: This issue is not duplicated with any other open or closed issues.
|
||||
required: true
|
||||
- label: This issue is a feature request, not a bug report.
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: reason
|
||||
attributes:
|
||||
label: Reason of the change
|
||||
description: Why the things need to be changed? Inconvenient or logical wrong?
|
||||
placeholder: |
|
||||
Because if I want to ..., I'll need to ...
|
||||
It's not very ... to do so ...
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: solution
|
||||
attributes:
|
||||
label: Description of the change
|
||||
description: What should we change or add, to make it better?
|
||||
placeholder: |
|
||||
If there's a choice like ..., it will be more ...
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: alternatives
|
||||
attributes:
|
||||
label: The alternatives you've considered
|
||||
description: If we are unable to do that above, any other solution?
|
||||
placeholder: |
|
||||
Add a ... also helps ...
|
||||
|
||||
- type: textarea
|
||||
id: additional
|
||||
attributes:
|
||||
label: Additional context
|
||||
description: Add any other context or screenshots about the request here
|
||||
placeholder: |
|
||||
Related app, website, system, or a design. Anything helpful can be here.
|
||||
+43
-15
@@ -7,52 +7,79 @@ on:
|
||||
branches: [main]
|
||||
|
||||
env:
|
||||
FLUTTER_VERSION: "3.13.9"
|
||||
FLUTTER_VERSION: "3.38.10"
|
||||
|
||||
jobs:
|
||||
format:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: subosito/flutter-action@v2
|
||||
- uses: actions/checkout@v6
|
||||
- name: Setup Flutter SDK
|
||||
uses: flutter-actions/setup-flutter@v4
|
||||
with:
|
||||
flutter-version: ${{ env.FLUTTER_VERSION }}
|
||||
version: ${{ env.FLUTTER_VERSION }}
|
||||
channel: "stable"
|
||||
- name: Dependencies
|
||||
|
||||
- name: Dependencies (app)
|
||||
working-directory: app
|
||||
run: flutter pub get
|
||||
- name: Remove gen directory
|
||||
- name: Dependencies (cargokit - rust_builder)
|
||||
working-directory: app/rust_builder/cargokit/build_tool
|
||||
run: flutter pub get
|
||||
- name: Remove gen directory (app)
|
||||
working-directory: app
|
||||
run: rm -rf lib/gen
|
||||
- name: Check format
|
||||
- name: Check format (app)
|
||||
working-directory: app
|
||||
run: dart format --line-length 150 --set-exit-if-changed lib test
|
||||
run: dart format --set-exit-if-changed lib test
|
||||
|
||||
- name: Dependencies (common)
|
||||
working-directory: common
|
||||
run: dart pub get
|
||||
- name: Check format (common)
|
||||
working-directory: common
|
||||
run: dart format --set-exit-if-changed lib test
|
||||
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: subosito/flutter-action@v2
|
||||
- uses: actions/checkout@v6
|
||||
- name: Setup Flutter SDK
|
||||
uses: flutter-actions/setup-flutter@v4
|
||||
with:
|
||||
flutter-version: ${{ env.FLUTTER_VERSION }}
|
||||
version: ${{ env.FLUTTER_VERSION }}
|
||||
channel: "stable"
|
||||
- name: Dependencies
|
||||
|
||||
- name: Dependencies (app)
|
||||
working-directory: app
|
||||
run: flutter pub get
|
||||
- name: Analyze
|
||||
- name: Dependencies (cargokit - rust_builder)
|
||||
working-directory: app/rust_builder/cargokit/build_tool
|
||||
run: flutter pub get
|
||||
- name: Analyze (app)
|
||||
working-directory: app
|
||||
run: flutter analyze
|
||||
- name: Test
|
||||
- name: Test (app)
|
||||
working-directory: app
|
||||
run: flutter test
|
||||
|
||||
- name: Dependencies (common)
|
||||
working-directory: common
|
||||
run: dart pub get
|
||||
- name: Analyze (common)
|
||||
working-directory: common
|
||||
run: dart analyze
|
||||
- name: Test (common)
|
||||
working-directory: common
|
||||
run: dart test
|
||||
|
||||
packaging:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
- name: Extract version from pubspec.yaml
|
||||
id: pubspec_version
|
||||
run: |
|
||||
@@ -75,3 +102,4 @@ jobs:
|
||||
else
|
||||
echo "Versions match."
|
||||
fi
|
||||
|
||||
|
||||
@@ -4,17 +4,18 @@ on:
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
FLUTTER_VERSION: "3.13.9"
|
||||
FLUTTER_VERSION: "3.35.6"
|
||||
RUST_VERSION: "1.84.1"
|
||||
APK_BUILD_DIR: "/tmp/build"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-24.04
|
||||
outputs:
|
||||
version: ${{ steps.get_version.outputs.version }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Get version from pubspec.yaml
|
||||
id: get_version
|
||||
@@ -28,7 +29,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Remove proprietary dependencies
|
||||
run: sh scripts/remove_proprietary_dependencies.sh
|
||||
@@ -50,27 +51,36 @@ jobs:
|
||||
ENCODED_STRING: ${{ secrets.ANDROID_KEY_STORE }}
|
||||
run: mkdir secrets && echo $ENCODED_STRING | base64 -di > secrets/android-keystore.jks
|
||||
|
||||
- name: Set up JDK 11
|
||||
uses: actions/setup-java@v4
|
||||
- name: Set up JDK 17
|
||||
uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: 'temurin'
|
||||
java-version: '11'
|
||||
java-version: '17'
|
||||
|
||||
- name: Install Flutter
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
flutter-version: ${{ env.FLUTTER_VERSION }}
|
||||
|
||||
- name: Install Rust
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
toolchain: stable
|
||||
override: ${{ env.RUST_VERSION }}
|
||||
|
||||
- name: Dependencies
|
||||
working-directory: ${{ env.APK_BUILD_DIR }}/app
|
||||
run: flutter pub get
|
||||
|
||||
- name: Build APK
|
||||
working-directory: ${{ env.APK_BUILD_DIR }}/app
|
||||
run: flutter build apk
|
||||
run: flutter build apk --split-per-abi
|
||||
|
||||
- name: Upload APK
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: apk-result
|
||||
path: ${{ env.APK_BUILD_DIR }}/app/build/app/outputs/flutter-apk/app-release.apk
|
||||
path: |
|
||||
${{ env.APK_BUILD_DIR }}/app/build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk
|
||||
${{ env.APK_BUILD_DIR }}/app/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk
|
||||
${{ env.APK_BUILD_DIR }}/app/build/app/outputs/flutter-apk/app-x86_64-release.apk
|
||||
|
||||
@@ -4,7 +4,7 @@ on:
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
FLUTTER_VERSION: "3.13.9"
|
||||
FLUTTER_VERSION: "3.35.6"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
@@ -13,7 +13,7 @@ jobs:
|
||||
version: ${{ steps.get_version.outputs.version }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Get version from pubspec.yaml
|
||||
id: get_version
|
||||
@@ -28,7 +28,7 @@ jobs:
|
||||
runs-on: [self-hosted, linux, arm64]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
@@ -66,7 +66,7 @@ jobs:
|
||||
recipe: ./AppImageBuilder.yml
|
||||
|
||||
- name: Upload AppImage file
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: appimage-arm-64-result
|
||||
path: ./*.AppImage
|
||||
|
||||
@@ -4,17 +4,17 @@ on:
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
FLUTTER_VERSION: "3.13.9"
|
||||
FLUTTER_VERSION: "3.35.6"
|
||||
APK_BUILD_DIR: "/tmp/build"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-24.04
|
||||
outputs:
|
||||
version: ${{ steps.get_version.outputs.version }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Get version from pubspec.yaml
|
||||
id: get_version
|
||||
@@ -34,23 +34,23 @@ jobs:
|
||||
|
||||
- name: Build generated files
|
||||
working-directory: app
|
||||
run: flutter pub run build_runner build -d
|
||||
run: dart run build_runner build -d
|
||||
|
||||
- name: Upload updated lib files with generated code
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: lib-files
|
||||
path: ./app/lib/*
|
||||
|
||||
build_appimage:
|
||||
needs: build
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-24.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Download generated files
|
||||
uses: actions/download-artifact@v4
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
name: lib-files
|
||||
path: app/lib
|
||||
@@ -95,7 +95,7 @@ jobs:
|
||||
recipe: ./app/AppImageBuilder.yml
|
||||
|
||||
- name: Upload AppImage file
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: appimage-result
|
||||
path: ./app/*.AppImage
|
||||
|
||||
+111
-40
@@ -4,17 +4,18 @@ on:
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
FLUTTER_VERSION: "3.13.9"
|
||||
FLUTTER_VERSION: "3.35.6"
|
||||
RUST_VERSION: "1.84.1"
|
||||
APK_BUILD_DIR: "/tmp/build"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-24.04
|
||||
outputs:
|
||||
version: ${{ steps.get_version.outputs.version }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Get version from pubspec.yaml
|
||||
id: get_version
|
||||
@@ -28,7 +29,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Remove proprietary dependencies
|
||||
run: sh scripts/remove_proprietary_dependencies.sh
|
||||
@@ -50,37 +51,50 @@ jobs:
|
||||
ENCODED_STRING: ${{ secrets.ANDROID_KEY_STORE }}
|
||||
run: mkdir secrets && echo $ENCODED_STRING | base64 -di > secrets/android-keystore.jks
|
||||
|
||||
- name: Set up JDK 11
|
||||
uses: actions/setup-java@v4
|
||||
- name: Set up JDK 17
|
||||
uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: 'temurin'
|
||||
java-version: '11'
|
||||
java-version: '17'
|
||||
|
||||
- name: Install Flutter
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
flutter-version: ${{ env.FLUTTER_VERSION }}
|
||||
|
||||
- name: Install Rust
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
toolchain: stable
|
||||
override: ${{ env.RUST_VERSION }}
|
||||
|
||||
- name: Check rust-toolchain.toml
|
||||
working-directory: ${{ env.APK_BUILD_DIR }}/app
|
||||
run: rustup show
|
||||
|
||||
- name: Dependencies
|
||||
working-directory: ${{ env.APK_BUILD_DIR }}/app
|
||||
run: flutter pub get
|
||||
|
||||
- name: Build APK
|
||||
working-directory: ${{ env.APK_BUILD_DIR }}/app
|
||||
run: flutter build apk
|
||||
run: flutter build apk --split-per-abi
|
||||
|
||||
- name: Upload APK
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: apk-result
|
||||
path: ${{ env.APK_BUILD_DIR }}/app/build/app/outputs/flutter-apk/app-release.apk
|
||||
path: |
|
||||
${{ env.APK_BUILD_DIR }}/app/build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk
|
||||
${{ env.APK_BUILD_DIR }}/app/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk
|
||||
${{ env.APK_BUILD_DIR }}/app/build/app/outputs/flutter-apk/app-x86_64-release.apk
|
||||
|
||||
build_tar_x86_64:
|
||||
needs: build
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-24.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
@@ -92,6 +106,16 @@ jobs:
|
||||
flutter-version: ${{ env.FLUTTER_VERSION }}
|
||||
channel: "stable"
|
||||
|
||||
- name: Install Rust
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
toolchain: stable
|
||||
override: ${{ env.RUST_VERSION }}
|
||||
|
||||
- name: Check rust-toolchain.toml
|
||||
working-directory: app
|
||||
run: rustup show
|
||||
|
||||
- name: Dependencies
|
||||
working-directory: app
|
||||
run: flutter pub get
|
||||
@@ -106,7 +130,7 @@ jobs:
|
||||
tar -czvf ../../../../../result.tar.gz *
|
||||
|
||||
- name: Upload tar.gz archive
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: tar-gz-x86-64-result
|
||||
path: ./app/*.tar.gz
|
||||
@@ -118,7 +142,7 @@ jobs:
|
||||
runs-on: [ self-hosted, linux, arm64 ]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
@@ -139,17 +163,17 @@ jobs:
|
||||
tar -czvf ../../../../../result.tar.gz *
|
||||
|
||||
- name: Upload tar.gz archive
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: tar-gz-arm-64-result
|
||||
path: ./app/*.tar.gz
|
||||
|
||||
build_deb_x86_64:
|
||||
needs: build
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-24.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
@@ -161,6 +185,16 @@ jobs:
|
||||
flutter-version: ${{ env.FLUTTER_VERSION }}
|
||||
channel: "stable"
|
||||
|
||||
- name: Install Rust
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
toolchain: stable
|
||||
override: ${{ env.RUST_VERSION }}
|
||||
|
||||
- name: Check rust-toolchain.toml
|
||||
working-directory: app
|
||||
run: rustup show
|
||||
|
||||
- name: Enable dart_distributor
|
||||
run: dart pub global activate flutter_distributor
|
||||
|
||||
@@ -187,7 +221,7 @@ jobs:
|
||||
fi
|
||||
|
||||
- name: Upload deb file
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: deb-x86-64-result
|
||||
path: ${{ steps.find_deb.outputs.deb_path }}
|
||||
@@ -199,7 +233,7 @@ jobs:
|
||||
runs-on: [ self-hosted, linux, arm64 ]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
@@ -229,17 +263,17 @@ jobs:
|
||||
fi
|
||||
|
||||
- name: Upload deb file
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: deb-arm-64-result
|
||||
path: ${{ steps.find_deb.outputs.deb_path }}
|
||||
|
||||
build_appimage_x86_64:
|
||||
needs: build
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-24.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
@@ -251,6 +285,16 @@ jobs:
|
||||
flutter-version: ${{ env.FLUTTER_VERSION }}
|
||||
channel: "stable"
|
||||
|
||||
- name: Install Rust
|
||||
uses: actions-rs/toolchain@v1
|
||||
with:
|
||||
toolchain: stable
|
||||
override: ${{ env.RUST_VERSION }}
|
||||
|
||||
- name: Check rust-toolchain.toml
|
||||
working-directory: app
|
||||
run: rustup show
|
||||
|
||||
- name: Dependencies
|
||||
working-directory: app
|
||||
run: flutter pub get
|
||||
@@ -282,7 +326,7 @@ jobs:
|
||||
recipe: ./AppImageBuilder.yml
|
||||
|
||||
- name: Upload AppImage file
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: appimage-x86-64-result
|
||||
path: ./*.AppImage
|
||||
@@ -296,7 +340,7 @@ jobs:
|
||||
run: git config --system core.longpaths true
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- uses: subosito/flutter-action@v2
|
||||
with:
|
||||
@@ -313,14 +357,21 @@ jobs:
|
||||
|
||||
- name: Create empty settings.json
|
||||
working-directory: app
|
||||
run: echo {} > build/windows/runner/Release/settings.json
|
||||
run: echo {} > build/windows/x64/runner/Release/settings.json
|
||||
|
||||
- name: Add DLL files
|
||||
working-directory: app
|
||||
run: |
|
||||
Copy-Item ../scripts/windows/x64/msvcp140.dll build/windows/x64/runner/Release/
|
||||
Copy-Item ../scripts/windows/x64/vcruntime140.dll build/windows/x64/runner/Release/
|
||||
Copy-Item ../scripts/windows/x64/vcruntime140_1.dll build/windows/x64/runner/Release/
|
||||
|
||||
- name: Zip compiled files
|
||||
working-directory: app
|
||||
run: Compress-Archive -Path build/windows/runner/Release/* -DestinationPath LocalSend.zip
|
||||
run: Compress-Archive -Path build/windows/x64/runner/Release/* -DestinationPath LocalSend.zip
|
||||
|
||||
- name: Upload zip
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: windows-zip-x86-64-result
|
||||
path: app/LocalSend.zip
|
||||
@@ -335,10 +386,10 @@ jobs:
|
||||
- build_deb_arm_64
|
||||
- build_appimage_x86_64
|
||||
- build_windows_zip_x86_64
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-24.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Draft release
|
||||
id: draft_release
|
||||
@@ -351,27 +402,47 @@ jobs:
|
||||
|
||||
# APK
|
||||
- name: Download apk file
|
||||
uses: actions/download-artifact@v4
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
name: apk-result
|
||||
path: apk-result
|
||||
|
||||
- name: Copy apk file to root
|
||||
run: cp apk-result/*.apk result.apk
|
||||
run: cp apk-result/*.apk .
|
||||
|
||||
- name: Upload Release Asset
|
||||
- name: Upload Release Asset (arm32v7)
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.draft_release.outputs.upload_url }}
|
||||
asset_path: result.apk
|
||||
asset_name: LocalSend-${{ needs.build.outputs.version }}.apk
|
||||
asset_path: app-armeabi-v7a-release.apk
|
||||
asset_name: LocalSend-${{ needs.build.outputs.version }}-android-arm32v7.apk
|
||||
asset_content_type: application/vnd.android.package-archive
|
||||
|
||||
- name: Upload Release Asset (arm64v8)
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.draft_release.outputs.upload_url }}
|
||||
asset_path: app-arm64-v8a-release.apk
|
||||
asset_name: LocalSend-${{ needs.build.outputs.version }}-android-arm64v8.apk
|
||||
asset_content_type: application/vnd.android.package-archive
|
||||
|
||||
- name: Upload Release Asset (x64)
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.draft_release.outputs.upload_url }}
|
||||
asset_path: app-x86_64-release.apk
|
||||
asset_name: LocalSend-${{ needs.build.outputs.version }}-android-x64.apk
|
||||
asset_content_type: application/vnd.android.package-archive
|
||||
|
||||
# TAR.GZ (x86_64)
|
||||
- name: Download tar.gz file
|
||||
uses: actions/download-artifact@v4
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
name: tar-gz-x86-64-result
|
||||
path: tar-gz-x86-64-result
|
||||
@@ -394,7 +465,7 @@ jobs:
|
||||
|
||||
# TAR.GZ (arm_64)
|
||||
- name: Download tar.gz file
|
||||
uses: actions/download-artifact@v4
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
name: tar-gz-arm-64-result
|
||||
path: tar-gz-arm-64-result
|
||||
@@ -417,7 +488,7 @@ jobs:
|
||||
|
||||
# DEB (x86_64)
|
||||
- name: Download deb file
|
||||
uses: actions/download-artifact@v4
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
name: deb-x86-64-result
|
||||
path: deb-x86-64-result
|
||||
@@ -437,7 +508,7 @@ jobs:
|
||||
|
||||
# DEB (arm_64)
|
||||
- name: Download deb file
|
||||
uses: actions/download-artifact@v4
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
name: deb-arm-64-result
|
||||
path: deb-arm-64-result
|
||||
@@ -457,7 +528,7 @@ jobs:
|
||||
|
||||
# APPIMAGE (x86_64)
|
||||
- name: Download AppImage file
|
||||
uses: actions/download-artifact@v4
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
name: appimage-x86-64-result
|
||||
path: appimage-x86-64-result
|
||||
@@ -485,7 +556,7 @@ jobs:
|
||||
|
||||
# WINDOWS ZIP (x86_64)
|
||||
- name: Download windows zip file
|
||||
uses: actions/download-artifact@v4
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
name: windows-zip-x86-64-result
|
||||
path: windows-zip-x86-64-result
|
||||
|
||||
@@ -4,7 +4,7 @@ on:
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
FLUTTER_VERSION: "3.13.9"
|
||||
FLUTTER_VERSION: "3.35.6"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
@@ -13,7 +13,7 @@ jobs:
|
||||
version: ${{ steps.get_version.outputs.version }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Get version from pubspec.yaml
|
||||
id: get_version
|
||||
@@ -28,7 +28,7 @@ jobs:
|
||||
runs-on: [self-hosted, linux, arm64]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
@@ -69,7 +69,7 @@ jobs:
|
||||
ar rcs ../${{ steps.find_deb.outputs.deb_path }} debian-binary control.tar.xz data.tar.xz
|
||||
|
||||
- name: Upload deb file
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: deb-arm-64-result
|
||||
path: ${{ steps.find_deb.outputs.deb_path }}
|
||||
|
||||
@@ -4,7 +4,7 @@ on:
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
FLUTTER_VERSION: "3.13.9"
|
||||
FLUTTER_VERSION: "3.35.6"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
@@ -13,7 +13,7 @@ jobs:
|
||||
version: ${{ steps.get_version.outputs.version }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Get version from pubspec.yaml
|
||||
id: get_version
|
||||
@@ -28,7 +28,7 @@ jobs:
|
||||
runs-on: [self-hosted, linux, arm64]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
@@ -49,7 +49,7 @@ jobs:
|
||||
tar -czvf ../../../../../result.tar.gz *
|
||||
|
||||
- name: Upload tar.gz archive
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: tar-gz-arm-64-result
|
||||
path: ./app/*.tar.gz
|
||||
|
||||
@@ -4,16 +4,16 @@ on:
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
FLUTTER_VERSION: "3.13.9"
|
||||
FLUTTER_VERSION: "3.35.6"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-24.04
|
||||
outputs:
|
||||
version: ${{ steps.get_version.outputs.version }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Get version from pubspec.yaml
|
||||
id: get_version
|
||||
@@ -25,7 +25,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
container: fedora:38
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Install dependencies
|
||||
run: sudo dnf install -y clang cmake gtk3-devel ninja-build libappindicator-gtk3-devel jq findutils which git patchelf rpm-build
|
||||
@@ -75,7 +75,7 @@ jobs:
|
||||
fi
|
||||
|
||||
- name: Upload rpm file
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: rpm-result
|
||||
path: ${{ steps.find_rpm.outputs.rpm_path }}
|
||||
|
||||
@@ -4,16 +4,16 @@ on:
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
FLUTTER_VERSION: "3.13.9"
|
||||
FLUTTER_VERSION: "3.35.6"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-24.04
|
||||
outputs:
|
||||
version: ${{ steps.get_version.outputs.version }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Get version from pubspec.yaml
|
||||
id: get_version
|
||||
@@ -30,7 +30,7 @@ jobs:
|
||||
run: git config --system core.longpaths true
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- uses: subosito/flutter-action@v2
|
||||
with:
|
||||
@@ -49,12 +49,19 @@ jobs:
|
||||
working-directory: app
|
||||
run: echo {} > build/windows/x64/runner/Release/settings.json
|
||||
|
||||
- name: Add DLL files
|
||||
working-directory: app
|
||||
run: |
|
||||
Copy-Item ../scripts/windows/x64/msvcp140.dll build/windows/x64/runner/Release/
|
||||
Copy-Item ../scripts/windows/x64/vcruntime140.dll build/windows/x64/runner/Release/
|
||||
Copy-Item ../scripts/windows/x64/vcruntime140_1.dll build/windows/x64/runner/Release/
|
||||
|
||||
- name: Zip compiled files
|
||||
working-directory: app
|
||||
run: Compress-Archive -Path build/windows/x64/runner/Release/* -DestinationPath LocalSend.zip
|
||||
|
||||
- name: Upload zip
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: windows-zip-result
|
||||
name: windows-zip-x86-64-result
|
||||
path: app/LocalSend.zip
|
||||
|
||||
@@ -7,7 +7,7 @@ jobs:
|
||||
publish:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: vedantmgoyal2009/winget-releaser@v2
|
||||
- uses: vedantmgoyal9/winget-releaser@main
|
||||
with:
|
||||
identifier: LocalSend.LocalSend
|
||||
token: ${{ secrets.WINGET_TOKEN }}
|
||||
|
||||
+3
-1
@@ -1,4 +1,3 @@
|
||||
/.fvm/flutter_sdk
|
||||
.idea
|
||||
|
||||
# Linux AppImage
|
||||
@@ -8,3 +7,6 @@
|
||||
.refena_inspector/
|
||||
|
||||
/secrets
|
||||
|
||||
# FVM Version Cache
|
||||
.fvm/
|
||||
|
||||
+48
-11
@@ -11,8 +11,9 @@ If you're interested in contributing code to LocalSend, you'll need to follow th
|
||||
After you have installed [Flutter](https://flutter.dev), then you can start this app by typing the following commands:
|
||||
|
||||
```shell
|
||||
cd app
|
||||
flutter pub get
|
||||
flutter pub run build_runner build -d
|
||||
dart run build_runner build -d
|
||||
flutter run
|
||||
```
|
||||
|
||||
@@ -26,9 +27,10 @@ You can help in translating this app to other languages!
|
||||
- Fix existing translations: Update `strings_<locale>.i18n.json` in [assets/i18n](https://github.com/localsend/localsend/tree/main/app/assets/i18n)
|
||||
- Add new languages: Create a new file, see also: [locale codes](https://saimana.com/list-of-country-locale-code/).
|
||||
3. Optional: Re-run this app
|
||||
1. Make sure you have [run](#run) this app once.
|
||||
2. Update translations via `flutter pub run slang`
|
||||
3. Run the app via `flutter run`
|
||||
1. Run `cd app` to enter the app directory.
|
||||
2. Make sure you have [run](#run) this app once.
|
||||
3. Update translations via `flutter pub run slang`
|
||||
4. Run the app via `flutter run`
|
||||
4. Open a pull request
|
||||
|
||||
**_Take note:_ Fields decorated with `@` are not meant to be translated, they are not used in the app in any way, being merely informative text about the file or to give context to the translator.**
|
||||
@@ -64,8 +66,9 @@ Git based distribution:
|
||||
| [Homebrew][] | [Homebrew Repo][] | [@Tienisto][], Github Actions |
|
||||
| [Flathub][] | [Flathub Repo][] | [@proletarius101][], [@Tienisto][], Github Actions |
|
||||
| [AUR][] | [AUR Repo][] | [@Nixuge][] |
|
||||
| [NixOS][] | [NixOS Repo][] | [@sikmir][], [@linsui][] |
|
||||
| [F-Droid][] | [F-Droid Repo][] | [@Tienisto][], [F-Droid CI][] |
|
||||
| [Nixpkgs][] | [Nixpkgs Repo][] | [@sikmir][], [@linsui][] |
|
||||
| [F-Droid][] | [F-Droid Repo][] | [@linsui][], [@Tienisto][], [F-Droid CI][] |
|
||||
| [Snap][] | [Snap Repo][] | [@thatLeaflet][] |
|
||||
|
||||
[winget]: https://github.com/microsoft/winget-pkgs/tree/master/manifests/l/LocalSend/LocalSend
|
||||
[winget repo]: https://github.com/microsoft/winget-pkgs/tree/master/manifests/l/LocalSend/LocalSend
|
||||
@@ -73,16 +76,18 @@ Git based distribution:
|
||||
[scoop repo]: https://github.com/ScoopInstaller/Extras/blob/master/bucket/localsend.json
|
||||
[chocolatey]: https://community.chocolatey.org/packages/localsend
|
||||
[chocolatey repo]: https://github.com/brogers5/chocolatey-package-localsend/tree/main
|
||||
[homebrew]: https://github.com/localsend/homebrew-localsend
|
||||
[homebrew repo]: https://github.com/localsend/homebrew-localsend
|
||||
[homebrew]: https://formulae.brew.sh/cask/localsend
|
||||
[homebrew repo]: https://github.com/Homebrew/homebrew-cask/blob/master/Casks/l/localsend.rb
|
||||
[flathub]: https://flathub.org/apps/details/org.localsend.localsend_app
|
||||
[flathub repo]: https://github.com/flathub/org.localsend.localsend_app
|
||||
[aur]: https://aur.archlinux.org/packages/localsend-bin
|
||||
[aur repo]: https://aur.archlinux.org/localsend-bin.git
|
||||
[nixos]: https://search.nixos.org/packages?show=localsend
|
||||
[nixos repo]: https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/networking/localsend/default.nix
|
||||
[nixpkgs]: https://search.nixos.org/packages?show=localsend
|
||||
[nixpkgs repo]: https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/networking/localsend/default.nix
|
||||
[f-droid]: https://f-droid.org/packages/org.localsend.localsend_app
|
||||
[f-droid repo]: https://gitlab.com/fdroid/fdroiddata/-/blob/master/metadata/org.localsend.localsend_app.yml
|
||||
[snap]: https://snapcraft.io/localsend
|
||||
[snap repo]: https://github.com/localsend/snap
|
||||
|
||||
Manual distribution:
|
||||
|
||||
@@ -117,6 +122,7 @@ Binary distribution:
|
||||
[@brogers5]: https://github.com/brogers5
|
||||
[@sikmir]: https://github.com/sikmir
|
||||
[@linsui]: https://github.com/linsui
|
||||
[@thatLeaflet]: https://github.com/thatLeaflet
|
||||
[F-Droid CI]: https://gitlab.com/fdroidci
|
||||
|
||||
TODO:
|
||||
@@ -124,7 +130,6 @@ TODO:
|
||||
You can help in publishing LocalSend on more platforms. Please create an issue to notify us!
|
||||
|
||||
- Traditional Linux distributions (Debian, Fedora, etc.)
|
||||
- Snap
|
||||
- (Your idea here)
|
||||
|
||||
## Notes
|
||||
@@ -161,3 +166,35 @@ Suppose we want to update flutter to `3.7.8` (see https://github.com/localsend/l
|
||||
3. Update flutter constraints:
|
||||
1. In CI: `.github/workflows/ci.yml`
|
||||
2. In pubspec: `pubspec.yaml`
|
||||
|
||||
### Release
|
||||
|
||||
Make sure to set up the self-hosted runner to compile arm64 linux binaries.
|
||||
|
||||
To set up the runner, follow the following instructions:
|
||||
|
||||
Install Flutter
|
||||
|
||||
```bash
|
||||
sudo apt install git
|
||||
git clone https://github.com/flutter/flutter.git $HOME/flutter
|
||||
nano $HOME/.bashrc
|
||||
```
|
||||
|
||||
Add the following to the end of the file:
|
||||
|
||||
```bash
|
||||
export PATH="$PATH:$HOME/flutter/bin"
|
||||
```
|
||||
|
||||
Restart the terminal.
|
||||
|
||||
```bash
|
||||
flutter doctor
|
||||
```
|
||||
|
||||
Next, follow the instructions to set up the GitHub runner.
|
||||
|
||||
Start the "Release Draft" workflow from the "Actions" tab: https://github.com/localsend/localsend/actions/workflows/release.yml
|
||||
|
||||
Finally, compile binaries not yet supported by the pipeline.
|
||||
|
||||
@@ -1,21 +1,201 @@
|
||||
MIT License
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
Copyright (c) 2022-2023 Tien Do Nam
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
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:
|
||||
1. Definitions.
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
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.
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright 2022-2024 Tien Do Nam
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
@@ -1,13 +1,19 @@
|
||||
# LocalSend
|
||||
|
||||
[![CI status][ci-badge]][ci-workflow]
|
||||
[![Translations][translate-badge]][translate-link]
|
||||
[![Packaging status][packaging-badge]][packaging-link]
|
||||
|
||||
[ci-badge]: https://github.com/localsend/localsend/actions/workflows/ci.yml/badge.svg
|
||||
[ci-workflow]: https://github.com/localsend/localsend/actions/workflows/ci.yml
|
||||
[translate-badge]: https://hosted.weblate.org/widget/localsend/app/svg-badge.svg
|
||||
[translate-link]: https://hosted.weblate.org/engage/localsend/
|
||||
[packaging-badge]: https://repology.org/badge/tiny-repos/localsend.svg
|
||||
[packaging-link]: https://repology.org/project/localsend/versions
|
||||
|
||||
[Homepage][homepage] • [Discord][discord] • [GitHub][github] • [Codeberg][codeberg]
|
||||
|
||||
[中文](README_ZH.md)
|
||||
[English (Default)](README.md) • [Español](readme_i18n/README_ES.md) • [فارسی](readme_i18n/README_FA.md) • [Filipino](readme_i18n/README_PH.md) • [Français](readme_i18n/README_FR.md) • [Indonesia](readme_i18n/README_ID.md) • [Italiano](readme_i18n/README_IT.md) • [日本語](readme_i18n/README_JA.md) • [ភាសាខ្មែរ](readme_i18n/README_KM.md) • [한국어](readme_i18n/README_KO.md) • [Polski](readme_i18n/README_PL.md) • [Português Brasil](readme_i18n/README_PT_BR.md) • [Русский](readme_i18n/README_RU.md) • [ภาษาไทย](readme_i18n/README_TH.md) • [Türkçe](readme_i18n/README_TR.md) • [Українська](readme_i18n/README_UK.md) • [Tiếng Việt](readme_i18n/README_VI.md) • [中文](readme_i18n/README_ZH.md)
|
||||
|
||||
[homepage]: https://localsend.org
|
||||
[discord]: https://discord.gg/GSRWmQNP87
|
||||
@@ -17,13 +23,15 @@
|
||||
LocalSend is a free, open-source app that allows you to securely share files and messages with nearby devices over your local network without needing an internet connection.
|
||||
|
||||
- [About](#about)
|
||||
- [Sponsors](#sponsors)
|
||||
- [Screenshots](#screenshots)
|
||||
- [Download](#download)
|
||||
- [How it Works](#how-it-works)
|
||||
- [How It Works](#how-it-works)
|
||||
- [Getting Started](#getting-started)
|
||||
- [Contributing](#contributing)
|
||||
- [Translation](#translation)
|
||||
- [Bug fixes and improvements](#bug-fixes-and-improvements)
|
||||
- [Bug Fixes and Improvements](#bug-fixes-and-improvements)
|
||||
- [Troubleshooting](#troubleshooting)
|
||||
- [Building](#building)
|
||||
- [Android](#android)
|
||||
- [iOS](#ios)
|
||||
@@ -35,25 +43,39 @@ LocalSend is a free, open-source app that allows you to securely share files and
|
||||
|
||||
LocalSend is a cross-platform app that enables secure communication between devices using a REST API and HTTPS encryption. Unlike other messaging apps that rely on external servers, LocalSend doesn't require an internet connection or third-party servers, making it a fast and reliable solution for local communication.
|
||||
|
||||
## Sponsors
|
||||
|
||||
Browser testing via
|
||||
|
||||
<a href="https://www.testmuai.com/?utm_medium=sponsor&utm_source=localsend" target="_blank">
|
||||
<img src="https://localsend.org/img/sponsors/tesmu.svg" style="vertical-align: middle;" width="250" height="45" />
|
||||
</a>
|
||||
|
||||
## Screenshots
|
||||
|
||||
<img src="https://localsend.org/img/screenshot-iphone.webp" alt="iPhone screenshot" height="300"/> <img src="https://localsend.org/img/screenshot-pc.webp" alt="PC screenshot" height="300"/>
|
||||
|
||||
## Download
|
||||
|
||||
[](https://repology.org/project/localsend/versions)
|
||||
|
||||
It is recommended to download the app either from an app store or from a package manager because the app does not have an auto-update.
|
||||
|
||||
| Windows | macOS | Linux | Android | iOS | Fire OS |
|
||||
|--------------------------|-------------------------|--------------------|----------------|---------------|------------|
|
||||
| [Winget][] | [App Store][] | [Flathub][] | [Play Store][] | [App Store][] | [Amazon][] |
|
||||
| [Scoop][] | [Homebrew][] | [AUR][] | [F-Droid][] | | |
|
||||
| [Chocolatey][] | [DMG Installer][latest] | [NixOS][] | [APK][latest] | | |
|
||||
| [MSIX Installer][latest] | | [TAR][latest] | | | |
|
||||
| [EXE Installer][latest] | | [DEB][latest] | | | |
|
||||
| [Portable ZIP][latest] | | [AppImage][latest] | | | |
|
||||
| Windows | macOS | Linux | Android | iOS | Fire OS |
|
||||
|-------------------------|-------------------------|--------------------|----------------|---------------|------------|
|
||||
| [Winget][] | [App Store][] | [Flathub][] | [Play Store][] | [App Store][] | [Amazon][] |
|
||||
| [Scoop][] | [Homebrew][] | [Nixpkgs][] | [F-Droid][] | | |
|
||||
| [Chocolatey][] | [DMG Installer][latest] | [Snap][] | [APK][latest] | | |
|
||||
| [EXE Installer][latest] | | [AUR][] | | | |
|
||||
| [Portable ZIP][latest] | | [TAR][latest] | | | |
|
||||
| | | [DEB][latest] | | | |
|
||||
| | | [AppImage][latest] | | | |
|
||||
|
||||
Read more about [distribution channels][].
|
||||
|
||||
> [!CAUTION]
|
||||
> **Unofficial MSIX preview:** you can try builds from the latest commits at [localsend.ob-buff.dev](https://localsend.ob-buff.dev/). Stability is not guaranteed and all custom code tweaks are listed on that site.
|
||||
|
||||
[windows store]: https://www.microsoft.com/store/apps/9NCB4Z0TZ6RR
|
||||
[app store]: https://apps.apple.com/us/app/localsend/id1661733229
|
||||
[play store]: https://play.google.com/store/apps/details?id=org.localsend.localsend_app
|
||||
@@ -62,13 +84,24 @@ Read more about [distribution channels][].
|
||||
[winget]: https://github.com/microsoft/winget-pkgs/tree/master/manifests/l/LocalSend/LocalSend
|
||||
[scoop]: https://scoop.sh/#/apps?s=0&d=1&o=true&q=localsend&id=fb88113be361ca32c0dcac423cb4afdeda0b0c66
|
||||
[chocolatey]: https://community.chocolatey.org/packages/localsend
|
||||
[homebrew]: https://github.com/localsend/homebrew-localsend
|
||||
[homebrew]: https://formulae.brew.sh/cask/localsend
|
||||
[flathub]: https://flathub.org/apps/details/org.localsend.localsend_app
|
||||
[nixpkgs]: https://search.nixos.org/packages?show=localsend
|
||||
[snap]: https://snapcraft.io/localsend
|
||||
[aur]: https://aur.archlinux.org/packages/localsend-bin
|
||||
[nixos]: https://search.nixos.org/packages?show=localsend
|
||||
[latest]: https://github.com/localsend/localsend/releases/latest
|
||||
[distribution channels]: https://github.com/localsend/localsend/blob/main/CONTRIBUTING.md#distribution
|
||||
|
||||
**Compatibility**
|
||||
|
||||
| Platform | Minimum Version | Note |
|
||||
|----------|-----------------|-----------------------------------------------------------------------------------------------------------------------------|
|
||||
| Android | 5.0 | - |
|
||||
| iOS | 12.0 | - |
|
||||
| macOS | 11 Big Sur | Use OpenCore Legacy Patcher 2.0.2 (See [#1005](https://github.com/localsend/localsend/issues/1005#issuecomment-2449899384)) |
|
||||
| Windows | 10 | The last version to support Windows 7 is v1.15.4. There might be backports of newer versions for Windows 7 in the future. |
|
||||
| Linux | N.A. | Deps: Gnome: `xdg-desktop-portal` and `xdg-desktop-portal-gtk`, KDE: `xdg-desktop-portal` and `xdg-desktop-portal-kde` |
|
||||
|
||||
## Setup
|
||||
|
||||
In most cases, LocalSend should work out of the box. However, if you are having trouble sending or receiving files, you may need to configure your firewall to allow LocalSend to communicate over your local network.
|
||||
@@ -79,6 +112,7 @@ In most cases, LocalSend should work out of the box. However, if you are having
|
||||
| Outgoing | TCP, UDP | Any | Allow |
|
||||
|
||||
Also make sure to disable AP isolation on your router. It should be usually disabled by default but some routers may have it enabled (especially guest networks).
|
||||
See [troubleshooting](#troubleshooting) for more information.
|
||||
|
||||
**Portable Mode**
|
||||
|
||||
@@ -88,7 +122,15 @@ Create a file named `settings.json` located in the same directory as the executa
|
||||
This file can be empty.
|
||||
The app will use this file to store settings instead of the default location.
|
||||
|
||||
## How it Works
|
||||
**Start hidden**
|
||||
|
||||
(Updated in v1.15.0)
|
||||
|
||||
To start the app hidden (only in tray), use the `--hidden` flag (example: `localsend_app.exe --hidden`).
|
||||
|
||||
On v1.14.0 and earlier, the app starts hidden if `autostart` flag is set, and the hidden setting is enabled.
|
||||
|
||||
## How It Works
|
||||
|
||||
LocalSend uses a secure communication protocol that allows devices to communicate with each other using a REST API. All data is sent securely over HTTPS, and the TLS/SSL certificate is generated on the fly on each device, ensuring maximum security.
|
||||
|
||||
@@ -98,15 +140,18 @@ For more information on the LocalSend Protocol, see the [documentation](https://
|
||||
|
||||
To compile LocalSend from the source code, follow these steps:
|
||||
|
||||
1. Install [Flutter](https://flutter.dev).
|
||||
2. Clone the LocalSend repository.
|
||||
3. Run `cd app` to enter the app directory.
|
||||
4. Run `flutter pub get` to download dependencies.
|
||||
5. Run `flutter run` to start the app.
|
||||
1. Install Flutter [directly](https://flutter.dev) or using [fvm](https://fvm.app) (see [version required](.fvmrc))
|
||||
2. Install [Rust](https://www.rust-lang.org/tools/install)
|
||||
3. Clone the `LocalSend` repository
|
||||
4. Run `cd app` to enter the app directory
|
||||
5. Run `flutter pub get` to download dependencies
|
||||
6. Run `flutter run` to start the app
|
||||
|
||||
The issue may be caused by a mismatch between the required Flutter version and the installed Flutter version.
|
||||
|
||||
LocalSend uses [fvm](https://fvm.app) to manage the project Flutter version (specified in [.fvm/fvm_config.json](.fvm/fvm_config.json)). After you install it, run `fvm flutter` instead of `flutter`.
|
||||
> [!NOTE]
|
||||
> LocalSend currently requires an older Flutter version (specified in [.fvmrc](.fvmrc))
|
||||
> and thus build issues may be caused by a mismatch between the required and the (system-wide) installed Flutter version.
|
||||
> To make development more consistent, LocalSend uses [fvm](https://fvm.app) to manage the project Flutter version.
|
||||
> After installing `fvm`, run `fvm flutter` instead of `flutter`.
|
||||
|
||||
## Contributing
|
||||
|
||||
@@ -114,35 +159,38 @@ We welcome contributions from anyone interested in helping improve LocalSend. If
|
||||
|
||||
### Translation
|
||||
|
||||
You can help translate this app to other languages!
|
||||
You can help translate LocalSend into other languages. We use the [Weblate](https://hosted.weblate.org/projects/localsend/app) platform to manage translations.
|
||||
|
||||
1. Fork this repository
|
||||
2. Choose one
|
||||
- Add missing translations in existing languages: Only update `_missing_translations_<locale>.json` in [app/assets/i18n][i18n]
|
||||
- Fix existing translations: Update `strings_<locale>.i18n.json` in [app/assets/i18n][i18n]
|
||||
- Add new languages: Create a new file; see also: [locale codes][].
|
||||
3. Optional: Re-run this app
|
||||
1. Run `cd app` to enter the app directory.
|
||||
2. Make sure you have [run](#getting-started) this app once.
|
||||
3. Update translations via `flutter pub run slang`
|
||||
4. Run the app via `flutter run`
|
||||
5. Open a pull request
|
||||
Alternatively, you can also contribute by forking this repository and adding translations manually.
|
||||
|
||||
[i18n]: https://github.com/localsend/localsend/tree/main/app/assets/i18n
|
||||
[locale codes]: https://saimana.com/list-of-country-locale-code/
|
||||
The translations are located in the [app/assets/i18n](https://github.com/localsend/localsend/tree/main/app/assets/i18n) directory. Edit the `_missing_translations_<locale>.json` or `strings_<locale>.i18n.json` file to add or update translations.
|
||||
|
||||
<a href="https://hosted.weblate.org/engage/localsend/">
|
||||
<img src="https://hosted.weblate.org/widget/localsend/app/multi-auto.svg" alt="Translation status" />
|
||||
</a>
|
||||
|
||||
**_Take note:_ Fields decorated with `@` are not meant to be translated; they are not used in the app in any way, being merely informative text about the file or to give context to the translator.**
|
||||
|
||||
### Bug fixes and improvements
|
||||
### Bug Fixes and Improvements
|
||||
|
||||
- **Bug Fixes:** If you find a bug, please create a pull request with a clear description of the issue and how to fix it.
|
||||
- **Improvements:** Have an idea for how to improve LocalSend? Please create an issue first to discuss why the improvement is needed.
|
||||
|
||||
For more information, see the [contributing guide](https://github.com/localsend/localsend/blob/main/CONTRIBUTING.md).
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
| Issue | Platform (Sending) | Platform (Receiving) | Solution |
|
||||
|--------------------|--------------------|----------------------|-----------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| Device not visible | Any | Any | Make sure to disable AP-Isolation on your router. If it is enabled, connections between devices are forbidden. |
|
||||
| Device not visible | Any | Windows | Make sure to configure your network as a "private" network. Windows might be more restrictive when the network is configured as public. |
|
||||
| Device not visible | macOS, iOS | Any | You can try to toggle the "Local Network" permission under "Privacy" in the OS settings. |
|
||||
| Speed too slow | Any | Any | Use 5 Ghz; Disable encryption on both devices |
|
||||
| Speed too slow | Any | Android | Known issue. https://github.com/flutter-cavalry/saf_stream/issues/4 |
|
||||
|
||||
## Building
|
||||
|
||||
These commands are intended for maintainers only.
|
||||
These commands are intended for maintainers only. Make sure to run them from the `app` directory.
|
||||
|
||||
### Android
|
||||
|
||||
@@ -206,7 +254,7 @@ appimage-builder --recipe AppImageBuilder.yml
|
||||
|
||||
**Snap**
|
||||
|
||||
Feel free to open a pull request. There is a `snap` branch to play with.
|
||||
Instructions in [localsend/snap/README.md](https://github.com/localsend/snap/blob/main/README.md)
|
||||
|
||||
## Contributors
|
||||
|
||||
|
||||
-221
@@ -1,221 +0,0 @@
|
||||
# LocalSend
|
||||
|
||||
[![CI状态][ci-badge]][ci-workflow]
|
||||
|
||||
[ci-badge]: https://github.com/localsend/localsend/actions/workflows/ci.yml/badge.svg
|
||||
[ci-workflow]: https://github.com/localsend/localsend/actions/workflows/ci.yml
|
||||
|
||||
[主页][homepage] • [Discord][discord] • [GitHub][github] • [Codeberg][codeberg]
|
||||
|
||||
|
||||
[English](README.md)
|
||||
|
||||
> 注意:中文文档更新可能不够及时,请以英文文档为准。
|
||||
|
||||
[homepage]: https://localsend.org
|
||||
[discord]: https://discord.gg/GSRWmQNP87
|
||||
[github]: https://github.com/localsend/localsend
|
||||
[codeberg]: https://codeberg.org/localsend/localsend
|
||||
|
||||
LocalSend 是一个免费、开源的应用程序,允许你在本地网络上安全地与附近设备共享文件和消息,无需互联网连接。
|
||||
|
||||
- [关于](#关于)
|
||||
- [截图](#截图)
|
||||
- [下载](#下载)
|
||||
- [设置](#设置)
|
||||
- [工作原理](#工作原理)
|
||||
- [开始使用](#开始使用)
|
||||
- [贡献](#贡献)
|
||||
- [翻译](#翻译)
|
||||
- [Bug修复和改进](#bug修复和改进)
|
||||
- [构建](#构建)
|
||||
- [Android](#android)
|
||||
- [iOS](#ios)
|
||||
- [macOS](#macos)
|
||||
- [Windows](#windows)
|
||||
- [Linux](#linux)
|
||||
- [贡献者](#贡献者)
|
||||
|
||||
## 关于
|
||||
|
||||
LocalSend 是一个跨平台应用程序,使用REST API和HTTPS加密实现设备之间的安全通信。与依赖外部服务器的其他消息应用程序不同,LocalSend 不需要互联网连接或第三方服务器,因此成为本地通信的快速可靠解决方案。
|
||||
|
||||
## 截图
|
||||
|
||||
<img src="https://localsend.org/img/screenshot-iphone.webp" alt="iPhone截图" height="300"/> <img src="https://localsend.org/img/screenshot-pc.webp" alt="PC截图" height="300"/>
|
||||
|
||||
## 下载
|
||||
|
||||
建议从应用商店或软件包管理器下载该应用,因为该应用没有自动更新功能。
|
||||
|
||||
| Windows | macOS | Linux | Android | iOS | Fire OS |
|
||||
|--------------------------|-------------------------|--------------------|----------------|---------------|------------|
|
||||
| [Winget][] | [App Store][] | [Flathub][] | [Play Store][] | [App Store][] | [Amazon][] |
|
||||
| [Scoop][] | [Homebrew][] | [AUR][] | [F-Droid][] | | |
|
||||
| [Chocolatey][] | [DMG Installer][latest] | [NixOS][] | [APK][latest] | | |
|
||||
| [MSIX Installer][latest] | | [TAR][latest] | | | |
|
||||
| [EXE Installer][latest] | | [DEB][latest] | | | |
|
||||
| [Portable ZIP][latest] | | [AppImage][latest] | | | |
|
||||
|
||||
|
||||
了解更多关于[发行渠道][]的信息。
|
||||
|
||||
[windows store]: https://www.microsoft.com/store/apps/9NCB4Z0TZ6RR
|
||||
[app store]: https://apps.apple.com/us/app/localsend/id1661733229
|
||||
[play store]: https://play.google.com/store/apps/details?id=org.localsend.localsend_app
|
||||
[f-droid]: https://f-droid.org/packages/org.localsend.localsend_app
|
||||
[amazon]: https://www.amazon.com/dp/B0BW6MP732
|
||||
[winget]: https://github.com/microsoft/winget-pkgs/tree/master/manifests/l/LocalSend/LocalSend
|
||||
[scoop]: https://scoop.sh/#/apps?s=0&d=1&o=true&q=localsend&id=fb88113be361ca32c0dcac423cb4afdeda0b0c66
|
||||
[chocolatey]: https://community.chocolatey.org/packages/localsend
|
||||
[homebrew]: https://github.com/localsend/homebrew-localsend
|
||||
[flathub]: https://flathub.org/apps/details/org.localsend.localsend_app
|
||||
[aur]: https://aur.archlinux.org/packages/localsend-bin
|
||||
[nixos]: https://search.nixos.org/packages?show=localsend
|
||||
[latest]: https://github.com/localsend/localsend/releases/latest
|
||||
[发行渠道]: https://github.com/localsend/localsend/blob/main/CONTRIBUTING.md#distribution
|
||||
|
||||
## 设置
|
||||
|
||||
在大多数情况下,LocalSend 应该可以直接使用。但是,如果你在发送或接收文件时遇到问题,可能需要配置防火墙以允许 LocalSend 在你的本地网络上通信。
|
||||
|
||||
| 流量类型 | 协议 | 端口 | 操作 |
|
||||
|---------|------|------|------|
|
||||
| 传入 | TCP, UDP | 53317 | 允许 |
|
||||
| 传出 | TCP, UDP | 任意 | 允许 |
|
||||
|
||||
另外,请确保禁用路由器上的 AP 隔离。通常默认情况下应禁用它,但某些路由器可能会启用它(比如访客网络)。
|
||||
|
||||
**便携模式**
|
||||
|
||||
(在 v1.13.0 中引入)
|
||||
|
||||
创建一个名为 `settings.json` 的文件,放置在与可执行文件相同的目录中。
|
||||
此文件可以为空。
|
||||
应用程序将使用此文件来存储设置,而不是默认位置。
|
||||
|
||||
## 工作原理
|
||||
|
||||
LocalSend 使用安全通信协议,允许设备通过 REST API 进行通信。所有数据都通过 HTTPS 安全地发送,并且 TLS/SSL 证书会在每台设备上动态生成,确保最大的安全性。
|
||||
|
||||
欲了解更多关于 LocalSend 协议的信息,请参阅[文档](https://github.com/localsend/protocol)。
|
||||
|
||||
## 开始使用
|
||||
|
||||
要从源代码编译 LocalSend,请按照以下步骤进行操作:
|
||||
|
||||
1. 安装 [Flutter](https://flutter.dev)。
|
||||
2. 克隆 LocalSend 代码库。
|
||||
3. 执行 `cd app` 进入 app 目录。
|
||||
4. 运行 `flutter pub get` 下载依赖项。
|
||||
5. 运行 `flutter run` 启动应用程序。
|
||||
|
||||
可能的问题是所需的 Flutter 版本与已安装的 Flutter 版本不匹配。
|
||||
|
||||
LocalSend 使用 [fvm](https://fvm.app) 管理项目的 Flutter 版本(在 [.fvm/fvm_config.json](.fvm/fvm_config.json) 中指定)。安装后,运行 `fvm flutter` 而不是 `flutter`。
|
||||
|
||||
## 贡献
|
||||
|
||||
我们欢迎任何有兴趣帮助改进 LocalSend 的人士贡献。如果你想贡献,有几种方式可以参与:
|
||||
|
||||
### 翻译
|
||||
|
||||
你可以帮助将此应用程序翻译成其他语言!
|
||||
|
||||
1. Fork 此代码库
|
||||
2. 选择一种方式
|
||||
- 在现有语言中添加缺失的翻译:只需更新 [app/assets/i18n][i18n] 中的 `_missing_translations_<locale>.json`
|
||||
- 修复现有的翻译:更新 [app/assets/i18n][i18n] 中的 `strings_<locale>.i18n.json`
|
||||
- 添加新的语言:创建一个新文件;参见:[语言代码][locale codes]。
|
||||
3. 可选步骤:重新运行此应用程序
|
||||
1. 执行 `cd app` 进入 app 目录。
|
||||
2. 确保你已经 [运行](#getting-started) 过此应用程序一次。
|
||||
3. 通过 `flutter pub run slang` 更新翻译
|
||||
4. 通过 `flutter run` 运行应用程序
|
||||
5. 提交拉取请求
|
||||
|
||||
[i18n]: https://github.com/localsend/localsend/tree/main/app/assets/i18n
|
||||
[locale codes]: https://saimana.com/list-of-country-locale-code/
|
||||
|
||||
**_注意:_ 用 `@` 装饰的字段不是用于翻译的;它们在应用程序中没有任何用处,仅仅是关于文件的信息性文本或为翻译者提供上下文。**
|
||||
|
||||
### Bug修复和改进
|
||||
|
||||
- **Bug 修复:** 如果发现 bug,请创建一个带有清晰描述问题及解决方法的拉取请求。
|
||||
- **改进:** 有改进 LocalSend 的想法吗?请先创建一个问题来讨论为什么需要这个改进。
|
||||
|
||||
欲了解更多信息,请参阅[贡献指南](https://github.com/localsend/localsend/blob/main/CONTRIBUTING.md)。
|
||||
|
||||
## 构建
|
||||
|
||||
这些命令仅供维护者使用。
|
||||
|
||||
### Android
|
||||
|
||||
传统 APK
|
||||
|
||||
```bash
|
||||
flutter build apk
|
||||
```
|
||||
|
||||
Google Play 的 AppBundle
|
||||
|
||||
```bash
|
||||
flutter build appbundle
|
||||
```
|
||||
|
||||
### iOS
|
||||
|
||||
```bash
|
||||
flutter build ipa
|
||||
```
|
||||
|
||||
### macOS
|
||||
|
||||
```bash
|
||||
flutter build macos
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
||||
**传统**
|
||||
|
||||
```bash
|
||||
flutter build windows
|
||||
```
|
||||
|
||||
**本地 MSIX 应用**
|
||||
|
||||
```bash
|
||||
flutter pub run msix:create
|
||||
```
|
||||
|
||||
**微软商店分发包**
|
||||
|
||||
```bash
|
||||
flutter pub run msix:create --store
|
||||
```
|
||||
|
||||
### Linux
|
||||
|
||||
**传统**
|
||||
|
||||
```bash
|
||||
flutter build linux
|
||||
```
|
||||
|
||||
**AppImage**
|
||||
|
||||
```bash
|
||||
appimage-builder --recipe AppImageBuilder.yml
|
||||
```
|
||||
|
||||
**Snap**
|
||||
|
||||
欢迎提交拉取请求!有一个 `snap` 分支可以尝试使用。
|
||||
|
||||
## 贡献者
|
||||
|
||||
<a href="https://github.com/localsend/localsend/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=localsend/localsend" alt="Localsend 贡献者"/>
|
||||
</a>
|
||||
@@ -5,9 +5,11 @@
|
||||
*.swp
|
||||
.DS_Store
|
||||
.atom/
|
||||
.build/
|
||||
.buildlog/
|
||||
.history
|
||||
.svn/
|
||||
.swiftpm/
|
||||
migrate_working_dir/
|
||||
|
||||
# IntelliJ related
|
||||
|
||||
@@ -17,6 +17,10 @@ analyzer:
|
||||
- lib/**.freezed.dart
|
||||
- submodules/**
|
||||
|
||||
formatter:
|
||||
trailing_commas: preserve
|
||||
page_width: 150
|
||||
|
||||
linter:
|
||||
rules:
|
||||
use_key_in_widget_constructors: false
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
plugins {
|
||||
id "com.android.application"
|
||||
id "kotlin-android"
|
||||
id "dev.flutter.flutter-gradle-plugin"
|
||||
}
|
||||
|
||||
def localProperties = new Properties()
|
||||
def localPropertiesFile = rootProject.file('local.properties')
|
||||
if (localPropertiesFile.exists()) {
|
||||
@@ -6,11 +12,6 @@ if (localPropertiesFile.exists()) {
|
||||
}
|
||||
}
|
||||
|
||||
def flutterRoot = localProperties.getProperty('flutter.sdk')
|
||||
if (flutterRoot == null) {
|
||||
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
|
||||
}
|
||||
|
||||
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
|
||||
if (flutterVersionCode == null) {
|
||||
flutterVersionCode = '1'
|
||||
@@ -21,21 +22,18 @@ if (flutterVersionName == null) {
|
||||
flutterVersionName = '1.0'
|
||||
}
|
||||
|
||||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'kotlin-android'
|
||||
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
||||
|
||||
android {
|
||||
namespace "org.localsend.localsend_app"
|
||||
compileSdkVersion 34
|
||||
ndkVersion flutter.ndkVersion
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
sourceCompatibility JavaVersion.VERSION_17
|
||||
targetCompatibility JavaVersion.VERSION_17
|
||||
}
|
||||
|
||||
kotlinOptions {
|
||||
jvmTarget = '1.8'
|
||||
jvmTarget = '17'
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
@@ -47,7 +45,7 @@ android {
|
||||
applicationId "org.localsend.localsend_app"
|
||||
// You can update the following values to match your application needs.
|
||||
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration.
|
||||
minSdkVersion 21
|
||||
minSdkVersion flutter.minSdkVersion
|
||||
targetSdkVersion 34
|
||||
versionCode flutterVersionCode.toInteger()
|
||||
versionName flutterVersionName
|
||||
@@ -67,10 +65,22 @@ android {
|
||||
storePassword keystoreProperties['storePassword']
|
||||
}
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
signingConfig signingConfigs.release
|
||||
}
|
||||
debug {
|
||||
applicationIdSuffix ".debug"
|
||||
}
|
||||
}
|
||||
|
||||
// Required by F-Droid
|
||||
dependenciesInfo {
|
||||
// Disables dependency metadata when building APKs.
|
||||
includeInApk = false
|
||||
// Disables dependency metadata when building Android App Bundles.
|
||||
includeInBundle = false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,6 +88,15 @@ flutter {
|
||||
source '../..'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||
// To comply with F-Droid version code schema
|
||||
// https://github.com/localsend/localsend/issues/1534
|
||||
ext.abiCodes = ["x86_64": 1, "armeabi-v7a": 2, "arm64-v8a": 3]
|
||||
import com.android.build.OutputFile
|
||||
android.applicationVariants.all { variant ->
|
||||
variant.outputs.each { output ->
|
||||
def abiVersionCode = project.ext.abiCodes.get(output.getFilter(OutputFile.ABI))
|
||||
if (abiVersionCode != null) {
|
||||
output.versionCodeOverride = variant.versionCode * 10 + abiVersionCode
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="org.localsend.localsend_app">
|
||||
<!-- The INTERNET permission is required for development. Specifically,
|
||||
the Flutter tool needs it to communicate with the running application
|
||||
to allow setting breakpoints, to provide hot reload, etc.
|
||||
-->
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<application
|
||||
android:label="LocalSend Debug"
|
||||
tools:ignore="MissingApplicationIcon"
|
||||
tools:replace="android:label" />
|
||||
</manifest>
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.localsend.localsend_app">
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="org.localsend.localsend_app">
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
|
||||
|
||||
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
|
||||
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
|
||||
@@ -15,6 +13,8 @@
|
||||
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
|
||||
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
||||
|
||||
<uses-permission android:name="android.permission.BIND_QUICK_SETTINGS_TILE" tools:targetApi="24" />
|
||||
|
||||
<!-- Android TV -->
|
||||
<uses-feature android:name="android.software.leanback" android:required="false" />
|
||||
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
|
||||
@@ -42,9 +42,9 @@
|
||||
while the Flutter UI initializes. After that, this theme continues
|
||||
to determine the Window background behind the Flutter UI. -->
|
||||
<meta-data
|
||||
android:name="io.flutter.embedding.android.NormalTheme"
|
||||
android:resource="@style/NormalTheme"
|
||||
/>
|
||||
android:name="io.flutter.embedding.android.EnableCutout"
|
||||
android:value="true"
|
||||
/>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
@@ -66,6 +66,21 @@
|
||||
</intent-filter>
|
||||
|
||||
</activity>
|
||||
|
||||
<!-- Quick tile to launch the app -->
|
||||
<service
|
||||
android:name=".QuickTileService"
|
||||
android:icon="@mipmap/ic_launcher_quicktile_foreground"
|
||||
android:label="LocalSend"
|
||||
android:process=":quick_tile_service"
|
||||
android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"
|
||||
android:exported="true"
|
||||
tools:targetApi="24">
|
||||
<intent-filter>
|
||||
<action android:name="android.service.quicksettings.action.QS_TILE"/>
|
||||
</intent-filter>
|
||||
</service>
|
||||
|
||||
<!-- Don't delete the meta-data below.
|
||||
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
|
||||
<meta-data
|
||||
|
||||
@@ -0,0 +1,141 @@
|
||||
package org.localsend.localsend_app
|
||||
|
||||
import android.content.ContentResolver
|
||||
import android.content.Context
|
||||
import android.database.Cursor
|
||||
import android.net.Uri
|
||||
import android.provider.DocumentsContract
|
||||
import android.util.Log
|
||||
|
||||
const val MIME_TYPE_DIR = "vnd.android.document/directory"
|
||||
|
||||
/**
|
||||
* Similar to AndroidX/DocumentFile, but faster by querying all fields at once.
|
||||
*/
|
||||
class FastDocumentFile(
|
||||
private val context: Context,
|
||||
private val mime: String,
|
||||
val uri: Uri,
|
||||
val name: String,
|
||||
val size: Long,
|
||||
val lastModified: Long,
|
||||
) {
|
||||
val isDirectory: Boolean = mime == MIME_TYPE_DIR
|
||||
val isFile: Boolean = !isDirectory && mime.isNotBlank()
|
||||
|
||||
fun listFiles(): List<FastDocumentFile> {
|
||||
val resolver: ContentResolver = context.contentResolver
|
||||
val childrenUri = DocumentsContract.buildChildDocumentsUriUsingTree(
|
||||
uri,
|
||||
DocumentsContract.getDocumentId(uri)
|
||||
)
|
||||
|
||||
val results = mutableListOf<FastDocumentFile>()
|
||||
|
||||
var cursor: Cursor? = null
|
||||
try {
|
||||
cursor = resolver.query(
|
||||
childrenUri,
|
||||
arrayOf(
|
||||
DocumentsContract.Document.COLUMN_MIME_TYPE,
|
||||
DocumentsContract.Document.COLUMN_DOCUMENT_ID,
|
||||
DocumentsContract.Document.COLUMN_DISPLAY_NAME,
|
||||
DocumentsContract.Document.COLUMN_SIZE,
|
||||
DocumentsContract.Document.COLUMN_LAST_MODIFIED,
|
||||
),
|
||||
null,
|
||||
null,
|
||||
null
|
||||
)
|
||||
while (cursor!!.moveToNext()) {
|
||||
results.add(
|
||||
FastDocumentFile(
|
||||
context = context,
|
||||
mime = cursor.getString(0),
|
||||
uri = DocumentsContract.buildDocumentUriUsingTree(
|
||||
uri,
|
||||
cursor.getString(1)
|
||||
),
|
||||
name = cursor.getString(2),
|
||||
size = cursor.getLong(3),
|
||||
lastModified = cursor.getLong(4)
|
||||
)
|
||||
)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Log.w(TAG, "Error: $e")
|
||||
} finally {
|
||||
try {
|
||||
cursor?.close()
|
||||
} catch (_: Exception) {}
|
||||
}
|
||||
return results
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val TAG = "FastDocumentFile"
|
||||
|
||||
/**
|
||||
* Create a FastDocumentFile from a tree Uri.
|
||||
*/
|
||||
fun fromTreeUri(context: Context, treeUri: Uri): FastDocumentFile {
|
||||
val documentId = when {
|
||||
DocumentsContract.isDocumentUri(
|
||||
context,
|
||||
treeUri
|
||||
) -> DocumentsContract.getDocumentId(treeUri)
|
||||
else -> DocumentsContract.getTreeDocumentId(treeUri)
|
||||
}
|
||||
|
||||
return FastDocumentFile(
|
||||
context = context,
|
||||
mime = "",
|
||||
uri = DocumentsContract.buildDocumentUriUsingTree(
|
||||
treeUri,
|
||||
documentId,
|
||||
),
|
||||
name = "",
|
||||
size = 0,
|
||||
lastModified = 0,
|
||||
)
|
||||
}
|
||||
|
||||
fun fromDocumentUri(context: Context, documentUri: Uri): FastDocumentFile? {
|
||||
var cursor: Cursor? = null
|
||||
try {
|
||||
cursor = context.contentResolver.query(
|
||||
documentUri,
|
||||
arrayOf(
|
||||
DocumentsContract.Document.COLUMN_MIME_TYPE,
|
||||
DocumentsContract.Document.COLUMN_DISPLAY_NAME,
|
||||
DocumentsContract.Document.COLUMN_SIZE,
|
||||
DocumentsContract.Document.COLUMN_LAST_MODIFIED,
|
||||
),
|
||||
null,
|
||||
null,
|
||||
null
|
||||
)
|
||||
|
||||
return if (cursor != null && cursor.moveToFirst()) {
|
||||
FastDocumentFile(
|
||||
context = context,
|
||||
mime = cursor.getString(0),
|
||||
uri = documentUri,
|
||||
name = cursor.getString(1),
|
||||
size = cursor.getLong(2),
|
||||
lastModified = cursor.getLong(3),
|
||||
)
|
||||
} else {
|
||||
null
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Log.w(TAG, "Error: $e")
|
||||
return null
|
||||
} finally {
|
||||
try {
|
||||
cursor?.close()
|
||||
} catch (_: Exception) {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
package org.localsend.localsend_app
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.provider.DocumentsContract
|
||||
import java.util.Locale
|
||||
|
||||
fun openUri(context: Context, uriStr: String) {
|
||||
val uri = Uri.parse(uriStr)
|
||||
val intent = Intent(Intent.ACTION_VIEW, uri)
|
||||
val type = getFileType(uriStr)
|
||||
|
||||
println("Inferred type: $type")
|
||||
|
||||
intent.setDataAndType(uri, type)
|
||||
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
|
||||
context.startActivity(intent)
|
||||
}
|
||||
|
||||
private fun getFileType(filePath: String): String {
|
||||
val fileExt = filePath.substring(filePath.lastIndexOf(".") + 1).lowercase(Locale.ROOT)
|
||||
println("File extension: $fileExt")
|
||||
return when (fileExt) {
|
||||
"3gp" -> "video/3gpp"
|
||||
"torrent" -> "application/x-bittorrent"
|
||||
"kml" -> "application/vnd.google-earth.kml+xml"
|
||||
"gpx" -> "application/gpx+xml"
|
||||
"apk" -> "application/vnd.android.package-archive"
|
||||
"asf" -> "video/x-ms-asf"
|
||||
"avi" -> "video/x-msvideo"
|
||||
"bin", "class", "exe" -> "application/octet-stream"
|
||||
"bmp" -> "image/bmp"
|
||||
"c" -> "text/plain"
|
||||
"conf" -> "text/plain"
|
||||
"cpp" -> "text/plain"
|
||||
"doc" -> "application/msword"
|
||||
"docx" -> "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
|
||||
"xls", "csv" -> "application/vnd.ms-excel"
|
||||
"xlsx" -> "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
|
||||
"gif" -> "image/gif"
|
||||
"gtar" -> "application/x-gtar"
|
||||
"gz" -> "application/x-gzip"
|
||||
"h" -> "text/plain"
|
||||
"htm" -> "text/html"
|
||||
"html" -> "text/html"
|
||||
"jar" -> "application/java-archive"
|
||||
"java" -> "text/plain"
|
||||
"jpeg" -> "image/jpeg"
|
||||
"jpg" -> "image/jpeg"
|
||||
"js" -> "application/x-javascript"
|
||||
"log" -> "text/plain"
|
||||
"m3u" -> "audio/x-mpegurl"
|
||||
"m4a" -> "audio/mp4a-latm"
|
||||
"m4b" -> "audio/mp4a-latm"
|
||||
"m4p" -> "audio/mp4a-latm"
|
||||
"m4u" -> "video/vnd.mpegurl"
|
||||
"m4v" -> "video/x-m4v"
|
||||
"mov" -> "video/quicktime"
|
||||
"mp2" -> "audio/x-mpeg"
|
||||
"mp3" -> "audio/x-mpeg"
|
||||
"mp4" -> "video/mp4"
|
||||
"mpc" -> "application/vnd.mpohun.certificate"
|
||||
"mpe" -> "video/mpeg"
|
||||
"mpeg" -> "video/mpeg"
|
||||
"mpg" -> "video/mpeg"
|
||||
"mpg4" -> "video/mp4"
|
||||
"mpga" -> "audio/mpeg"
|
||||
"msg" -> "application/vnd.ms-outlook"
|
||||
"ogg" -> "audio/ogg"
|
||||
"pdf" -> "application/pdf"
|
||||
"png" -> "image/png"
|
||||
"pps" -> "application/vnd.ms-powerpoint"
|
||||
"ppt" -> "application/vnd.ms-powerpoint"
|
||||
"pptx" -> "application/vnd.openxmlformats-officedocument.presentationml.presentation"
|
||||
"prop" -> "text/plain"
|
||||
"rc" -> "text/plain"
|
||||
"rmvb" -> "audio/x-pn-realaudio"
|
||||
"rtf" -> "application/rtf"
|
||||
"sh" -> "text/plain"
|
||||
"tar" -> "application/x-tar"
|
||||
"tgz" -> "application/x-compressed"
|
||||
"txt" -> "text/plain"
|
||||
"wav" -> "audio/x-wav"
|
||||
"wma" -> "audio/x-ms-wma"
|
||||
"wmv" -> "audio/x-ms-wmv"
|
||||
"wps" -> "application/vnd.ms-works"
|
||||
"xml" -> "text/plain"
|
||||
"z" -> "application/x-compress"
|
||||
"zip" -> "application/x-zip-compressed"
|
||||
else -> DocumentsContract.Document.MIME_TYPE_DIR
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,302 @@
|
||||
package org.localsend.localsend_app
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.database.Cursor
|
||||
import android.net.Uri
|
||||
import android.provider.DocumentsContract
|
||||
import android.provider.Settings
|
||||
import io.flutter.embedding.android.FlutterActivity
|
||||
import io.flutter.embedding.engine.FlutterEngine
|
||||
import io.flutter.plugin.common.MethodCall
|
||||
import io.flutter.plugin.common.MethodChannel
|
||||
|
||||
class MainActivity : FlutterActivity()
|
||||
|
||||
private const val CHANNEL = "org.localsend.localsend_app/localsend"
|
||||
private const val REQUEST_CODE_PICK_DIRECTORY = 1
|
||||
private const val REQUEST_CODE_PICK_DIRECTORY_PATH = 2
|
||||
private const val REQUEST_CODE_PICK_FILE = 3
|
||||
|
||||
class MainActivity : FlutterActivity() {
|
||||
private var pendingResult: MethodChannel.Result? = null
|
||||
|
||||
// Overriding the static methods we need from the Java class, as described
|
||||
// in the documentation of `FlutterActivity.NewEngineIntentBuilder`
|
||||
companion object {
|
||||
fun withNewEngine(): NewEngineIntentBuilder {
|
||||
return NewEngineIntentBuilder(MainActivity::class.java)
|
||||
}
|
||||
|
||||
fun createDefaultIntent(launchContext: Context): Intent {
|
||||
return withNewEngine().build(launchContext)
|
||||
}
|
||||
}
|
||||
|
||||
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
|
||||
super.configureFlutterEngine(flutterEngine)
|
||||
MethodChannel(
|
||||
flutterEngine.dartExecutor.binaryMessenger,
|
||||
CHANNEL
|
||||
).setMethodCallHandler { call, result ->
|
||||
when (call.method) {
|
||||
"pickDirectory" -> {
|
||||
pendingResult = result
|
||||
openDirectoryPicker(onlyPath = false)
|
||||
}
|
||||
|
||||
"pickFiles" -> {
|
||||
pendingResult = result
|
||||
openFilePicker()
|
||||
}
|
||||
|
||||
"pickDirectoryPath" -> {
|
||||
pendingResult = result
|
||||
openDirectoryPicker(onlyPath = true)
|
||||
}
|
||||
|
||||
"createDirectory" -> handleCreateDirectory(call, result)
|
||||
|
||||
"openContentUri" -> {
|
||||
openUri(context, call.argument<String>("uri")!!)
|
||||
result.success(null)
|
||||
}
|
||||
|
||||
"openGallery" -> {
|
||||
openGallery()
|
||||
result.success(null)
|
||||
}
|
||||
|
||||
"isAnimationsEnabled" -> {
|
||||
result.success(isAnimationsEnabled())
|
||||
}
|
||||
|
||||
else -> result.notImplemented()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun isAnimationsEnabled() : Boolean {
|
||||
return Settings.Global.getFloat(this.getContentResolver(),
|
||||
Settings.Global.ANIMATOR_DURATION_SCALE, 1.0f) != 0.0f;
|
||||
}
|
||||
|
||||
private fun openDirectoryPicker(onlyPath: Boolean) {
|
||||
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE)
|
||||
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION)
|
||||
startActivityForResult(
|
||||
intent,
|
||||
if (onlyPath) REQUEST_CODE_PICK_DIRECTORY_PATH else REQUEST_CODE_PICK_DIRECTORY
|
||||
)
|
||||
}
|
||||
|
||||
private fun openFilePicker() {
|
||||
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
|
||||
addCategory(Intent.CATEGORY_OPENABLE)
|
||||
putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true)
|
||||
putExtra("multi-pick", true)
|
||||
type = "*/*"
|
||||
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION)
|
||||
}
|
||||
startActivityForResult(intent, REQUEST_CODE_PICK_FILE)
|
||||
}
|
||||
|
||||
@SuppressLint("WrongConstant")
|
||||
@Override
|
||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||
super.onActivityResult(requestCode, resultCode, data)
|
||||
if (resultCode == Activity.RESULT_CANCELED) {
|
||||
pendingResult?.error("CANCELED", "Canceled", null)
|
||||
pendingResult = null
|
||||
return
|
||||
}
|
||||
|
||||
if (resultCode != Activity.RESULT_OK || data == null) {
|
||||
pendingResult?.error("Error $resultCode", "Failed to access directory or file", null)
|
||||
pendingResult = null
|
||||
return
|
||||
}
|
||||
|
||||
when (requestCode) {
|
||||
REQUEST_CODE_PICK_DIRECTORY -> {
|
||||
val uri: Uri? = data.data
|
||||
val takeFlags: Int =
|
||||
data.flags and (Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION)
|
||||
if (uri != null) {
|
||||
contentResolver.takePersistableUriPermission(uri, takeFlags)
|
||||
|
||||
val files = mutableListOf<FileInfo>()
|
||||
listFiles(uri, files)
|
||||
val resultData = PickDirectoryResult(uri.toString(), files)
|
||||
pendingResult?.success(resultData.toMap())
|
||||
pendingResult = null
|
||||
} else {
|
||||
pendingResult?.error("Error", "Failed to access directory", null)
|
||||
pendingResult = null
|
||||
}
|
||||
}
|
||||
|
||||
REQUEST_CODE_PICK_DIRECTORY_PATH -> {
|
||||
val uri: Uri? = data.data
|
||||
val takeFlags: Int =
|
||||
data.flags and (Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION)
|
||||
if (uri != null) {
|
||||
contentResolver.takePersistableUriPermission(uri, takeFlags)
|
||||
pendingResult?.success(uri.toString())
|
||||
pendingResult = null
|
||||
} else {
|
||||
pendingResult?.error("Error", "Failed to access directory", null)
|
||||
pendingResult = null
|
||||
}
|
||||
}
|
||||
|
||||
REQUEST_CODE_PICK_FILE -> {
|
||||
val uriList: List<Uri> = when {
|
||||
data.clipData != null -> {
|
||||
val clipData = data.clipData
|
||||
val uris = mutableListOf<Uri>()
|
||||
for (i in 0 until clipData!!.itemCount) {
|
||||
uris.add(clipData.getItemAt(i).uri)
|
||||
}
|
||||
uris
|
||||
}
|
||||
|
||||
data.data != null -> listOf(data.data!!)
|
||||
else -> {
|
||||
pendingResult?.error("Error", "Failed to access file", null)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
val takeFlags: Int =
|
||||
data.flags and (Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION)
|
||||
|
||||
val resultList = mutableListOf<FileInfo>()
|
||||
for (uri in uriList) {
|
||||
contentResolver.takePersistableUriPermission(uri, takeFlags)
|
||||
val documentFile = FastDocumentFile.fromDocumentUri(this, uri)
|
||||
if (documentFile == null) {
|
||||
pendingResult?.error("Error", "Failed to access file", null)
|
||||
return
|
||||
}
|
||||
resultList.add(
|
||||
FileInfo(
|
||||
name = documentFile.name,
|
||||
size = documentFile.size,
|
||||
uri = uri.toString(),
|
||||
lastModified = documentFile.lastModified,
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
pendingResult?.success(resultList.map { it.toMap() })
|
||||
pendingResult = null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun listFiles(uri: Uri, files: MutableList<FileInfo>) {
|
||||
val pickedDir: FastDocumentFile = FastDocumentFile.fromTreeUri(this, uri)
|
||||
|
||||
for (file in pickedDir.listFiles()) {
|
||||
if (file.isDirectory) {
|
||||
// Recursive call
|
||||
listFiles(file.uri, files)
|
||||
} else if (file.isFile) {
|
||||
files.add(
|
||||
FileInfo(
|
||||
name = file.name,
|
||||
size = file.size,
|
||||
uri = file.uri.toString(),
|
||||
lastModified = file.lastModified,
|
||||
),
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("WrongConstant")
|
||||
private fun handleCreateDirectory(call: MethodCall, result: MethodChannel.Result) {
|
||||
val documentUri = Uri.parse(call.argument<String>("documentUri")!!)
|
||||
val directoryName = call.argument<String>("directoryName")!!
|
||||
|
||||
if (folderExists(documentUri, directoryName)) {
|
||||
result.success(null)
|
||||
return
|
||||
}
|
||||
|
||||
DocumentsContract.createDocument(
|
||||
context.contentResolver, documentUri, DocumentsContract.Document.MIME_TYPE_DIR,
|
||||
directoryName
|
||||
)
|
||||
|
||||
result.success(null)
|
||||
}
|
||||
|
||||
private fun folderExists(documentUri: Uri, folderName: String): Boolean {
|
||||
var cursor: Cursor? = null
|
||||
try {
|
||||
val childrenUri = DocumentsContract.buildChildDocumentsUriUsingTree(documentUri, DocumentsContract.getDocumentId(documentUri))
|
||||
cursor = contentResolver.query(
|
||||
childrenUri,
|
||||
arrayOf(
|
||||
DocumentsContract.Document.COLUMN_DISPLAY_NAME,
|
||||
DocumentsContract.Document.COLUMN_MIME_TYPE
|
||||
),
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
)
|
||||
|
||||
if (cursor != null) {
|
||||
while (cursor.moveToNext()) {
|
||||
val displayName = cursor.getString(0)
|
||||
val mimeType = cursor.getString(1)
|
||||
|
||||
if (folderName == displayName && DocumentsContract.Document.MIME_TYPE_DIR == mimeType) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
cursor?.close()
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
private fun openGallery() {
|
||||
val intent = Intent()
|
||||
intent.action = Intent.ACTION_VIEW
|
||||
intent.type = "image/*"
|
||||
startActivity(intent)
|
||||
}
|
||||
}
|
||||
|
||||
data class PickDirectoryResult(
|
||||
val directoryUri: String,
|
||||
val files: List<FileInfo>,
|
||||
) {
|
||||
fun toMap(): Map<String, Any> {
|
||||
return mapOf(
|
||||
"directoryUri" to directoryUri,
|
||||
"files" to files.map { it.toMap() }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
data class FileInfo(
|
||||
val name: String,
|
||||
val size: Long,
|
||||
val uri: String,
|
||||
val lastModified: Long
|
||||
) {
|
||||
fun toMap(): Map<String, Any> {
|
||||
return mapOf(
|
||||
"name" to name,
|
||||
"size" to size,
|
||||
"uri" to uri,
|
||||
"lastModified" to lastModified
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,101 @@
|
||||
package org.localsend.localsend_app
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.ActivityManager
|
||||
import android.app.PendingIntent
|
||||
import android.content.Intent
|
||||
import android.graphics.drawable.Icon
|
||||
import android.os.Build
|
||||
import android.service.quicksettings.TileService
|
||||
import android.util.Log
|
||||
import androidx.annotation.RequiresApi
|
||||
|
||||
/**
|
||||
* Service used to launch the app as a quick tile from the top/status bar
|
||||
* @see https://dev.to/djsmk123/fluttercreate-custom-quick-title-android-only-3ehp
|
||||
* @see https://github.com/ProtonVPN/android-app/blob/2290b3c6b8b5ded339d69ec7c12e15acbb4b4b3d/app/src/main/java/com/protonvpn/android/components/QuickTileService.kt#L171
|
||||
*/
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
class QuickTileService : TileService() {
|
||||
override fun onClick() {
|
||||
super.onClick()
|
||||
|
||||
launchApp()
|
||||
}
|
||||
|
||||
|
||||
|
||||
override fun onStartListening() {
|
||||
super.onStartListening()
|
||||
setupIcon()
|
||||
}
|
||||
|
||||
private fun setupIcon() {
|
||||
// The tile is only available between `onStartListening` and
|
||||
// `onStopListening`, so we ensure the tile is available
|
||||
if (qsTile == null) {
|
||||
return
|
||||
}
|
||||
|
||||
qsTile.icon =
|
||||
Icon.createWithResource(this, R.mipmap.ic_launcher_quicktile_foreground)
|
||||
qsTile.label = packageManager.getApplicationLabel(application.applicationInfo)
|
||||
qsTile.updateTile()
|
||||
}
|
||||
|
||||
@SuppressLint("StartActivityAndCollapseDeprecated")
|
||||
private fun launchApp() {
|
||||
try{
|
||||
val launchIntent = getLaunchIntent()
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
|
||||
// Starting from `Build.VERSION_CODES.UPSIDE_DOWN_CAKE` we can
|
||||
// no longer start and collapse an Intent. We need to use a
|
||||
// PendingIntent instead.
|
||||
//
|
||||
// The request code can be used to identify the pending intent
|
||||
// request if needed. We don't, hence the 0.
|
||||
//
|
||||
// The launch intent used for the tile doesn't need any data
|
||||
// thus we mark it as immutable to ensure maximal reuse.
|
||||
startActivityAndCollapse(
|
||||
PendingIntent.getActivity(this, 0, launchIntent,
|
||||
PendingIntent.FLAG_IMMUTABLE)
|
||||
)
|
||||
} else {
|
||||
// For any version below `Build.VERSION_CODES.UPSIDE_DOWN_CAKE`
|
||||
// we can simply start the intent directly.
|
||||
startActivityAndCollapse(launchIntent)
|
||||
}
|
||||
}
|
||||
catch (e:Exception){
|
||||
Log.w(this.javaClass.toString(),"Exception $e")
|
||||
}
|
||||
}
|
||||
|
||||
private fun getLaunchIntent(): Intent {
|
||||
// Getting the launch intent from the package manager is the optimal
|
||||
// way to get the proper intent to launch the app.
|
||||
val cleanIntent = packageManager.getLaunchIntentForPackage(packageName)
|
||||
|
||||
return if (cleanIntent != null) {
|
||||
cleanIntent
|
||||
} else {
|
||||
// If we can't get the launch intent from the PM, then we default
|
||||
// back to creating one by instantiating the app intent ourself.
|
||||
val dirtyIntent = MainActivity.createDefaultIntent(this)
|
||||
dirtyIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
dirtyIntent
|
||||
}
|
||||
}
|
||||
|
||||
private fun appIsAlreadyRunning(): Boolean {
|
||||
val info = ActivityManager.RunningAppProcessInfo()
|
||||
ActivityManager.getMyMemoryState(info)
|
||||
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
|
||||
info.importance != ActivityManager.RunningAppProcessInfo.IMPORTANCE_CACHED
|
||||
} else {
|
||||
info.importance != ActivityManager.RunningAppProcessInfo.IMPORTANCE_BACKGROUND
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 3.2 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.9 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 4.6 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 7.5 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
@@ -5,6 +5,7 @@
|
||||
<!-- Show a splash screen on the activity. Automatically removed when
|
||||
the Flutter engine draws its first frame -->
|
||||
<item name="android:windowBackground">@drawable/launch_background</item>
|
||||
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
|
||||
</style>
|
||||
<!-- Theme applied to the Android Window as soon as the process has started.
|
||||
This theme determines the color of the Android Window while your
|
||||
@@ -14,5 +15,6 @@
|
||||
This Theme is only used starting with V2 of Flutter's Android embedding. -->
|
||||
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
|
||||
<item name="android:windowBackground">?android:colorBackground</item>
|
||||
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
|
||||
</style>
|
||||
</resources>
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
<!-- Show a splash screen on the activity. Automatically removed when
|
||||
the Flutter engine draws its first frame -->
|
||||
<item name="android:windowBackground">@drawable/launch_background</item>
|
||||
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
|
||||
</style>
|
||||
<!-- Theme applied to the Android Window as soon as the process has started.
|
||||
This theme determines the color of the Android Window while your
|
||||
@@ -14,5 +15,6 @@
|
||||
This Theme is only used starting with V2 of Flutter's Android embedding. -->
|
||||
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
|
||||
<item name="android:windowBackground">?android:colorBackground</item>
|
||||
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
|
||||
</style>
|
||||
</resources>
|
||||
|
||||
+16
-13
@@ -1,16 +1,3 @@
|
||||
buildscript {
|
||||
ext.kotlin_version = '1.8.21'
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:7.2.0'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
}
|
||||
}
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
google()
|
||||
@@ -22,6 +9,22 @@ rootProject.buildDir = '../build'
|
||||
subprojects {
|
||||
project.buildDir = "${rootProject.buildDir}/${project.name}"
|
||||
}
|
||||
|
||||
// temporary fix to keep using device_apps
|
||||
// https://stackoverflow.com/questions/69033022/message-error-resource-androidattr-lstar-not-found
|
||||
subprojects {
|
||||
afterEvaluate { project ->
|
||||
if (project.plugins.hasPlugin("com.android.application") ||
|
||||
project.plugins.hasPlugin("com.android.library")) {
|
||||
project.android {
|
||||
compileSdkVersion 34
|
||||
buildToolsVersion "34.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
subprojects {
|
||||
project.evaluationDependsOn(':app')
|
||||
}
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
org.gradle.jvmargs=-Xmx1536M
|
||||
org.gradle.jvmargs=-Xmx4g -Xms1g
|
||||
android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
|
||||
+1
-1
@@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-all.zip
|
||||
|
||||
@@ -1,11 +1,25 @@
|
||||
include ':app'
|
||||
pluginManagement {
|
||||
def flutterSdkPath = {
|
||||
def properties = new Properties()
|
||||
file("local.properties").withInputStream { properties.load(it) }
|
||||
def flutterSdkPath = properties.getProperty("flutter.sdk")
|
||||
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
|
||||
return flutterSdkPath
|
||||
}()
|
||||
|
||||
def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
|
||||
def properties = new Properties()
|
||||
includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
|
||||
|
||||
assert localPropertiesFile.exists()
|
||||
localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
gradlePluginPortal()
|
||||
}
|
||||
}
|
||||
|
||||
def flutterSdkPath = properties.getProperty("flutter.sdk")
|
||||
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
|
||||
apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
|
||||
plugins {
|
||||
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
|
||||
id "com.android.application" version "8.7.3" apply false
|
||||
id "org.jetbrains.kotlin.android" version "2.1.0" apply false
|
||||
}
|
||||
|
||||
include ":app"
|
||||
|
||||
@@ -1,3 +1,136 @@
|
||||
## unreleased
|
||||
|
||||
- feat(windows): add LocalSend to Windows Share Sheet (@chenxdust, https://github.com/localsend/localsend/pull/2555)
|
||||
- feat: enable starting text share via command line using `--text` or `-t` flags (@guilhermetiscoski, https://github.com/localsend/localsend/pull/2661)
|
||||
- feat(android): add quick settings tile for instant app launch (@Voltra, https://github.com/localsend/localsend/pull/2676)
|
||||
- feat(android, ios, macos): respect system-wide animation preferences on first app startup (@nitheesh-daram, https://github.com/localsend/localsend/pull/2338)
|
||||
- feat: improve remaining time formatting for long transfers (@ShlomoCode, https://github.com/localsend/localsend/pull/2765)
|
||||
- feat: change duplicate file naming from "file-1.txt" to "file (1).txt" format (@kartoshka95, https://github.com/localsend/localsend/pull/2455)
|
||||
- feat(macos): implement button to quickly open firewall settings from troubleshoot page (@ShlomoCode, https://github.com/localsend/localsend/pull/2775)
|
||||
- feat(macos): add Command+Comma shortcut to open settings (@ShlomoCode, https://github.com/localsend/localsend/pull/2715)
|
||||
- feat(macos): use user-friendly ComputerName instead of the technical hostname (@ShlomoCode, https://github.com/localsend/localsend/pull/2729)
|
||||
- feat(linux): use native window decorations instead of large GTK3 headerbar (@nixigaj, https://github.com/localsend/localsend/pull/2360)
|
||||
- fix(macos): prevent Dock icon from briefly appearing during autostart when "Start hidden" is enabled (@ShlomoCode, https://github.com/localsend/localsend/pull/2449)
|
||||
- feat(macos): enable Dock icon text-drop even when the app is not running (@ShlomoCode, https://github.com/localsend/localsend/pull/2712)
|
||||
- feat(macos): borderless window design (@ReallLucky, https://github.com/localsend/localsend/pull/2416)
|
||||
- feat(macos): enable Hardened Runtime for the Mac App Store version as well to improve security (@ShlomoCode, https://github.com/localsend/localsend/pull/2716)
|
||||
- fix(macos): Dock icon drag-and-drop and Share Extension working again (@ShlomoCode, https://github.com/localsend/localsend/pull/2711)
|
||||
- fix(android): files not downloading when using "Share via link" (@ShlomoCode, https://github.com/localsend/localsend/pull/2756)
|
||||
- fix(ios, android): prevent transfer error by saving unsupported media formats to folder instead of gallery (@ShlomoCode, https://github.com/localsend/localsend/pull/2766)
|
||||
- fix: release wake lock after file transfer completes to allow device sleep (@kartoshka95, https://github.com/localsend/localsend/pull/2457)
|
||||
- fix(android): preserve location metadata when sharing media (@ShlomoCode, https://github.com/localsend/localsend/pull/2742)
|
||||
- fix: text message content displayed three times in history dialog (@ew-sirenko, https://github.com/localsend/localsend/pull/2296)
|
||||
- fix: text message content size calculation (@ew-sirenko, https://github.com/localsend/localsend/pull/2297)
|
||||
- fix(linux): add CJK font support for Chinese, Japanese, and Korean text (@Mr-Ebonycat, https://github.com/localsend/localsend/pull/2719)
|
||||
- fix: save DNG files to image gallery (@ShlomoCode, https://github.com/localsend/localsend/pull/2728)
|
||||
|
||||
## 1.17.0 (2025-02-19)
|
||||
|
||||
- feat: add advanced setting to filter network interfaces (@Tienisto)
|
||||
- feat(mobile): swipe gesture to select multiple media files (@Tienisto)
|
||||
- feat(windows): when pasting an image, automatically convert it to PNG (@BrianMwit)
|
||||
- feat(android): add option to open gallery when image/video was automatically saved (@Tienisto)
|
||||
- fix: path traversal vulnerability when saving files (@Tienisto)
|
||||
- fix: black screen when tapping on "Back" twice in "Share via link" (@Tienisto)
|
||||
- fix(macos): window disappears on command key when minimize to tray is enabled (@Tienisto)
|
||||
- fix(windows): do not poll local IP resulting in unwanted location permissions (@Tienisto)
|
||||
|
||||
## 1.16.2 (2024-11-06)
|
||||
|
||||
- fix(ios): share from other apps to LocalSend doesn't work in iOS 18 (@Tienisto)
|
||||
|
||||
## 1.16.1 (2024-11-05)
|
||||
|
||||
- feat: show exact error message when using IP address dialog or favorite dialog (@Tienisto)
|
||||
- feat(desktop): highlight file when tapping "Show in folder" (@Tienisto)
|
||||
- fix(android): properly close app on back gesture (@Tienisto)
|
||||
|
||||
## 1.16.0 (2024-11-03)
|
||||
|
||||
- feat: improve transfer speed if the sending device is the bottleneck by using Rust as HTTP client and multithreading (@Tienisto)
|
||||
- feat: add option to automatically receive files only from favorites (@Davte)
|
||||
- feat: only automatically finish when files are either successfully received or skipped (@Tienisto)
|
||||
- feat: improve various padding and spacing issues in RTL languages (@ShlomoCode)
|
||||
- feat: persist "advanced settings" toggle (@Nolle10)
|
||||
- feat: add alias-regeneration button and alias update dialog (@Nolle10)
|
||||
- feat(macos): drag-and-drop files and text into menu bar icon (@ShlomoCode)
|
||||
- feat(macos): drag-and-drop text into the app icon (@ShlomoCode)
|
||||
- feat(macos): include LocalSend as a share target in the share menu (@ShlomoCode)
|
||||
- feat(macos): starts hidden in menu bar instead of being minimized when autostart is enabled (@ShlomoCode)
|
||||
- feat(macos): show error and success state in the app icon (@ShlomoCode, @Tienisto)
|
||||
- feat(macos): also have autostart option in sandboxed version (App Store) (@ShlomoCode)
|
||||
- feat(macos): LocalSend installed via dmg installer is sandboxed (@Tienisto)
|
||||
- feat(android): enable clipboard button (@Seidko)
|
||||
- feat(ios): enable clipboard button (@AnessZurba)
|
||||
- fix(macos): reopen app from launchpad after minimizing to menu bar should make window visible (@ShlomoCode)
|
||||
- fix(macos): persist write access to download location after app restart (@ShlomoCode)
|
||||
- i18n: add Malaysian (@Gloridust), Slovak (@dodog)
|
||||
|
||||
## 1.15.4 (2024-08-20)
|
||||
|
||||
- feat: add button to retry a failed file transfer (@Tienisto)
|
||||
- feat: show tooltip on the "Scan" button (@Tienisto)
|
||||
- feat: treat any URI as link, so it becomes clickable on receiver (e.g. file://, obsidian://) (@Tienisto)
|
||||
- feat(mobile): adjust button width in send tab to indicate that it's scrollable (@Tienisto)
|
||||
- feat(windows): title bar color should match the system theme (@FutoTan)
|
||||
- fix: memory leak when sending files (regression in 1.15.0, 1.15.2 only fixed receiving files) (@Tienisto)
|
||||
- fix(windows): LocalSend window is invisible at app start (@Tienisto)
|
||||
- i18n: distinguish between "Exit" and "Quit" depending on the platform (@sergd88)
|
||||
- i18n: add Hindi (@rishi-singh26)
|
||||
|
||||
## 1.15.3 (2024-07-29)
|
||||
|
||||
- feat: reduce receive history length to 30 items to increase performance (@Tienisto)
|
||||
- feat: show error message when initialization fails for better debugging (@Tienisto)
|
||||
- fix(android): properly close app on back gesture (@Tienisto)
|
||||
|
||||
## 1.15.2 (2024-07-25)
|
||||
|
||||
- feat: extract network scanning to separate threads, scanning should not cause UI lags anymore (@Tienisto)
|
||||
- feat(windows): use bigger icon for the installer (@Tienisto)
|
||||
- fix: memory leak when receiving files, properly receive files that exceed available RAM (@Tienisto)
|
||||
- fix(android): save files outside of Download folder (@Tienisto)
|
||||
- fix(windows): use correct portable settings file when started via autostart (@Tienisto)
|
||||
- fix(windows): make installer work on arm64 (@Tienisto)
|
||||
|
||||
## 1.15.1 (2024-07-18)
|
||||
|
||||
- feat: support Internet Explorer 8 (IE8) in web share (@Tienisto)
|
||||
- feat: save auto accept state when switching encryption mode in web share (@Tienisto)
|
||||
- feat: switch to "Send" tab when pasting via keyboard shortcut (@Tienisto)
|
||||
- fix: count PIN tries correctly in web share (@Tienisto)
|
||||
- fix(android): crash when picking files or folders on Android TV (@Tienisto)
|
||||
- fix(windows): crash when sum of file sizes is greater than 2 GB (@Tienisto)
|
||||
- fix(windows): bundle required DLL files to avoid crash on app start (@Tienisto)
|
||||
- fix(macos): hide autostart option when installed via App Store because this switch is not working (@Tienisto)
|
||||
|
||||
## 1.15.0 (2024-07-15)
|
||||
|
||||
- feat: add clear button in the send tab (@Caesarovich)
|
||||
- feat: save text messages to history (@Tienisto)
|
||||
- feat: keep timestamps of transferred files (@Tienisto)
|
||||
- feat: add option to require PIN when sharing via link (@Tienisto)
|
||||
- feat: add option to require PIN when receiving files (@Tienisto)
|
||||
- feat: add option to open parent folder of received files in history (@Tienisto)
|
||||
- feat: confirm before adding or removing favorites in the nearby devices list (@Tienisto)
|
||||
- feat: add URL view when sharing via link that shows the URL in bigger font (@harriseldon)
|
||||
- feat: add discovery timeout setting for advanced users (@o2e)
|
||||
- feat(android): do not require MANAGE_EXTERNAL_STORAGE, implement Android SAF (@Tienisto)
|
||||
- feat(android): do not copy files to cache when select via file picker (@Tienisto)
|
||||
- feat(windows): add context menu integration ("Send to") (@Tienisto)
|
||||
- feat(windows): toggle "start hidden" in-app instead of referring to the system settings (@Tienisto)
|
||||
- feat(desktop): make auto start + start hidden more stable, now listens to `--hidden` parameter instead of `autostart` (@Tienisto)
|
||||
- feat(desktop): load initial files from command line arguments (@Tienisto)
|
||||
- feat(desktop): show progress in the taskbar (@NightFeather0615)
|
||||
- feat(macos): handle files that were dropped into the app icon (@Tienisto)
|
||||
- fix: sanitize file names with invalid characters (@Caesarovich)
|
||||
- fix: UI overflow when window height is too small (@CHUNG-HAO)
|
||||
- fix(ios): make documents files visible to the Finder / AppleDevices app (@twinkles-twinstar)
|
||||
- fix(windows): correctly remove tray icon when closing the app (@zpp0196)
|
||||
- fix(windows): don't keep file open (@NightFeather0615)
|
||||
- fix(linux): compatibility with newer libayatana versions (@ix5)
|
||||
- i18n: add Serbian (@nebojsatomic), Finnish (@jooapa), Romanian (@UnifeGi)
|
||||
|
||||
## 1.14.0 (2024-02-26)
|
||||
|
||||
- feat: add option to automatically accept requests when sharing via link (@MisterChangRay, @Tienisto)
|
||||
|
||||
@@ -2,14 +2,5 @@
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <ar>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=ar' to quickly apply the newly added translations."
|
||||
],
|
||||
"settingsTab": {
|
||||
"send": {
|
||||
"title": "Send",
|
||||
"shareViaLinkAutoAccept": "Share via link: Auto accept"
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"autoAccept": "Automatically accept requests"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,341 @@
|
||||
{
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <az>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=az' to quickly apply the newly added translations."
|
||||
],
|
||||
"settingsTab": {
|
||||
"receive": {
|
||||
"requirePin": "@:webSharePage.requirePin",
|
||||
"destination": "Save to folder",
|
||||
"downloads": "(Downloads)",
|
||||
"saveToGallery": "Save media to gallery",
|
||||
"saveToHistory": "Save to history"
|
||||
},
|
||||
"send": {
|
||||
"title": "Send",
|
||||
"shareViaLinkAutoAccept": "Automatically accept requests in \"Share via link\" mode"
|
||||
},
|
||||
"network": {
|
||||
"title": "Network",
|
||||
"needRestart": "Restart the server to apply the settings!",
|
||||
"server": "Server",
|
||||
"alias": "Device name",
|
||||
"deviceType": "Device type",
|
||||
"deviceModel": "Device model",
|
||||
"port": "Port",
|
||||
"network": "Network",
|
||||
"networkOptions": {
|
||||
"all": "All",
|
||||
"filtered": "Filtered"
|
||||
},
|
||||
"discoveryTimeout": "Discovery Timeout",
|
||||
"useSystemName": "Use system name",
|
||||
"generateRandomAlias": "Generate random alias",
|
||||
"portWarning": "You might not be detected by other devices because you are using a custom port. (default: {defaultPort})",
|
||||
"encryption": "Encryption",
|
||||
"multicastGroup": "Multicast address",
|
||||
"multicastGroupWarning": "You might not be detected by other devices because you are using a custom multicast address. (default: {defaultMulticast})"
|
||||
},
|
||||
"other": {
|
||||
"title": "Other",
|
||||
"support": "Support LocalSend",
|
||||
"donate": "Donate",
|
||||
"privacyPolicy": "Privacy Policy",
|
||||
"termsOfUse": "Terms of Use"
|
||||
},
|
||||
"advancedSettings": "Advanced settings"
|
||||
},
|
||||
"troubleshootPage": {
|
||||
"title": "Troubleshoot",
|
||||
"subTitle": "Does the app not work as expected? Here you can find some common solutions to problems.",
|
||||
"solution": "Solution:",
|
||||
"fixButton": "Fix automatically",
|
||||
"firewall": {
|
||||
"symptom": "This device can send files to other devices but other devices cannot send files to this device.",
|
||||
"solution": "This is most likely a firewall issue. You can solve this by allowing incoming connections (UDP and TCP) on port {port}.",
|
||||
"openFirewall": "Open Firewall"
|
||||
},
|
||||
"noDiscovery": {
|
||||
"symptom": "This device cannot discover other devices.",
|
||||
"solution": "Please make sure that all devices are on the same Wi-Fi network and share the same configuration (port, multicast address, encryption). You can try to type the IP address of the target device manually. If this works, consider adding this device to the favorites so it can be automatically discovered in the future."
|
||||
},
|
||||
"noConnection": {
|
||||
"symptom": "Both devices cannot discover each other nor can they share files.",
|
||||
"solution": "Does the problem exist on both sides? If so, you need to make sure that both devices are on the same Wi-Fi network and share the same configuration (port, multicast address, encryption). The Wi-Fi network may not allow communication between participants due to Access Point (AP) Isolation. In this case, this option must be disabled on the router."
|
||||
}
|
||||
},
|
||||
"networkInterfacesPage": {
|
||||
"title": "Network Interfaces",
|
||||
"info": "By default, LocalSend uses all available network interfaces. You can exclude unwanted networks here. You need to restart the server to apply the changes.",
|
||||
"preview": "Preview",
|
||||
"whitelist": "Whitelist",
|
||||
"blacklist": "Blacklist"
|
||||
},
|
||||
"receiveHistoryPage": {
|
||||
"title": "History",
|
||||
"openFolder": "Open folder",
|
||||
"deleteHistory": "Delete history",
|
||||
"empty": "The history is empty.",
|
||||
"entryActions": {
|
||||
"open": "Open file",
|
||||
"showInFolder": "Show in folder",
|
||||
"info": "Information",
|
||||
"deleteFromHistory": "Delete from history"
|
||||
}
|
||||
},
|
||||
"apkPickerPage": {
|
||||
"title": "Apps (APK)",
|
||||
"excludeSystemApps": "Exclude system apps",
|
||||
"excludeAppsWithoutLaunchIntent": "Exclude non-launchable apps",
|
||||
"apps": "{n} Apps"
|
||||
},
|
||||
"selectedFilesPage": {
|
||||
"deleteAll": "Delete all"
|
||||
},
|
||||
"receivePage": {
|
||||
"subTitle": {
|
||||
"one": "wants to send you a file",
|
||||
"other": "wants to send you {n} files"
|
||||
},
|
||||
"subTitleMessage": "sent you a message:",
|
||||
"subTitleLink": "sent you a link:",
|
||||
"canceled": "The sender has canceled the request."
|
||||
},
|
||||
"receiveOptionsPage": {
|
||||
"title": "Options",
|
||||
"destination": "@:settingsTab.receive.destination",
|
||||
"appDirectory": "(LocalSend folder)",
|
||||
"saveToGallery": "@:settingsTab.receive.saveToGallery",
|
||||
"saveToGalleryOff": "Turned off automatically because there are folders."
|
||||
},
|
||||
"sendPage": {
|
||||
"waiting": "Waiting for response…",
|
||||
"rejected": "The recipient has rejected the request.",
|
||||
"tooManyAttempts": "@:web.tooManyAttempts",
|
||||
"busy": "The recipient is busy with another request."
|
||||
},
|
||||
"progressPage": {
|
||||
"titleSending": "Sending files",
|
||||
"titleReceiving": "Receiving files",
|
||||
"savedToGallery": "Saved in Photos",
|
||||
"total": {
|
||||
"title": {
|
||||
"sending": "Total progress ({time})",
|
||||
"finishedError": "Finished with error",
|
||||
"canceledSender": "Canceled by sender",
|
||||
"canceledReceiver": "Canceled by receiver"
|
||||
},
|
||||
"count": "Files: {curr} / {n}",
|
||||
"size": "Size: {curr} / {n}",
|
||||
"speed": "Speed: {speed}/s"
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"title": "Share via link",
|
||||
"loading": "Starting server…",
|
||||
"stopping": "Stopping server…",
|
||||
"error": "An error occurred while starting the server.",
|
||||
"openLink": {
|
||||
"one": "Open this link in your browser:",
|
||||
"other": "Open one of these links in your browser:"
|
||||
},
|
||||
"requests": "Requests",
|
||||
"noRequests": "No requests yet.",
|
||||
"encryption": "@:settingsTab.network.encryption",
|
||||
"autoAccept": "Automatically accept requests",
|
||||
"requirePin": "Require PIN",
|
||||
"pinHint": "The PIN is \"{pin}\"",
|
||||
"encryptionHint": "LocalSend uses a self-signed certificate. You need to accept it in your browser.",
|
||||
"pendingRequests": "Pending requests: {n}"
|
||||
},
|
||||
"aboutPage": {
|
||||
"title": "About LocalSend",
|
||||
"description": [
|
||||
"LocalSend is a free, open-source app that allows you to securely share files and messages with nearby devices over your local network without needing an internet connection.",
|
||||
"This app is available on Android, iOS, macOS, Windows and Linux. You can find all download options on the official homepage."
|
||||
],
|
||||
"author": "Author",
|
||||
"contributors": "Contributors",
|
||||
"packagers": "Packagers",
|
||||
"translators": "Translators"
|
||||
},
|
||||
"donationPage": {
|
||||
"title": "Donate",
|
||||
"info": "LocalSend is free, open-source and without any ads. If you like the app, you can support the development with a donation.",
|
||||
"donate": "Donate {amount}",
|
||||
"thanks": "Thank you very much!",
|
||||
"restore": "Restore purchase"
|
||||
},
|
||||
"changelogPage": {
|
||||
"title": "Changelog"
|
||||
},
|
||||
"dialogs": {
|
||||
"addFile": {
|
||||
"title": "Add to selection",
|
||||
"content": "What do you want to add?"
|
||||
},
|
||||
"openFile": {
|
||||
"title": "Open file",
|
||||
"content": "Do you want to open the received file?"
|
||||
},
|
||||
"addressInput": {
|
||||
"title": "Enter address",
|
||||
"hashtag": "Hashtag",
|
||||
"ip": "IP Address",
|
||||
"recentlyUsed": "Recently used: "
|
||||
},
|
||||
"cancelSession": {
|
||||
"title": "Cancel files transfer",
|
||||
"content": "Do you really want to cancel the files transfer?"
|
||||
},
|
||||
"cannotOpenFile": {
|
||||
"title": "Cannot open file",
|
||||
"content": "Could not open \"{file}\". Has this file been moved, renamed or deleted?"
|
||||
},
|
||||
"encryptionDisabledNotice": {
|
||||
"title": "Encryption disabled",
|
||||
"content": "Communication now takes place via the unencrypted HTTP protocol. To use HTTPS protocol, enable encryption again."
|
||||
},
|
||||
"errorDialog": {
|
||||
"title": "@:general.error"
|
||||
},
|
||||
"favoriteDialog": {
|
||||
"title": "Favorites",
|
||||
"noFavorites": "No favorite devices yet.",
|
||||
"addFavorite": "Add"
|
||||
},
|
||||
"favoriteDeleteDialog": {
|
||||
"title": "Delete from favorites",
|
||||
"content": "Do you really want to delete from favorites \"{name}\"?"
|
||||
},
|
||||
"favoriteEditDialog": {
|
||||
"titleAdd": "Add to favorites",
|
||||
"titleEdit": "Settings",
|
||||
"name": "Device name",
|
||||
"auto": "(auto)",
|
||||
"ip": "IP Address",
|
||||
"port": "Port"
|
||||
},
|
||||
"fileInfo": {
|
||||
"title": "File information",
|
||||
"fileName": "File name:",
|
||||
"path": "Path:",
|
||||
"size": "Size:",
|
||||
"sender": "Sender:",
|
||||
"time": "Time:"
|
||||
},
|
||||
"fileNameInput": {
|
||||
"title": "Enter file name",
|
||||
"original": "Original: {original}"
|
||||
},
|
||||
"historyClearDialog": {
|
||||
"title": "Clear history",
|
||||
"content": "Do you really want to delete the entire history?"
|
||||
},
|
||||
"localNetworkUnauthorized": {
|
||||
"title": "@:dialogs.noPermission.title",
|
||||
"description": "LocalSend can't find other devices without having the permission to scan the local network. Please grant this permission in the settings.",
|
||||
"gotoSettings": "Settings"
|
||||
},
|
||||
"messageInput": {
|
||||
"title": "Type message",
|
||||
"multiline": "Multiline"
|
||||
},
|
||||
"noFiles": {
|
||||
"title": "No files selected",
|
||||
"content": "Please select at least one file."
|
||||
},
|
||||
"noPermission": {
|
||||
"title": "No permission",
|
||||
"content": "You have not granted the necessary permissions. Please grant them in the settings."
|
||||
},
|
||||
"notAvailableOnPlatform": {
|
||||
"title": "Not available",
|
||||
"content": "This feature is only available on:"
|
||||
},
|
||||
"qr": {
|
||||
"title": "QR Code"
|
||||
},
|
||||
"quickActions": {
|
||||
"title": "Quick Actions",
|
||||
"counter": "Counter",
|
||||
"prefix": "Prefix",
|
||||
"padZero": "Pad with zeros",
|
||||
"sortBeforeCount": "Sort alphabetically beforehand (A-Z)",
|
||||
"random": "Random"
|
||||
},
|
||||
"quickSaveNotice": {
|
||||
"title": "@:general.quickSave",
|
||||
"content": "File requests are now accepted automatically. Be aware that everyone on the local network can send you files."
|
||||
},
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"title": "@:general.quickSaveFromFavorites",
|
||||
"content": [
|
||||
"File requests are now accepted automatically from devices in your favorites list.",
|
||||
"Warning! Currently, this is not entirely secure, as a hacker who has the fingerprint of any device from your favorites list can send you files without restriction.",
|
||||
"However, this option is still safer than allowing all users on the local network to send you files without restriction."
|
||||
]
|
||||
},
|
||||
"pin": {
|
||||
"title": "Enter PIN"
|
||||
},
|
||||
"sendModeHelp": {
|
||||
"title": "Send modes",
|
||||
"single": "Sends files to one recipient. Selection will be cleared after finished files transfer.",
|
||||
"multiple": "Sends files to multiple recipients. Selection will not be cleared after finished files transfer.",
|
||||
"link": "Recipients who do not have LocalSend installed can download the selected files by opening the link in their browser."
|
||||
},
|
||||
"zoom": {
|
||||
"title": "URL"
|
||||
}
|
||||
},
|
||||
"sanitization": {
|
||||
"empty": "Filename cannot be empty",
|
||||
"invalid": "Filename contains invalid characters"
|
||||
},
|
||||
"tray": {
|
||||
"open": "@:general.open",
|
||||
"close": "Quit LocalSend",
|
||||
"closeWindows": "Exit"
|
||||
},
|
||||
"web": {
|
||||
"waiting": "@:sendPage.waiting",
|
||||
"enterPin": "Enter PIN",
|
||||
"invalidPin": "Invalid PIN",
|
||||
"tooManyAttempts": "Too many attempts",
|
||||
"rejected": "Rejected",
|
||||
"files": "Files",
|
||||
"fileName": "File name",
|
||||
"size": "Size"
|
||||
},
|
||||
"assetPicker": {
|
||||
"confirm": "Confirm",
|
||||
"cancel": "Cancel",
|
||||
"edit": "Edit",
|
||||
"gifIndicator": "GIF",
|
||||
"loadFailed": "Load failed",
|
||||
"original": "Origin",
|
||||
"preview": "Preview",
|
||||
"select": "Select",
|
||||
"emptyList": "Empty list",
|
||||
"unSupportedAssetType": "Unsupported file type.",
|
||||
"unableToAccessAll": "Unable to access all files on the device",
|
||||
"viewingLimitedAssetsTip": "Only view files and albums accessible to the app.",
|
||||
"changeAccessibleLimitedAssets": "Click to update accessible files",
|
||||
"accessAllTip": "App can only access some files on the device. Go to system settings and allow the app to access all media on the device.",
|
||||
"goToSystemSettings": "Go to system settings",
|
||||
"accessLimitedAssets": "Continue with limited access",
|
||||
"accessiblePathName": "Accessible files",
|
||||
"sTypeAudioLabel": "Audio",
|
||||
"sTypeImageLabel": "Image",
|
||||
"sTypeVideoLabel": "Video",
|
||||
"sTypeOtherLabel": "Other media",
|
||||
"sActionPlayHint": "play",
|
||||
"sActionPreviewHint": "preview",
|
||||
"sActionSelectHint": "select",
|
||||
"sActionSwitchPathLabel": "change path",
|
||||
"sActionUseCameraHint": "use camera",
|
||||
"sNameDurationLabel": "duration",
|
||||
"sUnitAssetCountLabel": "count"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <bg>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=bg' to quickly apply the newly added translations."
|
||||
]
|
||||
}
|
||||
@@ -2,14 +2,5 @@
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <bn>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=bn' to quickly apply the newly added translations."
|
||||
],
|
||||
"settingsTab": {
|
||||
"send": {
|
||||
"title": "Send",
|
||||
"shareViaLinkAutoAccept": "Share via link: Auto accept"
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"autoAccept": "Automatically accept requests"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -3,76 +3,40 @@
|
||||
"Here are translations that exist in <en> but not in <ca>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=ca' to quickly apply the newly added translations."
|
||||
],
|
||||
"general": {
|
||||
"delete": "Delete",
|
||||
"noItemInClipboard": "No items in Clipboard"
|
||||
},
|
||||
"sendTab": {
|
||||
"picker": {
|
||||
"clipboard": "Paste"
|
||||
"receiveTab": {
|
||||
"quickSave": {
|
||||
"off": "@:general.off",
|
||||
"favorites": "Favorites",
|
||||
"on": "@:general.on"
|
||||
}
|
||||
},
|
||||
"settingsTab": {
|
||||
"general": {
|
||||
"colorOptions": {
|
||||
"oled": "OLED"
|
||||
"network": {
|
||||
"network": "Network",
|
||||
"networkOptions": {
|
||||
"all": "All",
|
||||
"filtered": "Filtered"
|
||||
}
|
||||
},
|
||||
"receive": {
|
||||
"autoFinish": "Auto Finish"
|
||||
},
|
||||
"send": {
|
||||
"title": "Send",
|
||||
"shareViaLinkAutoAccept": "Share via link: Auto accept"
|
||||
},
|
||||
"other": {
|
||||
"title": "Other",
|
||||
"support": "Support LocalSend",
|
||||
"donate": "Donate",
|
||||
"privacyPolicy": "Privacy Policy",
|
||||
"termsOfUse": "Terms of Use"
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"autoAccept": "Automatically accept requests"
|
||||
},
|
||||
"aboutPage": {
|
||||
"description": [
|
||||
"LocalSend is a free, open-source app that allows you to securely share files and messages with nearby devices over your local network without needing an internet connection.",
|
||||
"This app is available on Android, iOS, macOS, Windows and Linux. You can find all download options on the official homepage."
|
||||
],
|
||||
"author": "Author",
|
||||
"contributors": "Contributors",
|
||||
"translators": "Translators"
|
||||
},
|
||||
"donationPage": {
|
||||
"title": "Donate",
|
||||
"info": "LocalSend is free, open-source and without any ads. If you like the app, you can support the development with a donation.",
|
||||
"donate": "Donate {amount}",
|
||||
"thanks": "Thank you very much!",
|
||||
"restore": "Restore purchase"
|
||||
"networkInterfacesPage": {
|
||||
"title": "Network Interfaces",
|
||||
"info": "By default, LocalSend uses all available network interfaces. You can exclude unwanted networks here. You need to restart the server to apply the changes.",
|
||||
"preview": "Preview",
|
||||
"whitelist": "Whitelist",
|
||||
"blacklist": "Blacklist"
|
||||
},
|
||||
"dialogs": {
|
||||
"favoriteDialog": {
|
||||
"title": "Favorites",
|
||||
"noFavorites": "No favorite devices yet.",
|
||||
"addFavorite": "Add"
|
||||
"openFile": {
|
||||
"title": "Open file",
|
||||
"content": "Do you want to open the received file?"
|
||||
},
|
||||
"favoriteDeleteDialog": {
|
||||
"title": "Delete from favorites",
|
||||
"content": "Do you really want to delete from favorites \"{name}\"?"
|
||||
},
|
||||
"favoriteEditDialog": {
|
||||
"titleAdd": "Add to favorites",
|
||||
"titleEdit": "Settings",
|
||||
"name": "Device name",
|
||||
"auto": "(auto)",
|
||||
"ip": "IP Address",
|
||||
"port": "Port"
|
||||
},
|
||||
"historyClearDialog": {
|
||||
"title": "Clear history",
|
||||
"content": "Do you really want to delete the entire history?"
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"content": [
|
||||
"File requests are now accepted automatically from devices in your favorites list.",
|
||||
"Warning! Currently, this is not entirely secure, as a hacker who has the fingerprint of any device from your favorites list can send you files without restriction.",
|
||||
"However, this option is still safer than allowing all users on the local network to send you files without restriction."
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,14 +2,5 @@
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <cs>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=cs' to quickly apply the newly added translations."
|
||||
],
|
||||
"settingsTab": {
|
||||
"send": {
|
||||
"title": "Send",
|
||||
"shareViaLinkAutoAccept": "Share via link: Auto accept"
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"autoAccept": "Automatically accept requests"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -3,13 +3,42 @@
|
||||
"Here are translations that exist in <en> but not in <da>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=da' to quickly apply the newly added translations."
|
||||
],
|
||||
"settingsTab": {
|
||||
"send": {
|
||||
"title": "Send",
|
||||
"shareViaLinkAutoAccept": "Share via link: Auto accept"
|
||||
"receiveTab": {
|
||||
"quickSave": {
|
||||
"off": "@:general.off",
|
||||
"favorites": "Favorites",
|
||||
"on": "@:general.on"
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"autoAccept": "Automatically accept requests"
|
||||
"settingsTab": {
|
||||
"network": {
|
||||
"network": "Network",
|
||||
"networkOptions": {
|
||||
"all": "All",
|
||||
"filtered": "Filtered"
|
||||
},
|
||||
"useSystemName": "Use system name",
|
||||
"generateRandomAlias": "Generate random alias"
|
||||
}
|
||||
},
|
||||
"networkInterfacesPage": {
|
||||
"title": "Network Interfaces",
|
||||
"info": "By default, LocalSend uses all available network interfaces. You can exclude unwanted networks here. You need to restart the server to apply the changes.",
|
||||
"preview": "Preview",
|
||||
"whitelist": "Whitelist",
|
||||
"blacklist": "Blacklist"
|
||||
},
|
||||
"dialogs": {
|
||||
"openFile": {
|
||||
"title": "Open file",
|
||||
"content": "Do you want to open the received file?"
|
||||
},
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"content": [
|
||||
"File requests are now accepted automatically from devices in your favorites list.",
|
||||
"Warning! Currently, this is not entirely secure, as a hacker who has the fingerprint of any device from your favorites list can send you files without restriction.",
|
||||
"However, this option is still safer than allowing all users on the local network to send you files without restriction."
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <en-IN>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=en-IN' to quickly apply the newly added translations."
|
||||
]
|
||||
}
|
||||
@@ -2,14 +2,5 @@
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <es-ES>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=es-ES' to quickly apply the newly added translations."
|
||||
],
|
||||
"settingsTab": {
|
||||
"send": {
|
||||
"title": "Send",
|
||||
"shareViaLinkAutoAccept": "Share via link: Auto accept"
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"autoAccept": "Automatically accept requests"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <et>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=et' to quickly apply the newly added translations."
|
||||
]
|
||||
}
|
||||
@@ -3,13 +3,42 @@
|
||||
"Here are translations that exist in <en> but not in <eu>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=eu' to quickly apply the newly added translations."
|
||||
],
|
||||
"general": {
|
||||
"quickSaveFromFavorites": "Quick Save for \"Favorites\""
|
||||
},
|
||||
"receiveTab": {
|
||||
"quickSave": {
|
||||
"off": "@:general.off",
|
||||
"favorites": "Favorites",
|
||||
"on": "@:general.on"
|
||||
}
|
||||
},
|
||||
"sendTab": {
|
||||
"manualSending": "Manual sending"
|
||||
},
|
||||
"settingsTab": {
|
||||
"general": {
|
||||
"saveWindowPlacementWindows": "Save window position after exit",
|
||||
"showInContextMenu": "Show LocalSend in context menu"
|
||||
},
|
||||
"receive": {
|
||||
"quickSaveFromFavorites": "@:general.quickSaveFromFavorites",
|
||||
"requirePin": "@:webSharePage.requirePin",
|
||||
"autoFinish": "Auto Finish"
|
||||
},
|
||||
"send": {
|
||||
"title": "Send",
|
||||
"shareViaLinkAutoAccept": "Share via link: Auto accept"
|
||||
"shareViaLinkAutoAccept": "Automatically accept requests in \"Share via link\" mode"
|
||||
},
|
||||
"network": {
|
||||
"network": "Network",
|
||||
"networkOptions": {
|
||||
"all": "All",
|
||||
"filtered": "Filtered"
|
||||
},
|
||||
"discoveryTimeout": "Discovery Timeout",
|
||||
"useSystemName": "Use system name",
|
||||
"generateRandomAlias": "Generate random alias"
|
||||
},
|
||||
"other": {
|
||||
"title": "Other",
|
||||
@@ -19,8 +48,31 @@
|
||||
"termsOfUse": "Terms of Use"
|
||||
}
|
||||
},
|
||||
"troubleshootPage": {
|
||||
"noDiscovery": {
|
||||
"symptom": "This device cannot discover other devices.",
|
||||
"solution": "Please make sure that all devices are on the same Wi-Fi network and share the same configuration (port, multicast address, encryption). You can try to type the IP address of the target device manually. If this works, consider adding this device to the favorites so it can be automatically discovered in the future."
|
||||
}
|
||||
},
|
||||
"networkInterfacesPage": {
|
||||
"title": "Network Interfaces",
|
||||
"info": "By default, LocalSend uses all available network interfaces. You can exclude unwanted networks here. You need to restart the server to apply the changes.",
|
||||
"preview": "Preview",
|
||||
"whitelist": "Whitelist",
|
||||
"blacklist": "Blacklist"
|
||||
},
|
||||
"receiveHistoryPage": {
|
||||
"entryActions": {
|
||||
"showInFolder": "Show in folder"
|
||||
}
|
||||
},
|
||||
"sendPage": {
|
||||
"tooManyAttempts": "@:web.tooManyAttempts"
|
||||
},
|
||||
"webSharePage": {
|
||||
"autoAccept": "Automatically accept requests"
|
||||
"autoAccept": "Automatically accept requests",
|
||||
"requirePin": "Require PIN",
|
||||
"pinHint": "The PIN is \"{pin}\""
|
||||
},
|
||||
"aboutPage": {
|
||||
"description": [
|
||||
@@ -29,6 +81,7 @@
|
||||
],
|
||||
"author": "Author",
|
||||
"contributors": "Contributors",
|
||||
"packagers": "Packagers",
|
||||
"translators": "Translators"
|
||||
},
|
||||
"donationPage": {
|
||||
@@ -39,9 +92,39 @@
|
||||
"restore": "Restore purchase"
|
||||
},
|
||||
"dialogs": {
|
||||
"openFile": {
|
||||
"title": "Open file",
|
||||
"content": "Do you want to open the received file?"
|
||||
},
|
||||
"historyClearDialog": {
|
||||
"title": "Clear history",
|
||||
"content": "Do you really want to delete the entire history?"
|
||||
},
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"title": "@:general.quickSaveFromFavorites",
|
||||
"content": [
|
||||
"File requests are now accepted automatically from devices in your favorites list.",
|
||||
"Warning! Currently, this is not entirely secure, as a hacker who has the fingerprint of any device from your favorites list can send you files without restriction.",
|
||||
"However, this option is still safer than allowing all users on the local network to send you files without restriction."
|
||||
]
|
||||
},
|
||||
"pin": {
|
||||
"title": "Enter PIN"
|
||||
},
|
||||
"zoom": {
|
||||
"title": "URL"
|
||||
}
|
||||
},
|
||||
"sanitization": {
|
||||
"empty": "Filename cannot be empty",
|
||||
"invalid": "Filename contains invalid characters"
|
||||
},
|
||||
"tray": {
|
||||
"closeWindows": "Exit"
|
||||
},
|
||||
"web": {
|
||||
"enterPin": "Enter PIN",
|
||||
"invalidPin": "Invalid PIN",
|
||||
"tooManyAttempts": "Too many attempts"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <fi>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=fi' to quickly apply the newly added translations."
|
||||
],
|
||||
"receiveTab": {
|
||||
"quickSave": {
|
||||
"off": "@:general.off",
|
||||
"on": "@:general.on"
|
||||
}
|
||||
},
|
||||
"settingsTab": {
|
||||
"receive": {
|
||||
"quickSaveFromFavorites": "@:general.quickSaveFromFavorites",
|
||||
"requirePin": "@:webSharePage.requirePin"
|
||||
},
|
||||
"network": {
|
||||
"network": "Network",
|
||||
"networkOptions": {
|
||||
"all": "All",
|
||||
"filtered": "Filtered"
|
||||
}
|
||||
}
|
||||
},
|
||||
"networkInterfacesPage": {
|
||||
"title": "Network Interfaces",
|
||||
"info": "By default, LocalSend uses all available network interfaces. You can exclude unwanted networks here. You need to restart the server to apply the changes.",
|
||||
"preview": "Preview",
|
||||
"whitelist": "Whitelist",
|
||||
"blacklist": "Blacklist"
|
||||
},
|
||||
"sendPage": {
|
||||
"tooManyAttempts": "@:web.tooManyAttempts"
|
||||
},
|
||||
"dialogs": {
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"title": "@:general.quickSaveFromFavorites"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,14 +2,5 @@
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <fil-PH>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=fil-PH' to quickly apply the newly added translations."
|
||||
],
|
||||
"settingsTab": {
|
||||
"send": {
|
||||
"title": "Send",
|
||||
"shareViaLinkAutoAccept": "Share via link: Auto accept"
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"autoAccept": "Automatically accept requests"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -2,14 +2,5 @@
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <fr>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=fr' to quickly apply the newly added translations."
|
||||
],
|
||||
"settingsTab": {
|
||||
"send": {
|
||||
"title": "Send",
|
||||
"shareViaLinkAutoAccept": "Share via link: Auto accept"
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"autoAccept": "Automatically accept requests"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,351 @@
|
||||
{
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <gl>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=gl' to quickly apply the newly added translations."
|
||||
],
|
||||
"settingsTab": {
|
||||
"general": {
|
||||
"launchAtStartup": "Autostart after login",
|
||||
"launchMinimized": "Autostart: Start hidden",
|
||||
"showInContextMenu": "Show LocalSend in context menu",
|
||||
"animations": "Animations"
|
||||
},
|
||||
"receive": {
|
||||
"title": "Receive",
|
||||
"quickSave": "@:general.quickSave",
|
||||
"quickSaveFromFavorites": "@:general.quickSaveFromFavorites",
|
||||
"requirePin": "@:webSharePage.requirePin",
|
||||
"autoFinish": "Auto Finish",
|
||||
"destination": "Save to folder",
|
||||
"downloads": "(Downloads)",
|
||||
"saveToGallery": "Save media to gallery",
|
||||
"saveToHistory": "Save to history"
|
||||
},
|
||||
"send": {
|
||||
"title": "Send",
|
||||
"shareViaLinkAutoAccept": "Automatically accept requests in \"Share via link\" mode"
|
||||
},
|
||||
"network": {
|
||||
"title": "Network",
|
||||
"needRestart": "Restart the server to apply the settings!",
|
||||
"server": "Server",
|
||||
"alias": "Device name",
|
||||
"deviceType": "Device type",
|
||||
"deviceModel": "Device model",
|
||||
"port": "Port",
|
||||
"network": "Network",
|
||||
"networkOptions": {
|
||||
"all": "All",
|
||||
"filtered": "Filtered"
|
||||
},
|
||||
"discoveryTimeout": "Discovery Timeout",
|
||||
"useSystemName": "Use system name",
|
||||
"generateRandomAlias": "Generate random alias",
|
||||
"portWarning": "You might not be detected by other devices because you are using a custom port. (default: {defaultPort})",
|
||||
"encryption": "Encryption",
|
||||
"multicastGroup": "Multicast address",
|
||||
"multicastGroupWarning": "You might not be detected by other devices because you are using a custom multicast address. (default: {defaultMulticast})"
|
||||
},
|
||||
"other": {
|
||||
"title": "Other",
|
||||
"support": "Support LocalSend",
|
||||
"donate": "Donate",
|
||||
"privacyPolicy": "Privacy Policy",
|
||||
"termsOfUse": "Terms of Use"
|
||||
},
|
||||
"advancedSettings": "Advanced settings"
|
||||
},
|
||||
"troubleshootPage": {
|
||||
"title": "Troubleshoot",
|
||||
"subTitle": "Does the app not work as expected? Here you can find some common solutions to problems.",
|
||||
"solution": "Solution:",
|
||||
"fixButton": "Fix automatically",
|
||||
"firewall": {
|
||||
"symptom": "This device can send files to other devices but other devices cannot send files to this device.",
|
||||
"solution": "This is most likely a firewall issue. You can solve this by allowing incoming connections (UDP and TCP) on port {port}.",
|
||||
"openFirewall": "Open Firewall"
|
||||
},
|
||||
"noDiscovery": {
|
||||
"symptom": "This device cannot discover other devices.",
|
||||
"solution": "Please make sure that all devices are on the same Wi-Fi network and share the same configuration (port, multicast address, encryption). You can try to type the IP address of the target device manually. If this works, consider adding this device to the favorites so it can be automatically discovered in the future."
|
||||
},
|
||||
"noConnection": {
|
||||
"symptom": "Both devices cannot discover each other nor can they share files.",
|
||||
"solution": "Does the problem exist on both sides? If so, you need to make sure that both devices are on the same Wi-Fi network and share the same configuration (port, multicast address, encryption). The Wi-Fi network may not allow communication between participants due to Access Point (AP) Isolation. In this case, this option must be disabled on the router."
|
||||
}
|
||||
},
|
||||
"networkInterfacesPage": {
|
||||
"title": "Network Interfaces",
|
||||
"info": "By default, LocalSend uses all available network interfaces. You can exclude unwanted networks here. You need to restart the server to apply the changes.",
|
||||
"preview": "Preview",
|
||||
"whitelist": "Whitelist",
|
||||
"blacklist": "Blacklist"
|
||||
},
|
||||
"receiveHistoryPage": {
|
||||
"title": "History",
|
||||
"openFolder": "Open folder",
|
||||
"deleteHistory": "Delete history",
|
||||
"empty": "The history is empty.",
|
||||
"entryActions": {
|
||||
"open": "Open file",
|
||||
"showInFolder": "Show in folder",
|
||||
"info": "Information",
|
||||
"deleteFromHistory": "Delete from history"
|
||||
}
|
||||
},
|
||||
"apkPickerPage": {
|
||||
"title": "Apps (APK)",
|
||||
"excludeSystemApps": "Exclude system apps",
|
||||
"excludeAppsWithoutLaunchIntent": "Exclude non-launchable apps",
|
||||
"apps": "{n} Apps"
|
||||
},
|
||||
"selectedFilesPage": {
|
||||
"deleteAll": "Delete all"
|
||||
},
|
||||
"receivePage": {
|
||||
"subTitle": {
|
||||
"one": "wants to send you a file",
|
||||
"other": "wants to send you {n} files"
|
||||
},
|
||||
"subTitleMessage": "sent you a message:",
|
||||
"subTitleLink": "sent you a link:",
|
||||
"canceled": "The sender has canceled the request."
|
||||
},
|
||||
"receiveOptionsPage": {
|
||||
"title": "Options",
|
||||
"destination": "@:settingsTab.receive.destination",
|
||||
"appDirectory": "(LocalSend folder)",
|
||||
"saveToGallery": "@:settingsTab.receive.saveToGallery",
|
||||
"saveToGalleryOff": "Turned off automatically because there are folders."
|
||||
},
|
||||
"sendPage": {
|
||||
"waiting": "Waiting for response…",
|
||||
"rejected": "The recipient has rejected the request.",
|
||||
"tooManyAttempts": "@:web.tooManyAttempts",
|
||||
"busy": "The recipient is busy with another request."
|
||||
},
|
||||
"progressPage": {
|
||||
"titleSending": "Sending files",
|
||||
"titleReceiving": "Receiving files",
|
||||
"savedToGallery": "Saved in Photos",
|
||||
"total": {
|
||||
"title": {
|
||||
"sending": "Total progress ({time})",
|
||||
"finishedError": "Finished with error",
|
||||
"canceledSender": "Canceled by sender",
|
||||
"canceledReceiver": "Canceled by receiver"
|
||||
},
|
||||
"count": "Files: {curr} / {n}",
|
||||
"size": "Size: {curr} / {n}",
|
||||
"speed": "Speed: {speed}/s"
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"title": "Share via link",
|
||||
"loading": "Starting server…",
|
||||
"stopping": "Stopping server…",
|
||||
"error": "An error occurred while starting the server.",
|
||||
"openLink": {
|
||||
"one": "Open this link in your browser:",
|
||||
"other": "Open one of these links in your browser:"
|
||||
},
|
||||
"requests": "Requests",
|
||||
"noRequests": "No requests yet.",
|
||||
"encryption": "@:settingsTab.network.encryption",
|
||||
"autoAccept": "Automatically accept requests",
|
||||
"requirePin": "Require PIN",
|
||||
"pinHint": "The PIN is \"{pin}\"",
|
||||
"encryptionHint": "LocalSend uses a self-signed certificate. You need to accept it in your browser.",
|
||||
"pendingRequests": "Pending requests: {n}"
|
||||
},
|
||||
"aboutPage": {
|
||||
"title": "About LocalSend",
|
||||
"description": [
|
||||
"LocalSend is a free, open-source app that allows you to securely share files and messages with nearby devices over your local network without needing an internet connection.",
|
||||
"This app is available on Android, iOS, macOS, Windows and Linux. You can find all download options on the official homepage."
|
||||
],
|
||||
"author": "Author",
|
||||
"contributors": "Contributors",
|
||||
"packagers": "Packagers",
|
||||
"translators": "Translators"
|
||||
},
|
||||
"donationPage": {
|
||||
"title": "Donate",
|
||||
"info": "LocalSend is free, open-source and without any ads. If you like the app, you can support the development with a donation.",
|
||||
"donate": "Donate {amount}",
|
||||
"thanks": "Thank you very much!",
|
||||
"restore": "Restore purchase"
|
||||
},
|
||||
"changelogPage": {
|
||||
"title": "Changelog"
|
||||
},
|
||||
"dialogs": {
|
||||
"addFile": {
|
||||
"title": "Add to selection",
|
||||
"content": "What do you want to add?"
|
||||
},
|
||||
"openFile": {
|
||||
"title": "Open file",
|
||||
"content": "Do you want to open the received file?"
|
||||
},
|
||||
"addressInput": {
|
||||
"title": "Enter address",
|
||||
"hashtag": "Hashtag",
|
||||
"ip": "IP Address",
|
||||
"recentlyUsed": "Recently used: "
|
||||
},
|
||||
"cancelSession": {
|
||||
"title": "Cancel files transfer",
|
||||
"content": "Do you really want to cancel the files transfer?"
|
||||
},
|
||||
"cannotOpenFile": {
|
||||
"title": "Cannot open file",
|
||||
"content": "Could not open \"{file}\". Has this file been moved, renamed or deleted?"
|
||||
},
|
||||
"encryptionDisabledNotice": {
|
||||
"title": "Encryption disabled",
|
||||
"content": "Communication now takes place via the unencrypted HTTP protocol. To use HTTPS protocol, enable encryption again."
|
||||
},
|
||||
"errorDialog": {
|
||||
"title": "@:general.error"
|
||||
},
|
||||
"favoriteDialog": {
|
||||
"title": "Favorites",
|
||||
"noFavorites": "No favorite devices yet.",
|
||||
"addFavorite": "Add"
|
||||
},
|
||||
"favoriteDeleteDialog": {
|
||||
"title": "Delete from favorites",
|
||||
"content": "Do you really want to delete from favorites \"{name}\"?"
|
||||
},
|
||||
"favoriteEditDialog": {
|
||||
"titleAdd": "Add to favorites",
|
||||
"titleEdit": "Settings",
|
||||
"name": "Device name",
|
||||
"auto": "(auto)",
|
||||
"ip": "IP Address",
|
||||
"port": "Port"
|
||||
},
|
||||
"fileInfo": {
|
||||
"title": "File information",
|
||||
"fileName": "File name:",
|
||||
"path": "Path:",
|
||||
"size": "Size:",
|
||||
"sender": "Sender:",
|
||||
"time": "Time:"
|
||||
},
|
||||
"fileNameInput": {
|
||||
"title": "Enter file name",
|
||||
"original": "Original: {original}"
|
||||
},
|
||||
"historyClearDialog": {
|
||||
"title": "Clear history",
|
||||
"content": "Do you really want to delete the entire history?"
|
||||
},
|
||||
"localNetworkUnauthorized": {
|
||||
"title": "@:dialogs.noPermission.title",
|
||||
"description": "LocalSend can't find other devices without having the permission to scan the local network. Please grant this permission in the settings.",
|
||||
"gotoSettings": "Settings"
|
||||
},
|
||||
"messageInput": {
|
||||
"title": "Type message",
|
||||
"multiline": "Multiline"
|
||||
},
|
||||
"noFiles": {
|
||||
"title": "No files selected",
|
||||
"content": "Please select at least one file."
|
||||
},
|
||||
"noPermission": {
|
||||
"title": "No permission",
|
||||
"content": "You have not granted the necessary permissions. Please grant them in the settings."
|
||||
},
|
||||
"notAvailableOnPlatform": {
|
||||
"title": "Not available",
|
||||
"content": "This feature is only available on:"
|
||||
},
|
||||
"qr": {
|
||||
"title": "QR Code"
|
||||
},
|
||||
"quickActions": {
|
||||
"title": "Quick Actions",
|
||||
"counter": "Counter",
|
||||
"prefix": "Prefix",
|
||||
"padZero": "Pad with zeros",
|
||||
"sortBeforeCount": "Sort alphabetically beforehand (A-Z)",
|
||||
"random": "Random"
|
||||
},
|
||||
"quickSaveNotice": {
|
||||
"title": "@:general.quickSave",
|
||||
"content": "File requests are now accepted automatically. Be aware that everyone on the local network can send you files."
|
||||
},
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"title": "@:general.quickSaveFromFavorites",
|
||||
"content": [
|
||||
"File requests are now accepted automatically from devices in your favorites list.",
|
||||
"Warning! Currently, this is not entirely secure, as a hacker who has the fingerprint of any device from your favorites list can send you files without restriction.",
|
||||
"However, this option is still safer than allowing all users on the local network to send you files without restriction."
|
||||
]
|
||||
},
|
||||
"pin": {
|
||||
"title": "Enter PIN"
|
||||
},
|
||||
"sendModeHelp": {
|
||||
"title": "Send modes",
|
||||
"single": "Sends files to one recipient. Selection will be cleared after finished files transfer.",
|
||||
"multiple": "Sends files to multiple recipients. Selection will not be cleared after finished files transfer.",
|
||||
"link": "Recipients who do not have LocalSend installed can download the selected files by opening the link in their browser."
|
||||
},
|
||||
"zoom": {
|
||||
"title": "URL"
|
||||
}
|
||||
},
|
||||
"sanitization": {
|
||||
"empty": "Filename cannot be empty",
|
||||
"invalid": "Filename contains invalid characters"
|
||||
},
|
||||
"tray": {
|
||||
"open": "@:general.open",
|
||||
"close": "Quit LocalSend",
|
||||
"closeWindows": "Exit"
|
||||
},
|
||||
"web": {
|
||||
"waiting": "@:sendPage.waiting",
|
||||
"enterPin": "Enter PIN",
|
||||
"invalidPin": "Invalid PIN",
|
||||
"tooManyAttempts": "Too many attempts",
|
||||
"rejected": "Rejected",
|
||||
"files": "Files",
|
||||
"fileName": "File name",
|
||||
"size": "Size"
|
||||
},
|
||||
"assetPicker": {
|
||||
"confirm": "Confirm",
|
||||
"cancel": "Cancel",
|
||||
"edit": "Edit",
|
||||
"gifIndicator": "GIF",
|
||||
"loadFailed": "Load failed",
|
||||
"original": "Origin",
|
||||
"preview": "Preview",
|
||||
"select": "Select",
|
||||
"emptyList": "Empty list",
|
||||
"unSupportedAssetType": "Unsupported file type.",
|
||||
"unableToAccessAll": "Unable to access all files on the device",
|
||||
"viewingLimitedAssetsTip": "Only view files and albums accessible to the app.",
|
||||
"changeAccessibleLimitedAssets": "Click to update accessible files",
|
||||
"accessAllTip": "App can only access some files on the device. Go to system settings and allow the app to access all media on the device.",
|
||||
"goToSystemSettings": "Go to system settings",
|
||||
"accessLimitedAssets": "Continue with limited access",
|
||||
"accessiblePathName": "Accessible files",
|
||||
"sTypeAudioLabel": "Audio",
|
||||
"sTypeImageLabel": "Image",
|
||||
"sTypeVideoLabel": "Video",
|
||||
"sTypeOtherLabel": "Other media",
|
||||
"sActionPlayHint": "play",
|
||||
"sActionPreviewHint": "preview",
|
||||
"sActionSelectHint": "select",
|
||||
"sActionSwitchPathLabel": "change path",
|
||||
"sActionUseCameraHint": "use camera",
|
||||
"sNameDurationLabel": "duration",
|
||||
"sUnitAssetCountLabel": "count"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
{
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <gu>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=gu' to quickly apply the newly added translations."
|
||||
],
|
||||
"general": {
|
||||
"quickSaveFromFavorites": "Quick Save for \"Favorites\""
|
||||
},
|
||||
"receiveTab": {
|
||||
"quickSave": {
|
||||
"off": "@:general.off",
|
||||
"favorites": "Favorites",
|
||||
"on": "@:general.on"
|
||||
}
|
||||
},
|
||||
"sendTab": {
|
||||
"manualSending": "Manual sending"
|
||||
},
|
||||
"settingsTab": {
|
||||
"general": {
|
||||
"saveWindowPlacementWindows": "Save window position after exit",
|
||||
"showInContextMenu": "Show LocalSend in context menu"
|
||||
},
|
||||
"receive": {
|
||||
"quickSaveFromFavorites": "@:general.quickSaveFromFavorites",
|
||||
"requirePin": "@:webSharePage.requirePin"
|
||||
},
|
||||
"network": {
|
||||
"network": "Network",
|
||||
"networkOptions": {
|
||||
"all": "All",
|
||||
"filtered": "Filtered"
|
||||
},
|
||||
"useSystemName": "Use system name",
|
||||
"generateRandomAlias": "Generate random alias"
|
||||
}
|
||||
},
|
||||
"troubleshootPage": {
|
||||
"noDiscovery": {
|
||||
"symptom": "This device cannot discover other devices.",
|
||||
"solution": "Please make sure that all devices are on the same Wi-Fi network and share the same configuration (port, multicast address, encryption). You can try to type the IP address of the target device manually. If this works, consider adding this device to the favorites so it can be automatically discovered in the future."
|
||||
}
|
||||
},
|
||||
"networkInterfacesPage": {
|
||||
"title": "Network Interfaces",
|
||||
"info": "By default, LocalSend uses all available network interfaces. You can exclude unwanted networks here. You need to restart the server to apply the changes.",
|
||||
"preview": "Preview",
|
||||
"whitelist": "Whitelist",
|
||||
"blacklist": "Blacklist"
|
||||
},
|
||||
"receiveHistoryPage": {
|
||||
"entryActions": {
|
||||
"showInFolder": "Show in folder"
|
||||
}
|
||||
},
|
||||
"sendPage": {
|
||||
"tooManyAttempts": "@:web.tooManyAttempts"
|
||||
},
|
||||
"webSharePage": {
|
||||
"requirePin": "Require PIN",
|
||||
"pinHint": "The PIN is \"{pin}\""
|
||||
},
|
||||
"aboutPage": {
|
||||
"packagers": "Packagers"
|
||||
},
|
||||
"dialogs": {
|
||||
"openFile": {
|
||||
"title": "Open file",
|
||||
"content": "Do you want to open the received file?"
|
||||
},
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"title": "@:general.quickSaveFromFavorites",
|
||||
"content": [
|
||||
"File requests are now accepted automatically from devices in your favorites list.",
|
||||
"Warning! Currently, this is not entirely secure, as a hacker who has the fingerprint of any device from your favorites list can send you files without restriction.",
|
||||
"However, this option is still safer than allowing all users on the local network to send you files without restriction."
|
||||
]
|
||||
},
|
||||
"pin": {
|
||||
"title": "Enter PIN"
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"closeWindows": "Exit"
|
||||
},
|
||||
"web": {
|
||||
"enterPin": "Enter PIN",
|
||||
"invalidPin": "Invalid PIN",
|
||||
"tooManyAttempts": "Too many attempts"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <hi>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=hi' to quickly apply the newly added translations."
|
||||
]
|
||||
}
|
||||
@@ -2,14 +2,5 @@
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <id>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=id' to quickly apply the newly added translations."
|
||||
],
|
||||
"settingsTab": {
|
||||
"send": {
|
||||
"title": "Send",
|
||||
"shareViaLinkAutoAccept": "Share via link: Auto accept"
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"autoAccept": "Automatically accept requests"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -2,5 +2,21 @@
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <ja>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=ja' to quickly apply the newly added translations."
|
||||
]
|
||||
],
|
||||
"settingsTab": {
|
||||
"network": {
|
||||
"network": "Network",
|
||||
"networkOptions": {
|
||||
"all": "All",
|
||||
"filtered": "Filtered"
|
||||
}
|
||||
}
|
||||
},
|
||||
"networkInterfacesPage": {
|
||||
"title": "Network Interfaces",
|
||||
"info": "By default, LocalSend uses all available network interfaces. You can exclude unwanted networks here. You need to restart the server to apply the changes.",
|
||||
"preview": "Preview",
|
||||
"whitelist": "Whitelist",
|
||||
"blacklist": "Blacklist"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,12 +4,19 @@
|
||||
"After editing this file, you can run 'dart run slang apply --locale=km' to quickly apply the newly added translations."
|
||||
],
|
||||
"settingsTab": {
|
||||
"send": {
|
||||
"title": "Send",
|
||||
"shareViaLinkAutoAccept": "Share via link: Auto accept"
|
||||
"network": {
|
||||
"network": "Network",
|
||||
"networkOptions": {
|
||||
"all": "All",
|
||||
"filtered": "Filtered"
|
||||
}
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"autoAccept": "Automatically accept requests"
|
||||
"networkInterfacesPage": {
|
||||
"title": "Network Interfaces",
|
||||
"info": "By default, LocalSend uses all available network interfaces. You can exclude unwanted networks here. You need to restart the server to apply the changes.",
|
||||
"preview": "Preview",
|
||||
"whitelist": "Whitelist",
|
||||
"blacklist": "Blacklist"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,269 @@
|
||||
{
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <ml>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=ml' to quickly apply the newly added translations."
|
||||
],
|
||||
"receiveTab": {
|
||||
"quickSave": {
|
||||
"on": "@:general.on"
|
||||
}
|
||||
},
|
||||
"sendTab": {
|
||||
"selection": {
|
||||
"files": "Files: {files}",
|
||||
"size": "Size: {size}"
|
||||
}
|
||||
},
|
||||
"settingsTab": {
|
||||
"receive": {
|
||||
"quickSave": "@:general.quickSave",
|
||||
"quickSaveFromFavorites": "@:general.quickSaveFromFavorites",
|
||||
"requirePin": "@:webSharePage.requirePin"
|
||||
},
|
||||
"network": {
|
||||
"portWarning": "You might not be detected by other devices because you are using a custom port. (default: {defaultPort})",
|
||||
"encryption": "Encryption",
|
||||
"multicastGroup": "Multicast address",
|
||||
"multicastGroupWarning": "You might not be detected by other devices because you are using a custom multicast address. (default: {defaultMulticast})"
|
||||
},
|
||||
"other": {
|
||||
"title": "Other",
|
||||
"support": "Support LocalSend",
|
||||
"donate": "Donate",
|
||||
"termsOfUse": "Terms of Use"
|
||||
},
|
||||
"advancedSettings": "Advanced settings"
|
||||
},
|
||||
"troubleshootPage": {
|
||||
"title": "Troubleshoot",
|
||||
"subTitle": "Does the app not work as expected? Here you can find some common solutions to problems.",
|
||||
"solution": "Solution:",
|
||||
"fixButton": "Fix automatically",
|
||||
"firewall": {
|
||||
"symptom": "This device can send files to other devices but other devices cannot send files to this device.",
|
||||
"solution": "This is most likely a firewall issue. You can solve this by allowing incoming connections (UDP and TCP) on port {port}.",
|
||||
"openFirewall": "Open Firewall"
|
||||
},
|
||||
"noDiscovery": {
|
||||
"symptom": "This device cannot discover other devices.",
|
||||
"solution": "Please make sure that all devices are on the same Wi-Fi network and share the same configuration (port, multicast address, encryption). You can try to type the IP address of the target device manually. If this works, consider adding this device to the favorites so it can be automatically discovered in the future."
|
||||
},
|
||||
"noConnection": {
|
||||
"symptom": "Both devices cannot discover each other nor can they share files.",
|
||||
"solution": "Does the problem exist on both sides? If so, you need to make sure that both devices are on the same Wi-Fi network and share the same configuration (port, multicast address, encryption). The Wi-Fi network may not allow communication between participants due to Access Point (AP) Isolation. In this case, this option must be disabled on the router."
|
||||
}
|
||||
},
|
||||
"networkInterfacesPage": {
|
||||
"title": "Network Interfaces",
|
||||
"info": "By default, LocalSend uses all available network interfaces. You can exclude unwanted networks here. You need to restart the server to apply the changes.",
|
||||
"whitelist": "Whitelist",
|
||||
"blacklist": "Blacklist"
|
||||
},
|
||||
"receiveHistoryPage": {
|
||||
"title": "History",
|
||||
"openFolder": "Open folder",
|
||||
"deleteHistory": "Delete history",
|
||||
"empty": "The history is empty.",
|
||||
"entryActions": {
|
||||
"open": "Open file",
|
||||
"showInFolder": "Show in folder",
|
||||
"info": "Information",
|
||||
"deleteFromHistory": "Delete from history"
|
||||
}
|
||||
},
|
||||
"apkPickerPage": {
|
||||
"title": "Apps (APK)",
|
||||
"excludeSystemApps": "Exclude system apps",
|
||||
"excludeAppsWithoutLaunchIntent": "Exclude non-launchable apps",
|
||||
"apps": "{n} Apps"
|
||||
},
|
||||
"selectedFilesPage": {
|
||||
"deleteAll": "Delete all"
|
||||
},
|
||||
"receivePage": {
|
||||
"subTitle": {
|
||||
"one": "wants to send you a file",
|
||||
"other": "wants to send you {n} files"
|
||||
},
|
||||
"subTitleMessage": "sent you a message:",
|
||||
"subTitleLink": "sent you a link:",
|
||||
"canceled": "The sender has canceled the request."
|
||||
},
|
||||
"receiveOptionsPage": {
|
||||
"title": "Options",
|
||||
"destination": "@:settingsTab.receive.destination",
|
||||
"appDirectory": "(LocalSend folder)",
|
||||
"saveToGallery": "@:settingsTab.receive.saveToGallery",
|
||||
"saveToGalleryOff": "Turned off automatically because there are folders."
|
||||
},
|
||||
"sendPage": {
|
||||
"waiting": "Waiting for response…",
|
||||
"rejected": "The recipient has rejected the request.",
|
||||
"tooManyAttempts": "@:web.tooManyAttempts",
|
||||
"busy": "The recipient is busy with another request."
|
||||
},
|
||||
"progressPage": {
|
||||
"titleSending": "Sending files",
|
||||
"titleReceiving": "Receiving files",
|
||||
"savedToGallery": "Saved in Photos",
|
||||
"total": {
|
||||
"title": {
|
||||
"sending": "Total progress ({time})",
|
||||
"finishedError": "Finished with error",
|
||||
"canceledSender": "Canceled by sender",
|
||||
"canceledReceiver": "Canceled by receiver"
|
||||
},
|
||||
"count": "Files: {curr} / {n}",
|
||||
"size": "Size: {curr} / {n}",
|
||||
"speed": "Speed: {speed}/s"
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"title": "Share via link",
|
||||
"loading": "Starting server…",
|
||||
"stopping": "Stopping server…",
|
||||
"error": "An error occurred while starting the server.",
|
||||
"openLink": {
|
||||
"one": "Open this link in your browser:",
|
||||
"other": "Open one of these links in your browser:"
|
||||
},
|
||||
"requests": "Requests",
|
||||
"noRequests": "No requests yet.",
|
||||
"encryption": "@:settingsTab.network.encryption",
|
||||
"autoAccept": "Automatically accept requests",
|
||||
"requirePin": "Require PIN",
|
||||
"pinHint": "The PIN is \"{pin}\"",
|
||||
"encryptionHint": "LocalSend uses a self-signed certificate. You need to accept it in your browser.",
|
||||
"pendingRequests": "Pending requests: {n}"
|
||||
},
|
||||
"aboutPage": {
|
||||
"title": "About LocalSend",
|
||||
"description": [
|
||||
"LocalSend is a free, open-source app that allows you to securely share files and messages with nearby devices over your local network without needing an internet connection.",
|
||||
"This app is available on Android, iOS, macOS, Windows and Linux. You can find all download options on the official homepage."
|
||||
],
|
||||
"author": "Author",
|
||||
"contributors": "Contributors",
|
||||
"packagers": "Packagers",
|
||||
"translators": "Translators"
|
||||
},
|
||||
"donationPage": {
|
||||
"title": "Donate",
|
||||
"info": "LocalSend is free, open-source and without any ads. If you like the app, you can support the development with a donation.",
|
||||
"donate": "Donate {amount}",
|
||||
"thanks": "Thank you very much!",
|
||||
"restore": "Restore purchase"
|
||||
},
|
||||
"changelogPage": {
|
||||
"title": "Changelog"
|
||||
},
|
||||
"dialogs": {
|
||||
"addFile": {
|
||||
"title": "Add to selection",
|
||||
"content": "What do you want to add?"
|
||||
},
|
||||
"openFile": {
|
||||
"title": "Open file",
|
||||
"content": "Do you want to open the received file?"
|
||||
},
|
||||
"addressInput": {
|
||||
"title": "Enter address",
|
||||
"hashtag": "Hashtag",
|
||||
"ip": "IP Address",
|
||||
"recentlyUsed": "Recently used: "
|
||||
},
|
||||
"cancelSession": {
|
||||
"title": "Cancel files transfer",
|
||||
"content": "Do you really want to cancel the files transfer?"
|
||||
},
|
||||
"cannotOpenFile": {
|
||||
"title": "Cannot open file",
|
||||
"content": "Could not open \"{file}\". Has this file been moved, renamed or deleted?"
|
||||
},
|
||||
"encryptionDisabledNotice": {
|
||||
"title": "Encryption disabled",
|
||||
"content": "Communication now takes place via the unencrypted HTTP protocol. To use HTTPS protocol, enable encryption again."
|
||||
},
|
||||
"errorDialog": {
|
||||
"title": "@:general.error"
|
||||
},
|
||||
"favoriteDialog": {
|
||||
"title": "Favorites",
|
||||
"noFavorites": "No favorite devices yet.",
|
||||
"addFavorite": "Add"
|
||||
},
|
||||
"favoriteDeleteDialog": {
|
||||
"title": "Delete from favorites",
|
||||
"content": "Do you really want to delete from favorites \"{name}\"?"
|
||||
},
|
||||
"favoriteEditDialog": {
|
||||
"titleAdd": "Add to favorites",
|
||||
"titleEdit": "Settings",
|
||||
"name": "Device name",
|
||||
"auto": "(auto)",
|
||||
"ip": "IP Address",
|
||||
"port": "Port"
|
||||
},
|
||||
"fileInfo": {
|
||||
"title": "File information",
|
||||
"fileName": "File name:",
|
||||
"path": "Path:",
|
||||
"size": "Size:",
|
||||
"sender": "Sender:",
|
||||
"time": "Time:"
|
||||
},
|
||||
"fileNameInput": {
|
||||
"title": "Enter file name",
|
||||
"original": "Original: {original}"
|
||||
},
|
||||
"historyClearDialog": {
|
||||
"title": "Clear history",
|
||||
"content": "Do you really want to delete the entire history?"
|
||||
},
|
||||
"localNetworkUnauthorized": {
|
||||
"title": "@:dialogs.noPermission.title",
|
||||
"description": "LocalSend can't find other devices without having the permission to scan the local network. Please grant this permission in the settings.",
|
||||
"gotoSettings": "Settings"
|
||||
},
|
||||
"messageInput": {
|
||||
"title": "Type message",
|
||||
"multiline": "Multiline"
|
||||
},
|
||||
"noFiles": {
|
||||
"title": "No files selected",
|
||||
"content": "Please select at least one file."
|
||||
},
|
||||
"noPermission": {
|
||||
"title": "No permission",
|
||||
"content": "You have not granted the necessary permissions. Please grant them in the settings."
|
||||
},
|
||||
"notAvailableOnPlatform": {
|
||||
"title": "Not available",
|
||||
"content": "This feature is only available on:"
|
||||
},
|
||||
"qr": {
|
||||
"title": "QR Code"
|
||||
},
|
||||
"quickActions": {
|
||||
"title": "Quick Actions",
|
||||
"counter": "Counter",
|
||||
"prefix": "Prefix",
|
||||
"padZero": "Pad with zeros",
|
||||
"sortBeforeCount": "Sort alphabetically beforehand (A-Z)",
|
||||
"random": "Random"
|
||||
},
|
||||
"quickSaveNotice": {
|
||||
"title": "@:general.quickSave",
|
||||
"content": "File requests are now accepted automatically. Be aware that everyone on the local network can send you files."
|
||||
},
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"title": "@:general.quickSaveFromFavorites"
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"open": "@:general.open"
|
||||
},
|
||||
"web": {
|
||||
"waiting": "@:sendPage.waiting"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,209 @@
|
||||
{
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <mn>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=mn' to quickly apply the newly added translations."
|
||||
],
|
||||
"general": {
|
||||
"quickSaveFromFavorites": "Quick Save for \"Favorites\""
|
||||
},
|
||||
"settingsTab": {
|
||||
"receive": {
|
||||
"quickSaveFromFavorites": "@:general.quickSaveFromFavorites"
|
||||
},
|
||||
"network": {
|
||||
"network": "Network",
|
||||
"networkOptions": {
|
||||
"all": "All",
|
||||
"filtered": "Filtered"
|
||||
},
|
||||
"generateRandomAlias": "Generate random alias"
|
||||
}
|
||||
},
|
||||
"networkInterfacesPage": {
|
||||
"title": "Network Interfaces",
|
||||
"info": "By default, LocalSend uses all available network interfaces. You can exclude unwanted networks here. You need to restart the server to apply the changes.",
|
||||
"preview": "Preview",
|
||||
"whitelist": "Whitelist",
|
||||
"blacklist": "Blacklist"
|
||||
},
|
||||
"sendPage": {
|
||||
"tooManyAttempts": "@:web.tooManyAttempts"
|
||||
},
|
||||
"webSharePage": {
|
||||
"loading": "Starting server…",
|
||||
"stopping": "Stopping server…",
|
||||
"encryption": "@:settingsTab.network.encryption"
|
||||
},
|
||||
"aboutPage": {
|
||||
"packagers": "Packagers"
|
||||
},
|
||||
"dialogs": {
|
||||
"addFile": {
|
||||
"title": "Add to selection",
|
||||
"content": "What do you want to add?"
|
||||
},
|
||||
"openFile": {
|
||||
"title": "Open file",
|
||||
"content": "Do you want to open the received file?"
|
||||
},
|
||||
"addressInput": {
|
||||
"title": "Enter address",
|
||||
"hashtag": "Hashtag",
|
||||
"ip": "IP Address",
|
||||
"recentlyUsed": "Recently used: "
|
||||
},
|
||||
"cancelSession": {
|
||||
"title": "Cancel files transfer",
|
||||
"content": "Do you really want to cancel the files transfer?"
|
||||
},
|
||||
"cannotOpenFile": {
|
||||
"title": "Cannot open file",
|
||||
"content": "Could not open \"{file}\". Has this file been moved, renamed or deleted?"
|
||||
},
|
||||
"encryptionDisabledNotice": {
|
||||
"title": "Encryption disabled",
|
||||
"content": "Communication now takes place via the unencrypted HTTP protocol. To use HTTPS protocol, enable encryption again."
|
||||
},
|
||||
"errorDialog": {
|
||||
"title": "@:general.error"
|
||||
},
|
||||
"favoriteDialog": {
|
||||
"title": "Favorites",
|
||||
"noFavorites": "No favorite devices yet.",
|
||||
"addFavorite": "Add"
|
||||
},
|
||||
"favoriteDeleteDialog": {
|
||||
"title": "Delete from favorites",
|
||||
"content": "Do you really want to delete from favorites \"{name}\"?"
|
||||
},
|
||||
"favoriteEditDialog": {
|
||||
"titleAdd": "Add to favorites",
|
||||
"titleEdit": "Settings",
|
||||
"name": "Device name",
|
||||
"auto": "(auto)",
|
||||
"ip": "IP Address",
|
||||
"port": "Port"
|
||||
},
|
||||
"fileInfo": {
|
||||
"title": "File information",
|
||||
"fileName": "File name:",
|
||||
"path": "Path:",
|
||||
"size": "Size:",
|
||||
"sender": "Sender:",
|
||||
"time": "Time:"
|
||||
},
|
||||
"fileNameInput": {
|
||||
"title": "Enter file name",
|
||||
"original": "Original: {original}"
|
||||
},
|
||||
"historyClearDialog": {
|
||||
"title": "Clear history",
|
||||
"content": "Do you really want to delete the entire history?"
|
||||
},
|
||||
"localNetworkUnauthorized": {
|
||||
"title": "@:dialogs.noPermission.title",
|
||||
"description": "LocalSend can't find other devices without having the permission to scan the local network. Please grant this permission in the settings.",
|
||||
"gotoSettings": "Settings"
|
||||
},
|
||||
"messageInput": {
|
||||
"title": "Type message",
|
||||
"multiline": "Multiline"
|
||||
},
|
||||
"noFiles": {
|
||||
"title": "No files selected",
|
||||
"content": "Please select at least one file."
|
||||
},
|
||||
"noPermission": {
|
||||
"title": "No permission",
|
||||
"content": "You have not granted the necessary permissions. Please grant them in the settings."
|
||||
},
|
||||
"notAvailableOnPlatform": {
|
||||
"title": "Not available",
|
||||
"content": "This feature is only available on:"
|
||||
},
|
||||
"qr": {
|
||||
"title": "QR Code"
|
||||
},
|
||||
"quickActions": {
|
||||
"title": "Quick Actions",
|
||||
"counter": "Counter",
|
||||
"prefix": "Prefix",
|
||||
"padZero": "Pad with zeros",
|
||||
"sortBeforeCount": "Sort alphabetically beforehand (A-Z)",
|
||||
"random": "Random"
|
||||
},
|
||||
"quickSaveNotice": {
|
||||
"title": "@:general.quickSave",
|
||||
"content": "File requests are now accepted automatically. Be aware that everyone on the local network can send you files."
|
||||
},
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"title": "@:general.quickSaveFromFavorites",
|
||||
"content": [
|
||||
"File requests are now accepted automatically from devices in your favorites list.",
|
||||
"Warning! Currently, this is not entirely secure, as a hacker who has the fingerprint of any device from your favorites list can send you files without restriction.",
|
||||
"However, this option is still safer than allowing all users on the local network to send you files without restriction."
|
||||
]
|
||||
},
|
||||
"pin": {
|
||||
"title": "Enter PIN"
|
||||
},
|
||||
"sendModeHelp": {
|
||||
"title": "Send modes",
|
||||
"single": "Sends files to one recipient. Selection will be cleared after finished files transfer.",
|
||||
"multiple": "Sends files to multiple recipients. Selection will not be cleared after finished files transfer.",
|
||||
"link": "Recipients who do not have LocalSend installed can download the selected files by opening the link in their browser."
|
||||
},
|
||||
"zoom": {
|
||||
"title": "URL"
|
||||
}
|
||||
},
|
||||
"sanitization": {
|
||||
"empty": "Filename cannot be empty",
|
||||
"invalid": "Filename contains invalid characters"
|
||||
},
|
||||
"tray": {
|
||||
"open": "@:general.open",
|
||||
"close": "Quit LocalSend",
|
||||
"closeWindows": "Exit"
|
||||
},
|
||||
"web": {
|
||||
"waiting": "@:sendPage.waiting",
|
||||
"enterPin": "Enter PIN",
|
||||
"invalidPin": "Invalid PIN",
|
||||
"tooManyAttempts": "Too many attempts",
|
||||
"rejected": "Rejected",
|
||||
"files": "Files",
|
||||
"fileName": "File name",
|
||||
"size": "Size"
|
||||
},
|
||||
"assetPicker": {
|
||||
"confirm": "Confirm",
|
||||
"cancel": "Cancel",
|
||||
"edit": "Edit",
|
||||
"gifIndicator": "GIF",
|
||||
"loadFailed": "Load failed",
|
||||
"original": "Origin",
|
||||
"preview": "Preview",
|
||||
"select": "Select",
|
||||
"emptyList": "Empty list",
|
||||
"unSupportedAssetType": "Unsupported file type.",
|
||||
"unableToAccessAll": "Unable to access all files on the device",
|
||||
"viewingLimitedAssetsTip": "Only view files and albums accessible to the app.",
|
||||
"changeAccessibleLimitedAssets": "Click to update accessible files",
|
||||
"accessAllTip": "App can only access some files on the device. Go to system settings and allow the app to access all media on the device.",
|
||||
"goToSystemSettings": "Go to system settings",
|
||||
"accessLimitedAssets": "Continue with limited access",
|
||||
"accessiblePathName": "Accessible files",
|
||||
"sTypeAudioLabel": "Audio",
|
||||
"sTypeImageLabel": "Image",
|
||||
"sTypeVideoLabel": "Video",
|
||||
"sTypeOtherLabel": "Other media",
|
||||
"sActionPlayHint": "play",
|
||||
"sActionPreviewHint": "preview",
|
||||
"sActionSelectHint": "select",
|
||||
"sActionSwitchPathLabel": "change path",
|
||||
"sActionUseCameraHint": "use camera",
|
||||
"sNameDurationLabel": "duration",
|
||||
"sUnitAssetCountLabel": "count"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
{
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <ms>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=ms' to quickly apply the newly added translations."
|
||||
],
|
||||
"receiveTab": {
|
||||
"quickSave": {
|
||||
"off": "@:general.off",
|
||||
"favorites": "Favorites",
|
||||
"on": "@:general.on"
|
||||
}
|
||||
},
|
||||
"settingsTab": {
|
||||
"general": {
|
||||
"saveWindowPlacementWindows": "Save window position after exit"
|
||||
},
|
||||
"network": {
|
||||
"network": "Network",
|
||||
"networkOptions": {
|
||||
"all": "All",
|
||||
"filtered": "Filtered"
|
||||
}
|
||||
}
|
||||
},
|
||||
"networkInterfacesPage": {
|
||||
"title": "Network Interfaces",
|
||||
"info": "By default, LocalSend uses all available network interfaces. You can exclude unwanted networks here. You need to restart the server to apply the changes.",
|
||||
"preview": "Preview",
|
||||
"whitelist": "Whitelist",
|
||||
"blacklist": "Blacklist"
|
||||
},
|
||||
"sendPage": {
|
||||
"tooManyAttempts": "@:web.tooManyAttempts"
|
||||
},
|
||||
"webSharePage": {
|
||||
"encryptionHint": "LocalSend uses a self-signed certificate. You need to accept it in your browser."
|
||||
},
|
||||
"aboutPage": {
|
||||
"packagers": "Packagers"
|
||||
},
|
||||
"dialogs": {
|
||||
"openFile": {
|
||||
"title": "Open file",
|
||||
"content": "Do you want to open the received file?"
|
||||
},
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"content": [
|
||||
"File requests are now accepted automatically from devices in your favorites list.",
|
||||
"Warning! Currently, this is not entirely secure, as a hacker who has the fingerprint of any device from your favorites list can send you files without restriction.",
|
||||
"However, this option is still safer than allowing all users on the local network to send you files without restriction."
|
||||
]
|
||||
}
|
||||
},
|
||||
"web": {
|
||||
"enterPin": "Enter PIN",
|
||||
"invalidPin": "Invalid PIN",
|
||||
"tooManyAttempts": "Too many attempts"
|
||||
}
|
||||
}
|
||||
@@ -4,75 +4,16 @@
|
||||
"After editing this file, you can run 'dart run slang apply --locale=ne' to quickly apply the newly added translations."
|
||||
],
|
||||
"general": {
|
||||
"delete": "Delete",
|
||||
"noItemInClipboard": "No items in Clipboard"
|
||||
},
|
||||
"sendTab": {
|
||||
"picker": {
|
||||
"clipboard": "Paste"
|
||||
}
|
||||
"quickSaveFromFavorites": "Quick Save for \"Favorites\""
|
||||
},
|
||||
"settingsTab": {
|
||||
"general": {
|
||||
"colorOptions": {
|
||||
"oled": "OLED"
|
||||
}
|
||||
},
|
||||
"receive": {
|
||||
"autoFinish": "Auto Finish"
|
||||
},
|
||||
"send": {
|
||||
"title": "Send",
|
||||
"shareViaLinkAutoAccept": "Share via link: Auto accept"
|
||||
},
|
||||
"other": {
|
||||
"title": "Other",
|
||||
"support": "Support LocalSend",
|
||||
"donate": "Donate",
|
||||
"privacyPolicy": "Privacy Policy",
|
||||
"termsOfUse": "Terms of Use"
|
||||
"quickSaveFromFavorites": "@:general.quickSaveFromFavorites"
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"autoAccept": "Automatically accept requests"
|
||||
},
|
||||
"aboutPage": {
|
||||
"description": [
|
||||
"LocalSend is a free, open-source app that allows you to securely share files and messages with nearby devices over your local network without needing an internet connection.",
|
||||
"This app is available on Android, iOS, macOS, Windows and Linux. You can find all download options on the official homepage."
|
||||
],
|
||||
"author": "Author",
|
||||
"contributors": "Contributors",
|
||||
"translators": "Translators"
|
||||
},
|
||||
"donationPage": {
|
||||
"title": "Donate",
|
||||
"info": "LocalSend is free, open-source and without any ads. If you like the app, you can support the development with a donation.",
|
||||
"donate": "Donate {amount}",
|
||||
"thanks": "Thank you very much!",
|
||||
"restore": "Restore purchase"
|
||||
},
|
||||
"dialogs": {
|
||||
"favoriteDialog": {
|
||||
"title": "Favorites",
|
||||
"noFavorites": "No favorite devices yet.",
|
||||
"addFavorite": "Add"
|
||||
},
|
||||
"favoriteDeleteDialog": {
|
||||
"title": "Delete from favorites",
|
||||
"content": "Do you really want to delete from favorites \"{name}\"?"
|
||||
},
|
||||
"favoriteEditDialog": {
|
||||
"titleAdd": "Add to favorites",
|
||||
"titleEdit": "Settings",
|
||||
"name": "Device name",
|
||||
"auto": "(auto)",
|
||||
"ip": "IP Address",
|
||||
"port": "Port"
|
||||
},
|
||||
"historyClearDialog": {
|
||||
"title": "Clear history",
|
||||
"content": "Do you really want to delete the entire history?"
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"title": "@:general.quickSaveFromFavorites"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,40 +2,5 @@
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <nl>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=nl' to quickly apply the newly added translations."
|
||||
],
|
||||
"settingsTab": {
|
||||
"receive": {
|
||||
"autoFinish": "Auto Finish"
|
||||
},
|
||||
"send": {
|
||||
"title": "Send",
|
||||
"shareViaLinkAutoAccept": "Share via link: Auto accept"
|
||||
},
|
||||
"other": {
|
||||
"title": "Other",
|
||||
"support": "Support LocalSend",
|
||||
"donate": "Donate",
|
||||
"privacyPolicy": "Privacy Policy",
|
||||
"termsOfUse": "Terms of Use"
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"autoAccept": "Automatically accept requests"
|
||||
},
|
||||
"aboutPage": {
|
||||
"description": [
|
||||
"LocalSend is a free, open-source app that allows you to securely share files and messages with nearby devices over your local network without needing an internet connection.",
|
||||
"This app is available on Android, iOS, macOS, Windows and Linux. You can find all download options on the official homepage."
|
||||
],
|
||||
"author": "Author",
|
||||
"contributors": "Contributors",
|
||||
"translators": "Translators"
|
||||
},
|
||||
"donationPage": {
|
||||
"title": "Donate",
|
||||
"info": "LocalSend is free, open-source and without any ads. If you like the app, you can support the development with a donation.",
|
||||
"donate": "Donate {amount}",
|
||||
"thanks": "Thank you very much!",
|
||||
"restore": "Restore purchase"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -2,14 +2,5 @@
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <pt-BR>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=pt-BR' to quickly apply the newly added translations."
|
||||
],
|
||||
"settingsTab": {
|
||||
"send": {
|
||||
"title": "Send",
|
||||
"shareViaLinkAutoAccept": "Share via link: Auto accept"
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"autoAccept": "Automatically accept requests"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
{
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <pt-PT>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=pt-PT' to quickly apply the newly added translations."
|
||||
],
|
||||
"general": {
|
||||
"quickSaveFromFavorites": "Quick Save for \"Favorites\""
|
||||
},
|
||||
"receiveTab": {
|
||||
"quickSave": {
|
||||
"off": "@:general.off",
|
||||
"favorites": "Favorites",
|
||||
"on": "@:general.on"
|
||||
}
|
||||
},
|
||||
"sendTab": {
|
||||
"manualSending": "Manual sending"
|
||||
},
|
||||
"settingsTab": {
|
||||
"general": {
|
||||
"saveWindowPlacementWindows": "Save window position after exit",
|
||||
"showInContextMenu": "Show LocalSend in context menu"
|
||||
},
|
||||
"receive": {
|
||||
"quickSaveFromFavorites": "@:general.quickSaveFromFavorites",
|
||||
"requirePin": "@:webSharePage.requirePin"
|
||||
},
|
||||
"network": {
|
||||
"network": "Network",
|
||||
"networkOptions": {
|
||||
"all": "All",
|
||||
"filtered": "Filtered"
|
||||
},
|
||||
"useSystemName": "Use system name",
|
||||
"generateRandomAlias": "Generate random alias"
|
||||
}
|
||||
},
|
||||
"troubleshootPage": {
|
||||
"noDiscovery": {
|
||||
"symptom": "This device cannot discover other devices.",
|
||||
"solution": "Please make sure that all devices are on the same Wi-Fi network and share the same configuration (port, multicast address, encryption). You can try to type the IP address of the target device manually. If this works, consider adding this device to the favorites so it can be automatically discovered in the future."
|
||||
}
|
||||
},
|
||||
"networkInterfacesPage": {
|
||||
"title": "Network Interfaces",
|
||||
"info": "By default, LocalSend uses all available network interfaces. You can exclude unwanted networks here. You need to restart the server to apply the changes.",
|
||||
"preview": "Preview",
|
||||
"whitelist": "Whitelist",
|
||||
"blacklist": "Blacklist"
|
||||
},
|
||||
"receiveHistoryPage": {
|
||||
"entryActions": {
|
||||
"showInFolder": "Show in folder"
|
||||
}
|
||||
},
|
||||
"sendPage": {
|
||||
"tooManyAttempts": "@:web.tooManyAttempts"
|
||||
},
|
||||
"webSharePage": {
|
||||
"requirePin": "Require PIN",
|
||||
"pinHint": "The PIN is \"{pin}\""
|
||||
},
|
||||
"aboutPage": {
|
||||
"packagers": "Packagers"
|
||||
},
|
||||
"dialogs": {
|
||||
"openFile": {
|
||||
"title": "Open file",
|
||||
"content": "Do you want to open the received file?"
|
||||
},
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"title": "@:general.quickSaveFromFavorites",
|
||||
"content": [
|
||||
"File requests are now accepted automatically from devices in your favorites list.",
|
||||
"Warning! Currently, this is not entirely secure, as a hacker who has the fingerprint of any device from your favorites list can send you files without restriction.",
|
||||
"However, this option is still safer than allowing all users on the local network to send you files without restriction."
|
||||
]
|
||||
},
|
||||
"pin": {
|
||||
"title": "Enter PIN"
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"closeWindows": "Exit"
|
||||
},
|
||||
"web": {
|
||||
"enterPin": "Enter PIN",
|
||||
"invalidPin": "Invalid PIN",
|
||||
"tooManyAttempts": "Too many attempts"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <ro>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=ro' to quickly apply the newly added translations."
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <si>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=si' to quickly apply the newly added translations."
|
||||
],
|
||||
"settingsTab": {
|
||||
"network": {
|
||||
"network": "Network",
|
||||
"networkOptions": {
|
||||
"all": "All",
|
||||
"filtered": "Filtered"
|
||||
}
|
||||
}
|
||||
},
|
||||
"networkInterfacesPage": {
|
||||
"title": "Network Interfaces",
|
||||
"info": "By default, LocalSend uses all available network interfaces. You can exclude unwanted networks here. You need to restart the server to apply the changes.",
|
||||
"preview": "Preview",
|
||||
"whitelist": "Whitelist",
|
||||
"blacklist": "Blacklist"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <sk>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=sk' to quickly apply the newly added translations."
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <sl>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=sl' to quickly apply the newly added translations."
|
||||
],
|
||||
"receiveTab": {
|
||||
"quickSave": {
|
||||
"off": "@:general.off",
|
||||
"favorites": "Favorites",
|
||||
"on": "@:general.on"
|
||||
}
|
||||
},
|
||||
"settingsTab": {
|
||||
"network": {
|
||||
"network": "Network",
|
||||
"networkOptions": {
|
||||
"all": "All",
|
||||
"filtered": "Filtered"
|
||||
}
|
||||
}
|
||||
},
|
||||
"networkInterfacesPage": {
|
||||
"title": "Network Interfaces",
|
||||
"info": "By default, LocalSend uses all available network interfaces. You can exclude unwanted networks here. You need to restart the server to apply the changes.",
|
||||
"preview": "Preview",
|
||||
"whitelist": "Whitelist",
|
||||
"blacklist": "Blacklist"
|
||||
},
|
||||
"dialogs": {
|
||||
"openFile": {
|
||||
"title": "Open file",
|
||||
"content": "Do you want to open the received file?"
|
||||
},
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"content": [
|
||||
"File requests are now accepted automatically from devices in your favorites list.",
|
||||
"Warning! Currently, this is not entirely secure, as a hacker who has the fingerprint of any device from your favorites list can send you files without restriction.",
|
||||
"However, this option is still safer than allowing all users on the local network to send you files without restriction."
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <sr>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=sr' to quickly apply the newly added translations."
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <sr-Cyrl>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=sr-Cyrl' to quickly apply the newly added translations."
|
||||
]
|
||||
}
|
||||
@@ -2,77 +2,5 @@
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <sv>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=sv' to quickly apply the newly added translations."
|
||||
],
|
||||
"general": {
|
||||
"delete": "Delete",
|
||||
"noItemInClipboard": "No items in Clipboard"
|
||||
},
|
||||
"sendTab": {
|
||||
"picker": {
|
||||
"clipboard": "Paste"
|
||||
}
|
||||
},
|
||||
"settingsTab": {
|
||||
"general": {
|
||||
"colorOptions": {
|
||||
"oled": "OLED"
|
||||
}
|
||||
},
|
||||
"receive": {
|
||||
"autoFinish": "Auto Finish"
|
||||
},
|
||||
"send": {
|
||||
"title": "Send",
|
||||
"shareViaLinkAutoAccept": "Share via link: Auto accept"
|
||||
},
|
||||
"other": {
|
||||
"title": "Other",
|
||||
"support": "Support LocalSend",
|
||||
"donate": "Donate",
|
||||
"privacyPolicy": "Privacy Policy",
|
||||
"termsOfUse": "Terms of Use"
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"autoAccept": "Automatically accept requests"
|
||||
},
|
||||
"aboutPage": {
|
||||
"description": [
|
||||
"LocalSend is a free, open-source app that allows you to securely share files and messages with nearby devices over your local network without needing an internet connection.",
|
||||
"This app is available on Android, iOS, macOS, Windows and Linux. You can find all download options on the official homepage."
|
||||
],
|
||||
"author": "Author",
|
||||
"contributors": "Contributors",
|
||||
"translators": "Translators"
|
||||
},
|
||||
"donationPage": {
|
||||
"title": "Donate",
|
||||
"info": "LocalSend is free, open-source and without any ads. If you like the app, you can support the development with a donation.",
|
||||
"donate": "Donate {amount}",
|
||||
"thanks": "Thank you very much!",
|
||||
"restore": "Restore purchase"
|
||||
},
|
||||
"dialogs": {
|
||||
"favoriteDialog": {
|
||||
"title": "Favorites",
|
||||
"noFavorites": "No favorite devices yet.",
|
||||
"addFavorite": "Add"
|
||||
},
|
||||
"favoriteDeleteDialog": {
|
||||
"title": "Delete from favorites",
|
||||
"content": "Do you really want to delete from favorites \"{name}\"?"
|
||||
},
|
||||
"favoriteEditDialog": {
|
||||
"titleAdd": "Add to favorites",
|
||||
"titleEdit": "Settings",
|
||||
"name": "Device name",
|
||||
"auto": "(auto)",
|
||||
"ip": "IP Address",
|
||||
"port": "Port"
|
||||
},
|
||||
"historyClearDialog": {
|
||||
"title": "Clear history",
|
||||
"content": "Do you really want to delete the entire history?"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <ta>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=ta' to quickly apply the newly added translations."
|
||||
]
|
||||
}
|
||||
@@ -3,13 +3,58 @@
|
||||
"Here are translations that exist in <en> but not in <th>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=th' to quickly apply the newly added translations."
|
||||
],
|
||||
"settingsTab": {
|
||||
"send": {
|
||||
"title": "Send",
|
||||
"shareViaLinkAutoAccept": "Share via link: Auto accept"
|
||||
"general": {
|
||||
"quickSaveFromFavorites": "Quick Save for \"Favorites\""
|
||||
},
|
||||
"receiveTab": {
|
||||
"quickSave": {
|
||||
"off": "@:general.off",
|
||||
"favorites": "Favorites",
|
||||
"on": "@:general.on"
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"autoAccept": "Automatically accept requests"
|
||||
"sendTab": {
|
||||
"manualSending": "Manual sending"
|
||||
},
|
||||
"settingsTab": {
|
||||
"general": {
|
||||
"saveWindowPlacementWindows": "Save window position after exit"
|
||||
},
|
||||
"receive": {
|
||||
"quickSaveFromFavorites": "@:general.quickSaveFromFavorites"
|
||||
},
|
||||
"network": {
|
||||
"network": "Network",
|
||||
"networkOptions": {
|
||||
"all": "All",
|
||||
"filtered": "Filtered"
|
||||
},
|
||||
"useSystemName": "Use system name",
|
||||
"generateRandomAlias": "Generate random alias"
|
||||
}
|
||||
},
|
||||
"networkInterfacesPage": {
|
||||
"title": "Network Interfaces",
|
||||
"info": "By default, LocalSend uses all available network interfaces. You can exclude unwanted networks here. You need to restart the server to apply the changes.",
|
||||
"preview": "Preview",
|
||||
"whitelist": "Whitelist",
|
||||
"blacklist": "Blacklist"
|
||||
},
|
||||
"dialogs": {
|
||||
"openFile": {
|
||||
"title": "Open file",
|
||||
"content": "Do you want to open the received file?"
|
||||
},
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"title": "@:general.quickSaveFromFavorites",
|
||||
"content": [
|
||||
"File requests are now accepted automatically from devices in your favorites list.",
|
||||
"Warning! Currently, this is not entirely secure, as a hacker who has the fingerprint of any device from your favorites list can send you files without restriction.",
|
||||
"However, this option is still safer than allowing all users on the local network to send you files without restriction."
|
||||
]
|
||||
}
|
||||
},
|
||||
"tray": {
|
||||
"closeWindows": "Exit"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,12 +4,26 @@
|
||||
"After editing this file, you can run 'dart run slang apply --locale=tr' to quickly apply the newly added translations."
|
||||
],
|
||||
"settingsTab": {
|
||||
"send": {
|
||||
"title": "Send",
|
||||
"shareViaLinkAutoAccept": "Share via link: Auto accept"
|
||||
"receive": {
|
||||
"quickSaveFromFavorites": "@:general.quickSaveFromFavorites"
|
||||
},
|
||||
"network": {
|
||||
"networkOptions": {
|
||||
"filtered": "Filtered"
|
||||
}
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"autoAccept": "Automatically accept requests"
|
||||
"networkInterfacesPage": {
|
||||
"info": "By default, LocalSend uses all available network interfaces. You can exclude unwanted networks here. You need to restart the server to apply the changes."
|
||||
},
|
||||
"dialogs": {
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"title": "@:general.quickSaveFromFavorites",
|
||||
"content": [
|
||||
"File requests are now accepted automatically from devices in your favorites list.",
|
||||
"Warning! Currently, this is not entirely secure, as a hacker who has the fingerprint of any device from your favorites list can send you files without restriction.",
|
||||
"However, this option is still safer than allowing all users on the local network to send you files without restriction."
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,75 +4,48 @@
|
||||
"After editing this file, you can run 'dart run slang apply --locale=ur' to quickly apply the newly added translations."
|
||||
],
|
||||
"general": {
|
||||
"delete": "Delete",
|
||||
"noItemInClipboard": "No items in Clipboard"
|
||||
"quickSaveFromFavorites": "Quick Save for \"Favorites\""
|
||||
},
|
||||
"sendTab": {
|
||||
"picker": {
|
||||
"clipboard": "Paste"
|
||||
"receiveTab": {
|
||||
"quickSave": {
|
||||
"off": "@:general.off",
|
||||
"favorites": "Favorites",
|
||||
"on": "@:general.on"
|
||||
}
|
||||
},
|
||||
"settingsTab": {
|
||||
"general": {
|
||||
"colorOptions": {
|
||||
"oled": "OLED"
|
||||
}
|
||||
},
|
||||
"receive": {
|
||||
"autoFinish": "Auto Finish"
|
||||
"quickSaveFromFavorites": "@:general.quickSaveFromFavorites"
|
||||
},
|
||||
"send": {
|
||||
"title": "Send",
|
||||
"shareViaLinkAutoAccept": "Share via link: Auto accept"
|
||||
},
|
||||
"other": {
|
||||
"title": "Other",
|
||||
"support": "Support LocalSend",
|
||||
"donate": "Donate",
|
||||
"privacyPolicy": "Privacy Policy",
|
||||
"termsOfUse": "Terms of Use"
|
||||
"network": {
|
||||
"network": "Network",
|
||||
"networkOptions": {
|
||||
"all": "All",
|
||||
"filtered": "Filtered"
|
||||
},
|
||||
"useSystemName": "Use system name",
|
||||
"generateRandomAlias": "Generate random alias"
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"autoAccept": "Automatically accept requests"
|
||||
},
|
||||
"aboutPage": {
|
||||
"description": [
|
||||
"LocalSend is a free, open-source app that allows you to securely share files and messages with nearby devices over your local network without needing an internet connection.",
|
||||
"This app is available on Android, iOS, macOS, Windows and Linux. You can find all download options on the official homepage."
|
||||
],
|
||||
"author": "Author",
|
||||
"contributors": "Contributors",
|
||||
"translators": "Translators"
|
||||
},
|
||||
"donationPage": {
|
||||
"title": "Donate",
|
||||
"info": "LocalSend is free, open-source and without any ads. If you like the app, you can support the development with a donation.",
|
||||
"donate": "Donate {amount}",
|
||||
"thanks": "Thank you very much!",
|
||||
"restore": "Restore purchase"
|
||||
"networkInterfacesPage": {
|
||||
"title": "Network Interfaces",
|
||||
"info": "By default, LocalSend uses all available network interfaces. You can exclude unwanted networks here. You need to restart the server to apply the changes.",
|
||||
"preview": "Preview",
|
||||
"whitelist": "Whitelist",
|
||||
"blacklist": "Blacklist"
|
||||
},
|
||||
"dialogs": {
|
||||
"favoriteDialog": {
|
||||
"title": "Favorites",
|
||||
"noFavorites": "No favorite devices yet.",
|
||||
"addFavorite": "Add"
|
||||
"openFile": {
|
||||
"title": "Open file",
|
||||
"content": "Do you want to open the received file?"
|
||||
},
|
||||
"favoriteDeleteDialog": {
|
||||
"title": "Delete from favorites",
|
||||
"content": "Do you really want to delete from favorites \"{name}\"?"
|
||||
},
|
||||
"favoriteEditDialog": {
|
||||
"titleAdd": "Add to favorites",
|
||||
"titleEdit": "Settings",
|
||||
"name": "Device name",
|
||||
"auto": "(auto)",
|
||||
"ip": "IP Address",
|
||||
"port": "Port"
|
||||
},
|
||||
"historyClearDialog": {
|
||||
"title": "Clear history",
|
||||
"content": "Do you really want to delete the entire history?"
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"title": "@:general.quickSaveFromFavorites",
|
||||
"content": [
|
||||
"File requests are now accepted automatically from devices in your favorites list.",
|
||||
"Warning! Currently, this is not entirely secure, as a hacker who has the fingerprint of any device from your favorites list can send you files without restriction.",
|
||||
"However, this option is still safer than allowing all users on the local network to send you files without restriction."
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,5 +2,21 @@
|
||||
"@@info": [
|
||||
"Here are translations that exist in <en> but not in <vi>.",
|
||||
"After editing this file, you can run 'dart run slang apply --locale=vi' to quickly apply the newly added translations."
|
||||
]
|
||||
],
|
||||
"settingsTab": {
|
||||
"network": {
|
||||
"network": "Network",
|
||||
"networkOptions": {
|
||||
"all": "All",
|
||||
"filtered": "Filtered"
|
||||
}
|
||||
}
|
||||
},
|
||||
"networkInterfacesPage": {
|
||||
"title": "Network Interfaces",
|
||||
"info": "By default, LocalSend uses all available network interfaces. You can exclude unwanted networks here. You need to restart the server to apply the changes.",
|
||||
"preview": "Preview",
|
||||
"whitelist": "Whitelist",
|
||||
"blacklist": "Blacklist"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,12 +4,19 @@
|
||||
"After editing this file, you can run 'dart run slang apply --locale=zh-HK' to quickly apply the newly added translations."
|
||||
],
|
||||
"settingsTab": {
|
||||
"send": {
|
||||
"title": "Send",
|
||||
"shareViaLinkAutoAccept": "Share via link: Auto accept"
|
||||
"network": {
|
||||
"network": "Network",
|
||||
"networkOptions": {
|
||||
"all": "All",
|
||||
"filtered": "Filtered"
|
||||
}
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"autoAccept": "Automatically accept requests"
|
||||
"networkInterfacesPage": {
|
||||
"title": "Network Interfaces",
|
||||
"info": "By default, LocalSend uses all available network interfaces. You can exclude unwanted networks here. You need to restart the server to apply the changes.",
|
||||
"preview": "Preview",
|
||||
"whitelist": "Whitelist",
|
||||
"blacklist": "Blacklist"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,30 +19,49 @@
|
||||
}
|
||||
},
|
||||
"ar": {},
|
||||
"az": {},
|
||||
"bg": {},
|
||||
"bn": {},
|
||||
"ca": {},
|
||||
"cs": {},
|
||||
"da": {},
|
||||
"de": {},
|
||||
"el": {},
|
||||
"en-IN": {},
|
||||
"es-ES": {},
|
||||
"et": {},
|
||||
"eu": {},
|
||||
"fa": {},
|
||||
"fi": {},
|
||||
"fil-PH": {},
|
||||
"fr": {},
|
||||
"gl": {},
|
||||
"gu": {},
|
||||
"he": {},
|
||||
"hi": {},
|
||||
"hu": {},
|
||||
"id": {},
|
||||
"it": {},
|
||||
"ja": {},
|
||||
"km": {},
|
||||
"ko": {},
|
||||
"ml": {},
|
||||
"mn": {},
|
||||
"ms": {},
|
||||
"ne": {},
|
||||
"nl": {},
|
||||
"pl": {},
|
||||
"pt-BR": {},
|
||||
"pt-PT": {},
|
||||
"ro": {},
|
||||
"ru": {},
|
||||
"si": {},
|
||||
"sk": {},
|
||||
"sl": {},
|
||||
"sr": {},
|
||||
"sr-Cyrl": {},
|
||||
"sv": {},
|
||||
"ta": {},
|
||||
"th": {},
|
||||
"tr": {},
|
||||
"uk": {},
|
||||
|
||||
@@ -2,50 +2,56 @@
|
||||
"locale": "العربية",
|
||||
"appName": "LocalSend",
|
||||
"general": {
|
||||
"accept": "قبول",
|
||||
"accepted": "تم قبولها",
|
||||
"accept": "اقبل",
|
||||
"accepted": "قُبلت",
|
||||
"add": "إضافة",
|
||||
"advanced": "متقدم",
|
||||
"cancel": "إلغاء",
|
||||
"close": "إغلاق",
|
||||
"confirm": "تأكيد",
|
||||
"cancel": "ألغِ",
|
||||
"close": "أغلِق",
|
||||
"confirm": "أكِّد",
|
||||
"continueStr": "أكمل",
|
||||
"copy": "إنسخ",
|
||||
"copiedToClipboard": "نسخ إلى الحافظة",
|
||||
"copy": "انسخ",
|
||||
"copiedToClipboard": "نُسخ إلى الحافظة",
|
||||
"decline": "ارفض",
|
||||
"done": "انتهى",
|
||||
"delete": "حذف",
|
||||
"edit": "تعديل",
|
||||
"done": "تم",
|
||||
"delete": "احذف",
|
||||
"edit": "عدِّل",
|
||||
"error": "خطأ",
|
||||
"example": "مثال",
|
||||
"files": "ملفات",
|
||||
"finished": "انتهى",
|
||||
"hide": "إخفاء",
|
||||
"hide": "أخفِ",
|
||||
"off": "إيقاف",
|
||||
"offline": "غير متصل بالانترنت",
|
||||
"on": "تشغيل",
|
||||
"online": "متصل بالانترنت",
|
||||
"open": "مفتوح",
|
||||
"queue": "طابور",
|
||||
"open": "افتح",
|
||||
"queue": "صفّ",
|
||||
"quickSave": "حفظ سريع",
|
||||
"quickSaveFromFavorites": "حفظ سريع لـ \"المفضلات\"",
|
||||
"renamed": "اعادة تسمية",
|
||||
"reset": "إعادة ضبط",
|
||||
"restart": "إعادة تشغيل",
|
||||
"settings": "إعدادات",
|
||||
"settings": "الإعدادات",
|
||||
"skipped": "تم تخطيه",
|
||||
"start": "ابدأ",
|
||||
"stop": "قف",
|
||||
"save": "احفظ",
|
||||
"unchanged": "دون تغيير",
|
||||
"unknown": "مجهول",
|
||||
"noItemInClipboard": "لا توجد عناصر في الحافظة"
|
||||
"noItemInClipboard": "لا توجد عناصر في الحافظة."
|
||||
},
|
||||
"receiveTab": {
|
||||
"title": "استلام",
|
||||
"infoBox": {
|
||||
"ip": "IP:",
|
||||
"port": "منفذ:",
|
||||
"alias": "اسم مستعار:"
|
||||
"alias": "اسم الجهاز:"
|
||||
},
|
||||
"quickSave": {
|
||||
"off": "@:general.off",
|
||||
"favorites": "المفضلات",
|
||||
"on": "@:general.on"
|
||||
}
|
||||
},
|
||||
"sendTab": {
|
||||
@@ -67,6 +73,7 @@
|
||||
"nearbyDevices": "الأجهزة القريبة",
|
||||
"thisDevice": "هذا الجهاز",
|
||||
"scan": "ابحث عن أجهزة",
|
||||
"manualSending": "الإرسال اليدوي",
|
||||
"sendMode": "وضع الإرسال",
|
||||
"sendModes": {
|
||||
"single": "مستلم واحد",
|
||||
@@ -74,43 +81,51 @@
|
||||
"link": "مشاركة عبر الرابط"
|
||||
},
|
||||
"sendModeHelp": "شرح",
|
||||
"help": "يرجى التأكد من أن الهدف المطلوب موجود أيضًا في نفس شبكة wifi.",
|
||||
"help": "يُرجى التأكد من أن الهدف المطلوب موجود أيضًا في نفس شبكة الواي فاي.",
|
||||
"placeItems": "ضع العناصر للمشاركة."
|
||||
},
|
||||
"settingsTab": {
|
||||
"title": "إعدادات",
|
||||
"title": "الإعدادات",
|
||||
"general": {
|
||||
"title": "عام",
|
||||
"brightness": "سمة",
|
||||
"brightness": "السمة",
|
||||
"brightnessOptions": {
|
||||
"system": "نظام",
|
||||
"dark": "داكن",
|
||||
"light": "فاتح"
|
||||
"dark": "داكنة",
|
||||
"light": "فاتحة"
|
||||
},
|
||||
"color": "لون",
|
||||
"color": "اللون",
|
||||
"colorOptions": {
|
||||
"system": "النظام",
|
||||
"oled": "OLED"
|
||||
},
|
||||
"language": "لغة",
|
||||
"language": "اللغة",
|
||||
"languageOptions": {
|
||||
"system": "نظام"
|
||||
"system": "النظام"
|
||||
},
|
||||
"saveWindowPlacement": "إنهاء: حفظ موقع النافذة",
|
||||
"saveWindowPlacementWindows": "حفظ موضع النافذة بعد الخروج",
|
||||
"minimizeToTray": "إنهاء : أخفاء في شريط المهام",
|
||||
"launchAtStartup": "تشغيل تلقائي بعد تسجيل الدخول",
|
||||
"launchMinimized": "تشغيل تلقائي: ابدأ مخفيًا",
|
||||
"showInContextMenu": "إظهار LocalSend في قائمة السياق",
|
||||
"animations": "الرسوم المتحركة"
|
||||
},
|
||||
"receive": {
|
||||
"title": "استلم",
|
||||
"quickSave": "@:general.quickSave",
|
||||
"quickSaveFromFavorites": "@:general.quickSaveFromFavorites",
|
||||
"requirePin": "@:webSharePage.requirePin",
|
||||
"autoFinish": "إنهاء تلقائي",
|
||||
"destination": "حفظ في",
|
||||
"destination": "احفظ في المجلد",
|
||||
"downloads": "(التنزيلات)",
|
||||
"saveToGallery": "حفظ الوسائط في المعرض",
|
||||
"saveToHistory": "حفظ في التاريخ"
|
||||
},
|
||||
"send": {
|
||||
"title": "أرسِل",
|
||||
"shareViaLinkAutoAccept": "المشاركة عبر الرابط: قبول تلقائي"
|
||||
},
|
||||
"network": {
|
||||
"title": "شبكة الاتصال",
|
||||
"needRestart": "أعد تشغيل الخادم لتطبيق الإعدادات!",
|
||||
@@ -119,10 +134,18 @@
|
||||
"deviceType": "نوع الجهاز",
|
||||
"deviceModel": "نموذج الجهاز",
|
||||
"port": "منفذ",
|
||||
"discoveryTimeout": "مهلة الاكتشاف",
|
||||
"useSystemName": "استخدم اسم النظام",
|
||||
"generateRandomAlias": "ولّد كنية عشوائية",
|
||||
"portWarning": "ربما لا يتم الكشف عنك من قبل الأجهزة الأخرى لأنك تستخدم منفذ مخصص. (الافتراضي: {defaultPort})",
|
||||
"encryption": "التشفير",
|
||||
"encryption": "التعمية",
|
||||
"multicastGroup": "فرق البث المتعدد",
|
||||
"multicastGroupWarning": "ربما لا يتم الكشف عنك من قبل الأجهزة الأخرى لأنك تستخدم عنوان بث متعدد مخصص. (الافتراضي: {defaultMulticast})"
|
||||
"multicastGroupWarning": "ربما لا يتم الكشف عنك من قبل الأجهزة الأخرى لأنك تستخدم عنوان بث متعدد مخصص. (الافتراضي: {defaultMulticast})",
|
||||
"networkOptions": {
|
||||
"filtered": "مُصفاة",
|
||||
"all": "الكل"
|
||||
},
|
||||
"network": "الشبكة"
|
||||
},
|
||||
"other": {
|
||||
"title": "أخرى",
|
||||
@@ -143,20 +166,25 @@
|
||||
"solution": "هذه المشكلة عادة ما تكون مشكلة في جدار الحماية. يمكنك حل هذه المشكلة عن طريق السماح بالاتصالات الواردة (UDP و TCP) على المنفذ {port}.",
|
||||
"openFirewall": "افتح جدار الحماية"
|
||||
},
|
||||
"noDiscovery": {
|
||||
"symptom": "هذا الجهاز لا يمكنه اكتشاف الأجهزة الأخرى.",
|
||||
"solution": "يُرجى التأكد من أن جميع الأجهزة متصلة بنفس شبكة الواي فاي وتشارك نفس التكوين (المنفذ، عنوان البث المتعدد، التعمية). يمكنك محاولة كتابة عنوان IP للجهاز المستهدف يدويًا. إذا نجح ذلك، فكر في إضافة هذا الجهاز إلى قائمة المفضلات حتى يتم اكتشافه تلقائيًا في المستقبل."
|
||||
},
|
||||
"noConnection": {
|
||||
"symptom": "لا يمكن للجهازين اكتشاف بعضهما البعض ولا يمكنهما مشاركة الملفات.",
|
||||
"solution": "هل المشكلة موجودة على الجانبين؟ في هذه الحالة ، يجب عليك التأكد من أن الجهازين في نفس شبكة الواي فاي ويشتركان في نفس التكوين (المنفذ وعنوان البث المتعدد والتشفير). قد لا يسمح الواي فاي بالاتصال بين المشاركين. في هذه الحالة ، يجب تمكين هذا الخيار على الجهاز التوجيه."
|
||||
"solution": "هل المشكلة موجودة على كِلا الجانبين؟ إذا كان الأمر كذلك، يجب التأكد من أن كِلا الجهازين متصلان بنفس شبكة الواي فاي ويشتركان في نفس الإعدادات (المنفذ، عنوان البث المتعدد، التعمية). قد تمنع شبكة الواي فاي الاتصال بين المشاركين بسبب عزل نقطة الوصول (AP Isolation). في هذه الحالة، يجب تعطيل هذا الخيار على الراوتر."
|
||||
}
|
||||
},
|
||||
"receiveHistoryPage": {
|
||||
"title": "السجل",
|
||||
"openFolder": "فتح المجلد",
|
||||
"deleteHistory": "حذف السجل",
|
||||
"empty": "السجل فارغ.",
|
||||
"title": "التاريخ",
|
||||
"openFolder": "افتح المجلد",
|
||||
"deleteHistory": "احذف التاريخ",
|
||||
"empty": "التاريخ فارغ.",
|
||||
"entryActions": {
|
||||
"open": "فتح الملف",
|
||||
"open": "افتح الملف",
|
||||
"showInFolder": "اعرض في المجلد",
|
||||
"info": "معلومات",
|
||||
"deleteFromHistory": "حذف من السجل"
|
||||
"deleteFromHistory": "احذف من التاريخ"
|
||||
}
|
||||
},
|
||||
"apkPickerPage": {
|
||||
@@ -166,7 +194,7 @@
|
||||
"apps": "{n} تطبيق"
|
||||
},
|
||||
"selectedFilesPage": {
|
||||
"deleteAll": "حذف الكل"
|
||||
"deleteAll": "احذف الكل"
|
||||
},
|
||||
"receivePage": {
|
||||
"subTitle": {
|
||||
@@ -175,40 +203,49 @@
|
||||
},
|
||||
"subTitleMessage": "أرسل لك رسالة:",
|
||||
"subTitleLink": "أرسل لك ارتباط:",
|
||||
"canceled": "ألغى المرسل الطلب."
|
||||
"canceled": "أُلغِيَ المرسل الطلب."
|
||||
},
|
||||
"receiveOptionsPage": {
|
||||
"title": "خيارات",
|
||||
"destination": "@:settingsTab.receive.destination",
|
||||
"appDirectory": "(LocalSend folder)",
|
||||
"appDirectory": "(مجلد LocalSend)",
|
||||
"saveToGallery": "@:settingsTab.receive.saveToGallery",
|
||||
"saveToGalleryOff": "تم إيقافه تلقائيًا لوجود دلائل."
|
||||
"saveToGalleryOff": "تم إيقافه تلقائيًا لوجود مجلدات."
|
||||
},
|
||||
"sendPage": {
|
||||
"waiting": "بإنتظار الرد...",
|
||||
"waiting": "بإنتظار الرد…",
|
||||
"rejected": "المستلم رفض الطلب.",
|
||||
"tooManyAttempts": "@:web.tooManyAttempts",
|
||||
"busy": "المستلم مشغول بطلب آخر."
|
||||
},
|
||||
"progressPage": {
|
||||
"titleSending": "يتم إرسال الملفات",
|
||||
"titleReceiving": "يتم استلام الملفات",
|
||||
"savedToGallery": "تم الحفظ في الصور",
|
||||
"titleSending": "جارِ إرسال الملفات",
|
||||
"titleReceiving": "جارِ استلام الملفات",
|
||||
"savedToGallery": "حُفظ في الصور",
|
||||
"total": {
|
||||
"title": {
|
||||
"sending": "التقدم الكلي ({time})",
|
||||
"finishedError": "انتهى مع وجود خطأ",
|
||||
"canceledSender": "ألغي من قبل المرسل",
|
||||
"canceledReceiver": "ألغي من قبل المتلقي"
|
||||
"canceledSender": "أُلغِيَ من قِبل المرسل",
|
||||
"canceledReceiver": "أُلغِيَ من قِبل المتلقي"
|
||||
},
|
||||
"count": "ملفات: {curr} / {n}",
|
||||
"size": "حجم: {curr} / {n}",
|
||||
"speed": "سرعة: {speed}/ثانية"
|
||||
},
|
||||
"remainingTime": {
|
||||
"seconds": "{n}:{ss}",
|
||||
"minutes": "{n}:{ss}",
|
||||
"hours": "{h}س {m}د",
|
||||
"days": "{d}ي {h}س {m}د",
|
||||
"@hours": "استخدم 'س' لاختصار الساعات و'د' للدقائق",
|
||||
"@days": "استخدم 'ي' للأيام، و'س' للساعات، و'د' للدقائق"
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"title": "مشاركة عبر الرابط",
|
||||
"loading": "جاري بدء الخادم...",
|
||||
"stopping": "جاري إيقاف الخادم...",
|
||||
"loading": "جارِ بدء الخادم…",
|
||||
"stopping": "جارِ إيقاف الخادم…",
|
||||
"error": "حدث خطأ أثناء بدء الخادم.",
|
||||
"openLink": {
|
||||
"one": "افتح هذا الرابط في المتصفح:",
|
||||
@@ -217,6 +254,9 @@
|
||||
"requests": "الطلبات",
|
||||
"noRequests": "لا يوجد طلبات حتى الآن.",
|
||||
"encryption": "@:settingsTab.network.encryption",
|
||||
"autoAccept": "قبول الطلبات تلقائيًا",
|
||||
"requirePin": "يتطلب رمز PIN",
|
||||
"pinHint": "رمز PIN هو \"{pin}\"",
|
||||
"encryptionHint": "يستخدم تطبيق LocalSend شهادة موقع ذاتية التوقيع. يجب عليك قبولها في المتصفح.",
|
||||
"pendingRequests": "الطلبات المعلقة: {n}"
|
||||
},
|
||||
@@ -228,6 +268,7 @@
|
||||
],
|
||||
"author": "المؤلف",
|
||||
"contributors": "المساهمون",
|
||||
"packagers": "محزمي التطبيقات",
|
||||
"translators": "المترجمون"
|
||||
},
|
||||
"donationPage": {
|
||||
@@ -238,10 +279,10 @@
|
||||
"restore": "استعادة شراء"
|
||||
},
|
||||
"changelogPage": {
|
||||
"title": "التغييرات"
|
||||
"title": "سجل التغييرات"
|
||||
},
|
||||
"aliasGenerator(ignoreMissing, ignoreGpt)": {
|
||||
"@info": "قد تحتوي المناطق المختلفة على كلمات مختلفة ، وقد لا تتطابق 1:1",
|
||||
"@info": "قد تحتوي المناطق المختلفة على كلمات مختلفة، وقد لا تتطابق 1:1",
|
||||
"adjectives": [
|
||||
"محبوب",
|
||||
"جميل",
|
||||
@@ -318,43 +359,47 @@
|
||||
"title": "أضف إلى الاختيار",
|
||||
"content": "ماذا تريد أن تضيف؟"
|
||||
},
|
||||
"openFile": {
|
||||
"title": "افتح الملف",
|
||||
"content": "هل تريد فتح الملف المُستلم؟"
|
||||
},
|
||||
"addressInput": {
|
||||
"title": "أدخل العنوان",
|
||||
"hashtag": "رابطة هاشتاق",
|
||||
"ip": "عنوان IP",
|
||||
"recentlyUsed": "تم استخدامها مؤخرًا: "
|
||||
"recentlyUsed": "المستخدمة حديثًا: "
|
||||
},
|
||||
"cancelSession": {
|
||||
"title": "إلغاء نقل الملف",
|
||||
"title": "ألغِ نقل الملف",
|
||||
"content": "هل تريد حقًا إلغاء نقل الملف؟"
|
||||
},
|
||||
"cannotOpenFile": {
|
||||
"title": "لا يمكن فتح الملف",
|
||||
"content": "تعذر فتح \"{file}\". هل تم نقل هذا الملف أو إعادة تسميته أو حذفه؟"
|
||||
"content": "تعذر فتح \"{file}\". هل نُقل هذا الملف أو إعادة تسميته أو حذفه؟"
|
||||
},
|
||||
"encryptionDisabledNotice": {
|
||||
"title": "تم تعطيل التشفير",
|
||||
"content": "الاتصال يتم الآن عبر بروتوكول HTTP غير المشفر. لاستخدام HTTPS ، قم بتمكين التشفير مرة أخرى."
|
||||
"title": "التعمية مُعطّلة",
|
||||
"content": "الاتصال يتم الآن عبر بروتوكول HTTP غير المُعمّى. لاستخدام HTTPS، فعِّل التعمية مرة أخرى."
|
||||
},
|
||||
"errorDialog": {
|
||||
"title": "@:general.error"
|
||||
},
|
||||
"favoriteDialog": {
|
||||
"title": "المفضلة",
|
||||
"title": "المفضلات",
|
||||
"noFavorites": "لا توجد أجهزة مفضلة بعد.",
|
||||
"addFavorite": "إضافة"
|
||||
"addFavorite": "أضف"
|
||||
},
|
||||
"favoriteDeleteDialog": {
|
||||
"title": "حذف من المفضلة",
|
||||
"content": "هل ترغب حقًا في حذف \"{name}\" من قائمة المفضلة؟"
|
||||
"title": "احذف من المفضلات",
|
||||
"content": "هل ترغب حقًا في حذف \"{name}\" من المفضلات؟"
|
||||
},
|
||||
"favoriteEditDialog": {
|
||||
"titleAdd": "إضافة إلى المفضلة",
|
||||
"titleEdit": "تعديل",
|
||||
"name": "الاسم",
|
||||
"titleAdd": "أضف إلى المفضلات",
|
||||
"titleEdit": "اﻹعدادات",
|
||||
"name": "اسم الجهاز",
|
||||
"auto": "(تلقائي)",
|
||||
"ip": "عنوان IP",
|
||||
"port": "Port"
|
||||
"port": "المنفذ"
|
||||
},
|
||||
"fileInfo": {
|
||||
"title": "معلومات الملف",
|
||||
@@ -369,12 +414,12 @@
|
||||
"original": "أصلي: {original}"
|
||||
},
|
||||
"historyClearDialog": {
|
||||
"title": "محو السجل",
|
||||
"content": "هل ترغب حقًا في محو السجل بالكامل؟"
|
||||
"title": "امسح التاريخ",
|
||||
"content": "هل ترغب حقًا في مسح التاريخ بالكامل؟"
|
||||
},
|
||||
"localNetworkUnauthorized": {
|
||||
"title": "@:dialogs.noPermission.title",
|
||||
"description": "لا يمكن ل LocalSend العثور على الأجهزة الأخرى بدون الإذن بفحص الشبكة المحلية. يرجى منح هذا الإذن في الإعدادات.",
|
||||
"description": "لا يمكن ل LocalSend العثور على الأجهزة الأخرى بدون الإذن بفحص الشبكة المحلية. يُرجى منح هذا الإذن في الإعدادات.",
|
||||
"gotoSettings": "الإعدادات"
|
||||
},
|
||||
"messageInput": {
|
||||
@@ -387,75 +432,104 @@
|
||||
},
|
||||
"noPermission": {
|
||||
"title": "بدون إذن",
|
||||
"content": "لم تقم بمنح الأذونات اللازمة. يرجى منحها من الإعدادات."
|
||||
"content": "لم تمنح الأذونات اللازمة. يُرجى منحها في الإعدادات."
|
||||
},
|
||||
"notAvailableOnPlatform": {
|
||||
"title": "غير متاح",
|
||||
"content": "هذه الميزة متاحة فقط على:"
|
||||
},
|
||||
"qr": {
|
||||
"title": "رمز الاستجابة السريعة"
|
||||
"title": "رمز QR"
|
||||
},
|
||||
"quickActions": {
|
||||
"title": "إجراءات سريعة",
|
||||
"counter": "عداد",
|
||||
"prefix": "بادئة",
|
||||
"padZero": "بدأ مع أصفار",
|
||||
"sortBeforeCount": "قم بالفرز أبجديًا مسبقًا",
|
||||
"padZero": "احشو مع أصفار",
|
||||
"sortBeforeCount": "افرز أبجديًا مسبقًا (أ-ي)",
|
||||
"random": "عشوائي"
|
||||
},
|
||||
"quickSaveNotice": {
|
||||
"title": "@:general.quickSave",
|
||||
"content": "يتم قبول طلبات الملفات تلقائيًا. اعلم أن كل فرد في الشبكة المحلية يمكنه إرسال الملفات إليك."
|
||||
},
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"title": "@:general.quickSaveFromFavorites",
|
||||
"content": [
|
||||
"يتم الآن قبول طلبات الملفات تلقائيًا من الأجهزة الموجودة في قائمة المفضلات لديك.",
|
||||
"تحذير! في الوقت الحالي، هذا ليس آمنًا تمامًا، حيث يمكن للمخترق الذي لديه بصمة أي جهاز من قائمة المفضلات لديك أن يرسل لك ملفات دون قيود.",
|
||||
"ومع ذلك، يظل هذا الخيار أكثر أمانًا من السماح لجميع المستخدمين على الشبكة المحلية بإرسال الملفات إليك دون قيود."
|
||||
]
|
||||
},
|
||||
"pin": {
|
||||
"title": "أدخل رمز PIN"
|
||||
},
|
||||
"sendModeHelp": {
|
||||
"title": "أوضاع الإرسال",
|
||||
"single": "يقوم بإرسال الملفات إلى مستلم واحد. ستتم مسح الاختيار بعد انتهاء نقل الملف.",
|
||||
"multiple": "يقوم بإرسال الملفات إلى مستلمين متعددين. لن يتم مسح الاختيار.",
|
||||
"single": "يقوم بإرسال الملفات إلى مستلم واحد. سيتم مسح الاختيار بعد انتهاء نقل الملف.",
|
||||
"multiple": "يرسل الملفات إلى عدة مستلمين. لن يتم مسح التحديد بعد الانتهاء من نقل الملفات.",
|
||||
"link": "يمكن للمستلمين الذين لا يحتوون على LocalSend تنزيل الملفات المحددة عن طريق فتح الرابط في متصفحهم."
|
||||
},
|
||||
"zoom": {
|
||||
"title": "عنوان URL"
|
||||
}
|
||||
},
|
||||
"sanitization": {
|
||||
"empty": "لا يمكن أن يكون اسم الملف فارغًا",
|
||||
"invalid": "يحتوي اسم الملف على أحرف غير صالحة"
|
||||
},
|
||||
"tray": {
|
||||
"@info": "إرشادات Apple صارمة للغاية بشأن صياغة 'الإغلاق'.",
|
||||
"open": "@:general.open",
|
||||
"close": "أغلق LocalSend"
|
||||
"close": "أنهِ LocalSend",
|
||||
"closeWindows": "اخرج"
|
||||
},
|
||||
"web": {
|
||||
"waiting": "@:sendPage.waiting",
|
||||
"rejected": "مرفوضة",
|
||||
"enterPin": "أدخل رمز PIN",
|
||||
"invalidPin": "رمز PIN غير صالح",
|
||||
"tooManyAttempts": "محاولات كثيرة جدًا",
|
||||
"rejected": "رُفض",
|
||||
"files": "الملفات",
|
||||
"fileName": "اسم الملف",
|
||||
"size": "الحجم"
|
||||
},
|
||||
"assetPicker": {
|
||||
"@info": "Translations for the Media selection tool for Android and Iphone",
|
||||
"confirm": "تاكيد",
|
||||
"cancel": "إلغاء",
|
||||
"edit": "تعديل",
|
||||
"@info": "ترجمات أداة تحديد الوسائط لنظامي التشغيل أندرويد و آيفون",
|
||||
"confirm": "أكّد",
|
||||
"cancel": "ألغِ",
|
||||
"edit": "عدّل",
|
||||
"gifIndicator": "GIF",
|
||||
"loadFailed": "فشل التحميل",
|
||||
"original": "أصلي",
|
||||
"preview": "معاينة",
|
||||
"select": "تحديد",
|
||||
"select": "حدّد",
|
||||
"emptyList": "القائمة فارغة",
|
||||
"unSupportedAssetType": "نوع غير مدعوم",
|
||||
"unSupportedAssetType": "نوع الملف غير مدعوم.",
|
||||
"unableToAccessAll": "لا يمكن الوصول إلى جميع الملفات الموجودة على الجهاز",
|
||||
"viewingLimitedAssetsTip": "إظهار الملفات والألبومات التي يمكن للتطبيق الوصول إليها فقط.",
|
||||
"changeAccessibleLimitedAssets": "السماح بالوصول إلى ملفات إضافية",
|
||||
"accessAllTip": "يمكن للتطبيق الوصول فقط إلى بعض الملفات على الجهاز. انتقل إلى إعدادات النظام واسمح للتطبيق بالوصول إلى جميع الوسائط على الجهاز.",
|
||||
"goToSystemSettings": "فتح إعدادات النظام",
|
||||
"accessLimitedAssets": "الاستمرار مع صلاحيات محدوده",
|
||||
"changeAccessibleLimitedAssets": "انقر لتحديث الملفات التي يمكن الوصول إليها",
|
||||
"accessAllTip": "يمكن للتطبيق الوصول فقط إلى بعض الملفات على الجهاز. اذهب إلى إعدادات النظام واسمح للتطبيق بالوصول إلى جميع الوسائط على الجهاز.",
|
||||
"goToSystemSettings": "اذهب إلى إعدادات النظام",
|
||||
"accessLimitedAssets": "استمر بوصول محدود",
|
||||
"accessiblePathName": "ملفات يمكن الوصول إليها",
|
||||
"sTypeAudioLabel": "صوتي",
|
||||
"sTypeImageLabel": "صورة",
|
||||
"sTypeVideoLabel": "فيديو",
|
||||
"sTypeOtherLabel": "آخر",
|
||||
"sActionPlayHint": "تشغيل",
|
||||
"sTypeOtherLabel": "وسائط أخرى",
|
||||
"sActionPlayHint": "شغِّل",
|
||||
"sActionPreviewHint": "معاينة",
|
||||
"sActionSelectHint": "تحديد",
|
||||
"sActionSwitchPathLabel": "تبديل المسار",
|
||||
"sActionSelectHint": "حدّد",
|
||||
"sActionSwitchPathLabel": "غيّر المسار",
|
||||
"sActionUseCameraHint": "استخدم الكاميرا",
|
||||
"sNameDurationLabel": "مدة",
|
||||
"sUnitAssetCountLabel": "عدد"
|
||||
},
|
||||
"networkInterfacesPage": {
|
||||
"whitelist": "القائمة البيضاء",
|
||||
"title": "واجهات الشبكة",
|
||||
"blacklist": "القائمة السوداء",
|
||||
"info": "بشكل افتراضي، يستخدم LocalSend جميع واجهات الشبكة المتاحة. يمكنك استبعاد الشبكات غير المرغوب فيها هنا. تحتاج إلى إعادة تشغيل الخادم لتطبيق التغييرات.",
|
||||
"preview": "معاينة"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,457 @@
|
||||
{
|
||||
"locale": "Azərbaycanca",
|
||||
"appName": "LocalSend",
|
||||
"general": {
|
||||
"accept": "Qəbul et",
|
||||
"accepted": "Qəbul edildi",
|
||||
"add": "Əlavə et",
|
||||
"advanced": "Qabaqcıl",
|
||||
"cancel": "Ləğv et",
|
||||
"close": "Bağla",
|
||||
"confirm": "Təsdiqlə",
|
||||
"continueStr": "Davam et",
|
||||
"copy": "Köçür",
|
||||
"copiedToClipboard": "Məlumat buferinə köçürüldü",
|
||||
"decline": "İmtina et",
|
||||
"done": "Oldu",
|
||||
"delete": "Sil",
|
||||
"edit": "Düzəliş et",
|
||||
"error": "Xəta",
|
||||
"example": "Nümunə",
|
||||
"files": "Fayllar",
|
||||
"finished": "Bitdi",
|
||||
"hide": "Gizlət",
|
||||
"off": "Bağlı",
|
||||
"offline": "Oflayn",
|
||||
"on": "Aktiv",
|
||||
"online": "Onlayn",
|
||||
"open": "Aç",
|
||||
"queue": "Növbə",
|
||||
"quickSave": "Cəld yadda saxla",
|
||||
"quickSaveFromFavorites": "\"Sevimlilər\" üçün cəld yadda saxla",
|
||||
"renamed": "Adı dəyişdirildi",
|
||||
"reset": "Dəyişiklikləri geri qaytar",
|
||||
"restart": "Yenidən başlat",
|
||||
"settings": "Parametrlər",
|
||||
"skipped": "Ötürüldü",
|
||||
"start": "Başlat",
|
||||
"stop": "Dayandır",
|
||||
"save": "Yadda saxla",
|
||||
"unchanged": "Dəyişdirilməmiş",
|
||||
"unknown": "Naməlum",
|
||||
"noItemInClipboard": "Məlumat buferində element yoxdur."
|
||||
},
|
||||
"receiveTab": {
|
||||
"title": "Qəbul et",
|
||||
"infoBox": {
|
||||
"ip": "IP:",
|
||||
"port": "Port:",
|
||||
"alias": "Cihazın adı:"
|
||||
},
|
||||
"quickSave": {
|
||||
"off": "@:general.off",
|
||||
"favorites": "Sevimlilər",
|
||||
"on": "@:general.on"
|
||||
}
|
||||
},
|
||||
"sendTab": {
|
||||
"title": "Göndər",
|
||||
"selection": {
|
||||
"title": "Seçim",
|
||||
"files": "Fayllar: {files}",
|
||||
"size": "Ölçü: {size}"
|
||||
},
|
||||
"picker": {
|
||||
"file": "Fayl",
|
||||
"folder": "Qovluq",
|
||||
"media": "Media",
|
||||
"text": "Mətn",
|
||||
"app": "Tətbiq",
|
||||
"clipboard": "Yapışdır"
|
||||
},
|
||||
"shareIntentInfo": "Faylları daha rahat seçmək üçün mobil cihazınızın \"Paylaş\" xüsusiyyətin də istifadə edə bilərsiniz.",
|
||||
"nearbyDevices": "Yaxınlıqdakı cihazlar",
|
||||
"thisDevice": "Bu Cihaz",
|
||||
"scan": "Cihazları axtar",
|
||||
"manualSending": "Özünüz göndərin",
|
||||
"sendMode": "Göndərmə üsulu",
|
||||
"sendModes": {
|
||||
"single": "Tək qəbul edən",
|
||||
"multiple": "Çoxsaylı alıcılar",
|
||||
"link": "Keçid vasitəsilə paylaş"
|
||||
},
|
||||
"sendModeHelp": "İzahat",
|
||||
"help": "Xahiş olunur, əmin olun ki, istədiyiniz hədəf eyni Wi-Fi şəbəkəsindədir.",
|
||||
"placeItems": "Paylaşmaq üçün elementləri yerləşdir."
|
||||
},
|
||||
"settingsTab": {
|
||||
"title": "Tənzimləmələr",
|
||||
"general": {
|
||||
"title": "Ümumi",
|
||||
"brightness": "Tema",
|
||||
"brightnessOptions": {
|
||||
"system": "Sistem",
|
||||
"dark": "Qaranlıq",
|
||||
"light": "İşıqlı"
|
||||
},
|
||||
"color": "Rəng",
|
||||
"colorOptions": {
|
||||
"system": "Sistem",
|
||||
"oled": "OLED"
|
||||
},
|
||||
"language": "Dil",
|
||||
"languageOptions": {
|
||||
"system": "Sistem"
|
||||
},
|
||||
"saveWindowPlacement": "Çıxdıqdan sonra pəncərə mövqeyini saxla",
|
||||
"saveWindowPlacementWindows": "Çıxış sonrası pəncərə mövqeyin saxla",
|
||||
"minimizeToTray": "Bağlayanda Sistem Sahəsi/Menyu Cizgisinə kiçilt",
|
||||
"launchAtStartup": "Girişdən sonra birbaşa başlat",
|
||||
"launchMinimized": "Birbaşa başlat: Gizli başlat",
|
||||
"showInContextMenu": "Məzmun menyusunda LocalSend-i göstər",
|
||||
"animations": "Animasiyalar"
|
||||
},
|
||||
"receive": {
|
||||
"title": "Qəbul et",
|
||||
"quickSave": "@:general.quickSave",
|
||||
"quickSaveFromFavorites": "@:general.quickSaveFromFavorites",
|
||||
"autoFinish": "Avtomatik Bitirmə",
|
||||
"requirePin": "@:webSharePage.requirePin",
|
||||
"destination": "Qovluqda yadda saxla",
|
||||
"downloads": "(Yüklənənlər)",
|
||||
"saveToGallery": "Medianı qalereyada yadda saxla",
|
||||
"saveToHistory": "Tarixçədə yadda saxla"
|
||||
},
|
||||
"advancedSettings": "Qabaqcıl parametrlər",
|
||||
"send": {
|
||||
"title": "Göndər",
|
||||
"shareViaLinkAutoAccept": "\"Keçid vasitəsilə paylaş\" rejimində sorğuları avtomatik qəbul et"
|
||||
},
|
||||
"network": {
|
||||
"title": "Şəbəkə",
|
||||
"needRestart": "Parametrləri tətbiq etmək üçün serveri yenidən başladın!",
|
||||
"server": "Server",
|
||||
"alias": "Cihazın adı",
|
||||
"deviceType": "Cihazın tipi",
|
||||
"deviceModel": "Cihazın modeli",
|
||||
"port": "Port",
|
||||
"discoveryTimeout": "Axtarışın zaman aşımı",
|
||||
"useSystemName": "Sistemin adından istifadə et",
|
||||
"generateRandomAlias": "Təsadüfi ad yarat",
|
||||
"portWarning": "Fərdi portdan istifadə etdiyiniz üçün başqa cihazlar tərəfindən aşkarlanmaya bilərsiniz. (defolt: {defaultPort})",
|
||||
"multicastGroup": "Multicast ünvanı",
|
||||
"encryption": "Şifrələmə",
|
||||
"multicastGroupWarning": "Fərdi multicast ünvanından istifadə etdiyiniz üçün başqa cihazlar tərəfindən aşkarlanmaya bilərsiniz. (defolt: {defaultMulticast})",
|
||||
"network": "Şəbəkə",
|
||||
"networkOptions": {
|
||||
"all": "Hamısı",
|
||||
"filtered": "Filtrlənmiş"
|
||||
}
|
||||
},
|
||||
"other": {
|
||||
"title": "Digər",
|
||||
"support": "LocalSend-i dəstəklə",
|
||||
"donate": "İanə et",
|
||||
"privacyPolicy": "Məxfilik siyasəti",
|
||||
"termsOfUse": "İstifadə şərtləri"
|
||||
}
|
||||
},
|
||||
"receiveHistoryPage": {
|
||||
"openFolder": "Qovluğu aç",
|
||||
"deleteHistory": "Tarixçəni sil",
|
||||
"title": "Tarixçə",
|
||||
"entryActions": {
|
||||
"deleteFromHistory": "Tarixçədən sil",
|
||||
"open": "Faylı aç",
|
||||
"showInFolder": "Qovluqda göstər",
|
||||
"info": "Məlumat"
|
||||
},
|
||||
"empty": "Tarixçə boşdur."
|
||||
},
|
||||
"dialogs": {
|
||||
"noFiles": {
|
||||
"title": "Heç bir fayl seçilməyib",
|
||||
"content": "Zəhmət olmasa, ən azı bir fayl seçin."
|
||||
},
|
||||
"fileInfo": {
|
||||
"size": "Ölçüsü:",
|
||||
"path": "Yol:",
|
||||
"sender": "Göndərən:",
|
||||
"title": "Fayl məlumatı",
|
||||
"fileName": "Faylın adı:",
|
||||
"time": "Vaxt:"
|
||||
},
|
||||
"qr": {
|
||||
"title": "QR-kod"
|
||||
},
|
||||
"historyClearDialog": {
|
||||
"content": "Bütün tarixçəni silmək istədiyinizə əminsiniz?",
|
||||
"title": "Tarixçəni təmizlə"
|
||||
},
|
||||
"localNetworkUnauthorized": {
|
||||
"title": "@:dialogs.noPermission.title",
|
||||
"description": "LocalSend lokal şəbəkəni skan etmək icazəsi olmadan digər cihazları tapa bilmir. Zəhmət olmasa, parametrlərdən bu icazəni verin.",
|
||||
"gotoSettings": "Parametrlər"
|
||||
},
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"content": [
|
||||
"Fayl sorğuları artıq sevimlilər siyahısındakı cihazlardan avtomatik qəbul edəcək.",
|
||||
"Xəbərdarlıq! Hal-hazırda bu, tamamilə təhlükəsiz deyil, çünki sevimlilər siyahısındakı istənilən cihazın barmaq izinə sahib olan haker məhdudiyyətsiz sizə fayllar göndərə bilər.",
|
||||
"Bununla belə, bu seçim lokal şəbəkədəki bütün istifadəçilərin sizə məhdudiyyətsiz fayllar göndərməsinə icazə verməkdən daha təhlükəsizdir."
|
||||
],
|
||||
"title": "@:general.quickSaveFromFavorites"
|
||||
},
|
||||
"pin": {
|
||||
"title": "PIN-i daxil et"
|
||||
},
|
||||
"sendModeHelp": {
|
||||
"title": "Göndərmə rejimləri",
|
||||
"single": "Faylları bir cihaza göndərir. Faylların ötürülməsi başa çatdıqdan sonra seçim silinəcək.",
|
||||
"multiple": "Faylları birdən çox cihaza göndərir. Faylların ötürülməsi tamamlandıqdan sonra seçim silinməyəcək.",
|
||||
"link": "LocalSend-i quraşdırmamış alıcılar linki brauzerlərində açaraq seçilmiş faylları endirə bilərlər."
|
||||
},
|
||||
"favoriteDialog": {
|
||||
"addFavorite": "Əlavə et",
|
||||
"title": "Sevimlilər",
|
||||
"noFavorites": "Hələ ki, sevimli cihaz yoxdur."
|
||||
},
|
||||
"errorDialog": {
|
||||
"title": "@:general.error"
|
||||
},
|
||||
"favoriteEditDialog": {
|
||||
"titleAdd": "Sevimlilərə əlavə et",
|
||||
"titleEdit": "Parametrlər",
|
||||
"name": "Cihazın adı",
|
||||
"auto": "(avtomatik)",
|
||||
"ip": "IP ünvan",
|
||||
"port": "Port"
|
||||
},
|
||||
"addFile": {
|
||||
"title": "Seçilmişlərə əlavə et",
|
||||
"content": "Nə əlavə etmək istəyirsiniz?"
|
||||
},
|
||||
"openFile": {
|
||||
"title": "Faylı aç",
|
||||
"content": "Qəbul edilmiş faylı açmaq istəyirsiniz?"
|
||||
},
|
||||
"addressInput": {
|
||||
"title": "Ünvanı daxil et",
|
||||
"hashtag": "Heşteq",
|
||||
"ip": "IP ünvan",
|
||||
"recentlyUsed": "Son istifadə olunan: "
|
||||
},
|
||||
"cancelSession": {
|
||||
"title": "Fayl transferini ləğv et",
|
||||
"content": "Siz həqiqətən faylların transferini ləğv etmək istəyirsiniz?"
|
||||
},
|
||||
"cannotOpenFile": {
|
||||
"title": "Faylı açmaq mümkün olmadı",
|
||||
"content": "\"{file}\" faylını açmaq mümkün olmadı. Fayl köçürülmüş, adı dəyişdirilmiş və ya silinmiş ola bilər?"
|
||||
},
|
||||
"encryptionDisabledNotice": {
|
||||
"title": "Şifrələmə deaktiv edilib",
|
||||
"content": "Əlaqə artıq şifrələnməmiş HTTP protokolu vasitəsilə həyata keçirilir. HTTPS protokolundan istifadə etmək üçün şifrələməni yenidən aktiv edin."
|
||||
},
|
||||
"favoriteDeleteDialog": {
|
||||
"title": "Sevimlilərdən sil",
|
||||
"content": "Həqiqətən də \"{name}\" cihazını sevimlilərdən silmək istəyirsiniz?"
|
||||
},
|
||||
"fileNameInput": {
|
||||
"title": "Faylın adını daxil et",
|
||||
"original": "Orijinal: {original}"
|
||||
},
|
||||
"messageInput": {
|
||||
"title": "Mesaj yaz",
|
||||
"multiline": "Çoxsətirli"
|
||||
},
|
||||
"noPermission": {
|
||||
"title": "İcazə yoxdur",
|
||||
"content": "Siz lazımi icazələri verməmisiniz. Zəhmət olmasa, parametrlərdə icazə verin."
|
||||
},
|
||||
"notAvailableOnPlatform": {
|
||||
"title": "Mövcud deyil",
|
||||
"content": "Bu funksiya sadəcə burada mövcuddur:"
|
||||
},
|
||||
"quickActions": {
|
||||
"title": "Sürətli hərəkətlər",
|
||||
"counter": "Sayğac",
|
||||
"prefix": "Prefiks",
|
||||
"padZero": "Sıfırlar ilə doldur",
|
||||
"sortBeforeCount": "Qabaqcadan əlifba sırası ilə sırala",
|
||||
"random": "Təsadüfi"
|
||||
},
|
||||
"quickSaveNotice": {
|
||||
"title": "@:general.quickSave",
|
||||
"content": "Fayl sorğuları artıq avtomatik qəbul ediləcək. Nəzərə alın ki, lokal şəbəkədəki hər kəs sizə fayl göndərə bilər."
|
||||
},
|
||||
"zoom": {
|
||||
"title": "URL"
|
||||
}
|
||||
},
|
||||
"troubleshootPage": {
|
||||
"title": "Problemləri həll etmə",
|
||||
"noDiscovery": {
|
||||
"solution": "Zəhmət olmasa, bütün cihazların eyni Wi-Fi şəbəkəsində olduğundan və eyni konfiqurasiyanı (port, multicast ünvanı, şifrələmə) paylaşdığından əmin olun. Hədəf cihazın IP ünvanını əl ilə yazmağı cəhd edə bilərsiniz. Əgər bu işə yararsa, gələcəkdə avtomatik aşkarlanması üçün bu cihazı sevimlilərə əlavə etməyi nəzərdən keçirin.",
|
||||
"symptom": "Bu cihaz digər cihazları aşkar edə bilməz."
|
||||
},
|
||||
"subTitle": "Tətbiq gözlənildiyi kimi işləmir? Burada problemlərin ümumi həll yollarını tapa bilərsiniz.",
|
||||
"firewall": {
|
||||
"symptom": "Bu cihaz digər cihazlara fayl göndərə bilər, lakin qəbul edə bilməz.",
|
||||
"solution": "Bu, çox güman ki, firewall problemidir. Siz {port} portunda daxil olan bağlantılara (UDP və TCP) icazə verməklə bunu həll edə bilərsiniz.",
|
||||
"openFirewall": "Şəbəkə ekranını (firewall) aç"
|
||||
},
|
||||
"noConnection": {
|
||||
"solution": "Problem hər iki tərəfdə də var? Əgər belədirsə, hər iki cihazın eyni Wi-Fi şəbəkəsində olduğundan və eyni konfiqurasiyanı (port, multicast ünvanı, şifrələmə) paylaşdığından əmin olmalısınız. Wi-Fi şəbəkəsi Access Point (AP) izolyasiyasına görə iştirakçılar arasında ünsiyyətə icazə verməyə bilər. Bu halda, bu seçim ruterdə söndürülməlidir.",
|
||||
"symptom": "Hər iki cihaz bir-birini aşkarlaya bilmir və faylları paylaşa bilmir."
|
||||
},
|
||||
"solution": "Həll:",
|
||||
"fixButton": "Avtomatik düzəlt"
|
||||
},
|
||||
"webSharePage": {
|
||||
"stopping": "Server dayandırılır…",
|
||||
"pendingRequests": "Gözləyən sorğular: {n}",
|
||||
"loading": "Server aktivləşdirilir…",
|
||||
"error": "Serveri aktivləşdirərkən xəta baş verdi.",
|
||||
"openLink": {
|
||||
"one": "Bu keçidi brauzerdə aç:",
|
||||
"other": "Bu keçidlərdən birini brauzerdə aç:"
|
||||
},
|
||||
"title": "Keçid vasitəsilə paylaş",
|
||||
"requests": "Sorğular",
|
||||
"noRequests": "Hələ ki, heç bir sorğu yoxdur.",
|
||||
"encryption": "@:settingsTab.network.encryption",
|
||||
"autoAccept": "Sorğuları avtomatik qəbul et",
|
||||
"requirePin": "PIN tələb et",
|
||||
"pinHint": "Sizin PIN: \"{pin}\"",
|
||||
"encryptionHint": "LocalSend özü imzalanmış sertifikatdan istifadə edir. Siz onu brauzerinizdə qəbul etməlisiniz."
|
||||
},
|
||||
"networkInterfacesPage": {
|
||||
"info": "Defolt olaraq, LocalSend bütün mövcud şəbəkə interfeyslərindən istifadə edir. Burada istənilməyən şəbəkələri istisna edə bilərsiniz. Dəyişiklikləri tətbiq etmək üçün serveri yenidən başlatmalısınız.",
|
||||
"whitelist": "Ağ siyahı",
|
||||
"blacklist": "Qara siyahı",
|
||||
"title": "Şəbəkə interfeysləri",
|
||||
"preview": "Önizlə"
|
||||
},
|
||||
"assetPicker": {
|
||||
"accessiblePathName": "Əlçatan fayllar",
|
||||
"sTypeAudioLabel": "Audio",
|
||||
"loadFailed": "Yükləmə uğursuz oldu",
|
||||
"accessLimitedAssets": "Məhdud icazə ilə davam et",
|
||||
"preview": "Önizləmə",
|
||||
"select": "Seç",
|
||||
"emptyList": "Boş siyahı",
|
||||
"unSupportedAssetType": "Dəstəklənməyən fayl tipi.",
|
||||
"unableToAccessAll": "Cihazdakı bütün fayllara daxil olmaq mümkün deyil",
|
||||
"viewingLimitedAssetsTip": "Yalnız proqram üçün əlçatan olan fayl və albomlara bax.",
|
||||
"@info": "Android və iPhone üçün Media seçim aləti üçün tərcümələr",
|
||||
"confirm": "Təsdiqlə",
|
||||
"cancel": "İmtina",
|
||||
"edit": "Düzəliş et",
|
||||
"gifIndicator": "GIF",
|
||||
"original": "Orijinal",
|
||||
"changeAccessibleLimitedAssets": "Əlçatan faylları yeniləmək üçün kliklə",
|
||||
"accessAllTip": "Tətbiq cihazdakı yalnız bəzi fayllara daxil ola bilər. Sistem parametrlərinə gedin və tətbiqin cihazdakı bütün mediaya daxil olmasına icazə verin.",
|
||||
"goToSystemSettings": "Sistem parametrlərinə get",
|
||||
"sTypeImageLabel": "Şəkil",
|
||||
"sTypeVideoLabel": "Video",
|
||||
"sTypeOtherLabel": "Digər media",
|
||||
"sActionPlayHint": "aç",
|
||||
"sActionPreviewHint": "önizləmə",
|
||||
"sActionSelectHint": "seç",
|
||||
"sActionSwitchPathLabel": "yolu dəyiş",
|
||||
"sActionUseCameraHint": "kamera istifadə et",
|
||||
"sNameDurationLabel": "müddət",
|
||||
"sUnitAssetCountLabel": "say"
|
||||
},
|
||||
"sendPage": {
|
||||
"rejected": "Qəbul edən bu sorğudan imtina etdi.",
|
||||
"waiting": "Qarşı tərəfdən cavab gözlənilir…",
|
||||
"tooManyAttempts": "@:web.tooManyAttempts",
|
||||
"busy": "Qəbul edən başqa sorğu ilə məşğuldur."
|
||||
},
|
||||
"web": {
|
||||
"fileName": "Fayl adı",
|
||||
"files": "Fayllar",
|
||||
"waiting": "@:sendPage.waiting",
|
||||
"enterPin": "PIN-i daxil et",
|
||||
"invalidPin": "Səhv PIN",
|
||||
"tooManyAttempts": "Çoxsaylı cəhd",
|
||||
"rejected": "Rədd edildi",
|
||||
"size": "Ölçü"
|
||||
},
|
||||
"tray": {
|
||||
"closeWindows": "Çıxış",
|
||||
"@info": "Apple təlimatları \"bağla\" ifadələri ilə bağlı çox ciddidir.",
|
||||
"open": "@:general.open",
|
||||
"close": "LocalSend-dən çıx"
|
||||
},
|
||||
"apkPickerPage": {
|
||||
"apps": "{n} tətbiq",
|
||||
"title": "Tətbiqlər (APK)",
|
||||
"excludeSystemApps": "Sistem tətbiqlərini istisna et",
|
||||
"excludeAppsWithoutLaunchIntent": "Açıla bilməyən tətbiqləri istisna et"
|
||||
},
|
||||
"receivePage": {
|
||||
"subTitleLink": "sənə keçid göndərdi:",
|
||||
"canceled": "Göndərən bu sorğunu ləğv etdi.",
|
||||
"subTitle": {
|
||||
"one": "sənə fayl göndərmək istəyir",
|
||||
"other": "sənə {n} fayl göndərmək istəyir"
|
||||
},
|
||||
"subTitleMessage": "sənə mesaj göndərdi:"
|
||||
},
|
||||
"receiveOptionsPage": {
|
||||
"title": "Seçimlər",
|
||||
"destination": "@:settingsTab.receive.destination",
|
||||
"appDirectory": "(LocalSend qovluğu)",
|
||||
"saveToGallery": "@:settingsTab.receive.saveToGallery",
|
||||
"saveToGalleryOff": "Qovluqlar olduğu üçün avtomatik söndürülür."
|
||||
},
|
||||
"progressPage": {
|
||||
"total": {
|
||||
"title": {
|
||||
"canceledSender": "Göndərən tərəfindən dayandırıldı",
|
||||
"sending": "Ümumi proses ({time})",
|
||||
"finishedError": "Proses xəta verərək dayandı",
|
||||
"canceledReceiver": "Qəbul edən tərəfindən dayandırıldı"
|
||||
},
|
||||
"count": "Fayl: {curr} / {n}",
|
||||
"size": "Ölçü: {curr} / {n}",
|
||||
"speed": "Sürət: {speed}/s"
|
||||
},
|
||||
"titleSending": "Fayllar göndərilir",
|
||||
"titleReceiving": "Fayllar qəbul edilir",
|
||||
"savedToGallery": "Qalereyada saxlanıldı"
|
||||
},
|
||||
"donationPage": {
|
||||
"info": "LocalSend pulsuz, açıq mənbəlidir və heç bir reklam yoxdur. Proqramı bəyənirsinizsə, ianə ilə inkişafını dəstəkləyə bilərsiniz.",
|
||||
"title": "İanə et",
|
||||
"donate": "{amount} ianə et",
|
||||
"thanks": "Çox təşəkkür edirəm!",
|
||||
"restore": "Satın almaları bərpa et"
|
||||
},
|
||||
"selectedFilesPage": {
|
||||
"deleteAll": "Hamısını sil"
|
||||
},
|
||||
"aboutPage": {
|
||||
"description": [
|
||||
"LocalSend internet bağlantısına ehtiyac olmadan lokal şəbəkə üzərindən yaxınlıqdakı cihazlarla faylları və mesajları təhlükəsiz paylaşmağa imkan verən pulsuz, açıq mənbəli proqramdır.",
|
||||
"Bu proqram Android, iOS, macOS, Windows və Linux sistemlərində mövcuddur. Bütün yükləmə variantlarını rəsmi saytda tapa bilərsiniz."
|
||||
],
|
||||
"author": "Müəllif",
|
||||
"contributors": "Töhfə verənlər",
|
||||
"title": "LocalSend haqqında",
|
||||
"packagers": "Paketləyənlər",
|
||||
"translators": "Tərcüməçilər"
|
||||
},
|
||||
"changelogPage": {
|
||||
"title": "Versiya jurnalı"
|
||||
},
|
||||
"aliasGenerator(ignoreMissing, ignoreGpt)": {
|
||||
"@info": "Fərqli dillərdə fərqli sözlər ola bilər, 1:1 uyğun olmaya bilər"
|
||||
},
|
||||
"sanitization": {
|
||||
"empty": "Fayl adı boş ola bilməz",
|
||||
"invalid": "Fayl adında etibarsız simvollar ola bilməz"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,465 @@
|
||||
{
|
||||
"locale": "Български",
|
||||
"appName": "LocalSend",
|
||||
"general": {
|
||||
"accept": "Приеми",
|
||||
"accepted": "Прието",
|
||||
"add": "Добави",
|
||||
"advanced": "Разширено",
|
||||
"cancel": "Отказ",
|
||||
"close": "Затвори",
|
||||
"confirm": "Потвърди",
|
||||
"continueStr": "Продължи",
|
||||
"copy": "Копирай",
|
||||
"copiedToClipboard": "Копирано в клипборда",
|
||||
"decline": "Откажи",
|
||||
"done": "Готово",
|
||||
"delete": "Изтриване",
|
||||
"edit": "Редактирай",
|
||||
"error": "Грешка",
|
||||
"example": "Пример",
|
||||
"files": "Файлове",
|
||||
"finished": "Завършено",
|
||||
"hide": "Скрий",
|
||||
"off": "Изключено",
|
||||
"offline": "Офлайн",
|
||||
"on": "Включено",
|
||||
"online": "Онлайн",
|
||||
"open": "Отвори",
|
||||
"queue": "Опашка",
|
||||
"quickSave": "Бързо запазване",
|
||||
"quickSaveFromFavorites": "Бързо запазване за „Любими“",
|
||||
"renamed": "Преименуван",
|
||||
"reset": "Отмяна на промените",
|
||||
"restart": "Рестартирай",
|
||||
"settings": "Настройки",
|
||||
"skipped": "Пропуснато",
|
||||
"start": "Започни",
|
||||
"stop": "Спри",
|
||||
"save": "Запази",
|
||||
"unchanged": "Непроменено",
|
||||
"unknown": "Неизвестно",
|
||||
"noItemInClipboard": "Няма елементи в клипборда."
|
||||
},
|
||||
"receiveTab": {
|
||||
"title": "Получаване",
|
||||
"infoBox": {
|
||||
"ip": "IP:",
|
||||
"port": "Порт:",
|
||||
"alias": "Име на устройството:"
|
||||
},
|
||||
"quickSave": {
|
||||
"off": "@:general.off",
|
||||
"favorites": "Любими",
|
||||
"on": "@:general.on"
|
||||
}
|
||||
},
|
||||
"sendTab": {
|
||||
"title": "Изпращане",
|
||||
"selection": {
|
||||
"title": "Избор",
|
||||
"files": "Файлове: {files}",
|
||||
"size": "Размер: {size}"
|
||||
},
|
||||
"picker": {
|
||||
"file": "Файл",
|
||||
"folder": "Папка",
|
||||
"media": "Медия",
|
||||
"text": "Текст",
|
||||
"app": "Приложение",
|
||||
"clipboard": "Постави"
|
||||
},
|
||||
"shareIntentInfo": "Можете също да използвате функцията „Споделяне“ на вашето мобилно устройство, за да избирате файлове по-лесно.",
|
||||
"nearbyDevices": "Устройства в близост",
|
||||
"thisDevice": "Това устройство",
|
||||
"scan": "Търсене на устройства",
|
||||
"manualSending": "Ръчно изпращане",
|
||||
"sendMode": "Режим на изпращане",
|
||||
"sendModes": {
|
||||
"single": "Единичен получател",
|
||||
"multiple": "Множество получатели",
|
||||
"link": "Споделете чрез връзка"
|
||||
},
|
||||
"sendModeHelp": "Обяснение",
|
||||
"help": "Моля, уверете се, че желаната цел също е в същата Wi-Fi мрежа.",
|
||||
"placeItems": "Поставете елементи за споделяне."
|
||||
},
|
||||
"settingsTab": {
|
||||
"title": "Настройки",
|
||||
"general": {
|
||||
"title": "Общи",
|
||||
"brightness": "Тема",
|
||||
"brightnessOptions": {
|
||||
"system": "Система",
|
||||
"dark": "Тъмна",
|
||||
"light": "Светла"
|
||||
},
|
||||
"color": "Цвят",
|
||||
"colorOptions": {
|
||||
"system": "Система",
|
||||
"oled": "OLED"
|
||||
},
|
||||
"language": "Език",
|
||||
"languageOptions": {
|
||||
"system": "Система"
|
||||
},
|
||||
"saveWindowPlacement": "Запази позицията на прозореца след напускане",
|
||||
"saveWindowPlacementWindows": "Запази позицията на прозореца след излизане",
|
||||
"minimizeToTray": "Минимизирай в Системна област/Лента с менюта при затваряне",
|
||||
"launchAtStartup": "Автоматично стартиране след влизане",
|
||||
"launchMinimized": "Автоматично стартиране: Стартирай скрито",
|
||||
"showInContextMenu": "Покажи LocalSend в контекстното меню",
|
||||
"animations": "Анимации"
|
||||
},
|
||||
"receive": {
|
||||
"title": "Получаване",
|
||||
"quickSave": "@:general.quickSave",
|
||||
"quickSaveFromFavorites": "@:general.quickSaveFromFavorites",
|
||||
"requirePin": "@:webSharePage.requirePin",
|
||||
"autoFinish": "Автоматично завършване",
|
||||
"destination": "Запази в папка",
|
||||
"downloads": "(Изтегляния)",
|
||||
"saveToGallery": "Запази медия в галерия",
|
||||
"saveToHistory": "Запази в история"
|
||||
},
|
||||
"send": {
|
||||
"title": "Изпращане",
|
||||
"shareViaLinkAutoAccept": "Автоматично приемане на заявки в режим \"Споделяне чрез връзка\""
|
||||
},
|
||||
"network": {
|
||||
"title": "Мрежа",
|
||||
"needRestart": "Рестартирай сървъра, за да приложите настройките!",
|
||||
"server": "Сървър",
|
||||
"alias": "Име на устройството",
|
||||
"deviceType": "Тип на устройството",
|
||||
"deviceModel": "Модел на устройството",
|
||||
"port": "Порт",
|
||||
"discoveryTimeout": "Изчакване за откриване",
|
||||
"useSystemName": "Използвай системно име",
|
||||
"generateRandomAlias": "Създаване на случаен псевдоним",
|
||||
"portWarning": "Възможно е да не бъдете открити от други устройства, защото използвате персонализиран порт. (default: {defaultPort})",
|
||||
"encryption": "Шифроване",
|
||||
"multicastGroup": "Адрес за множествено предаване",
|
||||
"multicastGroupWarning": "Възможно е да не бъдете открити от други устройства, защото използвате персонализиран адрес за множествено предаване. (default: {defaultMulticast})",
|
||||
"network": "Мрежа",
|
||||
"networkOptions": {
|
||||
"all": "Всички",
|
||||
"filtered": "Филтриране"
|
||||
}
|
||||
},
|
||||
"other": {
|
||||
"title": "Други",
|
||||
"support": "Поддръжка на LocalSend",
|
||||
"donate": "Дарение",
|
||||
"privacyPolicy": "Политика за поверителност",
|
||||
"termsOfUse": "Условия за ползване"
|
||||
},
|
||||
"advancedSettings": "Разширени настройки"
|
||||
},
|
||||
"troubleshootPage": {
|
||||
"title": "Отстраняване на неизправност",
|
||||
"subTitle": "Приложението не работи ли според очакванията? Тук можете да намерите някои общи решения на проблеми.",
|
||||
"solution": "Решение:",
|
||||
"fixButton": "Автоматично поправяне",
|
||||
"firewall": {
|
||||
"symptom": "Това устройство може да изпраща файлове на други устройства, но други устройства не могат да изпращат файлове на това устройство.",
|
||||
"solution": "Това най-вероятно е проблем със защитната стена. Можете да разрешите това, като разрешите входящи връзки (UDP и TCP) на порт {port}.",
|
||||
"openFirewall": "Отворете защитната стена"
|
||||
},
|
||||
"noDiscovery": {
|
||||
"symptom": "Това устройство не може да открие други устройства.",
|
||||
"solution": "Моля, уверете се, че всички устройства са в една и съща Wi-Fi мрежа и споделят една и съща конфигурация (порт, адрес за множествено предаване, криптиране). Можете да опитате да въведете ръчно IP адреса на целевото устройство. Ако това работи, обмислете добавянето на това устройство към любими, за да може да бъде автоматично открито в бъдеще."
|
||||
},
|
||||
"noConnection": {
|
||||
"symptom": "И двете устройства не могат да се откриват, нито могат да споделят файлове.",
|
||||
"solution": "Проблемът и от двете страни ли съществува? Ако е така, трябва да се уверите, че и двете устройства са в една и съща Wi-Fi мрежа и споделят една и съща конфигурация (порт, адрес за множествено предаване, криптиране). Wi-Fi мрежата може да не позволява комуникация между участниците поради изолация на точката за достъп (AP). В този случай тази опция трябва да бъде деактивирана на рутера."
|
||||
}
|
||||
},
|
||||
"receiveHistoryPage": {
|
||||
"title": "История",
|
||||
"openFolder": "Отвори папка",
|
||||
"deleteHistory": "Изтриване на историята",
|
||||
"empty": "Историята е празна.",
|
||||
"entryActions": {
|
||||
"open": "Отвори файл",
|
||||
"showInFolder": "Покажи в папка",
|
||||
"info": "Информация",
|
||||
"deleteFromHistory": "Изтриване от историята"
|
||||
}
|
||||
},
|
||||
"apkPickerPage": {
|
||||
"title": "Приложения (APK)",
|
||||
"excludeSystemApps": "Изключване на системни приложения",
|
||||
"excludeAppsWithoutLaunchIntent": "Изключване на приложения, които не могат да се стартират",
|
||||
"apps": "{n} Приложения"
|
||||
},
|
||||
"selectedFilesPage": {
|
||||
"deleteAll": "Изтриване на всички"
|
||||
},
|
||||
"receivePage": {
|
||||
"subTitle": {
|
||||
"one": "иска да ви изпрати файл",
|
||||
"other": "иска да ви изпрати {n} файлове"
|
||||
},
|
||||
"subTitleMessage": "Ви изпрати съобщение:",
|
||||
"subTitleLink": "Ви изпрати връзка:",
|
||||
"canceled": "Подателят е отменил заявката."
|
||||
},
|
||||
"receiveOptionsPage": {
|
||||
"title": "Опции",
|
||||
"destination": "@:settingsTab.receive.destination",
|
||||
"appDirectory": "(папка на LocalSend)",
|
||||
"saveToGallery": "@:settingsTab.receive.saveToGallery",
|
||||
"saveToGalleryOff": "Изключва се автоматично, защото има папки."
|
||||
},
|
||||
"sendPage": {
|
||||
"waiting": "В очакване на отговор…",
|
||||
"rejected": "Получателят е отхвърлил заявката.",
|
||||
"tooManyAttempts": "@:web.tooManyAttempts",
|
||||
"busy": "Получателят е зает с друга заявка."
|
||||
},
|
||||
"progressPage": {
|
||||
"titleSending": "Изпращане на файлове",
|
||||
"titleReceiving": "Получаване на файлове",
|
||||
"savedToGallery": "Запазено в Снимки",
|
||||
"total": {
|
||||
"title": {
|
||||
"sending": "Общ напредък ({time})",
|
||||
"finishedError": "Завършено с грешка",
|
||||
"canceledSender": "Отменено от подателя",
|
||||
"canceledReceiver": "Отменено от получателя"
|
||||
},
|
||||
"count": "Файлове: {curr} / {n}",
|
||||
"size": "Размер: {curr} / {n}",
|
||||
"speed": "Скорост: {speed}/s"
|
||||
},
|
||||
"remainingTime": {
|
||||
"seconds": "{n}:{ss}",
|
||||
"minutes": "{n}:{ss}",
|
||||
"hours": "{h}ч {m}мин",
|
||||
"days": "{d}д {h}ч {m}мин",
|
||||
"@hours": "Използвайте „h“ като съкращение за часове и „m“ за минути",
|
||||
"@days": "Използвайте „d“ за дни, „h“ за часове и „m“ за минути"
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"title": "Споделете чрез връзка",
|
||||
"loading": "Стартиране на сървъра…",
|
||||
"stopping": "Спиране на сървъра…",
|
||||
"error": "Възникна грешка при стартиране на сървъра.",
|
||||
"openLink": {
|
||||
"one": "Отворете тази връзка във вашия браузър:",
|
||||
"other": "Отворете една от тези връзки във вашия браузър:"
|
||||
},
|
||||
"requests": "Заявки",
|
||||
"noRequests": "Все още няма заявки.",
|
||||
"encryption": "@:settingsTab.network.encryption",
|
||||
"autoAccept": "Автоматично приемане на заявки",
|
||||
"requirePin": "Изискване на ПИН код",
|
||||
"pinHint": "ПИН кодът е „{pin}“",
|
||||
"encryptionHint": "LocalSend използва самоподписан сертификат. Трябва да го приемете във вашия браузър.",
|
||||
"pendingRequests": "Чакащи заявки: {n}"
|
||||
},
|
||||
"aboutPage": {
|
||||
"title": "Относно LocalSend",
|
||||
"description": [
|
||||
"LocalSend е безплатно приложение с отворен код, което ви позволява сигурно да споделяте файлове и съобщения с устройства наблизо през вашата локална мрежа, без да се нуждаете от интернет връзка.",
|
||||
"Това приложение е достъпно за Android, iOS, macOS, Windows и Linux. Можете да намерите всички опции за изтегляне на официалната домашна страница."
|
||||
],
|
||||
"author": "Автор",
|
||||
"contributors": "Сътрудници",
|
||||
"packagers": "Опаковчици",
|
||||
"translators": "Преводачи"
|
||||
},
|
||||
"donationPage": {
|
||||
"title": "Дарение",
|
||||
"info": "LocalSend е безплатен, с отворен код и без никакви реклами. Ако харесвате приложението, можете да подкрепите разработката с дарение.",
|
||||
"donate": "Дарение {amount}",
|
||||
"thanks": "Благодаря много!",
|
||||
"restore": "Възстановяване на покупка"
|
||||
},
|
||||
"changelogPage": {
|
||||
"title": "Дневник на промените"
|
||||
},
|
||||
"aliasGenerator(ignoreMissing, ignoreGpt)": {
|
||||
"@info": "Различните локали може да имат различни думи, може да не съвпадат 1:1"
|
||||
},
|
||||
"dialogs": {
|
||||
"addFile": {
|
||||
"title": "Добави към избора",
|
||||
"content": "Какво искате да добавите?"
|
||||
},
|
||||
"openFile": {
|
||||
"title": "Отвори файл",
|
||||
"content": "Искате ли да отворите получения файл?"
|
||||
},
|
||||
"addressInput": {
|
||||
"title": "Въведете адрес",
|
||||
"hashtag": "Хаштаг",
|
||||
"ip": "IP адрес",
|
||||
"recentlyUsed": "Наскоро използван: "
|
||||
},
|
||||
"cancelSession": {
|
||||
"title": "Отмени прехвърлянето на файлове",
|
||||
"content": "Наистина ли искате да отмените прехвърлянето на файлове?"
|
||||
},
|
||||
"cannotOpenFile": {
|
||||
"title": "Не може да се отвори файл",
|
||||
"content": "Не може да се отвори \"{file}\". Този файл бил ли е преместен, преименуван или изтрит?"
|
||||
},
|
||||
"encryptionDisabledNotice": {
|
||||
"title": "Шифроването е деактивирано",
|
||||
"content": "Комуникацията вече се осъществява чрез некриптиран HTTP протокол. За да използвате HTTPS протокол, активирайте криптирането отново."
|
||||
},
|
||||
"errorDialog": {
|
||||
"title": "@:general.error"
|
||||
},
|
||||
"favoriteDialog": {
|
||||
"title": "Любими",
|
||||
"noFavorites": "Все още няма любими устройства.",
|
||||
"addFavorite": "Добави"
|
||||
},
|
||||
"favoriteDeleteDialog": {
|
||||
"title": "Изтриване от любими",
|
||||
"content": "Наистина ли искате да изтриете от любими \"{name}\"?"
|
||||
},
|
||||
"favoriteEditDialog": {
|
||||
"titleAdd": "Добави към любими",
|
||||
"titleEdit": "Настройки",
|
||||
"name": "Име на устройство",
|
||||
"auto": "(автоматично)",
|
||||
"ip": "IP адрес",
|
||||
"port": "Порт"
|
||||
},
|
||||
"fileInfo": {
|
||||
"title": "Информация за файла",
|
||||
"fileName": "Име на файл:",
|
||||
"path": "Път:",
|
||||
"size": "Размер:",
|
||||
"sender": "Подател:",
|
||||
"time": "Време:"
|
||||
},
|
||||
"fileNameInput": {
|
||||
"title": "Въведете име на файл",
|
||||
"original": "Оригинално: {original}"
|
||||
},
|
||||
"historyClearDialog": {
|
||||
"title": "Изчистване на история",
|
||||
"content": "Наистина ли искате да изтриете цялата история?"
|
||||
},
|
||||
"localNetworkUnauthorized": {
|
||||
"title": "@:dialogs.noPermission.title",
|
||||
"description": "LocalSend не може да намери други устройства без разрешение за сканиране на локалната мрежа. Моля, предоставете това разрешение в настройките.",
|
||||
"gotoSettings": "Настройки"
|
||||
},
|
||||
"messageInput": {
|
||||
"title": "Вид съобщение",
|
||||
"multiline": "Многоредов"
|
||||
},
|
||||
"noFiles": {
|
||||
"title": "Няма избрани файлове",
|
||||
"content": "Моля, изберете поне един файл."
|
||||
},
|
||||
"noPermission": {
|
||||
"title": "Няма разрешение",
|
||||
"content": "Не сте предоставили необходимите разрешения. Моля, предоставете ги в настройките."
|
||||
},
|
||||
"notAvailableOnPlatform": {
|
||||
"title": "Не е налична",
|
||||
"content": "Тази функция е достъпна само на:"
|
||||
},
|
||||
"qr": {
|
||||
"title": "QR код"
|
||||
},
|
||||
"quickActions": {
|
||||
"title": "Бързи действия",
|
||||
"counter": "Брояч",
|
||||
"prefix": "Префикс",
|
||||
"padZero": "Подложка с нули",
|
||||
"sortBeforeCount": "Сортирай по азбучен ред предварително (A-Z)",
|
||||
"random": "Случаен"
|
||||
},
|
||||
"quickSaveNotice": {
|
||||
"title": "@:general.quickSave",
|
||||
"content": "Заявките за файлове вече се приемат автоматично. Имайте предвид, че всеки в локалната мрежа може да ви изпраща файлове."
|
||||
},
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"title": "@:general.quickSaveFromFavorites",
|
||||
"content": [
|
||||
"Заявките за файлове вече се приемат автоматично от устройства в списъка ви с любими.",
|
||||
"Внимание! В момента това не е напълно сигурно, тъй като хакер, който има пръстов отпечатък на всяко устройство от списъка ви с любими, може да ви изпраща файлове без ограничения.",
|
||||
"Въпреки това, тази опция все още е по-безопасна от разрешаването на всички потребители в локалната мрежа да ви изпращат файлове без ограничения."
|
||||
]
|
||||
},
|
||||
"pin": {
|
||||
"title": "Въведете ПИН код"
|
||||
},
|
||||
"sendModeHelp": {
|
||||
"title": "Режими на изпращане",
|
||||
"single": "Изпраща файлове до един получател. Изборът ще бъде изчистен след приключване на прехвърлянето на файлове.",
|
||||
"multiple": "Изпраща файлове до множество получатели. Изборът няма да бъде изчистен след приключване на прехвърлянето на файлове.",
|
||||
"link": "Получателите, които нямат инсталиран LocalSend, могат да изтеглят избраните файлове, като отворят връзката в своя браузър."
|
||||
},
|
||||
"zoom": {
|
||||
"title": "URL адрес"
|
||||
}
|
||||
},
|
||||
"sanitization": {
|
||||
"empty": "Името на файла не може да бъде празно",
|
||||
"invalid": "Името на файла съдържа невалидни знаци"
|
||||
},
|
||||
"tray": {
|
||||
"@info": "Указанията на Apple са много строги по отношение на формулировката \"близо\".",
|
||||
"open": "@:general.open",
|
||||
"close": "Излезте от LocalSend",
|
||||
"closeWindows": "Изход"
|
||||
},
|
||||
"web": {
|
||||
"waiting": "@:sendPage.waiting",
|
||||
"enterPin": "Въведете ПИН код",
|
||||
"invalidPin": "Невалиден ПИН код",
|
||||
"tooManyAttempts": "Твърде много опити",
|
||||
"rejected": "Отхвърлено",
|
||||
"files": "Файлове",
|
||||
"fileName": "Име на файл",
|
||||
"size": "Размер"
|
||||
},
|
||||
"assetPicker": {
|
||||
"@info": "Преводи за инструмента за избор на Медия за Android и iPhone",
|
||||
"confirm": "Потвърди",
|
||||
"cancel": "Отказ",
|
||||
"edit": "Редактирай",
|
||||
"gifIndicator": "GIF",
|
||||
"loadFailed": "Неуспешно зареждане",
|
||||
"original": "Произход",
|
||||
"preview": "Преглед",
|
||||
"select": "Избери",
|
||||
"emptyList": "Празен списък",
|
||||
"unSupportedAssetType": "Неподдържан тип файл.",
|
||||
"unableToAccessAll": "Няма достъп до всички файлове на устройството",
|
||||
"viewingLimitedAssetsTip": "Преглеждайте само файлове и албуми, достъпни за приложението.",
|
||||
"changeAccessibleLimitedAssets": "Щракнете, за да актуализирате достъпните файлове",
|
||||
"accessAllTip": "Приложението има достъп само до някои файлове на устройството. Отидете в системните настройки и разрешете на приложението достъп до всички медии на устройството.",
|
||||
"goToSystemSettings": "Отидете в системните настройки",
|
||||
"accessLimitedAssets": "Продължете с ограничен достъп",
|
||||
"accessiblePathName": "Достъпни файлове",
|
||||
"sTypeAudioLabel": "Аудио",
|
||||
"sTypeImageLabel": "Изображение",
|
||||
"sTypeVideoLabel": "Видео",
|
||||
"sTypeOtherLabel": "Друга медия",
|
||||
"sActionPlayHint": "изпълни",
|
||||
"sActionPreviewHint": "преглед",
|
||||
"sActionSelectHint": "избери",
|
||||
"sActionSwitchPathLabel": "промяна на пътя",
|
||||
"sActionUseCameraHint": "използвай камера",
|
||||
"sNameDurationLabel": "продължителност",
|
||||
"sUnitAssetCountLabel": "брой"
|
||||
},
|
||||
"networkInterfacesPage": {
|
||||
"preview": "Преглед",
|
||||
"whitelist": "Бял списък",
|
||||
"blacklist": "Черен списък",
|
||||
"title": "Мрежови интерфейси",
|
||||
"info": "По подразбиране, LocalSend използва всички налични мрежови интерфейси. Тук можете да изключите нежелани мрежи. Трябва да рестартирате сървъра, за да приложите промените."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,535 @@
|
||||
{
|
||||
"locale": "বাংলা",
|
||||
"appName": "লোকালসেন্ড",
|
||||
"general": {
|
||||
"accept": "অ্যাকসেপ্ট করুন",
|
||||
"accepted": "অ্যাকসেপ্টেড",
|
||||
"add": "অ্যাড করুন",
|
||||
"advanced": "আডভান্স",
|
||||
"cancel": "ক্যানসেল করুন",
|
||||
"close": "বন্ধ করুন",
|
||||
"confirm": "কনফার্ম করুন",
|
||||
"continueStr": "চালিয়ে যান",
|
||||
"copy": "কপি করুন",
|
||||
"copiedToClipboard": "ক্লিপবোর্ডে কপি করা হয়েছে",
|
||||
"decline": "প্রত্যাখ্যান করুন",
|
||||
"done": "সম্পন্ন",
|
||||
"delete": "ডিলিট",
|
||||
"edit": "এডিট",
|
||||
"error": "ভুল হয়েছে",
|
||||
"example": "উদাহরণ",
|
||||
"files": "ফাইল গুলো",
|
||||
"finished": "শেষ হয়েছে",
|
||||
"hide": "হাইড করুন",
|
||||
"off": "বন্ধ",
|
||||
"offline": "অফলাইন",
|
||||
"on": "চালু",
|
||||
"online": "অনলাইন",
|
||||
"open": "খুলুন",
|
||||
"queue": "কিউ",
|
||||
"quickSave": "কুইক সেভ করুন",
|
||||
"quickSaveFromFavorites": "\"ফেভারিট\"দের জন্য কুইক সেভ করুন",
|
||||
"renamed": "নাম পরিবর্তন করা হয়েছে",
|
||||
"reset": "রিসেট করুন",
|
||||
"restart": "পুনরায় চালু করুন",
|
||||
"settings": "সেটিংস",
|
||||
"skipped": "স্কিপ করা হয়েছে",
|
||||
"start": "শুরু করুন",
|
||||
"stop": "বন্ধ করুন",
|
||||
"save": "সেভ করুন",
|
||||
"unchanged": "অপরিবর্তিত",
|
||||
"unknown": "আননোন",
|
||||
"noItemInClipboard": "ক্লিপবোর্ডে কোনো আইটেম নেই।"
|
||||
},
|
||||
"receiveTab": {
|
||||
"title": "রিসিভ",
|
||||
"infoBox": {
|
||||
"ip": "আইপি:",
|
||||
"port": "পোর্ট:",
|
||||
"alias": "ডিভাইসের নাম:"
|
||||
},
|
||||
"quickSave": {
|
||||
"off": "@:general.off",
|
||||
"favorites": "ফেভারিট",
|
||||
"on": "@:general.on"
|
||||
}
|
||||
},
|
||||
"sendTab": {
|
||||
"title": "সেন্ড",
|
||||
"selection": {
|
||||
"title": "সিলেকশন",
|
||||
"files": "ফাইলসমূহ: {files}",
|
||||
"size": "সাইজ: {size}"
|
||||
},
|
||||
"picker": {
|
||||
"file": "ফাইল",
|
||||
"folder": "ফোল্ডার",
|
||||
"media": "মিডিয়া",
|
||||
"text": "টেক্সট",
|
||||
"app": "আবেদন",
|
||||
"clipboard": "ক্লিপবোর্ড পেস্ট"
|
||||
},
|
||||
"shareIntentInfo": "আরো সহজে ফাইল সিলেক্ট করার জন্য আপনার মোবাইলের \"Share\" ফিচারটি ব্যবহার করতে পারেন।",
|
||||
"nearbyDevices": "কাছাকাছি থাকা ডিভাইস",
|
||||
"thisDevice": "এই ডিভাইস",
|
||||
"scan": "ডিভাইস স্ক্যান করুন",
|
||||
"manualSending": "ম্যানুয়াল সেন্ডিং",
|
||||
"sendMode": "সেন্ড মোড",
|
||||
"sendModes": {
|
||||
"single": "একজন রিসিভার",
|
||||
"multiple": "একাধিক রিসিভার",
|
||||
"link": "লিঙ্কের মাধ্যমে শেয়ার করুন"
|
||||
},
|
||||
"sendModeHelp": "ব্যাখ্যা",
|
||||
"help": "অনুগ্রহ করে নিশ্চিত করুন যে পছন্দসই লক্ষ্যটিও একই ওয়াইফাই নেটওয়ার্কে রয়েছে।",
|
||||
"placeItems": "শেয়ার করার জন্য আইটেম রাখুন।"
|
||||
},
|
||||
"settingsTab": {
|
||||
"title": "সেটিংস",
|
||||
"general": {
|
||||
"title": "জেনারেল",
|
||||
"brightness": "থিম",
|
||||
"brightnessOptions": {
|
||||
"system": "সিস্টেম",
|
||||
"dark": "ডার্ক",
|
||||
"light": "লাইট"
|
||||
},
|
||||
"color": "অ্যাপ কালার",
|
||||
"colorOptions": {
|
||||
"system": "সিস্টেম",
|
||||
"oled": "ওলেড"
|
||||
},
|
||||
"language": "ভাষা",
|
||||
"languageOptions": {
|
||||
"system": "সিস্টেম"
|
||||
},
|
||||
"saveWindowPlacement": "বের হোন: উইন্ডো প্লেসমেন্ট সেভ করুন",
|
||||
"saveWindowPlacementWindows": "বের হবার পরে উইন্ডোর অবস্থান সেভ করুন",
|
||||
"minimizeToTray": "বের হোন: ট্রেতে মিনিমাইজ করুন",
|
||||
"launchAtStartup": "লগইন করার পরে অটোস্টার্ট করুন",
|
||||
"launchMinimized": "অটোস্টার্ট: হিডেন রেখে শুরু করুন",
|
||||
"showInContextMenu": "কনটেক্সট মেনুতে LocalSend দেখান",
|
||||
"animations": "অ্যানিমেশন"
|
||||
},
|
||||
"receive": {
|
||||
"title": "রিসিভ",
|
||||
"quickSave": "@:general.quickSave",
|
||||
"quickSaveFromFavorites": "@:general.quickSaveFromFavorites",
|
||||
"requirePin": "@:webSharePage.requirePin",
|
||||
"autoFinish": "অটো ফিনিশ",
|
||||
"destination": "ডেস্টিনেশন",
|
||||
"downloads": "(Downloads)",
|
||||
"saveToGallery": "মিডিয়া গ্যালারিতে সেভ করুন",
|
||||
"saveToHistory": "হিস্ট্রি সেভ করুন"
|
||||
},
|
||||
"send": {
|
||||
"title": "সেন্ড",
|
||||
"shareViaLinkAutoAccept": "\"Share via link\" মোডের রিকুয়েস্ট অটো এক্সেপ্ট করুন"
|
||||
},
|
||||
"network": {
|
||||
"title": "নেটওয়ার্ক",
|
||||
"needRestart": "সেটিংস অ্যাপ্লাই করতে সার্ভার রিস্টার্ট করুন!",
|
||||
"server": "সার্ভার",
|
||||
"alias": "ডিভাইসের নাম",
|
||||
"deviceType": "ডিভাইসের ধরন",
|
||||
"deviceModel": "ডিভাইস মডেল",
|
||||
"port": "পোর্ট",
|
||||
"network": "নেটওয়ার্ক",
|
||||
"networkOptions": {
|
||||
"all": "সব",
|
||||
"filtered": "ফিল্টারড"
|
||||
},
|
||||
"discoveryTimeout": "ডিসকভারি টাইমআউট",
|
||||
"useSystemName": "সিস্টেমের নাম ব্যবহার করুন",
|
||||
"generateRandomAlias": "এলিয়াস তৈরি করুন",
|
||||
"portWarning": "আপনি একটি কাস্টম পোর্ট ব্যবহার করছেন, তাই অন্য ডিভাইস থেকে এই ডিভাইসকে খুঁজে নাও পাওয়া যেতে পারে। (default: {defaultPort})",
|
||||
"encryption": "এনক্রিপশন",
|
||||
"multicastGroup": "মাল্টিকাস্ট",
|
||||
"multicastGroupWarning": "আপনি একটি কাস্টম মাল্টিকাস্ট অ্যাড্রেস ব্যবহার করছেন যেই কারণে আপনি অন্য ডিভাইস দ্বারা স্ক্যান নাও হতে পারেন। (default: {defaultMulticast})"
|
||||
},
|
||||
"other": {
|
||||
"title": "অন্যান্য",
|
||||
"support": "লোকাল সেন্ডকে সাপোর্ট করুন",
|
||||
"donate": "ডোনেট",
|
||||
"privacyPolicy": "গোপনীয়তা নীতি",
|
||||
"termsOfUse": "ব্যবহারের শর্তাবলী"
|
||||
},
|
||||
"advancedSettings": "আডভান্স সেটিংস"
|
||||
},
|
||||
"troubleshootPage": {
|
||||
"title": "ট্রাবলশুট",
|
||||
"subTitle": "অ্যাপটি আশানুরূপ কাজ না করলে, এখানে আপনি কিছু সাধারণ সমাধান পেতে পারেন।",
|
||||
"solution": "সমাধান:",
|
||||
"fixButton": "অটোমেটিকালি ঠিক করুন",
|
||||
"firewall": {
|
||||
"symptom": "এই অ্যাপটি অন্য ডিভাইসে ফাইল পাঠাতে পারে কিন্তু অন্য ডিভাইস এই ডিভাইসে ফাইল পাঠাতে পারে না।",
|
||||
"solution": "এটি সম্ভবত একটি ফায়ারওয়াল সমস্যা। আপনি পোর্টে ইনকামিং কানেকশন (UDP এবং TCP) পারমিশন দিয়ে এটি ঠিক করতে পারেন {port}.",
|
||||
"openFirewall": "ফায়ারওয়াল খুলুন"
|
||||
},
|
||||
"noDiscovery": {
|
||||
"symptom": "এই ডিভাইসটি অন্য ডিভাইস খুঁজতে পারতেছে না।",
|
||||
"solution": "সব ডিভাইস একই ওয়াই-ফাই নেটওয়ার্কে আছে তা নিশ্চিত করুন এবং একই কনফিগারেশন ব্যাবহার করছে (পোর্ট, মাল্টিকাস্ট অ্যাড্রেস, এনক্রিপশন)। টার্গেট ডিভাইসের আইপি ম্যানুয়ালি টাইপ করতে পারেন। যদি এটা কাজ করে, তাহলে ভবিষ্যতে এই ডিভাইসটি অটোমেটিকালি ডিসকভার করা হবে, তা নিশ্চিত করতে এই ডিভাইসটি ফেভারিটে অ্যাড করুন।"
|
||||
},
|
||||
"noConnection": {
|
||||
"symptom": "উভয় ডিভাইস একে অপরকে আবিষ্কার করতে পারে না বা তারা ফাইল ভাগ করতে পারে না।",
|
||||
"solution": "সমস্যা কি দুই দিকেই আছে? তারপরে আপনাকে নিশ্চিত করতে হবে যে উভয় ডিভাইস একই ওয়াইফাই নেটওয়ার্কে রয়েছে এবং একই কনফিগারেশন (পোর্ট, মাল্টিকাস্ট ঠিকানা, এনক্রিপশন) ভাগ করে নিয়েছে। ওয়াইফাই অংশগ্রহণকারীদের মধ্যে যোগাযোগের অনুমতি নাও দিতে পারে। এই ক্ষেত্রে, এই বিকল্পটি রাউটারে সক্রিয় করা আবশ্যক।"
|
||||
}
|
||||
},
|
||||
"networkInterfacesPage": {
|
||||
"title": "নেটওয়ার্ক ইন্টারফেস",
|
||||
"info": "LocalSend সব অ্যাভেলেবেল নেটওয়ার্ক ইন্টারফেস ব্যবহার করে। আপনি এখানে অপ্রয়োজনীয় নেটওয়ার্ক বাদ দিতে পারেন। কোন পরিবর্তন আনলে সার্ভারটি পুনরায় চালু করতে হবে।",
|
||||
"preview": "প্রিভিউ",
|
||||
"whitelist": "হোয়াইটলিস্ট",
|
||||
"blacklist": "ব্ল্যাকলিস্ট"
|
||||
},
|
||||
"receiveHistoryPage": {
|
||||
"title": "হিস্ট্রি",
|
||||
"openFolder": "ফোল্ডার খুলুন",
|
||||
"deleteHistory": "হিস্ট্রি ক্লিয়ার করুন",
|
||||
"empty": "হিস্ট্রি খালি।",
|
||||
"entryActions": {
|
||||
"open": "ফাইল খুলুন",
|
||||
"showInFolder": "ফোল্ডারে দেখুন",
|
||||
"info": "ইনফো",
|
||||
"deleteFromHistory": "হিস্ট্রি থেকে মুছে ফেলুন"
|
||||
}
|
||||
},
|
||||
"apkPickerPage": {
|
||||
"title": "অ্যাপস (এপিকে)",
|
||||
"excludeSystemApps": "সিস্টেম অ্যাপ বাদ দিন",
|
||||
"excludeAppsWithoutLaunchIntent": "অ-লঞ্চযোগ্য অ্যাপগুলি বাদ দিন",
|
||||
"apps": "{n} অ্যাপ্স"
|
||||
},
|
||||
"selectedFilesPage": {
|
||||
"deleteAll": "সব ডিলিট করুন"
|
||||
},
|
||||
"receivePage": {
|
||||
"subTitle": {
|
||||
"one": "আপনাকে একটি ফাইল পাঠাতে চায়",
|
||||
"other": "আপনাকে {n}টি ফাইল পাঠাতে চায়"
|
||||
},
|
||||
"subTitleMessage": "আপনাকে একটি মেসেজ পাঠিয়েছে:",
|
||||
"subTitleLink": "আপনাকে একটি লিঙ্ক পাঠিয়েছে:",
|
||||
"canceled": "সেন্ডার রিকুয়েস্টটি ক্যানসেল করেছে।"
|
||||
},
|
||||
"receiveOptionsPage": {
|
||||
"title": "অপশনসমূহ",
|
||||
"destination": "@:settingsTab.receive.destination",
|
||||
"appDirectory": "(@:appName folder)",
|
||||
"saveToGallery": "@:settingsTab.receive.saveToGallery",
|
||||
"saveToGalleryOff": "অটোমেটিকালি বন্ধ কারণ ডিরেক্টরি আছে."
|
||||
},
|
||||
"sendPage": {
|
||||
"waiting": "রেস্পন্সের অপেক্ষায়…",
|
||||
"rejected": "রিসিভার রিকুয়েস্টটি ক্যানসেল করেছে।",
|
||||
"tooManyAttempts": "@:web.tooManyAttempts",
|
||||
"busy": "রিসিভার রিকুয়েস্টটি আরেকটি রিকুয়েস্টে ব্যস্ত।"
|
||||
},
|
||||
"progressPage": {
|
||||
"titleSending": "ফাইল সেন্ড হচ্ছে",
|
||||
"titleReceiving": "ফাইল রিসিভ করা হচ্ছে",
|
||||
"savedToGallery": "Photos এ সেভ করা হয়েছে",
|
||||
"total": {
|
||||
"title": {
|
||||
"sending": "মোট অগ্রগতি ({time})",
|
||||
"finishedError": "ত্রুটি সহ সমাপ্ত হয়েছে",
|
||||
"canceledSender": "সেন্ডারের দ্বারা ক্যানসেল করা হয়েছে",
|
||||
"canceledReceiver": "রিসিভার দ্বারা ক্যানসেল করা হয়েছে"
|
||||
},
|
||||
"count": "ফাইলগুলি: {curr} / {n}",
|
||||
"size": "সাইজ: {curr} / {n}",
|
||||
"speed": "স্পীড: {speed}/s"
|
||||
},
|
||||
"remainingTime": {
|
||||
"hours": "{h}ঘণ্টা {m}মিনিট",
|
||||
"days": "{d}দিন {h}ঘণ্টা {m}মিনিট",
|
||||
"@hours": "ঘন্টার জন্য 'h' এবং মিনিটের জন্য 'm' ব্যবহার করুন",
|
||||
"@days": "দিনের জন্য 'd', ঘন্টার জন্য 'h' এবং মিনিটের জন্য 'm' ব্যবহার করুন",
|
||||
"seconds": "{n}:{ss}",
|
||||
"minutes": "{n}:{ss}"
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"title": "লিঙ্কের মাধ্যমে শেয়ার করুন",
|
||||
"loading": "সার্ভার চালু করা হচ্ছে…",
|
||||
"stopping": "সার্ভার বন্ধ করা হচ্ছে…",
|
||||
"error": "সার্ভার চালু করার সময় একটি সমস্যা হয়েছে৷",
|
||||
"openLink": {
|
||||
"one": "ব্রাউজারে এই লিঙ্কটি খুলুন:",
|
||||
"other": "ব্রাউজারে এই লিঙ্কগুলির একটি খুলুন:"
|
||||
},
|
||||
"requests": "রিকুয়েস্ট",
|
||||
"noRequests": "এখনো কোনো রিকুয়েস্ট নেই.",
|
||||
"encryption": "@:settingsTab.network.encryption",
|
||||
"autoAccept": "রিকুয়েস্ট অটো এক্সেপ্ট করুন",
|
||||
"requirePin": "পিন প্রয়োজন",
|
||||
"pinHint": "পিনটি \"{pin}\"",
|
||||
"encryptionHint": "LocalSend একটি সেল্ফ-সাইন্ড সার্টিফিকেট ব্যবহার করে। আপনাকে ব্রাউজারে এটি একসেপ্ট করতে হবে।",
|
||||
"pendingRequests": "রিকুয়েস্ট অপেক্ষারত: {n}"
|
||||
},
|
||||
"aboutPage": {
|
||||
"title": "LocalSend সম্পর্কে",
|
||||
"description": [
|
||||
"LocalSend হল একটি ফ্রী, ওপেন সোর্স অ্যাপ যা ইন্টারনেট ছাড়াই আপনার লোকাল নেটওয়ার্কের ডিভাইসগুলির সাথে ফাইল এবং মেসেজ নিরাপদে শেয়ার করতে দেয়৷",
|
||||
"এই অ্যাপটি Android, iOS, macOS, Windows এবং Linux-এ অ্যাভেলেবেল। আপনি অফিসিয়াল হোমপেজে সব ডাউনলোড অপশন খুঁজে পাবেন।"
|
||||
],
|
||||
"author": "লেখক",
|
||||
"contributors": "অবদানকারী",
|
||||
"packagers": "প্যাকেজেস",
|
||||
"translators": "অনুবাদক"
|
||||
},
|
||||
"donationPage": {
|
||||
"title": "ডোনেট",
|
||||
"info": "LocalSend ফ্রী, ওপেন সোর্স এবং কোনো অ্যাড ছাড়াই। আপনি যদি অ্যাপটি পছন্দ করেন তবে আপনি একটি ডোনেশন দিয়ে ডেভেলপমেন্টকে সাপোর্ট করতে পারেন।",
|
||||
"donate": "ডোনেট {amount}",
|
||||
"thanks": "আপনাকে অনেক ধন্যবাদ!",
|
||||
"restore": "পারচেজ রিস্টোর"
|
||||
},
|
||||
"changelogPage": {
|
||||
"title": "চেঞ্জলগ"
|
||||
},
|
||||
"aliasGenerator(ignoreMissing, ignoreGpt)": {
|
||||
"@info": "ভিন্ন জায়গার ভিন্ন শব্দ থাকতে পারে, একেবারে 1:1 মিলতে নাও পারে",
|
||||
"adjectives": [
|
||||
"আরাধ্য",
|
||||
"সুন্দর",
|
||||
"বড়",
|
||||
"উজ্জ্বল",
|
||||
"পরিষ্কার",
|
||||
"চতুর",
|
||||
"ঠান্ডা",
|
||||
"চতুর",
|
||||
"ধূর্ত",
|
||||
"নির্ধারিত",
|
||||
"অনলস",
|
||||
"দক্ষ",
|
||||
"অসাধারণ",
|
||||
"দ্রুত",
|
||||
"ভালো",
|
||||
"তাজা",
|
||||
"ভাল",
|
||||
"চমৎকার",
|
||||
"দারুণ",
|
||||
"সুদর্শন",
|
||||
"গরম",
|
||||
"দয়াময়",
|
||||
"সুন্দর",
|
||||
"রহস্যময়",
|
||||
"পরিচ্ছন্ন",
|
||||
"সুন্দর",
|
||||
"রোগী",
|
||||
"সুন্দর",
|
||||
"ক্ষমতাশালী",
|
||||
"ধনী",
|
||||
"গোপন",
|
||||
"স্মার্ট",
|
||||
"কঠিন",
|
||||
"বিশেষ",
|
||||
"কৌশলগত",
|
||||
"শক্তিশালী",
|
||||
"পরিপাটি",
|
||||
"জ্ঞানী"
|
||||
],
|
||||
"fruits": [
|
||||
"আপেল",
|
||||
"অ্যাভোকাডো",
|
||||
"কলা",
|
||||
"ব্ল্যাকবেরি",
|
||||
"ব্লুবেরি",
|
||||
"ব্রকলি",
|
||||
"গাজর",
|
||||
"চেরি",
|
||||
"নারকেল",
|
||||
"আঙ্গুর",
|
||||
"লেবু",
|
||||
"লেটুস",
|
||||
"আম",
|
||||
"তরমুজ",
|
||||
"মাশরুম",
|
||||
"পেঁয়াজ",
|
||||
"কমলা",
|
||||
"পেঁপে",
|
||||
"পীচ",
|
||||
"নাশপাতি",
|
||||
"আনারস",
|
||||
"আলু",
|
||||
"কুমড়া",
|
||||
"রাস্পবেরি",
|
||||
"স্ট্রবেরি",
|
||||
"টমেটো"
|
||||
],
|
||||
"combination": "{adjective} {fruit}",
|
||||
"@combination": "In some languages, the adjective must be last."
|
||||
},
|
||||
"dialogs": {
|
||||
"addFile": {
|
||||
"title": "সিলেকশনে অ্যাড করুন",
|
||||
"content": "আপনি কি অ্যাড করতে চান?"
|
||||
},
|
||||
"openFile": {
|
||||
"title": "ফাইল খুলুন",
|
||||
"content": "আপনি কি ফাইলটি খুলতে চান?"
|
||||
},
|
||||
"addressInput": {
|
||||
"title": "এড্রেস লিখুন",
|
||||
"hashtag": "হ্যাশট্যাগ",
|
||||
"ip": "আইপি অ্যাড্রেস",
|
||||
"recentlyUsed": "সম্প্রতি ব্যবহৃত: "
|
||||
},
|
||||
"cancelSession": {
|
||||
"title": "ফাইল ট্রান্সফার ক্যানসেল করুন",
|
||||
"content": "আপনি কি ফাইল ট্রান্সফার ক্যানসেল করতে চান?"
|
||||
},
|
||||
"cannotOpenFile": {
|
||||
"title": "ফাইলটি খোলা যাচ্ছে না",
|
||||
"content": "\"{file}\" খোলা যায়নি। এই ফাইলটি কি সরানো হয়েছে, নাম পরিবর্তন বা মুছে ফেলা হয়েছে?"
|
||||
},
|
||||
"encryptionDisabledNotice": {
|
||||
"title": "এনক্রিপশন বন্ধ করা হয়েছে",
|
||||
"content": "এখন কমিউনিকেশন আনএনক্রিপ্টেড HTTP প্রটোকলের মাধ্যমে করা হচ্ছে। HTTPS ব্যবহার করার জন্য আবার এনক্রিপশন চালু করুন।"
|
||||
},
|
||||
"errorDialog": {
|
||||
"title": "@:general.error"
|
||||
},
|
||||
"favoriteDialog": {
|
||||
"title": "ফেভারিট",
|
||||
"noFavorites": "এখনও কোন ফেভারিট ডিভাইস নেই.",
|
||||
"addFavorite": "যোগ করুন"
|
||||
},
|
||||
"favoriteDeleteDialog": {
|
||||
"title": "যোগ করুনযোগ করুন",
|
||||
"content": "আপনি কি সত্যিই ফেভারিট থেকে মুছে ফেলতে চান \"{name}\"?"
|
||||
},
|
||||
"favoriteEditDialog": {
|
||||
"titleAdd": "ফেভারিটে অ্যাড করুন",
|
||||
"titleEdit": "এডিট করুন",
|
||||
"name": "এলিয়াস",
|
||||
"auto": "(auto)",
|
||||
"ip": "আইপি অ্যাড্রেস",
|
||||
"port": "পোর্ট"
|
||||
},
|
||||
"fileInfo": {
|
||||
"title": "ফাইল ইনফো",
|
||||
"fileName": "ফাইলের নাম:",
|
||||
"path": "পাথ:",
|
||||
"size": "সাইজ:",
|
||||
"sender": "সেন্ডার:",
|
||||
"time": "সময়:"
|
||||
},
|
||||
"fileNameInput": {
|
||||
"title": "ফাইলের নাম লিখুন",
|
||||
"original": "অরিজিনাল: {original}"
|
||||
},
|
||||
"historyClearDialog": {
|
||||
"title": "হিস্ট্রি ক্লিয়ার করুন",
|
||||
"content": "আপনি কি সব হিস্ট্রি ক্লিয়ার চান?"
|
||||
},
|
||||
"localNetworkUnauthorized": {
|
||||
"title": "@:dialogs.noPermission.title",
|
||||
"description": "লোকাল নেটওয়ার্ক স্ক্যান করার পারমিশন ছাড়া LocalSend অন্য ডিভাইস খুঁজে পায় না। অনুগ্রহ করে সেটিংসে এই পারমিশনটি দিন।",
|
||||
"gotoSettings": "সেটিংস"
|
||||
},
|
||||
"messageInput": {
|
||||
"title": "মেসেজ লিখুন",
|
||||
"multiline": "মাল্টিলাইন"
|
||||
},
|
||||
"noFiles": {
|
||||
"title": "কোনো ফাইল সিলেক্ট করা হয়নি",
|
||||
"content": "অন্তত একটি ফাইল সিলেক্ট করুন।"
|
||||
},
|
||||
"noPermission": {
|
||||
"title": "পারমিশন নেই",
|
||||
"content": "আপনি প্রয়োজনীয় পারমিশন প্রদান করেননি। অনুগ্রহ করে সেটিংসে তাদের পারমিশন দিন।"
|
||||
},
|
||||
"notAvailableOnPlatform": {
|
||||
"title": "পাওয়া যায় নি",
|
||||
"content": "এই ফিচার শুধুমাত্র উপলব্ধ:"
|
||||
},
|
||||
"qr": {
|
||||
"title": "QR কোড"
|
||||
},
|
||||
"quickActions": {
|
||||
"title": "কুইক অ্যাকশনস",
|
||||
"counter": "কাউন্টার",
|
||||
"prefix": "উপসর্গ",
|
||||
"padZero": "শূন্য সহ প্যাড",
|
||||
"sortBeforeCount": "আগে থেকে বর্ণানুক্রমিকভাবে সাজান",
|
||||
"random": "র্যান্ডম"
|
||||
},
|
||||
"quickSaveNotice": {
|
||||
"title": "@:general.quickSave",
|
||||
"content": "ফাইল অনুরোধ অটোমেটিকালি এক্সেপ্ট করা হয়। সচেতন থাকুন যেনা লোকাল নেটওয়ার্কের সবাই আপনাকে ফাইল পাঠাতে পারে।"
|
||||
},
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"title": "@:general.quickSaveFromFavorites",
|
||||
"content": [
|
||||
"আপনার ফেভারিট তালিকায় থাকা ডিভাইস থেকে ফাইল অটোমেটিক রিসিভ করা হয়।",
|
||||
"সতর্কতা! বর্তমানে, এটা সম্পূর্ণভাবে নিরাপদ নয়, কোন হ্যাকারের কাছে আপনার ফেভারিট তালিকার কোনও ডিভাইসের ফিঙ্গারপ্রিন্ট থাকে তাহলে সে সীমাবদ্ধতা ছাড়াই আপনাকে ফাইল পাঠাতে পারে।",
|
||||
"তবে, এই অপশনটি এখনও লোকাল নেটওয়ার্কের ব্যবহারকারীদের কোনও সীমাবদ্ধতা ছাড়াই আপনাকে ফাইল পাঠাতে দেয়।"
|
||||
]
|
||||
},
|
||||
"pin": {
|
||||
"title": "পিন দিন"
|
||||
},
|
||||
"sendModeHelp": {
|
||||
"title": "সেন্ড মোড",
|
||||
"single": "একজন প্রাপকের কাছে ফাইল পাঠায়। ফাইল স্থানান্তর সমাপ্ত হওয়ার পরে নির্বাচন পরিষ্কার করা হবে.",
|
||||
"multiple": "একাধিক প্রাপককে ফাইল পাঠায়। নির্বাচন সাফ করা হবে না।",
|
||||
"link": "যাদের LocalSend ইনস্টল করা নেই তারা ব্রাউজারে লিঙ্কটি খুলে ফাইলগুলি ডাউনলোড করতে পারবেন।"
|
||||
},
|
||||
"zoom": {
|
||||
"title": "URL"
|
||||
}
|
||||
},
|
||||
"sanitization": {
|
||||
"empty": "ফাইলের নাম খালি রাখা যাবে না",
|
||||
"invalid": "ফাইলের নামে ইনভেলিড অক্ষর রয়েছে"
|
||||
},
|
||||
"tray": {
|
||||
"@info": "অ্যাপলের নির্দেশিকাগুলি 'ক্লোজ' শব্দের বিষয়ে খুবই কঠোর।",
|
||||
"open": "@:general.open",
|
||||
"close": "LocalSend থেকে বের হোন",
|
||||
"closeWindows": "সব উইন্ডো বন্ধ করুন"
|
||||
},
|
||||
"web": {
|
||||
"waiting": "@:sendPage.waiting",
|
||||
"enterPin": "পিন দিন",
|
||||
"invalidPin": "পিনটি সঠিক নয়",
|
||||
"tooManyAttempts": "অনেক বার ভুল পিন দেওয়া হয়েছে",
|
||||
"rejected": "রিজেক্টেড",
|
||||
"files": "ফাইলস",
|
||||
"fileName": "ফাইলের নাম",
|
||||
"size": "সাইজ"
|
||||
},
|
||||
"assetPicker": {
|
||||
"@info": "Translations for the Media selection tool for Android and Iphone",
|
||||
"confirm": "কনফার্ম করুন",
|
||||
"cancel": "ক্যানসেল করুন",
|
||||
"edit": "এডিট করুন",
|
||||
"gifIndicator": "জিফ",
|
||||
"loadFailed": "লোড করা যায়নি",
|
||||
"original": "অরিজিনাল",
|
||||
"preview": "প্রিভিউ",
|
||||
"select": "সিলেক্ট করুন",
|
||||
"emptyList": "খালি লিস্ট",
|
||||
"unSupportedAssetType": "আনসাপোর্টেড ফাইল টাইপ.",
|
||||
"unableToAccessAll": "ডিভাইসে সমস্ত ফাইল অ্যাক্সেস পাওয়া যায়নি",
|
||||
"viewingLimitedAssetsTip": "শুধুমাত্র অ্যাপে অ্যাক্সেসযোগ্য ফাইল এবং অ্যালবাম দেখুন.",
|
||||
"changeAccessibleLimitedAssets": "অ্যাক্সেসযোগ্য ফাইল আপডেট করতে ট্যাপ করুন",
|
||||
"accessAllTip": "অ্যাপ শুধুমাত্র ডিভাইসে কিছু ফাইল অ্যাক্সেস করতে পারে। সিস্টেম সেটিংসে যান এবং অ্যাপটিকে ডিভাইসের সমস্ত মিডিয়া অ্যাক্সেস করার পারমিশন দিন।",
|
||||
"goToSystemSettings": "সিস্টেম সেটিংসে যান",
|
||||
"accessLimitedAssets": "সীমিত অ্যাক্সেস দিয়ে চালিয়ে যান",
|
||||
"accessiblePathName": "অ্যাক্সেসযোগ্য ফাইল",
|
||||
"sTypeAudioLabel": "অডিও",
|
||||
"sTypeImageLabel": "ছবি",
|
||||
"sTypeVideoLabel": "ভিডিও",
|
||||
"sTypeOtherLabel": "অন্যান্য মিডিয়া",
|
||||
"sActionPlayHint": "প্লে",
|
||||
"sActionPreviewHint": "প্রিভিউ",
|
||||
"sActionSelectHint": "নির্বাচন করুন",
|
||||
"sActionSwitchPathLabel": "পাথ পরিবর্তন",
|
||||
"sActionUseCameraHint": "ক্যামেরা ব্যবহার করুন",
|
||||
"sNameDurationLabel": "ডিউরেশন",
|
||||
"sUnitAssetCountLabel": "কাউন্ট"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,527 @@
|
||||
{
|
||||
"locale": "Català",
|
||||
"appName": "LocalSend",
|
||||
"general": {
|
||||
"accept": "Accepta",
|
||||
"accepted": "Acceptat",
|
||||
"add": "Afegeix",
|
||||
"advanced": "Avançades",
|
||||
"cancel": "Cancel·la",
|
||||
"close": "Tanca",
|
||||
"confirm": "Confirma",
|
||||
"continueStr": "Continua",
|
||||
"copy": "Copia",
|
||||
"copiedToClipboard": "S'ha copiat al porta-retalls",
|
||||
"decline": "Rebutja",
|
||||
"done": "Fet",
|
||||
"delete": "Elimina",
|
||||
"edit": "Edita",
|
||||
"error": "Error",
|
||||
"example": "Exemple",
|
||||
"files": "Fitxers",
|
||||
"finished": "Finalitzat",
|
||||
"hide": "Amaga",
|
||||
"off": "Desactivat",
|
||||
"offline": "Desconnectat",
|
||||
"on": "Activat",
|
||||
"online": "En línia",
|
||||
"open": "Obre",
|
||||
"queue": "Cua",
|
||||
"quickSave": "Desat ràpid",
|
||||
"quickSaveFromFavorites": "Desat ràpid per als «Preferits»",
|
||||
"renamed": "Canvia el nom",
|
||||
"reset": "Desfés els canvis",
|
||||
"restart": "Reinicia",
|
||||
"settings": "Configuració",
|
||||
"skipped": "Omès",
|
||||
"start": "Inicia",
|
||||
"stop": "Atura",
|
||||
"save": "Desa",
|
||||
"unchanged": "Sense canvis",
|
||||
"unknown": "Desconegut",
|
||||
"noItemInClipboard": "No hi ha elements al porta-retalls."
|
||||
},
|
||||
"receiveTab": {
|
||||
"title": "Recepció",
|
||||
"infoBox": {
|
||||
"ip": "IP:",
|
||||
"port": "Port:",
|
||||
"alias": "Nom del dispositiu:"
|
||||
},
|
||||
"quickSave": {
|
||||
"off": "@:general.off",
|
||||
"favorites": "Preferits",
|
||||
"on": "@:general.on"
|
||||
}
|
||||
},
|
||||
"sendTab": {
|
||||
"title": "Envia",
|
||||
"selection": {
|
||||
"title": "Selecció",
|
||||
"files": "Fitxers: {files}",
|
||||
"size": "Mida: {size}"
|
||||
},
|
||||
"picker": {
|
||||
"file": "Fitxer",
|
||||
"folder": "Carpeta",
|
||||
"media": "Multimèdia",
|
||||
"text": "Text",
|
||||
"app": "Aplicació",
|
||||
"clipboard": "Enganxa"
|
||||
},
|
||||
"shareIntentInfo": "També podeu utilitzar l'opció «Comparteix» del vostre dispositiu mòbil per a seleccionar fitxers d'una manera més fàcil.",
|
||||
"nearbyDevices": "Dispositius propers",
|
||||
"thisDevice": "Aquest dispositiu",
|
||||
"scan": "Cerca dispositius",
|
||||
"manualSending": "Enviament manual",
|
||||
"sendMode": "Mode d'enviament",
|
||||
"sendModes": {
|
||||
"single": "Destinatari únic",
|
||||
"multiple": "Múltiples destinataris",
|
||||
"link": "Comparteix via enllaç"
|
||||
},
|
||||
"sendModeHelp": "Explicació",
|
||||
"help": "Comproveu que el destinatari està en la mateixa xarxa Wi-Fi.",
|
||||
"placeItems": "Col·loqueu els elements per compartir."
|
||||
},
|
||||
"settingsTab": {
|
||||
"title": "Configuració",
|
||||
"general": {
|
||||
"title": "General",
|
||||
"brightness": "Tema",
|
||||
"brightnessOptions": {
|
||||
"system": "Sistema",
|
||||
"dark": "Fosc",
|
||||
"light": "Clar"
|
||||
},
|
||||
"color": "Color",
|
||||
"colorOptions": {
|
||||
"system": "Sistema",
|
||||
"oled": "OLED"
|
||||
},
|
||||
"language": "Llengua",
|
||||
"languageOptions": {
|
||||
"system": "Sistema"
|
||||
},
|
||||
"saveWindowPlacement": "Desa la posició de la finestra en sortir",
|
||||
"saveWindowPlacementWindows": "Desa la posició de la finestra després de sortir",
|
||||
"minimizeToTray": "Minimitza a la safata del sistema/barra de menú en tancar",
|
||||
"launchAtStartup": "Inici automàtic en iniciar la sessió",
|
||||
"launchMinimized": "Inici automàtic: Inici minimitzat",
|
||||
"showInContextMenu": "Mostra el LocalSend al menú contextual",
|
||||
"animations": "Animacions"
|
||||
},
|
||||
"receive": {
|
||||
"title": "Recepció",
|
||||
"quickSave": "@:general.quickSave",
|
||||
"quickSaveFromFavorites": "@:general.quickSaveFromFavorites",
|
||||
"requirePin": "@:webSharePage.requirePin",
|
||||
"autoFinish": "Finalització automàtica",
|
||||
"destination": "Desa en la carpeta",
|
||||
"downloads": "(Baixades)",
|
||||
"saveToGallery": "Desa els fitxers multimèdia a la galeria",
|
||||
"saveToHistory": "Desa a l'historial"
|
||||
},
|
||||
"send": {
|
||||
"title": "Enviament",
|
||||
"shareViaLinkAutoAccept": "Accepta peticions de manera automàtica en el mode «Comparteix via enllaç»"
|
||||
},
|
||||
"network": {
|
||||
"title": "Xarxa",
|
||||
"needRestart": "Reinicieu el servidor per a aplicar la configuració.",
|
||||
"server": "Servidor",
|
||||
"alias": "Nom del dispositiu",
|
||||
"deviceType": "Tipus de dispositiu",
|
||||
"deviceModel": "Model del dispositiu",
|
||||
"port": "Port",
|
||||
"discoveryTimeout": "Temps d'espera de descobriment",
|
||||
"useSystemName": "Utilitza el nom del sistema",
|
||||
"generateRandomAlias": "Genera un àlies aleatori",
|
||||
"portWarning": "Altres dispositius podrien no detectar-vos perquè utilitzeu un port personalitzat. (predefinit: {defaultPort})",
|
||||
"encryption": "Xifratge",
|
||||
"multicastGroup": "Adreça del Multicast",
|
||||
"multicastGroupWarning": "Altres dispositius podrien no detectar-vos perquè utilitzeu una adreça multicast personalitzada. (predefinida: {defaultMulticast})",
|
||||
"network": "Xarxa",
|
||||
"networkOptions": {
|
||||
"all": "Totes",
|
||||
"filtered": "Filtrades"
|
||||
}
|
||||
},
|
||||
"other": {
|
||||
"title": "Altres",
|
||||
"support": "Doneu suport al LocalSend",
|
||||
"donate": "Donació",
|
||||
"privacyPolicy": "Política de privadesa",
|
||||
"termsOfUse": "Condicions d'ús"
|
||||
},
|
||||
"advancedSettings": "Configuració avançada"
|
||||
},
|
||||
"troubleshootPage": {
|
||||
"title": "Solució de problemes",
|
||||
"subTitle": "L'aplicació no funciona com s'espera? Aquí podeu trobar solucions als problemes més comuns.",
|
||||
"solution": "Solució:",
|
||||
"fixButton": "Corregeix de manera automàtica",
|
||||
"firewall": {
|
||||
"symptom": "Aquest dispositiu pot enviar fitxers a d'altres, però altres dispositius no poden enviar fitxers a aquest.",
|
||||
"solution": "El més probable és que sigui un problema del tallafocs. Podeu solucionar-ho permetent les connexiions entrants (UDP i TCP) al port {port}.",
|
||||
"openFirewall": "Obre el tallafocs"
|
||||
},
|
||||
"noDiscovery": {
|
||||
"symptom": "Aquest dispositiu no pot descobrir altres dispositius.",
|
||||
"solution": "Comproveu que tots els dispositius estan a la mateixa xarxa Wi-Fi i tenen la mateixa configuració (port, adreça multicast i xifratge). Podeu provar d'escriure l'adreça IP del dispositiu de destí de manera manual. Si això funciona, considereu afegir aquest dispositiu als preferits perquè pugui ser descobert automàticament en un futur."
|
||||
},
|
||||
"noConnection": {
|
||||
"symptom": "Cap dels dos dispositius no poden trobar-se ni compartir fitxers.",
|
||||
"solution": "Existeix el problema als dos costats? Si és així, cal que comproveu que els dispositius estan a la mateixa xarxa Wi-Fi i comparteixen la mateixa configuració (port, adreça multicast i xifratge). La Wi-Fi podria no permetre la comunicació entre els participants a causa de l'aïllament del punt d'accés (Access Point, AP). En aquest cas, cal que desactiveu aquesta opció a l'encaminador."
|
||||
}
|
||||
},
|
||||
"receiveHistoryPage": {
|
||||
"title": "Historial",
|
||||
"openFolder": "Obre la carpeta",
|
||||
"deleteHistory": "Elimina l'historial",
|
||||
"empty": "L'historial està buit.",
|
||||
"entryActions": {
|
||||
"open": "Obre el fitxer",
|
||||
"showInFolder": "Mostra a la carpeta",
|
||||
"info": "Informació",
|
||||
"deleteFromHistory": "Elimina de l'historial"
|
||||
}
|
||||
},
|
||||
"apkPickerPage": {
|
||||
"title": "Aplicacions (APK)",
|
||||
"excludeSystemApps": "Exclou les aplicacions del sistema",
|
||||
"excludeAppsWithoutLaunchIntent": "Exclou les aplicacions no executables",
|
||||
"apps": "{n} Aplicacions"
|
||||
},
|
||||
"selectedFilesPage": {
|
||||
"deleteAll": "Elimina-ho tot"
|
||||
},
|
||||
"receivePage": {
|
||||
"subTitle": {
|
||||
"one": "vol enviar-vos un fitxer",
|
||||
"other": "vol enviar-vos {n} fitxers"
|
||||
},
|
||||
"subTitleMessage": "us ha enviat un missatge:",
|
||||
"subTitleLink": "us ha enviat un enllaç:",
|
||||
"canceled": "El remitent ha cancel·lat la petició."
|
||||
},
|
||||
"receiveOptionsPage": {
|
||||
"title": "Opcions",
|
||||
"destination": "@:settingsTab.receive.destination",
|
||||
"appDirectory": "(Carpeta LocalSend)",
|
||||
"saveToGallery": "@:settingsTab.receive.saveToGallery",
|
||||
"saveToGalleryOff": "S'ha desactivat automàticament perquè hi ha carpetes."
|
||||
},
|
||||
"sendPage": {
|
||||
"waiting": "S'està esperant una resposta…",
|
||||
"rejected": "El destinatari ha rebutjat la petició.",
|
||||
"tooManyAttempts": "@:web.tooManyAttempts",
|
||||
"busy": "El destinatari està ocupat amb una altra petició."
|
||||
},
|
||||
"progressPage": {
|
||||
"titleSending": "S'estan enviant els fitxers",
|
||||
"titleReceiving": "S'estan rebent els fitxers",
|
||||
"savedToGallery": "Desat a Fotos",
|
||||
"total": {
|
||||
"title": {
|
||||
"sending": "Progrés total ({time})",
|
||||
"finishedError": "Finalitzat amb error",
|
||||
"canceledSender": "Cancel·lat pel remitent",
|
||||
"canceledReceiver": "Cancel·lat pel destinatari"
|
||||
},
|
||||
"count": "Fitxers: {curr} / {n}",
|
||||
"size": "Mida: {curr} / {n}",
|
||||
"speed": "Velocitat: {speed}/s"
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"title": "Comparteix via enllaç",
|
||||
"loading": "S'està iniciant el servidor…",
|
||||
"stopping": "S'està aturant el servidor…",
|
||||
"error": "Hi ha hagut un error en iniciar el servidor.",
|
||||
"openLink": {
|
||||
"one": "Obre l'enllaç al navegador:",
|
||||
"other": "Obre un d'aquests enllaços al navegador:"
|
||||
},
|
||||
"requests": "Peticions",
|
||||
"noRequests": "Encara no hi ha peticions.",
|
||||
"encryption": "@:settingsTab.network.encryption",
|
||||
"autoAccept": "Accepta les peticions automàticament",
|
||||
"requirePin": "Demana un PIN",
|
||||
"pinHint": "El PIN és «{pin}»",
|
||||
"encryptionHint": "El LocalSend utilitza un certificat auto-signat. Cal que l'accepteu al navegador.",
|
||||
"pendingRequests": "Peticions pendents: {n}"
|
||||
},
|
||||
"aboutPage": {
|
||||
"title": "Quant al LocalSend",
|
||||
"description": [
|
||||
"El LocalSend és una aplicació gratuïta i de codi obert que us permet compartir fitxers i missatges de manera segura amb dispositius propers a la vostra xarxa local sense necessitat de connexió a Internet.",
|
||||
"Aquesta aplicació està disponible per a Android, iOS, macOS, Windows i Linux. Podeu trobar totes les opcions de baixada a la pàgina d'inici oficial."
|
||||
],
|
||||
"author": "Autor",
|
||||
"contributors": "Col·laboradors",
|
||||
"packagers": "Empaquetadors",
|
||||
"translators": "Traductors"
|
||||
},
|
||||
"donationPage": {
|
||||
"title": "Donació",
|
||||
"info": "El LocalSend és gratuït, de codi obert i sense anuncis. Si us agrada l'aplicació, podeu donar suport al desenvolupament amb una donació.",
|
||||
"donate": "Donació: {amount}",
|
||||
"thanks": "Moltes gràcies!",
|
||||
"restore": "Restaura la compra"
|
||||
},
|
||||
"changelogPage": {
|
||||
"title": "Registre de canvis"
|
||||
},
|
||||
"aliasGenerator(ignoreMissing, ignoreGpt)": {
|
||||
"@info": "Llengües diferents poden tenir paraules diferents, podrien no coincidir al 100%",
|
||||
"adjectives": [
|
||||
"Adorable",
|
||||
"Bonic",
|
||||
"Gran",
|
||||
"Brillant",
|
||||
"Neteja",
|
||||
"Intel·ligent",
|
||||
"Guai",
|
||||
"Bonic",
|
||||
"Astúcia",
|
||||
"Determinat",
|
||||
"Energètic",
|
||||
"Eficient",
|
||||
"Fantàstic",
|
||||
"Ràpid",
|
||||
"Bé",
|
||||
"Fresca",
|
||||
"Bo",
|
||||
"Preciós",
|
||||
"Genial",
|
||||
"Guapo",
|
||||
"Calent",
|
||||
"Amable",
|
||||
"Encantador",
|
||||
"Místic",
|
||||
"Producte",
|
||||
"Bonic",
|
||||
"Pacient",
|
||||
"Bonic",
|
||||
"Potent",
|
||||
"Ric",
|
||||
"Secret",
|
||||
"Intel·ligent",
|
||||
"Sòlid",
|
||||
"Especial",
|
||||
"Estratègic",
|
||||
"Fort",
|
||||
"Endreçat",
|
||||
"Savi"
|
||||
],
|
||||
"fruits": [
|
||||
"Poma",
|
||||
"Alvocat",
|
||||
"Plàtan",
|
||||
"Blackberry",
|
||||
"Nabiu",
|
||||
"Bròquil",
|
||||
"Pastanaga",
|
||||
"Cirera",
|
||||
"Coco",
|
||||
"Raïm",
|
||||
"Llimona",
|
||||
"Enciam",
|
||||
"Mango",
|
||||
"Meló",
|
||||
"Bolet",
|
||||
"Ceba",
|
||||
"Taronja",
|
||||
"Papaia",
|
||||
"Préssec",
|
||||
"Pera",
|
||||
"Pinya",
|
||||
"Patata",
|
||||
"Carbassa",
|
||||
"Gerd",
|
||||
"Maduixa",
|
||||
"Tomàquet"
|
||||
],
|
||||
"combination": "{fruit} {adjective}",
|
||||
"@combination": "In some languages, the adjective must be last."
|
||||
},
|
||||
"dialogs": {
|
||||
"addFile": {
|
||||
"title": "Afegeix-ho a la selecció",
|
||||
"content": "Què voleu afegir?"
|
||||
},
|
||||
"addressInput": {
|
||||
"title": "Introduïu l'adreça",
|
||||
"hashtag": "Etiqueta",
|
||||
"ip": "Adreça IP",
|
||||
"recentlyUsed": "Utilitzades recentment: "
|
||||
},
|
||||
"cancelSession": {
|
||||
"title": "Cancel·la la transferència de fitxers",
|
||||
"content": "Segur que voleu cancel·lar la transferència dels fitxers?"
|
||||
},
|
||||
"cannotOpenFile": {
|
||||
"title": "No es pot obrir el fitxer",
|
||||
"content": "No s'ha pogut obrir «{file}». S'ha mogut, reanomenat o eliminat?"
|
||||
},
|
||||
"encryptionDisabledNotice": {
|
||||
"title": "Xifratge desactivat",
|
||||
"content": "La comunicació ara es fa mitjançant el protocol HTTP no xifrat. Per a utilitzar HTTPS, torneu a activar el xifratge."
|
||||
},
|
||||
"errorDialog": {
|
||||
"title": "@:general.error"
|
||||
},
|
||||
"favoriteDialog": {
|
||||
"title": "Preferits",
|
||||
"noFavorites": "Encara no hi ha cap dispositiu preferit.",
|
||||
"addFavorite": "Afegeix"
|
||||
},
|
||||
"favoriteDeleteDialog": {
|
||||
"title": "Elimina dels preferits",
|
||||
"content": "Voleu eliminar «{name}» dels preferits?"
|
||||
},
|
||||
"favoriteEditDialog": {
|
||||
"titleAdd": "Afegeix als preferits",
|
||||
"titleEdit": "Configuració",
|
||||
"name": "Nom del dispositiu",
|
||||
"auto": "(auto)",
|
||||
"ip": "Adreça IP",
|
||||
"port": "Port"
|
||||
},
|
||||
"fileInfo": {
|
||||
"title": "Informació del fitxer",
|
||||
"fileName": "Nom del fitxer:",
|
||||
"path": "Ruta:",
|
||||
"size": "Mida:",
|
||||
"sender": "Remitent:",
|
||||
"time": "Temps:"
|
||||
},
|
||||
"fileNameInput": {
|
||||
"title": "Introduïu el nom del fitxer",
|
||||
"original": "Original: {original}"
|
||||
},
|
||||
"historyClearDialog": {
|
||||
"title": "Esborra l'historial",
|
||||
"content": "Segur que voleu eliminar tot l'historial?"
|
||||
},
|
||||
"localNetworkUnauthorized": {
|
||||
"title": "@:dialogs.noPermission.title",
|
||||
"description": "El LocalSend no pot trobar altres dispositius sense tenir permís per a escanejar la xarxa local. Concediu aquest permís a la configuració.",
|
||||
"gotoSettings": "Configuració"
|
||||
},
|
||||
"messageInput": {
|
||||
"title": "Tipus de missatge",
|
||||
"multiline": "Multilínia"
|
||||
},
|
||||
"noFiles": {
|
||||
"title": "No s'ha seleccionat cap fitxer",
|
||||
"content": "Seleccioneu com a mínim un fitxer."
|
||||
},
|
||||
"noPermission": {
|
||||
"title": "Sense permisos",
|
||||
"content": "No heu concedit els permisos necessaris. Concediu-los a la configuració."
|
||||
},
|
||||
"notAvailableOnPlatform": {
|
||||
"title": "No disponible",
|
||||
"content": "Aquesta característica només està disponible a:"
|
||||
},
|
||||
"qr": {
|
||||
"title": "Codi QR"
|
||||
},
|
||||
"quickActions": {
|
||||
"title": "Accions ràpides",
|
||||
"counter": "Comptador",
|
||||
"prefix": "Prefix",
|
||||
"padZero": "Reomple amb zeros",
|
||||
"sortBeforeCount": "Ordena abans alfabèticament",
|
||||
"random": "Aleatori"
|
||||
},
|
||||
"quickSaveNotice": {
|
||||
"title": "@:general.quickSave",
|
||||
"content": "Les sol·licituds de fitxers s'accepten automàticament. Tingueu en compte que tothom a la xarxa local us pot enviar fitxers."
|
||||
},
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"title": "@:general.quickSaveFromFavorites",
|
||||
"content": [
|
||||
"Les sol·licituds de fitxers s'accepten automàticament dels dispositius de la llista de preferits.",
|
||||
"Atenció! Actualment, això no és del tot segur, un hacker que tingués les emprentes de qualsevol del dispositiu de la llista de preferits podria enviar-vos fitxers sense restriccions.",
|
||||
"No obstant això, aquesta opció encara és més segura que permetre que tothom a la xarxa local us enviï fitxers sense restriccions."
|
||||
]
|
||||
},
|
||||
"pin": {
|
||||
"title": "Introduïu el PIN"
|
||||
},
|
||||
"sendModeHelp": {
|
||||
"title": "Modes d'enviament",
|
||||
"single": "Envia fitxers a un destinatari. La selecció s'esborrarà un cop finalitzada la transferència de fitxers.",
|
||||
"multiple": "Envia fitxers a diversos destinataris. La selecció no s'esborrarà en finalitzar la trasferència.",
|
||||
"link": "Els destinataris que no tinguin el LocalSend instal·lat poden baixar els fitxers seleccionats obrint l'enllaç al seu navegador."
|
||||
},
|
||||
"zoom": {
|
||||
"title": "URL"
|
||||
},
|
||||
"openFile": {
|
||||
"title": "Obre el fitxer",
|
||||
"content": "Voleu obrir el fitxer rebut?"
|
||||
}
|
||||
},
|
||||
"sanitization": {
|
||||
"empty": "El nom del fitxer no pot estar buit",
|
||||
"invalid": "El nom del fitxer conté caràcters no vàlids"
|
||||
},
|
||||
"tray": {
|
||||
"@info": "Les directrius d'Apple són molt estrictes quant a l'expressió «tanca».",
|
||||
"open": "@:general.open",
|
||||
"close": "Surt del LocalSend",
|
||||
"closeWindows": "Surt"
|
||||
},
|
||||
"web": {
|
||||
"waiting": "@:sendPage.waiting",
|
||||
"enterPin": "Introduïu el PIN",
|
||||
"invalidPin": "PIN no vàlid",
|
||||
"tooManyAttempts": "Massa intents",
|
||||
"rejected": "Rebutjat",
|
||||
"files": "Fitxers",
|
||||
"fileName": "Nom del fitxer",
|
||||
"size": "Mida"
|
||||
},
|
||||
"assetPicker": {
|
||||
"@info": "Traduccions per a l'eina de selecció de mitjans per a Android i iPhone",
|
||||
"confirm": "Confirma",
|
||||
"cancel": "Cancel·la",
|
||||
"edit": "Edita",
|
||||
"gifIndicator": "GIF",
|
||||
"loadFailed": "Càrrega fallida",
|
||||
"original": "Origen",
|
||||
"preview": "Previsualitza",
|
||||
"select": "Seleccioneu",
|
||||
"emptyList": "Llista buida",
|
||||
"unSupportedAssetType": "Tipus de fitxer no compatible.",
|
||||
"unableToAccessAll": "No es pot accedir a tots els fitxers del dispositiu",
|
||||
"viewingLimitedAssetsTip": "Visualitza només fitxers i àlbums accessibles per l'aplicació.",
|
||||
"changeAccessibleLimitedAssets": "Feu clic per a actualitzar els fitxers accessibles",
|
||||
"accessAllTip": "L'aplicació només pot accedir a alguns fitxers del dispositiu. Aneu a la configuració del sistema i permeteu que l'aplicació accedeixi a tots els mitjans del dispositiu.",
|
||||
"goToSystemSettings": "Vés a la configuració del sistema",
|
||||
"accessLimitedAssets": "Continua amb accés limitat",
|
||||
"accessiblePathName": "Fitxers accessibles",
|
||||
"sTypeAudioLabel": "Àudio",
|
||||
"sTypeImageLabel": "Imatge",
|
||||
"sTypeVideoLabel": "Vídeo",
|
||||
"sTypeOtherLabel": "Altres fitxers",
|
||||
"sActionPlayHint": "reprodueix",
|
||||
"sActionPreviewHint": "previsualitza",
|
||||
"sActionSelectHint": "selecccioneu",
|
||||
"sActionSwitchPathLabel": "canvia la ruta",
|
||||
"sActionUseCameraHint": "utilitza la càmera",
|
||||
"sNameDurationLabel": "duració",
|
||||
"sUnitAssetCountLabel": "compte"
|
||||
},
|
||||
"networkInterfacesPage": {
|
||||
"title": "Interfícies de xarxa",
|
||||
"info": "De manera predefinida, el LocalSend utilitza totes les interfícies de xarxa disponibles. Podeu excloure les xarxes no desitjades aquí. Cal que reinicieu el servidor per a aplicar els canvis.",
|
||||
"preview": "Previsualitza",
|
||||
"blacklist": "Llista de denegades",
|
||||
"whitelist": "Llista de permeses"
|
||||
}
|
||||
}
|
||||
@@ -28,6 +28,7 @@
|
||||
"open": "Otevřít",
|
||||
"queue": "Fronta",
|
||||
"quickSave": "Rychlé uložení",
|
||||
"quickSaveFromFavorites": "Rychlé uložení pro \"Oblíbené\"",
|
||||
"renamed": "Přejmenováno",
|
||||
"reset": "Resetovat",
|
||||
"restart": "Restartovat",
|
||||
@@ -46,6 +47,11 @@
|
||||
"ip": "IP:",
|
||||
"port": "Port:",
|
||||
"alias": "Alias:"
|
||||
},
|
||||
"quickSave": {
|
||||
"off": "@:general.off",
|
||||
"favorites": "Oblíbené",
|
||||
"on": "@:general.on"
|
||||
}
|
||||
},
|
||||
"sendTab": {
|
||||
@@ -67,6 +73,7 @@
|
||||
"nearbyDevices": "Zařízení v okolí",
|
||||
"thisDevice": "Toto zařízení",
|
||||
"scan": "Hledat zařízení",
|
||||
"manualSending": "Manuální odeslání",
|
||||
"sendMode": "Režim odesílání",
|
||||
"sendModes": {
|
||||
"single": "Jediný příjemce",
|
||||
@@ -97,20 +104,28 @@
|
||||
"system": "Systém"
|
||||
},
|
||||
"saveWindowPlacement": "Při ukončení uložit umístění okna",
|
||||
"saveWindowPlacementWindows": "Uložit polohu okna po ukončení",
|
||||
"minimizeToTray": "Při ukončení minimalizovat do lišty",
|
||||
"launchAtStartup": "Automatické spuštění po přihlášení",
|
||||
"launchMinimized": "Automatické spuštění: skrytý start",
|
||||
"showInContextMenu": "Zobrazit LocalSend v kontextové nabídce",
|
||||
"animations": "Animace"
|
||||
},
|
||||
"receive": {
|
||||
"title": "Soubory",
|
||||
"quickSave": "@:general.quickSave",
|
||||
"quickSaveFromFavorites": "@:general.quickSaveFromFavorites",
|
||||
"requirePin": "@:webSharePage.requirePin",
|
||||
"autoFinish": "Automatické dokončování",
|
||||
"destination": "Uložit do",
|
||||
"downloads": "(Downloads)",
|
||||
"saveToGallery": "Uložit média do galerie",
|
||||
"saveToHistory": "Uložit do historie"
|
||||
},
|
||||
"send": {
|
||||
"title": "Poslat",
|
||||
"shareViaLinkAutoAccept": "Automaticky přijímat požadavky v režimu \"Sdílet přes odkaz\"."
|
||||
},
|
||||
"network": {
|
||||
"title": "Síť",
|
||||
"needRestart": "Chcete-li použít nastavení, restartujte server!",
|
||||
@@ -119,6 +134,14 @@
|
||||
"deviceType": "Typ zařízení",
|
||||
"deviceModel": "Model zařízení",
|
||||
"port": "Port",
|
||||
"network": "Síť",
|
||||
"networkOptions": {
|
||||
"all": "Vše",
|
||||
"filtered": "Filtrované"
|
||||
},
|
||||
"discoveryTimeout": "Časový limit zjišťování",
|
||||
"useSystemName": "Použít název systému",
|
||||
"generateRandomAlias": "Generovat náhodný alias",
|
||||
"portWarning": "Je možné, že vás ostatní zařízení nezjistí, protože používáte vlastní port. (výchozí: {defaultPort})",
|
||||
"encryption": "Šifrování",
|
||||
"multicastGroup": "Multicast",
|
||||
@@ -143,11 +166,22 @@
|
||||
"solution": "S největší pravděpodobností se jedná o problém s firewallem. Můžete to vyřešit povolením příchozích připojení (UDP a TCP) na portu {port}.",
|
||||
"openFirewall": "Otevřít bránu firewall"
|
||||
},
|
||||
"noDiscovery": {
|
||||
"symptom": "Toto zařízení nemůže zjistit jiná zařízení.",
|
||||
"solution": "Ujistěte se, že jsou všechna zařízení ve stejné síti Wi-Fi a sdílejí stejnou konfiguraci (port, adresa vícesměrového vysílání, šifrování). Můžete zkusit zadat IP adresu cílového zařízení ručně. Pokud to funguje, zvažte přidání tohoto zařízení do oblíbených, aby mohlo být v budoucnu automaticky objeveno."
|
||||
},
|
||||
"noConnection": {
|
||||
"symptom": "Obě zařízení se nemohou navzájem objevit ani nemohou sdílet soubory.",
|
||||
"solution": "Problém je na obou stranách? Pak se musíte ujistit, že jsou obě zařízení ve stejné wifi síti a sdílejí stejnou konfiguraci (port, multicastová adresa, šifrování). Wifi nemusí umožňovat komunikaci mezi účastníky. V takovém případě musí být tato možnost povolena na routeru."
|
||||
}
|
||||
},
|
||||
"networkInterfacesPage": {
|
||||
"title": "Síťová rozhraní",
|
||||
"info": "Ve výchozím nastavení používá LocalSend všechna dostupná síťová rozhraní. Zde můžete vyloučit nežádoucí sítě. Chcete-li použít změny, musíte restartovat server.",
|
||||
"preview": "Náhled",
|
||||
"whitelist": "Seznam povolených",
|
||||
"blacklist": "Seznam zakázaných"
|
||||
},
|
||||
"receiveHistoryPage": {
|
||||
"title": "Historie",
|
||||
"openFolder": "Otevřít složku",
|
||||
@@ -155,6 +189,7 @@
|
||||
"empty": "Historie je prázdná.",
|
||||
"entryActions": {
|
||||
"open": "Otevřít soubor",
|
||||
"showInFolder": "Zobrazit ve složce",
|
||||
"info": "Informace",
|
||||
"deleteFromHistory": "Smazat z historie"
|
||||
}
|
||||
@@ -187,6 +222,7 @@
|
||||
"sendPage": {
|
||||
"waiting": "Čekání na odpověď...",
|
||||
"rejected": "Příjemce žádost odmítl.",
|
||||
"tooManyAttempts": "@:web.tooManyAttempts",
|
||||
"busy": "Příjemce je zaneprázdněn dalším požadavkem."
|
||||
},
|
||||
"progressPage": {
|
||||
@@ -217,6 +253,9 @@
|
||||
"requests": "Žádosti",
|
||||
"noRequests": "Zatím žádné žádosti.",
|
||||
"encryption": "@:settingsTab.network.encryption",
|
||||
"autoAccept": "Automaticky přijímat žádosti",
|
||||
"requirePin": "Vyžadovat PIN",
|
||||
"pinHint": "PIN je \"{pin}\"",
|
||||
"encryptionHint": "LocalSend používá self-signed certifikát. Musíte ho přijmout ve vašem prohlížeči.",
|
||||
"pendingRequests": "Čekající žádosti: {n}"
|
||||
},
|
||||
@@ -228,6 +267,7 @@
|
||||
],
|
||||
"author": "Autor",
|
||||
"contributors": "Přispěvatelé",
|
||||
"packagers": "Baliči",
|
||||
"translators": "Překladatelé"
|
||||
},
|
||||
"donationPage": {
|
||||
@@ -248,6 +288,10 @@
|
||||
"title": "Přidat do výběru",
|
||||
"content": "Co chcete přidat?"
|
||||
},
|
||||
"openFile": {
|
||||
"title": "Otevřít soubor",
|
||||
"content": "Chcete otevřít přijatý soubor?"
|
||||
},
|
||||
"addressInput": {
|
||||
"title": "Zadat adresu",
|
||||
"hashtag": "Hashtag",
|
||||
@@ -338,20 +382,42 @@
|
||||
"title": "@:general.quickSave",
|
||||
"content": "Požadavky na soubor jsou automaticky přijímány. Uvědomte si, že každý v místní síti vám může posílat soubory."
|
||||
},
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"title": "@:general.quickSaveFromFavorites",
|
||||
"content": [
|
||||
"Žádosti o soubory jsou nyní přijímány automaticky ze zařízení ve vašem seznamu oblíbených.",
|
||||
"Upozornění: V současné době to není zcela bezpečné, protože hacker, který zná vaše oblíbené zařízení, vám stále může posílat soubory.",
|
||||
"Tato možnost je však stále bezpečnější než povolení libovolného zařízení."
|
||||
]
|
||||
},
|
||||
"pin": {
|
||||
"title": "Vložit PIN"
|
||||
},
|
||||
"sendModeHelp": {
|
||||
"title": "Režimy odesílání",
|
||||
"single": "Odešle soubory jednomu příjemci. Po dokončení přenosu souboru bude výběr vymazán.",
|
||||
"multiple": "Odešle soubory více příjemcům. Výběr nebude vymazán.",
|
||||
"link": "Příjemci, kteří nemají nainstalovaný LocalSend, si mohou vybrané soubory stáhnout otevřením odkazu ve svém prohlížeči."
|
||||
},
|
||||
"zoom": {
|
||||
"title": "URL"
|
||||
}
|
||||
},
|
||||
"sanitization": {
|
||||
"empty": "Název souboru nemůže být prázdný",
|
||||
"invalid": "Název souboru obsahuje neplatné znaky"
|
||||
},
|
||||
"tray": {
|
||||
"@info": "Apple Guidelines are very strict about the 'close' wording.",
|
||||
"open": "@:general.open",
|
||||
"close": "Ukončit LocalSend"
|
||||
"close": "Ukončit LocalSend",
|
||||
"closeWindows": "Konec"
|
||||
},
|
||||
"web": {
|
||||
"waiting": "@:sendPage.waiting",
|
||||
"enterPin": "Vložit PIN",
|
||||
"invalidPin": "Neplatný PIN",
|
||||
"tooManyAttempts": "Příliš mnoho pokusů",
|
||||
"rejected": "Odmítnuto",
|
||||
"files": "Soubory",
|
||||
"fileName": "Název souboru",
|
||||
@@ -0,0 +1,457 @@
|
||||
{
|
||||
"locale": "Dansk",
|
||||
"appName": "LocalSend",
|
||||
"general": {
|
||||
"accept": "Acceptér",
|
||||
"accepted": "Accepteret",
|
||||
"add": "Tilføj",
|
||||
"advanced": "Avanceret",
|
||||
"cancel": "Afbryd",
|
||||
"close": "Luk",
|
||||
"confirm": "Bekræft",
|
||||
"continueStr": "Fortsæt",
|
||||
"copy": "Kopiér",
|
||||
"copiedToClipboard": "Kopieret til udklipsholder",
|
||||
"decline": "Afvis",
|
||||
"done": "Færdig",
|
||||
"delete": "Slet",
|
||||
"edit": "Rediger",
|
||||
"error": "Fejl",
|
||||
"example": "Eksempel",
|
||||
"files": "Filer",
|
||||
"finished": "Fuldført",
|
||||
"hide": "Skjul",
|
||||
"off": "Fra",
|
||||
"offline": "Offline",
|
||||
"on": "Til",
|
||||
"online": "Online",
|
||||
"open": "Åbn",
|
||||
"queue": "Kø",
|
||||
"quickSave": "Gem hurtigt",
|
||||
"quickSaveFromFavorites": "Gem hurtigt til \"Favoritter\"",
|
||||
"renamed": "Omdøbt",
|
||||
"reset": "Fortryd ændringer",
|
||||
"restart": "Genstart",
|
||||
"settings": "Indstillinger",
|
||||
"skipped": "Sprunget over",
|
||||
"start": "Start",
|
||||
"stop": "Stop",
|
||||
"save": "Gem",
|
||||
"unchanged": "Uændret",
|
||||
"unknown": "Ukendt",
|
||||
"noItemInClipboard": "Ingen elementer i udklipsholder."
|
||||
},
|
||||
"receiveTab": {
|
||||
"title": "Modtag",
|
||||
"infoBox": {
|
||||
"ip": "IP:",
|
||||
"port": "Port:",
|
||||
"alias": "Enhedsnavn:"
|
||||
},
|
||||
"quickSave": {
|
||||
"favorites": "Favoritter",
|
||||
"off": "@:general.off",
|
||||
"on": "@:general.on"
|
||||
}
|
||||
},
|
||||
"sendTab": {
|
||||
"title": "Send",
|
||||
"selection": {
|
||||
"title": "Valg",
|
||||
"files": "Filer: {files}",
|
||||
"size": "Størrelse: {size}"
|
||||
},
|
||||
"picker": {
|
||||
"file": "Fil",
|
||||
"folder": "Mappe",
|
||||
"media": "Medie",
|
||||
"text": "Tekst",
|
||||
"app": "App",
|
||||
"clipboard": "Indsæt"
|
||||
},
|
||||
"shareIntentInfo": "Du kan også bruge din mobilenheds \"Del\"-funktion til nemmere at vælge filer.",
|
||||
"nearbyDevices": "Enheder i nærheden",
|
||||
"thisDevice": "Denne enhed",
|
||||
"scan": "Søg efter enheder",
|
||||
"manualSending": "Manuel afsendelse",
|
||||
"sendMode": "Send-tilstand",
|
||||
"sendModes": {
|
||||
"single": "Enkel modtager",
|
||||
"multiple": "Flere modtagere",
|
||||
"link": "Del med link"
|
||||
},
|
||||
"sendModeHelp": "Forklaring",
|
||||
"help": "Sørg for, at den ønskede enhed er på det samme Wi-Fi-netværk.",
|
||||
"placeItems": "Placer filer til deling."
|
||||
},
|
||||
"settingsTab": {
|
||||
"title": "Indstillinger",
|
||||
"general": {
|
||||
"title": "Generelt",
|
||||
"brightness": "Tema",
|
||||
"brightnessOptions": {
|
||||
"system": "System",
|
||||
"dark": "Mørk",
|
||||
"light": "Lys"
|
||||
},
|
||||
"color": "Farve",
|
||||
"colorOptions": {
|
||||
"system": "System",
|
||||
"oled": "OLED"
|
||||
},
|
||||
"language": "Sprog",
|
||||
"languageOptions": {
|
||||
"system": "System"
|
||||
},
|
||||
"saveWindowPlacement": "Gem vinduesposition ved afslutning",
|
||||
"saveWindowPlacementWindows": "Gem vinduesposition ved lukning",
|
||||
"minimizeToTray": "Minimer til systembakken/menulinjen ved lukning",
|
||||
"launchAtStartup": "Autostart efter login",
|
||||
"launchMinimized": "Autostart: Start skjult",
|
||||
"showInContextMenu": "Vis LocalSend i kontekstmenu",
|
||||
"animations": "Animationer"
|
||||
},
|
||||
"receive": {
|
||||
"title": "Modtag",
|
||||
"quickSave": "@:general.quickSave",
|
||||
"quickSaveFromFavorites": "@:general.quickSaveFromFavorites",
|
||||
"requirePin": "@:webSharePage.requirePin",
|
||||
"autoFinish": "Auto-fuldfør",
|
||||
"destination": "Gem til mappe",
|
||||
"downloads": "(Overførsler)",
|
||||
"saveToGallery": "Gem medier til galleri",
|
||||
"saveToHistory": "Gem til historik"
|
||||
},
|
||||
"send": {
|
||||
"title": "Send",
|
||||
"shareViaLinkAutoAccept": "Acceptér automatisk anmodninger i \"Del med link\"-tilstand"
|
||||
},
|
||||
"network": {
|
||||
"title": "Netværk",
|
||||
"needRestart": "Genstart serveren for at anvende ændringerne!",
|
||||
"server": "Server",
|
||||
"alias": "Enhedsnavn",
|
||||
"deviceType": "Enhedstype",
|
||||
"deviceModel": "Enhedsmodel",
|
||||
"port": "Port",
|
||||
"discoveryTimeout": "Timeout for søgning",
|
||||
"portWarning": "Andre enheder registrerer dig muligvis ikke, da du bruger en brugerdefineret port (standard: {defaultPort}).",
|
||||
"encryption": "Kryptering",
|
||||
"multicastGroup": "Multicast-adresse",
|
||||
"multicastGroupWarning": "Andre enheder registrerer dig muligvis ikke, da du bruger en brugerdefineret multicast-adresse (standard: {defaultMulticast}).",
|
||||
"network": "Netværk",
|
||||
"networkOptions": {
|
||||
"all": "Alle",
|
||||
"filtered": "Filtreret"
|
||||
},
|
||||
"useSystemName": "Brug systemnavn",
|
||||
"generateRandomAlias": "Generér tilfældigt alias"
|
||||
},
|
||||
"other": {
|
||||
"title": "Andet",
|
||||
"support": "Støt LocalSend",
|
||||
"donate": "Donér",
|
||||
"privacyPolicy": "Privatlivspolitik",
|
||||
"termsOfUse": "Brugsbetingelser"
|
||||
},
|
||||
"advancedSettings": "Avancerede indstillinger"
|
||||
},
|
||||
"troubleshootPage": {
|
||||
"title": "Fejlsøgning",
|
||||
"subTitle": "Fungerer appen ikke som forventet? Her finder du løsninger på almindelige problemer.",
|
||||
"solution": "Løsning:",
|
||||
"fixButton": "Løs automatisk",
|
||||
"firewall": {
|
||||
"symptom": "Denne enhed kan sende filer til andre enheder, men andre kan ikke sende til denne enhed.",
|
||||
"solution": "Dette er sandsynligvis et firewall-problem. Løs det ved at tillade indgående forbindelser (UDP og TCP) på port {port}.",
|
||||
"openFirewall": "Åbn firewall"
|
||||
},
|
||||
"noDiscovery": {
|
||||
"symptom": "Denne enhed kan ikke finde andre enheder.",
|
||||
"solution": "Sørg for, at alle enheder er på samme Wi-Fi-netværk og har den samme konfiguration (port, multicast-adresse, kryptering). Du kan prøve at indtaste den ønskede enheds IP-adresse manuelt. Hvis det virker, kan du føje enheden til favoritter, så den kan findes automatisk fremover."
|
||||
},
|
||||
"noConnection": {
|
||||
"symptom": "Begge enheder kan hverken se hinanden eller dele data.",
|
||||
"solution": "Er problemet der på begge enheder? Hvis ja, skal du sikre, at begge er på samme Wi-Fi-netværk og har den samme konfiguration (port, multicast-adresse, kryptering). Det kan være, at Wi-Fi-netværket forhindrer kommunikation mellem enheder grundet Access Point (AP) Isolation. I så fald skal denne indstilling deaktiveres på routeren."
|
||||
}
|
||||
},
|
||||
"receiveHistoryPage": {
|
||||
"title": "Historik",
|
||||
"openFolder": "Åbn mappe",
|
||||
"deleteHistory": "Slet historik",
|
||||
"empty": "Historikken er tom.",
|
||||
"entryActions": {
|
||||
"open": "Åbn fil",
|
||||
"showInFolder": "Vis i mappe",
|
||||
"info": "Information",
|
||||
"deleteFromHistory": "Slet fra historik"
|
||||
}
|
||||
},
|
||||
"apkPickerPage": {
|
||||
"title": "Apps (APK)",
|
||||
"excludeSystemApps": "Ekskluder systemapps",
|
||||
"excludeAppsWithoutLaunchIntent": "Ekskluder ikke-startbare apps",
|
||||
"apps": "{n} Apps"
|
||||
},
|
||||
"selectedFilesPage": {
|
||||
"deleteAll": "Slet alle"
|
||||
},
|
||||
"receivePage": {
|
||||
"subTitle": {
|
||||
"one": "vil sende dig en fil",
|
||||
"other": "vil sende dig {n} filer"
|
||||
},
|
||||
"subTitleMessage": "sendte dig en besked:",
|
||||
"subTitleLink": "sendte dig et link:",
|
||||
"canceled": "Afsenderen har afbrudt delingen."
|
||||
},
|
||||
"receiveOptionsPage": {
|
||||
"title": "Muligheder",
|
||||
"destination": "@:settingsTab.receive.destination",
|
||||
"appDirectory": "(LocalSend mappe)",
|
||||
"saveToGallery": "@:settingsTab.receive.saveToGallery",
|
||||
"saveToGalleryOff": "Slået fra automatisk, fordi der er mapper."
|
||||
},
|
||||
"sendPage": {
|
||||
"waiting": "Venter på svar…",
|
||||
"rejected": "Modtageren har afvist delingen.",
|
||||
"tooManyAttempts": "@:web.tooManyAttempts",
|
||||
"busy": "Modtageren er optaget med en anden deling."
|
||||
},
|
||||
"progressPage": {
|
||||
"titleSending": "Sender filer",
|
||||
"titleReceiving": "Modtager filer",
|
||||
"savedToGallery": "Gemt i fotos",
|
||||
"total": {
|
||||
"title": {
|
||||
"sending": "Samlet tid ({time})",
|
||||
"finishedError": "Fuldført med fejl",
|
||||
"canceledSender": "Afbrudt af afsender",
|
||||
"canceledReceiver": "Afbrudt af modtager"
|
||||
},
|
||||
"count": "Filer: {curr} / {n}",
|
||||
"size": "Størrelse: {curr} / {n}",
|
||||
"speed": "Hastighed: {speed}/s"
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"title": "Del med link",
|
||||
"loading": "Starter server…",
|
||||
"stopping": "Stopper server…",
|
||||
"error": "En fejl opstod, mens serveren blev startet.",
|
||||
"openLink": {
|
||||
"one": "Åbn dette link i din browser:",
|
||||
"other": "Åbn et af disse links i din browser:"
|
||||
},
|
||||
"requests": "Forespørgsler",
|
||||
"noRequests": "Ingen forespørgsler endnu.",
|
||||
"encryption": "@:settingsTab.network.encryption",
|
||||
"autoAccept": "Accepter automatisk anmodninger",
|
||||
"requirePin": "Kræv PIN-kode",
|
||||
"pinHint": "PIN-koden er \"{pin}\"",
|
||||
"encryptionHint": "LocalSend bruger et selvsigneret certifikat. Du skal acceptere det i din browser.",
|
||||
"pendingRequests": "Afventende forespørgsler: {n}"
|
||||
},
|
||||
"aboutPage": {
|
||||
"title": "Om LocalSend",
|
||||
"description": [
|
||||
"LocalSend er en gratis, open source-app, der lader dig dele filer og beskeder sikkert med enheder i nærheden over dit lokale netværk uden behov for en internetforbindelse.",
|
||||
"Appen er tilgængelig på Android, iOS, macOS, Windows og Linux. Du finder alle downloadmuligheder på den officielle hjemmeside."
|
||||
],
|
||||
"author": "Skaber",
|
||||
"contributors": "Bidragydere",
|
||||
"packagers": "Pakkere",
|
||||
"translators": "Oversættere"
|
||||
},
|
||||
"donationPage": {
|
||||
"title": "Donér",
|
||||
"info": "LocalSend er gratis, open source og uden annoncer. Hvis du kan lide appen, kan du støtte udviklingen med en donation.",
|
||||
"donate": "Donér {amount}",
|
||||
"thanks": "Tusind tak for din støtte!",
|
||||
"restore": "Gendan køb"
|
||||
},
|
||||
"changelogPage": {
|
||||
"title": "Ændringslog"
|
||||
},
|
||||
"aliasGenerator(ignoreMissing, ignoreGpt)": {
|
||||
"@info": "Lokaliteter kan have forskellige ord og matcher ikke altid 1:1"
|
||||
},
|
||||
"dialogs": {
|
||||
"addFile": {
|
||||
"title": "Føj til valg",
|
||||
"content": "Hvad vil du tilføje?"
|
||||
},
|
||||
"addressInput": {
|
||||
"title": "Indtast adresse",
|
||||
"hashtag": "Hashtag",
|
||||
"ip": "IP-adresse",
|
||||
"recentlyUsed": "Senest brugt: "
|
||||
},
|
||||
"cancelSession": {
|
||||
"title": "Afbryd filoverførsel",
|
||||
"content": "Vil du virkelig afbryde filoverførslen?"
|
||||
},
|
||||
"cannotOpenFile": {
|
||||
"title": "Kan ikke åbne filen",
|
||||
"content": "Filen \"{file}\" kunne ikke åbnes. Er denne fil blevet flyttet, omdøbt eller slettet?"
|
||||
},
|
||||
"encryptionDisabledNotice": {
|
||||
"title": "Kryptering deaktiveret",
|
||||
"content": "Kommunikationen sker nu via den ukrypterede HTTP-protokol. Aktivér kryptering igen for at bruge HTTPS."
|
||||
},
|
||||
"errorDialog": {
|
||||
"title": "@:general.error"
|
||||
},
|
||||
"favoriteDialog": {
|
||||
"title": "Favoritter",
|
||||
"noFavorites": "Ingen favoritter endnu.",
|
||||
"addFavorite": "Tilføj"
|
||||
},
|
||||
"favoriteDeleteDialog": {
|
||||
"title": "Slet favorit",
|
||||
"content": "Vil du virkelig slette \"{name}\"?"
|
||||
},
|
||||
"favoriteEditDialog": {
|
||||
"titleAdd": "Føj til favoritter",
|
||||
"titleEdit": "Rediger favorit",
|
||||
"name": "Enhedsnavn",
|
||||
"auto": "(auto)",
|
||||
"ip": "IP-adresse",
|
||||
"port": "Port"
|
||||
},
|
||||
"fileInfo": {
|
||||
"title": "Filoplysninger",
|
||||
"fileName": "Filnavn:",
|
||||
"path": "Sti:",
|
||||
"size": "Størrelse:",
|
||||
"sender": "Afsender:",
|
||||
"time": "Tidspunkt:"
|
||||
},
|
||||
"fileNameInput": {
|
||||
"title": "Angiv filnavn",
|
||||
"original": "Original: {original}"
|
||||
},
|
||||
"historyClearDialog": {
|
||||
"title": "Ryd historik",
|
||||
"content": "Vil du virkelig slette hele historikken?"
|
||||
},
|
||||
"localNetworkUnauthorized": {
|
||||
"title": "@:dialogs.noPermission.title",
|
||||
"description": "LocalSend kan ikke finde andre enheder uden tilladelse til at scanne det lokale netværk. Giv venligst tilladelse i systemindstillingerne.",
|
||||
"gotoSettings": "Indstillinger"
|
||||
},
|
||||
"messageInput": {
|
||||
"title": "Skriv besked",
|
||||
"multiline": "Flerlinjet"
|
||||
},
|
||||
"noFiles": {
|
||||
"title": "Ingen fil valgt",
|
||||
"content": "Vælg mindst én fil."
|
||||
},
|
||||
"noPermission": {
|
||||
"title": "Ingen tilladelse",
|
||||
"content": "Du har ikke givet de nødvendige tilladelser. Giv venligst tilladelse i systemindstillingerne."
|
||||
},
|
||||
"notAvailableOnPlatform": {
|
||||
"title": "Ikke tilgængelig",
|
||||
"content": "Denne funktion er ikke tilgængelig:"
|
||||
},
|
||||
"qr": {
|
||||
"title": "QR-kode"
|
||||
},
|
||||
"quickActions": {
|
||||
"title": "Hurtighandlinger",
|
||||
"counter": "Tæller",
|
||||
"prefix": "Præfiks",
|
||||
"padZero": "Fyld med nuller",
|
||||
"sortBeforeCount": "Sortér alfabetisk på forhånd (A-Å)",
|
||||
"random": "Tilfældig"
|
||||
},
|
||||
"quickSaveNotice": {
|
||||
"title": "@:general.quickSave",
|
||||
"content": "Filoverførsler accepteres nu automatisk. Bemærk, at alle på det lokale netværk kan sende dig filer."
|
||||
},
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"title": "@:general.quickSaveFromFavorites",
|
||||
"content": [
|
||||
"Filoverførsler accepteres nu automatisk fra enheder på din favoritliste.",
|
||||
"Advarsel! Dette er ikke helt sikkert, da hvis en hacker har fingeraftrykket på enhver enhed fra din favoritliste, kan de sende filer til dig uden restriktioner.",
|
||||
"Denne mulighed er dog stadig sikrere end at tillade alle brugere på det lokale netværk at sende filer til dig uden restriktioner."
|
||||
]
|
||||
},
|
||||
"pin": {
|
||||
"title": "Indtast PIN-kode"
|
||||
},
|
||||
"sendModeHelp": {
|
||||
"title": "Send-tilstande",
|
||||
"single": "Sender filer til én modtager. Valget ryddes efter filoverførsel er færdig.",
|
||||
"multiple": "Sender filer til flere modtager. Valget ryddes ikke efter filoverførsel er færdig.",
|
||||
"link": "Modtagere, der ikke har LocalSend installeret, kan hente de valgte filer ved at åbne linket i deres browser."
|
||||
},
|
||||
"zoom": {
|
||||
"title": "URL"
|
||||
},
|
||||
"openFile": {
|
||||
"title": "Åbn fil",
|
||||
"content": "Vil du åbne den modtagne fil?"
|
||||
}
|
||||
},
|
||||
"sanitization": {
|
||||
"empty": "Filnavn må ikke være tomt",
|
||||
"invalid": "Filnavn indeholder ugyldige tegn"
|
||||
},
|
||||
"tray": {
|
||||
"@info": "Apples retningslinjer er meget strenge angående ordet \"luk\".",
|
||||
"open": "@:general.open",
|
||||
"close": "Afslut LocalSend",
|
||||
"closeWindows": "Luk"
|
||||
},
|
||||
"web": {
|
||||
"waiting": "@:sendPage.waiting",
|
||||
"enterPin": "Indtast PIN-kode",
|
||||
"invalidPin": "Ugyldig PIN-kode",
|
||||
"tooManyAttempts": "For mange forsøg",
|
||||
"rejected": "Afvist",
|
||||
"files": "Filer",
|
||||
"fileName": "Filnavn",
|
||||
"size": "Størrelse"
|
||||
},
|
||||
"assetPicker": {
|
||||
"@info": "Oversættelser til medievalgværktøjet på Android og iPhone",
|
||||
"confirm": "Bekræft",
|
||||
"cancel": "Afbryd",
|
||||
"edit": "Rediger",
|
||||
"gifIndicator": "GIF",
|
||||
"loadFailed": "Indlæsning mislykkedes",
|
||||
"original": "Original",
|
||||
"preview": "Forhåndsvisning",
|
||||
"select": "Vælg",
|
||||
"emptyList": "Tom liste",
|
||||
"unSupportedAssetType": "Ikke-understøttet filtype.",
|
||||
"unableToAccessAll": "Kan ikke tilgå alle filer på enheden",
|
||||
"viewingLimitedAssetsTip": "Vis kun filer og mapper tilgængelige for appen.",
|
||||
"changeAccessibleLimitedAssets": "Klik for at opdatere tilgængelige filer",
|
||||
"accessAllTip": "Appen kan kun tilgå nogle filer på enheden. Gå til systemindstillingerne, og giv den adgang til alle medier på enheden.",
|
||||
"goToSystemSettings": "Gå til systemindstillinger",
|
||||
"accessLimitedAssets": "Fortsæt med begrænset adgang",
|
||||
"accessiblePathName": "Tilgængelige filer",
|
||||
"sTypeAudioLabel": "Lyd",
|
||||
"sTypeImageLabel": "Billede",
|
||||
"sTypeVideoLabel": "Video",
|
||||
"sTypeOtherLabel": "Andre medier",
|
||||
"sActionPlayHint": "Afspil",
|
||||
"sActionPreviewHint": "Forhåndsvisning",
|
||||
"sActionSelectHint": "Vælg",
|
||||
"sActionSwitchPathLabel": "Ændr filsti",
|
||||
"sActionUseCameraHint": "Brug kamera",
|
||||
"sNameDurationLabel": "Varighed",
|
||||
"sUnitAssetCountLabel": "Antal"
|
||||
},
|
||||
"networkInterfacesPage": {
|
||||
"title": "Netværksgrænseflader",
|
||||
"info": "Som standard bruger LocalSend alle tilgængelige netværksgrænseflader. Du kan ekskludere uønskede netværk her. Du skal genstarte serveren for at anvende ændringerne.",
|
||||
"preview": "Forhåndsvisning",
|
||||
"whitelist": "Hvidliste",
|
||||
"blacklist": "Sortliste"
|
||||
}
|
||||
}
|
||||
@@ -28,6 +28,7 @@
|
||||
"open": "Öffnen",
|
||||
"queue": "Warteschlange",
|
||||
"quickSave": "Quick Save",
|
||||
"quickSaveFromFavorites": "Quick Save für \"Favoriten\"",
|
||||
"renamed": "Umbenannt",
|
||||
"reset": "Zurücksetzen",
|
||||
"restart": "Neustarten",
|
||||
@@ -46,6 +47,11 @@
|
||||
"ip": "IP:",
|
||||
"port": "Port:",
|
||||
"alias": "Alias:"
|
||||
},
|
||||
"quickSave": {
|
||||
"off": "@:general.off",
|
||||
"favorites": "Favoriten",
|
||||
"on": "@:general.on"
|
||||
}
|
||||
},
|
||||
"sendTab": {
|
||||
@@ -67,6 +73,7 @@
|
||||
"nearbyDevices": "Geräte in der Nähe",
|
||||
"thisDevice": "Dieses Gerät",
|
||||
"scan": "Geräte suchen",
|
||||
"manualSending": "Manuelles Senden",
|
||||
"sendMode": "Sendemodus",
|
||||
"sendModes": {
|
||||
"single": "Einzelner Empfänger",
|
||||
@@ -96,24 +103,28 @@
|
||||
"languageOptions": {
|
||||
"system": "System"
|
||||
},
|
||||
"saveWindowPlacement": "Schließen: Fensterposition speichern",
|
||||
"minimizeToTray": "Schließen: in Symbolleiste minimieren",
|
||||
"saveWindowPlacement": "Beenden: Fensterposition speichern",
|
||||
"saveWindowPlacementWindows": "Beenden: Fensterposition speichern",
|
||||
"minimizeToTray": "Beenden: in Symbolleiste minimieren",
|
||||
"launchAtStartup": "Autostart nach Login",
|
||||
"launchMinimized": "Autostart: versteckt starten",
|
||||
"showInContextMenu": "LocalSend im Kontextmenü anzeigen",
|
||||
"animations": "Animationen"
|
||||
},
|
||||
"receive": {
|
||||
"title": "Empfangen",
|
||||
"quickSave": "@:general.quickSave",
|
||||
"quickSaveFromFavorites": "@:general.quickSaveFromFavorites",
|
||||
"requirePin": "@:webSharePage.requirePin",
|
||||
"autoFinish": "Autom. beenden",
|
||||
"destination": "Ziel-Ordner",
|
||||
"downloads": "(Downloads)",
|
||||
"saveToGallery": "Medien in die Gallerie speichern",
|
||||
"saveToGallery": "Medien in die Galerie speichern",
|
||||
"saveToHistory": "In Verlauf speichern"
|
||||
},
|
||||
"send": {
|
||||
"title": "Senden",
|
||||
"shareViaLinkAutoAccept": "Link teilen: Autom. aktzeptieren"
|
||||
"shareViaLinkAutoAccept": "Link teilen: Autom. akzeptieren"
|
||||
},
|
||||
"network": {
|
||||
"title": "Netzwerk",
|
||||
@@ -123,6 +134,14 @@
|
||||
"deviceType": "Gerätetyp",
|
||||
"deviceModel": "Gerätemodell",
|
||||
"port": "Port",
|
||||
"network": "Netzwerk",
|
||||
"networkOptions": {
|
||||
"all": "Alle",
|
||||
"filtered": "Gefiltert"
|
||||
},
|
||||
"discoveryTimeout": "Erkennungs-Timeout",
|
||||
"useSystemName": "Systemnamen verwenden",
|
||||
"generateRandomAlias": "Zufälligen Alias generieren",
|
||||
"portWarning": "Möglicherweise wirst du von anderen Geräten nicht erkannt, weil du einen benutzerdefinierten Port verwendest. (Standard: {defaultPort})",
|
||||
"encryption": "Verschlüsselung",
|
||||
"multicastGroup": "Multicast",
|
||||
@@ -147,11 +166,22 @@
|
||||
"solution": "Dies ist höchstwahrscheinlich ein Firewall-Problem. Du kannst es lösen, indem du eingehende Verbindungen (UDP und TCP) auf Port {port} zulässt.",
|
||||
"openFirewall": "Firewall öffnen"
|
||||
},
|
||||
"noDiscovery": {
|
||||
"symptom": "Dieses Gerät kann keine anderen Geräte entdecken.",
|
||||
"solution": "Stelle sicher, dass alle Geräte im selben Wi-Fi-Netzwerk sind und die gleiche Konfiguration teilen (Port, Multicast-Adresse, Verschlüsselung). Du kannst versuchen, die IP-Adresse des Zielgeräts manuell einzugeben. Wenn dies funktioniert, füge dieses Gerät zu den Favoriten hinzu, damit es in Zukunft automatisch entdeckt werden kann."
|
||||
},
|
||||
"noConnection": {
|
||||
"symptom": "Beide Geräte können sich nicht sehen noch können sie Dateien miteinander teilen.",
|
||||
"solution": "Das Problem tritt auf beiden Seiten auf? Dann stelle sicher, dass beide Geräte im selben WLAN sind sowie dieselbe Konfiguration (Port, Multicast-Adresse, Verschlüsselung) haben. Es kann sein, dass das WLAN keine Kommunikation zwischen Teilnehmern erlaubt. In diesem Fall muss am Router diese Option aktiviert werden."
|
||||
"symptom": "Beide Geräte können sich weder sehen noch können sie Dateien miteinander teilen.",
|
||||
"solution": "Das Problem tritt auf beiden Seiten auf? Dann stelle sicher, dass beide Geräte im selben WLAN sind sowie dieselbe Konfiguration (Port, Multicast-Adresse, Verschlüsselung) haben. Es kann sein, dass das WLAN keine Kommunikation zwischen Teilnehmern erlaubt (AP-Isolation). In diesem Fall muss am Router diese Option aktiviert werden."
|
||||
}
|
||||
},
|
||||
"networkInterfacesPage": {
|
||||
"title": "Netzwerkschnittstellen",
|
||||
"info": "Standardmäßig verwendet LocalSend alle verfügbaren Netzwerkschnittstellen. Hier können Sie unerwünschte Netzwerke ausschließen. Sie müssen den Server neu starten, um die Änderungen zu übernehmen.",
|
||||
"preview": "Vorschau",
|
||||
"whitelist": "Whitelist",
|
||||
"blacklist": "Blacklist"
|
||||
},
|
||||
"receiveHistoryPage": {
|
||||
"title": "Verlauf",
|
||||
"openFolder": "Ordner öffnen",
|
||||
@@ -159,6 +189,7 @@
|
||||
"empty": "Der Verlauf ist leer.",
|
||||
"entryActions": {
|
||||
"open": "Datei öffnen",
|
||||
"showInFolder": "Im Ordner anzeigen",
|
||||
"info": "Information",
|
||||
"deleteFromHistory": "Vom Verlauf entfernen"
|
||||
}
|
||||
@@ -189,8 +220,9 @@
|
||||
"saveToGalleryOff": "Aufgrund von Ordnern automatisch ausgeschaltet."
|
||||
},
|
||||
"sendPage": {
|
||||
"waiting": "Warte auf Antwort...",
|
||||
"waiting": "Warte auf Antwort…",
|
||||
"rejected": "Der Empfänger hat die Anfrage abgelehnt.",
|
||||
"tooManyAttempts": "@:web.tooManyAttempts",
|
||||
"busy": "Der Empfänger ist mit einer anderen Anfrage beschäftigt."
|
||||
},
|
||||
"progressPage": {
|
||||
@@ -207,12 +239,20 @@
|
||||
"count": "Dateien: {curr} / {n}",
|
||||
"size": "Größe: {curr} / {n}",
|
||||
"speed": "Geschwindigkeit: {speed}/s"
|
||||
},
|
||||
"remainingTime": {
|
||||
"@hours": "Benutze 'h' als Abkürzung für Stunden und 'm' für Minuten",
|
||||
"@days": "Benutze 'd' für Tage, 'h' für Stunden und 'm' für Minuten",
|
||||
"seconds": "{n}:{ss}",
|
||||
"minutes": "{n}:{ss}",
|
||||
"hours": "{h}h {m}m",
|
||||
"days": "{d}d {h}h {m}m"
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"title": "Per Link teilen",
|
||||
"loading": "Starte Server...",
|
||||
"stopping": "Stoppe server...",
|
||||
"loading": "Starte Server…",
|
||||
"stopping": "Stoppe server…",
|
||||
"error": "Ein Fehler ist beim Starten des Servers aufgetreten.",
|
||||
"openLink": {
|
||||
"one": "Öffne diesen Link im Browser:",
|
||||
@@ -221,8 +261,10 @@
|
||||
"requests": "Anfragen",
|
||||
"noRequests": "Bisher keine Anfragen erhalten.",
|
||||
"encryption": "@:settingsTab.network.encryption",
|
||||
"autoAccept": "Anfragen automatisch aktzeptieren",
|
||||
"encryptionHint": "LocalSend verwendet ein selbstsigniertes Zertifikat. Sie müssen es im Browser akzeptieren.",
|
||||
"autoAccept": "Anfragen automatisch akzeptieren",
|
||||
"requirePin": "PIN erforderlich",
|
||||
"pinHint": "Die PIN lautet \"{pin}\"",
|
||||
"encryptionHint": "LocalSend verwendet ein selbstsigniertes Zertifikat. Du musst es im Browser akzeptieren.",
|
||||
"pendingRequests": "Offene Anfragen: {n}"
|
||||
},
|
||||
"aboutPage": {
|
||||
@@ -233,17 +275,18 @@
|
||||
],
|
||||
"author": "Autor",
|
||||
"contributors": "Mitwirkende",
|
||||
"translators": "Übersetzer:innen"
|
||||
"packagers": "Paketierende",
|
||||
"translators": "Übersetzende"
|
||||
},
|
||||
"donationPage": {
|
||||
"title": "Spenden",
|
||||
"info": "LocalSend ist kostenlos, open-source und frei von Werbung. Wenn dir diese App gefällt, kannst du die Entwicklung mit einer Spende unterstützen.",
|
||||
"info": "LocalSend ist kostenlos, quelloffen und frei von Werbung. Wenn dir diese App gefällt, kannst du die Entwicklung mit einer Spende unterstützen.",
|
||||
"donate": "Spende {amount}",
|
||||
"thanks": "Vielen Dank für deine Unterstützung!",
|
||||
"restore": "Käufe Wiederherstellen"
|
||||
"restore": "Käufe wiederherstellen"
|
||||
},
|
||||
"changelogPage": {
|
||||
"title": "Changelog"
|
||||
"title": "Änderungsprotokoll"
|
||||
},
|
||||
"aliasGenerator(ignoreMissing, ignoreGpt)": {
|
||||
"@info": "Inherits from the English version"
|
||||
@@ -253,6 +296,10 @@
|
||||
"title": "Zur Auswahl hinzufügen",
|
||||
"content": "Was möchtest du zum Senden hinzufügen?"
|
||||
},
|
||||
"openFile": {
|
||||
"title": "Datei öffnen",
|
||||
"content": "Möchtest du die empfangene Datei öffnen?"
|
||||
},
|
||||
"addressInput": {
|
||||
"title": "Adresse eingeben",
|
||||
"hashtag": "Hashtag",
|
||||
@@ -288,7 +335,7 @@
|
||||
"titleEdit": "Favorit bearbeiten",
|
||||
"name": "Name",
|
||||
"auto": "(auto)",
|
||||
"ip": "IP-Addresse",
|
||||
"ip": "IP-Adresse",
|
||||
"port": "Port"
|
||||
},
|
||||
"fileInfo": {
|
||||
@@ -322,7 +369,7 @@
|
||||
},
|
||||
"noPermission": {
|
||||
"title": "Keine Berechtigung",
|
||||
"content": "Sie haben die erforderlichen Berechtigungen nicht gewährt. Bitte gewähren Sie sie in den Einstellungen."
|
||||
"content": "Du hast die erforderlichen Berechtigungen nicht gewährt. Bitte gewähre sie in den Einstellungen."
|
||||
},
|
||||
"notAvailableOnPlatform": {
|
||||
"title": "Nicht verfügbar",
|
||||
@@ -343,20 +390,42 @@
|
||||
"title": "@:general.quickSave",
|
||||
"content": "Dateianfragen werden automatisch akzeptiert. Beachte, dass jeder im lokalen Netzwerk dir Dateien senden kann."
|
||||
},
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"title": "@:general.quickSaveFromFavorites",
|
||||
"content": [
|
||||
"Dateianfragen werden jetzt automatisch von Geräten in deiner Favoritenliste akzeptiert.",
|
||||
"Warnung: Dies ist derzeit nicht vollständig sicher, da ein Hacker, der den Fingerabdruck der Geräte in deiner Favoritenliste kennt, dir immer noch Dateien senden kann.",
|
||||
"Diese Option ist jedoch immer noch sicherer als die Erlaubnis für jedes Gerät."
|
||||
]
|
||||
},
|
||||
"pin": {
|
||||
"title": "PIN eingeben"
|
||||
},
|
||||
"sendModeHelp": {
|
||||
"title": "Sendemodus",
|
||||
"single": "Sende Dateien an einen Empfänger. Die Auswahl wird nach Abschluss der Dateiübertragung gelöscht.",
|
||||
"multiple": "Sende Dateien an mehrere Empfänger. Die Auswahl bleibt erhalten.",
|
||||
"link": "Empfänger, die LocalSend nicht installiert haben, können die ausgewählten Dateien herunterladen, in dem sie den Link im Browser öffnen."
|
||||
},
|
||||
"zoom": {
|
||||
"title": "URL"
|
||||
}
|
||||
},
|
||||
"sanitization": {
|
||||
"empty": "Dateiname darf nicht leer sein",
|
||||
"invalid": "Dateiname enthält ungültige Zeichen"
|
||||
},
|
||||
"tray": {
|
||||
"@info": "Apple Guidelines are very strict about the 'close' wording.",
|
||||
"@info": "Apple Guidelines are very strict about the \"close\" wording.",
|
||||
"open": "@:general.open",
|
||||
"close": "LocalSend beenden"
|
||||
"close": "LocalSend beenden",
|
||||
"closeWindows": "Beenden"
|
||||
},
|
||||
"web": {
|
||||
"waiting": "@:sendPage.waiting",
|
||||
"enterPin": "PIN eingeben",
|
||||
"invalidPin": "Ungültige PIN",
|
||||
"tooManyAttempts": "Zu viele Versuche",
|
||||
"rejected": "Abgelehnt",
|
||||
"files": "Dateien",
|
||||
"fileName": "Dateiname",
|
||||
@@ -375,11 +444,11 @@
|
||||
"emptyList": "Leere Liste",
|
||||
"unSupportedAssetType": "Format ist nicht unterstützt.",
|
||||
"unableToAccessAll": "Zugriff nicht möglich",
|
||||
"viewingLimitedAssetsTip": "Zeigen Sie nur Dateien und Alben an, auf die die App zugreifen kann.",
|
||||
"viewingLimitedAssetsTip": "Zeige nur Dateien und Alben an, auf die die App zugreifen kann.",
|
||||
"changeAccessibleLimitedAssets": "Tippen, um erlaubte Dateien zu aktualisieren",
|
||||
"accessAllTip": "Die App kann nur auf einige der Dateien auf dem Gerät zugreifen. Öffnen Sie die Systemeinstellungen und erlauben Sie der App, \nauf alle Dateien auf dem Gerät zuzugreifen",
|
||||
"accessAllTip": "Die App kann nur auf einige der Dateien auf dem Gerät zugreifen. Öffne die Systemeinstellungen und erlaube der App, auf alle Dateien auf dem Gerät zuzugreifen.",
|
||||
"goToSystemSettings": "Gehe zu den Systemeinstellungen",
|
||||
"accessLimitedAssets": "Fahre fort mit limitiertem Zugriff",
|
||||
"accessLimitedAssets": "Fahre mit eingeschränktem Zugriff fort",
|
||||
"accessiblePathName": "Verfügbare Assets",
|
||||
"sTypeAudioLabel": "Audio",
|
||||
"sTypeImageLabel": "Bild",
|
||||
@@ -21,13 +21,14 @@
|
||||
"files": "Αρχεία",
|
||||
"finished": "Ολοκληρώθηκε",
|
||||
"hide": "Απόκρυψη",
|
||||
"off": "Απενεργοποίηση",
|
||||
"off": "Ανενεργή",
|
||||
"offline": "Εκτός σύνδεσης",
|
||||
"on": "Ενεργοποίηση",
|
||||
"on": "Ενεργή",
|
||||
"online": "Σε σύνδεση",
|
||||
"open": "Άνοιγμα",
|
||||
"queue": "Ουρά",
|
||||
"quickSave": "Γρήγορη Αποθήκευση",
|
||||
"quickSaveFromFavorites": "Γρήγορη Αποθήκευση των \"Αγαπημένων\"",
|
||||
"renamed": "Μετονομάστηκε",
|
||||
"reset": "Επαναφορά",
|
||||
"restart": "Επανεκκίνηση",
|
||||
@@ -38,7 +39,7 @@
|
||||
"save": "Αποθήκευση",
|
||||
"unchanged": "Χωρίς αλλαγές",
|
||||
"unknown": "Αγνωστο",
|
||||
"noItemInClipboard": "Κανένα στοιχείο στο Πρόχειρο"
|
||||
"noItemInClipboard": "Κανένα στοιχείο στο Πρόχειρο."
|
||||
},
|
||||
"receiveTab": {
|
||||
"title": "Λήψη",
|
||||
@@ -46,6 +47,11 @@
|
||||
"ip": "IP:",
|
||||
"port": "Θύρα:",
|
||||
"alias": "Όνομα συσκευής:"
|
||||
},
|
||||
"quickSave": {
|
||||
"off": "@:general.off",
|
||||
"favorites": "Αγαπημένα",
|
||||
"on": "@:general.on"
|
||||
}
|
||||
},
|
||||
"sendTab": {
|
||||
@@ -67,6 +73,7 @@
|
||||
"nearbyDevices": "Κοντινές συσκευές",
|
||||
"thisDevice": "Αυτή η συσκευή",
|
||||
"scan": "Αναζήτηση για συσκευές",
|
||||
"manualSending": "Χειροκίνητη αποστολή",
|
||||
"sendMode": "Λειτουργία αποστολής",
|
||||
"sendModes": {
|
||||
"single": "Ένας παραλήπτης",
|
||||
@@ -97,19 +104,23 @@
|
||||
"system": "Σύστημα"
|
||||
},
|
||||
"saveWindowPlacement": "Έξοδος: Αποθήκευση θέσης παραθύρου",
|
||||
"saveWindowPlacementWindows": "Αποθήκευση της θέσης του παραθύρου κατά την έξοδο",
|
||||
"minimizeToTray": "Έξοδος: Ελαχιστοποίηση στη γραμμή εργασιών/μενού",
|
||||
"launchAtStartup": "Αυτόματη εκκίνηση μετά τη σύνδεση",
|
||||
"launchMinimized": "Αυτόματη εκκίνηση: Έναρξη ελαχιστοποιημένο",
|
||||
"showInContextMenu": "Προβολή του LocalSend στο μενού του περιβάλλοντος εργασίας",
|
||||
"animations": "Οπτικά εφέ"
|
||||
},
|
||||
"receive": {
|
||||
"title": "Λήψη",
|
||||
"quickSave": "@:general.quickSave",
|
||||
"quickSaveFromFavorites": "@:general.quickSaveFromFavorites",
|
||||
"requirePin": "@:webSharePage.requirePin",
|
||||
"autoFinish": "Αυτόματη ολοκλήρωση",
|
||||
"destination": "Προορισμός",
|
||||
"downloads": "(Λήψεις)",
|
||||
"saveToGallery": "Αποθήκευση μέσου στη συλλογή",
|
||||
"saveToHistory": "Αποθήκευση στο ιστορικό",
|
||||
"autoFinish": "Αυτόματη ολοκλήρωση"
|
||||
"saveToHistory": "Αποθήκευση στο ιστορικό"
|
||||
},
|
||||
"send": {
|
||||
"title": "Αποστολή",
|
||||
@@ -123,19 +134,27 @@
|
||||
"deviceType": "Τύπος συσκευής",
|
||||
"deviceModel": "Μοντέλο συσκευής",
|
||||
"port": "Θύρα",
|
||||
"discoveryTimeout": "Λήξη χρόνου ανακάλυψης",
|
||||
"useSystemName": "Χρήση του ονόματος του συστήματος",
|
||||
"generateRandomAlias": "Δημιουργία τυχαίου ψευδώνυμου",
|
||||
"portWarning": "Ενδέχεται να μην εντοπιστείτε από άλλες συσκευές επειδή χρησιμοποιείτε μια προσαρμοσμένη θύρα. (προεπιλογή: {defaultPort})",
|
||||
"encryption": "Κρυπτογράφηση",
|
||||
"multicastGroup": "Αναμετάδοση",
|
||||
"multicastGroupWarning": "Ενδέχεται να μην εντοπιστείτε από άλλες συσκευές επειδή χρησιμοποιείτε μια προσαρμοσμένη διεύθυνση αναμετάδοσης. (προεπιλογή: {defaultMulticast})"
|
||||
"multicastGroupWarning": "Ενδέχεται να μην εντοπιστείτε από άλλες συσκευές επειδή χρησιμοποιείτε μια προσαρμοσμένη διεύθυνση αναμετάδοσης. (προεπιλογή: {defaultMulticast})",
|
||||
"network": "Δίκτυο",
|
||||
"networkOptions": {
|
||||
"all": "Όλα",
|
||||
"filtered": "Περιορισμένο"
|
||||
}
|
||||
},
|
||||
"advancedSettings": "Προχωρημένες ρυθμίσεις",
|
||||
"other": {
|
||||
"title": "Άλλα",
|
||||
"support": "Υποστηρίξτε το LocalSend",
|
||||
"donate": "Δωρεά",
|
||||
"privacyPolicy": "Πολιτική Απορρήτου",
|
||||
"termsOfUse": "Όροι Χρήσης"
|
||||
}
|
||||
},
|
||||
"advancedSettings": "Προχωρημένες ρυθμίσεις"
|
||||
},
|
||||
"troubleshootPage": {
|
||||
"title": "Αντιμετώπιση προβλημάτων",
|
||||
@@ -147,6 +166,10 @@
|
||||
"solution": "Αυτό είναι πιθανότατα ένα ζήτημα του τείχους προστασίας. Μπορείτε να το λύσετε επιτρέποντας τις εισερχόμενες συνδέσεις (UDP και TCP) στη θύρα {port}.",
|
||||
"openFirewall": "Άνοιγμα Τείχους Προστασίας"
|
||||
},
|
||||
"noDiscovery": {
|
||||
"symptom": "Αυτή η συσκευή δεν μπορεί ανακαλυφθεί από άλλες συσεκυές.",
|
||||
"solution": "Βεβαιωθείτε ότι όλες οι συσκευές βρίσκονται στο ίδιο δίκτυο Wi-Fi και μοιράζονται την ίδια διαμόρφωση (θύρα, διεύθυνση multicast, κρυπτογράφηση). Μπορείτε να προσπαθήσετε να πληκτρολογήσετε τη διεύθυνση IP της συσκευής προορισμού με μη αυτόματο τρόπο. Εάν αυτό λειτουργεί, εξετάστε το ενδεχόμενο να προσθέσετε αυτήν τη συσκευή στα αγαπημένα, ώστε να μπορεί να ανακαλυφθεί αυτόματα στο μέλλον."
|
||||
},
|
||||
"noConnection": {
|
||||
"symptom": "Και οι δύο συσκευές δεν μπορούν να ανακαλύψουν η μία την άλλη ούτε μπορούν να μοιραστούν αρχεία.",
|
||||
"solution": "Υπάρχει το πρόβλημα και από τις δύο πλευρές; Πρέπει να βεβαιωθείτε ότι και οι δύο συσκευές βρίσκονται στο ίδιο δίκτυο Wi-Fi και μοιράζονται την ίδια διαμόρφωση (θύρα, διεύθυνση αναμετάδοσης, κρυπτογράφηση). Το wifi ενδέχεται να μην επιτρέπει την επικοινωνία μεταξύ των συμμετεχόντων. Σε αυτήν την περίπτωση, αυτή η επιλογή πρέπει να είναι ενεργοποιημένη στο δρομολογητή."
|
||||
@@ -159,6 +182,7 @@
|
||||
"empty": "Το ιστορικό είναι κενό.",
|
||||
"entryActions": {
|
||||
"open": "Άνοιγμα αρχείου",
|
||||
"showInFolder": "Προβολή στον φάκελο",
|
||||
"info": "Πληροφορίες",
|
||||
"deleteFromHistory": "Διαγραφή από το ιστορικό"
|
||||
}
|
||||
@@ -183,15 +207,16 @@
|
||||
},
|
||||
"receiveOptionsPage": {
|
||||
"title": "Επιλογές",
|
||||
"destination": "@:settingsTab.receive.destination",
|
||||
"appDirectory": "(Φάκελος LocalSend)",
|
||||
"saveToGallery": "@:settingsTab.receive.saveToGallery",
|
||||
"saveToGalleryOff": "Απενεργοποιήθηκε αυτόματα επειδή υπάρχουν κατάλογοι."
|
||||
"saveToGalleryOff": "Απενεργοποιήθηκε αυτόματα επειδή υπάρχουν κατάλογοι.",
|
||||
"destination": "@:settingsTab.receive.destination",
|
||||
"saveToGallery": "@:settingsTab.receive.saveToGallery"
|
||||
},
|
||||
"sendPage": {
|
||||
"waiting": "Αναμονή για απάντηση...",
|
||||
"waiting": "Αναμονή για απάντηση…",
|
||||
"rejected": "Ο παραλήπτης απέρριψε το αίτημα.",
|
||||
"busy": "Ο παραλήπτης είναι απασχολημένος με άλλο αίτημα."
|
||||
"busy": "Ο παραλήπτης είναι απασχολημένος με άλλο αίτημα.",
|
||||
"tooManyAttempts": "@:web.tooManyAttempts"
|
||||
},
|
||||
"progressPage": {
|
||||
"titleSending": "Γίνεται αποστολή αρχείων",
|
||||
@@ -211,8 +236,8 @@
|
||||
},
|
||||
"webSharePage": {
|
||||
"title": "Διαμοιρασμός μέσω συνδέσμου",
|
||||
"loading": "Εκκίνηση διακομιστή...",
|
||||
"stopping": "Σταμάτημα διακομιστή...",
|
||||
"loading": "Εκκίνηση διακομιστή…",
|
||||
"stopping": "Σταμάτημα διακομιστή…",
|
||||
"error": "Ένα σφάλμα προέκυψε κατά την εκκίνηση του διακομιστή.",
|
||||
"openLink": {
|
||||
"one": "Άνοιγμα αυτού του συνδέσμου στον φυλλομετρητή:",
|
||||
@@ -220,26 +245,36 @@
|
||||
},
|
||||
"requests": "Αιτήματα",
|
||||
"noRequests": "Κανένα αίτμηα ακόμα.",
|
||||
"encryption": "@:settingsTab.network.encryption",
|
||||
"autoAccept": "Αυτόματη αποδοχή αιτημάτων",
|
||||
"requirePin": "Απαίτηση PIN",
|
||||
"pinHint": "Το PIN είναι \"{pin}\"",
|
||||
"encryptionHint": "Το LocalSend χρησιμοποιεί αυτο-υπογεγραμμένο πιστοποιητικό. Χρειάζεται να το αποθεχτείτε στον φυλλομετρητή.",
|
||||
"pendingRequests": "Αναμονή αιτημάτων: {n}",
|
||||
"autoAccept": "Αυτόματη αποδοχή αιτημάτων"
|
||||
"encryption": "@:settingsTab.network.encryption"
|
||||
},
|
||||
"aboutPage": {
|
||||
"title": "Σχετικά με το LocalSend",
|
||||
"description": [
|
||||
"description": [
|
||||
"Το LocalSend είναι μια δωρεάν εφαρμογή ανοιχτού κώδικα που σας επιτρέπει να μοιράζεστε με ασφάλεια αρχεία και μηνύματα με κοντινές συσκευές μέσω του τοπικού σας δικτύου χωρίς να χρειάζεστε σύνδεση στο διαδίκτυο.",
|
||||
"Αυτή η εφαρμογή είναι διαθέσιμη σε Android, iOS, macOS, Windows και Linux. Μπορείτε να βρείτε όλες τις επιλογές λήψης στην επίσημη αρχική σελίδα."
|
||||
],
|
||||
"author": "Δημιουργός",
|
||||
"contributors": "Συντελεστές",
|
||||
"packagers": "Συσκευαστές",
|
||||
"translators": "Μεταφραστές"
|
||||
},
|
||||
"donationPage": {
|
||||
"title": "Δωρεά",
|
||||
"info": "Το LocalSend είναι δωρεάν, ανοιχτού κώδικα και χωρίς διαφημίσεις. Εάν σας αρέσει η εφαρμογή, μπορείτε να υποστηρίξετε την ανάπτυξή της με μια δωρεά.",
|
||||
"donate": "Δωρεά {amount}",
|
||||
"thanks": "Ευχαριστούμε πολύ!",
|
||||
"restore": "Επαναφορά αγοράς"
|
||||
},
|
||||
"changelogPage": {
|
||||
"title": "Καταγραφή αλλαγών"
|
||||
},
|
||||
"aliasGenerator(ignoreMissing, ignoreGpt)": {
|
||||
"@info": "Different locales may have different words, it may not match 1:1",
|
||||
"@info": "Διαφορετικές τοποθεσίες μπορεί να έχουν διαφορετικές λέξεις, μπορεί να μην ταιριάζουν 1:1",
|
||||
"adjectives": [
|
||||
"Λατρευτό",
|
||||
"Πανεμορφο",
|
||||
@@ -316,11 +351,15 @@
|
||||
"title": "Προσθήκη στις επιλογές",
|
||||
"content": "Τι θέλετε να προστεθεί;"
|
||||
},
|
||||
"openFile": {
|
||||
"title": "Άνοιγμα αρχείου",
|
||||
"content": "Θέλετε να ανοιχτεί το ληφθέν αρχείο;"
|
||||
},
|
||||
"addressInput": {
|
||||
"title": "Εισαγωγή διεύθυνσης",
|
||||
"hashtag": "Hashtag",
|
||||
"ip": "Διεύθυνση IP",
|
||||
"recentlyUsed": "Χρησιμοποιήθηκε πρόσφατα: "
|
||||
"recentlyUsed": "Χρησιμοποιήθηκε πρόσφατα: ",
|
||||
"hashtag": "Χάσταγκ"
|
||||
},
|
||||
"cancelSession": {
|
||||
"title": "Ακύρωση της μεταφοράς του αρχείου",
|
||||
@@ -372,11 +411,11 @@
|
||||
},
|
||||
"localNetworkUnauthorized": {
|
||||
"title": "@:dialogs.noPermission.title",
|
||||
"description": "LocalSend can't find other devices without having the permission to scan the local network. Please grant this permission in the settings.",
|
||||
"description": "Το LocalSend δεν μπορεί να βρει άλλες συσκευές χωρίς την άδεια σάρωσης του τοπικού δικτύου. Παρακαλείστε να παραχωρήσετε αυτό το δικαίωμα στις ρυθμίσεις.",
|
||||
"gotoSettings": "Ρυθμίσεις"
|
||||
},
|
||||
"messageInput": {
|
||||
"title": "Τύπος μηνύματος",
|
||||
"title": "Πληκτρολογήστε το μήνυμα",
|
||||
"multiline": "Πολλαπλών γραμμών"
|
||||
},
|
||||
"noFiles": {
|
||||
@@ -403,23 +442,45 @@
|
||||
"random": "Τυχαία"
|
||||
},
|
||||
"quickSaveNotice": {
|
||||
"title": "@:general.quickSave",
|
||||
"content": "Τα αιτήματα αρχείων γίνονται αυτόματα δεκτά. Έχετε υπόψη σας ότι όλοι στο τοπικό δίκτυο μπορούν να σας στείλουν αρχεία."
|
||||
"content": "Τα αιτήματα αρχείων γίνονται αυτόματα δεκτά. Έχετε υπόψη σας ότι όλοι στο τοπικό δίκτυο μπορούν να σας στείλουν αρχεία.",
|
||||
"title": "@:general.quickSave"
|
||||
},
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"content": [
|
||||
"Τα αιτήματα αρχείων γίνονται τώρα αυτόματα αποδεκτά από τις συσκευές της λίστας των αγαπημένων σας.",
|
||||
"Προειδοποίηση! Επί του παρόντος, αυτό δεν είναι απολύτως ασφαλές, ένας χάκερ που έχει το δακτυλικό αποτύπωμα οποιασδήποτε συσκευής από τη λίστα των αγαπημένων σας μπορεί να σας στείλει αρχεία χωρίς περιορισμό.",
|
||||
"Ωστόσο, αυτή η επιλογή είναι ακόμα πιο ασφαλής από το να επιτρέπεται σε όλους τους χρήστες στο τοπικό δίκτυο να σας στείλουν αρχεία χωρίς περιορισμό."
|
||||
],
|
||||
"title": "@:general.quickSaveFromFavorites"
|
||||
},
|
||||
"pin": {
|
||||
"title": "Εισαγωγή PIN"
|
||||
},
|
||||
"sendModeHelp": {
|
||||
"title": "Λειτουργίες αποστολής",
|
||||
"single": "Στέλνει αρχεία σε έναν παραλήπτη. Η επιλογή θα διαγραφεί μετά την ολοκλήρωση της μεταφοράς του αρχείου.",
|
||||
"multiple": "Στέλνει αρχεία σε πολλούς παραλήπτες. Η επιλογή δεν θα διαγραφεί.",
|
||||
"link": "Οι παραλήπτες που δεν έχουν εγκαταστήσει το LocalSend μπορούν να πραγματοποιήσουν λήψη των επιλεγμένων αρχείων ανοίγοντας τον σύνδεσμο στον φυλλομετρητή τους."
|
||||
},
|
||||
"zoom": {
|
||||
"title": "URL"
|
||||
}
|
||||
},
|
||||
"sanitization": {
|
||||
"empty": "Το όνομα του αρχείου δεν μπορεί να είναι κενό",
|
||||
"invalid": "Το όνομα του αρχείου περιέχει μη έγκυρους χαρακτήρες"
|
||||
},
|
||||
"tray": {
|
||||
"@info": "Apple Guidelines are very strict about the 'close' wording.",
|
||||
"open": "@:general.open",
|
||||
"close": "Έξοδος από το LocalSend"
|
||||
"close": "Έξοδος από το LocalSend",
|
||||
"closeWindows": "Έξοδος"
|
||||
},
|
||||
"web": {
|
||||
"waiting": "@:sendPage.waiting",
|
||||
"enterPin": "Εισαγωγή PIN",
|
||||
"invalidPin": "Μη έγκυρο PIN",
|
||||
"tooManyAttempts": "Πάρα πολλές προσπάθειες",
|
||||
"rejected": "Απορρίφθηκε",
|
||||
"files": "Αρχεία",
|
||||
"fileName": "Όνομα αρχείου",
|
||||
@@ -456,11 +517,11 @@
|
||||
"sNameDurationLabel": "διάρκεια",
|
||||
"sUnitAssetCountLabel": "μετρητής"
|
||||
},
|
||||
"donationPage": {
|
||||
"title": "Δωρεά",
|
||||
"info": "Το LocalSend είναι δωρεάν, ανοιχτού κώδικα και χωρίς διαφημίσεις. Εάν σας αρέσει η εφαρμογή, μπορείτε να υποστηρίξετε την ανάπτυξή της με μια δωρεά.",
|
||||
"donate": "Δωρεά {amount}",
|
||||
"thanks": "Ευχαριστούμε πολύ!",
|
||||
"restore": "Ε[παναφορά αγοράς"
|
||||
}
|
||||
"networkInterfacesPage": {
|
||||
"info": "Από προεπιλογή, το LocalSend χρησιμοποιεί όλες τις διαθέσιμες διεπαφές δικτύου. Μπορείτε να εξαιρέσετε τα ανεπιθύμητα δίκτυα εδώ. Πρέπει να κάνετε επανεκκίνηση του διακομιστή για να εφαρμόσετε τις αλλαγές.",
|
||||
"title": "Διεπαφές δικτύου",
|
||||
"preview": "Προεπισκόπηση",
|
||||
"whitelist": "Λευκή λίστα",
|
||||
"blacklist": "Μαύρη λίστα"
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"locale": "English",
|
||||
"locale": "English(India)",
|
||||
"appName": "LocalSend",
|
||||
"general": {
|
||||
"accept": "Accept",
|
||||
@@ -28,6 +28,7 @@
|
||||
"open": "Open",
|
||||
"queue": "Queue",
|
||||
"quickSave": "Quick Save",
|
||||
"quickSaveFromFavorites": "Quick Save for \"Favourites\"",
|
||||
"renamed": "Renamed",
|
||||
"reset": "Reset",
|
||||
"restart": "Restart",
|
||||
@@ -38,7 +39,7 @@
|
||||
"save": "Save",
|
||||
"unchanged": "Unchanged",
|
||||
"unknown": "Unknown",
|
||||
"noItemInClipboard": "No items in Clipboard"
|
||||
"noItemInClipboard": "No items in Clipboard."
|
||||
},
|
||||
"receiveTab": {
|
||||
"title": "Receive",
|
||||
@@ -46,6 +47,11 @@
|
||||
"ip": "IP:",
|
||||
"port": "Port:",
|
||||
"alias": "Device name:"
|
||||
},
|
||||
"quickSave": {
|
||||
"off": "@:general.off",
|
||||
"favorites": "Favourites",
|
||||
"on": "@:general.on"
|
||||
}
|
||||
},
|
||||
"sendTab": {
|
||||
@@ -67,6 +73,7 @@
|
||||
"nearbyDevices": "Nearby devices",
|
||||
"thisDevice": "This Device",
|
||||
"scan": "Look for devices",
|
||||
"manualSending": "Manual Sending",
|
||||
"sendMode": "Send mode",
|
||||
"sendModes": {
|
||||
"single": "Single recipient",
|
||||
@@ -97,14 +104,18 @@
|
||||
"system": "System"
|
||||
},
|
||||
"saveWindowPlacement": "Quit: Save window placement",
|
||||
"saveWindowPlacementWindows": "Save window position after exit",
|
||||
"minimizeToTray": "Quit: Minimize to Tray/Menu Bar",
|
||||
"launchAtStartup": "Autostart after login",
|
||||
"launchMinimized": "Autostart: Start hidden",
|
||||
"showInContextMenu": "Show LocalSend in context menu",
|
||||
"animations": "Animations"
|
||||
},
|
||||
"receive": {
|
||||
"title": "Receive",
|
||||
"quickSave": "@:general.quickSave",
|
||||
"quickSaveFromFavorites": "@:general.quickSaveFromFavorites",
|
||||
"requirePin": "@:webSharePage.requirePin",
|
||||
"autoFinish": "Auto Finish",
|
||||
"destination": "Destination",
|
||||
"downloads": "(Downloads)",
|
||||
@@ -123,10 +134,18 @@
|
||||
"deviceType": "Device type",
|
||||
"deviceModel": "Device model",
|
||||
"port": "Port",
|
||||
"discoveryTimeout": "Discovery Timeout",
|
||||
"useSystemName": "Use system name",
|
||||
"generateRandomAlias": "Generate random alias",
|
||||
"portWarning": "You might not be detected by other devices because you are using a custom port. (default: {defaultPort})",
|
||||
"encryption": "Encryption",
|
||||
"multicastGroup": "Multicast",
|
||||
"multicastGroupWarning": "You might not be detected by other devices because you are using a custom multicast address. (default: {defaultMulticast})"
|
||||
"multicastGroupWarning": "You might not be detected by other devices because you are using a custom multicast address. (default: {defaultMulticast})",
|
||||
"network": "Network",
|
||||
"networkOptions": {
|
||||
"all": "All",
|
||||
"filtered": "Filtered"
|
||||
}
|
||||
},
|
||||
"other": {
|
||||
"title": "Other",
|
||||
@@ -147,6 +166,10 @@
|
||||
"solution": "This is most likely a firewall issue. You can solve this by allowing incoming connections (UDP and TCP) on port {port}.",
|
||||
"openFirewall": "Open Firewall"
|
||||
},
|
||||
"noDiscovery": {
|
||||
"symptom": "This device cannot discover other devices.",
|
||||
"solution": "Please make sure that all devices are on the same Wi-Fi network and share the same configuration (port, multicast address, encryption). You can try to type the IP address of the target device manually. If this works, consider adding this device to the favourites so it can be automatically discovered in the future."
|
||||
},
|
||||
"noConnection": {
|
||||
"symptom": "Both devices cannot discover each other nor can they share files.",
|
||||
"solution": "Does the problem exist on both sides? If so, you need to make sure that both devices are on the same Wi-Fi network and share the same configuration (port, multicast address, encryption). The network may not allow communication between participants. In this case, this option must be enabled on the router."
|
||||
@@ -159,6 +182,7 @@
|
||||
"empty": "The history is empty.",
|
||||
"entryActions": {
|
||||
"open": "Open file",
|
||||
"showInFolder": "Show in folder",
|
||||
"info": "Information",
|
||||
"deleteFromHistory": "Delete from history"
|
||||
}
|
||||
@@ -179,7 +203,7 @@
|
||||
},
|
||||
"subTitleMessage": "sent you a message:",
|
||||
"subTitleLink": "sent you a link:",
|
||||
"canceled": "The sender has canceled the request."
|
||||
"canceled": "The sender has cancelled the request."
|
||||
},
|
||||
"receiveOptionsPage": {
|
||||
"title": "Options",
|
||||
@@ -189,8 +213,9 @@
|
||||
"saveToGalleryOff": "Turned off automatically because there are directories."
|
||||
},
|
||||
"sendPage": {
|
||||
"waiting": "Waiting for response...",
|
||||
"waiting": "Waiting for response…",
|
||||
"rejected": "The recipient has rejected the request.",
|
||||
"tooManyAttempts": "@:web.tooManyAttempts",
|
||||
"busy": "The recipient is busy with another request."
|
||||
},
|
||||
"progressPage": {
|
||||
@@ -201,18 +226,26 @@
|
||||
"title": {
|
||||
"sending": "Total progress ({time})",
|
||||
"finishedError": "Finished with error",
|
||||
"canceledSender": "Canceled by sender",
|
||||
"canceledReceiver": "Canceled by receiver"
|
||||
"canceledSender": "Cancelled by sender",
|
||||
"canceledReceiver": "Cancelled by receiver"
|
||||
},
|
||||
"count": "Files: {curr} / {n}",
|
||||
"size": "Size: {curr} / {n}",
|
||||
"speed": "Speed: {speed}/s"
|
||||
},
|
||||
"remainingTime": {
|
||||
"seconds": "{n}:{ss}",
|
||||
"minutes": "{n}:{ss}",
|
||||
"hours": "{h}h {m}m",
|
||||
"days": "{d}d {h}h {m}m",
|
||||
"@hours": "Use 'h' for hours abbreviation and 'm' for minutes",
|
||||
"@days": "Use 'd' for days, 'h' for hours, and 'm' for minutes"
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"title": "Share via link",
|
||||
"loading": "Starting server...",
|
||||
"stopping": "Stopping server...",
|
||||
"loading": "Starting server…",
|
||||
"stopping": "Stopping server…",
|
||||
"error": "An error occurred while starting the server.",
|
||||
"openLink": {
|
||||
"one": "Open this link in your browser:",
|
||||
@@ -222,6 +255,8 @@
|
||||
"noRequests": "No requests yet.",
|
||||
"encryption": "@:settingsTab.network.encryption",
|
||||
"autoAccept": "Automatically accept requests",
|
||||
"requirePin": "Require PIN",
|
||||
"pinHint": "The PIN is \"{pin}\"",
|
||||
"encryptionHint": "LocalSend uses a self-signed certificate. You need to accept it in your browser.",
|
||||
"pendingRequests": "Pending requests: {n}"
|
||||
},
|
||||
@@ -233,6 +268,7 @@
|
||||
],
|
||||
"author": "Author",
|
||||
"contributors": "Contributors",
|
||||
"packagers": "Packagers",
|
||||
"translators": "Translators"
|
||||
},
|
||||
"donationPage": {
|
||||
@@ -323,6 +359,10 @@
|
||||
"title": "Add to selection",
|
||||
"content": "What do you want to add?"
|
||||
},
|
||||
"openFile": {
|
||||
"title": "Open file",
|
||||
"content": "Do you want to open the received file?"
|
||||
},
|
||||
"addressInput": {
|
||||
"title": "Enter address",
|
||||
"hashtag": "Hashtag",
|
||||
@@ -346,15 +386,15 @@
|
||||
},
|
||||
"favoriteDialog": {
|
||||
"title": "Favorites",
|
||||
"noFavorites": "No favorite devices yet.",
|
||||
"noFavorites": "No favourite devices yet.",
|
||||
"addFavorite": "Add"
|
||||
},
|
||||
"favoriteDeleteDialog": {
|
||||
"title": "Delete from favorites",
|
||||
"content": "Do you really want to delete from favorites \"{name}\"?"
|
||||
"title": "Delete from favourites",
|
||||
"content": "Do you really want to delete from favourites \"{name}\"?"
|
||||
},
|
||||
"favoriteEditDialog": {
|
||||
"titleAdd": "Add to favorites",
|
||||
"titleAdd": "Add to favourites",
|
||||
"titleEdit": "Settings",
|
||||
"name": "Device name",
|
||||
"auto": "(auto)",
|
||||
@@ -413,20 +453,42 @@
|
||||
"title": "@:general.quickSave",
|
||||
"content": "File requests are automatically accepted. Be aware that everyone on the local network can send you files."
|
||||
},
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"title": "@:general.quickSaveFromFavorites",
|
||||
"content": [
|
||||
"File requests are now accepted automatically from devices in your favourites list.",
|
||||
"Warning! Currently, this is not entirely secure, as a hacker who has the fingerprint of any device from your favourites list can send you files without restriction.",
|
||||
"However, this option is still safer than allowing all users on the local network to send you files without restriction."
|
||||
]
|
||||
},
|
||||
"pin": {
|
||||
"title": "Enter PIN"
|
||||
},
|
||||
"sendModeHelp": {
|
||||
"title": "Send modes",
|
||||
"single": "Sends files to one recipient. Selection will be cleared after finished file transfer.",
|
||||
"multiple": "Sends files to multiple recipients. Selection will not be cleared.",
|
||||
"link": "Recipients who do not have LocalSend installed can download the selected files by opening the link in their browser."
|
||||
},
|
||||
"zoom": {
|
||||
"title": "URL"
|
||||
}
|
||||
},
|
||||
"sanitization": {
|
||||
"empty": "Filename cannot be empty",
|
||||
"invalid": "Filename contains invalid characters"
|
||||
},
|
||||
"tray": {
|
||||
"@info": "Apple Guidelines are very strict about the 'close' wording.",
|
||||
"open": "@:general.open",
|
||||
"close": "Quit LocalSend"
|
||||
"close": "Quit LocalSend",
|
||||
"closeWindows": "Exit"
|
||||
},
|
||||
"web": {
|
||||
"waiting": "@:sendPage.waiting",
|
||||
"enterPin": "Enter PIN",
|
||||
"invalidPin": "Invalid PIN",
|
||||
"tooManyAttempts": "Too many attempts",
|
||||
"rejected": "Rejected",
|
||||
"files": "Files",
|
||||
"fileName": "File name",
|
||||
@@ -462,5 +524,12 @@
|
||||
"sActionUseCameraHint": "use camera",
|
||||
"sNameDurationLabel": "duration",
|
||||
"sUnitAssetCountLabel": "count"
|
||||
},
|
||||
"networkInterfacesPage": {
|
||||
"preview": "Preview",
|
||||
"info": "By default, LocalSend uses all available network interfaces. You can exclude unwanted networks here. You need to restart the server to apply the changes.",
|
||||
"whitelist": "Whitelist",
|
||||
"blacklist": "Blacklist",
|
||||
"title": "Network Interfaces"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,535 @@
|
||||
{
|
||||
"locale": "English",
|
||||
"appName": "LocalSend",
|
||||
"general": {
|
||||
"accept": "Accept",
|
||||
"accepted": "Accepted",
|
||||
"add": "Add",
|
||||
"advanced": "Advanced",
|
||||
"cancel": "Cancel",
|
||||
"close": "Close",
|
||||
"confirm": "Confirm",
|
||||
"continueStr": "Continue",
|
||||
"copy": "Copy",
|
||||
"copiedToClipboard": "Copied to Clipboard",
|
||||
"decline": "Decline",
|
||||
"done": "Done",
|
||||
"delete": "Delete",
|
||||
"edit": "Edit",
|
||||
"error": "Error",
|
||||
"example": "Example",
|
||||
"files": "Files",
|
||||
"finished": "Finished",
|
||||
"hide": "Hide",
|
||||
"off": "Off",
|
||||
"offline": "Offline",
|
||||
"on": "On",
|
||||
"online": "Online",
|
||||
"open": "Open",
|
||||
"queue": "Queue",
|
||||
"quickSave": "Quick Save",
|
||||
"quickSaveFromFavorites": "Quick Save for \"Favorites\"",
|
||||
"renamed": "Renamed",
|
||||
"reset": "Undo changes",
|
||||
"restart": "Restart",
|
||||
"settings": "Settings",
|
||||
"skipped": "Skipped",
|
||||
"start": "Start",
|
||||
"stop": "Stop",
|
||||
"save": "Save",
|
||||
"unchanged": "Unchanged",
|
||||
"unknown": "Unknown",
|
||||
"noItemInClipboard": "No items in Clipboard."
|
||||
},
|
||||
"receiveTab": {
|
||||
"title": "Receive",
|
||||
"infoBox": {
|
||||
"ip": "IP:",
|
||||
"port": "Port:",
|
||||
"alias": "Device name:"
|
||||
},
|
||||
"quickSave": {
|
||||
"off": "@:general.off",
|
||||
"favorites": "Favorites",
|
||||
"on": "@:general.on"
|
||||
}
|
||||
},
|
||||
"sendTab": {
|
||||
"title": "Send",
|
||||
"selection": {
|
||||
"title": "Selection",
|
||||
"files": "Files: {files}",
|
||||
"size": "Size: {size}"
|
||||
},
|
||||
"picker": {
|
||||
"file": "File",
|
||||
"folder": "Folder",
|
||||
"media": "Media",
|
||||
"text": "Text",
|
||||
"app": "App",
|
||||
"clipboard": "Paste"
|
||||
},
|
||||
"shareIntentInfo": "You can also use the \"Share\" feature of your mobile device to select files more easily.",
|
||||
"nearbyDevices": "Nearby devices",
|
||||
"thisDevice": "This Device",
|
||||
"scan": "Search devices",
|
||||
"manualSending": "Manual sending",
|
||||
"sendMode": "Send mode",
|
||||
"sendModes": {
|
||||
"single": "Single recipient",
|
||||
"multiple": "Multiple recipients",
|
||||
"link": "Share via link"
|
||||
},
|
||||
"sendModeHelp": "Explanation",
|
||||
"help": "Please ensure that the desired target is also on the same Wi-Fi network.",
|
||||
"placeItems": "Place items to share."
|
||||
},
|
||||
"settingsTab": {
|
||||
"title": "Settings",
|
||||
"general": {
|
||||
"title": "General",
|
||||
"brightness": "Theme",
|
||||
"brightnessOptions": {
|
||||
"system": "System",
|
||||
"dark": "Dark",
|
||||
"light": "Light"
|
||||
},
|
||||
"color": "Color",
|
||||
"colorOptions": {
|
||||
"system": "System",
|
||||
"oled": "OLED"
|
||||
},
|
||||
"language": "Language",
|
||||
"languageOptions": {
|
||||
"system": "System"
|
||||
},
|
||||
"saveWindowPlacement": "Save window position after quit",
|
||||
"saveWindowPlacementWindows": "Save window position after exit",
|
||||
"minimizeToTray": "Minimize to the System Tray/Menu Bar when closing",
|
||||
"launchAtStartup": "Autostart after login",
|
||||
"launchMinimized": "Autostart: Start hidden",
|
||||
"showInContextMenu": "Show LocalSend in context menu",
|
||||
"animations": "Animations"
|
||||
},
|
||||
"receive": {
|
||||
"title": "Receive",
|
||||
"quickSave": "@:general.quickSave",
|
||||
"quickSaveFromFavorites": "@:general.quickSaveFromFavorites",
|
||||
"requirePin": "@:webSharePage.requirePin",
|
||||
"autoFinish": "Auto Finish",
|
||||
"destination": "Save to folder",
|
||||
"downloads": "(Downloads)",
|
||||
"saveToGallery": "Save media to gallery",
|
||||
"saveToHistory": "Save to history"
|
||||
},
|
||||
"send": {
|
||||
"title": "Send",
|
||||
"shareViaLinkAutoAccept": "Automatically accept requests in \"Share via link\" mode"
|
||||
},
|
||||
"network": {
|
||||
"title": "Network",
|
||||
"needRestart": "Restart the server to apply the settings!",
|
||||
"server": "Server",
|
||||
"alias": "Device name",
|
||||
"deviceType": "Device type",
|
||||
"deviceModel": "Device model",
|
||||
"port": "Port",
|
||||
"network": "Network",
|
||||
"networkOptions": {
|
||||
"all": "All",
|
||||
"filtered": "Filtered"
|
||||
},
|
||||
"discoveryTimeout": "Discovery Timeout",
|
||||
"useSystemName": "Use system name",
|
||||
"generateRandomAlias": "Generate random alias",
|
||||
"portWarning": "You might not be detected by other devices because you are using a custom port. (default: {defaultPort})",
|
||||
"encryption": "Encryption",
|
||||
"multicastGroup": "Multicast address",
|
||||
"multicastGroupWarning": "You might not be detected by other devices because you are using a custom multicast address. (default: {defaultMulticast})"
|
||||
},
|
||||
"other": {
|
||||
"title": "Other",
|
||||
"support": "Support LocalSend",
|
||||
"donate": "Donate",
|
||||
"privacyPolicy": "Privacy Policy",
|
||||
"termsOfUse": "Terms of Use"
|
||||
},
|
||||
"advancedSettings": "Advanced settings"
|
||||
},
|
||||
"troubleshootPage": {
|
||||
"title": "Troubleshoot",
|
||||
"subTitle": "Does the app not work as expected? Here you can find some common solutions to problems.",
|
||||
"solution": "Solution:",
|
||||
"fixButton": "Fix automatically",
|
||||
"firewall": {
|
||||
"symptom": "This device can send files to other devices but other devices cannot send files to this device.",
|
||||
"solution": "This is most likely a firewall issue. You can solve this by allowing incoming connections (UDP and TCP) on port {port}.",
|
||||
"openFirewall": "Open Firewall"
|
||||
},
|
||||
"noDiscovery": {
|
||||
"symptom": "This device cannot discover other devices.",
|
||||
"solution": "Please make sure that all devices are on the same Wi-Fi network and share the same configuration (port, multicast address, encryption). You can try to type the IP address of the target device manually. If this works, consider adding this device to the favorites so it can be automatically discovered in the future."
|
||||
},
|
||||
"noConnection": {
|
||||
"symptom": "Both devices cannot discover each other nor can they share files.",
|
||||
"solution": "Does the problem exist on both sides? If so, you need to make sure that both devices are on the same Wi-Fi network and share the same configuration (port, multicast address, encryption). The Wi-Fi network may not allow communication between participants due to Access Point (AP) Isolation. In this case, this option must be disabled on the router."
|
||||
}
|
||||
},
|
||||
"networkInterfacesPage": {
|
||||
"title": "Network Interfaces",
|
||||
"info": "By default, LocalSend uses all available network interfaces. You can exclude unwanted networks here. You need to restart the server to apply the changes.",
|
||||
"preview": "Preview",
|
||||
"whitelist": "Whitelist",
|
||||
"blacklist": "Blacklist"
|
||||
},
|
||||
"receiveHistoryPage": {
|
||||
"title": "History",
|
||||
"openFolder": "Open folder",
|
||||
"deleteHistory": "Delete history",
|
||||
"empty": "The history is empty.",
|
||||
"entryActions": {
|
||||
"open": "Open file",
|
||||
"showInFolder": "Show in folder",
|
||||
"info": "Information",
|
||||
"deleteFromHistory": "Delete from history"
|
||||
}
|
||||
},
|
||||
"apkPickerPage": {
|
||||
"title": "Apps (APK)",
|
||||
"excludeSystemApps": "Exclude system apps",
|
||||
"excludeAppsWithoutLaunchIntent": "Exclude non-launchable apps",
|
||||
"apps": "{n} Apps"
|
||||
},
|
||||
"selectedFilesPage": {
|
||||
"deleteAll": "Delete all"
|
||||
},
|
||||
"receivePage": {
|
||||
"subTitle": {
|
||||
"one": "wants to send you a file",
|
||||
"other": "wants to send you {n} files"
|
||||
},
|
||||
"subTitleMessage": "sent you a message:",
|
||||
"subTitleLink": "sent you a link:",
|
||||
"canceled": "The sender has canceled the request."
|
||||
},
|
||||
"receiveOptionsPage": {
|
||||
"title": "Options",
|
||||
"destination": "@:settingsTab.receive.destination",
|
||||
"appDirectory": "(LocalSend folder)",
|
||||
"saveToGallery": "@:settingsTab.receive.saveToGallery",
|
||||
"saveToGalleryOff": "Turned off automatically because there are folders."
|
||||
},
|
||||
"sendPage": {
|
||||
"waiting": "Waiting for response…",
|
||||
"rejected": "The recipient has rejected the request.",
|
||||
"tooManyAttempts": "@:web.tooManyAttempts",
|
||||
"busy": "The recipient is busy with another request."
|
||||
},
|
||||
"progressPage": {
|
||||
"titleSending": "Sending files",
|
||||
"titleReceiving": "Receiving files",
|
||||
"savedToGallery": "Saved in Photos",
|
||||
"total": {
|
||||
"title": {
|
||||
"sending": "Total progress ({time})",
|
||||
"finishedError": "Finished with error",
|
||||
"canceledSender": "Canceled by sender",
|
||||
"canceledReceiver": "Canceled by receiver"
|
||||
},
|
||||
"count": "Files: {curr} / {n}",
|
||||
"size": "Size: {curr} / {n}",
|
||||
"speed": "Speed: {speed}/s"
|
||||
},
|
||||
"remainingTime": {
|
||||
"seconds": "{n}:{ss}",
|
||||
"minutes": "{n}:{ss}",
|
||||
"hours": "{h}h {m}m",
|
||||
"days": "{d}d {h}h {m}m",
|
||||
"@hours": "Use 'h' for hours abbreviation and 'm' for minutes",
|
||||
"@days": "Use 'd' for days, 'h' for hours, and 'm' for minutes"
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"title": "Share via link",
|
||||
"loading": "Starting server…",
|
||||
"stopping": "Stopping server…",
|
||||
"error": "An error occurred while starting the server.",
|
||||
"openLink": {
|
||||
"one": "Open this link in your browser:",
|
||||
"other": "Open one of these links in your browser:"
|
||||
},
|
||||
"requests": "Requests",
|
||||
"noRequests": "No requests yet.",
|
||||
"encryption": "@:settingsTab.network.encryption",
|
||||
"autoAccept": "Automatically accept requests",
|
||||
"requirePin": "Require PIN",
|
||||
"pinHint": "The PIN is \"{pin}\"",
|
||||
"encryptionHint": "LocalSend uses a self-signed certificate. You need to accept it in your browser.",
|
||||
"pendingRequests": "Pending requests: {n}"
|
||||
},
|
||||
"aboutPage": {
|
||||
"title": "About LocalSend",
|
||||
"description": [
|
||||
"LocalSend is a free, open-source app that allows you to securely share files and messages with nearby devices over your local network without needing an internet connection.",
|
||||
"This app is available on Android, iOS, macOS, Windows and Linux. You can find all download options on the official homepage."
|
||||
],
|
||||
"author": "Author",
|
||||
"contributors": "Contributors",
|
||||
"packagers": "Packagers",
|
||||
"translators": "Translators"
|
||||
},
|
||||
"donationPage": {
|
||||
"title": "Donate",
|
||||
"info": "LocalSend is free, open-source and without any ads. If you like the app, you can support the development with a donation.",
|
||||
"donate": "Donate {amount}",
|
||||
"thanks": "Thank you very much!",
|
||||
"restore": "Restore purchase"
|
||||
},
|
||||
"changelogPage": {
|
||||
"title": "Changelog"
|
||||
},
|
||||
"aliasGenerator(ignoreMissing, ignoreGpt)": {
|
||||
"@info": "Different locales may have different words, it may not match 1:1",
|
||||
"adjectives": [
|
||||
"Adorable",
|
||||
"Beautiful",
|
||||
"Big",
|
||||
"Bright",
|
||||
"Clean",
|
||||
"Clever",
|
||||
"Cool",
|
||||
"Cute",
|
||||
"Cunning",
|
||||
"Determined",
|
||||
"Energetic",
|
||||
"Efficient",
|
||||
"Fantastic",
|
||||
"Fast",
|
||||
"Fine",
|
||||
"Fresh",
|
||||
"Good",
|
||||
"Gorgeous",
|
||||
"Great",
|
||||
"Handsome",
|
||||
"Hot",
|
||||
"Kind",
|
||||
"Lovely",
|
||||
"Mystic",
|
||||
"Neat",
|
||||
"Nice",
|
||||
"Patient",
|
||||
"Pretty",
|
||||
"Powerful",
|
||||
"Rich",
|
||||
"Secret",
|
||||
"Smart",
|
||||
"Solid",
|
||||
"Special",
|
||||
"Strategic",
|
||||
"Strong",
|
||||
"Tidy",
|
||||
"Wise"
|
||||
],
|
||||
"fruits": [
|
||||
"Apple",
|
||||
"Avocado",
|
||||
"Banana",
|
||||
"Blackberry",
|
||||
"Blueberry",
|
||||
"Broccoli",
|
||||
"Carrot",
|
||||
"Cherry",
|
||||
"Coconut",
|
||||
"Grape",
|
||||
"Lemon",
|
||||
"Lettuce",
|
||||
"Mango",
|
||||
"Melon",
|
||||
"Mushroom",
|
||||
"Onion",
|
||||
"Orange",
|
||||
"Papaya",
|
||||
"Peach",
|
||||
"Pear",
|
||||
"Pineapple",
|
||||
"Potato",
|
||||
"Pumpkin",
|
||||
"Raspberry",
|
||||
"Strawberry",
|
||||
"Tomato"
|
||||
],
|
||||
"combination": "{adjective} {fruit}",
|
||||
"@combination": "In some languages, the adjective must be last."
|
||||
},
|
||||
"dialogs": {
|
||||
"addFile": {
|
||||
"title": "Add to selection",
|
||||
"content": "What do you want to add?"
|
||||
},
|
||||
"openFile": {
|
||||
"title": "Open file",
|
||||
"content": "Do you want to open the received file?"
|
||||
},
|
||||
"addressInput": {
|
||||
"title": "Enter address",
|
||||
"hashtag": "Hashtag",
|
||||
"ip": "IP Address",
|
||||
"recentlyUsed": "Recently used: "
|
||||
},
|
||||
"cancelSession": {
|
||||
"title": "Cancel files transfer",
|
||||
"content": "Do you really want to cancel the files transfer?"
|
||||
},
|
||||
"cannotOpenFile": {
|
||||
"title": "Cannot open file",
|
||||
"content": "Could not open \"{file}\". Has this file been moved, renamed or deleted?"
|
||||
},
|
||||
"encryptionDisabledNotice": {
|
||||
"title": "Encryption disabled",
|
||||
"content": "Communication now takes place via the unencrypted HTTP protocol. To use HTTPS protocol, enable encryption again."
|
||||
},
|
||||
"errorDialog": {
|
||||
"title": "@:general.error"
|
||||
},
|
||||
"favoriteDialog": {
|
||||
"title": "Favorites",
|
||||
"noFavorites": "No favorite devices yet.",
|
||||
"addFavorite": "Add"
|
||||
},
|
||||
"favoriteDeleteDialog": {
|
||||
"title": "Delete from favorites",
|
||||
"content": "Do you really want to delete from favorites \"{name}\"?"
|
||||
},
|
||||
"favoriteEditDialog": {
|
||||
"titleAdd": "Add to favorites",
|
||||
"titleEdit": "Settings",
|
||||
"name": "Device name",
|
||||
"auto": "(auto)",
|
||||
"ip": "IP Address",
|
||||
"port": "Port"
|
||||
},
|
||||
"fileInfo": {
|
||||
"title": "File information",
|
||||
"fileName": "File name:",
|
||||
"path": "Path:",
|
||||
"size": "Size:",
|
||||
"sender": "Sender:",
|
||||
"time": "Time:"
|
||||
},
|
||||
"fileNameInput": {
|
||||
"title": "Enter file name",
|
||||
"original": "Original: {original}"
|
||||
},
|
||||
"historyClearDialog": {
|
||||
"title": "Clear history",
|
||||
"content": "Do you really want to delete the entire history?"
|
||||
},
|
||||
"localNetworkUnauthorized": {
|
||||
"title": "@:dialogs.noPermission.title",
|
||||
"description": "LocalSend can't find other devices without having the permission to scan the local network. Please grant this permission in the settings.",
|
||||
"gotoSettings": "Settings"
|
||||
},
|
||||
"messageInput": {
|
||||
"title": "Type message",
|
||||
"multiline": "Multiline"
|
||||
},
|
||||
"noFiles": {
|
||||
"title": "No files selected",
|
||||
"content": "Please select at least one file."
|
||||
},
|
||||
"noPermission": {
|
||||
"title": "No permission",
|
||||
"content": "You have not granted the necessary permissions. Please grant them in the settings."
|
||||
},
|
||||
"notAvailableOnPlatform": {
|
||||
"title": "Not available",
|
||||
"content": "This feature is only available on:"
|
||||
},
|
||||
"qr": {
|
||||
"title": "QR Code"
|
||||
},
|
||||
"quickActions": {
|
||||
"title": "Quick Actions",
|
||||
"counter": "Counter",
|
||||
"prefix": "Prefix",
|
||||
"padZero": "Pad with zeros",
|
||||
"sortBeforeCount": "Sort alphabetically beforehand (A-Z)",
|
||||
"random": "Random"
|
||||
},
|
||||
"quickSaveNotice": {
|
||||
"title": "@:general.quickSave",
|
||||
"content": "File requests are now accepted automatically. Be aware that everyone on the local network can send you files."
|
||||
},
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"title": "@:general.quickSaveFromFavorites",
|
||||
"content": [
|
||||
"File requests are now accepted automatically from devices in your favorites list.",
|
||||
"Warning! Currently, this is not entirely secure, as a hacker who has the fingerprint of any device from your favorites list can send you files without restriction.",
|
||||
"However, this option is still safer than allowing all users on the local network to send you files without restriction."
|
||||
]
|
||||
},
|
||||
"pin": {
|
||||
"title": "Enter PIN"
|
||||
},
|
||||
"sendModeHelp": {
|
||||
"title": "Send modes",
|
||||
"single": "Sends files to one recipient. Selection will be cleared after finished files transfer.",
|
||||
"multiple": "Sends files to multiple recipients. Selection will not be cleared after finished files transfer.",
|
||||
"link": "Recipients who do not have LocalSend installed can download the selected files by opening the link in their browser."
|
||||
},
|
||||
"zoom": {
|
||||
"title": "URL"
|
||||
}
|
||||
},
|
||||
"sanitization": {
|
||||
"empty": "Filename cannot be empty",
|
||||
"invalid": "Filename contains invalid characters"
|
||||
},
|
||||
"tray": {
|
||||
"@info": "Apple Guidelines are very strict about the \"close\" wording.",
|
||||
"open": "@:general.open",
|
||||
"close": "Quit LocalSend",
|
||||
"closeWindows": "Exit"
|
||||
},
|
||||
"web": {
|
||||
"waiting": "@:sendPage.waiting",
|
||||
"enterPin": "Enter PIN",
|
||||
"invalidPin": "Invalid PIN",
|
||||
"tooManyAttempts": "Too many attempts",
|
||||
"rejected": "Rejected",
|
||||
"files": "Files",
|
||||
"fileName": "File name",
|
||||
"size": "Size"
|
||||
},
|
||||
"assetPicker": {
|
||||
"@info": "Translations for the Media selection tool for Android and iPhone",
|
||||
"confirm": "Confirm",
|
||||
"cancel": "Cancel",
|
||||
"edit": "Edit",
|
||||
"gifIndicator": "GIF",
|
||||
"loadFailed": "Load failed",
|
||||
"original": "Origin",
|
||||
"preview": "Preview",
|
||||
"select": "Select",
|
||||
"emptyList": "Empty list",
|
||||
"unSupportedAssetType": "Unsupported file type.",
|
||||
"unableToAccessAll": "Unable to access all files on the device",
|
||||
"viewingLimitedAssetsTip": "Only view files and albums accessible to the app.",
|
||||
"changeAccessibleLimitedAssets": "Click to update accessible files",
|
||||
"accessAllTip": "App can only access some files on the device. Go to system settings and allow the app to access all media on the device.",
|
||||
"goToSystemSettings": "Go to system settings",
|
||||
"accessLimitedAssets": "Continue with limited access",
|
||||
"accessiblePathName": "Accessible files",
|
||||
"sTypeAudioLabel": "Audio",
|
||||
"sTypeImageLabel": "Image",
|
||||
"sTypeVideoLabel": "Video",
|
||||
"sTypeOtherLabel": "Other media",
|
||||
"sActionPlayHint": "play",
|
||||
"sActionPreviewHint": "preview",
|
||||
"sActionSelectHint": "select",
|
||||
"sActionSwitchPathLabel": "change path",
|
||||
"sActionUseCameraHint": "use camera",
|
||||
"sNameDurationLabel": "duration",
|
||||
"sUnitAssetCountLabel": "count"
|
||||
}
|
||||
}
|
||||
@@ -27,9 +27,10 @@
|
||||
"online": "En línea",
|
||||
"open": "Abrir",
|
||||
"queue": "Cola",
|
||||
"quickSave": "Guardado Rápido",
|
||||
"quickSave": "Guardado rápido",
|
||||
"quickSaveFromFavorites": "Guardado rápido en \"Favoritos\"",
|
||||
"renamed": "Renombrado",
|
||||
"reset": "Resetear",
|
||||
"reset": "Deshacer cambios",
|
||||
"restart": "Reiniciar",
|
||||
"settings": "Ajustes",
|
||||
"skipped": "Omitido",
|
||||
@@ -38,7 +39,7 @@
|
||||
"save": "Guardar",
|
||||
"unchanged": "Sin Cambios",
|
||||
"unknown": "Desconocido",
|
||||
"noItemInClipboard": "No hay ningún elemento en el portapapeles"
|
||||
"noItemInClipboard": "No hay ningún elemento en el portapapeles."
|
||||
},
|
||||
"receiveTab": {
|
||||
"title": "Recibir",
|
||||
@@ -46,6 +47,11 @@
|
||||
"ip": "IP:",
|
||||
"port": "Puerto:",
|
||||
"alias": "Alias:"
|
||||
},
|
||||
"quickSave": {
|
||||
"off": "@:general.off",
|
||||
"favorites": "Favoritos",
|
||||
"on": "@:general.on"
|
||||
}
|
||||
},
|
||||
"sendTab": {
|
||||
@@ -67,6 +73,7 @@
|
||||
"nearbyDevices": "Dispositivos Cercanos",
|
||||
"thisDevice": "Este dispositivo",
|
||||
"scan": "Buscar dispositivos",
|
||||
"manualSending": "Enviar manualmente",
|
||||
"sendMode": "Modo de envío",
|
||||
"sendModes": {
|
||||
"single": "Solo un destino",
|
||||
@@ -74,8 +81,8 @@
|
||||
"link": "Compartir enlace"
|
||||
},
|
||||
"sendModeHelp": "Explicación",
|
||||
"help": "Asegúrate de que el destino elegido esté en la misma red Wi-Fi.",
|
||||
"placeItems": "Selecciona items para compartir."
|
||||
"help": "Por favor asegúrese que el dispositivo de destino esté en la misma red Wi-Fi.",
|
||||
"placeItems": "Selecciona elementos para compartir."
|
||||
},
|
||||
"settingsTab": {
|
||||
"title": "Ajustes",
|
||||
@@ -97,32 +104,48 @@
|
||||
"system": "Sistema"
|
||||
},
|
||||
"saveWindowPlacement": "Al salir guardar la ubicación de la ventana",
|
||||
"saveWindowPlacementWindows": "Guardar la posición de la ventana después de salir",
|
||||
"minimizeToTray": "Cerrar: Minimizar ventana",
|
||||
"launchAtStartup": "Inicio automático",
|
||||
"launchMinimized": "Inicio automático: Iniciar minimizado",
|
||||
"showInContextMenu": "Mostrar LocalSend en el menú contextual",
|
||||
"animations": "Animaciones"
|
||||
},
|
||||
"receive": {
|
||||
"title": "Recibir",
|
||||
"quickSave": "@:general.quickSave",
|
||||
"quickSaveFromFavorites": "@:general.quickSaveFromFavorites",
|
||||
"requirePin": "@:webSharePage.requirePin",
|
||||
"autoFinish": "Auto finalizar",
|
||||
"destination": "Destino",
|
||||
"destination": "Guardar en carpeta",
|
||||
"downloads": "(Descargas)",
|
||||
"saveToGallery": "Guardar media en la galería",
|
||||
"saveToHistory": "Guardar en el historial"
|
||||
},
|
||||
"send": {
|
||||
"title": "Enviar",
|
||||
"shareViaLinkAutoAccept": "Aceptar automáticamente solicitudes en el modo \"Compartir mediante enlace\""
|
||||
},
|
||||
"network": {
|
||||
"title": "Red",
|
||||
"needRestart": "Reiniciar el servidor para aplicar los ajustes.",
|
||||
"needRestart": "¡Reinicia el servidor para aplicar los ajustes!",
|
||||
"server": "Servidor",
|
||||
"alias": "Alias",
|
||||
"deviceType": "Tipo de dispositivo",
|
||||
"deviceModel": "Modelo de dispositivo",
|
||||
"port": "Puerto",
|
||||
"discoveryTimeout": "Tiempo de espera para Detección",
|
||||
"useSystemName": "Usar el nombre del sistema",
|
||||
"generateRandomAlias": "Generar alias aleatorio",
|
||||
"portWarning": "Es posible que no seas visible para otros dispositivos porque estás utilizando un puerto personalizado. (Puerto por defecto: {defaultPort})",
|
||||
"encryption": "Encriptación",
|
||||
"multicastGroup": "Multicast",
|
||||
"multicastGroupWarning": "Es posible que no seas visible para otros dispositivos porque estás utilizando una dirección multicast personalizada. (Dirección multicast por defecto: {defaultMulticast})"
|
||||
"multicastGroup": "Direccion Multicast",
|
||||
"multicastGroupWarning": "Es posible que no seas visible para otros dispositivos porque estás utilizando una dirección multicast personalizada. (Dirección multicast por defecto: {defaultMulticast})",
|
||||
"network": "Red",
|
||||
"networkOptions": {
|
||||
"all": "Todo",
|
||||
"filtered": "Filtrado"
|
||||
}
|
||||
},
|
||||
"other": {
|
||||
"title": "Otros",
|
||||
@@ -139,13 +162,17 @@
|
||||
"solution": "Solución:",
|
||||
"fixButton": "Corregir automáticamente",
|
||||
"firewall": {
|
||||
"symptom": "Esta aplicación puede enviar archivos a otros dispositivos pero otros dispositivos no pueden enviar archivos a este.",
|
||||
"symptom": "Este dispositivo puede enviar archivos a otros, pero otros dispositivos no pueden enviar archivos a este.",
|
||||
"solution": "Lo más probable es que se trate de un problema con el firewall, puedes solucionarlo permitiendo las conexiones entrantes (UDP y TCP) en el puerto {port}.",
|
||||
"openFirewall": "Abrir Firewall"
|
||||
},
|
||||
"noDiscovery": {
|
||||
"symptom": "Este dispositivo no puede descubrir otros dispositivos.",
|
||||
"solution": "Asegúrese que todos los dispositivos estén en la misma red Wi-Fi y compartan la misma configuración (puerto, dirección de multidifusión, cifrado). Puede intentar escribir la dirección IP del dispositivo de destino manualmente. Si esto funciona, considere agregar este dispositivo a los favoritos para que pueda detectarse automáticamente en el futuro."
|
||||
},
|
||||
"noConnection": {
|
||||
"symptom": "Ambos dispositivos no pueden descubrirse ni compartir archivos.",
|
||||
"solution": "¿El problema existe en ambos lados? Tienes que asegurarte que los dispositivos están en la misma red wifi y comparten la misma configuración (puerto, dirección multicast, encriptación). Es posible que el wifi no permita la comunicación entre los dispositivos. En este caso, hay que activar esta opción en el router."
|
||||
"solution": "¿El problema existe en ambos lados? Tienes que asegurarte que los dispositivos están en la misma red Wi-Fi y comparten la misma configuración (puerto, dirección multicast, encriptación). Es posible que el Wi-Fi no permita la comunicación entre los dispositivos. En este caso, hay que activar esta opción en el router."
|
||||
}
|
||||
},
|
||||
"receiveHistoryPage": {
|
||||
@@ -155,15 +182,16 @@
|
||||
"empty": "El historial está vacío.",
|
||||
"entryActions": {
|
||||
"open": "Abrir archivo",
|
||||
"showInFolder": "Mostrar en carpeta",
|
||||
"info": "Información",
|
||||
"deleteFromHistory": "Borrar del historial"
|
||||
}
|
||||
},
|
||||
"apkPickerPage": {
|
||||
"title": "Apps (APK)",
|
||||
"title": "Aplicaciones (APK)",
|
||||
"excludeSystemApps": "Excluir apps de sistema",
|
||||
"excludeAppsWithoutLaunchIntent": "Excluir apps no ejecutables",
|
||||
"apps": "{n} Apps"
|
||||
"apps": "{n} Aplicaciones"
|
||||
},
|
||||
"selectedFilesPage": {
|
||||
"deleteAll": "Eliminar todo"
|
||||
@@ -180,13 +208,14 @@
|
||||
"receiveOptionsPage": {
|
||||
"title": "Opciones",
|
||||
"destination": "@:settingsTab.receive.destination",
|
||||
"appDirectory": "(carpeta @:appName)",
|
||||
"appDirectory": "(Carpeta LocalSend)",
|
||||
"saveToGallery": "@:settingsTab.receive.saveToGallery",
|
||||
"saveToGalleryOff": "Desactivado automáticamente porque hay carpetas."
|
||||
},
|
||||
"sendPage": {
|
||||
"waiting": "Esperando respuesta...",
|
||||
"waiting": "Esperando respuesta…",
|
||||
"rejected": "El destino ha rechazado la petición.",
|
||||
"tooManyAttempts": "@:web.tooManyAttempts",
|
||||
"busy": "El destino está ocupado con otra petición."
|
||||
},
|
||||
"progressPage": {
|
||||
@@ -203,12 +232,20 @@
|
||||
"count": "Archivos: {curr} / {n}",
|
||||
"size": "Tamaño: {curr} / {n}",
|
||||
"speed": "Velocidad: {speed}/s"
|
||||
},
|
||||
"remainingTime": {
|
||||
"seconds": "{n}:{ss}",
|
||||
"minutes": "{n}:{ss}",
|
||||
"hours": "{h}h {m}m",
|
||||
"days": "{d}d {h}h {m}m",
|
||||
"@hours": "Usa «h» como abreviatura de horas y «m» para minutos",
|
||||
"@days": "Usa «d» para días, «h» para horas y «m» para minutos"
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"title": "Compartir mediante enlace",
|
||||
"loading": "Iniciando servidor...",
|
||||
"stopping": "Deteniendo servidor...",
|
||||
"loading": "Iniciando servidor…",
|
||||
"stopping": "Deteniendo servidor…",
|
||||
"error": "Se ha producido un error al iniciar el servidor.",
|
||||
"openLink": {
|
||||
"one": "Abre este enlace en el navegador:",
|
||||
@@ -217,6 +254,9 @@
|
||||
"requests": "Solicitudes",
|
||||
"noRequests": "Aún no hay solicitudes.",
|
||||
"encryption": "@:settingsTab.network.encryption",
|
||||
"autoAccept": "Aceptar solicitudes automáticamente",
|
||||
"requirePin": "Requerir PIN",
|
||||
"pinHint": "El PIN es \"{pin}\"",
|
||||
"encryptionHint": "LocalSend utiliza un certificado autofirmado. Necesitas aceptarlo en el navegador.",
|
||||
"pendingRequests": "Solicitudes pendientes: {n}"
|
||||
},
|
||||
@@ -228,6 +268,7 @@
|
||||
],
|
||||
"author": "Autor",
|
||||
"contributors": "Colaboradores",
|
||||
"packagers": "Empaquetadores",
|
||||
"translators": "Traductores"
|
||||
},
|
||||
"donationPage": {
|
||||
@@ -248,9 +289,13 @@
|
||||
"title": "Añadir a selección",
|
||||
"content": "¿Qué quieres añadir?"
|
||||
},
|
||||
"openFile": {
|
||||
"title": "Abrir archivo",
|
||||
"content": "¿Quieres abrir el archivo recibido?"
|
||||
},
|
||||
"addressInput": {
|
||||
"title": "Introducir dirección",
|
||||
"hashtag": "Hashtag",
|
||||
"hashtag": "Etiqueta",
|
||||
"ip": "Dirección IP",
|
||||
"recentlyUsed": "Usados recientemente: "
|
||||
},
|
||||
@@ -280,7 +325,7 @@
|
||||
},
|
||||
"favoriteEditDialog": {
|
||||
"titleAdd": "Agregar a favoritos",
|
||||
"titleEdit": "Editar",
|
||||
"titleEdit": "Ajustes",
|
||||
"name": "Alias",
|
||||
"auto": "(auto)",
|
||||
"ip": "Dirección IP",
|
||||
@@ -338,27 +383,49 @@
|
||||
"title": "@:general.quickSave",
|
||||
"content": "Las solicitudes de archivos se aceptan automáticamente. Ten en cuenta que cualquiera en la red local podrá enviarte archivos."
|
||||
},
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"title": "@:general.quickSaveFromFavorites",
|
||||
"content": [
|
||||
"Se aceptarán automáticamente los archivos recibidos de los dispositivos incluidos en su lista de favoritos.",
|
||||
"Advertencia: esta opción no es completamente segura, cualquiera que conozca la huella digital de sus dispositivos favoritos aún puede enviarle archivos.",
|
||||
"Sin embargo, esta opción sigue siendo más segura que permitir que todos los usuarios en la red local te envíen archivos sin restricción."
|
||||
]
|
||||
},
|
||||
"pin": {
|
||||
"title": "Ingresar PIN"
|
||||
},
|
||||
"sendModeHelp": {
|
||||
"title": "Modos de envío",
|
||||
"single": "Enviar archivos a un solo destino. La selección se borrará una vez finalizada la transferencia.",
|
||||
"multiple": "Enviar archivos a múltiples destinos. La selección no se borrará.",
|
||||
"link": "Los destinatarios que no tengan LocalSend instalado pueden descargar los archivos seleccionados abriendo el enlace en su navegador."
|
||||
},
|
||||
"zoom": {
|
||||
"title": "URL"
|
||||
}
|
||||
},
|
||||
"sanitization": {
|
||||
"empty": "El nombre del archivo no puede estar vacío",
|
||||
"invalid": "El nombre del archivo contiene caracteres no válidos"
|
||||
},
|
||||
"tray": {
|
||||
"@info": "Las directrices de Apple son muy estrictas en cuanto a la expresión 'cerrar'.",
|
||||
"open": "@:general.open",
|
||||
"close": "Cerrar LocalSend"
|
||||
"close": "Cerrar LocalSend",
|
||||
"closeWindows": "Cerrar"
|
||||
},
|
||||
"web": {
|
||||
"waiting": "@:sendPage.waiting",
|
||||
"enterPin": "Ingresar PIN",
|
||||
"invalidPin": "PIN Inválido",
|
||||
"tooManyAttempts": "Demasiados intentos",
|
||||
"rejected": "Rechazado",
|
||||
"files": "Archivos",
|
||||
"fileName": "Nombre del archivo",
|
||||
"size": "Tamaño"
|
||||
},
|
||||
"assetPicker": {
|
||||
"@info": "Traducciones de la herramienta de selección de medios para Android e Iphone",
|
||||
"@info": "Traducciones de la herramienta de selección de medios para Android e iPhone",
|
||||
"confirm": "Confirmar",
|
||||
"cancel": "Cancelar",
|
||||
"edit": "Editar",
|
||||
@@ -369,10 +436,10 @@
|
||||
"select": "Seleccionar",
|
||||
"emptyList": "Lista vacía",
|
||||
"unSupportedAssetType": "Tipo de archivo no soportado.",
|
||||
"unableToAccessAll": "No se puede acceder a los archivos del dispositivo.",
|
||||
"viewingLimitedAssetsTip": "Ver sólo los archivos y álbumes accesibles para la aplicación.",
|
||||
"unableToAccessAll": "No se puede acceder a todos los archivos del dispositivo",
|
||||
"viewingLimitedAssetsTip": "Ver solo los archivos y álbumes accesibles para la aplicación.",
|
||||
"changeAccessibleLimitedAssets": "Haga clic para actualizar los archivos accesibles",
|
||||
"accessAllTip": "La aplicación sólo puede acceder a algunos archivos del dispositivo. Ve a la configuración del sistema y permite que la aplicación acceda a todos los archivos multimedia del dispositivo.",
|
||||
"accessAllTip": "La aplicación solo puede acceder a algunos archivos del dispositivo. Ve a la configuración del sistema y permite que la aplicación acceda a todos los archivos multimedia del dispositivo.",
|
||||
"goToSystemSettings": "Ir a los ajustes del sistema",
|
||||
"accessLimitedAssets": "Continuar con acceso limitado",
|
||||
"accessiblePathName": "Archivos accesibles",
|
||||
@@ -380,12 +447,19 @@
|
||||
"sTypeImageLabel": "Imagen",
|
||||
"sTypeVideoLabel": "Video",
|
||||
"sTypeOtherLabel": "Otros medios",
|
||||
"sActionPlayHint": "play",
|
||||
"sActionPlayHint": "reproducir",
|
||||
"sActionPreviewHint": "vista previa",
|
||||
"sActionSelectHint": "selecccionar",
|
||||
"sActionSwitchPathLabel": "cambiar ruta",
|
||||
"sActionUseCameraHint": "usar cámara",
|
||||
"sNameDurationLabel": "duración",
|
||||
"sUnitAssetCountLabel": "conteo"
|
||||
},
|
||||
"networkInterfacesPage": {
|
||||
"title": "Interfaces de la red",
|
||||
"info": "De forma predeterminada, LocalSend utiliza todas las interfaces de red disponibles. Aquí puede desactivar las redes no deseadas. Debe reiniciar el servidor para aplicar los cambios.",
|
||||
"preview": "Vista previa",
|
||||
"whitelist": "Lista blanca",
|
||||
"blacklist": "Lista negra"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,465 @@
|
||||
{
|
||||
"locale": "Eesti keel",
|
||||
"appName": "LocalSend",
|
||||
"general": {
|
||||
"accept": "Nõustu",
|
||||
"accepted": "Nõustusid",
|
||||
"add": "Lisa",
|
||||
"advanced": "Lisavalikud",
|
||||
"cancel": "Katkesta",
|
||||
"close": "Sulge",
|
||||
"confirm": "Kinnita",
|
||||
"continueStr": "Jätka",
|
||||
"copy": "Kopeeri",
|
||||
"copiedToClipboard": "Kopeeritud lõikelauale",
|
||||
"decline": "Keeldu",
|
||||
"done": "Valmis",
|
||||
"delete": "Kustuta",
|
||||
"edit": "Muuda",
|
||||
"error": "Viga",
|
||||
"example": "Näide",
|
||||
"files": "Failid",
|
||||
"finished": "Valmis",
|
||||
"hide": "Peida",
|
||||
"off": "Väljas",
|
||||
"offline": "Pole võrgus",
|
||||
"on": "Sees",
|
||||
"online": "Võrgus",
|
||||
"open": "Ava",
|
||||
"queue": "Järjekorras",
|
||||
"quickSave": "Kiirsalvestus",
|
||||
"quickSaveFromFavorites": "Kiirsalvestamine „Lemmikutelt“",
|
||||
"renamed": "Nimi on muudetud",
|
||||
"reset": "Tühista muudatused",
|
||||
"restart": "Käivita uuesti",
|
||||
"settings": "Seadistused",
|
||||
"skipped": "Vahelejäetud",
|
||||
"start": "Alusta",
|
||||
"stop": "Peata",
|
||||
"save": "Salvesta",
|
||||
"unchanged": "Muutmata",
|
||||
"unknown": "Teadmata",
|
||||
"noItemInClipboard": "Lõikelaual pole midagi."
|
||||
},
|
||||
"receiveTab": {
|
||||
"title": "Võta vastu",
|
||||
"infoBox": {
|
||||
"ip": "IP-aadress:",
|
||||
"port": "Port:",
|
||||
"alias": "Seadme nimi:"
|
||||
},
|
||||
"quickSave": {
|
||||
"off": "@:general.off",
|
||||
"favorites": "Lemmikud",
|
||||
"on": "@:general.on"
|
||||
}
|
||||
},
|
||||
"sendTab": {
|
||||
"title": "Saada",
|
||||
"selection": {
|
||||
"title": "Valik",
|
||||
"files": "Failid: {files}",
|
||||
"size": "Andmemaht: {size}"
|
||||
},
|
||||
"picker": {
|
||||
"file": "Fail",
|
||||
"folder": "Kaust",
|
||||
"media": "Meedia",
|
||||
"text": "Tekst",
|
||||
"app": "Rakendus",
|
||||
"clipboard": "Aseta"
|
||||
},
|
||||
"shareIntentInfo": "Klikates nutiseadmes olevates rakendustes nuppu „Jaga“ võid kasutada ka mugavat jagamise võimalust.",
|
||||
"nearbyDevices": "Läheduses asuvad seadmed",
|
||||
"thisDevice": "See seade",
|
||||
"scan": "Otsi seadmeid",
|
||||
"manualSending": "Saada käsitsi",
|
||||
"sendMode": "Saatmisviis",
|
||||
"sendModes": {
|
||||
"single": "Üks vastuvõtja",
|
||||
"multiple": "Mitu vastuvõtjat",
|
||||
"link": "Jagamine lingi vahendusel"
|
||||
},
|
||||
"sendModeHelp": "Selgitus",
|
||||
"help": "Palun kontrolli, et sihtseade asub sama WiFi ühenduse piires.",
|
||||
"placeItems": "Lisa jagatavad failid siia."
|
||||
},
|
||||
"settingsTab": {
|
||||
"title": "Seadistused",
|
||||
"general": {
|
||||
"title": "Üldised seadistused",
|
||||
"brightness": "Kujundus",
|
||||
"brightnessOptions": {
|
||||
"system": "Süsteemi kujundus",
|
||||
"dark": "Tume kujundus",
|
||||
"light": "Hele kujundus"
|
||||
},
|
||||
"color": "Värv",
|
||||
"colorOptions": {
|
||||
"system": "Süsteemi värvid",
|
||||
"oled": "OLED"
|
||||
},
|
||||
"language": "Keel",
|
||||
"languageOptions": {
|
||||
"system": "Süsteemi keel"
|
||||
},
|
||||
"saveWindowPlacement": "Peale väljumist salvesta akna asukoht",
|
||||
"saveWindowPlacementWindows": "Peale lõpetamist salvesta akna asukoht",
|
||||
"minimizeToTray": "Sulgemisel aseta rakendus süsteemisalve",
|
||||
"launchAtStartup": "Sisselogimisel käivita automaatselt",
|
||||
"launchMinimized": "Automaatsel käivitamisel: käivita peidetuna",
|
||||
"showInContextMenu": "Näita LocalSendi kontekstimenüüs",
|
||||
"animations": "Animatsioonid"
|
||||
},
|
||||
"receive": {
|
||||
"title": "Vastuvõtmine",
|
||||
"quickSave": "@:general.quickSave",
|
||||
"quickSaveFromFavorites": "@:general.quickSaveFromFavorites",
|
||||
"requirePin": "@:webSharePage.requirePin",
|
||||
"autoFinish": "Lõpeta automaatselt",
|
||||
"destination": "Salvesta kausta",
|
||||
"downloads": "(Allalaadimised)",
|
||||
"saveToGallery": "Lisa meedia galeriisse",
|
||||
"saveToHistory": "Salvesta ajalukku"
|
||||
},
|
||||
"send": {
|
||||
"title": "Saatmine",
|
||||
"shareViaLinkAutoAccept": "Kui kasutusel on „Jaga lingi abil“, siis nõustu vastuvõtmisega automaatselt"
|
||||
},
|
||||
"network": {
|
||||
"title": "Võrk",
|
||||
"needRestart": "Muudatuste jõustamiseks palun käivita server uuesti!",
|
||||
"server": "Server",
|
||||
"alias": "Seadme nimi",
|
||||
"deviceType": "Seadme tüüp",
|
||||
"deviceModel": "Seadme mudel",
|
||||
"port": "Kasutatav port",
|
||||
"discoveryTimeout": "Leitavuse aegumine",
|
||||
"useSystemName": "Kasuta süsteemset nime",
|
||||
"generateRandomAlias": "Loo juhuslik nimi",
|
||||
"portWarning": "Kuna kasutad endamääratud porti, siis muud seadmed ei pruugi seda seadet leida. (vaikimisi: {defaultPort})",
|
||||
"encryption": "Krüptimine",
|
||||
"multicastGroup": "Multiedastuse aadress",
|
||||
"multicastGroupWarning": "Kuna kasutad endamääratud multiedastuse aadressi, siis muud seadmed ei pruugi seda seadet leida. (vaikimisi: {defaultMulticast})",
|
||||
"networkOptions": {
|
||||
"filtered": "Filtreeritud",
|
||||
"all": "Kõik"
|
||||
},
|
||||
"network": "Võrk"
|
||||
},
|
||||
"other": {
|
||||
"title": "Muu teave",
|
||||
"support": "Toeta LocalSendi",
|
||||
"donate": "Toeta rahaliselt",
|
||||
"privacyPolicy": "Andmekaitsepõhimõtted",
|
||||
"termsOfUse": "Kasutustingimused"
|
||||
},
|
||||
"advancedSettings": "Täiendavad seadistused"
|
||||
},
|
||||
"troubleshootPage": {
|
||||
"title": "Veaotsing",
|
||||
"subTitle": "Kas rakendus toimib nii, nagu vaja? Siin võid leida lahendusi levinumatele probleemidele.",
|
||||
"solution": "Lahendus:",
|
||||
"fixButton": "Paranda automaatselt",
|
||||
"firewall": {
|
||||
"symptom": "Siit seadmest on võimalik teisele faile saata, kuid teised ei saa siia saata.",
|
||||
"solution": "Tõenäoliselt on see seotud tulemüüriga. Olukorra võid lahendada lubades sisenevad (UDP ja TCP) ühendused pordis {port}.",
|
||||
"openFirewall": "Ava tulemüüri seadistused"
|
||||
},
|
||||
"noDiscovery": {
|
||||
"symptom": "See seade ei suuda tuvastada teisi seadeid.",
|
||||
"solution": "Palun kontrolli, et kõik seadmed asuvad samas WiFi võrgus ning kasutavad samu seadistusi (port, multiedastuse aadress ja krüptimine). Sa võid ka proovida sihtseadme IP-aadressi lisamist käsitsi. Kui siis ühendus toimib, võid ta lisada lemmikuks ja hilisem tuvastamine saab olema automaatne."
|
||||
},
|
||||
"noConnection": {
|
||||
"symptom": "Mõlemad seadmed ei suuda üksteist leida ega jagada faile.",
|
||||
"solution": "Kas identne probleem on mõlemas seadmes? Kui nii, siis palun kontrolli, et mõlemad seadmed asuvad samas WiFi võrgus ning kasutavad samu seadistusi (port, multiedastuse aadress ja krüptimine). Aga samas on võimalik, et WiFi võrk on seadistatud nii, et kõik seadmed on üksteisest isoleeritud. Sel juhul küsi abi võrgu haldajalt, kes saab ruuteris teha vajalikud muudatused."
|
||||
}
|
||||
},
|
||||
"receiveHistoryPage": {
|
||||
"title": "Ajalugu",
|
||||
"openFolder": "Ava kaust",
|
||||
"deleteHistory": "Kustuta ajalugu",
|
||||
"empty": "Ajalugu on tühi.",
|
||||
"entryActions": {
|
||||
"open": "Ava fail",
|
||||
"showInFolder": "Näita kaustas",
|
||||
"info": "Teave",
|
||||
"deleteFromHistory": "Kustuta ajaloost"
|
||||
}
|
||||
},
|
||||
"apkPickerPage": {
|
||||
"title": "Rakendused (apk-failid)",
|
||||
"excludeSystemApps": "Välista süsteemi rakendused",
|
||||
"excludeAppsWithoutLaunchIntent": "Välista mittekäivitatavad rakendused",
|
||||
"apps": "{n} rakendust"
|
||||
},
|
||||
"selectedFilesPage": {
|
||||
"deleteAll": "Kustuta kõik"
|
||||
},
|
||||
"receivePage": {
|
||||
"subTitle": {
|
||||
"one": "soovib sulle saata faili",
|
||||
"other": "soovib sulle saata {n} faili"
|
||||
},
|
||||
"subTitleMessage": "saatis sulle sõnumi:",
|
||||
"subTitleLink": "saatis sulle lingi:",
|
||||
"canceled": "Saatja on päringu tühistanud."
|
||||
},
|
||||
"receiveOptionsPage": {
|
||||
"title": "Eelistused",
|
||||
"destination": "@:settingsTab.receive.destination",
|
||||
"appDirectory": "(LocalSendi kaust)",
|
||||
"saveToGallery": "@:settingsTab.receive.saveToGallery",
|
||||
"saveToGalleryOff": "Pole kasutusel, kuna saadetavate hulgas leidub kaustu."
|
||||
},
|
||||
"sendPage": {
|
||||
"waiting": "Ootame vastust…",
|
||||
"rejected": "Vastuvõtja on vastuvõtmisest keeldunud.",
|
||||
"tooManyAttempts": "@:web.tooManyAttempts",
|
||||
"busy": "Vastuvõtja on hõivatud teise päringuga tegelemisega."
|
||||
},
|
||||
"progressPage": {
|
||||
"titleSending": "Saadame faile",
|
||||
"titleReceiving": "Võtame faile vastu",
|
||||
"savedToGallery": "Salvestatud kausta Fotod",
|
||||
"total": {
|
||||
"title": {
|
||||
"sending": "Edenemine kokku ({time})",
|
||||
"finishedError": "Lõppes veaga",
|
||||
"canceledSender": "Saatja poolt katkestatud",
|
||||
"canceledReceiver": "Vastuvõtja poolt katkestatud"
|
||||
},
|
||||
"count": "Faile: {curr} / {n}",
|
||||
"size": "Andmemaht: {curr} / {n}",
|
||||
"speed": "Kiirus: {speed}/s"
|
||||
},
|
||||
"remainingTime": {
|
||||
"seconds": "{n}:{ss}",
|
||||
"minutes": "{n}:{ss}",
|
||||
"hours": "{h} t {m} min",
|
||||
"days": "{d} pv {h} t {m} min",
|
||||
"@hours": "Kasuta „h“ tunni lühendina ja „m“ minutite jaoks",
|
||||
"@days": "Kasuta „d“ päeva, lühendina „h“ tunni lühendina ja „m“ minutite jaoks"
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"title": "Jaga lingi vahendusel",
|
||||
"loading": "Käivitame serverit…",
|
||||
"stopping": "Peatame serverit…",
|
||||
"error": "Serveri käivitamisel tekkis viga.",
|
||||
"openLink": {
|
||||
"one": "Ava see link oma veebibrauseris:",
|
||||
"other": "Ava üks neist linkidest oma veebibrauseris:"
|
||||
},
|
||||
"requests": "Päringuid",
|
||||
"noRequests": "Päringuid veel pole.",
|
||||
"encryption": "@:settingsTab.network.encryption",
|
||||
"autoAccept": "Nõustu päringutega automaatselt",
|
||||
"requirePin": "Küsi PIN-koodi",
|
||||
"pinHint": "PIN-kood on „{pin}“",
|
||||
"encryptionHint": "LocalSend kasutab enda poolt allkirjastatud sertifikaate. Ühenduse toimimiseks palun nõustu nendega veebibrauseris.",
|
||||
"pendingRequests": "Ootel päringuid: {n}"
|
||||
},
|
||||
"aboutPage": {
|
||||
"title": "Rakenduse teave: LocalSend",
|
||||
"description": [
|
||||
"LocalSend põhineb avatud lähtekoodil, on kõikide jaoks vaba ning tasuta kasutatav. Rakenduse eesmärgiks on võimaldada failide ja tekstide jagamist kohtvõrgus asuvate arvutite vahel nii, et välist internetiühendust pole vaja kasutada.",
|
||||
"See rakendus on saadaval Androidi, iOSi, macOSi, Windowsi ja Linuxi jaoks. Kõik allalaaditavad paigaldusfailid leiad meie ametlikust veebisaidist."
|
||||
],
|
||||
"author": "Autor",
|
||||
"contributors": "Kaasautorid",
|
||||
"packagers": "Pakendajad",
|
||||
"translators": "Tõlkijad"
|
||||
},
|
||||
"donationPage": {
|
||||
"title": "Toeta meid rahaliselt",
|
||||
"info": "LocalSend põhineb avatud lähtekoodil, on kõikide jaoks vaba ning tasuta kasutatav, ega sisalda reklaame. Kui sulle see rakendus meeldib, siis palun toeta meie arendust.",
|
||||
"donate": "Anneta {amount}",
|
||||
"thanks": "Suur tänu!",
|
||||
"restore": "Taasta ost"
|
||||
},
|
||||
"changelogPage": {
|
||||
"title": "Muudatuste logi"
|
||||
},
|
||||
"aliasGenerator(ignoreMissing, ignoreGpt)": {
|
||||
"@info": "Erinevates lokaatides võivad olla kasutusel erinevad sõnad ning nad ei pruugi 1:1 kattuda"
|
||||
},
|
||||
"dialogs": {
|
||||
"addFile": {
|
||||
"title": "Lisa valiku hulka",
|
||||
"content": "Mida sa sooviksid lisada?"
|
||||
},
|
||||
"openFile": {
|
||||
"title": "Ava fail",
|
||||
"content": "Kas sa soovid avada saadud faili?"
|
||||
},
|
||||
"addressInput": {
|
||||
"title": "Sisesta aadress",
|
||||
"hashtag": "Teemaviide",
|
||||
"ip": "IP-aadress",
|
||||
"recentlyUsed": "Hiljuti kasutatud: "
|
||||
},
|
||||
"cancelSession": {
|
||||
"title": "Katkesta failide edastamine",
|
||||
"content": "Kas sa kindlasti soovid katkestada failide edastamise?"
|
||||
},
|
||||
"cannotOpenFile": {
|
||||
"title": "Faili avamine ei õnnestu",
|
||||
"content": "„{file}“ faili avamine ei õnnestunud. Kas ta võib olla teisaldatud, ümbernimetatud või kustutatud?"
|
||||
},
|
||||
"encryptionDisabledNotice": {
|
||||
"title": "Krüptimine pole kasutusel",
|
||||
"content": "Andmevahetus toimub nüüd krüptimata HTTP-protokolli vahendusel. Turvalise HTTPS-protokolli kasutamiseks lülita krüptimine sisse."
|
||||
},
|
||||
"errorDialog": {
|
||||
"title": "@:general.error"
|
||||
},
|
||||
"favoriteDialog": {
|
||||
"title": "Lemmikud",
|
||||
"noFavorites": "Ühtegi lemmikseadet veel pole.",
|
||||
"addFavorite": "Lisa"
|
||||
},
|
||||
"favoriteDeleteDialog": {
|
||||
"title": "Kustuta lemmikute hulgast",
|
||||
"content": "Kas sa kindlasti soovid „{name}“ kustutada lemmikute hulgast?"
|
||||
},
|
||||
"favoriteEditDialog": {
|
||||
"titleAdd": "Lisa lemmikuks",
|
||||
"titleEdit": "Seadistused",
|
||||
"name": "Seadme nimi",
|
||||
"auto": "(automaatne)",
|
||||
"ip": "IP-aadress",
|
||||
"port": "Kasutatav port"
|
||||
},
|
||||
"fileInfo": {
|
||||
"title": "Faili teave",
|
||||
"fileName": "Failinimi:",
|
||||
"path": "Asukoht:",
|
||||
"size": "Suurus:",
|
||||
"sender": "Saatja:",
|
||||
"time": "Kellaaeg:"
|
||||
},
|
||||
"fileNameInput": {
|
||||
"title": "Sisesta failinimi",
|
||||
"original": "Algne: {original}"
|
||||
},
|
||||
"historyClearDialog": {
|
||||
"title": "Tühjenda ajalugu",
|
||||
"content": "Kas sa kindlasti soovid kogu ajaloo kustutada?"
|
||||
},
|
||||
"localNetworkUnauthorized": {
|
||||
"title": "@:dialogs.noPermission.title",
|
||||
"description": "Ilma kohtvõrgu skaneerimise õiguseta ei suuda LocalSend leida teisi seadmeid. Palun luba süsteemi seadistustest vajalikud õigused.",
|
||||
"gotoSettings": "Seadistused"
|
||||
},
|
||||
"messageInput": {
|
||||
"title": "Kirjuta sõnum",
|
||||
"multiline": "Mitmerealine"
|
||||
},
|
||||
"noFiles": {
|
||||
"title": "Ühtegi faili pole valitud",
|
||||
"content": "Palun vali vähemalt üks fail."
|
||||
},
|
||||
"noPermission": {
|
||||
"title": "Õigused puuduvad",
|
||||
"content": "Sa pole rakendusele jaganud vajalikke õigusi. Palun tee seda süsteemi seadistustes."
|
||||
},
|
||||
"notAvailableOnPlatform": {
|
||||
"title": "Pole saadaval",
|
||||
"content": "See funktsionaalsus on saadaval vaid:"
|
||||
},
|
||||
"qr": {
|
||||
"title": "QR-kood"
|
||||
},
|
||||
"quickActions": {
|
||||
"title": "Kiirtoimingud",
|
||||
"counter": "Loendur",
|
||||
"prefix": "Eesliide",
|
||||
"padZero": "Täida nullidega",
|
||||
"sortBeforeCount": "Enne loendamist järjesta tähestiku järjekorras (A-Z)",
|
||||
"random": "Juhuslikult"
|
||||
},
|
||||
"quickSaveNotice": {
|
||||
"title": "@:general.quickSave",
|
||||
"content": "Failipäringutega nõustume nüüd automaatselt. Palun arvesta, et seeläbi võivad kõik sinu kohtvõrgus saata sulle faile."
|
||||
},
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"title": "@:general.quickSaveFromFavorites",
|
||||
"content": [
|
||||
"Failipäringutega nõustume nüüd automaatselt vaid nende seadmete puhul, mis on lemmikuks märgitud.",
|
||||
"Hoiatus! Kui kohtvõrgus tegutsev võimalik pahatahtlik osapool saaks kätte sinul lemmikuks märgitud seadmete võtmed ja sõrmejäljed, siis saaks sulle piiranguteta faile saata ja seega pole lahendus hetkel täiesti turvaline.",
|
||||
"Aga siiski on see valik turvalisem, kui lubada kõigil sinu kohtvõrgu kasutajatel saata sulle faile ilma igasuguste piiranguteta."
|
||||
]
|
||||
},
|
||||
"pin": {
|
||||
"title": "Sisesta PIN-kood"
|
||||
},
|
||||
"sendModeHelp": {
|
||||
"title": "Saatmisviisid",
|
||||
"single": "Sellega saadame faile ühele vastuvõtjale. Peale failide saatmise lõppu eemaldame failid saatmisloendist.",
|
||||
"multiple": "Sellega saadame faile mitmele vastuvõtjale. Peale failide saatmise lõppu failid jäävad saatmisloendisse alles.",
|
||||
"link": "Kui failide vastuvõtjatel pole arvutis või nutiseadmes rakendust LocalSend, siis avades etteantud lingi oma veebibrauseris, saavad nad failid alla laadida."
|
||||
},
|
||||
"zoom": {
|
||||
"title": "Võrguaadress"
|
||||
}
|
||||
},
|
||||
"sanitization": {
|
||||
"empty": "Failil peab olema nimi",
|
||||
"invalid": "Failinimes on valesid tähemärke"
|
||||
},
|
||||
"tray": {
|
||||
"@info": "Apple'i kasutajaliidese juhendid on väga ranged sõna „Sulge“ kasutamise osas.",
|
||||
"open": "@:general.open",
|
||||
"close": "Sulge LocalSend",
|
||||
"closeWindows": "Välju"
|
||||
},
|
||||
"web": {
|
||||
"waiting": "@:sendPage.waiting",
|
||||
"enterPin": "Sisesta PIN-kood",
|
||||
"invalidPin": "Vigane PIN-kood",
|
||||
"tooManyAttempts": "Liiga palju sisestuskatseid",
|
||||
"rejected": "Keelatud",
|
||||
"files": "Failid",
|
||||
"fileName": "Failinimi",
|
||||
"size": "Suurus"
|
||||
},
|
||||
"assetPicker": {
|
||||
"@info": "Androidis ja iPhone'is kasutatava meediavalija tõlked",
|
||||
"confirm": "Kinnita",
|
||||
"cancel": "Katkesta",
|
||||
"edit": "Muuda",
|
||||
"gifIndicator": "GIF",
|
||||
"loadFailed": "Laadimine ei õnnestunud",
|
||||
"original": "Algne",
|
||||
"preview": "Eelvaade",
|
||||
"select": "Vali",
|
||||
"emptyList": "Tühi loend",
|
||||
"unSupportedAssetType": "Failitüüp pole toetatud.",
|
||||
"unableToAccessAll": "Selles seadmes puudub ligipääs failidele",
|
||||
"viewingLimitedAssetsTip": "Näed vaid faile ja albumeid, millele oled sellele rakendusele ligipääsu andnud.",
|
||||
"changeAccessibleLimitedAssets": "Ligipääsetavate failide loendi uuendmiseks klõpsi",
|
||||
"accessAllTip": "Rakendusel on selles nutiseadmes ligipääs vaid mõnedele failidele. Kui vajad ligipääsu kõikidele meediafailidele, siis ava seadistused ning luba vastavad õigused.",
|
||||
"goToSystemSettings": "Ava süsteemi seadistused",
|
||||
"accessLimitedAssets": "Jätka piiratud ligipääsuga",
|
||||
"accessiblePathName": "Kasutatavad failid",
|
||||
"sTypeAudioLabel": "Heli",
|
||||
"sTypeImageLabel": "Pilt",
|
||||
"sTypeVideoLabel": "Video",
|
||||
"sTypeOtherLabel": "Muu meedia",
|
||||
"sActionPlayHint": "esita",
|
||||
"sActionPreviewHint": "eelvaade",
|
||||
"sActionSelectHint": "vali",
|
||||
"sActionSwitchPathLabel": "muuda asukohta",
|
||||
"sActionUseCameraHint": "kasuta kaamerat",
|
||||
"sNameDurationLabel": "kestus",
|
||||
"sUnitAssetCountLabel": "kogus"
|
||||
},
|
||||
"networkInterfacesPage": {
|
||||
"title": "Võrguliidesed",
|
||||
"preview": "Eelvaade",
|
||||
"whitelist": "Lubatud loend",
|
||||
"blacklist": "Keelatud loend",
|
||||
"info": "Vaikimisi kasutab LocalSend kõiki võrguliideseid. Kui sul on vaja, siis saad mittesoovitud võrgud siinkohal välistada ning muudatuste jõustumine eeldab serverikomponendi uuesti käivitamist."
|
||||
}
|
||||
}
|
||||
@@ -38,7 +38,8 @@
|
||||
"save": "Gorde",
|
||||
"unchanged": "Aldaketarik gabe",
|
||||
"unknown": "Ezezaguna",
|
||||
"noItemInClipboard": "Elementua ez dago arbeletan"
|
||||
"noItemInClipboard": "Arbela hutsik dago.",
|
||||
"quickSaveFromFavorites": "“Gogokoetan” gorde"
|
||||
},
|
||||
"receiveTab": {
|
||||
"title": "Eskuratu",
|
||||
@@ -46,6 +47,11 @@
|
||||
"ip": "IP:",
|
||||
"port": "Portua:",
|
||||
"alias": "Aliasa:"
|
||||
},
|
||||
"quickSave": {
|
||||
"off": "@:general.off",
|
||||
"on": "@:general.on",
|
||||
"favorites": "Gogokoak"
|
||||
}
|
||||
},
|
||||
"sendTab": {
|
||||
@@ -71,11 +77,12 @@
|
||||
"sendModes": {
|
||||
"single": "Hartzaile bakarra",
|
||||
"multiple": "Hartzaile anitz",
|
||||
"link": "Lotura elkarbanatu"
|
||||
"link": "URL bidez partekatu"
|
||||
},
|
||||
"sendModeHelp": "Azalpena",
|
||||
"help": "Ziurtatu zaitez aukeratutako hartzailea zure Wi-Fi sare berean dagoela.",
|
||||
"placeItems": "Aukeratu elkarbanatzeko elementuak."
|
||||
"placeItems": "Aukeratu elkarbanatzeko elementuak.",
|
||||
"manualSending": "Eskuzko bidalketa"
|
||||
},
|
||||
"settingsTab": {
|
||||
"title": "Ezarpenak",
|
||||
@@ -100,7 +107,9 @@
|
||||
"minimizeToTray": "Itxi: txikitu lehioa",
|
||||
"launchAtStartup": "Hasieratze automatikoa",
|
||||
"launchMinimized": "Hasieratze automatikoa: hasi txikituta",
|
||||
"animations": "Animazioak"
|
||||
"animations": "Animazioak",
|
||||
"saveWindowPlacementWindows": "Irteeran leihoaren kokapena gorde",
|
||||
"showInContextMenu": "Erakutsi LocalSend testuinguru menuan"
|
||||
},
|
||||
"receive": {
|
||||
"title": "Eskuratu",
|
||||
@@ -108,11 +117,13 @@
|
||||
"destination": "Hartzailea",
|
||||
"downloads": "(Deskargak)",
|
||||
"saveToGallery": "Gorde galerian",
|
||||
"saveToHistory": "Gorde historialean"
|
||||
"saveToHistory": "Gorde historialean",
|
||||
"quickSaveFromFavorites": "@:general.quickSaveFromFavorites",
|
||||
"autoFinish": "Automatikoki amaitu"
|
||||
},
|
||||
"network": {
|
||||
"title": "Gorria",
|
||||
"needRestart": "Berrabiarazi zerbitzaria aldaketak aplikatzeko.",
|
||||
"needRestart": "Berrabiarazi zerbitzaria aldaketak aplikatzeko!",
|
||||
"server": "Zerbitzaria",
|
||||
"alias": "Aliasa",
|
||||
"deviceType": "Gailu mota",
|
||||
@@ -121,9 +132,28 @@
|
||||
"portWarning": "Portu berezi bat erabiltzen ari zarenez, agian ez zara beste gailuentzat ikusgarri izango (Lehenetsitako portua: {defaultPort})",
|
||||
"encryption": "Zifratzea",
|
||||
"multicastGroup": "Multicast",
|
||||
"multicastGroupWarning": "Multicast helbide berezi bat erabiltzen ari zarenez, agian ez zara beste gailuentzat ikusgarri izango. (Lehenetsitako multicast helbidea: {defaultMulticast})"
|
||||
"multicastGroupWarning": "Multicast helbide berezi bat erabiltzen ari zarenez, agian ez zara beste gailuentzat ikusgarri izango. (Lehenetsitako multicast helbidea: {defaultMulticast})",
|
||||
"discoveryTimeout": "Aurkikuntza denbora muga",
|
||||
"useSystemName": "Erabili sistemaren izena",
|
||||
"generateRandomAlias": "Ausazko \"alias\" sortu",
|
||||
"networkOptions": {
|
||||
"all": "Guztiak",
|
||||
"filtered": "Iragazita"
|
||||
},
|
||||
"network": "Sarea"
|
||||
},
|
||||
"advancedSettings": "Ezarpen aurreratuak"
|
||||
"advancedSettings": "Ezarpen aurreratuak",
|
||||
"send": {
|
||||
"title": "Bidali",
|
||||
"shareViaLinkAutoAccept": "Eskaerak automatikoki onartu “URL bidez partekatu” moduan"
|
||||
},
|
||||
"other": {
|
||||
"title": "Besteak",
|
||||
"support": "LocalSend Lagundu",
|
||||
"donate": "Dohaintza egin",
|
||||
"privacyPolicy": "Pribatutasun politika",
|
||||
"termsOfUse": "Erabilera baldintzak"
|
||||
}
|
||||
},
|
||||
"troubleshootPage": {
|
||||
"title": "Konpondu arazoak",
|
||||
@@ -136,8 +166,12 @@
|
||||
"openFirewall": "Ireki Suhesia"
|
||||
},
|
||||
"noConnection": {
|
||||
"symptom": "Hartzaile eta bidaltzaileak ez dute elkar ikusten eta ezin diote fitxategiak elkarri bidali",
|
||||
"solution": "Bi aldeetan dago arazoa? Ziurtatu Wi-Fi sare berdinean kokatuta daudela eta konfigurazio bera elkarbanatzen dutela (portua, multicast helbidea, zifratua). Arazoa Wi-Fi sareak partaideen arteko konexioak mugatzea ere izan liteke. Horrela bada, routerrean aukera hau aktibatu"
|
||||
"symptom": "Hartzaile eta bidaltzaileak ez dute elkar ikusten eta ezin diote fitxategiak elkarri bidali.",
|
||||
"solution": "Bi aldeetan dago arazoa? Ziurtatu Wi-Fi sare berdinean kokatuta daudela eta konfigurazio bera elkarbanatzen dutela (portua, multicast helbidea, zifratua). Arazoa Wi-Fi sareak partaideen arteko konexioak mugatzea ere izan liteke. Horrela bada, routerrean aukera hau aktibatu."
|
||||
},
|
||||
"noDiscovery": {
|
||||
"symptom": "Gailu honek ezin ditu beste gailurik aurkitu.",
|
||||
"solution": "Ziurtatu gailu guztiak Wi-Fi sare berean daudela eta konfigurazio bera partekatzen dutela (atea, helbide multikasta, kodeketa). Helburuko gailuaren IP helbidea eskuz idatz dezakezu. Horrek balio badu, gehitu gailu hori gogokoetan, etorkizunean automatikoki aurkitu dadin."
|
||||
}
|
||||
},
|
||||
"receiveHistoryPage": {
|
||||
@@ -361,5 +395,11 @@
|
||||
"sActionUseCameraHint": "erabaili kamera",
|
||||
"sNameDurationLabel": "iraupena",
|
||||
"sUnitAssetCountLabel": "kontaketa"
|
||||
},
|
||||
"sanitization": {
|
||||
"invalid": "Fitxategiaren izena karaktere baliogabeak ditu"
|
||||
},
|
||||
"networkInterfacesPage": {
|
||||
"title": "Sare interfazeak"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,527 @@
|
||||
{
|
||||
"locale": "فارسی",
|
||||
"appName": "لوکالسِند",
|
||||
"general": {
|
||||
"accept": "پذیرفتن",
|
||||
"accepted": "پذیرفتهشده",
|
||||
"add": "افزودن",
|
||||
"advanced": "پیشرفته",
|
||||
"cancel": "ردکردن",
|
||||
"close": "بستن",
|
||||
"confirm": "پذیرفتن",
|
||||
"continueStr": "ادامه",
|
||||
"copy": "کپی",
|
||||
"copiedToClipboard": "کپی شد",
|
||||
"decline": "نپذیرفتن",
|
||||
"done": "انجام شد",
|
||||
"delete": "حذف",
|
||||
"edit": "ویرایش",
|
||||
"error": "خطا",
|
||||
"example": "نمونه",
|
||||
"files": "فایلها",
|
||||
"finished": "پایانیافت",
|
||||
"hide": "مخفی",
|
||||
"off": "خاموش",
|
||||
"offline": "آفلاین",
|
||||
"on": "روشن",
|
||||
"online": "آنلاین",
|
||||
"open": "باز کردن",
|
||||
"queue": "صف",
|
||||
"quickSave": "ذخیره سریع",
|
||||
"quickSaveFromFavorites": "ذخیره سریع برای \"موردعلاقهها\"",
|
||||
"renamed": "نام ویرایششد",
|
||||
"reset": "بازنشانی",
|
||||
"restart": "راهاندازی دوباره",
|
||||
"settings": "تنظیمات",
|
||||
"skipped": "رد شد",
|
||||
"start": "شروع",
|
||||
"stop": "توقف",
|
||||
"save": "ذخیره",
|
||||
"unchanged": "بدون تغییر",
|
||||
"unknown": "ناشناخته",
|
||||
"noItemInClipboard": "چیزی در کلیپبورد وجود ندارد."
|
||||
},
|
||||
"receiveTab": {
|
||||
"title": "دریافت",
|
||||
"infoBox": {
|
||||
"ip": "آیپی:",
|
||||
"port": "پورت:",
|
||||
"alias": "نام کوتاه:"
|
||||
},
|
||||
"quickSave": {
|
||||
"off": "@:general.off",
|
||||
"favorites": "موردعلاقهها",
|
||||
"on": "@:general.on"
|
||||
}
|
||||
},
|
||||
"sendTab": {
|
||||
"title": "ارسال",
|
||||
"selection": {
|
||||
"title": "انتخاب شدهها",
|
||||
"files": "فایلها: {files}",
|
||||
"size": "اندازه: {size}"
|
||||
},
|
||||
"picker": {
|
||||
"file": "فایل",
|
||||
"folder": "پوشه",
|
||||
"media": "رسانه",
|
||||
"text": "متن",
|
||||
"app": "برنامه",
|
||||
"clipboard": "کلیپبورد"
|
||||
},
|
||||
"shareIntentInfo": "همچنین میتوانید از ویژگی «همرسانی» دستگاه تلفنهمراه خود برای انتخاب آسانتر پروندهها استفاده کنید.",
|
||||
"nearbyDevices": "دستگاههای اطراف",
|
||||
"thisDevice": "این دستگاه",
|
||||
"scan": "جستجوی دستگاهها",
|
||||
"manualSending": "ارسال دستی",
|
||||
"sendMode": "حالت ارسال",
|
||||
"sendModes": {
|
||||
"single": "یک دریافت کننده",
|
||||
"multiple": "چندین دریافت کننده",
|
||||
"link": "اشتراک گذاری از طریق لینک"
|
||||
},
|
||||
"sendModeHelp": "توضیح",
|
||||
"help": "لطفاً مطمئن شوید که دستگاه مورد نظر به شبکه وایفای یکسانی وصل باشد.",
|
||||
"placeItems": "موارد را برای همرسانی قرار دهید."
|
||||
},
|
||||
"settingsTab": {
|
||||
"title": "تنظیمات",
|
||||
"general": {
|
||||
"title": "عمومی",
|
||||
"brightness": "ظاهر",
|
||||
"brightnessOptions": {
|
||||
"system": "سیستم",
|
||||
"dark": "تیره",
|
||||
"light": "روشن"
|
||||
},
|
||||
"color": "رنگ",
|
||||
"colorOptions": {
|
||||
"system": "سیستم",
|
||||
"oled": "OLED"
|
||||
},
|
||||
"language": "زبان",
|
||||
"languageOptions": {
|
||||
"system": "سیستم"
|
||||
},
|
||||
"saveWindowPlacement": "ذخیره موقعیت پنجره پس از خروج",
|
||||
"saveWindowPlacementWindows": "ذخیره موقعیت پنجره پس از خروج",
|
||||
"minimizeToTray": "خروج: ارسال برنامه به سیستم تری",
|
||||
"launchAtStartup": "شروع خودکار پس از ورود به سیستم",
|
||||
"launchMinimized": "شروع خودکار: شروع به صورت پنجره پنهان",
|
||||
"showInContextMenu": "نمایش لوکالسند در منوی زمینه",
|
||||
"animations": "انیمیشنها"
|
||||
},
|
||||
"receive": {
|
||||
"title": "دریافت",
|
||||
"quickSave": "@:general.quickSave",
|
||||
"quickSaveFromFavorites": "@:general.quickSaveFromFavorites",
|
||||
"requirePin": "@:webSharePage.requirePin",
|
||||
"autoFinish": "پایان خودکار",
|
||||
"destination": "مقصد",
|
||||
"downloads": "(دانلودها)",
|
||||
"saveToGallery": "ذخیره رسانه در گالری",
|
||||
"saveToHistory": "ذخیره در تاریخچه"
|
||||
},
|
||||
"send": {
|
||||
"title": "ارسال",
|
||||
"shareViaLinkAutoAccept": "اشتراکگذاری از طریق لینک: تایید خودکار"
|
||||
},
|
||||
"network": {
|
||||
"title": "شبکه",
|
||||
"needRestart": "برای اعمال تنظیمات، سرور را مجدد راهاندازی کنید!",
|
||||
"server": "سرور",
|
||||
"alias": "نام کوتاه",
|
||||
"deviceType": "نوع دستگاه",
|
||||
"deviceModel": "مدل دستگاه",
|
||||
"port": "پورت",
|
||||
"discoveryTimeout": "مدت کاوش",
|
||||
"useSystemName": "استفاده از نام سیستم",
|
||||
"generateRandomAlias": "ایجاد نام مستعار تصادفی",
|
||||
"portWarning": "ممکن است به دلیل استفاده از یک پورت سفارشی، دستگاههای دیگر شما را شناسایی نکنند (پیشفرض : {defaultPort})",
|
||||
"encryption": "رمزنگاری",
|
||||
"multicastGroup": "چندپخشی",
|
||||
"multicastGroupWarning": "ممکن است به دلیل استفاده از چندپخشی سفارشی، دستگاههای دیگر شما را شناسایی نکنند (پیشفرض: {defaultMulticast})",
|
||||
"network": "شبکه",
|
||||
"networkOptions": {
|
||||
"all": "همه",
|
||||
"filtered": "فیلتر شده"
|
||||
}
|
||||
},
|
||||
"other": {
|
||||
"title": "سایر",
|
||||
"support": "حمایت از لوکالسند",
|
||||
"donate": "کمک مالی",
|
||||
"privacyPolicy": "سیاست حفظ حریم خصوصی",
|
||||
"termsOfUse": "شرایط استفاده"
|
||||
},
|
||||
"advancedSettings": "تنظیمات پیشرفته"
|
||||
},
|
||||
"troubleshootPage": {
|
||||
"title": "عیب یابی",
|
||||
"subTitle": "این برنامه مطابق انتظار کار نمیکند؟ در اینجا میتوانید راه حلهای رایج را بیابید.",
|
||||
"solution": "راه حل:",
|
||||
"fixButton": "تعمیر خودکار",
|
||||
"firewall": {
|
||||
"symptom": "این برنامه میتواند پروندهها را به دستگاههای دیگر ارسال کند اما دستگاههای دیگر نمیتوانند پروندهها را به این دستگاه ارسال کنند.",
|
||||
"solution": "این مشکل به احتمال زیاد مربوط به تنظیمات فایروال است. شما میتوانید با دادن مجوز به اتصالات ورودی این مشکل را حل کنید (UDP و TCP) در پورت {port}.",
|
||||
"openFirewall": "بازکردن فایروال"
|
||||
},
|
||||
"noDiscovery": {
|
||||
"symptom": "این دستگاه نمیتواند دستگاههای دیگر را پیدا کند.",
|
||||
"solution": "مطمئن شوید که هر دو دستگاه به یک شبکه وایفای متصل هستند و پیکربندی یکسانی دارند (پورت، آدرس چندپخشی، رمزنگاری). سعی کنید آدرس آیپی دستگاه مورد نظر را به صورت دستی تایپ کنید. اگر جواب داد، این دستگاه را به موارد موردعلاقه اضافه کنید تا در آینده به طور خودکار کشف شود."
|
||||
},
|
||||
"noConnection": {
|
||||
"symptom": "هر دو دستگاه نمیتوانند یکدیگر را پیدا کرده و پروندهها را همرسانی کنند.",
|
||||
"solution": "آیا مشکل در هر دو طرف وجود دارد؟ اگر چنین است، باید مطمئن شوید که هر دو دستگاه در یک شبکه Wi-Fi متصل هستند و تنظیمات یکسانی دارند (پورت، آدرس چندپخشی، رمزگذاری). ممکن است شبکه Wi-Fi اجازهی ارتباط بین شرکتکنندگان را ندهد، به دلیل فعال بودن قابلیت ایزولهسازی نقطه دسترسی (AP Isolation). در این صورت باید این گزینه را در روتر غیرفعال کنید."
|
||||
}
|
||||
},
|
||||
"receiveHistoryPage": {
|
||||
"title": "تاریخچه",
|
||||
"openFolder": "باز کردن پوشه",
|
||||
"deleteHistory": "حذف تاریخچه",
|
||||
"empty": "تاریخچه خالی است.",
|
||||
"entryActions": {
|
||||
"open": "باز کردن فایل",
|
||||
"showInFolder": "نمایش پوشه",
|
||||
"info": "اطلاعات",
|
||||
"deleteFromHistory": "حذف از تاریخچه"
|
||||
}
|
||||
},
|
||||
"apkPickerPage": {
|
||||
"title": "برنامه (APK)",
|
||||
"excludeSystemApps": "شامل نشدن برنامههای سیستمی",
|
||||
"excludeAppsWithoutLaunchIntent": "شامل نشدن برنامههای غیر اجرایی",
|
||||
"apps": "{n} برنامه"
|
||||
},
|
||||
"selectedFilesPage": {
|
||||
"deleteAll": "حذف همه"
|
||||
},
|
||||
"receivePage": {
|
||||
"subTitle": {
|
||||
"one": "میخواهد برای شما یک فایل ارسال کند",
|
||||
"other": "میخواهد برای شما {n} فایل ارسال کند"
|
||||
},
|
||||
"subTitleMessage": "به شما پیام داد:",
|
||||
"subTitleLink": "برای شما یک لینک ارسال کرد:",
|
||||
"canceled": "فرستنده درخواست را لغو کرد."
|
||||
},
|
||||
"receiveOptionsPage": {
|
||||
"title": "گزینهها",
|
||||
"destination": "@:settingsTab.receive.destination",
|
||||
"appDirectory": "(پوشه لوکالسند)",
|
||||
"saveToGallery": "@:settingsTab.receive.saveToGallery",
|
||||
"saveToGalleryOff": "به دلیل وجود پوشهها به طور خودکار خاموش میشود."
|
||||
},
|
||||
"sendPage": {
|
||||
"waiting": "در انتظار پاسخ…",
|
||||
"rejected": "گیرنده درخواست را رد کرد.",
|
||||
"tooManyAttempts": "@:web.tooManyAttempts",
|
||||
"busy": "گیرنده با درخواست دیگری مشغول است."
|
||||
},
|
||||
"progressPage": {
|
||||
"titleSending": "ارسال فایلها",
|
||||
"titleReceiving": "دریافت فایلها",
|
||||
"savedToGallery": "در تصاویر ذخیره شد",
|
||||
"total": {
|
||||
"title": {
|
||||
"sending": "مجموع پیشرفت ({time})",
|
||||
"finishedError": "با خطا مواجه شد",
|
||||
"canceledSender": "توسط فرستنده لغو شد",
|
||||
"canceledReceiver": "توسط گیرنده لغو شد"
|
||||
},
|
||||
"count": "فایلها: {curr} / {n}",
|
||||
"size": "حجم: {curr} / {n}",
|
||||
"speed": "سرعت: {speed}/s"
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"title": "اشتراک گذاری از طریق لینک",
|
||||
"loading": "در حال راهاندازی سرور…",
|
||||
"stopping": "در حال توقف سرور…",
|
||||
"error": "هنگام راهاندازی سرور خطایی رخ داد.",
|
||||
"openLink": {
|
||||
"one": "باز کردن لینک در مرورگر:",
|
||||
"other": "باز کردن لینکها در مرورگر:"
|
||||
},
|
||||
"requests": "درخواستها",
|
||||
"noRequests": "هنوز درخواستی وجود ندارد.",
|
||||
"encryption": "@:settingsTab.network.encryption",
|
||||
"autoAccept": "درخواستها به طور خودکار پذیرفته میشوند",
|
||||
"requirePin": "نیاز به پین",
|
||||
"pinHint": "پین \"{pin}\" میباشد",
|
||||
"encryptionHint": "لوکالسند از یک گواهی خودامضا استفاده میکند. شما باید آن را در مرورگر قبول کنید.",
|
||||
"pendingRequests": "درخواستهای در حال انتظار: {n}"
|
||||
},
|
||||
"aboutPage": {
|
||||
"title": "درباره لوکالسند",
|
||||
"description": [
|
||||
"لوکالسند یک برنامه آزاد و متنباز است که به شما امکان میدهد پروندهها و پیامها را بهطور ایمن با دستگاههای اطراف از طریق شبکه محلی خود و بدون نیاز به اینترنت همرسانی کنید.",
|
||||
"این برنامه برای سیستم عاملهای اندروید، آی او اس، مک او اس، ویندوز و لینوکس در دسترس است. شما میتوانید با مراجعه به وبگاه رسمی برنامه کلیه روشهای دانلود را مشاهده نمایید."
|
||||
],
|
||||
"author": "نویسنده",
|
||||
"contributors": "مشارکت کنندگان",
|
||||
"packagers": "بستهبندیها",
|
||||
"translators": "مترجمان"
|
||||
},
|
||||
"donationPage": {
|
||||
"title": "کمک مالی",
|
||||
"info": "لوکالسند آزاد، متنباز و فاقد هرگونه تبلیغات است. اگر به این برنامه علاقهمندید، میتوانید با کمک مالی از توسعه آن حمایت کنید.",
|
||||
"donate": "کمک مالی {amount}",
|
||||
"thanks": "بسیار از شما سپاسگزاریم!",
|
||||
"restore": "بازیابی خرید"
|
||||
},
|
||||
"changelogPage": {
|
||||
"title": "تاریخچه تغییرات برنامه"
|
||||
},
|
||||
"aliasGenerator(ignoreMissing, ignoreGpt)": {
|
||||
"@info": "مناطق زبانی مختلف ممکن است واژههای متفاوتی داشته باشند، ممکن است تطابق 1:1 وجود نداشته باشد",
|
||||
"adjectives": [
|
||||
"ستودنی",
|
||||
"زیبا",
|
||||
"بزرگ",
|
||||
"درخشان",
|
||||
"تمیز",
|
||||
"باهوش",
|
||||
"باحال",
|
||||
"بامزه",
|
||||
"کلک",
|
||||
"مصمم",
|
||||
"باانرژی",
|
||||
"چابک",
|
||||
"شگفتانگیز",
|
||||
"سریع",
|
||||
"شایسته",
|
||||
"سرحال",
|
||||
"خوب",
|
||||
"دلنشین",
|
||||
"باشکوه",
|
||||
"خوشتیپ",
|
||||
"جذاب",
|
||||
"مهربون",
|
||||
"دوستداشتنی",
|
||||
"مبهم",
|
||||
"بینظیر",
|
||||
"باادب",
|
||||
"صبور",
|
||||
"زیبا",
|
||||
"نیرومند",
|
||||
"مایهدار",
|
||||
"اسرارآمیز",
|
||||
"باهوش",
|
||||
"سرسخت",
|
||||
"خاص",
|
||||
"خوشفکر",
|
||||
"قدرتمند",
|
||||
"منظم",
|
||||
"خردمند"
|
||||
],
|
||||
"fruits": [
|
||||
"سیب",
|
||||
"آووکادو",
|
||||
"موز",
|
||||
"توت",
|
||||
"بلوبری",
|
||||
"کلم",
|
||||
"هویج",
|
||||
"گیلاس",
|
||||
"نارگیل",
|
||||
"انگور",
|
||||
"لیمو",
|
||||
"کاهو",
|
||||
"انبه",
|
||||
"خربزه",
|
||||
"قارچ",
|
||||
"پیاز",
|
||||
"پرتقال",
|
||||
"پاپایا",
|
||||
"هلو",
|
||||
"گلابی",
|
||||
"آناناس",
|
||||
"سیبزمینی",
|
||||
"کدوتنبل",
|
||||
"تمشک",
|
||||
"توتفرنگی",
|
||||
"گوجه"
|
||||
],
|
||||
"combination": "{fruit} {adjective}",
|
||||
"@combination": "In some languages, the adjective must be last."
|
||||
},
|
||||
"dialogs": {
|
||||
"addFile": {
|
||||
"title": "افزودن به انتخاب شدهها",
|
||||
"content": "چه چیزی میخواهید اضافه کنید؟"
|
||||
},
|
||||
"openFile": {
|
||||
"title": "باز کردن فایل",
|
||||
"content": "آیا میخواهید فایل دریافتی را باز کنید؟"
|
||||
},
|
||||
"addressInput": {
|
||||
"title": "آدرس را وارد کنید",
|
||||
"hashtag": "هشتگ",
|
||||
"ip": "آدرس آیپی",
|
||||
"recentlyUsed": "اخیرا استفاده شده: "
|
||||
},
|
||||
"cancelSession": {
|
||||
"title": "لغو انتقال فایل",
|
||||
"content": "واقعاً میخواهید انتقال فایل را لغو کنید؟"
|
||||
},
|
||||
"cannotOpenFile": {
|
||||
"title": "نمیتواند فایل را باز کند",
|
||||
"content": "نمیتوان فایل \"{file}\" را باز کرد. آیا این فایل منتقل، تغییر نام یا حذف شده است؟"
|
||||
},
|
||||
"encryptionDisabledNotice": {
|
||||
"title": "رمزنگاری غیرفعال شد",
|
||||
"content": "اکنون ارتباط از طریق پروتکل HTTP رمزنگاری نشده صورت میگیرد. برای استفاده از HTTPS، رمزنگاری را دوباره فعال کنید."
|
||||
},
|
||||
"errorDialog": {
|
||||
"title": "@:general.error"
|
||||
},
|
||||
"favoriteDialog": {
|
||||
"title": "علاقهمندیها",
|
||||
"noFavorites": "هنوز دستگاه مورد علاقهای انتخاب نشده است.",
|
||||
"addFavorite": "افزودن"
|
||||
},
|
||||
"favoriteDeleteDialog": {
|
||||
"title": "حذف از علاقهمندیها",
|
||||
"content": "واقعاً میخواهید از علاقهمندیها حذف کنید \"{name}\"?"
|
||||
},
|
||||
"favoriteEditDialog": {
|
||||
"titleAdd": "افزودن به علاقهمندیها",
|
||||
"titleEdit": "تنظیمات",
|
||||
"name": "نام مستعار",
|
||||
"auto": "(خودکار)",
|
||||
"ip": "آدرس آی پی",
|
||||
"port": "پورت"
|
||||
},
|
||||
"fileInfo": {
|
||||
"title": "مشخصات فایل",
|
||||
"fileName": "نام فایل:",
|
||||
"path": "مسیر:",
|
||||
"size": "حجم:",
|
||||
"sender": "فرستنده:",
|
||||
"time": "زمان:"
|
||||
},
|
||||
"fileNameInput": {
|
||||
"title": "نام فایل را وارد کنید",
|
||||
"original": "اصلی: {original}"
|
||||
},
|
||||
"historyClearDialog": {
|
||||
"title": "پاکسازی تاریخچه",
|
||||
"content": "واقعاً میخواهید کل تاریخچه را حذف کنید؟"
|
||||
},
|
||||
"localNetworkUnauthorized": {
|
||||
"title": "@:dialogs.noPermission.title",
|
||||
"description": "لوکالسند نمیتواند دستگاههای دیگر را بدون داشتن مجوز اسکن شبکه محلی پیدا کند. لطفاً این مجوز را در تنظیمات به برنامه بدهید.",
|
||||
"gotoSettings": "تنظیمات"
|
||||
},
|
||||
"messageInput": {
|
||||
"title": "پیام را بنویسید",
|
||||
"multiline": "چند خطی"
|
||||
},
|
||||
"noFiles": {
|
||||
"title": "فایلی انتخاب نشده",
|
||||
"content": "لطفا حداقل یک پرونده را انتخاب کنید."
|
||||
},
|
||||
"noPermission": {
|
||||
"title": "بدون مجوز",
|
||||
"content": "شما مجوزهای مورد نیاز را اعطا نکردهاید. لطفاً آنها را در تنظیمات مجوزدهی کنید."
|
||||
},
|
||||
"notAvailableOnPlatform": {
|
||||
"title": "در دسترس نیست",
|
||||
"content": "این ویژگی فقط در دسترس است در:"
|
||||
},
|
||||
"qr": {
|
||||
"title": "QR کد"
|
||||
},
|
||||
"quickActions": {
|
||||
"title": "اقدامات سریع",
|
||||
"counter": "شمارنده",
|
||||
"prefix": "پیشوند",
|
||||
"padZero": "همگام سازی نامها با افزودن صفر",
|
||||
"sortBeforeCount": "از قبل بر اساس حروف الفبا مرتب کنید",
|
||||
"random": "تصادفی"
|
||||
},
|
||||
"quickSaveNotice": {
|
||||
"title": "@:general.quickSave",
|
||||
"content": "درخواستها به صورت خودکار پذیرفته میشوند. توجه داشته باشید که همه افراد در شبکه محلی میتوانند برای شما پرونده ارسال کنند."
|
||||
},
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"title": "@:general.quickSaveFromFavorites",
|
||||
"content": [
|
||||
"درخواستها به طور خودکار از دستگاههای موجود در فهرست موردعلاقهها پذیرفته میشود.",
|
||||
"هشدار: این روش در حال حاضر کاملاً ایمن نیست، زیرا در صورت دسترسی هکر به دستگاههای موجود در فهرست موردعلاقهها، میتواند بدون محدودیت برای شما پرونده ارسال کند.",
|
||||
"با این حال، این گزینه هنوز هم ایمنتر از اجازه دادن به همه کاربران در شبکه محلی برای ارسال پرونده بدون محدودیت است."
|
||||
]
|
||||
},
|
||||
"pin": {
|
||||
"title": "پین را وارد کنید"
|
||||
},
|
||||
"sendModeHelp": {
|
||||
"title": "حالتهای ارسال",
|
||||
"single": "پروندهها را به یک گیرنده ارسال میکند. فهرست انتخاب شدهها پس از اتمام انتقال پرونده پاک میشود.",
|
||||
"multiple": "پروندهها را برای چندین گیرنده ارسال میکند. فهرست انتخاب شدهها پاک نخواهد شد.",
|
||||
"link": "گیرندگانی که لوکالسند را نصب نکرده اند، میتوانند پروندهها را با باز کردن پیوند در مرورگر خود دانلود کنند."
|
||||
},
|
||||
"zoom": {
|
||||
"title": "آدرس اینترنتی"
|
||||
}
|
||||
},
|
||||
"sanitization": {
|
||||
"empty": "نام فایل نمیتواند خالی باشد",
|
||||
"invalid": "نام فایل حاوی کاراکترهای نامعتبر است"
|
||||
},
|
||||
"tray": {
|
||||
"@info": "Apple Guidelines are very strict about the 'close' wording.",
|
||||
"open": "@:general.open",
|
||||
"close": "خروج از لوکالسند",
|
||||
"closeWindows": "خروج"
|
||||
},
|
||||
"web": {
|
||||
"waiting": "@:sendPage.waiting",
|
||||
"enterPin": "پین را وارد کنید",
|
||||
"invalidPin": "پین اشتباه است",
|
||||
"tooManyAttempts": "تلاشهای بیش از اندازه",
|
||||
"rejected": "پذیرفته نشد",
|
||||
"files": "فایلها",
|
||||
"fileName": "نام فایل",
|
||||
"size": "حجم"
|
||||
},
|
||||
"assetPicker": {
|
||||
"@info": "Translations for the Media selection tool for Android and Iphone",
|
||||
"confirm": "تایید",
|
||||
"cancel": "لغو",
|
||||
"edit": "ویرایش",
|
||||
"gifIndicator": "GIF",
|
||||
"loadFailed": "بارگذاری ناموفق",
|
||||
"original": "اصلی",
|
||||
"preview": "پیش نمایش",
|
||||
"select": "انتخاب",
|
||||
"emptyList": "لیست خالی",
|
||||
"unSupportedAssetType": "نوع پرونده پشتیبانی نشده.",
|
||||
"unableToAccessAll": "قادر به دسترسی به تمام فایلهای موجود در دستگاه نیست",
|
||||
"viewingLimitedAssetsTip": "فقط پروندهها و آلبومهای قابل دسترسی برنامه را مشاهده کنید.",
|
||||
"changeAccessibleLimitedAssets": "برای بهروزرسانی فایلهای در دسترس کلیک کنید",
|
||||
"accessAllTip": "برنامه فقط میتواند به برخی از پروندههای دستگاه دسترسی داشته باشد. به تنظیمات سیستم بروید و به برنامه اجازه دهید به تمام رسانههای موجود در دستگاه دسترسی داشته باشد.",
|
||||
"goToSystemSettings": "رفتن به تنظیمات سیستم",
|
||||
"accessLimitedAssets": "با دسترسی محدود ادامه دهید",
|
||||
"accessiblePathName": "فایلهای قابل دسترسی",
|
||||
"sTypeAudioLabel": "صوت",
|
||||
"sTypeImageLabel": "تصویر",
|
||||
"sTypeVideoLabel": "ویدیو",
|
||||
"sTypeOtherLabel": "دیگر رسانهها",
|
||||
"sActionPlayHint": "پخش",
|
||||
"sActionPreviewHint": "پیش نمایش",
|
||||
"sActionSelectHint": "انتخاب",
|
||||
"sActionSwitchPathLabel": "تغییر مسیر",
|
||||
"sActionUseCameraHint": "از دوربین استفاده کنید",
|
||||
"sNameDurationLabel": "مدت زمان",
|
||||
"sUnitAssetCountLabel": "شمردن"
|
||||
},
|
||||
"networkInterfacesPage": {
|
||||
"title": "رابطهای شبکه",
|
||||
"info": "به طور پیش فرض، LocalSend از تمام رابط های شبکه موجود استفاده می کند. در اینجا می توانید شبکه های ناخواسته را حذف کنید. برای اعمال تغییرات باید سرور را ریستارت کنید.",
|
||||
"preview": "پیشنمایش",
|
||||
"whitelist": "لیست سفید",
|
||||
"blacklist": "لیست سیاه"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,542 @@
|
||||
{
|
||||
"locale": "Finnish",
|
||||
"appName": "LocalSend",
|
||||
"general": {
|
||||
"accept": "Hyväksy",
|
||||
"accepted": "Hyväksytty",
|
||||
"add": "Lisää",
|
||||
"advanced": "Edistynyt",
|
||||
"cancel": "Peruuta",
|
||||
"close": "Sulje",
|
||||
"confirm": "Vahvista",
|
||||
"continueStr": "Jatka",
|
||||
"copy": "Kopioi",
|
||||
"copiedToClipboard": "Kopioitu leikepöydälle",
|
||||
"decline": "Hylkää",
|
||||
"done": "Valmis",
|
||||
"delete": "Poista",
|
||||
"edit": "Muokkaa",
|
||||
"error": "Virhe",
|
||||
"example": "Esimerkki",
|
||||
"files": "Tiedostot",
|
||||
"finished": "Valmis",
|
||||
"hide": "Piilota",
|
||||
"off": "Pois",
|
||||
"offline": "Offline",
|
||||
"on": "Päällä",
|
||||
"online": "Online",
|
||||
"open": "Avaa",
|
||||
"queue": "Jono",
|
||||
"quickSave": "Pikatallennus",
|
||||
"quickSaveFromFavorites": "Pikatallennus suosikeiksi",
|
||||
"renamed": "Nimetty uudelleen",
|
||||
"reset": "Nollaa",
|
||||
"restart": "Käynnistä uudelleen",
|
||||
"settings": "Asetukset",
|
||||
"skipped": "Ohitettu",
|
||||
"start": "Aloita",
|
||||
"stop": "Pysäytä",
|
||||
"save": "Tallenna",
|
||||
"unchanged": "Muuttumaton",
|
||||
"unknown": "Tuntematon",
|
||||
"noItemInClipboard": "Leikepöydällä ei ole mitään."
|
||||
},
|
||||
"receiveTab": {
|
||||
"title": "Ota vastaan",
|
||||
"infoBox": {
|
||||
"ip": "IP-osoite:",
|
||||
"port": "Portti:",
|
||||
"alias": "Laitteen nimi:"
|
||||
},
|
||||
"quickSave": {
|
||||
"favorites": "Suosikit",
|
||||
"off": "@:general.off",
|
||||
"on": "@:general.on"
|
||||
}
|
||||
},
|
||||
"sendTab": {
|
||||
"title": "Lähetä",
|
||||
"selection": {
|
||||
"title": "Valinta",
|
||||
"files": "Tiedostot: {files}",
|
||||
"size": "Koko: {size}"
|
||||
},
|
||||
"picker": {
|
||||
"file": "Tiedosto",
|
||||
"folder": "Kansio",
|
||||
"media": "Media",
|
||||
"text": "Teksti",
|
||||
"app": "Sovellus",
|
||||
"clipboard": "Liitä"
|
||||
},
|
||||
"shareIntentInfo": "Sinä voit myös käyttää laitteesi \"Jaa\"-toimintoa valitaksesi tiedostoja helpommin.",
|
||||
"nearbyDevices": "Lähellä olevat laitteet",
|
||||
"thisDevice": "Tämä laite",
|
||||
"scan": "Etsi laitteita",
|
||||
"manualSending": "Manuaalinen lähetys",
|
||||
"sendMode": "Lähetystapa",
|
||||
"sendModes": {
|
||||
"single": "Yksi vastaanottaja",
|
||||
"multiple": "Monta vastaanottajaa",
|
||||
"link": "Jaa linkillä"
|
||||
},
|
||||
"sendModeHelp": "Selitys",
|
||||
"help": "Varmista, että haluttu kohde on myös samassa Wi-Fi-verkossa.",
|
||||
"placeItems": "Lisää tiedostot tähän, jotta voit lähettää ne."
|
||||
},
|
||||
"settingsTab": {
|
||||
"title": "Asetukset",
|
||||
"general": {
|
||||
"title": "Yleinen",
|
||||
"brightness": "Teema",
|
||||
"brightnessOptions": {
|
||||
"system": "Järjestelmä",
|
||||
"dark": "Tumma",
|
||||
"light": "Vaalea"
|
||||
},
|
||||
"color": "Väri",
|
||||
"colorOptions": {
|
||||
"system": "Järjestelmä",
|
||||
"oled": "OLED"
|
||||
},
|
||||
"language": "Kieli",
|
||||
"languageOptions": {
|
||||
"system": "Järjestelmä"
|
||||
},
|
||||
"saveWindowPlacement": "Poistu: Tallenna ikkunan sijainti",
|
||||
"saveWindowPlacementWindows": "Tallenna ikkunan sijainti poistumisen jälkeen",
|
||||
"minimizeToTray": "Poistu: Minimoi ilmoitusalueelle",
|
||||
"launchAtStartup": "Automaattinen käynnistys",
|
||||
"launchMinimized": "Automaattinen käynnistys: Käynnistä piiilotettuna",
|
||||
"showInContextMenu": "Näytä LocalSend kontekstivalikossa",
|
||||
"animations": "Animaatiot"
|
||||
},
|
||||
"receive": {
|
||||
"title": "Vastaanotto",
|
||||
"quickSave": "Automaattinen tallennus",
|
||||
"autoFinish": "Automaattinen lopetus",
|
||||
"destination": "Kohde",
|
||||
"downloads": "(Lataukset)",
|
||||
"saveToGallery": "Tallenna media galleriaan",
|
||||
"saveToHistory": "Tallenna historiaan",
|
||||
"quickSaveFromFavorites": "Automaattinen tallennus suosikeista",
|
||||
"requirePin": "Kiinnitä"
|
||||
},
|
||||
"send": {
|
||||
"title": "Lähetys",
|
||||
"shareViaLinkAutoAccept": "Jaa linkki: Hyväksy automaattisesti"
|
||||
},
|
||||
"network": {
|
||||
"title": "Verkko",
|
||||
"needRestart": "Käynnistä LocalSend uudelleen saadaksesi muutokset käyttöön!",
|
||||
"server": "Palvelin",
|
||||
"alias": "Laitteen nimi",
|
||||
"deviceType": "Laitteen tyyppi",
|
||||
"deviceModel": "Laitteen malli",
|
||||
"port": "Portti",
|
||||
"discoveryTimeout": "Laitteiden etsintäaika",
|
||||
"useSystemName": "Käytä järjestelmän nimeä",
|
||||
"generateRandomAlias": "Luo satunnainen alias",
|
||||
"portWarning": "Sinua ei ehkä havaita muiden laitteiden toimesta, koska käytät mukautettua porttia. (oletus: {defaultPort})",
|
||||
"encryption": "Salaus",
|
||||
"multicastGroup": "Multicast",
|
||||
"multicastGroupWarning": "Sinua ei ehkä havaita muiden laitteiden toimesta, koska käytät mukautettua multicast-osoitetta. (oletus: {defaultMulticast})",
|
||||
"networkOptions": {
|
||||
"all": "Kaikki",
|
||||
"filtered": "Suodatettu"
|
||||
},
|
||||
"network": "Verkko"
|
||||
},
|
||||
"other": {
|
||||
"title": "Muut",
|
||||
"support": "Tue LocalSendia",
|
||||
"donate": "Lahjoita",
|
||||
"privacyPolicy": "Tietosuojakäytäntö",
|
||||
"termsOfUse": "Käyttöehdot"
|
||||
},
|
||||
"advancedSettings": "Edistyneet asetukset"
|
||||
},
|
||||
"troubleshootPage": {
|
||||
"title": "Ongelmanratkaisu",
|
||||
"subTitle": "Eikö sovellus toimi odotetusti? Täältä löydät joitain yleisiä ratkaisuja.",
|
||||
"solution": "Ratkaisu:",
|
||||
"fixButton": "Automaattinen korjaus",
|
||||
"firewall": {
|
||||
"symptom": "Tämä sovellus voi lähettää tiedostoja muihin laitteisiin, mutta muut laitteet eivät voi lähettää tiedostoja tähän laitteeseen.",
|
||||
"solution": "Tämä on todennäköisesti palomuuriongelma. Voit ratkaista tämän sallimalla saapuvat yhteydet (UDP ja TCP) porttiin {port}.",
|
||||
"openFirewall": "Avaa palomuuri"
|
||||
},
|
||||
"noDiscovery": {
|
||||
"symptom": "Tämä laite ei pysty löytämään muita laitteita.",
|
||||
"solution": "Varmista, että kaikki laitteet ovat samassa Wi-Fi-verkossa ja jakavat saman kokoonpanon (portti, monilähetysosoite, salaus). Voit yrittää kirjoittaa kohdelaitteen IP-osoitteen manuaalisesti. Jos tämä toimii, harkitse tämän laitteen lisäämistä suosikkeihin, jotta se voidaan löytää automaattisesti tulevaisuudessa."
|
||||
},
|
||||
"noConnection": {
|
||||
"symptom": "Molemmat laitteet eivät voi löytää toisiaan eivätkä jakaa tiedostoja.",
|
||||
"solution": "Onko ongelma olemassa molemmin puolin? Jos on, sinun on varmistettava, että molemmat laitteet ovat samassa Wi-Fi-verkossa ja jakavat saman kokoonpanon (portti, multicast-osoite, salaus). Verkko ei ehkä salli viestintää osallistujien välillä. Tässä tapauksessa tämä vaihtoehto on otettava käyttöön reitittimessä."
|
||||
}
|
||||
},
|
||||
"receiveHistoryPage": {
|
||||
"title": "Historia",
|
||||
"openFolder": "Avaa kansio",
|
||||
"deleteHistory": "Tyhjennä historia",
|
||||
"empty": "Historia on tyhjä.",
|
||||
"entryActions": {
|
||||
"open": "Avaa tiedosto",
|
||||
"showInFolder": "Näytä kansiossa",
|
||||
"info": "Tiedot",
|
||||
"deleteFromHistory": "Poista historiasta"
|
||||
}
|
||||
},
|
||||
"apkPickerPage": {
|
||||
"title": "Sovellukset (APK)",
|
||||
"excludeSystemApps": "lukuun ottamatta järjestelmäsovelluksia",
|
||||
"excludeAppsWithoutLaunchIntent": "lukuun ottamatta sovelluksia, joilla ei ole käynnistysintentiota",
|
||||
"apps": "{n} sovellusta"
|
||||
},
|
||||
"selectedFilesPage": {
|
||||
"deleteAll": "Poista kaikki"
|
||||
},
|
||||
"receivePage": {
|
||||
"subTitle": {
|
||||
"one": "on lähettämässä sinulle tiedostoa",
|
||||
"other": "on lähettämässä sinulle {n} tiedostoa"
|
||||
},
|
||||
"subTitleMessage": "lähetti sinulle viestin:",
|
||||
"subTitleLink": "lähetti sinulle linkin:",
|
||||
"canceled": "Lähettäjä on peruuttanut pyynnön."
|
||||
},
|
||||
"receiveOptionsPage": {
|
||||
"title": "Asetukset",
|
||||
"destination": "Vastaanottoasetukset",
|
||||
"appDirectory": "(LocalSend-kansio)",
|
||||
"saveToGallery": "Tallenna galleriaan",
|
||||
"saveToGalleryOff": "Poistettu käytöstä automaattisesti, koska lähetetyissä tiedostoissa on kansioita."
|
||||
},
|
||||
"sendPage": {
|
||||
"waiting": "Odotetaan vastausta...",
|
||||
"rejected": "Vastaanottaja on peruuttanut pyynnön.",
|
||||
"busy": "Vastaanottaja vastaanottaa toista pyyntöä.",
|
||||
"tooManyAttempts": "Liian monta yritystä"
|
||||
},
|
||||
"progressPage": {
|
||||
"titleSending": "Tiedostojen lähetys",
|
||||
"titleReceiving": "Tiedostojen vastaanotto",
|
||||
"savedToGallery": "Tallennettu Kuvat-kansioon",
|
||||
"total": {
|
||||
"title": {
|
||||
"sending": "Lähetysprosessi ({time})",
|
||||
"finishedError": "Päättynyt virheellä",
|
||||
"canceledSender": "Lähettäjä peruutti",
|
||||
"canceledReceiver": "Vastaanottaja peruutti"
|
||||
},
|
||||
"count": "Tiedostot: {curr} / {n}",
|
||||
"size": "Koko: {curr} / {n}",
|
||||
"speed": "Nopeus: {speed}/s"
|
||||
},
|
||||
"remainingTime": {
|
||||
"seconds": "{n}:{ss}",
|
||||
"minutes": "{n}:{ss}",
|
||||
"hours": "{h}t {m}m",
|
||||
"days": "{d}pv {h}t {m}m",
|
||||
"@hours": "Käytä 'h' tuntien lyhenteenä ja 'm' minuuttien",
|
||||
"@days": "Käytä 'pv' päiville, 'h' tunneille ja 'm' minuuteille"
|
||||
}
|
||||
},
|
||||
"webSharePage": {
|
||||
"title": "Jaa linkin kautta",
|
||||
"loading": "Käynnistetään palvelinta…",
|
||||
"stopping": "Pysäytetään palvelinta…",
|
||||
"error": "Palvelimen käynnistyksessä tapahtui virhe.",
|
||||
"openLink": {
|
||||
"one": "Avaa tämä linkki selaimessasi:",
|
||||
"other": "Avaa jokin näistä linkeistä selaimessasi:"
|
||||
},
|
||||
"requests": "Pyynnöt",
|
||||
"noRequests": "Ei pyyntöjä vielä.",
|
||||
"encryption": "Verkon salaus",
|
||||
"autoAccept": "Hyväksy pyynnöt automaattisesti",
|
||||
"requirePin": "Vaadi PIN-koodi",
|
||||
"pinHint": "PIN-koodi on \"{pin}\"",
|
||||
"encryptionHint": "LocalSend käyttää itse allekirjoitettua sertifikaattia. Sinun on hyväksyttävä se selaimessasi.",
|
||||
"pendingRequests": "Odottavat pyynnöt: {n}"
|
||||
},
|
||||
"aboutPage": {
|
||||
"title": "Tietoja LocalSendista",
|
||||
"description": [
|
||||
"LocalSend on ilmainen, avoimen lähdekoodin sovellus, jonka avulla voit turvallisesti jakaa tiedostoja ja lähettää viestejä läheisten laitteiden kanssa paikallisessa verkossasi ilman internet-yhteyttä.",
|
||||
"LocalSend on saatavilla Androidille, iOS:lle, Linuxille, macOS:lle ja Windowsille. Kaikki latausvaihtoehdot löytyvät virallisilta kotisivuilta."
|
||||
],
|
||||
"author": "Tekijä",
|
||||
"contributors": "Avustajat",
|
||||
"packagers": "Pakkaajat",
|
||||
"translators": "Kääntäjät"
|
||||
},
|
||||
"donationPage": {
|
||||
"title": "Lahjoita",
|
||||
"info": "LocalSend on ilmainen, avoimen lähdekoodin sovellus ilman mainoksia. Voit tukea projektia lahjoituksella, jos pidät sovelluksesta.",
|
||||
"donate": "Lahjoita {amount}",
|
||||
"thanks": "Suuret kiitokset!",
|
||||
"restore": "Palauta ostos"
|
||||
},
|
||||
"changelogPage": {
|
||||
"title": "Muutosloki"
|
||||
},
|
||||
"aliasGenerator(ignoreMissing, ignoreGpt)": {
|
||||
"@info": "Eri sijainneissa voi olla käytössä eri sanoja. Ne eivät täsmää toisiaan tasantarkkaan.",
|
||||
"adjectives": [
|
||||
"Stydi",
|
||||
"Jämä",
|
||||
"Raju",
|
||||
"Makee",
|
||||
"Siisti",
|
||||
"Kummallinen",
|
||||
"Hurja",
|
||||
"Hörisevä",
|
||||
"Naurava",
|
||||
"Suriseva",
|
||||
"Pöhelö",
|
||||
"Hölmö",
|
||||
"Spede",
|
||||
"Kummallinen",
|
||||
"Rampainen",
|
||||
"Jonne",
|
||||
"Lössi",
|
||||
"Kuuli",
|
||||
"Aukiva",
|
||||
"Lutsi",
|
||||
"Wallahi",
|
||||
"Pummi",
|
||||
"Köyhä",
|
||||
"Saunassa käyvä",
|
||||
"Bulkki",
|
||||
"Chilli",
|
||||
"Dokkaava",
|
||||
"Känni",
|
||||
"Broidi",
|
||||
"Kundi",
|
||||
"Göntsä",
|
||||
"Pelleilevä",
|
||||
"Haiseva",
|
||||
"Hakkeri"
|
||||
],
|
||||
"fruits": [
|
||||
"Omena",
|
||||
"Banaani",
|
||||
"Appelsiini",
|
||||
"Mango",
|
||||
"Päärynä",
|
||||
"Kiivi",
|
||||
"Kirsikka",
|
||||
"Vadelma",
|
||||
"Mustikka",
|
||||
"Mansikka",
|
||||
"Luumu",
|
||||
"Persikka",
|
||||
"Punaherukka",
|
||||
"Mustaherukka",
|
||||
"Karhunvatukka",
|
||||
"Vesimeloni",
|
||||
"Hedelmä",
|
||||
"Päärynä",
|
||||
"Pihlajanmarja",
|
||||
"Karpalo",
|
||||
"Puolukka",
|
||||
"Lakka",
|
||||
"Kuusenkerkkä",
|
||||
"Kataja",
|
||||
"Kuusama",
|
||||
"Ananas",
|
||||
"Granaattiomena",
|
||||
"Sitruuna",
|
||||
"Lime",
|
||||
"Papaija",
|
||||
"Passionhedelmä",
|
||||
"Pomelo",
|
||||
"Kiinalainen karviainen",
|
||||
"Lychee",
|
||||
"Taateli",
|
||||
"Viikuna",
|
||||
"Rypäle"
|
||||
],
|
||||
"combination": "{adjective} {fruit}",
|
||||
"@combination": "In some languages, the adjective must be last."
|
||||
},
|
||||
"dialogs": {
|
||||
"addFile": {
|
||||
"title": "Lisää valintaan",
|
||||
"content": "Mitä haluat lisätä?"
|
||||
},
|
||||
"openFile": {
|
||||
"title": "Avaa tiedosto",
|
||||
"content": "Haluatko avata vastaanotetun tiedoston?"
|
||||
},
|
||||
"addressInput": {
|
||||
"title": "Anna osoite",
|
||||
"hashtag": "Hashtag",
|
||||
"ip": "IP-osoite",
|
||||
"recentlyUsed": "Äskettäin käytetty: "
|
||||
},
|
||||
"cancelSession": {
|
||||
"title": "Peruuta tiedostonsiirto",
|
||||
"content": "Haluatko varmasti peruuttaa tiedostonsiirron?"
|
||||
},
|
||||
"cannotOpenFile": {
|
||||
"title": "Tiedostoa ei voi avata",
|
||||
"content": "Tiedostoa \"{file}\" ei voitu avata. Onko tämä tiedosto siirretty, nimetty uudelleen tai poistettu?"
|
||||
},
|
||||
"encryptionDisabledNotice": {
|
||||
"title": "Salaus poistettu käytöstä",
|
||||
"content": "Viestintä tapahtuu nyt salaamattoman HTTP-protokollan kautta. Jos haluat käyttää HTTPS:ää, ota salaus uudelleen käyttöön."
|
||||
},
|
||||
"errorDialog": {
|
||||
"title": "@:general.error"
|
||||
},
|
||||
"favoriteDialog": {
|
||||
"title": "Suosikit",
|
||||
"noFavorites": "Ei suosikkilaitteita vielä.",
|
||||
"addFavorite": "Lisää"
|
||||
},
|
||||
"favoriteDeleteDialog": {
|
||||
"title": "Poista suosikeista",
|
||||
"content": "Haluatko varmasti poistaa suosikeista \"{name}\"?"
|
||||
},
|
||||
"favoriteEditDialog": {
|
||||
"titleAdd": "Lisää suosikkeihin",
|
||||
"titleEdit": "Asetukset",
|
||||
"name": "Laitteen nimi",
|
||||
"auto": "(automaattinen)",
|
||||
"ip": "IP-osoite",
|
||||
"port": "Portti"
|
||||
},
|
||||
"fileInfo": {
|
||||
"title": "Tiedoston tiedot",
|
||||
"fileName": "Tiedoston nimi:",
|
||||
"path": "Polku:",
|
||||
"size": "Koko:",
|
||||
"sender": "Lähettäjä:",
|
||||
"time": "Aika:"
|
||||
},
|
||||
"fileNameInput": {
|
||||
"title": "Anna tiedoston nimi",
|
||||
"original": "Alkuperäinen: {original}"
|
||||
},
|
||||
"historyClearDialog": {
|
||||
"title": "Tyhjennä historia",
|
||||
"content": "Haluatko varmasti poistaa koko historian?"
|
||||
},
|
||||
"localNetworkUnauthorized": {
|
||||
"title": "@:dialogs.noPermission.title",
|
||||
"description": "LocalSend ei löydä muita laitteita ilman lupaa skannata paikallisverkkoa. Anna tämä lupa asetuksissa.",
|
||||
"gotoSettings": "Asetukset"
|
||||
},
|
||||
"messageInput": {
|
||||
"title": "Kirjoita viesti",
|
||||
"multiline": "Monirivinen"
|
||||
},
|
||||
"noFiles": {
|
||||
"title": "Ei tiedostoa valittuna",
|
||||
"content": "Valitse vähintään yksi tiedosto."
|
||||
},
|
||||
"noPermission": {
|
||||
"title": "Ei oikeuksia",
|
||||
"content": "Et ole myöntänyt tarvittavia oikeuksia. Myönnä ne asetuksissa."
|
||||
},
|
||||
"notAvailableOnPlatform": {
|
||||
"title": "Ei saatavilla",
|
||||
"content": "Tämä ominaisuus on saatavilla vain:"
|
||||
},
|
||||
"qr": {
|
||||
"title": "QR-koodi"
|
||||
},
|
||||
"quickActions": {
|
||||
"title": "Pikatoiminnot",
|
||||
"counter": "Laskuri",
|
||||
"prefix": "Etuliite",
|
||||
"padZero": "Täytä nollilla",
|
||||
"sortBeforeCount": "Lajittele aakkosjärjestykseen ennen laskentaa",
|
||||
"random": "Satunnainen"
|
||||
},
|
||||
"quickSaveNotice": {
|
||||
"title": "Pikatallennus",
|
||||
"content": "Tiedostopyynnöt hyväksytään automaattisesti. Huomaa, että kuka tahansa paikallisverkossa voi lähettää sinulle tiedostoja."
|
||||
},
|
||||
"quickSaveFromFavoritesNotice": {
|
||||
"content": [
|
||||
"Tiedostopyynnöt hyväksytään nyt automaattisesti suosikkiluettelossasi olevilta laitteilta.",
|
||||
"Varoitus! Tällä hetkellä tämä ei ole täysin turvallista, koska hakkeri, jolla on minkä tahansa suosikkiluettelosi laitteen sormenjälki, voi lähettää sinulle tiedostoja ilman rajoituksia.",
|
||||
"Tämä vaihtoehto on kuitenkin turvallisempi kuin sallia kaikkien paikallisverkon käyttäjien lähettää sinulle tiedostoja ilman rajoituksia."
|
||||
],
|
||||
"title": "@:general.quickSaveFromFavorites"
|
||||
},
|
||||
"pin": {
|
||||
"title": "Syötä PIN-koodi"
|
||||
},
|
||||
"sendModeHelp": {
|
||||
"title": "Lähetystilat",
|
||||
"single": "Lähettää tiedostoja yhdelle vastaanottajalle. Valinta tyhjennetään tiedostonsiirron päätyttyä.",
|
||||
"multiple": "Lähettää tiedostoja useille vastaanottajille. Valinta ei tyhjene.",
|
||||
"link": "Vastaanottajat, joilla ei ole LocalSendia asennettuna, voivat ladata valitut tiedostot avaamalla linkin selaimessaan."
|
||||
},
|
||||
"zoom": {
|
||||
"title": "URL"
|
||||
}
|
||||
},
|
||||
"sanitization": {
|
||||
"empty": "Tiedostonimi ei voi olla tyhjä",
|
||||
"invalid": "Tiedostonimi sisältää kiellettyjä merkkejä"
|
||||
},
|
||||
"tray": {
|
||||
"@info": "Applen ohjeistukset ovat hyvin tiukat 'sulje'-sanan käytöstä.",
|
||||
"open": "Avaa",
|
||||
"close": "Lopeta LocalSend",
|
||||
"closeWindows": "Poistu"
|
||||
},
|
||||
"web": {
|
||||
"waiting": "Odotetaan vastausta...",
|
||||
"enterPin": "Syötä PIN-koodi",
|
||||
"invalidPin": "Virheellinen PIN-koodi",
|
||||
"tooManyAttempts": "Liian monta yritystä",
|
||||
"rejected": "Hylätty",
|
||||
"files": "Tiedostot",
|
||||
"fileName": "Tiedoston nimi",
|
||||
"size": "Koko"
|
||||
},
|
||||
"assetPicker": {
|
||||
"@info": "Translations for the Media selection tool for Android and Iphone",
|
||||
"confirm": "Vahvista",
|
||||
"cancel": "Peruuta",
|
||||
"edit": "Muokkaa",
|
||||
"gifIndicator": "GIF",
|
||||
"loadFailed": "Lataus epäonnistui",
|
||||
"original": "Alkuperäinen",
|
||||
"preview": "Esikatselu",
|
||||
"select": "Valitse",
|
||||
"emptyList": "Tyhjä lista",
|
||||
"unSupportedAssetType": "Tiedostotyyppiä ei tueta.",
|
||||
"unableToAccessAll": "Kaikkien tiedostojen käyttö laitteella ei onnistu",
|
||||
"viewingLimitedAssetsTip": "Näytä vain sovelluksen käyttöön saatavilla olevat tiedostot ja albumit.",
|
||||
"changeAccessibleLimitedAssets": "Päivitä käytettävissä olevat tiedostot napsauttamalla",
|
||||
"accessAllTip": "Sovellus pääsee käsiksi vain osaan laitteen tiedostoista. Siirry järjestelmäasetuksiin ja salli sovelluksen pääsy kaikkiin laitteen mediaan.",
|
||||
"goToSystemSettings": "Siirry järjestelmäasetuksiin",
|
||||
"accessLimitedAssets": "Jatka rajoitetulla pääsyllä",
|
||||
"accessiblePathName": "Käytettävissä olevat tiedostot",
|
||||
"sTypeAudioLabel": "Ääni",
|
||||
"sTypeImageLabel": "Kuva",
|
||||
"sTypeVideoLabel": "Video",
|
||||
"sTypeOtherLabel": "Muut mediat",
|
||||
"sActionPlayHint": "toista",
|
||||
"sActionPreviewHint": "esikatsele",
|
||||
"sActionSelectHint": "valitse",
|
||||
"sActionSwitchPathLabel": "vaihda polkua",
|
||||
"sActionUseCameraHint": "käytä kameraa",
|
||||
"sNameDurationLabel": "kesto",
|
||||
"sUnitAssetCountLabel": "määrä"
|
||||
},
|
||||
"networkInterfacesPage": {
|
||||
"title": "Verkkokäyttöliittymät",
|
||||
"info": "Oletuksena LocalSend käyttää kaikkia saatavilla olevia verkkoliitäntöjä. Voit sulkea pois verkkoliitännät, joita et halua. Sinun tulee uudelleenkäynnistää LocalSend ottaaksesi muutokset käyttöön.",
|
||||
"preview": "Esikatselu",
|
||||
"whitelist": "Sallittujen lista",
|
||||
"blacklist": "Estettyjen lista"
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user