Compare commits
1240 Commits
v0.2.2
...
245b6384be
| Author | SHA1 | Date | |
|---|---|---|---|
| 245b6384be | |||
| 119ac4c350 | |||
| 2a7308147a | |||
| ed36e93fbb | |||
| f400ba46ae | |||
| 738b447103 | |||
| d25e79d46e | |||
| d347c6f2a9 | |||
| ef9b29db4f | |||
| 0003eed64d | |||
| da20e1e9ab | |||
| 3ea85b4094 | |||
| 10c0a18b41 | |||
| 6d6007cd32 | |||
| 6ec1365aec | |||
| f918d56aa7 | |||
| 2ed9da8c1a | |||
| 0e78d851cf | |||
| a62a4e0da1 | |||
| 3f9ae41f2c | |||
| 673a6717c4 | |||
| 85b987db90 | |||
| ddf419da92 | |||
| bd929b24e5 | |||
| 9c5a8fd499 | |||
| d6a9dfb086 | |||
| c3b66b3b3a | |||
| a006fd7fc6 | |||
| d1c44ae6e3 | |||
| fd9842b1af | |||
|
|
b2d0ef530e | ||
|
|
abe5107636 | ||
|
|
7970f1ed73 | ||
|
|
dc4f6541f5 | ||
| 3d619b323e | |||
| 30a930ebbf | |||
| 79bebe9270 | |||
| d3d5a62187 | |||
| 2d818f2b4e | |||
| 763070a60d | |||
| 48ca46385d | |||
| 848d6524d5 | |||
| 1a415b9c97 | |||
| 1678466ec4 | |||
| bc35a36510 | |||
| f0807c9841 | |||
| 9ea5d41096 | |||
| 628a03dce7 | |||
| c58e9ab47c | |||
| d90657d3a8 | |||
| 81e1a10079 | |||
| a5b7c920e3 | |||
| 4dc2cc4c9c | |||
| edc765f088 | |||
| 7e3dde6c40 | |||
| a5ab14302b | |||
| 92c171e967 | |||
| c50b436a29 | |||
| acac9eac60 | |||
| 3467ef9227 | |||
| b601c88519 | |||
| 407c84afec | |||
| a8acfa6870 | |||
| 0a4af03e20 | |||
| 5dfe080328 | |||
| 4c2e2f0da9 | |||
| e55a8c327c | |||
| c49228b37f | |||
| 2f109f04c8 | |||
| d63cbdf0c0 | |||
| 6451bb9b4b | |||
| 2f677128d0 | |||
| 7f3418a401 | |||
| 3d708dc8e6 | |||
| c38b6e366c | |||
| f080ee9872 | |||
| b9e953ddad | |||
| 8c6efcdb67 | |||
| 0911c2cb72 | |||
| 7889a1aba8 | |||
| ebf049a301 | |||
| e7ba8c0b64 | |||
| aa0b598a2f | |||
| 91718591ea | |||
| 210863b169 | |||
| 3112ff0f9e | |||
| d179a9c8e8 | |||
| 82ec87756c | |||
| d4f4a27a08 | |||
| 1f03bc729a | |||
| 4a0e5b9031 | |||
| 28ed8b1c0a | |||
| 0e53ed23c0 | |||
| 5bf75e1be5 | |||
| 1faa20b23d | |||
| 3decd0f58b | |||
| 3770165f6f | |||
| e091e3982b | |||
| bdba9cebdd | |||
| e0d6776f11 | |||
| d7a64e3048 | |||
| 914b4b0a0c | |||
| a7f844fab4 | |||
| 4337b07658 | |||
| 1033cbc247 | |||
| 5a41099238 | |||
| b3eb12afbb | |||
| 62b79b6c7e | |||
| 5def026ca7 | |||
| 54d672b17e | |||
| 6a0d5ff3fc | |||
| 3eedf7527d | |||
| a370d0d6ce | |||
| b4e3a5c542 | |||
| 927f354f18 | |||
| 45a460a11f | |||
| 7655befcc3 | |||
| c96880d437 | |||
| 21c8079f49 | |||
| 175b2d5f2a | |||
|
|
38ef7efac9 | ||
|
|
aca226b764 | ||
| 2c5fbd8d5d | |||
| 17295320c3 | |||
| 37390eea97 | |||
| ab71754faf | |||
| 17396c3db2 | |||
| 742f8b6d8d | |||
| 161dd5cca8 | |||
| 4dfacc759b | |||
| da57b113f8 | |||
| 4a1d30e8c4 | |||
| 4e4a5c1b52 | |||
| 4e097d8286 | |||
| bfe2a0f58a | |||
|
|
13ece41a8f | ||
|
|
f35cb04359 | ||
|
|
08d11f3e9f | ||
| 63253e9cae | |||
| 26dafb4e9e | |||
| 111c66aa6a | |||
| 5b03fc9b47 | |||
| 672ae736d3 | |||
| e37db3d00c | |||
| 919ed6f0a1 | |||
| 79867e4eaa | |||
| 99600bafb0 | |||
| 59aad79aa0 | |||
| 6fc4672a6e | |||
| 478c639ae7 | |||
| 7f2c978736 | |||
| f472239102 | |||
| f2844122c0 | |||
| 7781b12dac | |||
| 1e795b8b10 | |||
| 7d0896d84f | |||
| fc0aade0ae | |||
| d969622675 | |||
| 23839b6ec6 | |||
| 0b120c1e9c | |||
| e84d8f9455 | |||
| c4973910f4 | |||
| 4ed57bc1d4 | |||
| e8125b661b | |||
| c6b7bba5ee | |||
| cf5ee6c703 | |||
| 63038b77bc | |||
| 7be67a9551 | |||
| 0dc44572b1 | |||
| 1de6bab86e | |||
| 0852e0efbf | |||
|
|
8fe11f30f2 | ||
| 8b0a863949 | |||
| bde689b1b3 | |||
| 2ff2402078 | |||
| cb47fa210a | |||
|
|
599e56875d | ||
|
|
74569ccfd6 | ||
| a009a68941 | |||
| 37455c54e6 | |||
| 16dded8dee | |||
| fa92ba1974 | |||
| 3011af4f0e | |||
| 8a98815fd7 | |||
| 018f40d6db | |||
| 1d7e55c086 | |||
| d57e133d0d | |||
| 191996c5d4 | |||
| bcef2dd818 | |||
| 0358bf15a0 | |||
| 301ff664a8 | |||
| 865846af9a | |||
| 96b2c5f3c4 | |||
| db5e4e3c1f | |||
| e3cd4aa3dd | |||
| fbca84ae2f | |||
| 6034ce5ba4 | |||
| 2e71ffebd4 | |||
| 3ca7d63e8c | |||
| ff2ca7397f | |||
| 843a1171b7 | |||
|
|
f0057e5487 | ||
| d3914e3269 | |||
| 431641e248 | |||
| e259b3ee63 | |||
| e34bbde27e | |||
| f84593ec19 | |||
| 49425440a5 | |||
| ee9332f6f2 | |||
| d06de37924 | |||
| 0872b2a134 | |||
| 95a6a458db | |||
| 112048df36 | |||
| 24a26fe454 | |||
| fe846468ee | |||
| be299ac90f | |||
|
|
549e61a168 | ||
| f7e7c17598 | |||
|
|
26bcaccd81 | ||
|
|
df5810a347 | ||
| 071ea6db5d | |||
| 01f46d4cdc | |||
| 2baf852a9a | |||
| 7f5d8c353a | |||
| f3a5683e13 | |||
| 4323561774 | |||
| 6225ac65d9 | |||
| 178648a5ee | |||
|
|
ef931c566f | ||
| 78dbf5473e | |||
| edcb95ac6f | |||
| 2fc23876e6 | |||
| 293908c40c | |||
|
|
a3d4883406 | ||
|
|
532f0b1bb2 | ||
|
|
a98fe0d9f3 | ||
| 7919d11b00 | |||
| ac5a2c9dd2 | |||
|
|
a7c3bd507f | ||
| 06d132b0b0 | |||
| 837787fdaf | |||
| 9545b3d9cc | |||
|
|
fba2cf86ae | ||
| d17a656d64 | |||
| a5082762b5 | |||
| 4160143f6e | |||
| 9fd6f847fe | |||
| f65f8ec541 | |||
|
|
af481bf465 | ||
|
|
e6ae8182c2 | ||
| 31d0c9c9ec | |||
| de3bf12c18 | |||
| 9d2f6b29f7 | |||
| ee764d2213 | |||
|
|
de7b9adfa6 | ||
| 8c53055341 | |||
| f0225eed4c | |||
| b57bae878f | |||
|
1a83ff37ff
|
|||
| e205785246 | |||
| 3edda978fb | |||
|
|
ebabb0e445 | ||
|
|
e4f98bb82f | ||
|
|
56d6f97168 | ||
|
|
b0067f055f | ||
| 117d263e25 | |||
| 63e66e5dce | |||
| 140a16ec0c | |||
| 44b95bbb5b | |||
| 4eeaa8c37b | |||
| c95f2efd65 | |||
| 9dbf4b5467 | |||
|
|
bd094dfc9a | ||
|
|
7e9d7d6281 | ||
|
|
2cf781459d | ||
|
|
4ff9e3c81e | ||
|
|
e337f1c579 | ||
|
|
7c840334e1 | ||
| 0a120f1073 | |||
|
|
269738e618 | ||
|
|
06eab1d6f5 | ||
|
|
008e816d70 | ||
|
|
2bbbc164b5 | ||
|
|
11f4fd9932 | ||
|
|
a1451c6fbf | ||
| 1e94910ebd | |||
|
|
993da40297 | ||
|
|
09684b1268 | ||
|
|
0abb89cf38 | ||
| 63d251a7f1 | |||
| 799af75bcc | |||
| 8966c490fe | |||
| 4c09dbab60 | |||
| 6fd5c33b0a | |||
|
|
7880f51b76 | ||
| 30e8a885bb | |||
| 42c695a2a1 | |||
|
|
f0a79ca0e0 | ||
| 3ef2f3b8d6 | |||
| ae995b8670 | |||
| 75c2f103bd | |||
| bc7958559a | |||
|
|
11228a0de0 | ||
| b6fe5cc29b | |||
| cb34b51149 | |||
| 6c9421a21a | |||
| 684a3a658d | |||
| 0ab7cccef6 | |||
| c405717bcc | |||
| 7dcd14ef3a | |||
| 4f033438ed | |||
| 21e40c38ca | |||
| 53e3b3c561 | |||
| d6416c77b8 | |||
| 9ade143352 | |||
| dc05876ac7 | |||
| d691d63353 | |||
| b666a06252 | |||
| 27b209b4d8 | |||
| d0cdb2cebe | |||
| 2123f5b51f | |||
| 93511da3f1 | |||
| 267eef2a55 | |||
| 8f69b9ff3d | |||
| 0d182cc4e5 | |||
|
|
06dcd5491b | ||
|
|
3641be4f56 | ||
|
|
18e28c3bbf | ||
|
|
62e39bf066 | ||
| f6bfbff62c | |||
| dd0cb88841 | |||
| 23ed1f6b1a | |||
| d12154b4ba | |||
| b625ee5c4e | |||
| 4e48962fae | |||
| 21832042df | |||
| d48c8371e4 | |||
| 67f6fb8236 | |||
| 369cc3e823 | |||
| 4857245a96 | |||
|
|
2f39d4b60b | ||
|
|
0528aca3ad | ||
| d99e5d8801 | |||
| 5cda06db24 | |||
| c93c3140cf | |||
| f17bba7282 | |||
| fe3dbd265e | |||
| e6eee134bd | |||
| 1f5c75a647 | |||
| d70527d65f | |||
| efb3f4b371 | |||
| 71f5e8f0b4 | |||
| a13bdd2e2b | |||
| 7fbc1ba812 | |||
| 7f864f1d25 | |||
|
|
ef3c11e870 | ||
|
|
c20bc964c3 | ||
| dd2629d073 | |||
| e5fa199925 | |||
| 675a647a8d | |||
| f845c4134c | |||
| 6442e9cab5 | |||
| 0629a3d5bd | |||
| 62d18588d7 | |||
|
|
4ee191e238 | ||
| 351de5ee93 | |||
| dae8ddb3b5 | |||
| 631a62e8ce | |||
| 59877a3e60 | |||
| 08da843d50 | |||
| 949781003a | |||
| 4338c7a777 | |||
| 86de5cd22d | |||
| bf754a4e51 | |||
| 8913977c0a | |||
| f4be336e39 | |||
| 836fe1bf87 | |||
| 7bca95203e | |||
| 059a22cbe8 | |||
| 2740692772 | |||
| c0008fece9 | |||
| d7bb54a088 | |||
| eb41b3f0f7 | |||
| e3cbc47cc8 | |||
| 75767d26b4 | |||
| a01667a8f7 | |||
| e4dec4168c | |||
| 59f1a3a289 | |||
| 9c8aec6543 | |||
| 7c8a368d73 | |||
| 0bda382e40 | |||
| 330b4dd69f | |||
| 7a7e43eb3c | |||
| 5e797d6b54 | |||
| 1b3dd0634b | |||
| b1bdacb834 | |||
| a4b9485019 | |||
| 20489fbb25 | |||
| a2fa000a31 | |||
| 343f0e7dae | |||
| f0f13097c0 | |||
| 0025e83be5 | |||
| ffb8e9f3fc | |||
| 8081931c55 | |||
| 792276d06a | |||
| 58edc256fd | |||
| f30d04a593 | |||
| cc42f32b21 | |||
| 353623c5ae | |||
| a09c30a076 | |||
| 3bfd72fde1 | |||
| 39e6b4a48b | |||
| 32b2e35d42 | |||
| 8e1bcbfd1d | |||
| 336a6d56cd | |||
| a283454cae | |||
| 8b16a8a37b | |||
| 727a1a3423 | |||
| 0c42c117a0 | |||
| d795cb717e | |||
| 1d5d1fdf86 | |||
| d795c34dab | |||
| b38f5c139f | |||
| b623f32fbf | |||
| 19fd079436 | |||
| 7d70a96533 | |||
| dce6e34289 | |||
| 881f080916 | |||
| 051687535b | |||
| 0b420933e0 | |||
| 0b3876c3f0 | |||
| 9711d45a7a | |||
| 8dcba94de7 | |||
| 226dca8c1a | |||
| ad01a7e3e3 | |||
| adde5a4134 | |||
| 9ae1807225 | |||
| e7f8446c02 | |||
| 7b05bf200c | |||
| e992cb309f | |||
| 0f138678ec | |||
| 35658e611a | |||
| 2a25cd44cf | |||
| 29053df245 | |||
| 78ad02ec80 | |||
| e3f2ef22a6 | |||
| f884e181e3 | |||
| e69d7ed0a2 | |||
| d65e11a3ea | |||
| 294d0ee02c | |||
| 6f4abebb32 | |||
| 5d83796b37 | |||
| a06c697fe3 | |||
| 5de2a8b6af | |||
| 7234f67c42 | |||
| 972f5079f9 | |||
| 27d4ed1781 | |||
| 5f074ef695 | |||
| d0f60519fd | |||
| cd7c495cb7 | |||
| 59317d45f9 | |||
| 7c2c9f978d | |||
| d540f0c2f2 | |||
| 340bbb7ca8 | |||
| 0aaffd1249 | |||
| 04be2e8c88 | |||
| 57dbe83901 | |||
| 60c5328eb0 | |||
| 189d9ca9cd | |||
| 5d797b1e66 | |||
| 2f1a40b4d9 | |||
| 02c0cd5af0 | |||
| f2a70cd137 | |||
| 8d88c25f05 | |||
| c1c5625441 | |||
| 462e800907 | |||
| faa5ee2c4f | |||
| 5dad5730ce | |||
| 5017187927 | |||
| 14e7f72bd3 | |||
| 9ef67f5788 | |||
| 79226f6ca8 | |||
| c8c0239e36 | |||
| f1be10bf8c | |||
| 18c3c9d324 | |||
| 4825fe881d | |||
| 081d20fe50 | |||
| c1a66711db | |||
| b113e78423 | |||
| 470e8aac9c | |||
| 39babfbadd | |||
| 86f7e63f65 | |||
| ecd2a71981 | |||
| 2ece9e6209 | |||
| 9310b9c305 | |||
| abad9897b8 | |||
| 0cfffff94c | |||
| 6c53103345 | |||
| 346ef66bca | |||
| e092201030 | |||
| 3c14521ca0 | |||
| 4b43427bf0 | |||
| b7f39fe8ed | |||
| 1f64569bc2 | |||
| 7c56383601 | |||
| 2de50b012b | |||
| 1de90e3ce1 | |||
| 64a175819f | |||
| 4cc507832c | |||
| fd1e14e4cd | |||
|
|
a78db354ab | ||
|
|
a86d83eeba | ||
|
|
02e73ade5e | ||
| 9d0a84b317 | |||
|
|
0cf237914b | ||
|
|
398c23fccb | ||
| 8f68292dfd | |||
|
|
8ef62e7ff1 | ||
|
|
99257f4b28 | ||
|
|
9f529a3a1c | ||
| 8178a0dd8a | |||
| 0f250b6eae | |||
| 716579cc5e | |||
| 25caf3f4a6 | |||
|
|
1c1b598768 | ||
|
|
7cbb56dc2c | ||
| 7f41ec2aac | |||
|
|
ac5fc38de6 | ||
| 1f3c568d0c | |||
|
|
2a186377df | ||
|
|
d529974cd9 | ||
|
|
f378c60bf5 | ||
|
|
e4523a2d33 | ||
|
|
4aacd36c59 | ||
|
|
a291d9ab07 | ||
|
|
9d73fc3a94 | ||
|
|
8a33d88e31 | ||
|
|
6650686d48 | ||
|
|
8570997cb0 | ||
|
|
31ee7b919b | ||
|
|
30f6ecd2f8 | ||
|
|
9e3700001d | ||
|
|
2928602e8d | ||
|
|
09fc55d2c7 | ||
| b391425d48 | |||
| 3b21486647 | |||
| 641ac01b33 | |||
| 233370b448 | |||
| 45bff04329 | |||
| 6d32387e6c | |||
| 4f51cf1f80 | |||
| 46f7e5beaa | |||
| fee39f56fa | |||
| a3e8758dbd | |||
|
|
2b6ed19847 | ||
|
|
34971950ad | ||
|
|
29b22b7dd9 | ||
| 8bc4771345 | |||
| 314c8f8d18 | |||
| dd3e47e492 | |||
| 7f90f3315a | |||
| ceb43c0f0f | |||
| e225cab90a | |||
| 87793a032c | |||
| b3227129d5 | |||
| 5861c7f8cb | |||
| 1181d1c526 | |||
| b3c02324aa | |||
| 3664b5f8c5 | |||
| d58bf448ef | |||
| 95d1e1ed38 | |||
| bbaa41f389 | |||
| 20bff17c74 | |||
| 31a7d18905 | |||
| c4f04b73be | |||
| 188c6199c9 | |||
| 62413eb8e4 | |||
| 1c4697caa7 | |||
| 785272ba21 | |||
| d28e669b5f | |||
| fe3b07aa2f | |||
| a21ecf9bbf | |||
| 55113543dd | |||
| 76041671eb | |||
| be2d4ec29f | |||
| dfa221768c | |||
| 9b2278a0ff | |||
| 24b0a0c7bb | |||
| 023ad574a8 | |||
| 74772dc6b5 | |||
| 8fc7734827 | |||
| 43659b01bd | |||
| de2e2f3987 | |||
| 28591a6787 | |||
| e78dae0950 | |||
| 5b86f69444 | |||
| 92a7d30e43 | |||
| fa311bfb95 | |||
| c1988a9bcd | |||
| 27185b21b5 | |||
| bad4295aec | |||
| b891f29e11 | |||
| 35a752e565 | |||
| 6c5189744a | |||
| 81e9a7d420 | |||
| 3a01025471 | |||
| e652ecca44 | |||
| c244d54d22 | |||
| cff9000d6b | |||
| dc8804de3a | |||
| 92467630cd | |||
| 452734a433 | |||
| 49c7b18d57 | |||
| f7665403b9 | |||
| 9ae047b2d0 | |||
| 4523d87028 | |||
| c34c0ffd0f | |||
| a179d0f6cc | |||
| 6c1b7c54d0 | |||
| bbb59ac2cc | |||
| f16d33decd | |||
| c4e5504c1d | |||
| 0fb8230e50 | |||
| 86be724246 | |||
| 27b3ad0da5 | |||
| 25167ed078 | |||
| 7fb0cf139b | |||
| 6e8d54c91b | |||
| a6191fd8af | |||
| bfeea6ffa5 | |||
| 48451385e9 | |||
| 0e894f84cc | |||
| 0ca12232a8 | |||
| c2d28efe62 | |||
| 0496c38496 | |||
| dd4c481c4f | |||
| 7f1b5233e8 | |||
|
|
41aae3cab9 | ||
| 9838fbc95f | |||
| f5c59823bf | |||
| 241a8b4d53 | |||
| 25d193e930 | |||
| e6924cc02d | |||
| 60985c6b37 | |||
| a015399b57 | |||
| 4b6c7998f3 | |||
| 26312e313f | |||
| b63b5d7fd2 | |||
| ca2943a94d | |||
| 32a4cd9361 | |||
| 2320e4ed17 | |||
| dee479a918 | |||
| 6895ef1e32 | |||
| 5c51eefa3e | |||
| 0d7ae321a7 | |||
| b4063a64e0 | |||
| 65154f2f5c | |||
| 19a22bd0d1 | |||
| a7da7baf5a | |||
| a344a94112 | |||
| f44861fead | |||
| 1c4a30ebb4 | |||
| 70e2ca3d3e | |||
| 0d4aee1625 | |||
| ad6aa33b7c | |||
| 284b5fa4df | |||
| b9aac0c3d7 | |||
| 6ce90e08ef | |||
| 5ac80d8d60 | |||
| 56e1fa52d8 | |||
| 3ae1b7d168 | |||
| d8f654c81c | |||
| cbcbd4d6dc | |||
| be899b5611 | |||
| 361bbe8d85 | |||
| 1e017af277 | |||
| c4c22a36bb | |||
| 84924b480b | |||
| 358074f4ee | |||
| 084314fbcf | |||
| c42f301ae0 | |||
| c8cd37e451 | |||
| 9f8f3a5407 | |||
| 6f1493808f | |||
| c9d32694db | |||
| 8632a2fc81 | |||
| 46a09d5b62 | |||
| b7e5bbc7d2 | |||
| ed264f0c16 | |||
| f1820575ad | |||
| d2e42d0a3c | |||
| 842cf5aaaa | |||
| c8f727e982 | |||
| fd3c9190de | |||
| 69439d2b13 | |||
| 6d41fee73f | |||
| 0de99adeed | |||
| f71fd7c82c | |||
| 0a6b0b8fa5 | |||
| 5e0ce8f098 | |||
| 9fc5989bd4 | |||
| cbe81861a5 | |||
| 76a03cc2fa | |||
| 3774760548 | |||
| 4b1942b949 | |||
|
|
2f03c02b58 | ||
|
|
639143934f | ||
|
|
81bbbcd8e4 | ||
|
|
bedd46756d | ||
|
|
bb6b342d82 | ||
| b6eb12cf30 | |||
| 80f8129011 | |||
| 86daad2455 | |||
| e71cbd5ba9 | |||
| c0fb9beef7 | |||
| db4b69a24a | |||
| 7746784949 | |||
| 024bd48aba | |||
| cb13c9faa4 | |||
| 009ec759a3 | |||
| 6ba16ad020 | |||
| 43b0b34cdd | |||
| 94e6eb2d10 | |||
| 578eea5d9f | |||
| 724450e049 | |||
| 1759baebad | |||
| 896ef50b9a | |||
| c4d52b6687 | |||
| 5c611a59aa | |||
| 7068b989ef | |||
| 820fda78e7 | |||
| d758423ec6 | |||
| 5472f097a4 | |||
| e373f5cffe | |||
| f04729261b | |||
| b6c8778aec | |||
| 8dfe8d55a0 | |||
| 36b7d5ce42 | |||
| 8d780c3252 | |||
| a841d5de2d | |||
| fdd8d306f7 | |||
| 9510a0fced | |||
| c3ec9dfb11 | |||
| 82c136b684 | |||
| ea4bb752b9 | |||
| bac673df99 | |||
| df2c2f5e4b | |||
| 8c3863f970 | |||
| bc49e31164 | |||
| ce4c54b0d5 | |||
| 7b09cdeefd | |||
| 39dc96ab7a | |||
| 2d13ff328e | |||
| 53dd598547 | |||
| 40b4a540a8 | |||
| 33ae53c199 | |||
| 97e9b0636b | |||
| b0b21e9d53 | |||
| 53d5402502 | |||
| a190a9564e | |||
| 7846520788 | |||
| 3444683983 | |||
| 00118ddafe | |||
| 525ba293e3 | |||
| 071f6c08fd | |||
| da70236a45 | |||
| cfdda2d293 | |||
| aba265d787 | |||
| bbcb37bc4e | |||
| eff7d7493d | |||
| 730916758e | |||
| 9acfe2751e | |||
| 386569d7cf | |||
| 39a7e1eb19 | |||
| f492845235 | |||
| ab42fc8b57 | |||
| a5a9fce330 | |||
| a70286dda4 | |||
| 2b3e587be4 | |||
| ebfac9730b | |||
| fbd3c6ca92 | |||
| 1cd3dabcea | |||
| eba17880d0 | |||
| c168f910a9 | |||
| 98dd704fda | |||
| 4ecebe8982 | |||
| 8f1d17636e | |||
| fb1c202586 | |||
| d7a4ce022e | |||
| 64c3796429 | |||
| 80a517beaa | |||
| cec31550f8 | |||
| bee760adf5 | |||
| 155d5747f8 | |||
| fd531a360e | |||
| c3884a460d | |||
| 5f5c30673d | |||
| f423cd5611 | |||
| 7e059e13ef | |||
| d965fbd57e | |||
| 55854ec586 | |||
| 8886c8e695 | |||
| d58f5f9a01 | |||
| e060b0f549 | |||
| 73913c4ae6 | |||
| 21878ae135 | |||
| a08a110ef6 | |||
| f723c43603 | |||
| d88876c928 | |||
| f15a3e6bf4 | |||
| 4852237bf8 | |||
| 9a0bc87636 | |||
| d73d27dccc | |||
| 6fa5e73226 | |||
| 1ff9ea256b | |||
| 7fca7e0246 | |||
| 846270b714 | |||
| 50e7c5683f | |||
| 6883a9570f | |||
| 8f34bc001d | |||
| 2f95e5452b | |||
| 59a6307a21 | |||
| c8d52e6c41 | |||
| 044766bf8a | |||
| 1f7c851228 | |||
| ca90c658ff | |||
| 19de68e4f0 | |||
| dc17d7d304 | |||
| 2372dbf6b3 | |||
| 3382e35447 | |||
| a9cc4f55b8 | |||
| 63fbf7ebe4 | |||
| d1d6b67fd6 | |||
| 87160e8648 | |||
| e5553699c5 | |||
| adcfdc1a73 | |||
| 70464a2b71 | |||
| 0852a75d9f | |||
| 9affa0e89a | |||
| cc13078ec5 | |||
| 35285343b1 | |||
| cb6bce0c56 | |||
| 5c1eda72c3 | |||
| 4542accc33 | |||
| 8f5470076b | |||
| 3427c3c761 | |||
| 0cc8d0947b | |||
| c3795450a9 | |||
| 868d924836 | |||
| d8f634d67c | |||
| 09b97ab4c5 | |||
| 8b4d7dd569 | |||
| a63205d5e1 | |||
| e7a4e93366 | |||
| 2c23f40415 | |||
| daf4ee79f2 | |||
| 38a73d2890 | |||
| b004d8364c | |||
| 2498e23bd5 | |||
| 3a80d50cf5 | |||
| 8c12eb47ce | |||
| cfec6afc7d | |||
| a3bdabca3c | |||
| f094a326ac | |||
| d24cab9c1a | |||
| c7d1ecce35 | |||
| 306fd99b84 | |||
| ab63bc44a6 | |||
| ef15f15458 | |||
| db86136aa8 | |||
| c344aed471 | |||
| 79b0a4ba7a | |||
| 4ce5e29a81 | |||
| 524dec0991 | |||
| 05074ed4f0 | |||
| 4e4ed58605 | |||
| 6a109fe03d | |||
| a783aab229 | |||
| 43dc2285b3 | |||
| eac8e3fb44 | |||
| 035d29fabc | |||
| ad2b10972c | |||
| e65e1f3ec4 | |||
| 10b86812cd | |||
| fe4c794f68 | |||
| 6115d748e3 | |||
| b0f266bb0a | |||
| 646c99feb5 | |||
| e8461d7059 | |||
| b2efd9f22f | |||
| 8e426b7fd6 | |||
| c13a65b204 | |||
| 503a24e003 | |||
| dfddd3d3d0 | |||
| 26e01bb7f8 | |||
| 5f88626ddf | |||
| e04bb29bb2 | |||
| c9690e028b | |||
| 8709f0bd8e | |||
| 13d7f33c37 | |||
| eac8592536 | |||
| 3e0feaa3e8 | |||
| 85023299d2 | |||
| 98cfb79961 | |||
| f628ec908c | |||
| 6a166a6ef7 | |||
| b10f7dd888 | |||
| 0e768e7768 | |||
| d59a37f185 | |||
| f0c6713d76 | |||
| 0eeac949ea | |||
| 04c0c1c0e2 | |||
| 03011d107f | |||
| c88003bea1 | |||
| 6c83373d72 | |||
| 888a1cf296 | |||
| ed6c01243d | |||
| 5945f78e97 | |||
| c58fca395b | |||
| 9203905ed8 | |||
| 259e0dacd0 | |||
| 0acd13f0f0 | |||
| cfdb948372 | |||
| 9b3130f363 | |||
| d10efc274c | |||
| 2e1b7fab53 | |||
| 91b92b2cc4 | |||
| 6e3ab111f3 | |||
| 7de0b1c00e | |||
| 8107743af2 | |||
| aeff82f625 | |||
| 935cb1c38b | |||
| acd5b7706b | |||
| 0b111d1012 | |||
| 211d8f37d8 | |||
| e2517a7786 | |||
| aaf5b4fecc | |||
| 173e251e9f | |||
| 3c0891e069 | |||
| 2dc3de43d1 | |||
| 1b332b5b3b | |||
| 6ef34afc6d | |||
| 1cd6b63f1e | |||
| 6fd17ee70e | |||
| 050d151c67 | |||
| 25ec569cd8 | |||
| 2dd9847566 | |||
| ef108f2e4a | |||
| 4894c2d627 | |||
| f0861a9a62 | |||
| 221cf89d10 | |||
| c54ef9b84a | |||
| 7aad272316 | |||
| 1f43353360 | |||
| 5b54566c89 | |||
| a9e3d331fc | |||
| 192086546a | |||
| a30b8f888d | |||
| 1e3fc9be3d | |||
| 2ec08c7f68 | |||
| 3adf9b0d00 | |||
| 6fba0f28db | |||
| 9bdc2c09e5 | |||
| 1eb95cde92 | |||
| 719e793860 | |||
| f0e68f7b48 | |||
| 72501bd0b3 | |||
| bd6aaa07c8 | |||
| 77a9f81a1d | |||
| 3eb88f66cf | |||
| 3fb76d59b2 | |||
| 72db2863d0 | |||
| 81ad0cf4db | |||
| b6f2a89e04 | |||
| e2c735b804 | |||
| 3f576ce3e5 | |||
| 1e51e8bb8b | |||
| ad48191b53 | |||
| d851f302cc | |||
| 09ba2122e7 | |||
| 9b16bf6e6f | |||
| ab6b5eefc0 | |||
| 993cd5ed1c | |||
| b733bb4154 | |||
| 2edbbc3ede | |||
| af3013ad67 | |||
| d02fe73952 | |||
| 32444d5a7e | |||
| b003b5e04b | |||
| 5d217a264a | |||
| 8d8c4d2da3 | |||
|
|
943a03bd2c | ||
|
|
680303cfa2 | ||
|
|
e16bbf8acf | ||
| 42ebbdba6d | |||
| a2b477a3dc | |||
| 3c7d5ad5ad | |||
| 4261e26f19 | |||
| a0ee4e1312 | |||
| 93630650fc | |||
| 36b20fa2dd | |||
| ae1c4dd3e6 | |||
| 69438f44b3 | |||
| aceaa01cdb | |||
| 7fe220a630 | |||
| f07599adf2 | |||
| 1b89b16705 | |||
| 0fb1148508 | |||
| 208145d288 | |||
| a6bd60077d | |||
| 387c20a708 | |||
| 1a9d34d347 | |||
| ed4ee53fdb | |||
| 4848a13fa0 | |||
| b9ebd506c8 | |||
| 249f49f7b3 | |||
| db3f5eb066 | |||
| c2f43e0096 | |||
| d81586d026 | |||
| 18a9419cef | |||
| 8a69083c19 | |||
| ba1b79f657 | |||
| 1a2415925f | |||
| 16a597183a | |||
| 2461430869 | |||
| 605201dbc8 | |||
| 214d3250fe | |||
| ea9c634a25 | |||
| 62095cb170 | |||
| aba85c70c1 | |||
| 98569cff69 | |||
| 952dfdc521 | |||
| 93724802d8 | |||
| e5f19e3b8b | |||
| 4479506ee0 | |||
| 359d4508b1 | |||
| ef9ba68790 | |||
| 53ce0d9e54 | |||
| 505921045e | |||
| 2c71e01e5a | |||
| c3cf84ee7d | |||
| 5787a8943d | |||
| 313e276ad6 | |||
| 310891bf16 | |||
| 8852356966 | |||
| 6243766ecc | |||
| 2d5e987fcc | |||
| bf851c2bd6 | |||
| 0327f254a2 | |||
| a0c7078593 | |||
| 0cbea9607e | |||
| e799d516ea | |||
| c630d8f091 | |||
| 2494fbb837 | |||
| cb2560d46f | |||
| 240ed5f859 | |||
| 0365730e0e | |||
| b9d5eab3ea | |||
| 16c84d59dc | |||
| 621c396407 | |||
| 3f2cc3d97a | |||
| ce927308c4 | |||
| df99eb0aab | |||
| e8473d4f5b | |||
| 1175d77c55 | |||
| 570f4ca7d9 | |||
| e4b9c8f1bc | |||
| ea6e7c5d8c | |||
| a462945c98 | |||
| 003d4d65e5 | |||
| 38fa5ab991 | |||
| e22e7b9c90 | |||
| fc6a8eae9d | |||
| 4dab811388 | |||
| 012dc5ec69 | |||
| f72f67342d | |||
| 283ac315d8 | |||
| 1a5b0f372d | |||
| de40e859d7 | |||
| 6140de8eea | |||
| a9fcbd7909 | |||
| a963153c2a | |||
| 8efb743b84 | |||
| f251d6b97b | |||
| 8a5a96d02c | |||
| fc0dd14b4d | |||
| 4d67c157f0 | |||
| a678ef70e7 | |||
| 87d320b6da | |||
| 6b7d3c4b7c | |||
| 8a99f8f6b1 | |||
| 4aa24cc0a1 | |||
| e309f3bbd0 | |||
| a757c45b84 | |||
| ed397e352f | |||
| cf6cec4d32 | |||
| c4422355e3 | |||
| dd947ecd39 | |||
| 968b59aaee | |||
| b9cb023306 | |||
| 031ef140f3 | |||
| 7376607475 | |||
| 1aea6ee588 | |||
| 12717ba25e | |||
| a1fa666cd3 | |||
| 30cfd67e28 | |||
| 068d156da3 | |||
| ce4ed9b0a9 | |||
| b8acbe7359 | |||
| c61485638b | |||
| fd20d5177d | |||
| 2a603e1e41 | |||
| e4d71c5a39 | |||
| 842a6ebe16 | |||
| 14ecc63944 | |||
| 18fb728973 | |||
| a11b75f1cb | |||
| 86abadd6bb | |||
| ab47b06fd6 | |||
| 640ffcb77e | |||
| 26b6abe66b | |||
| c00df84f2a | |||
| 2b7b7a10bc | |||
| 5b18b3d50d | |||
| be24afc8bf | |||
| 5332572b2e | |||
| 6551fda493 | |||
| e3d33f201c | |||
| ea3d550f64 | |||
| 21c1632233 | |||
| 1a66cadb53 | |||
| c8b1330244 | |||
| 4c5204598e | |||
| b8aedc842e | |||
| c1579cb106 | |||
| c1ff949346 | |||
| 3eea6c2ff9 | |||
| d1f826bdb5 | |||
| 5586fcff7a | |||
| f98b18affc | |||
| 28135244c3 | |||
| 47533c7512 | |||
| f79f35e2be | |||
| c43c4a9b24 | |||
| 81a47a12ec | |||
| 9e3a0a0f1d | |||
| 2d0426c0a3 | |||
| 7f366d3f3c | |||
| 3dd1e0461c | |||
| 8036a3a5be | |||
| 29a692de5f | |||
| 4f515d4733 | |||
| 2c28e95bd9 | |||
| e7d354d4c7 | |||
| 5b64506612 | |||
| f2135081ef | |||
| ae9b1a8215 | |||
| 0f5b3d62b1 | |||
| cf63408023 | |||
| 2bfcd52c8e | |||
| 95075c1664 | |||
| 55e639a61c | |||
| fb414c4764 | |||
| 2a53238cad | |||
| 59dfb606ad | |||
| e1271419eb | |||
| a6faa103b6 | |||
| 72de6a4fb5 | |||
| 5c7de2406a | |||
| a6ccc2cc24 | |||
| 7a132d96ca | |||
| 1e2fcf98c7 | |||
| 8fc3df0672 | |||
| 930370c1b5 | |||
| 25677c028e | |||
| 6444e9f1d5 | |||
| 94f9474e2a | |||
| 392606e165 | |||
| f8950d9fb3 | |||
| 6ab4b4062c | |||
| 31464e5025 | |||
| 1f166cbc44 | |||
| 0d8bf8dd12 | |||
| fdbf2534b7 | |||
| 8fd69c4d5a | |||
| 94c8224cf8 | |||
| 7bcccd5558 | |||
| bb987ed257 | |||
| 80f4104969 | |||
| 78ecd57aee | |||
| da66c3fc17 | |||
| 94b75f0eee | |||
| a798b72515 | |||
| 8bd7ef6cfe | |||
| d66a6790f9 | |||
| 50f488ae21 | |||
| 2a18715f77 | |||
| dd39fea3f8 | |||
| 650fcc9215 | |||
| c52bdbecf8 | |||
| 9171f42d09 | |||
| 82885b2bde | |||
| 805a701daa | |||
| 691a1efe16 | |||
| 4f39c995e0 | |||
| 7c5a9bccec | |||
| b8ccbd9722 | |||
| 3c8d942c67 | |||
| 9ef0b851a9 | |||
| 630da4a9e9 | |||
| df4bf316fb | |||
| dc1a17677e | |||
| 5ce8f74aa7 | |||
| 07954bf51b | |||
| b518ddbfb8 | |||
| e5aa20a446 | |||
| dc08515e1d | |||
| a49bce8292 | |||
| 0021d0d84d | |||
| b952b73738 | |||
| ec3ed96771 | |||
| d02a2e74b0 | |||
| 40cb344e0d | |||
| 8c32e42fe9 | |||
| cbceab7cff | |||
| a0864933de | |||
| df7bc4aede | |||
| 009ce28c04 | |||
| 5f087121a3 | |||
| 074381ff67 | |||
| 757e0be5ef | |||
| bb7adceeb7 | |||
| 15a401e681 | |||
| 976478d5bb | |||
| b3fcbfd4fe | |||
| 8ae4821bc8 | |||
| da767a8981 | |||
| ae793f480c | |||
| a039954f9e | |||
| 03a775ef1c |
1
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1 @@
|
||||
ko_fi: papatutuwawa
|
||||
7
.gitignore
vendored
@@ -52,7 +52,14 @@ app.*.map.json
|
||||
**/*.g.dart
|
||||
**/*.freezed.dart
|
||||
**/*.moxxy.dart
|
||||
lib/i18n/*.dart
|
||||
|
||||
# Direnv
|
||||
.envrc
|
||||
.direnv/
|
||||
|
||||
# Android artifacts
|
||||
.android
|
||||
|
||||
# Build scripts
|
||||
release-*/
|
||||
|
||||
2
.gitlint
@@ -7,7 +7,7 @@ line-length=72
|
||||
[title-trailing-punctuation]
|
||||
[title-hard-tab]
|
||||
[title-match-regex]
|
||||
regex=^(ui,service|service,xmpp|feat|test|refactor|xmpp|service|redux|ui|lint|style|docs|build|misc|flake|shared|meta|android|ios|release):.*$
|
||||
regex=^((feat|fix|chore|refactor)\((service|ui|shared|all|tests|i18n|docs|flake|android|ios|linux|windows|macos|ci)+(,(service|ui|shared|all|tests|i18n|docs|flake|android|ios|linux|windows|macos|ci))*\)|release): [A-Z0-9].*$
|
||||
|
||||
|
||||
[body-trailing-whitespace]
|
||||
|
||||
36
.woodpecker.yml
Normal file
@@ -0,0 +1,36 @@
|
||||
when:
|
||||
branch: master
|
||||
|
||||
pipeline:
|
||||
check-metadata:
|
||||
image: bash:alpine3.18
|
||||
commands:
|
||||
- bash ./scripts/check-fastlane-metadata.sh
|
||||
when:
|
||||
# Only run this check when the Fastlane metadata changes
|
||||
path:
|
||||
includes: ['fastlane/metadata/**']
|
||||
|
||||
analysis:
|
||||
image: git.polynom.me/papatutuwawa/docker-flutter:3.13.6
|
||||
commands:
|
||||
- PUB_HOSTED_URL=http://172.17.0.1:8000 dart pub get
|
||||
- dart run build_runner build
|
||||
- dart run pigeon --input pigeon/quirks.dart
|
||||
- flutter analyze --no-pub
|
||||
- flutter test --no-pub
|
||||
when:
|
||||
path:
|
||||
includes: ['test/**', 'src/**']
|
||||
|
||||
notify:
|
||||
image: git.polynom.me/papatutuwawa/woodpecker-xmpp
|
||||
settings:
|
||||
xmpp_tls: 1
|
||||
xmpp_is_muc: 1
|
||||
xmpp_recipient: moxxy-build@muc.moxxy.org
|
||||
xmpp_alias: 2Bot
|
||||
secrets: [ xmpp_jid, xmpp_password, xmpp_server ]
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
108
CONTRIBUTING.md
Normal file
@@ -0,0 +1,108 @@
|
||||
# Contribution Guide
|
||||
|
||||
Thanks for your interest in the Moxxy XMPP client! This document contains guidelines and guides for working
|
||||
on the Moxxy codebase.
|
||||
|
||||
## Non-Code Contributions
|
||||
### Translations
|
||||
|
||||
You can contribute to Moxxy by translating parts of Moxxy into a language you can speak. To do that, head over to [Codeberg's Weblate instance](https://translate.codeberg.org/projects/moxxy/moxxy/), where you can start translating.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Before building or working on Moxxy, please make sure that your development environment is correctly set up.
|
||||
Moxxy requires Flutter 3.7.3, since we use a fork of the Flutter library, and the JDK 17. Building Moxxy
|
||||
is currently only supported for Android.
|
||||
|
||||
### Android Studio
|
||||
|
||||
If you use Android Studio, make sure that you use version "Flamingo Canary 3", as that one comes bundled with
|
||||
JDK 17, instead of JDK 11 ([See here](https://codeberg.org/moxxy/moxxy/issues/252)). If that is
|
||||
not an option, you can manually add a JDK 17 installation in Android Studio and tell the Flutter addon
|
||||
to use that installation instead.
|
||||
|
||||
### NixOS
|
||||
|
||||
If you use NixOS or Nix, you can use the dev shell provided by the Flake in the repository's root. It contains
|
||||
the correct JDK and Flutter version. However, make sure that other environment variables, like
|
||||
`ANDROID_HOME` and `ANDROID_AVD_HOME`, are correctly set.
|
||||
|
||||
## Building
|
||||
|
||||
Currently, Moxxy contains a git submodule. While it is not utilised at the moment, it contains
|
||||
the list of suggested XMPP providers to use for auto-registration. To properly clone the
|
||||
repository, use `git clone --recursive https://codeberg.org/moxxy/moxxy.git`
|
||||
|
||||
In order to build Moxxy, you first have to run the code generator. To do that, first install all dependencies with
|
||||
`flutter pub get`. Next, run the code generator using `flutter pub run build_runner build`. This builds required
|
||||
data classes and the i18n support. Next, run `dart run pigeon --input pigeon/quirks.dart` to generate the communication
|
||||
channels with the native code.
|
||||
|
||||
Finally, you can build Moxxy using `flutter run`, if you want to test a change, or `flutter build apk --release` to build
|
||||
an optimized release build. The release builds found in the repository's releases are build using `flutter build apk --release --split-per-abi`.
|
||||
|
||||
## Contributing
|
||||
|
||||
If you want to fix a small issue, you can just fork, create a new branch, and start working right away. However, if you want to work
|
||||
on a bigger feature, please first create an issue (if an issue does not already exist) or join the [development chat](xmpp:moxxy@muc.moxxy.org?join) (xmpp:moxxy@muc.moxxy.org?join)
|
||||
to discuss the feature first.
|
||||
|
||||
Before creating a pull request, please make sure you checked every item on the following checklist:
|
||||
|
||||
- [ ] I formatted the code with the dart formatter (`dart format`) before running the linter
|
||||
- [ ] I ran the linter (`flutter analyze`) and introduced no new linter warnings
|
||||
- [ ] I ran the tests (`flutter test`) and introduced no new failing tests
|
||||
- [ ] I used [gitlint](https://github.com/jorisroovers/gitlint) to ensure propper formatting of my commig messages
|
||||
|
||||
If you think that your code is ready for a pull request, but you are not sure if it is ready, prefix the PR's title with "WIP: ", so that discussion
|
||||
can happen there. If you think your PR is ready for review, remove the "WIP: " prefix.
|
||||
|
||||
### Android
|
||||
|
||||
In case you modified the Android-native code, please also make sure that you checked every item on the following checklist:
|
||||
|
||||
- [ ] I checked that [ktlint](https://github.com/pinterest/ktlint) is not showing any linting issues (`ktlint android/app/src/main/kotlin/org/moxxy/moxxyv2/ '!android/app/src/main/kotlin/org/moxxy/moxxyv2/quirks'`)
|
||||
|
||||
### Tips
|
||||
#### `data_classes.yaml`
|
||||
|
||||
When you add, remove, or modify data classes in `data_classes.yaml`, you need to rebuild the classes using `flutter pub run build_runner build`. However, there appears
|
||||
to be a bug in my own build runner script, which prevents the data classes from being
|
||||
rebuilt if they are changed. To fix this, remove the generated data classes by running
|
||||
`rm lib/shared/*.moxxy.dart`, after which build_runner will rebuild the data classes.
|
||||
|
||||
### Code Guidelines
|
||||
#### Translations
|
||||
|
||||
If your code adds new strings that should be translated, only add them to the base
|
||||
language, which is English. Even if you know more than English, do not add the keys
|
||||
to other language files. To prevent merge conflicts between Weblate and the repository,
|
||||
all other languages are managed via [Codeberg's Weblate instance](https://translate.codeberg.org/projects/moxxy/moxxy/).
|
||||
|
||||
#### Commit messages
|
||||
|
||||
Commit messages should be uniformly formatted. `gitlint` is a linter for commit messages that enforces those guidelines. They are defined in the `.gitlint` file
|
||||
at the root of the repository. `gitlint` can be installed as a pre-commit hook using
|
||||
`gitlint install-hook`. That way, `gitlint` runs on every commit and warns you if the
|
||||
commit message violates any of the defined rules.
|
||||
|
||||
Commit messages always follow the following format:
|
||||
|
||||
```
|
||||
<type>(<areas>): <summary>
|
||||
|
||||
<full message>
|
||||
```
|
||||
|
||||
`<type>` is the type of action that was performed in the commit and is one of the following: `feat` (Addition of a feature), `fix` (Fix a bug or other issue), `chore` (Bump dependency versions, fix formatter issues), `refactor` (A bigger "moving around" or rewriting of code), `docs` (Commits that just touch the documentation, be it code or, for example, the README).
|
||||
|
||||
`<areas>` are the areas inside the code that are touched by the change. They are a comma-separated list of one or more of the following: `service` (Everything inside `lib/service`), `ui` (Everything inside `lib/ui`), `shared` (Everything inside `lib/shared`), `all` (A bit of everything is involved), `tests` (Everyting inside `test` or `integration_test`), `i18n` (The translation files have been modified), `docs` (Documentation of any kind), `flake` (The NixOS flake has been modified).
|
||||
|
||||
`<summary>` is the summary of the entire commit in a few words. Make that that the entire
|
||||
first line is not longer than 72 characters. `<summary>` also must start with an uppercase
|
||||
letter or a number.
|
||||
|
||||
The `<full message>` is optional. In case your commit requires more explanation, write it
|
||||
there. Make sure that there is an empty line between the full message and the summary line.
|
||||
|
||||
The exception to these rules is a commit message of the format `release: Release version x.y.z`, as it touches everything and is thus implicitly using `(all)` as an area code.
|
||||
41
README.md
@@ -2,34 +2,29 @@
|
||||
|
||||
An experimental XMPP client that tries to be as easy, modern and beautiful as possible.
|
||||
|
||||
The code is also available on [codeberg](https://codeberg.org/moxxy/moxxyv2).
|
||||
The code is also available on [Codeberg](https://codeberg.org/moxxy/moxxy).
|
||||
|
||||
[<img src="https://gitlab.com/IzzyOnDroid/repo/-/raw/master/assets/IzzyOnDroid.png" alt="Get it on IzzyOnDroid" height="80">](https://apt.izzysoft.de/fdroid/index/apk/org.moxxy.moxxyv2)
|
||||
|
||||
Or [get the latest APK from Codeberg](https://codeberg.org/moxxy/moxxy/releases/latest).
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
||||
[<img src="https://codeberg.org/moxxy/moxxyv2/raw/branch/master/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png" width="20%"></img>](./fastlane/metadata/android/en-US/images/phoneScreenshots/1.png)
|
||||
[<img src="https://codeberg.org/moxxy/moxxyv2/raw/branch/master/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png" width="20%"></img>](./fastlane/metadata/android/en-US/images/phoneScreenshots/2.png)
|
||||
|
||||
## Developing and Building
|
||||
## Building and Contributing
|
||||
|
||||
Clone using `git clone --recursive https://github.com/Polynomdivision/moxxyv2.git`.
|
||||
|
||||
In order to build Moxxy, you need to have [Flutter](https://docs.flutter.dev/get-started/install) set
|
||||
up. If you are running NixOS or using Nix, you can also use the Flake at the root of the repository
|
||||
by running `nix develop` to get a development shell including everything that is needed.
|
||||
|
||||
Before building Moxxy, you need to generate all needed data classes. To do this, run
|
||||
`flutter pub get` to install all dependencies. Then run `flutter pub run build_runner build` to generate
|
||||
state classes, data classes and the database schemata. After that is done, you can either
|
||||
build the app with `flutter build apk --debug` to create a debug build,
|
||||
`flutter build apk --release` to create a relase build or just run the app in development
|
||||
mode with `flutter run`.
|
||||
|
||||
After implementing a change or a feature, please ensure that nothing is broken by the change
|
||||
by running `flutter test` afterwards. Also make sure that the code passes the linter by
|
||||
running `flutter analyze`. This project also uses [gitlint](https://github.com/jorisroovers/gitlint)
|
||||
to ensure uniform formatting of commit messages.
|
||||
For build and contribution guidelines, please refer to [`CONTRIBUTING.md`](./CONTRIBUTING.md)
|
||||
|
||||
Also, feel free to join the development chat at `moxxy@muc.moxxy.org`.
|
||||
|
||||
### Translating
|
||||
|
||||
If you want to contribute by translating Moxxy, you can do that on [Codeberg's Weblate instance](https://translate.codeberg.org/projects/moxxy/moxxy/).
|
||||
|
||||
[](https://translate.codeberg.org/engage/moxxy/)
|
||||
|
||||
## A Bit of History
|
||||
|
||||
This project is the successor of moxxyv1, which was written in *React Native* and abandoned
|
||||
@@ -42,3 +37,9 @@ See `./LICENSE`.
|
||||
## Special Thanks
|
||||
|
||||
- New logo designed by [Synoh](https://twitter.com/synoh_manda)
|
||||
|
||||
## Support
|
||||
|
||||
If you like what I do and you want to support me, feel free to donate to me on Ko-Fi.
|
||||
|
||||
[<img src="https://codeberg.org/moxxy/moxxyv2/raw/branch/master/assets/repo/kofi.png" height="36" style="height: 36px; border: 0px;"></img>](https://ko-fi.com/papatutuwawa)
|
||||
|
||||
@@ -6,10 +6,12 @@ linter:
|
||||
use_setters_to_change_properties: false
|
||||
avoid_positional_boolean_parameters: false
|
||||
avoid_bool_literals_in_conditional_expressions: false
|
||||
file_names: false
|
||||
|
||||
analyzer:
|
||||
exclude:
|
||||
- "**/*.g.dart"
|
||||
- "**/*.freezed.dart"
|
||||
- "**/*.moxxy.dart"
|
||||
- "test/"
|
||||
- "lib/i18n/*.dart"
|
||||
- "pigeon/quirks.dart"
|
||||
|
||||
@@ -26,12 +26,11 @@ apply plugin: 'kotlin-android'
|
||||
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
||||
|
||||
android {
|
||||
//compileSdkVersion flutter.compileSdkVersion
|
||||
compileSdkVersion 33
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_17
|
||||
targetCompatibility JavaVersion.VERSION_17
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
|
||||
kotlinOptions {
|
||||
@@ -43,24 +42,24 @@ android {
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
applicationId "me.polynom.moxxyv2"
|
||||
applicationId "org.moxxy.moxxyv2"
|
||||
|
||||
// TODO: Remove once https://github.com/fluttercommunity/flutter_launcher_icons/pull/313 is merged
|
||||
minSdkVersion 23
|
||||
targetSdkVersion 31
|
||||
//minSdkVersion flutter.minSdkVersion
|
||||
//targetSdkVersion flutter.targetSdkVersion
|
||||
minSdkVersion 26
|
||||
targetSdkVersion 33
|
||||
versionCode flutterVersionCode.toInteger()
|
||||
versionName flutterVersionName
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
// TODO: Add your own signing config for the release build.
|
||||
// Signing with the debug keys for now, so `flutter run --release` works.
|
||||
signingConfig signingConfigs.debug
|
||||
// Externally signed using a security key
|
||||
signingConfig null
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compileOnly rootProject.findProject(":moxxy_native")
|
||||
}
|
||||
}
|
||||
|
||||
flutter {
|
||||
@@ -69,4 +68,5 @@ flutter {
|
||||
|
||||
dependencies {
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||
implementation "androidx.activity:activity-ktx:1.7.2"
|
||||
}
|
||||
|
||||
1
android/app/proguard-rules.pro
vendored
Normal file
@@ -0,0 +1 @@
|
||||
-keep class net.sqlcipher.** { *; }
|
||||
@@ -1,5 +1,5 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.example.moxxyv2">
|
||||
package="org.moxxy.moxxyv2">
|
||||
<!-- Flutter needs it to communicate with the running application
|
||||
to allow setting breakpoints, to provide hot reload, etc.
|
||||
-->
|
||||
|
||||
@@ -1,45 +1,73 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.example.moxxyv2">
|
||||
<application
|
||||
android:label="Moxxy"
|
||||
package="org.moxxy.moxxyv2">
|
||||
|
||||
<application
|
||||
android:name="${applicationName}"
|
||||
android:icon="@mipmap/ic_launcher">
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="Moxxy">
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:exported="true"
|
||||
android:launchMode="singleTop"
|
||||
android:theme="@style/LaunchTheme"
|
||||
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
||||
android:exported="true"
|
||||
android:hardwareAccelerated="true"
|
||||
android:launchMode="singleTask"
|
||||
android:theme="@style/LaunchTheme"
|
||||
android:windowSoftInputMode="adjustResize">
|
||||
<!-- Specifies an Android theme to apply to this Activity as soon as
|
||||
the Android process has started. This theme is visible to the user
|
||||
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"
|
||||
/>
|
||||
<meta-data
|
||||
android:name="flutterEmbedding"
|
||||
android:value="2"
|
||||
/>
|
||||
android:name="io.flutter.embedding.android.NormalTheme"
|
||||
android:resource="@style/NormalTheme" />
|
||||
<meta-data
|
||||
android:name="flutterEmbedding"
|
||||
android:value="2" />
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
|
||||
<!-- Allow receiving share intents for all kinds of things -->
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.SEND" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<data android:mimeType="*/*" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.SEND_MULTIPLE" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<data android:mimeType="*/*" />
|
||||
</intent-filter>
|
||||
|
||||
<!-- Enable usage of direct share -->
|
||||
<meta-data
|
||||
android:name="android.service.chooser.chooser_target_service"
|
||||
android:value="androidx.sharetarget.ChooserTargetServiceCompat" />
|
||||
<meta-data
|
||||
android:name="android.app.shortcuts"
|
||||
android:resource="@xml/share_targets" />
|
||||
</activity>
|
||||
|
||||
<!-- Don't delete the meta-data below.
|
||||
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
|
||||
<meta-data
|
||||
android:name="flutterEmbedding"
|
||||
android:value="2" />
|
||||
</application>
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<queries>
|
||||
<intent>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<data android:scheme="https" />
|
||||
</intent>
|
||||
</queries>
|
||||
</application>
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.READ_CONTACTS" />
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
||||
<uses-permission android:name="android.permission.VIBRATE" />
|
||||
|
||||
<queries>
|
||||
<intent>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<data android:scheme="https" />
|
||||
</intent>
|
||||
</queries>
|
||||
</manifest>
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
package com.example.moxxyv2
|
||||
|
||||
import io.flutter.embedding.android.FlutterActivity
|
||||
|
||||
class MainActivity: FlutterActivity() {
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package org.moxxy.moxxyv2
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import io.flutter.embedding.android.FlutterActivity
|
||||
import io.flutter.embedding.engine.FlutterEngine
|
||||
import org.moxxy.moxxyv2.quirks.MoxxyQuirkApi
|
||||
import org.moxxy.moxxyv2.quirks.QuirkNotificationEvent
|
||||
import org.moxxy.moxxyv2.quirks.QuirkNotificationEventType
|
||||
|
||||
class MainActivity : FlutterActivity(), MoxxyQuirkApi {
|
||||
private var lastEvent: QuirkNotificationEvent? = null
|
||||
|
||||
private fun handleIntent(intent: Intent?): Boolean {
|
||||
if (intent == null) return false
|
||||
|
||||
when (intent.action) {
|
||||
org.moxxy.moxxy_native.TAP_ACTION -> {
|
||||
Log.d("Moxxy", "Handling tap data")
|
||||
lastEvent = QuirkNotificationEvent(
|
||||
intent.getLongExtra(org.moxxy.moxxy_native.NOTIFICATION_EXTRA_ID_KEY, -1),
|
||||
intent.getStringExtra(org.moxxy.moxxy_native.NOTIFICATION_EXTRA_JID_KEY)!!,
|
||||
QuirkNotificationEventType.OPEN,
|
||||
null,
|
||||
org.moxxy.moxxy_native.notifications.extractPayloadMapFromIntent(intent),
|
||||
)
|
||||
return true
|
||||
}
|
||||
else -> {
|
||||
Log.d("Moxxy", "Unknown intent action: ${intent.action}")
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
|
||||
MoxxyQuirkApi.setUp(flutterEngine.dartExecutor.binaryMessenger, this)
|
||||
super.configureFlutterEngine(flutterEngine)
|
||||
}
|
||||
|
||||
override fun onNewIntent(intent: Intent) {
|
||||
super.onNewIntent(intent)
|
||||
handleIntent(intent)
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
handleIntent(intent)
|
||||
}
|
||||
|
||||
override fun earlyNotificationEventQuirk(): QuirkNotificationEvent? {
|
||||
val event = lastEvent
|
||||
lastEvent = null
|
||||
return event
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,150 @@
|
||||
// Autogenerated from Pigeon (v11.0.1), do not edit directly.
|
||||
// See also: https://pub.dev/packages/pigeon
|
||||
|
||||
package org.moxxy.moxxyv2.quirks
|
||||
|
||||
import android.util.Log
|
||||
import io.flutter.plugin.common.BasicMessageChannel
|
||||
import io.flutter.plugin.common.BinaryMessenger
|
||||
import io.flutter.plugin.common.MessageCodec
|
||||
import io.flutter.plugin.common.StandardMessageCodec
|
||||
import java.io.ByteArrayOutputStream
|
||||
import java.nio.ByteBuffer
|
||||
|
||||
private fun wrapResult(result: Any?): List<Any?> {
|
||||
return listOf(result)
|
||||
}
|
||||
|
||||
private fun wrapError(exception: Throwable): List<Any?> {
|
||||
if (exception is FlutterError) {
|
||||
return listOf(
|
||||
exception.code,
|
||||
exception.message,
|
||||
exception.details
|
||||
)
|
||||
} else {
|
||||
return listOf(
|
||||
exception.javaClass.simpleName,
|
||||
exception.toString(),
|
||||
"Cause: " + exception.cause + ", Stacktrace: " + Log.getStackTraceString(exception)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Error class for passing custom error details to Flutter via a thrown PlatformException.
|
||||
* @property code The error code.
|
||||
* @property message The error message.
|
||||
* @property details The error details. Must be a datatype supported by the api codec.
|
||||
*/
|
||||
class FlutterError (
|
||||
val code: String,
|
||||
override val message: String? = null,
|
||||
val details: Any? = null
|
||||
) : Throwable()
|
||||
|
||||
enum class QuirkNotificationEventType(val raw: Int) {
|
||||
MARKASREAD(0),
|
||||
REPLY(1),
|
||||
OPEN(2);
|
||||
|
||||
companion object {
|
||||
fun ofRaw(raw: Int): QuirkNotificationEventType? {
|
||||
return values().firstOrNull { it.raw == raw }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Generated class from Pigeon that represents data sent in messages. */
|
||||
data class QuirkNotificationEvent (
|
||||
/** The notification id. */
|
||||
val id: Long,
|
||||
/** The JID the notification was for. */
|
||||
val jid: String,
|
||||
/** The type of event. */
|
||||
val type: QuirkNotificationEventType,
|
||||
/**
|
||||
* An optional payload.
|
||||
* - type == NotificationType.reply: The reply message text.
|
||||
* Otherwise: undefined.
|
||||
*/
|
||||
val payload: String? = null,
|
||||
/** Extra data. Only set when type == NotificationType.reply. */
|
||||
val extra: Map<String?, String?>? = null
|
||||
|
||||
) {
|
||||
companion object {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
fun fromList(list: List<Any?>): QuirkNotificationEvent {
|
||||
val id = list[0].let { if (it is Int) it.toLong() else it as Long }
|
||||
val jid = list[1] as String
|
||||
val type = QuirkNotificationEventType.ofRaw(list[2] as Int)!!
|
||||
val payload = list[3] as String?
|
||||
val extra = list[4] as Map<String?, String?>?
|
||||
return QuirkNotificationEvent(id, jid, type, payload, extra)
|
||||
}
|
||||
}
|
||||
fun toList(): List<Any?> {
|
||||
return listOf<Any?>(
|
||||
id,
|
||||
jid,
|
||||
type.raw,
|
||||
payload,
|
||||
extra,
|
||||
)
|
||||
}
|
||||
}
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
private object MoxxyQuirkApiCodec : StandardMessageCodec() {
|
||||
override fun readValueOfType(type: Byte, buffer: ByteBuffer): Any? {
|
||||
return when (type) {
|
||||
128.toByte() -> {
|
||||
return (readValue(buffer) as? List<Any?>)?.let {
|
||||
QuirkNotificationEvent.fromList(it)
|
||||
}
|
||||
}
|
||||
else -> super.readValueOfType(type, buffer)
|
||||
}
|
||||
}
|
||||
override fun writeValue(stream: ByteArrayOutputStream, value: Any?) {
|
||||
when (value) {
|
||||
is QuirkNotificationEvent -> {
|
||||
stream.write(128)
|
||||
writeValue(stream, value.toList())
|
||||
}
|
||||
else -> super.writeValue(stream, value)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Generated interface from Pigeon that represents a handler of messages from Flutter. */
|
||||
interface MoxxyQuirkApi {
|
||||
fun earlyNotificationEventQuirk(): QuirkNotificationEvent?
|
||||
|
||||
companion object {
|
||||
/** The codec used by MoxxyQuirkApi. */
|
||||
val codec: MessageCodec<Any?> by lazy {
|
||||
MoxxyQuirkApiCodec
|
||||
}
|
||||
/** Sets up an instance of `MoxxyQuirkApi` to handle messages through the `binaryMessenger`. */
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
fun setUp(binaryMessenger: BinaryMessenger, api: MoxxyQuirkApi?) {
|
||||
run {
|
||||
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.moxxyv2.MoxxyQuirkApi.earlyNotificationEventQuirk", codec)
|
||||
if (api != null) {
|
||||
channel.setMessageHandler { _, reply ->
|
||||
var wrapped: List<Any?>
|
||||
try {
|
||||
wrapped = listOf<Any?>(api.earlyNotificationEventQuirk())
|
||||
} catch (exception: Throwable) {
|
||||
wrapped = wrapError(exception)
|
||||
}
|
||||
reply.reply(wrapped)
|
||||
}
|
||||
} else {
|
||||
channel.setMessageHandler(null)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
7
android/app/src/main/res/xml/share_targets.xml
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<share-target android:targetClass="org.moxxy.moxxyv2.MainActivity">
|
||||
<data android:mimeType="*/*" />
|
||||
<category android:name="org.moxxy.moxxyv2.dynamic_share_target" />
|
||||
</share-target>
|
||||
</shortcuts>
|
||||
@@ -1,5 +1,5 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.example.moxxyv2">
|
||||
package="org.moxxy.moxxyv2">
|
||||
<!-- Flutter needs it to communicate with the running application
|
||||
to allow setting breakpoints, to provide hot reload, etc.
|
||||
-->
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
buildscript {
|
||||
ext.kotlin_version = '1.6.10'
|
||||
ext.kotlin_version = '1.8.21'
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
@@ -26,6 +26,6 @@ subprojects {
|
||||
project.evaluationDependsOn(':app')
|
||||
}
|
||||
|
||||
task clean(type: Delete) {
|
||||
tasks.register("clean", Delete) {
|
||||
delete rootProject.buildDir
|
||||
}
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
org.gradle.jvmargs=-Xmx1536M
|
||||
android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
android.enableJetifier=true
|
||||
BIN
assets/fonts/RobotoMono-Regular.ttf
Normal file
409
assets/i18n/strings_de.i18n.json
Normal file
@@ -0,0 +1,409 @@
|
||||
{
|
||||
"language": "Deutsch",
|
||||
"global": {
|
||||
"title": "Moxxy",
|
||||
"moxxySubtitle": "Ein Experiment im Entwickeln eines modernen, einfachen und schönen XMPP-Clients.",
|
||||
"dialogAccept": "Okay",
|
||||
"dialogCancel": "Abbrechen",
|
||||
"yes": "Ja",
|
||||
"no": "Nein"
|
||||
},
|
||||
"notifications": {
|
||||
"permanent": {
|
||||
"idle": "Bereit",
|
||||
"ready": "Bereit zum Nachrichtenempfang",
|
||||
"connecting": "Verbinde...",
|
||||
"disconnect": "Keine Verbindung",
|
||||
"error": "Fehler"
|
||||
},
|
||||
"message": {
|
||||
"reply": "Antworten",
|
||||
"markAsRead": "Als gelesen markieren"
|
||||
},
|
||||
"channels": {
|
||||
"messagesChannelName": "Nachrichten",
|
||||
"messagesChannelDescription": "Empfangene Nachrichten",
|
||||
"warningChannelName": "Warnungen",
|
||||
"warningChannelDescription": "Warnungen im Bezug auf Moxxy"
|
||||
},
|
||||
"titles": {
|
||||
"error": "Fehler"
|
||||
}
|
||||
},
|
||||
"dateTime": {
|
||||
"justNow": "Gerade",
|
||||
"nMinutesAgo": "vor ${min}min",
|
||||
"mondayAbbrev": "Mon",
|
||||
"tuesdayAbbrev": "Die",
|
||||
"wednessdayAbbrev": "Mit",
|
||||
"thursdayAbbrev": "Don",
|
||||
"fridayAbbrev": "Fre",
|
||||
"saturdayAbbrev": "Sam",
|
||||
"sundayAbbrev": "Son",
|
||||
"january": "Januar",
|
||||
"february": "Februar",
|
||||
"march": "März",
|
||||
"april": "April",
|
||||
"may": "Mai",
|
||||
"june": "Juni",
|
||||
"july": "Juli",
|
||||
"august": "August",
|
||||
"september": "September",
|
||||
"october": "Oktober",
|
||||
"november": "November",
|
||||
"december": "Dezember",
|
||||
"today": "Heute",
|
||||
"yesterday": "Gestern"
|
||||
},
|
||||
"messages": {
|
||||
"image": "Bild",
|
||||
"video": "Video",
|
||||
"audio": "Audio",
|
||||
"file": "Datei",
|
||||
"sticker": "Sticker",
|
||||
"retracted": "Die Nachricht wurde zurückgezogen",
|
||||
"retractedFallback": "Eine vorherige Nachricht wurde zurückgezogen. Dein Client unterstüzt dies jedoch nicht",
|
||||
"you": "Du"
|
||||
},
|
||||
"errors": {
|
||||
"general": {
|
||||
"noInternet": "Keine Internetverbindung."
|
||||
},
|
||||
"filePicker": {
|
||||
"permissionDenied": "Die Speicherberechtigung wurde nicht erteilt."
|
||||
},
|
||||
"omemo": {
|
||||
"couldNotPublish": "Konnte die kryptographische Identität nicht auf dem Server veröffentlichen. Ende-zu-Ende-Verschlüsselung funktioniert eventuell nicht.",
|
||||
"notEncryptedForDevice": "Die Nachricht wurde nicht für dieses Gerät verschlüsselt",
|
||||
"invalidHmac": "Die Nachricht konnte nicht entschlüsselt werden",
|
||||
"noDecryptionKey": "Kein Schlüssel zum Entschlüsseln vorhanden",
|
||||
"messageInvalidAfixElement": "Ungültige verschlüsselte Nachricht",
|
||||
"verificationInvalidOmemoUrl": "Ungültiger OMEMO:2 Fingerabdruck",
|
||||
"verificationWrongJid": "Falsche XMPP-Addresse",
|
||||
"verificationWrongDevice": "Falsches OMEMO:2 Gerät",
|
||||
"verificationNotInList": "OMEMO:2 Gerät unbekannt",
|
||||
"verificationWrongFingerprint": "Falscher OMEMO:2 Fingerabdruck"
|
||||
},
|
||||
"connection": {
|
||||
"connectionTimeout": "Verbindung zum Server nicht möglich",
|
||||
"saslAccountDisabled": "Dein Konto ist deaktiviert",
|
||||
"saslInvalidCredentials": "Deine Anmeldedaten sind ungültig",
|
||||
"unrecoverable": "Verbindung zum Server durch nicht behebbaren Fehler verloren"
|
||||
},
|
||||
"login": {
|
||||
"saslFailed": "Ungültige Logindaten",
|
||||
"startTlsFailed": "Konnte keine sichere Verbindung zum Server aufbauen",
|
||||
"noConnection": "Konnte keine Verbindung zum Server aufbauen",
|
||||
"unspecified": "Unbestimmter Fehler"
|
||||
},
|
||||
"message": {
|
||||
"unspecified": "Unbekannter Fehler",
|
||||
"fileUploadFailed": "Das Hochladen der Datei ist fehlgeschlagen",
|
||||
"contactDoesntSupportOmemo": "Der Kontakt unterstützt Verschlüsselung mit OMEMO:2 nicht",
|
||||
"fileDownloadFailed": "Das Herunterladen der Datei ist fehlgeschlagen",
|
||||
"serviceUnavailable": "Die Nachricht konnte nicht gesendet werden",
|
||||
"remoteServerTimeout": "Die Nachricht konnte nicht zugestellt werden",
|
||||
"remoteServerNotFound": "Die Nachricht konnte nicht gesendet werden, da der Empfängerserver unbekannt ist",
|
||||
"failedToEncrypt": "Die Nachricht konnte nicht verschlüsselt werden",
|
||||
"failedToEncryptFile": "Die Datei konnte nicht verschlüsselt werden",
|
||||
"failedToDecryptFile": "Die Datei konnte nicht entschlüsselt werden",
|
||||
"fileNotEncrypted": "Der Chat ist verschlüsselt, aber die Datei wurde unverschlüsselt übertragen"
|
||||
},
|
||||
"conversation": {
|
||||
"audioRecordingError": "Fehler beim Fertigstellen der Audioaufnahme",
|
||||
"openFileNoAppError": "Keine App vorhanden, um die Datei zu öffnen",
|
||||
"openFileGenericError": "Fehler beim Öffnen der Datei",
|
||||
"messageErrorDialogTitle": "Fehler"
|
||||
},
|
||||
"newChat": {
|
||||
"remoteServerError": "Konnte den Server nicht erreichen.",
|
||||
"groupchatUnsupported": "Das Beitreten eines Gruppenchats ist aktuell nicht unterstützt.",
|
||||
"unknown": "Unbekannter Fehler."
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
"message": {
|
||||
"integrityCheckFailed": "Konnte Integrität der Datei nicht überprüfen"
|
||||
},
|
||||
"conversation": {
|
||||
"holdForLonger": "Button länger gedrückt halten, um eine Sprachnachricht aufzunehmen"
|
||||
}
|
||||
},
|
||||
"pages": {
|
||||
"intro": {
|
||||
"noAccount": "Kein XMPP-Konto vorhanden? Keine Sorge, es ist ganz einfach, eines zu erstellen.",
|
||||
"loginButton": "Einloggen",
|
||||
"registerButton": "Registrieren"
|
||||
},
|
||||
"login": {
|
||||
"title": "Login",
|
||||
"xmppAddress": "XMPP-Adresse",
|
||||
"password": "Passwort",
|
||||
"advancedOptions": "Fortgeschrittene Optionen",
|
||||
"createAccount": "Konto auf dem Server erstellen"
|
||||
},
|
||||
"conversations": {
|
||||
"speeddialNewChat": "Neuer chat",
|
||||
"speeddialJoinGroupchat": "Gruppenchat beitreten",
|
||||
"speeddialAddNoteToSelf": "Notiz an mich",
|
||||
"overlaySettings": "Einstellungen",
|
||||
"noOpenChats": "Du hast keine offenen chats",
|
||||
"startChat": "Einen chat anfangen",
|
||||
"closeChat": "Chat schließen",
|
||||
"closeChatBody": "Bist du dir sicher, dass du den Chat mit ${conversationTitle} schließen möchtest?",
|
||||
"markAsRead": "Als gelesen markieren"
|
||||
},
|
||||
"conversation": {
|
||||
"unencrypted": "Unverschlüsselt",
|
||||
"encrypted": "Verschlüsselt",
|
||||
"closeChat": "Chat schließen",
|
||||
"closeChatConfirmTitle": "Chat schließen",
|
||||
"closeChatConfirmSubtext": "Bist Du dir sicher, dass du den Chat schließen möchtest?",
|
||||
"blockShort": "Blockieren",
|
||||
"blockUser": "Nutzer blockieren",
|
||||
"online": "Online",
|
||||
"retract": "Nachricht löschen",
|
||||
"retractBody": "Bist du dir sicher, dass du die Nachricht löschen willst? Bedenke, dass dies nur eine Bitte ist, die dein gegenüber nicht beachten muss.",
|
||||
"forward": "Weiterleiten",
|
||||
"edit": "Bearbeiten",
|
||||
"quote": "Zitieren",
|
||||
"copy": "Inhalt kopieren",
|
||||
"messageCopied": "Nachrichteninhalt in die Zwischenablage kopiert",
|
||||
"addReaction": "Reaktion hinzufügen",
|
||||
"showError": "Fehler anzeigen",
|
||||
"showWarning": "Warnung anzeigen",
|
||||
"warning": "Warnung",
|
||||
"addToContacts": "Zu Kontaken hinzufügen",
|
||||
"addToContactsTitle": "${jid} zu Kontakten hinzufügen",
|
||||
"addToContactsBody": "Bist du dir sicher, dass du ${jid} zu deinen Kontakten hinzufügen möchtest?",
|
||||
"stickerPickerNoStickersLine1": "Du hast keine Stickerpacks installiert.",
|
||||
"stickerPickerNoStickersLine2": "Diese können in den Stickereinstellungen installiert werden.",
|
||||
"stickerSettings": "Stickereinstellungen",
|
||||
"newDeviceMessage": {
|
||||
"one": "Ein neues Gerät wurde hinzugefügt",
|
||||
"other": "Mehrere neue Geräte wurden hinzugefügt"
|
||||
},
|
||||
"replacedDeviceMessage": {
|
||||
"one": "Ein Gerät hat sich verändert",
|
||||
"other": "Mehrere Geräte haben sich verändert"
|
||||
},
|
||||
"messageHint": "Nachricht senden...",
|
||||
"sendImages": "Bilder senden",
|
||||
"sendFiles": "Dateien senden",
|
||||
"takePhotos": "Bilder aufnehmen"
|
||||
},
|
||||
"startchat": {
|
||||
"title": "Neuer Chat",
|
||||
"xmppAddress": "XMPP-Adresse",
|
||||
"subtitle": "Du kannst einen neuen Chat beginnen, indem du entweder eine XMPP-Adresse eingibst oder einen QR-Code scannst.",
|
||||
"buttonAddToContact": "Neuen Chat beginnen"
|
||||
},
|
||||
"newconversation": {
|
||||
"title": "Neuer Chat",
|
||||
"startChat": "Neuen Chat beginnen",
|
||||
"createGroupchat": "Gruppenchat erstellen"
|
||||
},
|
||||
"crop": {
|
||||
"setProfilePicture": "Als Profilbild festlegen"
|
||||
},
|
||||
"shareselection": {
|
||||
"shareWith": "Teilen mit...",
|
||||
"confirmTitle": "Dateien senden?",
|
||||
"confirmBody": "Einer oder mehr Chats sind unverschlüsselt. Das bedeutet, dass die Dateien dem Server unverschlüsselt vorliegen. Dateien trotzdem senden?"
|
||||
},
|
||||
"profile": {
|
||||
"general": {
|
||||
"omemo": "Sicherheit",
|
||||
"profile": "Profil",
|
||||
"media": "Medien"
|
||||
},
|
||||
"conversation": {
|
||||
"notifications": "Benachrichtigungen",
|
||||
"notificationsMuted": "Stumm",
|
||||
"notificationsEnabled": "Eingeschaltet",
|
||||
"sharedMedia": "Medien"
|
||||
},
|
||||
"owndevices": {
|
||||
"title": "Eigene Geräte",
|
||||
"thisDevice": "Dieses Gerät",
|
||||
"otherDevices": "Andere Geräte",
|
||||
"deleteDeviceConfirmTitle": "Gerät löschen",
|
||||
"deleteDeviceConfirmBody": "Das bedeutet, dass Kontakte für dieses Gerät nichtmehr verschlüsseln können. Fortfahren?",
|
||||
"recreateOwnSessions": "Sessions neuerstellen",
|
||||
"recreateOwnSessionsConfirmTitle": "Eigene Sessions neuerstellen?",
|
||||
"recreateOwnSessionsConfirmBody": "Das wird alle kryptographischen Sessions mit den eigenen Geräten neuerstellen. Verwende dies nur, wenn deine eigenen Geräte Entschlüsselungsfehler erzeugen.",
|
||||
"recreateOwnDevice": "Gerät neuerstellen",
|
||||
"recreateOwnDeviceConfirmTitle": "Gerät neuerstellen?",
|
||||
"recreateOwnDeviceConfirmBody": "Das wird die kryptographische Identität dieses Geräts neu erstellen. Wenn Kontakte die kryptographische Indentität verifiziert haben, dann müssen diese es erneut tun. Fortfahren?"
|
||||
},
|
||||
"devices": {
|
||||
"title": "Sicherheit",
|
||||
"recreateSessions": "Sessions zurücksetzen",
|
||||
"recreateSessionsConfirmTitle": "Sessions zurücksetzen?",
|
||||
"recreateSessionsConfirmBody": "Dies wird alle Sessions mit Deinen Geräten neu erstellen. Tue dies nur, wenn deine Geräte Fehler beim Entschlüsseln erzeugen.",
|
||||
"noSessions": "Es sind keine kryptographischen Sessions vorhanden, die für Ende-zu-Ende-Verschlüsselung verwendet werden."
|
||||
}
|
||||
},
|
||||
"blocklist": {
|
||||
"title": "Blockliste",
|
||||
"noUsersBlocked": "Du hast niemanden blockiert",
|
||||
"unblockAll": "Alle entblocken",
|
||||
"unblockAllConfirmTitle": "Alle entblocken",
|
||||
"unblockAllConfirmBody": "Bist Du dir sicher, dass du alle geblockten Personen entblocken möchtest?",
|
||||
"unblockJidConfirmTitle": "${jid} entblocken?",
|
||||
"unblockJidConfirmBody": "Bist du dir sicher, dass du ${jid} entblocken möchtest? Du wirst wieder Nachrichten von dieser Person erhalten können."
|
||||
},
|
||||
"cropbackground": {
|
||||
"blur": "Hintergrund weichzeichnen",
|
||||
"setAsBackground": "Als Hintergrundbild festlegen"
|
||||
},
|
||||
"stickerPack": {
|
||||
"removeConfirmTitle": "Stickerpack entfernen",
|
||||
"removeConfirmBody": "Bist Du Dir sicher, dass du das Stickerpack entfernen möchtest?",
|
||||
"installConfirmTitle": "Stickerpack installieren",
|
||||
"installConfirmBody": "Bist Du Dir sicher, dass Du das Stickerpack installieren möchtest?",
|
||||
"restricted": "Dieses Stickerpack ist eingeschränkt. Das bedeutet, dass es im Chat angezeigt wird, jedoch nicht versendet werden kann.",
|
||||
"fetchingFailure": "Konnte das Stickerpack nicht finden"
|
||||
},
|
||||
"settings": {
|
||||
"settings": {
|
||||
"title": "Einstellungen",
|
||||
"conversationsSection": "Unterhaltungen",
|
||||
"accountSection": "Konto",
|
||||
"signOut": "Abmelden",
|
||||
"signOutConfirmTitle": "Abmelden",
|
||||
"signOutConfirmBody": "Du bist dabei dich abzumelden. Fortfahren?",
|
||||
"miscellaneousSection": "Unterschiedlich",
|
||||
"debuggingSection": "Debugging",
|
||||
"general": "Generell"
|
||||
},
|
||||
"about": {
|
||||
"title": "Über",
|
||||
"licensed": "Lizensiert unter GPL3",
|
||||
"version": "Version ${version}",
|
||||
"viewSourceCode": "Quellcode anschauen",
|
||||
"nMoreToGo": "Noch ${n}...",
|
||||
"debugMenuShown": "Du bist jetzt ein Entwickler!",
|
||||
"debugMenuAlreadyShown": "Du bist bereits ein Entwickler!"
|
||||
},
|
||||
"appearance": {
|
||||
"title": "Aussehen",
|
||||
"languageSection": "Sprache",
|
||||
"language": "Appsprache",
|
||||
"languageSubtext": "Aktuell ausgewählt: $selectedLanguage",
|
||||
"systemLanguage": "Systemsprache"
|
||||
},
|
||||
"licenses": {
|
||||
"title": "Open-Source Lizenzen",
|
||||
"licensedUnder": "Lizensiert unter $license"
|
||||
},
|
||||
"conversation": {
|
||||
"title": "Chat",
|
||||
"appearance": "Aussehen",
|
||||
"selectBackgroundImage": "Hintergrundbild auswählen",
|
||||
"selectBackgroundImageDescription": "Dieses Bild wird als Hintergrundbild in allen Chats verwendet",
|
||||
"removeBackgroundImage": "Hintergrundbild entfernen",
|
||||
"removeBackgroundImageConfirmTitle": "Hintergrundbild entfernen",
|
||||
"removeBackgroundImageConfirmBody": "Bist Du dir sicher, dass Du das Hintergrundbild entfernen möchtest?",
|
||||
"newChatsSection": "Neue Chats",
|
||||
"newChatsMuteByDefault": "Neue Chats standardmäßig stummschalten",
|
||||
"newChatsE2EE": "Ende-zu-Ende-Verschlüsselung standardmäßig aktivieren. WARNUNG: Experimentell",
|
||||
"behaviourSection": "Verhalten",
|
||||
"contactsIntegration": "Kontaktintegration",
|
||||
"contactsIntegrationBody": "Wenn aktiviert, dann werden Kontakte aus dem Kontaktbuch verwendet, um Chatnamen und Profilbilder anzuzeigen. Dabei werden keine Daten an den Server gesendet."
|
||||
},
|
||||
"debugging": {
|
||||
"title": "Debuggingoptionen",
|
||||
"generalSection": "Generell",
|
||||
"generalEnableDebugging": "Debugging einschalten",
|
||||
"generalEncryptionPassword": "Verschlüsselungspasswort",
|
||||
"generalEncryptionPasswordSubtext": "Die Logs enthalten eventuell sensible Daten. Wähle also daher eine starke Passphrase",
|
||||
"generalLoggingIp": "Logging-IP",
|
||||
"generalLoggingIpSubtext": "Die IP-Adresse an die die Logs gesendet werden",
|
||||
"generalLoggingPort": "Logging-Port",
|
||||
"generalLoggingPortSubtext": "Der Port an den die Logs gesendet werden"
|
||||
},
|
||||
"network": {
|
||||
"title": "Netzwerk",
|
||||
"automaticDownloadsSection": "Automatische Downloads",
|
||||
"automaticDownloadsText": "Moxxy läd Dateien automatisch herunter, wenn verbunden mit...",
|
||||
"automaticDownloadsMaximumSize": "Maximale Downloadgröße",
|
||||
"automaticDownloadsMaximumSizeSubtext": "Die maximale Dateigröße, die automatisch heruntergeladen werden soll",
|
||||
"automaticDownloadAlways": "Immer",
|
||||
"wifi": "WLAN",
|
||||
"mobileData": "Mobile Daten"
|
||||
},
|
||||
"privacy": {
|
||||
"title": "Privatsphäre",
|
||||
"generalSection": "Generell",
|
||||
"showContactRequests": "Kontaktanfragen zeigen",
|
||||
"showContactRequestsSubtext": "Dies zeigt Personen in der Chatübersicht an, die Dich zu ihrer Kontaktliste hinzugefügt haben, aber noch keine Nachricht gesendet haben",
|
||||
"profilePictureVisibility": "Öffentliches Profilbild",
|
||||
"profilePictureVisibilitSubtext": "Wenn aktiviert, dann kann jeder Dein Profilbild sehen. Wenn deaktiviert, dann können nur Personen aus deiner Kontaktliste kein Profilbild sehen",
|
||||
"conversationsSection": "Unterhaltungen",
|
||||
"sendChatMarkers": "Chatmarker senden",
|
||||
"sendChatMarkersSubtext": "Dies teilt Deinem Gesprächspartner mit, ob du Nachrichten empfangen oder gelesen hast",
|
||||
"sendChatStates": "Chatstates senden",
|
||||
"sendChatStatesSubtext": "Dies teilt Deinem Gesprächspartner mit, ob du gerade im Chat aktiv bist oder schreibst",
|
||||
"redirectsSection": "Weiterleitungen",
|
||||
"redirectText": "Dies leitet Links von $serviceName, die du öffnest, an einen Proxydienst weiter, wie zum Beispiel $exampleProxy",
|
||||
"currentlySelected": "Aktuell ausgewählt: $proxy",
|
||||
"redirectsTitle": "${serviceName}weiterleitung",
|
||||
"cannotEnableRedirect": "Kann ${serviceName}weiterleitung nicht aktivieren",
|
||||
"cannotEnableRedirectSubtext": "Du must zuerst einen Proxydienst auswählen. Dazu berühre das Feld neben dem Schalter.",
|
||||
"urlEmpty": "URL kann nicht leer sein",
|
||||
"urlInvalid": "Ungültige URL",
|
||||
"redirectDialogTitle": "${serviceName}weiterleitung",
|
||||
"stickersPrivacy": "Stickerliste öffentlich halten",
|
||||
"stickersPrivacySubtext": "Wenn eingeschaltet, dann kann jeder die Liste Deiner installierten Stickerpacks sehen."
|
||||
},
|
||||
"stickers": {
|
||||
"title": "Stickers",
|
||||
"stickerSection": "Sticker",
|
||||
"displayStickers": "Sticker im Chat anzeigen",
|
||||
"autoDownload": "Sticker automatisch herunterladen",
|
||||
"autoDownloadBody": "Wenn aktiviert, dann werden Sticker automatisch heruntergeladen, wenn der Sender in der Kontaktliste ist.",
|
||||
"stickerPacksSection": "Stickerpacks",
|
||||
"importStickerPack": "Stickerpack importieren",
|
||||
"importSuccess": "Stickerpack erfolgreich importiert",
|
||||
"importFailure": "Beim Import des Stickerpacks ist ein Fehler aufgetreten",
|
||||
"stickerPackSize": "(${size})"
|
||||
},
|
||||
"storage": {
|
||||
"title": "Speicher",
|
||||
"sizePlaceholder": "Berechne...",
|
||||
"storageManagement": "Speicherverwaltung",
|
||||
"removeOldMedia": {
|
||||
"title": "Alte Medien entfernen",
|
||||
"description": "Löscht alte Medien vom Gerät"
|
||||
},
|
||||
"removeOldMediaDialog": {
|
||||
"title": "Medien löschen",
|
||||
"options": {
|
||||
"all": "Alle Medien",
|
||||
"oneMonth": "Älter als 1 Monat",
|
||||
"oneWeek": "Älter als 1 Woche"
|
||||
},
|
||||
"delete": "Löschen",
|
||||
"confirmation": {
|
||||
"body": "Bist Du dir sicher, dass du alte Medien löschen möchtest?"
|
||||
}
|
||||
},
|
||||
"viewMediaFiles": "Medien anzeigen",
|
||||
"mediaFiles": "Medien",
|
||||
"types": {
|
||||
"media": "Medien",
|
||||
"stickers": "Sticker"
|
||||
},
|
||||
"manageStickers": "Stickerpacks verwalten",
|
||||
"storageUsed": "Speicherplatz verbraucht: ${size}"
|
||||
}
|
||||
},
|
||||
"sharedMedia": {
|
||||
"empty": {
|
||||
"chat": "Keine Medien für diesen Chat vorhanden",
|
||||
"general": "Keine Medien vorhanden"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
466
assets/i18n/strings_en.i18n.json
Normal file
@@ -0,0 +1,466 @@
|
||||
{
|
||||
"language": "English",
|
||||
"global": {
|
||||
"title": "Moxxy",
|
||||
"moxxySubtitle": "An experiment into building a modern, easy and beautiful XMPP client.",
|
||||
"dialogAccept": "Okay",
|
||||
"dialogCancel": "Cancel",
|
||||
"yes": "Yes",
|
||||
"no": "No"
|
||||
},
|
||||
"notifications": {
|
||||
"permanent": {
|
||||
"idle": "Idle",
|
||||
"ready": "Ready to receive messages",
|
||||
"connecting": "Connecting…",
|
||||
"disconnect": "Disconnected",
|
||||
"error": "Error"
|
||||
},
|
||||
"message": {
|
||||
"reply": "Reply",
|
||||
"markAsRead": "Mark as read"
|
||||
},
|
||||
"channels": {
|
||||
"messagesChannelName": "Messages",
|
||||
"messagesChannelDescription": "The notification channel for received messages",
|
||||
"warningChannelName": "Warnings",
|
||||
"warningChannelDescription": "Warnings related to Moxxy",
|
||||
"serviceChannelName": "Foreground Service",
|
||||
"serviceChannelDescription": "Holds the persistent foreground service notification"
|
||||
},
|
||||
"titles": {
|
||||
"error": "Error"
|
||||
},
|
||||
"warnings": {
|
||||
"blockingError": {
|
||||
"title": "Error while blocking user",
|
||||
"body": "Could not block user ${jid} because your server does not support blocking."
|
||||
}
|
||||
},
|
||||
"errors": {
|
||||
"messageError": {
|
||||
"title": "Message delivery failure",
|
||||
"body": "Failed to deliver message to ${conversationTitle}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"permissions": {
|
||||
"requests": {
|
||||
"notification": {
|
||||
"reason": "In order to notify of incoming messages, Moxxy needs permission to show notifications."
|
||||
},
|
||||
"batterySaving": {
|
||||
"reason": "In order to receive messages in the background, Moxxy should be excempt from Android's battery saving."
|
||||
}
|
||||
},
|
||||
"allow": "Allow",
|
||||
"skip": "Skip"
|
||||
},
|
||||
"emojiPicker": {
|
||||
"noRecents": "No recents"
|
||||
},
|
||||
"dateTime": {
|
||||
"justNow": "Just now",
|
||||
"nMinutesAgo": "${min}min ago",
|
||||
"mondayAbbrev": "Mon",
|
||||
"tuesdayAbbrev": "Tue",
|
||||
"wednessdayAbbrev": "Wed",
|
||||
"thursdayAbbrev": "Thu",
|
||||
"fridayAbbrev": "Fri",
|
||||
"saturdayAbbrev": "Sat",
|
||||
"sundayAbbrev": "Sun",
|
||||
"january": "January",
|
||||
"february": "February",
|
||||
"march": "March",
|
||||
"april": "April",
|
||||
"may": "May",
|
||||
"june": "June",
|
||||
"july": "July",
|
||||
"august": "August",
|
||||
"september": "September",
|
||||
"october": "October",
|
||||
"november": "November",
|
||||
"december": "December",
|
||||
"today": "Today",
|
||||
"yesterday": "Yesterday"
|
||||
},
|
||||
"messages": {
|
||||
"image": "Image",
|
||||
"video": "Video",
|
||||
"audio": "Audio",
|
||||
"file": "File",
|
||||
"sticker": "Sticker",
|
||||
"retracted": "The message has been retracted",
|
||||
"retractedFallback": "A previous message has been retracted but your client does not support it",
|
||||
"you": "You"
|
||||
},
|
||||
"errors": {
|
||||
"general": {
|
||||
"noInternet": "Not connected to the Internet."
|
||||
},
|
||||
"filePicker": {
|
||||
"permissionDenied": "The storage permission has been denied."
|
||||
},
|
||||
"omemo": {
|
||||
"couldNotPublish": "Could not publish the cryptographic identity to the server. This means that end-to-end encryption may not work.",
|
||||
"notEncryptedForDevice": "This message was not encrypted for this device",
|
||||
"invalidHmac": "Could not decrypt message",
|
||||
"noDecryptionKey": "No decryption key available",
|
||||
"messageInvalidAfixElement": "Invalid encrypted message",
|
||||
"verificationInvalidOmemoUrl": "Invalid OMEMO:2 fingerprint",
|
||||
"verificationWrongJid": "Wrong XMPP-address",
|
||||
"verificationWrongDevice": "Wrong OMEMO:2 device",
|
||||
"verificationNotInList": "Wrong OMEMO:2 device",
|
||||
"verificationWrongFingerprint": "Wrong OMEMO:2 fingerprint"
|
||||
},
|
||||
"connection": {
|
||||
"connectionTimeout": "Could not connect to server",
|
||||
"saslAccountDisabled": "Your account is disabled",
|
||||
"saslInvalidCredentials": "Your account credentials are invalid",
|
||||
"unrecoverable": "Connection lost due to unrecoverable error"
|
||||
},
|
||||
"login": {
|
||||
"saslFailed": "Invalid login credentials",
|
||||
"startTlsFailed": "Failed to establish a secure connection",
|
||||
"noConnection": "Failed to establish a connection",
|
||||
"unspecified": "Unspecified error"
|
||||
},
|
||||
"message": {
|
||||
"unspecified": "Unknown error",
|
||||
"fileUploadFailed": "The file upload failed",
|
||||
"contactDoesntSupportOmemo": "The contact does not support encryption using OMEMO:2",
|
||||
"fileDownloadFailed": "The file download failed",
|
||||
"serviceUnavailable": "The message could not be delivered to the contact",
|
||||
"remoteServerTimeout": "The message could not be delivered to the contact's server",
|
||||
"remoteServerNotFound": "The message could not be delivered to the contact's server as it cannot be found",
|
||||
"failedToEncrypt": "The message could not be encrypted",
|
||||
"failedToEncryptFile": "The file could not be encrypted",
|
||||
"failedToDecryptFile": "The file could not be decrypted",
|
||||
"fileNotEncrypted": "The chat is encrypted but the file is not encrypted"
|
||||
},
|
||||
"conversation": {
|
||||
"audioRecordingError": "Failed to finalize audio recording",
|
||||
"openFileNoAppError": "No app found to open this file",
|
||||
"openFileGenericError": "Failed to open file",
|
||||
"messageErrorDialogTitle": "Error"
|
||||
},
|
||||
"newChat": {
|
||||
"remoteServerError": "Failed to contact the remote server.",
|
||||
"groupchatUnsupported": "Joining a groupchat is currently not supported.",
|
||||
"unknown": "Unknown error."
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
"message": {
|
||||
"integrityCheckFailed": "Could not verify file integrity"
|
||||
},
|
||||
"conversation": {
|
||||
"holdForLonger": "Hold button longer to record a voice message",
|
||||
"microphoneDenied": "Microphon access denied"
|
||||
}
|
||||
},
|
||||
"pages": {
|
||||
"intro": {
|
||||
"noAccount": "Have no XMPP account? No worries, creating one is really easy.",
|
||||
"loginButton": "Login",
|
||||
"registerButton": "Register"
|
||||
},
|
||||
"login": {
|
||||
"title": "Login",
|
||||
"xmppAddress": "XMPP-Address",
|
||||
"password": "Password",
|
||||
"advancedOptions": "Advanced options",
|
||||
"createAccount": "Create account on server",
|
||||
"login": "Login"
|
||||
},
|
||||
"conversations": {
|
||||
"speeddialNewChat": "New chat",
|
||||
"speeddialJoinGroupchat": "Join groupchat",
|
||||
"speeddialAddNoteToSelf": "Note to self",
|
||||
"overlaySettings": "Settings",
|
||||
"noOpenChats": "You have no open chats",
|
||||
"startChat": "Start a chat",
|
||||
"closeChat": "Close chat",
|
||||
"closeChatBody": "Are you sure you want to close the chat with ${conversationTitle}?",
|
||||
"markAsRead": "Mark as read"
|
||||
},
|
||||
"conversation": {
|
||||
"unencrypted": "Unencrypted",
|
||||
"encrypted": "Encrypted",
|
||||
"closeChat": "Close chat",
|
||||
"closeChatConfirmTitle": "Close chat",
|
||||
"closeChatConfirmSubtext": "Are you sure you want to close this chat?",
|
||||
"blockShort": "Block",
|
||||
"blockUser": "Block user",
|
||||
"online": "Online",
|
||||
"retract": "Retract message",
|
||||
"retractBody": "Are you sure you want to retract the message? Keep in mind that this is only a request that the client does not have to honour.",
|
||||
"forward": "Forward",
|
||||
"share": "Share",
|
||||
"edit": "Edit",
|
||||
"quote": "Quote",
|
||||
"copy": "Copy content",
|
||||
"messageCopied": "Message content copied to clipboard",
|
||||
"addReaction": "Add reaction",
|
||||
"showError": "Show error",
|
||||
"showWarning": "Show warning",
|
||||
"warning": "Warning",
|
||||
"addToContacts": "Add to contacts",
|
||||
"addToContactsTitle": "Add ${jid} to contacts",
|
||||
"addToContactsBody": "Are you sure you want to add ${jid} to your contacts?",
|
||||
"stickerPickerNoStickersLine1": "You have no sticker packs installed.",
|
||||
"stickerPickerNoStickersLine2": "They can be installed in the sticker settings.",
|
||||
"stickerSettings": "Sticker settings",
|
||||
"newDeviceMessage": {
|
||||
"one": "A new device has been added",
|
||||
"other": "Multiple new devices have been added"
|
||||
},
|
||||
"replacedDeviceMessage": {
|
||||
"one": "A device has been changed",
|
||||
"other": "Multiple devices have been added"
|
||||
},
|
||||
"messageHint": "Send a message…",
|
||||
"sendMedia": "Send media",
|
||||
"sendFiles": "Send files",
|
||||
"takePhotos": "Take photos",
|
||||
"voiceRecording": {
|
||||
"cancel": "Cancel",
|
||||
"dragToCancel": "Drag to cancel",
|
||||
"leaveConfirmation": {
|
||||
"title": "Cancel recording",
|
||||
"body": "You are currently recording a voice message. Do you want to discard the recording?",
|
||||
"affirmative": "Discard",
|
||||
"negative": "Cancel"
|
||||
}
|
||||
}
|
||||
},
|
||||
"startchat": {
|
||||
"title": "New Chat",
|
||||
"xmppAddress": "XMPP address",
|
||||
"subtitle": "You can start a new chat by either entering a XMPP address or by scanning their QR code.",
|
||||
"buttonAddToContact": "Start new chat"
|
||||
},
|
||||
"newconversation": {
|
||||
"title": "New chat",
|
||||
"startChat": "Start new chat",
|
||||
"createGroupchat": "New groupchat",
|
||||
"joinGroupChat": "Join groupchat",
|
||||
"nullNickname": "Nickname cannot be null!",
|
||||
"nick": "Nickname",
|
||||
"enterNickname": "Enter Nickname",
|
||||
"nicknameSubtitle": "You need to enter a unique nickname in order to join a MUC."
|
||||
},
|
||||
"crop": {
|
||||
"setProfilePicture": "Set as profile picture"
|
||||
},
|
||||
"shareselection": {
|
||||
"shareWith": "Share with…",
|
||||
"confirmTitle": "Send file",
|
||||
"confirmBody": "One or more chats are unencrypted. This means that the file will be leaked to the server. Do you still want to continue?"
|
||||
},
|
||||
"profile": {
|
||||
"general": {
|
||||
"omemo": "Security",
|
||||
"profile": "Profile",
|
||||
"media": "Media"
|
||||
},
|
||||
"conversation": {
|
||||
"notifications": "Notifications",
|
||||
"notificationsMuted": "Muted",
|
||||
"notificationsEnabled": "Enabled",
|
||||
"sharedMedia": "Media"
|
||||
},
|
||||
"owndevices": {
|
||||
"title": "Own Devices",
|
||||
"thisDevice": "This device",
|
||||
"otherDevices": "Other devices",
|
||||
"deleteDeviceConfirmTitle": "Delete device",
|
||||
"deleteDeviceConfirmBody": "This means that contacts will not be able to encrypt for that device. Continue?",
|
||||
"recreateOwnSessions": "Rebuild sessions",
|
||||
"recreateOwnSessionsConfirmTitle": "Recreate own sessions?",
|
||||
"recreateOwnSessionsConfirmBody": "This will recreate the cryptographic sessions with your own devices. Use only if your own devices throw decryption errors.",
|
||||
"recreateOwnDevice": "Recreate device",
|
||||
"recreateOwnDeviceConfirmTitle": "Recreate own device?",
|
||||
"recreateOwnDeviceConfirmBody": "This will recreate this device's cryptographic identity. It will take some time. If contacts verified your device, they will have to do it again. Continue?"
|
||||
},
|
||||
"devices": {
|
||||
"title": "Security",
|
||||
"recreateSessions": "Rebuild sessions",
|
||||
"recreateSessionsConfirmTitle": "Rebuild sessions?",
|
||||
"recreateSessionsConfirmBody": "This will recreate the cryptographic sessions with your own devices. Use only if your own devices throw decryption errors.",
|
||||
"noSessions": "There are no cryptographic sessions that are used for end-to-end encryption."
|
||||
},
|
||||
"groupchat": {
|
||||
"owner": "Owner",
|
||||
"admin": "Administrator"
|
||||
},
|
||||
"serverInfo": {
|
||||
"title": "Server Information"
|
||||
}
|
||||
},
|
||||
"blocklist": {
|
||||
"title": "Blocklist",
|
||||
"noUsersBlocked": "You have no users blocked",
|
||||
"unblockAll": "Unblock all",
|
||||
"unblockAllConfirmTitle": "Are you sure?",
|
||||
"unblockAllConfirmBody": "Are you sure you want to unblock all users?",
|
||||
"unblockJidConfirmTitle": "Unblock ${jid}?",
|
||||
"unblockJidConfirmBody": "Are you sure you want to unblock ${jid}? You will receive messages from this user again."
|
||||
},
|
||||
"cropbackground": {
|
||||
"blur": "Blur background",
|
||||
"setAsBackground": "Set as background image"
|
||||
},
|
||||
"stickerPack": {
|
||||
"removeConfirmTitle": "Remove sticker pack",
|
||||
"removeConfirmBody": "Are you sure you want to remove this sticker pack?",
|
||||
"installConfirmTitle": "Install sticker pack",
|
||||
"installConfirmBody": "Are you sure you want to install this sticker pack?",
|
||||
"restricted": "This sticker pack is restricted. That means that the stickers will be displayed but cannot be sent.",
|
||||
"fetchingFailure": "Could not find the sticker pack"
|
||||
},
|
||||
"sharedMedia": {
|
||||
"empty": {
|
||||
"chat": "No shared media for this chat",
|
||||
"general": "No media files available"
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
"settings": {
|
||||
"title": "Settings",
|
||||
"conversationsSection": "Conversations",
|
||||
"accountSection": "Account",
|
||||
"signOut": "Sign out",
|
||||
"signOutConfirmTitle": "Sign Out",
|
||||
"signOutConfirmBody": "You are about to sign out. Proceed?",
|
||||
"miscellaneousSection": "Miscellaneous",
|
||||
"debuggingSection": "Debugging",
|
||||
"general": "General"
|
||||
},
|
||||
"about": {
|
||||
"title": "About",
|
||||
"licensed": "Licensed under GPL3",
|
||||
"version": "Version ${version}",
|
||||
"viewSourceCode": "View source code",
|
||||
"nMoreToGo": "${n} more to go…",
|
||||
"debugMenuShown": "You are now a developer!",
|
||||
"debugMenuAlreadyShown": "You are already a developer!"
|
||||
},
|
||||
"appearance": {
|
||||
"title": "Appearance",
|
||||
"languageSection": "Language",
|
||||
"language": "App language",
|
||||
"languageSubtext": "Currently selected: $selectedLanguage",
|
||||
"systemLanguage": "Default language"
|
||||
},
|
||||
"licenses": {
|
||||
"title": "Open-Source Licenses",
|
||||
"licensedUnder": "Licensed under $license"
|
||||
},
|
||||
"conversation": {
|
||||
"title": "Chat",
|
||||
"appearance": "Appearance",
|
||||
"selectBackgroundImage": "Select background image",
|
||||
"selectBackgroundImageDescription": "This image will be the background of all your chats",
|
||||
"removeBackgroundImage": "Remove background image",
|
||||
"removeBackgroundImageConfirmTitle": "Remove background image",
|
||||
"removeBackgroundImageConfirmBody": "Are you sure you want to remove your conversation background image?",
|
||||
"newChatsSection": "New Conversations",
|
||||
"newChatsMuteByDefault": "Mute new chats by default",
|
||||
"newChatsE2EE": "Enable end-to-end encryption by default. WARNING: Experimental",
|
||||
"behaviourSection": "Behaviour",
|
||||
"contactsIntegration": "Contacts integration",
|
||||
"contactsIntegrationBody": "When enabled, data from the phonebook will be used to provide chat titles and profile pictures. No data will be sent to the server."
|
||||
},
|
||||
"debugging": {
|
||||
"title": "Debugging options",
|
||||
"generalSection": "General",
|
||||
"generalEnableDebugging": "Enable debugging",
|
||||
"generalEncryptionPassword": "Encryption password",
|
||||
"generalEncryptionPasswordSubtext": "The logs may contain sensitive information so pick a strong passphrase",
|
||||
"generalLoggingIp": "Logging IP",
|
||||
"generalLoggingIpSubtext": "The IP the logs should be sent to",
|
||||
"generalLoggingPort": "Logging Port",
|
||||
"generalLoggingPortSubtext": "The IP the logs should be sent to"
|
||||
},
|
||||
"network": {
|
||||
"title": "Network",
|
||||
"automaticDownloadsSection": "Automatic Downloads",
|
||||
"automaticDownloadsText": "Moxxy will automatically download files on…",
|
||||
"automaticDownloadsMaximumSize": "Maximum Download Size",
|
||||
"automaticDownloadsMaximumSizeSubtext": "The maximum file size for a file to be automatically downloaded",
|
||||
"automaticDownloadAlways": "Always",
|
||||
"wifi": "Wifi",
|
||||
"mobileData": "Mobile data"
|
||||
},
|
||||
"privacy": {
|
||||
"title": "Privacy",
|
||||
"generalSection": "General",
|
||||
"showContactRequests": "Show contact requests",
|
||||
"showContactRequestsSubtext": "This will show people who added you to their contact list but sent no message yet",
|
||||
"profilePictureVisibility": "Make profile picture public",
|
||||
"profilePictureVisibilitSubtext": "If enabled, everyone can see your profile picture. If disabled, only users on your contact list can see your profile picture.",
|
||||
"conversationsSection": "Conversation",
|
||||
"sendChatMarkers": "Send chat markers",
|
||||
"sendChatMarkersSubtext": "This will tell your conversation partner if you received or read a message",
|
||||
"sendChatStates": "Send chat states",
|
||||
"sendChatStatesSubtext": "This will show your conversation partner if you are typing or looking at the chat",
|
||||
"redirectsSection": "Redirects",
|
||||
"redirectText": "This will redirect $serviceName links that you tap to a proxy service, e.g. $exampleProxy",
|
||||
"currentlySelected": "Currently selected: $proxy",
|
||||
"redirectsTitle": "$serviceName Redirect",
|
||||
"cannotEnableRedirect": "Cannot enable $serviceName redirects",
|
||||
"cannotEnableRedirectSubtext": "You must first set a proxy service to redirect to. To do so, tap the field next to the switch.",
|
||||
"urlEmpty": "URL cannot be empty",
|
||||
"urlInvalid": "Invalid URL",
|
||||
"redirectDialogTitle": "$serviceName Redirect",
|
||||
"stickersPrivacy": "Keep sticker list public",
|
||||
"stickersPrivacySubtext": "If enabled, everyone will be able to see your list of installed sticker packs."
|
||||
},
|
||||
"stickers": {
|
||||
"title": "Stickers",
|
||||
"stickerSection": "Sticker",
|
||||
"displayStickers": "Display stickers in chat",
|
||||
"autoDownload": "Automatically download stickers",
|
||||
"autoDownloadBody": "If enabled, stickers are automatically downloaded when the sender is in your contact list.",
|
||||
"stickerPacksSection": "Sticker packs",
|
||||
"importStickerPack": "Import sticker pack",
|
||||
"importSuccess": "Sticker pack successfully imported",
|
||||
"importFailure": "Failed to import sticker pack",
|
||||
"stickerPackSize": "(${size})"
|
||||
},
|
||||
"stickerPacks": {
|
||||
"title": "Sticker Packs"
|
||||
},
|
||||
"storage": {
|
||||
"title": "Storage",
|
||||
"storageUsed": "Storage used: ${size}",
|
||||
"sizePlaceholder": "Computing…",
|
||||
"storageManagement": "Storage Management",
|
||||
"removeOldMedia": {
|
||||
"title": "Remove old media",
|
||||
"description": "Removes old media files from the device"
|
||||
},
|
||||
"removeOldMediaDialog": {
|
||||
"title": "Delete media files",
|
||||
"options": {
|
||||
"all": "All media files",
|
||||
"oneWeek": "Older than 1 week",
|
||||
"oneMonth": "Older than 1 month"
|
||||
},
|
||||
"delete": "Delete",
|
||||
"confirmation": {
|
||||
"body": "Are you sure you want to delete old media files?"
|
||||
}
|
||||
},
|
||||
"viewMediaFiles": "View media files",
|
||||
"mediaFiles": "Media Files",
|
||||
"types": {
|
||||
"media": "Media",
|
||||
"stickers": "Stickers"
|
||||
},
|
||||
"manageStickers": "Manage sticker packs"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
435
assets/i18n/strings_fr.i18n.json
Normal file
@@ -0,0 +1,435 @@
|
||||
{
|
||||
"language": "Français",
|
||||
"global": {
|
||||
"yes": "Oui",
|
||||
"no": "Non",
|
||||
"title": "Moxxy",
|
||||
"dialogAccept": "OK",
|
||||
"dialogCancel": "Annuler",
|
||||
"moxxySubtitle": "Une expérience de construire un facile, moderne et belle client XMPP."
|
||||
},
|
||||
"notifications": {
|
||||
"permanent": {
|
||||
"ready": "Prêt pour recevoir des messages",
|
||||
"disconnect": "Déconnecté",
|
||||
"error": "Erreur",
|
||||
"connecting": "Connexion…",
|
||||
"idle": "Inactif"
|
||||
},
|
||||
"message": {
|
||||
"markAsRead": "Marquer comme lu",
|
||||
"reply": "Répondre"
|
||||
},
|
||||
"channels": {
|
||||
"messagesChannelName": "Messages",
|
||||
"warningChannelName": "Alertes",
|
||||
"warningChannelDescription": "Alertes liées à Moxxy",
|
||||
"messagesChannelDescription": "La voie des notifications pour des messages reçu"
|
||||
},
|
||||
"errors": {
|
||||
"messageError": {
|
||||
"body": "N'est pas parvenu à livrée la message au ${conversationTitle}",
|
||||
"title": "Échec au livraison du message"
|
||||
}
|
||||
},
|
||||
"titles": {
|
||||
"error": "Erreur"
|
||||
}
|
||||
},
|
||||
"messages": {
|
||||
"file": "Fichier",
|
||||
"image": "Image",
|
||||
"video": "Vidéo",
|
||||
"audio": "Audio",
|
||||
"sticker": "Autocollant",
|
||||
"retracted": "La message a été retirée",
|
||||
"you": "Toi",
|
||||
"retractedFallback": "Un précédent message a été retiré, mais votre client ne le prend pas en charge"
|
||||
},
|
||||
"permissions": {
|
||||
"allow": "Autoriser",
|
||||
"skip": "Sauter",
|
||||
"requests": {
|
||||
"notification": {
|
||||
"reason": "Pour notifier des nouvelles messages, Moxxy à besoin de permission pour afficher les notifications."
|
||||
},
|
||||
"batterySaving": {
|
||||
"reason": "Pour recevoir des messages dans l'arrière-plan, Moxxy devrait être exempté de la fonction d'économie de la batterie d'Android."
|
||||
}
|
||||
}
|
||||
},
|
||||
"dateTime": {
|
||||
"justNow": "A l'instant",
|
||||
"nMinutesAgo": "Il y a ${min}min",
|
||||
"mondayAbbrev": "Lun",
|
||||
"tuesdayAbbrev": "Mar",
|
||||
"wednessdayAbbrev": "Mer",
|
||||
"thursdayAbbrev": "Jeu",
|
||||
"fridayAbbrev": "Ven",
|
||||
"saturdayAbbrev": "Sam",
|
||||
"sundayAbbrev": "Dim",
|
||||
"january": "Janvier",
|
||||
"february": "Février",
|
||||
"march": "Mars",
|
||||
"april": "Avril",
|
||||
"may": "Mai",
|
||||
"june": "Juin",
|
||||
"july": "Juillet",
|
||||
"august": "Août",
|
||||
"september": "Septembre",
|
||||
"october": "Octobre",
|
||||
"november": "Novembre",
|
||||
"december": "Décembre",
|
||||
"today": "Aujourd’hui",
|
||||
"yesterday": "Hier"
|
||||
},
|
||||
"errors": {
|
||||
"general": {
|
||||
"noInternet": "N'est pas connecté au l'Internet."
|
||||
},
|
||||
"omemo": {
|
||||
"notEncryptedForDevice": "Cet message n'était pas chiffré pour cette appareil",
|
||||
"invalidHmac": "Ne pouvait pas déchiffrer la message",
|
||||
"noDecryptionKey": "Aucune clé de déchiffrer disponible",
|
||||
"messageInvalidAfixElement": "Message chiffré invalide",
|
||||
"verificationWrongJid": "Mauvais adresse XMPP",
|
||||
"verificationWrongDevice": "Mauvais appareil OMEMO:2",
|
||||
"verificationNotInList": "Mauvais appareil OMEMO:2",
|
||||
"verificationWrongFingerprint": "Empreinte OMEMO:2 invalide",
|
||||
"verificationInvalidOmemoUrl": "Empreinte OMEMO:2 invalide",
|
||||
"couldNotPublish": "Ne pouvait pas publier l'identité cryptographique au la serveur. Cela signifie que chiffrement de bout en bout risque de ne pas fonctionner."
|
||||
},
|
||||
"filePicker": {
|
||||
"permissionDenied": "L'autorisation de permission de storage a été déclinée."
|
||||
},
|
||||
"login": {
|
||||
"saslFailed": "Identifiants non-valides",
|
||||
"startTlsFailed": "Impossible d'établir une connexion sécurisée",
|
||||
"unspecified": "Erreur non-connue",
|
||||
"noConnection": "Impossible d'établir une connexion"
|
||||
},
|
||||
"message": {
|
||||
"unspecified": "Erreur inconnue",
|
||||
"fileUploadFailed": "Le téléversement du fichier a échoué",
|
||||
"contactDoesntSupportOmemo": "Le chiffrement OMEMO:2 n'est pas pris en charge par l'autre personne",
|
||||
"serviceUnavailable": "Le message n'a pas pu être délivré",
|
||||
"failedToEncrypt": "Le message n'a pas pu être chiffré",
|
||||
"failedToEncryptFile": "Le fichier n'a pas pu être chiffré",
|
||||
"failedToDecryptFile": "Le fichier n'a pas pu être déchiffré",
|
||||
"fileNotEncrypted": "La conversation est chiffrée, mais pas le fichier",
|
||||
"fileDownloadFailed": "Le téléchargement du fichier a échoué",
|
||||
"remoteServerTimeout": "Le message n'a pas pu être délivré au serveur de destination",
|
||||
"remoteServerNotFound": "Serveur introuvable ; Le message n'a pas pu être délivré"
|
||||
},
|
||||
"connection": {
|
||||
"connectionTimeout": "Impossible de joindre le serveur",
|
||||
"saslAccountDisabled": "Votre compte est désactivé",
|
||||
"saslInvalidCredentials": "Vos identifiants ne sont pas valides",
|
||||
"unrecoverable": "Connexion perdue due à une erreur"
|
||||
},
|
||||
"conversation": {
|
||||
"audioRecordingError": "Erreur d'enregistrement audio",
|
||||
"openFileNoAppError": "Pas d'application pour ce type de fichier",
|
||||
"messageErrorDialogTitle": "Erreur",
|
||||
"openFileGenericError": "Impossible d'ouvrir le fichier"
|
||||
},
|
||||
"newChat": {
|
||||
"remoteServerError": "Impossible de contacter le serveur distant.",
|
||||
"groupchatUnsupported": "Les conversations de groupes ne sont pas encore prises en charge.",
|
||||
"unknown": "Erreur inconnue."
|
||||
}
|
||||
},
|
||||
"pages": {
|
||||
"settings": {
|
||||
"stickers": {
|
||||
"title": "Autocollants",
|
||||
"stickerSection": "Autocollant",
|
||||
"stickerPacksSection": "Paquets d'autocollants",
|
||||
"stickerPackSize": "(${size})",
|
||||
"displayStickers": "Afficher les autocollants dans les conversations",
|
||||
"autoDownload": "Téléchargement automatique des autocollants",
|
||||
"importStickerPack": "Importer série d'autocollants",
|
||||
"importSuccess": "Série d'autocollants importée avec succès",
|
||||
"importFailure": "Erreur lors de l'import de la série d'autocollants",
|
||||
"autoDownloadBody": "Si activée, les autocollants seront téléchargés automatiquement avec les personnes de votre liste de contact."
|
||||
},
|
||||
"stickerPacks": {
|
||||
"title": "Paquets d'autocollants"
|
||||
},
|
||||
"storage": {
|
||||
"types": {
|
||||
"stickers": "Autocollants",
|
||||
"media": "Médias"
|
||||
},
|
||||
"title": "Stockage",
|
||||
"storageUsed": "Espace utilisé : ${size}",
|
||||
"storageManagement": "Gestion de stockage",
|
||||
"removeOldMedia": {
|
||||
"title": "Supprimer les anciens médias",
|
||||
"description": "Supprimer les anciens fichiers médias de votre appareil"
|
||||
},
|
||||
"removeOldMediaDialog": {
|
||||
"title": "Supprimer les fichiers médias",
|
||||
"options": {
|
||||
"oneWeek": "Plus anciens qu'une semaine",
|
||||
"oneMonth": "Plus anciens qu'un mois",
|
||||
"all": "Tous les fichiers médias"
|
||||
},
|
||||
"delete": "Supprimer",
|
||||
"confirmation": {
|
||||
"body": "Confirmer la suppresion des anciens fichiers médias ?"
|
||||
}
|
||||
},
|
||||
"viewMediaFiles": "Voir les fichiers médias",
|
||||
"mediaFiles": "Fichiers médias",
|
||||
"manageStickers": "Gestion des autocollants",
|
||||
"sizePlaceholder": "Calcul…"
|
||||
},
|
||||
"settings": {
|
||||
"title": "Paramètres",
|
||||
"conversationsSection": "Conversations",
|
||||
"accountSection": "Compte",
|
||||
"signOut": "Déconnexion",
|
||||
"signOutConfirmBody": "Confirmer la déconnexion ?",
|
||||
"miscellaneousSection": "Autres",
|
||||
"debuggingSection": "Développement",
|
||||
"general": "Général",
|
||||
"signOutConfirmTitle": "Déconnexion"
|
||||
},
|
||||
"about": {
|
||||
"title": "À propos",
|
||||
"licensed": "Sous licence GPLv3",
|
||||
"version": "Version ${version}",
|
||||
"viewSourceCode": "Voir le code source",
|
||||
"debugMenuShown": "Mode développement disponible !",
|
||||
"debugMenuAlreadyShown": "Le mode développement est déjà disponible !",
|
||||
"nMoreToGo": "Plus que ${n}…"
|
||||
},
|
||||
"appearance": {
|
||||
"title": "Apparence",
|
||||
"languageSection": "Langue",
|
||||
"language": "Langue de l'application",
|
||||
"systemLanguage": "Langue par défaut",
|
||||
"languageSubtext": "Langue actuelle : $selectedLanguage"
|
||||
},
|
||||
"licenses": {
|
||||
"title": "Licences Open-Source",
|
||||
"licensedUnder": "Sous licence $license"
|
||||
},
|
||||
"conversation": {
|
||||
"title": "Conversation",
|
||||
"appearance": "Apparence",
|
||||
"selectBackgroundImage": "Sélectionner l'image d'arrière-plan",
|
||||
"removeBackgroundImage": "Supprimer l'image d'arrière-plan",
|
||||
"removeBackgroundImageConfirmTitle": "Suppression de l'image d'arrière-plan",
|
||||
"removeBackgroundImageConfirmBody": "Confirmer la suppression de l'image d'arrière-plan de conversation ?",
|
||||
"newChatsSection": "Nouvelles conversations",
|
||||
"newChatsMuteByDefault": "Mettre les nouvelles conversation en sourdine par défaut",
|
||||
"behaviourSection": "Comportement",
|
||||
"contactsIntegration": "Intégration de contacts",
|
||||
"selectBackgroundImageDescription": "Cette image sera en arrière-plan de toutes vos conversations",
|
||||
"newChatsE2EE": "Activer le chiffrement de bout en bout par défaut. ATTENTION : Expérimental",
|
||||
"contactsIntegrationBody": "Lorsque activé, les données de votre appareil fourniront les titres de conversation, et images de profils. Aucune donnée n'est envoyée au serveur."
|
||||
},
|
||||
"debugging": {
|
||||
"title": "Option de développement",
|
||||
"generalSection": "Général",
|
||||
"generalEnableDebugging": "Activer le mode développement",
|
||||
"generalEncryptionPassword": "Mot de passe de chiffrement",
|
||||
"generalEncryptionPasswordSubtext": "Les journaux contiennent des informations sensibles, choisissez un mot de passe fort",
|
||||
"generalLoggingIp": "IP de journaux",
|
||||
"generalLoggingIpSubtext": "L'IP à laquelle envoyer les journaux",
|
||||
"generalLoggingPort": "Port de journaux",
|
||||
"generalLoggingPortSubtext": "L'IP où envoyer les journaux"
|
||||
},
|
||||
"network": {
|
||||
"title": "Réseau",
|
||||
"automaticDownloadsSection": "Téléchargements automatiques",
|
||||
"automaticDownloadsText": "Moxxy téléchargera automatiquement les fichiers sur…",
|
||||
"automaticDownloadsMaximumSize": "Taille maximale de téléchargement",
|
||||
"automaticDownloadAlways": "Toujours",
|
||||
"wifi": "WiFi",
|
||||
"mobileData": "Données mobiles",
|
||||
"automaticDownloadsMaximumSizeSubtext": "La taille maximale des fichiers à télécharger automatiquement"
|
||||
},
|
||||
"privacy": {
|
||||
"title": "Vie privée",
|
||||
"generalSection": "Général",
|
||||
"showContactRequests": "Afficher les requêtes de contact",
|
||||
"showContactRequestsSubtext": "Cela affiche les personnes qui vous ont ajouté à leurs listes de contacts mais ne vous ont pas encore envoyé de message",
|
||||
"profilePictureVisibility": "Rendre publique l'image de profil",
|
||||
"profilePictureVisibilitSubtext": "Lorsque activée, tout le monde peut voir votre image de profil. Désactivée, seulement vos contacts peuvent la voir.",
|
||||
"conversationsSection": "Conversation",
|
||||
"sendChatMarkers": "Envoyer des marqueurs de conversation",
|
||||
"sendChatStates": "Envoyer l'état de conversation",
|
||||
"sendChatStatesSubtext": "Informe votre destinataire si vous être en train d'écrire, ou lire la conversation",
|
||||
"sendChatMarkersSubtext": "Informe votre destinataire lorsqu'un message est reçu, ou lu",
|
||||
"redirectsSection": "Redirections",
|
||||
"redirectText": "Redirige les liens $serviceName vers un service de proxy, comme $exampleProxy",
|
||||
"currentlySelected": "Service sélectionné : $proxy",
|
||||
"redirectsTitle": "$serviceName Redirection",
|
||||
"cannotEnableRedirect": "Impossible d'activer les redirections $serviceName",
|
||||
"urlEmpty": "URL vide",
|
||||
"urlInvalid": "URL non-valide",
|
||||
"redirectDialogTitle": "$serviceName Redirect",
|
||||
"stickersPrivacy": "Rendre publique la liste d'autoocollants",
|
||||
"stickersPrivacySubtext": "Si activée, tout le monde pourra voir vos autocollants installés.",
|
||||
"cannotEnableRedirectSubtext": "Service de redirection manquant, appuyer sur le champ à côté de l'interrupteur"
|
||||
}
|
||||
},
|
||||
"conversation": {
|
||||
"stickerSettings": "Paramètres des autocollants",
|
||||
"unencrypted": "Non-chiffré",
|
||||
"encrypted": "Chiffré",
|
||||
"closeChat": "Fermer la conversation",
|
||||
"closeChatConfirmTitle": "Fermeture de conversation",
|
||||
"blockShort": "Bloquer",
|
||||
"blockUser": "Bloquer cette personne",
|
||||
"online": "En ligne",
|
||||
"retract": "Supprimer le message",
|
||||
"forward": "Transférer",
|
||||
"edit": "Modifier",
|
||||
"quote": "Citer",
|
||||
"copy": "Copier le contenu",
|
||||
"messageCopied": "Message copié vers le presse-papier",
|
||||
"addReaction": "Ajouter une réaction",
|
||||
"showError": "Afficher l'erreur",
|
||||
"showWarning": "Afficher l'avertissement",
|
||||
"warning": "Avertissement",
|
||||
"addToContacts": "Ajouter aux contacts",
|
||||
"addToContactsBody": "Confirmer l'ajout de ${jid} aux contacts ?",
|
||||
"stickerPickerNoStickersLine1": "Pas d'autocollants installés.",
|
||||
"newDeviceMessage": {
|
||||
"one": "Un nouvel appareil a été ajouté",
|
||||
"other": "De nouveaux appareils ont été ajoutés"
|
||||
},
|
||||
"replacedDeviceMessage": {
|
||||
"one": "Un appareil a été modifié",
|
||||
"other": "Plusieurs appareils ont été ajoutés"
|
||||
},
|
||||
"sendImages": "Envoyer des images",
|
||||
"sendFiles": "Envoyer des fichiers",
|
||||
"takePhotos": "Prendre des photos",
|
||||
"messageHint": "Envoyer un message…",
|
||||
"closeChatConfirmSubtext": "Confirmer la fermeture de cette conversation ?",
|
||||
"retractBody": "Confirmer la demande de suppression du message ? Cela n'est qu'une demande que le client n'a pas a honorer.",
|
||||
"addToContactsTitle": "Ajouter ${jid} aux contacts",
|
||||
"stickerPickerNoStickersLine2": "Des autocollants sont disponibles à l'installation dans les paramètres."
|
||||
},
|
||||
"intro": {
|
||||
"noAccount": "Pas de compte XMPP ? Aucun soucis, en créer un est très simple.",
|
||||
"loginButton": "Connexion",
|
||||
"registerButton": "Inscription"
|
||||
},
|
||||
"login": {
|
||||
"title": "Connexion",
|
||||
"xmppAddress": "Adresse XMPP",
|
||||
"password": "Mot de passe",
|
||||
"advancedOptions": "Paramètres avancés",
|
||||
"createAccount": "Créer un compte sur le serveur"
|
||||
},
|
||||
"conversations": {
|
||||
"speeddialNewChat": "Nouvelle conversation",
|
||||
"speeddialJoinGroupchat": "Rejoindre une conversation de groupe",
|
||||
"speeddialAddNoteToSelf": "Note personnelle",
|
||||
"overlaySettings": "Paramètres",
|
||||
"noOpenChats": "Aucune conversation d'ouverte",
|
||||
"startChat": "Démarrer une conversation",
|
||||
"closeChatBody": "Souhaitez-vous fermer la conversation avec ${conversationTitle} ?",
|
||||
"markAsRead": "Marquer comme lue",
|
||||
"closeChat": "Fermer une conversation"
|
||||
},
|
||||
"startchat": {
|
||||
"title": "Nouvelle conversation",
|
||||
"xmppAddress": "Adresse XMPP",
|
||||
"buttonAddToContact": "Démarrer une nouvelle conversation",
|
||||
"subtitle": "Vous pouvez démarrer une conversation à l'aide d'une adresse XMPP ou en scannant un code QR."
|
||||
},
|
||||
"newconversation": {
|
||||
"title": "Nouvelle conversation",
|
||||
"startChat": "Démarrer une nouvelle conversation",
|
||||
"createGroupchat": "Nouvelle conversation de groupe",
|
||||
"joinGroupChat": "Rejoindre une conversation de groupe",
|
||||
"nullNickname": "Le pseudonyme ne peut pas être vide !",
|
||||
"nick": "Pseudonyme",
|
||||
"enterNickname": "Entrer un pseudonyme",
|
||||
"nicknameSubtitle": "Un pseudonyme unique est requis pour rejoindre une CUM."
|
||||
},
|
||||
"crop": {
|
||||
"setProfilePicture": "Utiliser comme image de profil"
|
||||
},
|
||||
"shareselection": {
|
||||
"shareWith": "Partager avec…",
|
||||
"confirmTitle": "Envoyer le fichier",
|
||||
"confirmBody": "Une ou plusieurs conversations ne sont pas chiffrées. Le fichier sera accessible au serveur. Confirmer ?"
|
||||
},
|
||||
"profile": {
|
||||
"general": {
|
||||
"omemo": "Sécurité",
|
||||
"profile": "Profil",
|
||||
"media": "Média"
|
||||
},
|
||||
"conversation": {
|
||||
"notifications": "Notifications",
|
||||
"notificationsMuted": "En sourdine",
|
||||
"notificationsEnabled": "Activées",
|
||||
"sharedMedia": "Média"
|
||||
},
|
||||
"owndevices": {
|
||||
"title": "Appareils disponibles",
|
||||
"otherDevices": "Autres appareils",
|
||||
"thisDevice": "Cet appareil",
|
||||
"deleteDeviceConfirmTitle": "Supprimer appareil",
|
||||
"recreateOwnSessions": "Recréer sessions",
|
||||
"recreateOwnSessionsConfirmTitle": "Recréer ses propres sessions ?",
|
||||
"recreateOwnDevice": "Recréer appareil",
|
||||
"recreateOwnDeviceConfirmTitle": "Récréer cet appareil ?",
|
||||
"deleteDeviceConfirmBody": "Vos contact ne pourront pas chiffrer pour cet appareil, continuer ?",
|
||||
"recreateOwnSessionsConfirmBody": "Cela recréera les sessions cryptographiques de vos appareils. À n'utiliser qu'en cas d'erreur de déchiffrement.",
|
||||
"recreateOwnDeviceConfirmBody": "Cela récréera l'identité cryptographique de cet appareil. Cette opération peut prendre du temps. Les contact ayant vérifié cet appareils auront à le faire de nouveau, continuer ?"
|
||||
},
|
||||
"devices": {
|
||||
"title": "Sécurité",
|
||||
"recreateSessions": "Recréer sessions",
|
||||
"recreateSessionsConfirmTitle": "Recréer les sessions ?",
|
||||
"noSessions": "Il n'y a pas de sessions cryptographiques utilisées pour du chiffrement de bout en bout.",
|
||||
"recreateSessionsConfirmBody": "Cela recréera les sessions cryptographiques de vos appareils. À n'utiliser qu'en cas d'erreur de déchiffrement sur ceux-ci."
|
||||
}
|
||||
},
|
||||
"blocklist": {
|
||||
"title": "Liste de blocage",
|
||||
"noUsersBlocked": "Aucune personne bloquée",
|
||||
"unblockAll": "Tout débloquer",
|
||||
"unblockAllConfirmTitle": "Confirmer ?",
|
||||
"unblockAllConfirmBody": "Confirmer le débloquage de toutes les personnes ?",
|
||||
"unblockJidConfirmTitle": "Débloquer ${jid} ?",
|
||||
"unblockJidConfirmBody": "Confirmer le débloquage de ${jid} ? Vous recevrez de nouveau les messages de sa part."
|
||||
},
|
||||
"cropbackground": {
|
||||
"blur": "Flouter l'arrière-plan",
|
||||
"setAsBackground": "Utiliser comme arrière-plan"
|
||||
},
|
||||
"stickerPack": {
|
||||
"removeConfirmTitle": "Supprimer autocollant",
|
||||
"removeConfirmBody": "Confirmer la suppression de cette série d'autocollants ?",
|
||||
"installConfirmTitle": "Installer autocollant",
|
||||
"restricted": "Cette série est limitée. Les autocollants s'afficheront mais ne pourront être envoyés.",
|
||||
"fetchingFailure": "Autocollants introuvables",
|
||||
"installConfirmBody": "Confirmer l'installation de cette série d'autocollants ?"
|
||||
},
|
||||
"sharedMedia": {
|
||||
"empty": {
|
||||
"chat": "Pas de média partagé dans cette conversation",
|
||||
"general": "Pas de fichier média disponible"
|
||||
}
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
"conversation": {
|
||||
"holdForLonger": "Maintenez le bouton pressé pour enregistrer un message vocal"
|
||||
},
|
||||
"message": {
|
||||
"integrityCheckFailed": "Impossible de vérifier l'intégrité du fichier"
|
||||
}
|
||||
}
|
||||
}
|
||||
463
assets/i18n/strings_gl.i18n.json
Normal file
@@ -0,0 +1,463 @@
|
||||
{
|
||||
"dateTime": {
|
||||
"justNow": "Neste momento",
|
||||
"nMinutesAgo": "fai ${min}min",
|
||||
"mondayAbbrev": "Lun",
|
||||
"tuesdayAbbrev": "Mar",
|
||||
"wednessdayAbbrev": "Mér",
|
||||
"thursdayAbbrev": "Xov",
|
||||
"fridayAbbrev": "Ven",
|
||||
"saturdayAbbrev": "Sáb",
|
||||
"sundayAbbrev": "Dom",
|
||||
"january": "Xaneiro",
|
||||
"february": "Febreiro",
|
||||
"march": "Marzo",
|
||||
"april": "Abril",
|
||||
"may": "Maio",
|
||||
"june": "Xuño",
|
||||
"july": "Xullo",
|
||||
"august": "Agosto",
|
||||
"september": "Setembro",
|
||||
"october": "Outubro",
|
||||
"november": "Novembro",
|
||||
"december": "Decembro",
|
||||
"today": "Hoxe",
|
||||
"yesterday": "Onte"
|
||||
},
|
||||
"messages": {
|
||||
"image": "Imaxe",
|
||||
"video": "Vídeo",
|
||||
"audio": "Audio",
|
||||
"file": "Ficheiro",
|
||||
"sticker": "Adhesivo",
|
||||
"retracted": "A mensaxe foi editada",
|
||||
"you": "Ti",
|
||||
"retractedFallback": "Unha mensaxe anterior foi editada pero o teu cliente non soporta esa función"
|
||||
},
|
||||
"errors": {
|
||||
"general": {
|
||||
"noInternet": "Sen conexión a Internet."
|
||||
},
|
||||
"filePicker": {
|
||||
"permissionDenied": "Non se concedeu permiso de acceso á almacenaxe."
|
||||
},
|
||||
"omemo": {
|
||||
"couldNotPublish": "Non se puido publicar a identidade criptográfica no servidor. Debido a isto a cifraxe de extremo-a-extremo podería non funcionar.",
|
||||
"invalidHmac": "Non se descifrou a mensaxe",
|
||||
"noDecryptionKey": "Non se dispón de chave de descifrado",
|
||||
"messageInvalidAfixElement": "Mensaxe cifrada non válida",
|
||||
"verificationInvalidOmemoUrl": "Impresión dixital OMEMO:2 non válida",
|
||||
"verificationWrongJid": "Enderezo XMPP incorrecto",
|
||||
"verificationWrongDevice": "Dispositivo OMEMO:2 incorrecto",
|
||||
"verificationNotInList": "Dispositivo OMEMO:2 incorrecto",
|
||||
"verificationWrongFingerprint": "Impresión dixital OMEMO:2 incorrecta",
|
||||
"notEncryptedForDevice": "Non se cifrou a mensaxe para este dispositivo"
|
||||
},
|
||||
"connection": {
|
||||
"connectionTimeout": "Non hai conexión co servidor",
|
||||
"saslAccountDisabled": "A conta está desactivada",
|
||||
"saslInvalidCredentials": "As credenciais da conta non son válidas",
|
||||
"unrecoverable": "Perdeuse a conexión debido a un erro irremediable"
|
||||
},
|
||||
"login": {
|
||||
"saslFailed": "Credenciais de acceso incorrectas",
|
||||
"startTlsFailed": "Non se puido establecer unha conexión segura",
|
||||
"noConnection": "Fallou o establecemento da conexión",
|
||||
"unspecified": "Erro inconcreto"
|
||||
},
|
||||
"message": {
|
||||
"unspecified": "Erro descoñecido",
|
||||
"fileUploadFailed": "Fallou a subida do ficheiro",
|
||||
"contactDoesntSupportOmemo": "O contacto non ten soporte para a cifraxe usando OMEMO:2",
|
||||
"fileDownloadFailed": "Fallou a descarga do ficheiro",
|
||||
"serviceUnavailable": "Non se puido entregar a mensaxe ao contacto",
|
||||
"remoteServerTimeout": "A mensaxe non se puido entregar ao servidor do contacto",
|
||||
"remoteServerNotFound": "A mensaxe non se puido entregar ao servidor do contacto e non sabemos onde está",
|
||||
"failedToEncrypt": "Non se puido cifrar a mensaxe",
|
||||
"failedToEncryptFile": "Non se puido cifrar o ficheiro",
|
||||
"failedToDecryptFile": "Non se puido descifrar o ficheiro",
|
||||
"fileNotEncrypted": "A conversa está cifrada pero o ficheiro non está cifrado"
|
||||
},
|
||||
"conversation": {
|
||||
"audioRecordingError": "Fallou a finalización da gravación de audio",
|
||||
"openFileNoAppError": "Non se atopa unha app para abrir o ficheiro",
|
||||
"openFileGenericError": "Non se puido abrir o ficheiro",
|
||||
"messageErrorDialogTitle": "Erro"
|
||||
},
|
||||
"newChat": {
|
||||
"remoteServerError": "Non se puido contactar co servidor remoto.",
|
||||
"groupchatUnsupported": "Por agora non hai soporte para unirse a conversas en grupo.",
|
||||
"unknown": "Erro descoñecido."
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
"message": {
|
||||
"integrityCheckFailed": "Non se puido verificar a integridade do ficheiro"
|
||||
},
|
||||
"conversation": {
|
||||
"holdForLonger": "Mantén premido o botón para gravar a mensaxe de voz",
|
||||
"microphoneDenied": "Denegado acceso ao micrófono"
|
||||
}
|
||||
},
|
||||
"pages": {
|
||||
"intro": {
|
||||
"noAccount": "Non tes unha conta XMPP? Sen problema, crear unha é doado.",
|
||||
"loginButton": "Acceder",
|
||||
"registerButton": "Crear conta"
|
||||
},
|
||||
"login": {
|
||||
"title": "Acceder",
|
||||
"xmppAddress": "Enderezo-XMPP",
|
||||
"password": "Contrasinal",
|
||||
"advancedOptions": "Opcións avanzadas",
|
||||
"createAccount": "Crear conta no servidor",
|
||||
"login": "Acceder"
|
||||
},
|
||||
"conversations": {
|
||||
"speeddialNewChat": "Nova conversa",
|
||||
"speeddialJoinGroupchat": "Entrar na conversa en grupo",
|
||||
"speeddialAddNoteToSelf": "Notas propias",
|
||||
"overlaySettings": "Axustes",
|
||||
"noOpenChats": "Non tes conversas abertas",
|
||||
"startChat": "Inicia unha conversa",
|
||||
"closeChat": "Pecha a conversa",
|
||||
"markAsRead": "Marcar como lido",
|
||||
"closeChatBody": "Tes a certeza de querer pechar a conversa con ${conversationTitle}?"
|
||||
},
|
||||
"conversation": {
|
||||
"unencrypted": "Sen cifrar",
|
||||
"encrypted": "Cifrada",
|
||||
"closeChat": "Pechar conversa",
|
||||
"closeChatConfirmTitle": "Pechar conversa",
|
||||
"closeChatConfirmSubtext": "Tes a certeza de querer pechar esta conversa?",
|
||||
"blockShort": "Bloquear",
|
||||
"blockUser": "Bloquear conta",
|
||||
"online": "En liña",
|
||||
"retract": "Editar mensaxe",
|
||||
"retractBody": "Tes a certeza de querer editar a mensaxe? Ten en conta que esta só é unha solicitude e que o cliente non ten porque facerlle caso.",
|
||||
"forward": "Reenviar",
|
||||
"edit": "Editar",
|
||||
"quote": "Citar",
|
||||
"showWarning": "Mostrar aviso",
|
||||
"warning": "Aviso",
|
||||
"addToContacts": "Engadir aos contactos",
|
||||
"addToContactsTitle": "Engadir a ${jid} aos contactos",
|
||||
"addToContactsBody": "Tes a certeza de querer engadir a ${jid} aos teus contactos?",
|
||||
"stickerPickerNoStickersLine1": "Non tes paquetes de adhesivos instalados.",
|
||||
"stickerPickerNoStickersLine2": "Pódelos instalar a través dos axustes dos adhesivos.",
|
||||
"stickerSettings": "Axustes dos adhesivos",
|
||||
"newDeviceMessage": {
|
||||
"one": "Engadiuse un novo dispositivo",
|
||||
"other": "Engadíronse varios dispositivos novos"
|
||||
},
|
||||
"replacedDeviceMessage": {
|
||||
"one": "Un dos dispositivos cambiou",
|
||||
"other": "Engadíronse varios dispositivos"
|
||||
},
|
||||
"messageHint": "Enviar unha mensaxe…",
|
||||
"sendImages": "Enviar imaxes",
|
||||
"sendFiles": "Enviar ficheiros",
|
||||
"takePhotos": "Facer fotos",
|
||||
"copy": "Copiar contido",
|
||||
"messageCopied": "Copiouse o contido da mensaxe no portapapeis",
|
||||
"addReaction": "Engadir reacción",
|
||||
"showError": "Mostar erro",
|
||||
"voiceRecording": {
|
||||
"dragToCancel": "Arrastra para cancelar",
|
||||
"leaveConfirmation": {
|
||||
"negative": "Cancelar",
|
||||
"title": "Desbotar a gravación",
|
||||
"body": "Estás a gravar unha mensaxe de voz. Queres desbotar a gravación?",
|
||||
"affirmative": "Desbotar"
|
||||
},
|
||||
"cancel": "Cancelar"
|
||||
},
|
||||
"sendMedia": "Enviar multimedia",
|
||||
"share": "Compartir"
|
||||
},
|
||||
"startchat": {
|
||||
"title": "Nova Conversa",
|
||||
"xmppAddress": "Enderezo XMPP",
|
||||
"subtitle": "Podes iniciar unha nova conversa escribindo un enderezo XMPP ou escaneando o seu código QR.",
|
||||
"buttonAddToContact": "Iniciar nova conversa"
|
||||
},
|
||||
"newconversation": {
|
||||
"title": "Nova conversa",
|
||||
"startChat": "Iniciar nova conversa",
|
||||
"createGroupchat": "Nova conversa en grupo",
|
||||
"nullNickname": "O alcume non pode estar baleiro!",
|
||||
"nick": "Alcume",
|
||||
"nicknameSubtitle": "Tes que escribir un alcume único para poder unirte á MUC.",
|
||||
"joinGroupChat": "Unirse a conversa en grupo",
|
||||
"enterNickname": "Escribe un alcume"
|
||||
},
|
||||
"crop": {
|
||||
"setProfilePicture": "Establecer imaxe de perfil"
|
||||
},
|
||||
"shareselection": {
|
||||
"shareWith": "Compartir con…",
|
||||
"confirmTitle": "Enviar ficheiro",
|
||||
"confirmBody": "Unha ou varias conversas non están cifradas. Isto significa que o ficheiro podería ser visto no servidor. Desexas continuar?"
|
||||
},
|
||||
"profile": {
|
||||
"general": {
|
||||
"omemo": "Seguridade",
|
||||
"profile": "Perfil",
|
||||
"media": "Multimedia"
|
||||
},
|
||||
"conversation": {
|
||||
"notifications": "Notificacións",
|
||||
"notificationsMuted": "Acalada",
|
||||
"notificationsEnabled": "Activada",
|
||||
"sharedMedia": "Multimedia"
|
||||
},
|
||||
"owndevices": {
|
||||
"title": "Dispositivos propios",
|
||||
"thisDevice": "Este dispositivo",
|
||||
"otherDevices": "Outros dispositivos",
|
||||
"deleteDeviceConfirmTitle": "Eliminar dispositivo",
|
||||
"deleteDeviceConfirmBody": "Isto significa que os contactos non poderán cifrar as mensaxes para ese dispositivo. Continuar?",
|
||||
"recreateOwnSessions": "Reconstruír sesións",
|
||||
"recreateOwnSessionsConfirmTitle": "Recrear as sesións propias?",
|
||||
"recreateOwnSessionsConfirmBody": "Isto volverá a crear as sesións criptográficas dos teus dispositivos. Fai isto só se os teus dispositivos mostran erros ao descrifrar.",
|
||||
"recreateOwnDevice": "Recrear dispositivo",
|
||||
"recreateOwnDeviceConfirmTitle": "Recrear o dispositivo propio?",
|
||||
"recreateOwnDeviceConfirmBody": "Isto recreará a identidade criptográfica deste dispositivo? Podería levarlle un anaco. Se os contactos verificaron este dispositivo, terán que facelo outra vez. Continuar?"
|
||||
},
|
||||
"devices": {
|
||||
"title": "Seguridade",
|
||||
"recreateSessions": "Reconstruír sesións",
|
||||
"recreateSessionsConfirmTitle": "Reconstruír sesións?",
|
||||
"recreateSessionsConfirmBody": "Isto volverá a crear as sesións criptográficas dos teus dispositivos. Usa isto só se os teus dispositivos mostran erros ao descifrar.",
|
||||
"noSessions": "Non hai sesións criptográficas en uso para a cifraxe de extremo-a-extremo."
|
||||
},
|
||||
"serverInfo": {
|
||||
"title": "Información do servidor"
|
||||
}
|
||||
},
|
||||
"sharedMedia": {
|
||||
"empty": {
|
||||
"general": "Non hai dispoñibles ficheiros multimedia",
|
||||
"chat": "Non hai multimedia compartido nesta conversa"
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
"about": {
|
||||
"debugMenuAlreadyShown": "Xa es desenvolvedora!",
|
||||
"title": "Acerca de",
|
||||
"licensed": "Baixo licenza GPL3",
|
||||
"version": "Versión ${version}",
|
||||
"viewSourceCode": "Ver código fonte",
|
||||
"nMoreToGo": "${n} máis para rematar…",
|
||||
"debugMenuShown": "Agora xa es desenvolvedora!"
|
||||
},
|
||||
"settings": {
|
||||
"title": "Axustes",
|
||||
"conversationsSection": "Conversas",
|
||||
"accountSection": "Conta",
|
||||
"signOut": "Pechar sesión",
|
||||
"signOutConfirmTitle": "Pechar Sesión",
|
||||
"signOutConfirmBody": "Vas pechar a sesión. Continuar?",
|
||||
"miscellaneousSection": "Varios",
|
||||
"debuggingSection": "Depuración",
|
||||
"general": "Xeral"
|
||||
},
|
||||
"appearance": {
|
||||
"title": "Aparencia",
|
||||
"languageSection": "Idioma",
|
||||
"language": "Idioma da app",
|
||||
"languageSubtext": "Idioma actual: $selectedLanguage",
|
||||
"systemLanguage": "Idioma por defecto"
|
||||
},
|
||||
"licenses": {
|
||||
"title": "Licenzas Open-Source",
|
||||
"licensedUnder": "Baixo licenza $license"
|
||||
},
|
||||
"conversation": {
|
||||
"title": "Conversa",
|
||||
"appearance": "Aparencia",
|
||||
"selectBackgroundImage": "Elexir imaxe de fondo",
|
||||
"selectBackgroundImageDescription": "Esta será a imaxe de fondo en todas as túas conversas",
|
||||
"removeBackgroundImage": "Retirar imaxe de fondo",
|
||||
"removeBackgroundImageConfirmTitle": "Retirar imaxe de fondo",
|
||||
"removeBackgroundImageConfirmBody": "Tes a certeza de querer eliminar a imaxe de fondo da conversa?",
|
||||
"newChatsSection": "Novas Conversas",
|
||||
"newChatsMuteByDefault": "Por defecto acalar as novas conversas",
|
||||
"newChatsE2EE": "Por defecto activar a cifraxe de extremo-a-extremo. AVISO: Experimental",
|
||||
"behaviourSection": "Comportamento",
|
||||
"contactsIntegration": "Integración dos contactos",
|
||||
"contactsIntegrationBody": "Ao activala, os datos da libreta de enderezos usaranse para proporcionar título ás conversas e imaxes de perfil. Non se transmite información ao servidor."
|
||||
},
|
||||
"debugging": {
|
||||
"title": "Opción de depuración",
|
||||
"generalSection": "Xeral",
|
||||
"generalEnableDebugging": "Activar depuración",
|
||||
"generalEncryptionPassword": "Contrasinal de cifraxe",
|
||||
"generalLoggingIp": "IP de rexistro",
|
||||
"generalLoggingIpSubtext": "O IP ao que se deben enviar os rexistros",
|
||||
"generalLoggingPort": "Porto de rexistro",
|
||||
"generalLoggingPortSubtext": "O IP ao que se deben enviar os rexistros",
|
||||
"generalEncryptionPasswordSubtext": "Os rexistros poderían conter información sensible así que mellor elixe un contrasinal forte"
|
||||
},
|
||||
"network": {
|
||||
"title": "Rede",
|
||||
"automaticDownloadsSection": "Descargas automáticas",
|
||||
"automaticDownloadsText": "Moxxy descargará automáticamente os ficheiros en…",
|
||||
"automaticDownloadsMaximumSize": "Tamaño máximo de descarga",
|
||||
"automaticDownloadsMaximumSizeSubtext": "O tamaño máximo dos ficheiros a descargar de xeito automático",
|
||||
"automaticDownloadAlways": "Sempre",
|
||||
"wifi": "Wifi",
|
||||
"mobileData": "Datos móbiles"
|
||||
},
|
||||
"privacy": {
|
||||
"profilePictureVisibility": "Facer pública a foto de perfil",
|
||||
"profilePictureVisibilitSubtext": "Se o activas, calquera poderá ver a túa foto de perfil. Se o desactivas, só as persoas da túa lista de contactos poderán ver a foto de perfil.",
|
||||
"conversationsSection": "Conversa",
|
||||
"sendChatMarkers": "Enviar marcadores de conversa",
|
||||
"title": "Privacidade",
|
||||
"generalSection": "Xeral",
|
||||
"sendChatMarkersSubtext": "Vai indicar aos teus correspondentes se recibiches ou liches a mensaxe",
|
||||
"showContactRequests": "Mostrar solicitudes de contacto",
|
||||
"showContactRequestsSubtext": "Mostrarache as persoas que te engadiron á súa lista de contactos pero que aínda non che enviaron mensaxes",
|
||||
"sendChatStates": "Enviar estados da conversa",
|
||||
"sendChatStatesSubtext": "Vai indicar aos teus correspondentes se estás escribindo ou lendo na conversa",
|
||||
"redirectsSection": "Reenvíos",
|
||||
"redirectsTitle": "Redirixir $serviceName",
|
||||
"cannotEnableRedirect": "Non se pode activar a redirección $serviceName",
|
||||
"cannotEnableRedirectSubtext": "Primeiro tes que establecer o servizo proxy ao que queres redirixir. Para facelo toca no campo a carón do botón.",
|
||||
"urlEmpty": "O URL non pode estar baleiro",
|
||||
"urlInvalid": "URL non válido",
|
||||
"redirectDialogTitle": "Redirixir $serviceName",
|
||||
"stickersPrivacy": "Manter como pública a lista de adhesivos",
|
||||
"stickersPrivacySubtext": "Se o activas, calquera poderá ver a túa lista de paquetes de adhesivos instalados.",
|
||||
"redirectText": "Redireccionará as ligazóns a $serviceName nas que premas cara o servizo proxy, ex. $exampleProxy",
|
||||
"currentlySelected": "Seleccionado actualmente: $proxy"
|
||||
},
|
||||
"stickers": {
|
||||
"title": "Adhesivos",
|
||||
"stickerSection": "Adhesivo",
|
||||
"displayStickers": "Mostar adhesivos na conversa",
|
||||
"autoDownload": "Descargar automaticamente adhesivos",
|
||||
"autoDownloadBody": "Se o activas, descargarás automaticamente os adhesivos cando o remitente estea na túa lista de contactos.",
|
||||
"stickerPacksSection": "Paquetes de adhesivos",
|
||||
"importStickerPack": "Importar paquete de adhesivos",
|
||||
"importSuccess": "Paquete de adhesivos importado correctamente",
|
||||
"importFailure": "Fallou a importación do paquete de adhesivos",
|
||||
"stickerPackSize": "(${size})"
|
||||
},
|
||||
"stickerPacks": {
|
||||
"title": "Paquetes de Adhesivos"
|
||||
},
|
||||
"storage": {
|
||||
"title": "Almacenaxe",
|
||||
"storageUsed": "Almacenaxe utilizada: ${size}",
|
||||
"sizePlaceholder": "Calculando…",
|
||||
"storageManagement": "Xestión da almacenaxe",
|
||||
"removeOldMedia": {
|
||||
"title": "Eliminar multimedia antigo",
|
||||
"description": "Elimina ficheiros multimedia antigos do dispositivo"
|
||||
},
|
||||
"removeOldMediaDialog": {
|
||||
"title": "Eliminar ficheiros multimedia",
|
||||
"options": {
|
||||
"all": "Todos os ficheiros multimedia",
|
||||
"oneWeek": "Anteriores a 1 semana",
|
||||
"oneMonth": "Anteriores a 1 mes"
|
||||
},
|
||||
"delete": "Eliminar",
|
||||
"confirmation": {
|
||||
"body": "Tes a certeza de querer eliminar os ficheiros multimedia antigos?"
|
||||
}
|
||||
},
|
||||
"viewMediaFiles": "Ver ficheiros multimedia",
|
||||
"mediaFiles": "Ficheiros multimedia",
|
||||
"types": {
|
||||
"media": "Multimedia",
|
||||
"stickers": "Adhesivos"
|
||||
},
|
||||
"manageStickers": "Xestión dos paquetes de adhesivos"
|
||||
}
|
||||
},
|
||||
"blocklist": {
|
||||
"title": "Lista de bloqueo",
|
||||
"noUsersBlocked": "Non tes contas bloqueadas",
|
||||
"unblockAll": "Desbloquear todo",
|
||||
"unblockAllConfirmTitle": "Tes certeza?",
|
||||
"unblockAllConfirmBody": "Tes a certeza de querer desbloquear todas as contas?",
|
||||
"unblockJidConfirmTitle": "Desbloquear a ${jid}?",
|
||||
"unblockJidConfirmBody": "Tes a certeza de querer desbloquear a ${jid}? Volverás a recibir mensaxes desde esta conta."
|
||||
},
|
||||
"cropbackground": {
|
||||
"blur": "Desenfocar o fondo",
|
||||
"setAsBackground": "Establecer como imaxe de fondo"
|
||||
},
|
||||
"stickerPack": {
|
||||
"removeConfirmTitle": "Eliminar paquete de adhesivos",
|
||||
"removeConfirmBody": "Tes a certeza de querer eliminar este paquete de adhesivos?",
|
||||
"installConfirmTitle": "Instalar paquete de adhesivos",
|
||||
"installConfirmBody": "Tes a certeza de querer instalar este paquete de adhesivos?",
|
||||
"restricted": "Este paquete de adhesivos ten restricións. Significa que poden ser vistos pero non enviados.",
|
||||
"fetchingFailure": "Non se atopa o paquete de adhesivos"
|
||||
}
|
||||
},
|
||||
"global": {
|
||||
"title": "Moxxy",
|
||||
"dialogAccept": "Oká",
|
||||
"dialogCancel": "Cancelar",
|
||||
"yes": "Si",
|
||||
"no": "Non",
|
||||
"moxxySubtitle": "Un experimento para crear un cliente XMPP moderno, bonito e doado de usar."
|
||||
},
|
||||
"notifications": {
|
||||
"permanent": {
|
||||
"idle": "Detido",
|
||||
"ready": "Preparado para recibir mensaxes",
|
||||
"connecting": "Conectando…",
|
||||
"disconnect": "Desconectado",
|
||||
"error": "Erro"
|
||||
},
|
||||
"message": {
|
||||
"reply": "Responder",
|
||||
"markAsRead": "Marcar como lido"
|
||||
},
|
||||
"channels": {
|
||||
"messagesChannelName": "Mensaxes",
|
||||
"warningChannelName": "Avisos",
|
||||
"warningChannelDescription": "Avisos en relación a Moxxy",
|
||||
"messagesChannelDescription": "A canle de notificación para as mensaxes recibidas",
|
||||
"serviceChannelName": "Servizo en primeiro plano",
|
||||
"serviceChannelDescription": "Mantén activa a notificación do servizo en primeiro plano"
|
||||
},
|
||||
"titles": {
|
||||
"error": "Erro"
|
||||
},
|
||||
"errors": {
|
||||
"messageError": {
|
||||
"title": "Fallou a entrega da mensaxe",
|
||||
"body": "Fallou a entrega da mensaxe a ${conversationTitle}"
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
"blockingError": {
|
||||
"title": "Erro ao bloquear a usuaria",
|
||||
"body": "Non se puido bloquear a ${jid} porque o teu servidor non ten soporte para bloqueos."
|
||||
}
|
||||
}
|
||||
},
|
||||
"language": "Galego",
|
||||
"permissions": {
|
||||
"requests": {
|
||||
"batterySaving": {
|
||||
"reason": "Para poder recibir mensaxes cando está en segundo plano, Moxxy ten que evitar que Android force o aforro de batería."
|
||||
},
|
||||
"notification": {
|
||||
"reason": "Para poder informar das mensaxes que chegan, Moxxy precisa permiso para mostrar notificacións."
|
||||
}
|
||||
},
|
||||
"allow": "Permitir",
|
||||
"skip": "Evitar"
|
||||
},
|
||||
"emojiPicker": {
|
||||
"noRecents": "Sen recentes"
|
||||
}
|
||||
}
|
||||
172
assets/i18n/strings_ja.i18n.json
Normal file
@@ -0,0 +1,172 @@
|
||||
{
|
||||
"language": "日本語",
|
||||
"global": {
|
||||
"yes": "はい",
|
||||
"no": "いいえ",
|
||||
"dialogCancel": "キャンセル",
|
||||
"title": "Moxxy",
|
||||
"dialogAccept": "OK"
|
||||
},
|
||||
"dateTime": {
|
||||
"thursdayAbbrev": "木",
|
||||
"fridayAbbrev": "金",
|
||||
"saturdayAbbrev": "土",
|
||||
"january": "1月",
|
||||
"february": "2月",
|
||||
"march": "3月",
|
||||
"may": "5月",
|
||||
"june": "6月",
|
||||
"july": "7月",
|
||||
"september": "9月",
|
||||
"october": "10月",
|
||||
"justNow": "ちょうど今",
|
||||
"nMinutesAgo": "${min}分前",
|
||||
"mondayAbbrev": "月",
|
||||
"tuesdayAbbrev": "火",
|
||||
"wednessdayAbbrev": "水",
|
||||
"sundayAbbrev": "日",
|
||||
"april": "4月",
|
||||
"august": "8月",
|
||||
"november": "11月",
|
||||
"december": "12月",
|
||||
"today": "今日",
|
||||
"yesterday": "昨日"
|
||||
},
|
||||
"messages": {
|
||||
"audio": "音声",
|
||||
"you": "自分",
|
||||
"image": "画像",
|
||||
"video": "ビデオ",
|
||||
"file": "ファイル",
|
||||
"sticker": "スタンプ",
|
||||
"retracted": "メッセージ取り消された",
|
||||
"retractedFallback": "前のメッセージを取り消しましたが、このクライエントはサポートしていません"
|
||||
},
|
||||
"errors": {
|
||||
"connection": {
|
||||
"connectionTimeout": "サーバー接続中にタイムアウトが発生しました",
|
||||
"saslInvalidCredentials": "ユーザー名またはパスワードが無効",
|
||||
"saslAccountDisabled": "あなたのアカウントは停止されています",
|
||||
"unrecoverable": "回復不能のエラーで接続が途絶えました"
|
||||
},
|
||||
"login": {
|
||||
"noConnection": "接続できませんでした",
|
||||
"startTlsFailed": "接続できませんでした",
|
||||
"unspecified": "特定できないエラー",
|
||||
"saslFailed": "無効なログイン証明書です"
|
||||
},
|
||||
"message": {
|
||||
"fileUploadFailed": "アップロードに失敗しました",
|
||||
"fileDownloadFailed": "ダウンロードに失敗しました",
|
||||
"serviceUnavailable": "配信に失敗しました",
|
||||
"unspecified": "不明なエラー",
|
||||
"failedToDecryptFile": "そのファイルは復号化できません",
|
||||
"fileNotEncrypted": "チャットは暗号化されますが、ファイルは暗号化されません"
|
||||
},
|
||||
"omemo": {
|
||||
"notEncryptedForDevice": "このデバイス向けにメッセージは暗号化されませんでした",
|
||||
"couldNotPublish": "サーバに対して暗号化IDを発行できませんでした、端末間暗号通信はできません",
|
||||
"invalidHmac": "メッセージを復号できませんでした",
|
||||
"noDecryptionKey": "復号キーがありません",
|
||||
"messageInvalidAfixElement": "無効な暗号化メッセージです",
|
||||
"verificationInvalidOmemoUrl": "無効な OMEMO:2 フィンガープリントです",
|
||||
"verificationWrongJid": "正しくない XMPP アドレスです",
|
||||
"verificationWrongDevice": "正しくない OMEMO:2 機器です",
|
||||
"verificationNotInList": "正しくない OMEMO:2 機器です",
|
||||
"verificationWrongFingerprint": "正しくない OMEMO:2 フィンガープリントです"
|
||||
},
|
||||
"conversation": {
|
||||
"messageErrorDialogTitle": "エラー",
|
||||
"audioRecordingError": "音声録音の処理に失敗しました",
|
||||
"openFileNoAppError": "このファイルを開くアプリケーションを発見できませんでした",
|
||||
"openFileGenericError": "ファイルを開くのに失敗しました"
|
||||
},
|
||||
"filePicker": {
|
||||
"permissionDenied": "書き込み用メディアへの権限がありません"
|
||||
},
|
||||
"general": {
|
||||
"noInternet": "インターネットに接続されていません"
|
||||
},
|
||||
"newChat": {
|
||||
"remoteServerError": "リモートサーバーへの接続に失敗しました",
|
||||
"groupchatUnsupported": "グループチャットへの参加は現在サポートされていません",
|
||||
"unknown": "不明なエラー"
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
"conversation": {
|
||||
"holdForLonger": "長押しすると音声記録できます"
|
||||
},
|
||||
"message": {
|
||||
"integrityCheckFailed": "ファイルの整合性を確認できませんでした"
|
||||
}
|
||||
},
|
||||
"pages": {
|
||||
"intro": {
|
||||
"loginButton": "ログイン",
|
||||
"registerButton": "新規登録",
|
||||
"noAccount": "XMPPアドレスをお持ちですか?XMPPアドレスの作成は簡単です。"
|
||||
},
|
||||
"login": {
|
||||
"title": "ログイン",
|
||||
"xmppAddress": "XMPPアドレス",
|
||||
"password": "パスワード",
|
||||
"advancedOptions": "詳細設定",
|
||||
"createAccount": "サーバーにアカウントを作成する"
|
||||
},
|
||||
"conversations": {
|
||||
"speeddialJoinGroupchat": "グループチャットに参加",
|
||||
"speeddialAddNoteToSelf": "自分用メモ",
|
||||
"speeddialNewChat": "新しいチャット",
|
||||
"overlaySettings": "設定"
|
||||
},
|
||||
"conversation": {
|
||||
"blockShort": "ブロック",
|
||||
"blockUser": "ユーザをブロック",
|
||||
"retract": "メッセージを取り消す",
|
||||
"retractBody": "本当にメッセージを取り消しますか? これはただのリクエストであり面目や体裁に関わるものではありません",
|
||||
"forward": "送る",
|
||||
"edit": "編集する",
|
||||
"online": "オンライン",
|
||||
"quote": "引用する",
|
||||
"copy": "内容をコピー",
|
||||
"addReaction": "リアクションを追加する",
|
||||
"showError": "エラーを表示",
|
||||
"showWarning": "警告を表示",
|
||||
"warning": "警告",
|
||||
"messageCopied": "メッセージはクリップボードにコピーされました"
|
||||
}
|
||||
},
|
||||
"notifications": {
|
||||
"permanent": {
|
||||
"connecting": "接続中…",
|
||||
"error": "エラー",
|
||||
"idle": "待機中",
|
||||
"ready": "メッセージを受信する準備ができました",
|
||||
"disconnect": "切断済み"
|
||||
},
|
||||
"message": {
|
||||
"reply": "返信",
|
||||
"markAsRead": "既読"
|
||||
},
|
||||
"channels": {
|
||||
"warningChannelName": "警告",
|
||||
"messagesChannelName": "メッセージ",
|
||||
"messagesChannelDescription": "受信メッセージのためのお知らせチャンネル",
|
||||
"warningChannelDescription": "Moxxy に関する警告"
|
||||
},
|
||||
"titles": {
|
||||
"error": "エラー"
|
||||
},
|
||||
"errors": {
|
||||
"messageError": {
|
||||
"title": "メッセージの送信に失敗しました",
|
||||
"body": "${conversationTitle} に送信したメッセージは届きませんでした"
|
||||
}
|
||||
}
|
||||
},
|
||||
"permissions": {
|
||||
"skip": "スキップ",
|
||||
"allow": "許可する"
|
||||
}
|
||||
}
|
||||
463
assets/i18n/strings_nl.i18n.json
Normal file
@@ -0,0 +1,463 @@
|
||||
{
|
||||
"language": "Nederlands",
|
||||
"global": {
|
||||
"title": "Moxxy",
|
||||
"dialogAccept": "Oké",
|
||||
"dialogCancel": "Annuleren",
|
||||
"yes": "Ja",
|
||||
"no": "Nee",
|
||||
"moxxySubtitle": "Een xmpp-experiment: het bouwen van een moderne, eenvoudige en mooie client."
|
||||
},
|
||||
"notifications": {
|
||||
"permanent": {
|
||||
"idle": "Inactief",
|
||||
"ready": "Klaar om berichten te ontvangen",
|
||||
"connecting": "Bezig met verbinden…",
|
||||
"disconnect": "Verbinding verbroken",
|
||||
"error": "Foutmelding"
|
||||
},
|
||||
"message": {
|
||||
"reply": "Beantwoorden",
|
||||
"markAsRead": "Markeren als gelezen"
|
||||
},
|
||||
"channels": {
|
||||
"messagesChannelName": "Berichten",
|
||||
"warningChannelName": "Waarschuwingen",
|
||||
"warningChannelDescription": "Aan Moxxy gerelateerde waarschuwingen",
|
||||
"messagesChannelDescription": "Het meldingskanaal voor het ontvangen van berichten",
|
||||
"serviceChannelName": "Voorgronddienst",
|
||||
"serviceChannelDescription": "Toont de vaste voorgronddienstmelding"
|
||||
},
|
||||
"titles": {
|
||||
"error": "Foutmelding"
|
||||
},
|
||||
"errors": {
|
||||
"messageError": {
|
||||
"title": "Bericht afleveren mislukt",
|
||||
"body": "Her bericht aan ‘${conversationTitle}’ kan niet worden afgeleverd"
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
"blockingError": {
|
||||
"title": "Blokkeren mislukt",
|
||||
"body": "De gebruiker ‘${jid}’ kan niet worden geblokkeerd omdat je server dit niet ondersteunt."
|
||||
}
|
||||
}
|
||||
},
|
||||
"dateTime": {
|
||||
"justNow": "Zojuist",
|
||||
"nMinutesAgo": "${min} min. geleden",
|
||||
"mondayAbbrev": "ma",
|
||||
"tuesdayAbbrev": "di",
|
||||
"wednessdayAbbrev": "woe",
|
||||
"thursdayAbbrev": "do",
|
||||
"fridayAbbrev": "vrij",
|
||||
"saturdayAbbrev": "za",
|
||||
"sundayAbbrev": "zo",
|
||||
"january": "januari",
|
||||
"february": "februari",
|
||||
"march": "maart",
|
||||
"april": "april",
|
||||
"may": "mei",
|
||||
"june": "juni",
|
||||
"july": "juli",
|
||||
"august": "augustus",
|
||||
"september": "september",
|
||||
"october": "oktober",
|
||||
"november": "november",
|
||||
"december": "december",
|
||||
"today": "Vandaag",
|
||||
"yesterday": "Gisteren"
|
||||
},
|
||||
"messages": {
|
||||
"image": "Afbeelding",
|
||||
"video": "Video",
|
||||
"audio": "Audio",
|
||||
"file": "Bestand",
|
||||
"sticker": "Sticker",
|
||||
"retracted": "Dit bericht is herroepen",
|
||||
"retractedFallback": "Er is een eerder bericht herroepen, maar je client heeft hier geen ondersteuning voor",
|
||||
"you": "Ik"
|
||||
},
|
||||
"errors": {
|
||||
"filePicker": {
|
||||
"permissionDenied": "Het opslagrecht is geweigerd."
|
||||
},
|
||||
"omemo": {
|
||||
"notEncryptedForDevice": "Dit bericht is niet versleuteld op dit apparaat",
|
||||
"invalidHmac": "Het bericht kan niet worden ontsleuteld",
|
||||
"noDecryptionKey": "Er is geen sleutel beschikbaar",
|
||||
"messageInvalidAfixElement": "Het bericht is ongeldig versleuteld",
|
||||
"verificationInvalidOmemoUrl": "Ongeldige OMEMO:2-vingerafdruk",
|
||||
"verificationWrongJid": "Ongeldig xmpp-adres",
|
||||
"verificationWrongDevice": "Ongeldig OMEMO:2-apparaat",
|
||||
"verificationNotInList": "Ongeldig OMEMO:2-apparaat",
|
||||
"verificationWrongFingerprint": "Ongeldige OMEMO:2-vingerafdruk",
|
||||
"couldNotPublish": "De versleutelde identiteit kan niet worden gepubliceerd op de server. Hierdoor werkt eind-tot-eindversleuteling mogelijk niet."
|
||||
},
|
||||
"connection": {
|
||||
"saslAccountDisabled": "Je account is uitgeschakeld",
|
||||
"saslInvalidCredentials": "Je inloggegevens zijn ongeldig",
|
||||
"unrecoverable": "De verbinding is verbroken wegens een onoplosbare fout",
|
||||
"connectionTimeout": "Er kan geen verbinding worden gemaakt met de server"
|
||||
},
|
||||
"login": {
|
||||
"saslFailed": "De inloggegevens zijn ongeldig",
|
||||
"noConnection": "Er kan geen verbinding worden opgezet",
|
||||
"unspecified": "Onbekende foutmelding",
|
||||
"startTlsFailed": "Er kan geen beveiligde verbinding worden opgezet"
|
||||
},
|
||||
"message": {
|
||||
"unspecified": "Onbekende foutmelding",
|
||||
"fileUploadFailed": "Het bestand kan niet worden geüpload",
|
||||
"contactDoesntSupportOmemo": "Deze contactpersoon heeft geen ondersteuning voon OMEMO:2-versleuteling",
|
||||
"fileDownloadFailed": "Het bestand kan niet worden opgehaald",
|
||||
"serviceUnavailable": "Het bericht kan niet worden bezorgd",
|
||||
"remoteServerTimeout": "Het bericht kan niet worden verstuurd naar de server",
|
||||
"failedToEncrypt": "Het bericht kan niet worden versleuteld",
|
||||
"failedToEncryptFile": "Het bestand kan niet worden versleuteld",
|
||||
"failedToDecryptFile": "Het bestand kan niet worden ontsleuteld",
|
||||
"fileNotEncrypted": "Het gesprek is versleuteld, maar het bestand niet",
|
||||
"remoteServerNotFound": "Het bericht kan niet worden verstuurd naar de server omdat het niet bestaat"
|
||||
},
|
||||
"conversation": {
|
||||
"audioRecordingError": "De audio-opname kan niet worden afgerond",
|
||||
"openFileGenericError": "Het bestand kan niet worden geopend",
|
||||
"messageErrorDialogTitle": "Foutmelding",
|
||||
"openFileNoAppError": "Er is geen app die dit bestand kan openen"
|
||||
},
|
||||
"general": {
|
||||
"noInternet": "Er is geen internetverbinding."
|
||||
},
|
||||
"newChat": {
|
||||
"groupchatUnsupported": "Deelnemen aan groepsgesprekken wordt momenteel niet ondersteund.",
|
||||
"unknown": "Onbekende foutmelding.",
|
||||
"remoteServerError": "Er kan geen verbinding worden gemaakt met de externe server."
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
"message": {
|
||||
"integrityCheckFailed": "De bestandsintegriteit kan niet worden vastgesteld"
|
||||
},
|
||||
"conversation": {
|
||||
"holdForLonger": "Houd langer ingedrukt om een spraakbericht op te nemen",
|
||||
"microphoneDenied": "Microfoontoegang geweigerd"
|
||||
}
|
||||
},
|
||||
"pages": {
|
||||
"intro": {
|
||||
"loginButton": "Inloggen",
|
||||
"registerButton": "Registreren",
|
||||
"noAccount": "Geen xmpp-account? Geen zorgen: je maakt er in een handomdraai een aan."
|
||||
},
|
||||
"login": {
|
||||
"title": "Inloggen",
|
||||
"xmppAddress": "Xmpp-adres",
|
||||
"password": "Wachtwoord",
|
||||
"advancedOptions": "Geavanceerde opties",
|
||||
"createAccount": "Account aanmaken op server",
|
||||
"login": "Inloggen"
|
||||
},
|
||||
"conversations": {
|
||||
"speeddialNewChat": "Nieuw gesprek",
|
||||
"speeddialJoinGroupchat": "Deelnemen aan groepsgesprek",
|
||||
"speeddialAddNoteToSelf": "Zelfmemo",
|
||||
"overlaySettings": "Instellingen",
|
||||
"noOpenChats": "Er zijn geen openstaande gesprekken",
|
||||
"startChat": "Gesprek starten",
|
||||
"closeChat": "Gesprek sluiten",
|
||||
"closeChatBody": "Weet je zeker dat je het gesprek “${conversationTitle}” wilt sluiten?",
|
||||
"markAsRead": "Markeren als gelezen"
|
||||
},
|
||||
"conversation": {
|
||||
"unencrypted": "Onversleuteld",
|
||||
"encrypted": "Versleuteld",
|
||||
"closeChat": "Gesprek sluiten",
|
||||
"closeChatConfirmSubtext": "Weet je zeker dat je dit gesprek wilt sluiten?",
|
||||
"blockShort": "Blokkeren",
|
||||
"blockUser": "Gebruiker blokkeren",
|
||||
"online": "Online",
|
||||
"retract": "Bericht herroepen",
|
||||
"forward": "Doorsturen",
|
||||
"edit": "Bewerken",
|
||||
"quote": "Citeren",
|
||||
"copy": "Inhoud kopiëren",
|
||||
"addReaction": "Reageren",
|
||||
"showError": "Foutmelding tonen",
|
||||
"showWarning": "Waarschuwing tonen",
|
||||
"addToContacts": "Toevoegen aan contactpersonen",
|
||||
"addToContactsTitle": "${jid} toevoegen aan contactpersonen",
|
||||
"addToContactsBody": "Weet je zeker dat je ${jid} wilt toevoegen aan je contactpersonen?",
|
||||
"stickerPickerNoStickersLine1": "Er zijn geen stickerpakketten beschikbaar.",
|
||||
"stickerSettings": "Stickerinstellingen",
|
||||
"newDeviceMessage": {
|
||||
"one": "Er is een nieuw apparaat toegevoegd",
|
||||
"other": "Er zijn meerdere nieuwe apparaten toegevoegd"
|
||||
},
|
||||
"replacedDeviceMessage": {
|
||||
"one": "Er is een apparaat gewijzigd",
|
||||
"other": "Er zijn meerdere apparaten toegevoegd"
|
||||
},
|
||||
"messageHint": "Verstuur een bericht…",
|
||||
"sendImages": "Afbeeldingen versturen",
|
||||
"sendFiles": "Bestanden versturen",
|
||||
"closeChatConfirmTitle": "Gesprek sluiten",
|
||||
"retractBody": "Weet je zeker dat je dit bericht wilt herroepen? Dit is slechts een verzoek aan de client dat niet in acht hoeft te worden genomen.",
|
||||
"stickerPickerNoStickersLine2": "Installeer pakketten via de stickerinstellingen.",
|
||||
"takePhotos": "Foto's maken",
|
||||
"warning": "Waarschuwing",
|
||||
"messageCopied": "De berichtinhoud is gekopieerd naar het klembord",
|
||||
"voiceRecording": {
|
||||
"dragToCancel": "Versleep om te annuleren",
|
||||
"leaveConfirmation": {
|
||||
"negative": "Annuleren",
|
||||
"title": "Opname stoppen",
|
||||
"body": "Je bent momenteel een spraakbericht aan het opnemen. Wil je de opname stoppen en wissen?",
|
||||
"affirmative": "Stoppen en wissen"
|
||||
},
|
||||
"cancel": "Annuleren"
|
||||
},
|
||||
"sendMedia": "Media versturen",
|
||||
"share": "Delen"
|
||||
},
|
||||
"newconversation": {
|
||||
"title": "Nieuw gesprek",
|
||||
"startChat": "Gesprek starten",
|
||||
"createGroupchat": "Nieuw groepsgesprek",
|
||||
"nick": "Bijnaam",
|
||||
"enterNickname": "Voer een bijnaam in",
|
||||
"nicknameSubtitle": "Voer een unieke bijnaam in om deel te kunnen nemen aan een MUC.",
|
||||
"joinGroupChat": "Deelnemen aan groepsgesprek",
|
||||
"nullNickname": "Voer een bijnaam in!"
|
||||
},
|
||||
"crop": {
|
||||
"setProfilePicture": "Instellen als profielfoto"
|
||||
},
|
||||
"shareselection": {
|
||||
"shareWith": "Delen met…",
|
||||
"confirmTitle": "Bestand versturen",
|
||||
"confirmBody": "Een of meerdere gesprekken zijn onversleuteld. Dit houdt in dat het bestand kan worden uitgelezen door de server. Weet je zeker dat je wilt doorgaan?"
|
||||
},
|
||||
"profile": {
|
||||
"general": {
|
||||
"omemo": "Beveiliging",
|
||||
"profile": "Profiel",
|
||||
"media": "Media"
|
||||
},
|
||||
"conversation": {
|
||||
"notifications": "Meldingen",
|
||||
"notificationsMuted": "Gedempt",
|
||||
"notificationsEnabled": "Ingeschakeld",
|
||||
"sharedMedia": "Media"
|
||||
},
|
||||
"owndevices": {
|
||||
"title": "Mijn apparaten",
|
||||
"thisDevice": "Dit apparaat",
|
||||
"otherDevices": "Overige apparaten",
|
||||
"deleteDeviceConfirmTitle": "Apparaat verwijderen",
|
||||
"deleteDeviceConfirmBody": "Let op: hierdoor kunnen contactpersonen het apparaat niet meer versleutelen. Wil je doorgaan?",
|
||||
"recreateOwnSessions": "Sessies heraanmaken",
|
||||
"recreateOwnSessionsConfirmTitle": "Wil je je sessies heraanmaken?",
|
||||
"recreateOwnDevice": "Apparaat heraanmaken",
|
||||
"recreateOwnDeviceConfirmTitle": "Wil je je apparaat heraanmaken?",
|
||||
"recreateOwnSessionsConfirmBody": "Hierdoor worden de versleutelde sessies opnieuw aangemaakt op je apparaten. Let op: doe dit alléén als apparaten ontsleutelfoutmeldingen tonen.",
|
||||
"recreateOwnDeviceConfirmBody": "Hierdoor wordt de versleutelde identiteit van dit apparaat opnieuw aangemaakt. Dit kan even duren. Als contactpersonen je apparaat hebben goedgekeurd, dan dienen ze dit opnieuw te doen. Wil je doorgaan?"
|
||||
},
|
||||
"devices": {
|
||||
"title": "Beveiliging",
|
||||
"recreateSessions": "Sessies heraanmaken",
|
||||
"recreateSessionsConfirmTitle": "Wil je je sessies heraanmaken?",
|
||||
"recreateSessionsConfirmBody": "Hierdoor worden alle versleutelde sessies opnieuw aangemaakt op je apparaten. Let op: doe dit alléén als je apparaten ontsleutelfoutmeldingen tonen.",
|
||||
"noSessions": "Er zijn geen versleutelde sessies die worden gebruikt voor eind-tot-eindversleuteling."
|
||||
},
|
||||
"serverInfo": {
|
||||
"title": "Serverinformatie"
|
||||
}
|
||||
},
|
||||
"blocklist": {
|
||||
"title": "Blokkadelijst",
|
||||
"noUsersBlocked": "Er zijn geen geblokkeerde gebruikers",
|
||||
"unblockAll": "Iedereen deblokkeren",
|
||||
"unblockAllConfirmTitle": "Weet je het zeker?",
|
||||
"unblockAllConfirmBody": "Weet je zeker dat je alle gebruikers wilt deblokkeren?",
|
||||
"unblockJidConfirmTitle": "Wil je ${jid} deblokkeren?",
|
||||
"unblockJidConfirmBody": "Weet je zeker dat je ${jid} wilt deblokkeren? Hierdoor ontvang je weer berichten van deze gebruiker."
|
||||
},
|
||||
"cropbackground": {
|
||||
"blur": "Achtergrond vervagen",
|
||||
"setAsBackground": "Instellen als achtergrond"
|
||||
},
|
||||
"stickerPack": {
|
||||
"removeConfirmTitle": "Stickerpakket verwijderen",
|
||||
"installConfirmTitle": "Stickerpakket installeren",
|
||||
"installConfirmBody": "Weet je zeker dat je dit stickerpakket wilt installeren?",
|
||||
"fetchingFailure": "Het stickerpakket is niet gevonden",
|
||||
"removeConfirmBody": "Weet je zeker dat je dit stickerpakket wilt verwijderen?",
|
||||
"restricted": "Dit stickerpakket is beperkt toegankelijk. Dit houdt in dat de stickers kunnen worden getoond, maar niet worden verstuurd."
|
||||
},
|
||||
"settings": {
|
||||
"settings": {
|
||||
"title": "Instellingen",
|
||||
"conversationsSection": "Gesprekken",
|
||||
"accountSection": "Account",
|
||||
"signOut": "Uitloggen",
|
||||
"signOutConfirmTitle": "Uitloggen",
|
||||
"signOutConfirmBody": "Je staat op het punt om uit te loggen. Wil je doorgaan?",
|
||||
"miscellaneousSection": "Overig",
|
||||
"debuggingSection": "Foutopsporing",
|
||||
"general": "Algemeen"
|
||||
},
|
||||
"about": {
|
||||
"title": "Over",
|
||||
"licensed": "Uitgebracht onder de GPL3-licentie",
|
||||
"version": "Versie ${version}",
|
||||
"viewSourceCode": "Broncode bekijken",
|
||||
"nMoreToGo": "Nog ${n} te gaan…",
|
||||
"debugMenuShown": "Je bent nu een ontwikkelaar!",
|
||||
"debugMenuAlreadyShown": "Je bent al een ontwikkelaar!"
|
||||
},
|
||||
"appearance": {
|
||||
"title": "Vormgeving",
|
||||
"languageSection": "Taal",
|
||||
"language": "Apptaal",
|
||||
"languageSubtext": "Huidige taal: $selectedLanguage",
|
||||
"systemLanguage": "Standaardtaal"
|
||||
},
|
||||
"licenses": {
|
||||
"title": "Opensourcelicenties",
|
||||
"licensedUnder": "Uitgebracht onder de $license-licentie"
|
||||
},
|
||||
"conversation": {
|
||||
"title": "Gesprek",
|
||||
"appearance": "Vormgeving",
|
||||
"selectBackgroundImage": "Kies een achtergrond",
|
||||
"removeBackgroundImage": "Afbeelding verwijderen",
|
||||
"removeBackgroundImageConfirmTitle": "Afbeelding verwijderen",
|
||||
"removeBackgroundImageConfirmBody": "Weet je zeker dat je de huidige gespreksachtergrond wilt verwijderen?",
|
||||
"newChatsSection": "Nieuwe gesprekken",
|
||||
"newChatsMuteByDefault": "Nieuwe gesprekken dempen",
|
||||
"newChatsE2EE": "Eind-tot-eindversleuteling standaard inschakelen (WAARSCHUWING: experimenteel)",
|
||||
"behaviourSection": "Gedrag",
|
||||
"contactsIntegration": "Contactpersoonintegratie",
|
||||
"contactsIntegrationBody": "Schakel in om het adresboek te gebruiken om gesprekstitels en profielfoto's in te stellen. Er worden geen gegevens verstuurd naar de server.",
|
||||
"selectBackgroundImageDescription": "Deze afbeelding wordt gebruikt als achtergrond in al je gesprekken"
|
||||
},
|
||||
"debugging": {
|
||||
"title": "Foutopsporingsopties",
|
||||
"generalSection": "Algemeen",
|
||||
"generalEnableDebugging": "Foutopsporing inschakelen",
|
||||
"generalEncryptionPassword": "Versleutelwachtwoord",
|
||||
"generalLoggingIp": "Ip-log",
|
||||
"generalLoggingIpSubtext": "Het ip-adres waar de logboeken naartoe dienen te worden gestuurd",
|
||||
"generalLoggingPort": "Logpoort",
|
||||
"generalLoggingPortSubtext": "Het ip-adres waar de logboeken naartoe dienen te worden gestuurd",
|
||||
"generalEncryptionPasswordSubtext": "Let op: de logboeken kunnen privéinformatie bevatten, dus stel een sterk wachtwoord in"
|
||||
},
|
||||
"network": {
|
||||
"title": "Netwerk",
|
||||
"automaticDownloadsSection": "Automatisch ophalen",
|
||||
"automaticDownloadsMaximumSize": "Maximale downloadomvang",
|
||||
"automaticDownloadsMaximumSizeSubtext": "De maximale bestandsgrootte van automatisch op te halen bestanden",
|
||||
"automaticDownloadAlways": "Ieder netwerk",
|
||||
"wifi": "Wifi",
|
||||
"mobileData": "Mobiel internet",
|
||||
"automaticDownloadsText": "Moxxy zal bestanden automatisch ophalen bij gebruik van…"
|
||||
},
|
||||
"privacy": {
|
||||
"title": "Privacy",
|
||||
"generalSection": "Algemeen",
|
||||
"showContactRequests": "Contactpersoonverzoeken tonen",
|
||||
"profilePictureVisibility": "Profielfoto aan iedereen tonen",
|
||||
"conversationsSection": "Gesprek",
|
||||
"sendChatMarkersSubtext": "Hiermee kan je gesprekspartner zien of je een bericht gelezen of ontvangen hebt",
|
||||
"sendChatMarkers": "Gespreksacties versturen",
|
||||
"sendChatStates": "Gespreksstatussen versturen",
|
||||
"sendChatStatesSubtext": "Hiermee kan je gesprekspartner zien of je aan het typen of het gesprek aan het bekijken bent",
|
||||
"redirectsSection": "Doorverwijzingen",
|
||||
"redirectText": "Hiermee worden $serviceName-links doorverwezen naar een proxy, bijvoorbeeld $exampleProxy",
|
||||
"currentlySelected": "Huidige proxy: $proxy",
|
||||
"redirectsTitle": "$serviceName-doorverwijzing",
|
||||
"cannotEnableRedirect": "$serviceName-doorverwijzingen mislukt",
|
||||
"cannotEnableRedirectSubtext": "Stel eerst een proxy als doorverwijzing in. Druk hiervoor op het veld naast de schakelaar.",
|
||||
"urlEmpty": "Voer een url in",
|
||||
"urlInvalid": "De url is ongeldig",
|
||||
"redirectDialogTitle": "$serviceName-doorverwijzing",
|
||||
"stickersPrivacy": "Stickerlijst aan iedereen tonen",
|
||||
"stickersPrivacySubtext": "Schakel in om je lijst met stickerpakketten aan iedereen te tonen",
|
||||
"showContactRequestsSubtext": "Hiermee worden verzoeken getoond van personen die je hebben toegevoegd, maar nog geen bericht hebben gestuurd",
|
||||
"profilePictureVisibilitSubtext": "Schakel in om iedereen je profielfoto te tonen; schakel uit om alleen gebruikers op je lijst je profielfoto te tonen"
|
||||
},
|
||||
"stickers": {
|
||||
"title": "Stickers",
|
||||
"stickerSection": "Sticker",
|
||||
"displayStickers": "Stickers in gesprekken tonen",
|
||||
"autoDownload": "Stickers automatisch ophalen",
|
||||
"autoDownloadBody": "Schakel in om stickers automatisch op te halen na het toevoegen van de afzender",
|
||||
"stickerPacksSection": "Stickerpakketten",
|
||||
"importStickerPack": "Stickerpakket importeren",
|
||||
"importSuccess": "Het stickerpakket is geïmporteerd",
|
||||
"importFailure": "Het stickerpakket kan niet worden geïmporteerd",
|
||||
"stickerPackSize": "(${size})"
|
||||
},
|
||||
"storage": {
|
||||
"title": "Opslag",
|
||||
"storageUsed": "In gebruik: ${size}",
|
||||
"sizePlaceholder": "Bezig met berekenen…",
|
||||
"storageManagement": "Opslagbeheer",
|
||||
"removeOldMedia": {
|
||||
"title": "Oude media verwijderen",
|
||||
"description": "Verwijdert oude mediabestanden van het apparaat"
|
||||
},
|
||||
"removeOldMediaDialog": {
|
||||
"title": "Mediabestanden verwijderen",
|
||||
"options": {
|
||||
"all": "Alle mediabestanden",
|
||||
"oneWeek": "Ouder dan 1 week",
|
||||
"oneMonth": "Ouder dan 1 maand"
|
||||
},
|
||||
"delete": "Verwijderen",
|
||||
"confirmation": {
|
||||
"body": "Weet je zeker dat je oude mediabestanden wilt verwijderen?"
|
||||
}
|
||||
},
|
||||
"viewMediaFiles": "Mediabestanden bekijken",
|
||||
"mediaFiles": "Mediabestanden",
|
||||
"types": {
|
||||
"media": "Media",
|
||||
"stickers": "Stickers"
|
||||
},
|
||||
"manageStickers": "Stickerpakketten beheren"
|
||||
},
|
||||
"stickerPacks": {
|
||||
"title": "Stickerpakketten"
|
||||
}
|
||||
},
|
||||
"startchat": {
|
||||
"title": "Nieuw gesprek",
|
||||
"xmppAddress": "Xmpp-adres",
|
||||
"subtitle": "Je kunt een nieuw gesprek starten door een xmpp-adres in te voeren of een QR-code te scannen.",
|
||||
"buttonAddToContact": "Gesprek starten"
|
||||
},
|
||||
"sharedMedia": {
|
||||
"empty": {
|
||||
"chat": "Er is geen gedeelde media in dit gesprek",
|
||||
"general": "Er zijn geen mediabestanden beschikbaar"
|
||||
}
|
||||
}
|
||||
},
|
||||
"permissions": {
|
||||
"allow": "Toestaan",
|
||||
"skip": "Overslaan",
|
||||
"requests": {
|
||||
"notification": {
|
||||
"reason": "Moxxy heeft het recht om meldingen te tonen nodig om meldingen van inkomende berichten te kunnen tonen."
|
||||
},
|
||||
"batterySaving": {
|
||||
"reason": "Sluit Moxxy uit van Androids accubesparing om berichten op de achtergrond te ontvangen."
|
||||
}
|
||||
}
|
||||
},
|
||||
"emojiPicker": {
|
||||
"noRecents": "Geen onlangs gebruikte emojis"
|
||||
}
|
||||
}
|
||||
144
assets/i18n/strings_pl.i18n.json
Normal file
@@ -0,0 +1,144 @@
|
||||
{
|
||||
"language": "Polski",
|
||||
"global": {
|
||||
"title": "Moxxy",
|
||||
"dialogAccept": "OK",
|
||||
"yes": "Tak",
|
||||
"no": "Nie",
|
||||
"dialogCancel": "Anuluj"
|
||||
},
|
||||
"notifications": {
|
||||
"permanent": {
|
||||
"connecting": "Łączenie…",
|
||||
"disconnect": "Rozłączono",
|
||||
"error": "Błąd"
|
||||
},
|
||||
"channels": {
|
||||
"messagesChannelName": "Wiadomości",
|
||||
"warningChannelName": "Ostrzeżenia"
|
||||
},
|
||||
"titles": {
|
||||
"error": "Błąd"
|
||||
}
|
||||
},
|
||||
"permissions": {
|
||||
"allow": "Zezwól",
|
||||
"skip": "Pomiń"
|
||||
},
|
||||
"dateTime": {
|
||||
"mondayAbbrev": "Pon",
|
||||
"tuesdayAbbrev": "Wt",
|
||||
"wednessdayAbbrev": "Śr",
|
||||
"thursdayAbbrev": "Czw",
|
||||
"fridayAbbrev": "Pt",
|
||||
"saturdayAbbrev": "Sob",
|
||||
"sundayAbbrev": "Nd",
|
||||
"november": "Listopad",
|
||||
"june": "Czerwiec",
|
||||
"september": "Wrzesień",
|
||||
"today": "Dzisiaj",
|
||||
"february": "Luty",
|
||||
"december": "Grudzień",
|
||||
"yesterday": "Wczoraj",
|
||||
"march": "Marzec",
|
||||
"august": "Sierpień",
|
||||
"october": "Październik",
|
||||
"may": "Maj",
|
||||
"january": "Styczeń",
|
||||
"april": "Kwiecień",
|
||||
"july": "Lipiec"
|
||||
},
|
||||
"pages": {
|
||||
"conversation": {
|
||||
"unencrypted": "Nieszyfrowane",
|
||||
"blockShort": "Zablokuj",
|
||||
"online": "Online",
|
||||
"warning": "Ostrzeżenie",
|
||||
"encrypted": "Szyfrowane",
|
||||
"forward": "Przekaż dalej",
|
||||
"quote": "Cytat",
|
||||
"edit": "Edytuj"
|
||||
},
|
||||
"conversations": {
|
||||
"overlaySettings": "Ustawienia"
|
||||
},
|
||||
"settings": {
|
||||
"privacy": {
|
||||
"conversationsSection": "Konwersacja",
|
||||
"title": "Prywatność",
|
||||
"generalSection": "Ogólne"
|
||||
},
|
||||
"settings": {
|
||||
"miscellaneousSection": "Róźne",
|
||||
"conversationsSection": "Konwersacje",
|
||||
"accountSection": "Konto",
|
||||
"general": "Ogólne",
|
||||
"title": "Ustawienia",
|
||||
"debuggingSection": "Debugowanie"
|
||||
},
|
||||
"stickers": {
|
||||
"stickerSection": "Naklejka",
|
||||
"title": "Naklejki",
|
||||
"stickerPackSize": "(${size})"
|
||||
},
|
||||
"network": {
|
||||
"title": "Sieć",
|
||||
"wifi": "Wi-Fi",
|
||||
"automaticDownloadAlways": "Zawsze"
|
||||
},
|
||||
"conversation": {
|
||||
"appearance": "Wygląd",
|
||||
"title": "Czat",
|
||||
"behaviourSection": "Zachowanie"
|
||||
},
|
||||
"appearance": {
|
||||
"languageSection": "Język",
|
||||
"title": "Wygląd"
|
||||
},
|
||||
"about": {
|
||||
"title": "O programie"
|
||||
},
|
||||
"debugging": {
|
||||
"generalSection": "Ogólne"
|
||||
}
|
||||
},
|
||||
"login": {
|
||||
"xmppAddress": "Adres XMPP",
|
||||
"title": "Logowanie",
|
||||
"password": "Hasło"
|
||||
},
|
||||
"profile": {
|
||||
"general": {
|
||||
"omemo": "Bezpieczeństwo",
|
||||
"profile": "Profil"
|
||||
},
|
||||
"devices": {
|
||||
"title": "Bezpieczeństwo"
|
||||
},
|
||||
"conversation": {
|
||||
"notificationsMuted": "Wyciszono",
|
||||
"notifications": "Powiadomienia"
|
||||
}
|
||||
},
|
||||
"intro": {
|
||||
"registerButton": "Zarejestruj się",
|
||||
"loginButton": "Zaloguj się"
|
||||
},
|
||||
"blocklist": {
|
||||
"title": "Lista zablokowanych"
|
||||
}
|
||||
},
|
||||
"errors": {
|
||||
"conversation": {
|
||||
"messageErrorDialogTitle": "Błąd"
|
||||
}
|
||||
},
|
||||
"messages": {
|
||||
"sticker": "Naklejka",
|
||||
"audio": "Dźwięk",
|
||||
"file": "Plik",
|
||||
"image": "Obraz",
|
||||
"video": "Film",
|
||||
"you": "Ty"
|
||||
}
|
||||
}
|
||||
438
assets/i18n/strings_ru.i18n.json
Normal file
@@ -0,0 +1,438 @@
|
||||
{
|
||||
"global": {
|
||||
"title": "Moxxy",
|
||||
"dialogAccept": "Принять",
|
||||
"dialogCancel": "Отмена",
|
||||
"yes": "Да",
|
||||
"no": "Нет",
|
||||
"moxxySubtitle": "Эксперементальный XMPP-клиент, простой, современный и красивый."
|
||||
},
|
||||
"notifications": {
|
||||
"permanent": {
|
||||
"idle": "Idle",
|
||||
"ready": "Готов к приему сообщений",
|
||||
"connecting": "Соединение…",
|
||||
"disconnect": "Отключен",
|
||||
"error": "Ошибка"
|
||||
},
|
||||
"message": {
|
||||
"reply": "Ответ",
|
||||
"markAsRead": "Прочитано"
|
||||
},
|
||||
"channels": {
|
||||
"messagesChannelName": "Сообщения",
|
||||
"warningChannelName": "Предупреждения",
|
||||
"warningChannelDescription": "Предупреждения, связанные с Moxxy",
|
||||
"messagesChannelDescription": "Канал уведомлений о полученных сообщениях",
|
||||
"serviceChannelName": "Фоновая служба"
|
||||
},
|
||||
"titles": {
|
||||
"error": "Ошибка"
|
||||
},
|
||||
"errors": {
|
||||
"messageError": {
|
||||
"body": "Не удалось доставить сообщение для ${conversationTitle}",
|
||||
"title": "Сообщение не доставлено"
|
||||
}
|
||||
},
|
||||
"warnings": {
|
||||
"blockingError": {
|
||||
"body": "Не удалось заблокировать пользователя ${jid}, потому что ваш сервер не поддерживает блокировки.",
|
||||
"title": "Ошибка блокировки пользователя"
|
||||
}
|
||||
}
|
||||
},
|
||||
"dateTime": {
|
||||
"justNow": "Сейчас",
|
||||
"nMinutesAgo": "${min}минут назад",
|
||||
"mondayAbbrev": "Пн",
|
||||
"tuesdayAbbrev": "Вт",
|
||||
"wednessdayAbbrev": "Ср",
|
||||
"thursdayAbbrev": "Чт",
|
||||
"fridayAbbrev": "Пт",
|
||||
"sundayAbbrev": "Вс",
|
||||
"january": "Январь",
|
||||
"february": "Февраль",
|
||||
"may": "Май",
|
||||
"june": "Июнь",
|
||||
"october": "Октябрь",
|
||||
"november": "Ноябрь",
|
||||
"december": "Декабрь",
|
||||
"today": "Сегодня",
|
||||
"saturdayAbbrev": "Сб",
|
||||
"march": "Март",
|
||||
"april": "Апрель",
|
||||
"july": "Июль",
|
||||
"august": "Август",
|
||||
"september": "Сентябрь",
|
||||
"yesterday": "Вчера"
|
||||
},
|
||||
"messages": {
|
||||
"image": "Изображение",
|
||||
"video": "Видео",
|
||||
"file": "Файл",
|
||||
"sticker": "Стикер",
|
||||
"you": "Ты",
|
||||
"audio": "Аудио",
|
||||
"retracted": "Сообщение удалено",
|
||||
"retractedFallback": "Предыдущее сообщение было удалено, но это не поддерживается Вашим клиентом"
|
||||
},
|
||||
"errors": {
|
||||
"filePicker": {
|
||||
"permissionDenied": "Доступ к хранилищу не был выдан"
|
||||
},
|
||||
"omemo": {
|
||||
"notEncryptedForDevice": "Сообщение зашифровано, но не для этого устройства",
|
||||
"invalidHmac": "Не удалось расшифровать сообщение",
|
||||
"noDecryptionKey": "Нет ключа для расшифровки",
|
||||
"verificationWrongFingerprint": "Неправильный отпечаток OMEMO:2",
|
||||
"couldNotPublish": "Не удалось опубликовать ключи шифрования на сервере. Это означает, что сквозное шифрование может не работать.",
|
||||
"messageInvalidAfixElement": "Ошибка в зашифрованном сообщении",
|
||||
"verificationInvalidOmemoUrl": "неверный отпечаток OMEMO:2",
|
||||
"verificationWrongJid": "Неправильный XMPP-адрес",
|
||||
"verificationWrongDevice": "Неправильное OMEMO:2 устройство",
|
||||
"verificationNotInList": "Неправильное устройство OMEMO:2"
|
||||
},
|
||||
"connection": {
|
||||
"connectionTimeout": "Нет соединения с сервером",
|
||||
"saslInvalidCredentials": "Данные учетной записи недействительны",
|
||||
"unrecoverable": "Соединение прервано из-за ошибки",
|
||||
"saslAccountDisabled": "Аккаунт отключен"
|
||||
},
|
||||
"login": {
|
||||
"saslFailed": "Неверный логин",
|
||||
"startTlsFailed": "Не удалось установить безопасное соединение",
|
||||
"noConnection": "Не удалось установить соединение",
|
||||
"unspecified": "Неопределенная ошибка"
|
||||
},
|
||||
"message": {
|
||||
"fileDownloadFailed": "Не удалось загрузить файл",
|
||||
"remoteServerTimeout": "Сообщение не доставлено на сервер получателя",
|
||||
"unspecified": "Неизвесная ошибка",
|
||||
"fileUploadFailed": "Не удалось отправить файл",
|
||||
"contactDoesntSupportOmemo": "Получатель не поддерживает OMEMO:2 шифрование",
|
||||
"serviceUnavailable": "Сообщение не доставлено получателю",
|
||||
"remoteServerNotFound": "Cообщение не доставлено, не найден сервер получателя",
|
||||
"failedToEncrypt": "Сообщение не может быть зашифровано",
|
||||
"failedToEncryptFile": "Файл не может быть зашифрован",
|
||||
"failedToDecryptFile": "Файл не может быть расшифрован",
|
||||
"fileNotEncrypted": "Этот чат зашифрован, но файл нет"
|
||||
},
|
||||
"conversation": {
|
||||
"audioRecordingError": "Не удалось завершить аудиозапись",
|
||||
"openFileNoAppError": "Приложения для открытия этого файла не найдены",
|
||||
"openFileGenericError": "Не удалось открыть файл",
|
||||
"messageErrorDialogTitle": "Ошибка"
|
||||
},
|
||||
"newChat": {
|
||||
"groupchatUnsupported": "Вступление в групповой чат пока не поддерживается.",
|
||||
"remoteServerError": "Не удалось связаться с удалённым сервером.",
|
||||
"unknown": "Неизвестная ошибка."
|
||||
},
|
||||
"general": {
|
||||
"noInternet": "Нет подключения к интернету."
|
||||
}
|
||||
},
|
||||
"pages": {
|
||||
"intro": {
|
||||
"registerButton": "Регистрация",
|
||||
"loginButton": "Login",
|
||||
"noAccount": "Нет XMPP аккаунта? Зарегистрируйтесь на одном из серверов, это не сложно."
|
||||
},
|
||||
"login": {
|
||||
"title": "Login",
|
||||
"password": "Пароль",
|
||||
"xmppAddress": "XMPP-адрес",
|
||||
"advancedOptions": "Расширенные опции",
|
||||
"createAccount": "Зарегистрироваться на сервере"
|
||||
},
|
||||
"conversations": {
|
||||
"speeddialNewChat": "Написать",
|
||||
"speeddialJoinGroupchat": "Групповой чат",
|
||||
"speeddialAddNoteToSelf": "Заметка себе",
|
||||
"overlaySettings": "Настройки",
|
||||
"startChat": "Начать диалог",
|
||||
"markAsRead": "Пометить как прочитанное",
|
||||
"noOpenChats": "У вас пока нет диалогов",
|
||||
"closeChat": "Завершить диалог",
|
||||
"closeChatBody": "Вы уверены, что хотите завершить диалог с ${conversationTitle}?"
|
||||
},
|
||||
"conversation": {
|
||||
"unencrypted": "Незашифрованно",
|
||||
"encrypted": "Зашифрованно",
|
||||
"closeChat": "Закрыть чат",
|
||||
"closeChatConfirmTitle": "Закрыть чат",
|
||||
"closeChatConfirmSubtext": "Вы уверены что хотите закрыть этот чат?",
|
||||
"blockShort": "Заблокировать",
|
||||
"blockUser": "Заблокировать пользователя",
|
||||
"online": "В сети",
|
||||
"retract": "Отозвать сообщение",
|
||||
"copy": "Копировать содержимое",
|
||||
"addReaction": "Реакция",
|
||||
"showError": "Показать ошибки",
|
||||
"showWarning": "Показать предупреждения",
|
||||
"sendFiles": "Отправить файлы",
|
||||
"takePhotos": "Сделать фотографии",
|
||||
"retractBody": "Вы уверены, что хотите отозвать сообщение? Помните, что это всего лишь просьба, которую клиент не обязан выполнять.",
|
||||
"forward": "Переслать",
|
||||
"edit": "Изменить",
|
||||
"quote": "Цитировать",
|
||||
"addToContacts": "Добавить в контакты",
|
||||
"addToContactsTitle": "Добавить ${jid} в контакты",
|
||||
"addToContactsBody": "Вы уверены, что хотите добавить ${jid} в контакты?",
|
||||
"stickerPickerNoStickersLine1": "Нет установленных стикерпаков.",
|
||||
"stickerPickerNoStickersLine2": "Их можно установить в настройках стикеров.",
|
||||
"stickerSettings": "Настройки стикеров",
|
||||
"newDeviceMessage": {
|
||||
"one": "Добавлено новое устройство",
|
||||
"other": "Добавлено несколько новых устройств"
|
||||
},
|
||||
"replacedDeviceMessage": {
|
||||
"one": "Устройство было изменено",
|
||||
"other": "Добавлено несколько устройств"
|
||||
},
|
||||
"messageHint": "Сообщение…",
|
||||
"sendImages": "Отправить изображение",
|
||||
"messageCopied": "Сообщение скопировано в буфер",
|
||||
"warning": "Предупреждение"
|
||||
},
|
||||
"startchat": {
|
||||
"xmppAddress": "XMPP-адрес",
|
||||
"buttonAddToContact": "Добавить в контакты",
|
||||
"title": "Добавить контакт",
|
||||
"subtitle": "Вы можете добавить контакт введя его XMPP адрес или отсканировав QR код"
|
||||
},
|
||||
"newconversation": {
|
||||
"title": "Новый чат",
|
||||
"startChat": "Добавить контакт",
|
||||
"createGroupchat": "Создать новый групповой чат",
|
||||
"joinGroupChat": "Присоединиться к групповому чату"
|
||||
},
|
||||
"shareselection": {
|
||||
"shareWith": "Поделиться с...",
|
||||
"confirmTitle": "Отправить файл",
|
||||
"confirmBody": "Один или несколько чатов не зашифрованы, из-за чего файл будет доступен администрации сервера. Вы уверены, что хотите продолжить?"
|
||||
},
|
||||
"profile": {
|
||||
"general": {
|
||||
"omemo": "Безопасность",
|
||||
"profile": "Профиль",
|
||||
"media": "Медиа"
|
||||
},
|
||||
"conversation": {
|
||||
"sharedMedia": "Медиа",
|
||||
"notifications": "Уведомления",
|
||||
"notificationsMuted": "Без звука",
|
||||
"notificationsEnabled": "Включено"
|
||||
},
|
||||
"owndevices": {
|
||||
"thisDevice": "Это устройство",
|
||||
"recreateOwnDevice": "Восстановить устройство",
|
||||
"title": "Мои устройства",
|
||||
"otherDevices": "Другие устройства",
|
||||
"deleteDeviceConfirmTitle": "Удалить устройство",
|
||||
"deleteDeviceConfirmBody": "Контакты не смогут быть зашифрованы для этого устройства. Продолжить?",
|
||||
"recreateOwnSessions": "Пересоздать сеанс",
|
||||
"recreateOwnSessionsConfirmTitle": "Пересоздать свои сеансы?",
|
||||
"recreateOwnSessionsConfirmBody": "Создать новые ключи шифрования для этого устройства. Используйте только в крайнем случае.",
|
||||
"recreateOwnDeviceConfirmTitle": "Восстановить это устройство?",
|
||||
"recreateOwnDeviceConfirmBody": "Это создаст новый криптографический отпечаток устройства, что займёт некоторое время. Если ваше устройство было подтверждено контактами, им придётся сделать это снова. Продолжить?"
|
||||
},
|
||||
"devices": {
|
||||
"title": "Безопасность",
|
||||
"recreateSessionsConfirmTitle": "Пересоздать сеанс?",
|
||||
"noSessions": "Нет криптографических сессий, используемых для сквозного шифрования.",
|
||||
"recreateSessions": "Пересоздать сеанс",
|
||||
"recreateSessionsConfirmBody": "Создать новые ключи шифрования для этого устройства. Используйте только в крайнем случае."
|
||||
}
|
||||
},
|
||||
"blocklist": {
|
||||
"unblockAll": "Разблокировать всех",
|
||||
"unblockJidConfirmTitle": "Разблокировать ${jid}?",
|
||||
"title": "Блоклист",
|
||||
"noUsersBlocked": "Нет заблокированных пользователей",
|
||||
"unblockAllConfirmTitle": "Вы уверены?",
|
||||
"unblockAllConfirmBody": "Вы действительно хотите разблокировать всех пользователей?",
|
||||
"unblockJidConfirmBody": "Вы уверены, что хотите разблокировать ${jid}? Вы снова будете получать сообщения от этого пользователя."
|
||||
},
|
||||
"cropbackground": {
|
||||
"blur": "Размыть фон",
|
||||
"setAsBackground": "Установить фоновое изображение"
|
||||
},
|
||||
"crop": {
|
||||
"setProfilePicture": "Загрузить аватар"
|
||||
},
|
||||
"stickerPack": {
|
||||
"removeConfirmTitle": "Удалить стикерпак",
|
||||
"removeConfirmBody": "Вы действительно хотите удалить этот стикерпак?",
|
||||
"installConfirmTitle": "добавить стикерпак",
|
||||
"installConfirmBody": "Вы действительно хотите установить этот стикерпак?",
|
||||
"restricted": "Этот стикерпак ограничен, стикеры будут отображаться, но отправить их нельзя.",
|
||||
"fetchingFailure": "Стикерпак не найден"
|
||||
},
|
||||
"settings": {
|
||||
"about": {
|
||||
"version": "Версия ${version}",
|
||||
"debugMenuShown": "Теперь ты разработчик ^_^",
|
||||
"debugMenuAlreadyShown": "Ты уже разработчик :^",
|
||||
"title": "О нас",
|
||||
"viewSourceCode": "Исходный код",
|
||||
"nMoreToGo": "Осталось еще ${n}...",
|
||||
"licensed": "Лицензировано под GPL3"
|
||||
},
|
||||
"conversation": {
|
||||
"removeBackgroundImageConfirmBody": "Вы действительно хотите удалить фон?",
|
||||
"title": "Чат",
|
||||
"appearance": "Внешний вид",
|
||||
"selectBackgroundImage": "Выбрать фон",
|
||||
"removeBackgroundImage": "Удалить фон",
|
||||
"removeBackgroundImageConfirmTitle": "Удалить фон",
|
||||
"newChatsSection": "Новые чаты",
|
||||
"newChatsMuteByDefault": "Отключать звук в новых чатах по умолчанию",
|
||||
"newChatsE2EE": "Включить оконечное шифрование по умолчанию",
|
||||
"behaviourSection": "Поведение",
|
||||
"contactsIntegration": "Синхронизация контактов",
|
||||
"selectBackgroundImageDescription": "Это изображение будет фоном для ваших чатов",
|
||||
"contactsIntegrationBody": "При включении данные из Контактов будут использованы для названий чатов и фото профилей. На сервер ничего отправлено не будет."
|
||||
},
|
||||
"debugging": {
|
||||
"title": "Опции отладки",
|
||||
"generalSection": "Основные",
|
||||
"generalEnableDebugging": "Включить отладку",
|
||||
"generalEncryptionPassword": "Пароль шифрования",
|
||||
"generalEncryptionPasswordSubtext": "Журналы могут содержать конфиденциальную информацию, поэтому поставте надежный пароль",
|
||||
"generalLoggingIpSubtext": "IP, на который должны отправляться журналы",
|
||||
"generalLoggingIp": "IP для логов",
|
||||
"generalLoggingPort": "порт для логов",
|
||||
"generalLoggingPortSubtext": "IP, на который должны отправляться журналы"
|
||||
},
|
||||
"network": {
|
||||
"automaticDownloadsSection": "Автоматическая загрузка",
|
||||
"title": "Сеть",
|
||||
"automaticDownloadsMaximumSizeSubtext": "Максимальный размер, при котором файлы будут автоматически загружаться",
|
||||
"automaticDownloadsMaximumSize": "Максимальный размер для загрузки",
|
||||
"automaticDownloadAlways": "Всегда",
|
||||
"wifi": "Wifi",
|
||||
"mobileData": "Мобильный интернет",
|
||||
"automaticDownloadsText": "Moxxy будет автоматически загружать файлы до..."
|
||||
},
|
||||
"privacy": {
|
||||
"showContactRequests": "Показывать запрос в контакты",
|
||||
"showContactRequestsSubtext": "Это покажет людей, добавивших вас в свой список контактов",
|
||||
"generalSection": "Основные",
|
||||
"profilePictureVisibility": "Сделать фото профиля публичным",
|
||||
"sendChatMarkers": "Отправлять маркеры",
|
||||
"redirectText": "Это позволит перенаправлять ссылки с ${serviceName} на прокси, такие как ${exampleProxy}",
|
||||
"redirectsSection": "Перенаправление",
|
||||
"currentlySelected": "Выбрано сейчас: $proxy",
|
||||
"redirectsTitle": "$serviceName Перенаправление",
|
||||
"urlEmpty": "URL не может быть пустым",
|
||||
"title": "Приватность",
|
||||
"conversationsSection": "Диалог",
|
||||
"sendChatMarkersSubtext": "Это сообщит вашему собеседнику о получении или прочтении сообщения",
|
||||
"sendChatStates": "Отправлять состояние чата",
|
||||
"sendChatStatesSubtext": "Собеседник будет видеть, когда вы набираете сообщение или просматриваете чат",
|
||||
"cannotEnableRedirect": "Невозможно включить перенаправления $serviceName",
|
||||
"cannotEnableRedirectSubtext": "Сначала нужно добавить прокси сервер. Для этого нажмите слева от переключателя",
|
||||
"urlInvalid": "Недопустимый URL",
|
||||
"redirectDialogTitle": "$serviceName Перенаправление",
|
||||
"stickersPrivacy": "Публиковать список стикеров",
|
||||
"stickersPrivacySubtext": "Если включено, ваши установленные наборы стикеров будут видны всем.",
|
||||
"profilePictureVisibilitSubtext": "Когда включено, все видят Ваш аватар; когда выключено - только контакты"
|
||||
},
|
||||
"stickers": {
|
||||
"importSuccess": "Стикерпаки успешно импортированы",
|
||||
"title": "Стикеры",
|
||||
"stickerSection": "Стикеры",
|
||||
"displayStickers": "Показывать стикеры",
|
||||
"autoDownload": "Загружать стикеры автоматически",
|
||||
"autoDownloadBody": "Стикеры будут загружаться автоматически, если их отправитель у вас в контактах.",
|
||||
"stickerPacksSection": "Стикерпаки",
|
||||
"importStickerPack": "Импортировать стикерпаки",
|
||||
"importFailure": "Ошибка при импорте стикерпаков",
|
||||
"stickerPackSize": "(${size})"
|
||||
},
|
||||
"settings": {
|
||||
"title": "Настройки",
|
||||
"conversationsSection": "Чаты",
|
||||
"accountSection": "Учётная запись",
|
||||
"signOut": "Выйти",
|
||||
"signOutConfirmTitle": "Выйти",
|
||||
"signOutConfirmBody": "Вы хотите выйти, продолжить?",
|
||||
"miscellaneousSection": "Другое",
|
||||
"debuggingSection": "Отладка",
|
||||
"general": "Основные"
|
||||
},
|
||||
"appearance": {
|
||||
"title": "Внешний вид",
|
||||
"languageSection": "Язык",
|
||||
"language": "Язык в приложении",
|
||||
"systemLanguage": "Как в системе",
|
||||
"languageSubtext": "Выбранный язык: ${selectedLanguage}"
|
||||
},
|
||||
"licenses": {
|
||||
"title": "Открытые лицензии",
|
||||
"licensedUnder": "Лицензировано под ${license}"
|
||||
},
|
||||
"storage": {
|
||||
"removeOldMedia": {
|
||||
"description": "Удалит старые медиафайлы с устройства",
|
||||
"title": "Удалить старые медиафайлы"
|
||||
},
|
||||
"title": "Хранилище",
|
||||
"sizePlaceholder": "Вычисление...",
|
||||
"storageManagement": "Управление хранилищем",
|
||||
"removeOldMediaDialog": {
|
||||
"options": {
|
||||
"all": "Все медиафайлы",
|
||||
"oneWeek": "Старее 1 недели",
|
||||
"oneMonth": "Старее 1 месяца"
|
||||
},
|
||||
"delete": "Удалить",
|
||||
"title": "Удалить медиафайлы",
|
||||
"confirmation": {
|
||||
"body": "Вы точно хотите удалить старые медиафайлы?"
|
||||
}
|
||||
},
|
||||
"viewMediaFiles": "Просмотреть медиафайлы",
|
||||
"mediaFiles": "Медиафайлы",
|
||||
"types": {
|
||||
"media": "Медиа",
|
||||
"stickers": "Стикеры"
|
||||
},
|
||||
"storageUsed": "Использование хранилища: ${size}",
|
||||
"manageStickers": "Управление наборами стикеров"
|
||||
},
|
||||
"stickerPacks": {
|
||||
"title": "Наборы стикеров"
|
||||
}
|
||||
},
|
||||
"sharedMedia": {
|
||||
"empty": {
|
||||
"chat": "Нет общих медиафайлов для этого чата",
|
||||
"general": "Нет доступных медиаустройств"
|
||||
}
|
||||
}
|
||||
},
|
||||
"language": "Русский",
|
||||
"warnings": {
|
||||
"message": {
|
||||
"integrityCheckFailed": "Не удалось проверить целостность файла"
|
||||
},
|
||||
"conversation": {
|
||||
"holdForLonger": "Удерживайте для записи"
|
||||
}
|
||||
},
|
||||
"permissions": {
|
||||
"allow": "Разрешить",
|
||||
"skip": "Пропустить",
|
||||
"requests": {
|
||||
"batterySaving": {
|
||||
"reason": "Чтобы получать сообщения в фоне, Moxxy должен быть исключён из экономии заряда батареи Android."
|
||||
},
|
||||
"notification": {
|
||||
"reason": "Чтобы оповещать о входящих сообщениях, Moxxy требуется право на показ уведомлений."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
assets/images/empty.png
Normal file
|
After Width: | Height: | Size: 67 KiB |
BIN
assets/repo/kofi.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
9
build.yaml
Normal file
@@ -0,0 +1,9 @@
|
||||
targets:
|
||||
$default:
|
||||
builders:
|
||||
slang_build_runner:
|
||||
options:
|
||||
input_directory: assets/i18n
|
||||
output_directory: lib/i18n
|
||||
fallback_strategy: base_locale
|
||||
base_locale: en
|
||||
43
docs/stickerpacks.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# Sticker Packs
|
||||
|
||||
Moxxy supports sending and receiving sticker packs using XEP-0449 version 0.1.1. Sticker
|
||||
packs can also be imported using a Moxxy specific format.
|
||||
|
||||
## File Format
|
||||
|
||||
A Moxxy sticker pack is a flat tar archive that contains the following files:
|
||||
|
||||
- `urn.xmpp.stickers.0.xml`
|
||||
- The sticker files
|
||||
|
||||
### `urn.xmpp.stickers.0.xml`
|
||||
|
||||
This file is the sticker pack's metadata file. It describes the sticker pack the same
|
||||
way as the examples in XEP-0449 do. There are, however, some differences:
|
||||
|
||||
- Each `<file />` element must contain a `<name />` element that matches with a file in the tar archive
|
||||
- Each sticker MUST contain at least one HTTP(s) source
|
||||
- The `<hash />` of the `<pack />` element is ignored as Moxxy computes it itself, so it can be omitted
|
||||
|
||||
An example for the metadata file is the following:
|
||||
|
||||
```xml
|
||||
<pack xmlns='urn:xmpp:stickers:0'>
|
||||
<name>Example</name>
|
||||
<summary>Example sticker pack.</summary>
|
||||
<item>
|
||||
<file xmlns='urn:xmpp:file:metadata:0'>
|
||||
<media-type>image/png</media-type>
|
||||
<desc>:some-sticker:</desc>
|
||||
<name>suprise.png</name>
|
||||
<size>531910</size>
|
||||
<dimensions>1030x1030</dimensions>
|
||||
<hash xmlns='urn:xmpp:hashes:2' algo='sha-256'>1Ha4okUGNRAA04KibwWUmklqqBqdhg7+20dfsr/wLik=</hash>
|
||||
</file>
|
||||
<sources xmlns='urn:xmpp:sfs:0'>
|
||||
<url-data xmlns='http://jabber.org/protocol/url-data' target='...' />
|
||||
</sources>
|
||||
</item>
|
||||
<!-- ... -->
|
||||
</pack>
|
||||
```
|
||||
1
fastlane/metadata/android/de-DE/short_description.txt
Normal file
@@ -0,0 +1 @@
|
||||
Moxxy ist ein experimenteller XMPP-Client, der modern und einfach sein soll.
|
||||
1
fastlane/metadata/android/de-DE/title.txt
Normal file
@@ -0,0 +1 @@
|
||||
Moxxy
|
||||
12
fastlane/metadata/android/en-US/changelogs/11.txt
Normal file
@@ -0,0 +1,12 @@
|
||||
Many changes in this release are under the hood, but there are many changes nonetheless:
|
||||
|
||||
- Messages that are sent while offline are now queued up until we're online again
|
||||
- Moxxy now makes use of SFS's caching possibilities. Receiving files sent via SFS are thus only downloaded if the file is not already locally available
|
||||
- Messages and shared media files are now shown in paged lists
|
||||
- Reworked various pages, like the Conversation page and the profile page
|
||||
- Rework the reactions UI
|
||||
- Add a "note to self" feature. This was a teaser task in the context of this year's GSoC
|
||||
- Chat states are no longer sent if a chat is no longer focused
|
||||
- Sending a sticker when a message is selected for quoting, the sticker is sent as a reply to that message
|
||||
- The database design was massively overhauled
|
||||
- The emoji/sticker picker should no longer jump around when switching from the keyboard
|
||||
7
fastlane/metadata/android/en-US/changelogs/12.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
This is a hotfix release.
|
||||
|
||||
Sending a message with no attached file results in a gray
|
||||
box being displayed over the entire message list. This release
|
||||
contains a fix for that.
|
||||
|
||||
(I also dropped my fork of the Flutter SDK)
|
||||
13
fastlane/metadata/android/en-US/changelogs/13.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
- (Hopefully) fix OMEMO between two Moxxy clients.
|
||||
- Allow correcting messages older than the last one. Whether all clients will accept such a correction is unclear.
|
||||
- Add (incomplete) translations for Dutch, French, Galician, Japanese, Polish, and Russian.
|
||||
- Fix having to long-press a message bubble on its corner to active the selection menu.
|
||||
- If enabled, read markers are automatically sent.
|
||||
- Highlight legacy quotes in text messages.
|
||||
- Fix Moxxy's app icon having a badge because of the foreground service.
|
||||
- Make the notifications much prettier and compliant with Android 13.
|
||||
- Prevent Moxxy from crashing on startup on a fresh device.
|
||||
- Video thumbnails are now generated, if possible, after a video has been downloaded.
|
||||
- The Moxxy APKs will now be signed by a different key stored on my YubiKey. You will have to uninstall and reinstall Moxxy. This will remove all your data.
|
||||
- Moxxy now uses Android's direct share shortcuts.
|
||||
- Moxxy now uses Android 13's new photo picker, whenever possible. This should allow Moxxy to require fewer permissions to work.
|
||||
2
fastlane/metadata/android/en-US/changelogs/14.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
- Migrate to Flutter's Material 3 implementation.
|
||||
- Rework the voice message recorder.
|
||||
7
fastlane/metadata/android/en-US/changelogs/9.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
* Expose the debug menu by tapping the Moxxy icon on the about page 10 times
|
||||
* Maybe fix a connection race condition
|
||||
* Allow sharing media with the app when it was closed
|
||||
* Make quotes prettier
|
||||
* Make the bottom part of the conversation page prettier
|
||||
* Fix roster fetching
|
||||
* Fix OMEMO key generation
|
||||
@@ -10,12 +10,14 @@ Currently supported features include:
|
||||
<li>Typing indicators and message markers</li>
|
||||
<li>Chat backgrounds</li>
|
||||
<li>Runs in the background without Push Notifications</li>
|
||||
<li>OMEMO (Currently not compatible with most apps)</li>
|
||||
<li>Stickers</li>
|
||||
</ul>
|
||||
|
||||
For the best experience, I recommend a server that:
|
||||
<ul>
|
||||
<li>Supports direct TLS/StartTLS on the same domain as in the Jid</li>
|
||||
<li>Supports SCRAM-SHA-1 or SCRAM-SHA-256</li>
|
||||
<li>Supports SCRAM-SHA-1, SCRAM-SHA-256 or SCRAM-SHA-512</li>
|
||||
<li>Supports HTTP File Upload</li>
|
||||
<li>Supports Stream Management</li>
|
||||
<li>Supports Client State Indication</li>
|
||||
|
||||
1
fastlane/metadata/android/fr-FR/short_description.txt
Normal file
@@ -0,0 +1 @@
|
||||
Moxxy est un client XMPP expérimental qui vise d’être moderne et facile.
|
||||
1
fastlane/metadata/android/fr-FR/title.txt
Normal file
@@ -0,0 +1 @@
|
||||
Moxxy
|
||||
10
fastlane/metadata/android/nl-NL/changelogs/11.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
- Offline-berichten worden verstuurd als de verbinding hersteld is;
|
||||
- SFS-cache, waardoor downloaden alleen plaatsvindt indien niet lokaal beschikbaar;
|
||||
- Berichten en mediabestanden worden op pagina's getoond;
|
||||
- Diverse pagina's bijgewerkt;
|
||||
- Reacties herontworpen;
|
||||
- Zelfmemofunctie;
|
||||
- Gespreksstatussen worden niet meer verstuurd indien ongefocust;
|
||||
- Stickers als antwoord op citaten;
|
||||
- Nieuw databankontwerp;
|
||||
- Verbeterde emoji-/stickerkeuze i.c.m. toetsenbord.
|
||||
5
fastlane/metadata/android/nl-NL/changelogs/12.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
Dit is een oplossingsversie:
|
||||
|
||||
Het versturen van een bericht zonder bijlage zorgde voor een grijs vlak op de berichtenlijst. Dat is nu opgelost.
|
||||
|
||||
(Ook ben ik gestopt met de ontwikkeling van mijn afsplitsing van de Flutter-sdk.)
|
||||
5
fastlane/metadata/android/nl-NL/changelogs/13.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
-(Hopelijk) Oplossing voor OMEMO tussen twee Moxxy-clients;
|
||||
-Oplossing voor het lang ingedrukt houden van een bericht om het keuzemenu te openen;
|
||||
-Leesmarkeringen worden voortaan automatisch verzonden (indien ingeschakeld);
|
||||
-Nieuw: (onvolledige) Nederlandse, Japanse en Russische vertalingen;
|
||||
-Nieuw: bewerken van berichten ouder dan het recentste bericht. Onduidelijk of alle clients dit op de juiste manier tonen.
|
||||
2
fastlane/metadata/android/nl-NL/changelogs/14.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
- Migratie naar Flutter Material 3 voltooid;
|
||||
- Spraakopnamescherm opnieuw ontworpen.
|
||||
7
fastlane/metadata/android/nl-NL/changelogs/9.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
* Expose the debug menu by tapping the Moxxy icon on the about page 10 times
|
||||
* Maybe fix a connection race condition
|
||||
* Allow sharing media with the app when it was closed
|
||||
* Make quotes prettier
|
||||
* Make the bottom part of the conversation page prettier
|
||||
* Fix roster fetching
|
||||
* Fix OMEMO key generation
|
||||
24
fastlane/metadata/android/nl-NL/full_description.txt
Normal file
@@ -0,0 +1,24 @@
|
||||
Moxxy is een experimentele xmpp-client met als doel modern gebruiksgemak.
|
||||
|
||||
Let op: Moxxy is momenteel in de alfafase. Dit houdt in dat er gegarandeerd bugs en
|
||||
problemen zullen zijn. Gebruik Moxxy dus niet voor belangrijke zaken.
|
||||
|
||||
Huidige functies:
|
||||
<ul>
|
||||
<li>Verstuur bestanden en afbeeldingen;</li>
|
||||
<li>Stel je profielfoto in;</li>
|
||||
<li>Typmeldingen en berichtstatussen;</li>
|
||||
<li>Gespreksachtergronden;</li>
|
||||
<li>Draait op de achtergrond zónder pushmeldingen;</li>
|
||||
<li>OMEMO (momenteel niet compatibel met de meeste apps);</li>
|
||||
<li>Stickers.</li>
|
||||
</ul>
|
||||
|
||||
Voor de beste gebruikservaring is het belangrijk om een server te gebruiken met:
|
||||
<ul>
|
||||
<li>Ondersteuning voor TLS/StartTLS op dezelfde domeinnaam als in de Jid;</li>
|
||||
<li>Ondersteuning voor SCRAM-SHA-1, SCRAM-SHA-256 of SCRAM-SHA-512;</li>
|
||||
<li>Ondersteuning voor HTTP-bestandsupload;</li>
|
||||
<li>Ondersteuning voor streambeheer;</li>
|
||||
<li>Ondersteuning voor Client State Indication.</li>
|
||||
</ul>
|
||||
1
fastlane/metadata/android/nl-NL/short_description.txt
Normal file
@@ -0,0 +1 @@
|
||||
Moxxy is een experimentele xmpp-client met als doel modern gebruiksgemak.
|
||||
1
fastlane/metadata/android/nl-NL/title.txt
Normal file
@@ -0,0 +1 @@
|
||||
Moxxy
|
||||
212
flake.lock
generated
@@ -1,12 +1,112 @@
|
||||
{
|
||||
"nodes": {
|
||||
"flake-utils": {
|
||||
"android-nixpkgs": {
|
||||
"inputs": {
|
||||
"devshell": "devshell",
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1649676176,
|
||||
"narHash": "sha256-OWKJratjt2RW151VUlJPRALb7OU2S5s+f0vLj4o1bHM=",
|
||||
"lastModified": 1694377165,
|
||||
"narHash": "sha256-NeIlZIElbkbKaNK5SZv6ULcFT/UGIICb3q7GPpkf9jk=",
|
||||
"owner": "tadfisher",
|
||||
"repo": "android-nixpkgs",
|
||||
"rev": "b020dc733ee69393841a50cf94d45735d5a5a57a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tadfisher",
|
||||
"repo": "android-nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"bab": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_2",
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1694100130,
|
||||
"narHash": "sha256-3xQgPgFNVtuftoYsUxtUTFu/P5ZzcIaRIrLwNs4xrBg=",
|
||||
"ref": "refs/heads/master",
|
||||
"rev": "8e98e366f7de0d8636a387ee857ead7cc8c1b646",
|
||||
"revCount": 6,
|
||||
"type": "git",
|
||||
"url": "https://codeberg.org/PapaTutuWawa/bits-and-bytes.git"
|
||||
},
|
||||
"original": {
|
||||
"type": "git",
|
||||
"url": "https://codeberg.org/PapaTutuWawa/bits-and-bytes.git"
|
||||
}
|
||||
},
|
||||
"devshell": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"android-nixpkgs",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1693833206,
|
||||
"narHash": "sha256-wHOY0nnD6gWj8u9uI85/YlsganYyWRK1hLFZulZwfmY=",
|
||||
"owner": "numtide",
|
||||
"repo": "devshell",
|
||||
"rev": "65114ea495a8d3cc1352368bf170d67ef005aa5a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "devshell",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1692799911,
|
||||
"narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "a4b154ebbdc88c8498a5c7b01589addc9e9cb678",
|
||||
"rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_2": {
|
||||
"inputs": {
|
||||
"systems": "systems_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1689068808,
|
||||
"narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_3": {
|
||||
"inputs": {
|
||||
"systems": "systems_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1692799911,
|
||||
"narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -17,11 +117,43 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1660551188,
|
||||
"narHash": "sha256-a1LARMMYQ8DPx1BgoI/UN4bXe12hhZkCNqdxNi6uS0g=",
|
||||
"lastModified": 1694183432,
|
||||
"narHash": "sha256-YyPGNapgZNNj51ylQMw9lAgvxtM2ai1HZVUu3GS8Fng=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "441dc5d512153039f19ef198e662e4f3dbb9fd65",
|
||||
"rev": "db9208ab987cdeeedf78ad9b4cf3c55f5ebd269b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1689935543,
|
||||
"narHash": "sha256-6GQ9ib4dA/r1leC5VUpsBo0BmDvNxLjKrX1iyL+h8mc=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "e43e2448161c0a2c4928abec4e16eae1516571bc",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1694343207,
|
||||
"narHash": "sha256-jWi7OwFxU5Owi4k2JmiL1sa/OuBCQtpaAesuj5LXC8w=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "78058d810644f5ed276804ce7ea9e82d92bee293",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -33,8 +165,70 @@
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": "nixpkgs"
|
||||
"android-nixpkgs": "android-nixpkgs",
|
||||
"bab": "bab",
|
||||
"flake-utils": "flake-utils_3",
|
||||
"nixpkgs": "nixpkgs_3"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_2": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_3": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_4": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
109
flake.nix
@@ -3,33 +3,50 @@
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
android-nixpkgs.url = "github:tadfisher/android-nixpkgs";
|
||||
bab.url = "git+https://codeberg.org/PapaTutuWawa/bits-and-bytes.git";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, flake-utils }: flake-utils.lib.eachDefaultSystem (system: let
|
||||
outputs = { self, nixpkgs, flake-utils, android-nixpkgs, bab }: flake-utils.lib.eachDefaultSystem (system: let
|
||||
pkgs = import nixpkgs {
|
||||
inherit system;
|
||||
config = {
|
||||
android_sdk.accept_license = true;
|
||||
allowUnfree = true;
|
||||
|
||||
# Fix to allow building the NDK package
|
||||
# TODO: Remove once https://github.com/tadfisher/android-nixpkgs/issues/62 is resolved
|
||||
permittedInsecurePackages = [
|
||||
"python-2.7.18.6"
|
||||
];
|
||||
};
|
||||
};
|
||||
android = pkgs.androidenv.composeAndroidPackages {
|
||||
# TODO: Find a way to pin these
|
||||
#toolsVersion = "26.1.1";
|
||||
#platformToolsVersion = "31.0.3";
|
||||
#buildToolsVersions = [ "31.0.0" ];
|
||||
#includeEmulator = true;
|
||||
#emulatorVersion = "30.6.3";
|
||||
platformVersions = [ "28" ];
|
||||
includeSources = false;
|
||||
includeSystemImages = true;
|
||||
systemImageTypes = [ "default" ];
|
||||
abiVersions = [ "x86_64" ];
|
||||
includeNDK = false;
|
||||
useGoogleAPIs = false;
|
||||
useGoogleTVAddOns = false;
|
||||
};
|
||||
pinnedJDK = pkgs.jdk;
|
||||
# Everything to make Flutter happy
|
||||
sdk = android-nixpkgs.sdk.${system} (sdkPkgs: with sdkPkgs; [
|
||||
cmdline-tools-latest
|
||||
build-tools-30-0-3
|
||||
build-tools-33-0-2
|
||||
build-tools-34-0-0
|
||||
platform-tools
|
||||
emulator
|
||||
patcher-v4
|
||||
platforms-android-28
|
||||
platforms-android-29
|
||||
platforms-android-30
|
||||
platforms-android-31
|
||||
platforms-android-33
|
||||
|
||||
# For flutter_zxing
|
||||
cmake-3-18-1
|
||||
#ndk-21-4-7075529
|
||||
(ndk-21-4-7075529.overrideAttrs (old: {
|
||||
buildInputs = old.buildInputs ++ [ pkgs.python27 ];
|
||||
}))
|
||||
]);
|
||||
lib = pkgs.lib;
|
||||
babPkgs = bab.packages."${system}";
|
||||
pinnedJDK = pkgs.jdk17;
|
||||
flutterVersion = pkgs.flutter;
|
||||
|
||||
pythonEnv = pkgs.python3.withPackages (ps: with ps; [
|
||||
requests pyyaml # For the build scripts
|
||||
@@ -38,15 +55,59 @@
|
||||
in {
|
||||
devShell = pkgs.mkShell {
|
||||
buildInputs = with pkgs; [
|
||||
flutter pinnedJDK android.platform-tools dart scrcpy # Flutter/Android
|
||||
pythonEnv gnumake # Build scripts
|
||||
gitlint jq # Code hygiene
|
||||
ripgrep # General utilities
|
||||
# Android
|
||||
pinnedJDK sdk ktlint
|
||||
scrcpy
|
||||
|
||||
# Flutter
|
||||
flutterVersion
|
||||
|
||||
# Build scripts
|
||||
pythonEnv gnumake
|
||||
|
||||
# Code hygiene
|
||||
gitlint jq
|
||||
];
|
||||
|
||||
ANDROID_HOME = "${android.androidsdk}/libexec/android-sdk";
|
||||
ANDROID_SDK_ROOT = "${sdk}/share/android-sdk";
|
||||
ANDROID_HOME = "${sdk}/share/android-sdk";
|
||||
JAVA_HOME = pinnedJDK;
|
||||
ANDROID_AVD_HOME = (toString ./.) + "/.android/avd";
|
||||
|
||||
# Fix an issue with Flutter using an older version of aapt2, which does not know
|
||||
# an used parameter.
|
||||
GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${sdk}/share/android-sdk/build-tools/34.0.0/aapt2";
|
||||
};
|
||||
|
||||
apps = let
|
||||
providerArg = pkgs.writeText "provider-arg.cfg" ''
|
||||
name = OpenSC-PKCS11
|
||||
description = SunPKCS11 via OpenSC
|
||||
library = ${pkgs.opensc}/lib/opensc-pkcs11.so
|
||||
slotListIndex = 0
|
||||
'';
|
||||
mkBuildScript = skipBuild: pkgs.writeShellScript "build-moxxy.sh" ''
|
||||
${babPkgs.flutter-build}/bin/flutter-build \
|
||||
--name Moxxy \
|
||||
--not-signed \
|
||||
--zipalign ${sdk}/share/android-sdk/build-tools/34.0.0/zipalign \
|
||||
--apksigner ${sdk}/share/android-sdk/build-tools/34.0.0/apksigner \
|
||||
--pigeon ./pigeon/quirks.dart \
|
||||
--flutter ${flutterVersion}/bin/flutter \
|
||||
--dart ${flutterVersion}/bin/dart \
|
||||
--provider-config ${providerArg} ${lib.optionalString skipBuild "--skip-build"}
|
||||
'';
|
||||
in {
|
||||
# Skip the build and just sign
|
||||
onlySign = {
|
||||
type = "app";
|
||||
program = "${mkBuildScript true}";
|
||||
};
|
||||
|
||||
# Build everything and sign
|
||||
build = {
|
||||
type = "app";
|
||||
program = "${mkBuildScript false}";
|
||||
};
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
34
ios/.gitignore
vendored
@@ -1,34 +0,0 @@
|
||||
**/dgph
|
||||
*.mode1v3
|
||||
*.mode2v3
|
||||
*.moved-aside
|
||||
*.pbxuser
|
||||
*.perspectivev3
|
||||
**/*sync/
|
||||
.sconsign.dblite
|
||||
.tags*
|
||||
**/.vagrant/
|
||||
**/DerivedData/
|
||||
Icon?
|
||||
**/Pods/
|
||||
**/.symlinks/
|
||||
profile
|
||||
xcuserdata
|
||||
**/.generated/
|
||||
Flutter/App.framework
|
||||
Flutter/Flutter.framework
|
||||
Flutter/Flutter.podspec
|
||||
Flutter/Generated.xcconfig
|
||||
Flutter/ephemeral/
|
||||
Flutter/app.flx
|
||||
Flutter/app.zip
|
||||
Flutter/flutter_assets/
|
||||
Flutter/flutter_export_environment.sh
|
||||
ServiceDefinitions.json
|
||||
Runner/GeneratedPluginRegistrant.*
|
||||
|
||||
# Exceptions to above rules.
|
||||
!default.mode1v3
|
||||
!default.mode2v3
|
||||
!default.pbxuser
|
||||
!default.perspectivev3
|
||||
@@ -1,26 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>App</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>io.flutter.flutter.app</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>App</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1.0</string>
|
||||
<key>MinimumOSVersion</key>
|
||||
<string>9.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1 +0,0 @@
|
||||
#include "Generated.xcconfig"
|
||||
@@ -1 +0,0 @@
|
||||
#include "Generated.xcconfig"
|
||||
@@ -1,481 +0,0 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 50;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
|
||||
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
|
||||
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
|
||||
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
|
||||
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
|
||||
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
9705A1C41CF9048500538489 /* Embed Frameworks */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
dstPath = "";
|
||||
dstSubfolderSpec = 10;
|
||||
files = (
|
||||
);
|
||||
name = "Embed Frameworks";
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
|
||||
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
|
||||
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
|
||||
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
|
||||
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
|
||||
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
|
||||
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
97C146EB1CF9000F007C117D /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
9740EEB11CF90186004384FC /* Flutter */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
|
||||
9740EEB21CF90195004384FC /* Debug.xcconfig */,
|
||||
7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
|
||||
9740EEB31CF90195004384FC /* Generated.xcconfig */,
|
||||
);
|
||||
name = Flutter;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
97C146E51CF9000F007C117D = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9740EEB11CF90186004384FC /* Flutter */,
|
||||
97C146F01CF9000F007C117D /* Runner */,
|
||||
97C146EF1CF9000F007C117D /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
97C146EF1CF9000F007C117D /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
97C146EE1CF9000F007C117D /* Runner.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
97C146F01CF9000F007C117D /* Runner */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
97C146FA1CF9000F007C117D /* Main.storyboard */,
|
||||
97C146FD1CF9000F007C117D /* Assets.xcassets */,
|
||||
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
|
||||
97C147021CF9000F007C117D /* Info.plist */,
|
||||
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
|
||||
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
|
||||
74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
|
||||
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
|
||||
);
|
||||
path = Runner;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
97C146ED1CF9000F007C117D /* Runner */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
|
||||
buildPhases = (
|
||||
9740EEB61CF901F6004384FC /* Run Script */,
|
||||
97C146EA1CF9000F007C117D /* Sources */,
|
||||
97C146EB1CF9000F007C117D /* Frameworks */,
|
||||
97C146EC1CF9000F007C117D /* Resources */,
|
||||
9705A1C41CF9048500538489 /* Embed Frameworks */,
|
||||
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = Runner;
|
||||
productName = Runner;
|
||||
productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
97C146E61CF9000F007C117D /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 1300;
|
||||
ORGANIZATIONNAME = "";
|
||||
TargetAttributes = {
|
||||
97C146ED1CF9000F007C117D = {
|
||||
CreatedOnToolsVersion = 7.3.1;
|
||||
LastSwiftMigration = 1100;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
|
||||
compatibilityVersion = "Xcode 9.3";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
);
|
||||
mainGroup = 97C146E51CF9000F007C117D;
|
||||
productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
97C146ED1CF9000F007C117D /* Runner */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
97C146EC1CF9000F007C117D /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
|
||||
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
|
||||
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
|
||||
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "Thin Binary";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
|
||||
};
|
||||
9740EEB61CF901F6004384FC /* Run Script */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "Run Script";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
97C146EA1CF9000F007C117D /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
|
||||
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
97C146FA1CF9000F007C117D /* Main.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
97C146FB1CF9000F007C117D /* Base */,
|
||||
);
|
||||
name = Main.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
97C147001CF9000F007C117D /* Base */,
|
||||
);
|
||||
name = LaunchScreen.storyboard;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
249021D3217E4FDB00AE95B9 /* Profile */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
SUPPORTED_PLATFORMS = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Profile;
|
||||
};
|
||||
249021D4217E4FDB00AE95B9 /* Profile */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = assets/images/icon_ios.png;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = Runner/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.example.moxxyv2;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
SWIFT_VERSION = 5.0;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = Profile;
|
||||
};
|
||||
97C147031CF9000F007C117D /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
97C147041CF9000F007C117D /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
||||
CLANG_CXX_LIBRARY = "libc++";
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
SUPPORTED_PLATFORMS = iphoneos;
|
||||
SWIFT_COMPILATION_MODE = wholemodule;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
97C147061CF9000F007C117D /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = assets/images/icon_ios.png;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = Runner/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.example.moxxyv2;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
SWIFT_VERSION = 5.0;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
97C147071CF9000F007C117D /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
|
||||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = assets/images/icon_ios.png;
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
||||
ENABLE_BITCODE = NO;
|
||||
INFOPLIST_FILE = Runner/Info.plist;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.example.moxxyv2;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
SWIFT_VERSION = 5.0;
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
97C147031CF9000F007C117D /* Debug */,
|
||||
97C147041CF9000F007C117D /* Release */,
|
||||
249021D3217E4FDB00AE95B9 /* Profile */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
97C147061CF9000F007C117D /* Debug */,
|
||||
97C147071CF9000F007C117D /* Release */,
|
||||
249021D4217E4FDB00AE95B9 /* Profile */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 97C146E61CF9000F007C117D /* Project object */;
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
@@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IDEDidComputeMac32BitWarning</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>PreviewsEnabled</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1,87 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "1300"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
||||
BuildableName = "Runner.app"
|
||||
BlueprintName = "Runner"
|
||||
ReferencedContainer = "container:Runner.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
||||
BuildableName = "Runner.app"
|
||||
BlueprintName = "Runner"
|
||||
ReferencedContainer = "container:Runner.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<Testables>
|
||||
</Testables>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
debugServiceExtension = "internal"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
||||
BuildableName = "Runner.app"
|
||||
BlueprintName = "Runner"
|
||||
ReferencedContainer = "container:Runner.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Profile"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable
|
||||
runnableDebuggingMode = "0">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
|
||||
BuildableName = "Runner.app"
|
||||
BlueprintName = "Runner"
|
||||
ReferencedContainer = "container:Runner.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
7
ios/Runner.xcworkspace/contents.xcworkspacedata
generated
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "group:Runner.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
@@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>IDEDidComputeMac32BitWarning</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>PreviewsEnabled</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1,13 +0,0 @@
|
||||
import UIKit
|
||||
import Flutter
|
||||
|
||||
@UIApplicationMain
|
||||
@objc class AppDelegate: FlutterAppDelegate {
|
||||
override func application(
|
||||
_ application: UIApplication,
|
||||
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
|
||||
) -> Bool {
|
||||
GeneratedPluginRegistrant.register(with: self)
|
||||
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
|
||||
}
|
||||
}
|
||||
@@ -1,122 +0,0 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"size" : "20x20",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Icon-App-20x20@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "20x20",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Icon-App-20x20@3x.png",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"size" : "29x29",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Icon-App-29x29@1x.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "29x29",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Icon-App-29x29@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "29x29",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Icon-App-29x29@3x.png",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"size" : "40x40",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Icon-App-40x40@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "40x40",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Icon-App-40x40@3x.png",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"size" : "60x60",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Icon-App-60x60@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "60x60",
|
||||
"idiom" : "iphone",
|
||||
"filename" : "Icon-App-60x60@3x.png",
|
||||
"scale" : "3x"
|
||||
},
|
||||
{
|
||||
"size" : "20x20",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-App-20x20@1x.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "20x20",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-App-20x20@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "29x29",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-App-29x29@1x.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "29x29",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-App-29x29@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "40x40",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-App-40x40@1x.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "40x40",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-App-40x40@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "76x76",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-App-76x76@1x.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"size" : "76x76",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-App-76x76@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "83.5x83.5",
|
||||
"idiom" : "ipad",
|
||||
"filename" : "Icon-App-83.5x83.5@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"size" : "1024x1024",
|
||||
"idiom" : "ios-marketing",
|
||||
"filename" : "Icon-App-1024x1024@1x.png",
|
||||
"scale" : "1x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 120 KiB |
|
Before Width: | Height: | Size: 980 B |
|
Before Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 7.4 KiB |
|
Before Width: | Height: | Size: 7.4 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 9.6 KiB |
|
Before Width: | Height: | Size: 11 KiB |
@@ -1,23 +0,0 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "LaunchImage.png",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "LaunchImage@2x.png",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"filename" : "LaunchImage@3x.png",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 68 B |
|
Before Width: | Height: | Size: 68 B |
|
Before Width: | Height: | Size: 68 B |
@@ -1,5 +0,0 @@
|
||||
# Launch Screen Assets
|
||||
|
||||
You can customize the launch screen with your own desired assets by replacing the image files in this directory.
|
||||
|
||||
You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
|
||||
@@ -1 +0,0 @@
|
||||
{"images":[{"size":"20x20","idiom":"iphone","filename":"assets/images/icon_ios.png-20x20@2x.png","scale":"2x"},{"size":"20x20","idiom":"iphone","filename":"assets/images/icon_ios.png-20x20@3x.png","scale":"3x"},{"size":"29x29","idiom":"iphone","filename":"assets/images/icon_ios.png-29x29@1x.png","scale":"1x"},{"size":"29x29","idiom":"iphone","filename":"assets/images/icon_ios.png-29x29@2x.png","scale":"2x"},{"size":"29x29","idiom":"iphone","filename":"assets/images/icon_ios.png-29x29@3x.png","scale":"3x"},{"size":"40x40","idiom":"iphone","filename":"assets/images/icon_ios.png-40x40@2x.png","scale":"2x"},{"size":"40x40","idiom":"iphone","filename":"assets/images/icon_ios.png-40x40@3x.png","scale":"3x"},{"size":"60x60","idiom":"iphone","filename":"assets/images/icon_ios.png-60x60@2x.png","scale":"2x"},{"size":"60x60","idiom":"iphone","filename":"assets/images/icon_ios.png-60x60@3x.png","scale":"3x"},{"size":"20x20","idiom":"ipad","filename":"assets/images/icon_ios.png-20x20@1x.png","scale":"1x"},{"size":"20x20","idiom":"ipad","filename":"assets/images/icon_ios.png-20x20@2x.png","scale":"2x"},{"size":"29x29","idiom":"ipad","filename":"assets/images/icon_ios.png-29x29@1x.png","scale":"1x"},{"size":"29x29","idiom":"ipad","filename":"assets/images/icon_ios.png-29x29@2x.png","scale":"2x"},{"size":"40x40","idiom":"ipad","filename":"assets/images/icon_ios.png-40x40@1x.png","scale":"1x"},{"size":"40x40","idiom":"ipad","filename":"assets/images/icon_ios.png-40x40@2x.png","scale":"2x"},{"size":"76x76","idiom":"ipad","filename":"assets/images/icon_ios.png-76x76@1x.png","scale":"1x"},{"size":"76x76","idiom":"ipad","filename":"assets/images/icon_ios.png-76x76@2x.png","scale":"2x"},{"size":"83.5x83.5","idiom":"ipad","filename":"assets/images/icon_ios.png-83.5x83.5@2x.png","scale":"2x"},{"size":"1024x1024","idiom":"ios-marketing","filename":"assets/images/icon_ios.png-1024x1024@1x.png","scale":"1x"}],"info":{"version":1,"author":"xcode"}}
|
||||
|
Before Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 759 B |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 8.0 KiB |
|
Before Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 6.7 KiB |