Compare commits
663 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7d8644f2f8 | |||
| c7a284c1e4 | |||
| 8b79a3663c | |||
| fdf38adc83 | |||
| 921feb4ada | |||
| f367e996aa | |||
| c0c182d200 | |||
| a5fec5a7a5 | |||
| 0f668f2810 | |||
| 5cba186326 | |||
| 74631fe701 | |||
| 13eeb9d0c0 | |||
| 1066157585 | |||
| 7742627373 | |||
| 95102a6b71 | |||
| acac446c8b | |||
| 9fc8e43f17 | |||
| 6d6003f4e0 | |||
| 7ff1b3b5c5 | |||
| 4fd318880e | |||
| 6cd57b192a | |||
| 8c6aab0bc6 | |||
| 2451b3f0da | |||
| daea1375c3 | |||
| ada2b860f6 | |||
| 6758447cad | |||
| 035d6e7b30 | |||
| 0675f6ce44 | |||
| c7317c076b | |||
| 6bd420b421 | |||
| c1f2db72b5 | |||
| f87917e399 | |||
| 6bc50d6454 | |||
| a2bfa02de1 | |||
| a3ad875263 | |||
| 80d3075bf0 | |||
| 0b213cc7db | |||
| 23fc2f66c9 | |||
| 19498d5bce | |||
| 7f37382012 | |||
| 7fcad404b6 | |||
| d8ad7d1672 | |||
| e4b550b8c3 | |||
| 67bdb9ab03 | |||
| 6f44533bbe | |||
| d084b624b9 | |||
| 06d3a90bd7 | |||
| 5e64403699 | |||
| d8954aa732 | |||
| 669b07afef | |||
| e2bc3fb55c | |||
| 088b1572ef | |||
| a30f562d38 | |||
| 4768a012db | |||
| c7d8bd1dc9 | |||
| be226363e8 | |||
| 267a807146 | |||
| 34468cf57d | |||
| 172f9f926e | |||
| f6afced012 | |||
| 00cd7e4ada | |||
| 9f4ab7d761 | |||
| 9ac420c259 | |||
| 6c548d30ad | |||
| 615c6a728d | |||
| bb8c508837 | |||
| 30833f1f5f | |||
| 57bf18c705 | |||
| e30855cb93 | |||
| ed0f536853 | |||
| e4f601310b | |||
| b92107dd02 | |||
| 19c5e806b1 | |||
| f6d9762c5c | |||
| 8b679cca71 | |||
| 34fe132e55 | |||
| 0036bc3fe9 | |||
| d321d1ff51 | |||
| a98d15eed4 | |||
| 57dba01448 | |||
| 3532b589d5 | |||
| 51cc42a901 | |||
| e09b87dffe | |||
| c5752398b9 | |||
| d5fe9c9a11 | |||
| b8ca91a62a | |||
| 5aec41f9e1 | |||
| b1d1db1075 | |||
| 2708eda3d3 | |||
| ad83e0354e | |||
| 1c823a4e7c | |||
| 11186c86ae | |||
| 6014bfa007 | |||
| ef0d2db11d | |||
| 7dd1db50d2 | |||
| c8413912d2 | |||
| 969b2ccecf | |||
| 228c72f6c1 | |||
| ad9af51510 | |||
| 45faa71da8 | |||
| e530c78cc0 | |||
| c3a26654f7 | |||
| 14710606ef | |||
| 72cb9e3929 | |||
| 9c3b082260 | |||
| 46cfe60086 | |||
| 588d1e1137 | |||
| 15a12efd61 | |||
| b0434ea1d9 | |||
| 96b44cdcb2 | |||
| 1fde5f985a | |||
| 34dcdc7f0e | |||
| 2238b460a7 | |||
| ff8ba2d10c | |||
| 5e3495c333 | |||
| 79945d9649 | |||
| 254fa8c4ee | |||
| 14b596e15a | |||
| f33aef4711 | |||
| 7d86e8509a | |||
| dd26bbf859 | |||
| cde1f301d2 | |||
| 2d8e7d3a1a | |||
| 1c2b3ed231 | |||
| 021aa22a80 | |||
| e548ed13b2 | |||
| b1cf7eb64e | |||
| 86e9454b79 | |||
| f7d2434dff | |||
| 07c96e8872 | |||
| 0f51948f80 | |||
| 8448808c67 | |||
| 8da08dd187 | |||
| eedc86f20e | |||
| ccb978f454 | |||
| 33830fd6b4 | |||
| 615c624a70 | |||
| 66f17ae6dd | |||
| 7bf7303f85 | |||
| 4d8d065c89 | |||
| fc111cc0ab | |||
| b535e2b63c | |||
| fb294567fe | |||
| b2893b5ea8 | |||
| 5853d63076 | |||
| bd7cd2a0c6 | |||
| 9d42e5c667 | |||
| ab9ee40e1a | |||
| 0aa28b6804 | |||
| 0891fff309 | |||
| ca37ebacd1 | |||
| 51aff5d94d | |||
| 7ff6acc36c | |||
| cda1c18e03 | |||
| 7f615dcddc | |||
| 646a7535b0 | |||
| 4600339cf7 | |||
| 03fdf2801e | |||
| e427b4e910 | |||
| 0826778a5e | |||
| 5050ee20ee | |||
| b4cf19cb0c | |||
| dee35cfc66 | |||
| 325175f3c3 | |||
| 787f09929b | |||
| c5f9ddeae8 | |||
| c43c34c943 | |||
| ce07691bbc | |||
| 9e76a31da1 | |||
| 90701d03c1 | |||
| 0256f2bba7 | |||
| a12d9c544e | |||
| 8bb5291324 | |||
| 186b082e3c | |||
| 4dd40736a1 | |||
| 8c3741e6f9 | |||
| 6e7f28f574 | |||
| fa24e47d29 | |||
| 12acbfc963 | |||
| 8e1945a628 | |||
| fdae52f6ad | |||
| 4b47d59b3b | |||
| 9cde14fa6d | |||
| a98fa5f7fe | |||
| bf0bc1d837 | |||
| db24c1eb3a | |||
| c8a88bb17e | |||
| 9c73cff8ce | |||
| 5a4b14009e | |||
| a4cb1a123e | |||
| 057f69602b | |||
| 2040da88db | |||
| 82de5b7af0 | |||
| a688409eb9 | |||
| 2ec1cb0cdc | |||
| a73082df6f | |||
| e33888949a | |||
| 6422153ce1 | |||
| 9d1263d7c3 | |||
| 608cbab10c | |||
| 2b08c40a4a | |||
| bd01358481 | |||
| 1e518437dd | |||
| 2096c691ce | |||
| 6b4eadf0fd | |||
| fc8ac8344d | |||
| f6d8afdad6 | |||
| 420564557f | |||
| a8cab927bb | |||
| 81ee1d994e | |||
| 52c1e64b6f | |||
| 3ef755d5d4 | |||
| e719dd8d47 | |||
| ab3f1242d7 | |||
| 8df82cbac0 | |||
| 13c557b5a2 | |||
| 44e32ddffb | |||
| 852b489529 | |||
| 3ff08b9c03 | |||
| 67c2469d37 | |||
| 60745892c1 | |||
| d511804be3 | |||
| 487c60da2d | |||
| 96c63ea9e2 | |||
| 2eca653f47 | |||
| 6f8378f5b4 | |||
| 232eda7c98 | |||
| b6fc8496f4 | |||
| 8a2634b206 | |||
| 3521d54e0a | |||
| 6c1f1c8138 | |||
| 24c0616158 | |||
| 1102904380 | |||
| 2d690bd7cb | |||
| 3ec2ad0a7b | |||
| d3d33f31bb | |||
| 78dfdd024b | |||
| 517e12d3e5 | |||
| 1b26542f0c | |||
| 29e84de69c | |||
| 991fbf107a | |||
| 041a4c4d07 | |||
| e8de3df9c4 | |||
| f0ba1ac5a1 | |||
| 6931b5f06d | |||
| 2850cea6c0 | |||
| e364ca4173 | |||
| c6cc1dc5f6 | |||
| 12dbf12f44 | |||
| 9c7b8a6398 | |||
| 18d3f48686 | |||
| 78c71f0a0f | |||
| 86d0e1e275 | |||
| 935173fcf5 | |||
| 05e72cbe27 | |||
| 3dd1d32ef4 | |||
| 73725e2131 | |||
| c29b180647 | |||
| 65e2d27efb | |||
| 7045295eee | |||
| 3d1ab26448 | |||
| eeb6958174 | |||
| 80e2d1d3a9 | |||
| 2ccdb65cc5 | |||
| 6135979a7c | |||
| 0a01a4af64 | |||
| 0afd06dd49 | |||
| 9c5b8f5ba4 | |||
| ec6a8f8e1a | |||
| 99090ed87a | |||
| 3793a3f9ba | |||
| 5b88d6fb32 | |||
| b3beae8ab5 | |||
| c8d451838b | |||
| 678ac18b5f | |||
| 5cc6b34f56 | |||
| 4606bcce76 | |||
| d3595146b0 | |||
| 20ecec1412 | |||
| ebeed588fa | |||
| ef08ad74b3 | |||
| 0b47bc2eea | |||
| b2a49cc60e | |||
| 468733bd75 | |||
| 37d216097d | |||
| a1bcd63ba9 | |||
| 16c2455370 | |||
| d30d986a51 | |||
| b5288343fc | |||
| 371b3e15fc | |||
| 589a510c33 | |||
| 85648df290 | |||
| 936363d243 | |||
| 05075beed5 | |||
| b729eaed7d | |||
| d06bcd0dd2 | |||
| 2e34102cf5 | |||
| 3018c21828 | |||
| 457d0c6cce | |||
| c9573e3737 | |||
| a11a7bb2ee | |||
| e1b37142c2 | |||
| 32923dd8f8 | |||
| e4bef44f2c | |||
| 8a151ed1b4 | |||
| 54b4406974 | |||
| 4b3561d821 | |||
| fb197d90b9 | |||
| d32f5b10f5 | |||
| 446e4609a9 | |||
| 1f9a4df252 | |||
| 08eb08562f | |||
| 8d3401f2ac | |||
| 3370a07f18 | |||
| c164c1af40 | |||
| df26c03087 | |||
| db8a6f9f13 | |||
| 25986373d1 | |||
| f067652a3b | |||
| 122dbf2619 | |||
| 547bef2483 | |||
| efe6609085 | |||
| 1d43fb11dd | |||
| ff177d0dae | |||
| 1dd5ba512c | |||
| 3906f99ebc | |||
| f89c672c13 | |||
| 80ea555ad6 | |||
| af7a0baa2e | |||
| 3fa7da1384 | |||
| 014de8a873 | |||
| 89cfd03516 | |||
| 0b937fdea6 | |||
| 802652d579 | |||
| bcd4fd4d2c | |||
| 21016cca6c | |||
| 1921e7c985 | |||
| 6be8d94372 | |||
| 84c22334fe | |||
| 9f286afbbb | |||
| e32cd6c124 | |||
| f523069468 | |||
| 674d5d87dd | |||
| 12b37de529 | |||
| 562ce9734a | |||
| 148a14f939 | |||
| fe2ad45dc0 | |||
| 12330dead6 | |||
| 17fb5397c8 | |||
| 8398c3081e | |||
| 71e8bae6d2 | |||
| d312de84a4 | |||
| c3d1c2cee7 | |||
| 0dd3895b47 | |||
| 8230e4186d | |||
| 8e4e8b0e23 | |||
| 49eab5ffa9 | |||
| 8a7fcd95ce | |||
| d1ad17256b | |||
| 4035fc9621 | |||
| 3dab93666d | |||
| ff64ab49f1 | |||
| 15657da6dc | |||
| 872d4694db | |||
| 617c7e5367 | |||
| e1aff07997 | |||
| 02e365584e | |||
| ec8104ae6b | |||
| df114f794e | |||
| 7a801523e4 | |||
| 3a897f0fee | |||
| a5343eb0fa | |||
| beceb10166 | |||
| c687c175fe | |||
| 1032b4f990 | |||
| e4bed1cbc2 | |||
| bdcd6191bd | |||
| deadc4a466 | |||
| 505303f51a | |||
| 0f84d898f2 | |||
| 6041da97c5 | |||
| cb80aea906 | |||
| 850ad647cc | |||
| c02ccf8dcd | |||
| 49896ba938 | |||
| bdec32fa5b | |||
| be36f99d4c | |||
| c007c85490 | |||
| b349ab06fd | |||
| a33009b382 | |||
| c50c6bb23d | |||
| 60ade3ae19 | |||
| 09d119b2d4 | |||
| 4588c15333 | |||
| b9c5317556 | |||
| e051e1a120 | |||
| ef84c65ce5 | |||
| d3fe5cd6bb | |||
| 5073076bb5 | |||
| c0248b5af0 | |||
| 0e4fca9c2f | |||
| f35e340c16 | |||
| b4dc241e08 | |||
| d1c1c0f1ff | |||
| f45b13a101 | |||
| 3d26079aff | |||
| 4f152e93ab | |||
| 5fd0d17e0b | |||
| 0dd9c81e8c | |||
| fcaa02f21a | |||
| b3a0c8f47c | |||
| ca8977ae7c | |||
| 045932fed6 | |||
| 4c1570fdae | |||
| c7c499c6c8 | |||
| 7459dea76c | |||
| 0f30d74045 | |||
| 1c9cff6be3 | |||
| 2880e63082 | |||
| 55d16830c9 | |||
| 5422467e02 | |||
| 9189178a5f | |||
| 494bb54620 | |||
| d0e925156b | |||
| 7a96e8ad82 | |||
| 4d0d262a76 | |||
| 3dad9048f0 | |||
| 10ecb3f05b | |||
| 648f2835ac | |||
| 23adb33f71 | |||
| d62b8b8dfc | |||
| 5e03d9eb29 | |||
| eef91dcda8 | |||
| 29324f6092 | |||
| b224df24dc | |||
| 446a1d74e7 | |||
| 5b7bd98219 | |||
| c42b975be3 | |||
| 9207334808 | |||
| f976f31e7a | |||
| 3017331aa9 | |||
| 34d4eb57a4 | |||
| c7d7cc23b1 | |||
| a65cecfc18 | |||
| e8323f4cad | |||
| 4284d45069 | |||
| 9d9085d379 | |||
| cb0cf2bf5e | |||
| 2c4194e754 | |||
| ac2534a87f | |||
| 9c442bb694 | |||
| 20d7ecf868 | |||
| bb4e4da909 | |||
| b467514c39 | |||
| e51642ff3f | |||
| 8556d563c9 | |||
| a370643f40 | |||
| e56fbd90f1 | |||
| 15ec88c900 | |||
| 7eeadcfde1 | |||
| 061a8c9194 | |||
| 584b13ff67 | |||
| d309f3fb93 | |||
| 5505c01d0a | |||
| b423982a28 | |||
| 86afb06388 | |||
| 0e74637c87 | |||
| 6ca4fc2ae1 | |||
| 6710dbbde8 | |||
| fb03b82f4c | |||
| 360277f0fe | |||
| 14a09d2cc6 | |||
| 822f1a4da6 | |||
| 607c1ac64d | |||
| eb0d4948d0 | |||
| bd3d5f9dde | |||
| 2c91ada1a6 | |||
| 46b0a05849 | |||
| 6a663830f8 | |||
| 9a23172671 | |||
| 1a62894650 | |||
| 22b3106504 | |||
| 9a1c783895 | |||
| d793750adb | |||
| 74b476f8c1 | |||
| 06d6d4b1ef | |||
| 8fe9b7ad89 | |||
| c6456618e4 | |||
| 9dc7aa1603 | |||
| 98fd979c82 | |||
| 9723a2b7f8 | |||
| 77b1ad7fb1 | |||
| b9bcff650b | |||
| fcc3d2a1b6 | |||
| 728f217eb7 | |||
| 917ac66cae | |||
| 30c2a2a269 | |||
| 79a1890539 | |||
| ebb9358d87 | |||
| 3f5df973bf | |||
| e17ef3d265 | |||
| fb4264f3ee | |||
| d72de4ab68 | |||
| a069545bcd | |||
| 79d3951fad | |||
| 97fc57d912 | |||
| 6ed04f3d5e | |||
| 8de1dccf43 | |||
| 8ec26b7b66 | |||
| 1f05d93ea6 | |||
| c3a2d4745d | |||
| 6ce1cda92b | |||
| 3070a40fce | |||
| 0176e42268 | |||
| afb9729ecf | |||
| d079dda223 | |||
| 87b2291f99 | |||
| 6e7d650f51 | |||
| c2c094fbf6 | |||
| 22cf8d3166 | |||
| bb0b7f807f | |||
| 08667dedf1 | |||
| cd5a9b2830 | |||
| 4579dbab15 | |||
| 10a9521a19 | |||
| bcc0d211e1 | |||
| a33f891d65 | |||
| 9b1f23fe4d | |||
| bb6ca17bc3 | |||
| 7e8ed2dcf7 | |||
| 3893bcbc7a | |||
| f33ab6b095 | |||
| b0b096bf16 | |||
| 7df26f34ed | |||
| 454ba1360d | |||
| 5116fdaa47 | |||
| 26d4b1af50 | |||
| 9d1b8c0e29 | |||
| e740a83764 | |||
| 25e2dba5b3 | |||
| b8c4565a38 | |||
| 36a2e32401 | |||
| b586355a8e | |||
| 1a375c525c | |||
| dd1c162271 | |||
| 7171b21fb4 | |||
| 30aba15be2 | |||
| 007aa19291 | |||
| 7e6560b766 | |||
| dd2b26807d | |||
| e6d5b8eef6 | |||
| 206431c210 | |||
| 61c9ebffa9 | |||
| f79c052ace | |||
| e29fdf8cbf | |||
| 544cf07739 | |||
| a88e2a3980 | |||
| 1251ce7e36 | |||
| 360dc4fdbb | |||
| 3396feff33 | |||
| 7cf287c4f4 | |||
| 732b98f7a2 | |||
| 838ce5a82b | |||
| c7083584df | |||
| b6f1be507b | |||
| 690f249481 | |||
| 13cd7d0ebc | |||
| dfc29bb646 | |||
| a14b4c3ddc | |||
| d94c3ef043 | |||
| 917292b443 | |||
| e02ce6579f | |||
| d8322a6db7 | |||
| 5201ff3e10 | |||
| 64ac9c1a99 | |||
| ff426586b8 | |||
| f3f703b426 | |||
| ac39001a61 | |||
| cfd1721d71 | |||
| 0cd32aa9a4 | |||
| e33cc4c43c | |||
| 9c9c36a723 | |||
| 3762c42604 | |||
| 389e882505 | |||
| 75832ccd22 | |||
| fe2d76bdd3 | |||
| 26af404433 | |||
| 8209e61d75 | |||
| 09ee1cb52f | |||
| b152e0b00a | |||
| 75d0f4dc64 | |||
| df982c1b4c | |||
| bb526f6ae3 | |||
| 110e6340e4 | |||
| 166e81b2e5 | |||
| a851c97c85 | |||
| 217d0e85f8 | |||
| 09a29a941c | |||
| 078ffb9e5a | |||
| f9233742a2 | |||
| a2adf917aa | |||
| 41d0b41518 | |||
| aded4dd05e | |||
| 412c56e76b | |||
| 15024f32a8 | |||
| cdee6e388c | |||
| 1a820b67a7 | |||
| 8c21f14bf7 | |||
| 1660375bde | |||
| c9ec07f566 | |||
| 19316303b7 | |||
| e46d664aed | |||
| ccaf664e3c | |||
| 572ebcc3a8 | |||
| 8f5c2526f0 | |||
| d93745e2e1 | |||
| 4f8f3155ef | |||
| deb4a2c9eb | |||
| 4d26440cbb | |||
| cf98746660 | |||
| 824828f5c8 | |||
| 59e427512c | |||
| 09c1a84169 | |||
| b254c23882 | |||
| da7655642f | |||
| 5c7efe99e6 | |||
| 17e743d346 | |||
| 2c898e4581 | |||
| 1638a89023 | |||
| 1436e3e4f1 | |||
| d037830d38 | |||
| d8cfb32514 | |||
| adddcd6a11 | |||
| 8c511bcd72 | |||
| 06acc1984a | |||
| 14c06dd2e4 | |||
| 516fceb2ab | |||
| 17b2be083a | |||
| 21caff9610 | |||
| 84db013177 | |||
| 479c688851 | |||
| 20593ac279 | |||
| 6639c4c162 | |||
| 61f9e2d1f7 | |||
| d346e7a325 | |||
| b471addb84 | |||
| a47121d6aa | |||
| 44eef26342 | |||
| 5757e2eb72 | |||
| bce69d0fb6 | |||
| 80db4c307a | |||
| 238607d5a1 | |||
| 24a3346670 | |||
| cf40d10bc0 | |||
| 51bc9ed0ee | |||
| a3cade9a5a | |||
| 5275ae114c | |||
| 9c5eb15024 | |||
| 9e7109af81 | |||
| 3162455e14 | |||
| bb568d4b5f | |||
| 24d991ae77 | |||
| 553ada3b04 |
@@ -103,6 +103,9 @@ cache/
|
||||
# Pygame_sdl2.
|
||||
/pygame_sdl2
|
||||
|
||||
# Updater.
|
||||
update.pem
|
||||
|
||||
# Steam.
|
||||
steam_appid.txt
|
||||
/steamapi.py
|
||||
@@ -127,3 +130,6 @@ CubismSdkForNative-4-*.zip
|
||||
# Works in progress, throwaway scripts, etc.
|
||||
/scratch
|
||||
/*-dists
|
||||
/c
|
||||
/cg
|
||||
/.vscode/launch.json
|
||||
|
||||
Vendored
+155
@@ -56,4 +56,159 @@
|
||||
"renpy.warnOnInvalidVariableNames": "Disabled",
|
||||
"renpy.warnOnInvalidFilenameIssues": "Disabled",
|
||||
"renpy.warnOnIndentationAndSpacingIssues": "Disabled",
|
||||
"editor.tokenColorCustomizations": {
|
||||
"textMateRules": [
|
||||
{
|
||||
"scope": "renpy.meta.plain",
|
||||
"settings": {
|
||||
"fontStyle": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "renpy.meta.i",
|
||||
"settings": {
|
||||
"fontStyle": "italic"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "renpy.meta.b",
|
||||
"settings": {
|
||||
"fontStyle": "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": [
|
||||
"renpy.meta.u",
|
||||
"renpy.meta.a"
|
||||
],
|
||||
"settings": {
|
||||
"fontStyle": "underline"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "renpy.meta.s",
|
||||
"settings": {
|
||||
"fontStyle": "strikethrough"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "renpy.meta.i renpy.meta.b",
|
||||
"settings": {
|
||||
"fontStyle": "italic bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "renpy.meta.i renpy.meta.u",
|
||||
"settings": {
|
||||
"fontStyle": "italic underline"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "renpy.meta.i renpy.meta.s",
|
||||
"settings": {
|
||||
"fontStyle": "italic strikethrough"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "renpy.meta.b renpy.meta.u",
|
||||
"settings": {
|
||||
"fontStyle": "bold underline"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "renpy.meta.b renpy.meta.s",
|
||||
"settings": {
|
||||
"fontStyle": "bold strikethrough"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "renpy.meta.u renpy.meta.s",
|
||||
"settings": {
|
||||
"fontStyle": "underline strikethrough"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "renpy.meta.i renpy.meta.b renpy.meta.u",
|
||||
"settings": {
|
||||
"fontStyle": "italic bold underline"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "renpy.meta.i renpy.meta.b renpy.meta.s",
|
||||
"settings": {
|
||||
"fontStyle": "italic bold strikethrough"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "renpy.meta.i renpy.meta.u renpy.meta.s",
|
||||
"settings": {
|
||||
"fontStyle": "italic underline strikethrough"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "renpy.meta.b renpy.meta.u renpy.meta.s",
|
||||
"settings": {
|
||||
"fontStyle": "bold underline strikethrough"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "renpy.meta.i renpy.meta.b renpy.meta.u renpy.meta.s",
|
||||
"settings": {
|
||||
"fontStyle": "italic bold underline strikethrough"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "renpy.meta.color.text",
|
||||
"settings": {
|
||||
"foreground": "#ffffff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "text.notes.info",
|
||||
"settings": {
|
||||
"foreground": "#17a2b8",
|
||||
"fontStyle": "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "text.notes.success",
|
||||
"settings": {
|
||||
"foreground": "#28a745",
|
||||
"fontStyle": "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "text.notes.warning",
|
||||
"settings": {
|
||||
"foreground": "#ffc107",
|
||||
"fontStyle": "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "text.notes.danger",
|
||||
"settings": {
|
||||
"foreground": "#dc3545",
|
||||
"fontStyle": "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "renpy.meta.color.#fff",
|
||||
"settings": {
|
||||
"foreground": "#fff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "renpy.meta.color.#fcc",
|
||||
"settings": {
|
||||
"foreground": "#fcc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"scope": "renpy.meta.color.#cfc",
|
||||
"settings": {
|
||||
"foreground": "#cfc"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
}
|
||||
|
||||
+1
-1
@@ -50,7 +50,7 @@ your system. On Ubuntu and Debian, these dependencies can be installed with
|
||||
the command::
|
||||
|
||||
sudo apt install virtualenvwrapper python3-dev libavcodec-dev libavformat-dev \
|
||||
libswresample-dev libswscale-dev libfreetype6-dev libfribidi-dev libsdl2-dev \
|
||||
libswresample-dev libswscale-dev libharfbuzz-dev libfreetype6-dev libfribidi-dev libsdl2-dev \
|
||||
libsdl2-image-dev libsdl2-gfx-dev libsdl2-mixer-dev libsdl2-ttf-dev libjpeg-dev
|
||||
|
||||
Ren'Py requires SDL_image 2.6 or greater. If your distribution doesn't include
|
||||
|
||||
@@ -15,9 +15,11 @@ SOURCE = [
|
||||
"/home/tom/ab/renpy-build/renpyweb",
|
||||
]
|
||||
|
||||
version = ".".join(str(i) for i in version_tuple)
|
||||
short_version = ".".join(str(i) for i in version_tuple[:-1])
|
||||
major = short_version.split(".")[0]
|
||||
from renpy.versions import generate_vc_version
|
||||
|
||||
version = generate_vc_version()["version"]
|
||||
short_version = version.rpartition(".")[0]
|
||||
major = version.partition(".")[0]
|
||||
print("Version", version)
|
||||
|
||||
ap = argparse.ArgumentParser()
|
||||
|
||||
+28
-44
@@ -94,6 +94,8 @@ def main():
|
||||
ap.add_argument("--vc-version-only", action="store_true")
|
||||
ap.add_argument("--link-directories", action="store_true")
|
||||
ap.add_argument("--append-version", action="store_true")
|
||||
ap.add_argument("--nightly", action="store_true")
|
||||
ap.add_argument("--print-version", action="store_true")
|
||||
|
||||
args = ap.parse_args()
|
||||
|
||||
@@ -101,71 +103,53 @@ def main():
|
||||
link_directory("renios")
|
||||
link_directory("web")
|
||||
|
||||
if args.link_directories:
|
||||
import renpy.versions
|
||||
renpy.versions.generate_vc_version(nightly=args.nightly)
|
||||
|
||||
if args.link_directories or args.vc_version_only:
|
||||
return
|
||||
|
||||
if not os.path.abspath(sys.executable).startswith(ROOT + "/lib"):
|
||||
raise Exception("Distribute must be run with the python in lib/.")
|
||||
|
||||
if args.sign:
|
||||
os.environ["RENPY_MAC_IDENTITY"] = "Developer ID Application: Tom Rothamel (XHTE5H7Z79)"
|
||||
|
||||
if PY2 and not sys.flags.optimize:
|
||||
raise Exception("Not running with python optimization.")
|
||||
|
||||
if not os.path.abspath(sys.executable).startswith(ROOT + "/lib"):
|
||||
raise Exception("Distribute must be run with the python in lib/.")
|
||||
|
||||
# Revision updating is done early, so we can do it even if the rest
|
||||
# of the program fails.
|
||||
|
||||
# Determine the version. We grab the current revision, and if any
|
||||
# file has changed, bump it by 1.
|
||||
import renpy
|
||||
|
||||
if args.version is None:
|
||||
args.version = ".".join(str(i) for i in renpy.version_tuple[:-1])
|
||||
|
||||
try:
|
||||
s = subprocess.check_output([ "git", "describe", "--tags", "--dirty", ]).decode("utf-8").strip()
|
||||
parts = s.strip().split("-")
|
||||
dirty = "dirty" in parts
|
||||
vc_version_base = os.path.splitext(renpy.vc_version.__file__)[0]
|
||||
|
||||
commits_per_day = collections.defaultdict(int)
|
||||
# Delete the .pyc and .pyo files, as reload can choose one of them instead
|
||||
# of the new .py file.
|
||||
for fn in [ vc_version_base + ".pyc", vc_version_base + ".pyo" ]:
|
||||
if os.path.exists(fn):
|
||||
os.unlink(fn)
|
||||
|
||||
for i in subprocess.check_output([ "git", "log", "-99", "--pretty=%cd", "--date=format:%Y%m%d" ]).decode("utf-8").split():
|
||||
commits_per_day[i[2:]] += 1
|
||||
|
||||
if dirty:
|
||||
key = time.strftime("%Y%m%d")[2:]
|
||||
vc_version = "{}{:02d}".format(key, commits_per_day[key] + 1)
|
||||
else:
|
||||
key = max(commits_per_day.keys())
|
||||
vc_version = "{}{:02d}".format(key, commits_per_day[key])
|
||||
reload(renpy.vc_version)
|
||||
except Exception:
|
||||
vc_version = 0
|
||||
import renpy.vc_version
|
||||
|
||||
with open("renpy/vc_version.py", "w") as f:
|
||||
import socket
|
||||
official = socket.gethostname() == "eileen"
|
||||
nightly = args.version and "nightly" in args.version
|
||||
# A normal reload is fine, as renpy/__init__.py won't change.
|
||||
reload(renpy)
|
||||
|
||||
f.write("vc_version = {}\n".format(vc_version))
|
||||
f.write("official = {}\n".format(official))
|
||||
f.write("nightly = {}\n".format(nightly))
|
||||
|
||||
if args.vc_version_only:
|
||||
if args.print_version:
|
||||
print(renpy.version_only)
|
||||
return
|
||||
|
||||
try:
|
||||
reload(sys.modules['renpy.vc_version']) # @UndefinedVariable
|
||||
except Exception:
|
||||
import renpy.vc_version # @UnusedImport
|
||||
|
||||
reload(sys.modules['renpy'])
|
||||
if args.version is None:
|
||||
if args.nightly:
|
||||
args.version = renpy.version_only
|
||||
else:
|
||||
args.version = ".".join(str(i) for i in renpy.version_tuple[:-1])
|
||||
|
||||
if args.append_version:
|
||||
args.version += "-" + renpy.version_only
|
||||
|
||||
# Check that the versions match.
|
||||
full_version = renpy.version_only # @UndefinedVariable
|
||||
|
||||
if "-" not in args.version \
|
||||
and not full_version.startswith(args.version):
|
||||
raise Exception("The command-line and Ren'Py versions do not match.")
|
||||
@@ -268,7 +252,7 @@ def main():
|
||||
"-q",
|
||||
"egg_info",
|
||||
"--tag-build",
|
||||
"-for-renpy-" + args.version,
|
||||
"+renpy" + args.version,
|
||||
"sdist",
|
||||
"-d",
|
||||
os.path.abspath(destination)
|
||||
|
||||
@@ -344,6 +344,9 @@ define config.history_length = 250
|
||||
## at the cost of performance.
|
||||
define gui.history_height = gui.scale(140)
|
||||
|
||||
## Additional space to add between history screen entries.
|
||||
define gui.history_spacing = 0
|
||||
|
||||
## The position, width, and alignment of the label giving the name of the
|
||||
## speaking character.
|
||||
define gui.history_name_xpos = gui.scale(155)
|
||||
|
||||
@@ -412,7 +412,7 @@ style main_menu_version:
|
||||
## This screen is intended to be used with one or more children, which are
|
||||
## transcluded (placed) inside it.
|
||||
|
||||
screen game_menu(title, scroll=None, yinitial=0.0):
|
||||
screen game_menu(title, scroll=None, yinitial=0.0, spacing=0):
|
||||
|
||||
style_prefix "game_menu"
|
||||
|
||||
@@ -445,6 +445,8 @@ screen game_menu(title, scroll=None, yinitial=0.0):
|
||||
side_yfill True
|
||||
|
||||
vbox:
|
||||
spacing spacing
|
||||
|
||||
transclude
|
||||
|
||||
elif scroll == "vpgrid":
|
||||
@@ -460,6 +462,8 @@ screen game_menu(title, scroll=None, yinitial=0.0):
|
||||
|
||||
side_yfill True
|
||||
|
||||
spacing spacing
|
||||
|
||||
transclude
|
||||
|
||||
else:
|
||||
@@ -888,7 +892,7 @@ screen history():
|
||||
## Avoid predicting this screen, as it can be very large.
|
||||
predict False
|
||||
|
||||
use game_menu(_("History"), scroll=("vpgrid" if gui.history_height else "viewport"), yinitial=1.0):
|
||||
use game_menu(_("History"), scroll=("vpgrid" if gui.history_height else "viewport"), yinitial=1.0, spacing=gui.history_spacing):
|
||||
|
||||
style_prefix "history"
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ class Editor(renpy.editor.Editor):
|
||||
elif renpy.arch == "armv7l":
|
||||
arch = "arm"
|
||||
else:
|
||||
arch = "x86_64"
|
||||
arch = "x64"
|
||||
|
||||
code = os.path.join(RENPY_VSCODE, "VSCode-linux-" + arch, "bin", "code")
|
||||
else:
|
||||
|
||||
@@ -42,7 +42,7 @@ class Editor(renpy.editor.Editor):
|
||||
elif renpy.arch == "armv7l":
|
||||
arch = "arm"
|
||||
else:
|
||||
arch = "x86_64"
|
||||
arch = "x64"
|
||||
|
||||
code = os.path.join(RENPY_VSCODE, "VSCode-linux-" + arch, "bin", "code")
|
||||
else:
|
||||
|
||||
@@ -31,10 +31,9 @@ init python:
|
||||
ANDROID_NO_BUNDLE = 6
|
||||
ANDROID_OK = 7
|
||||
|
||||
JDK_REQUIREMENT=8
|
||||
JDK_REQUIREMENT = 42
|
||||
|
||||
NO_RAPT_TEXT = _("To build Android packages, please download RAPT, unzip it, and place it into the Ren'Py directory. Then restart the Ren'Py launcher.")
|
||||
NO_JDK_TEXT = _("A 64-bit/x64 Java [JDK_REQUIREMENT] Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=https://www.renpy.org/jdk/[JDK_REQUIREMENT]}download and install the JDK{/a}, then restart the Ren'Py launcher.")
|
||||
NO_SDK_TEXT = _("RAPT has been installed, but you'll need to install the Android SDK before you can build Android packages. Choose Install SDK to do this.")
|
||||
NO_KEY_TEXT = _("RAPT has been installed, but a key hasn't been configured. Please generate new keys, or copy android.keystore and bundle.keystore to the base directory.")
|
||||
NO_CONFIG_TEXT = _("The current project has not been configured. Use \"Configure\" to configure it before building.")
|
||||
@@ -99,9 +98,12 @@ init python:
|
||||
rapt.plat.renpy = True
|
||||
rapt.plat.translate = __
|
||||
|
||||
JDK_REQUIREMENT = rapt.plat.jdk_requirement
|
||||
|
||||
else:
|
||||
rapt = None
|
||||
|
||||
|
||||
def AndroidState():
|
||||
"""
|
||||
Determines the state of the android install, and returns it.
|
||||
@@ -109,8 +111,6 @@ init python:
|
||||
|
||||
if RAPT_PATH is None:
|
||||
return ANDROID_NO_RAPT
|
||||
if renpy.windows and not "JAVA_HOME" in os.environ:
|
||||
return ANDROID_NO_JDK
|
||||
if not os.path.exists(rapt.plat.adb):
|
||||
return ANDROID_NO_SDK
|
||||
if not rapt.keys.keys_exist(project.current.path):
|
||||
@@ -133,8 +133,6 @@ init python:
|
||||
|
||||
if state == ANDROID_NO_RAPT:
|
||||
return NO_RAPT_TEXT
|
||||
if state == ANDROID_NO_JDK:
|
||||
return NO_JDK_TEXT
|
||||
if state == ANDROID_NO_SDK:
|
||||
return NO_SDK_TEXT
|
||||
if state == ANDROID_NO_KEY:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
|
||||
# This file contains strings used by RAPT, so the Ren'Py translation framework
|
||||
# can find them. It's automatically generated by rapt/update_translations.py, and
|
||||
# hence should not be changed by hand.
|
||||
|
||||
@@ -41,7 +41,7 @@ init python:
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
def choose_directory(path):
|
||||
def choose_directory(default_path):
|
||||
"""
|
||||
Pops up a directory chooser.
|
||||
|
||||
@@ -54,33 +54,31 @@ init python:
|
||||
rather than user choice.
|
||||
"""
|
||||
|
||||
if path:
|
||||
default_path = path
|
||||
path = None
|
||||
else:
|
||||
try:
|
||||
default_path = os.path.dirname(os.path.abspath(config.renpy_base))
|
||||
except Exception:
|
||||
default_path = os.path.abspath(config.renpy_base)
|
||||
|
||||
if _renpytfd:
|
||||
path = _renpytfd.selectFolderDialog(__("Select Projects Directory"), default_path)
|
||||
else:
|
||||
path = None
|
||||
|
||||
is_default = False
|
||||
if default_path is None:
|
||||
try:
|
||||
default_path = os.path.dirname(os.path.abspath(config.renpy_base))
|
||||
except Exception:
|
||||
default_path = os.path.abspath(config.renpy_base)
|
||||
|
||||
# Path being None or "" means nothing was selected.
|
||||
if not path:
|
||||
path = default_path
|
||||
is_default = True
|
||||
|
||||
if default_path is None or not os.path.isdir(default_path) or not directory_is_writable(default_path):
|
||||
interface.error(_("No directory was selected, but one is required."))
|
||||
|
||||
return default_path, True
|
||||
|
||||
# Apply more thorough checks to an explicit path.
|
||||
path = renpy.fsdecode(path)
|
||||
|
||||
if (not os.path.isdir(path)) or (not directory_is_writable(path)):
|
||||
interface.error(_("The selected projects directory is not writable."))
|
||||
path = default_path
|
||||
is_default = True
|
||||
if not os.path.isdir(path):
|
||||
interface.error(_("The selected directory does not exist."))
|
||||
elif not directory_is_writable(path):
|
||||
interface.error(_("The selected directory is not writable."))
|
||||
|
||||
if is_default and (not directory_is_writable(path)):
|
||||
path = os.path.expanduser("~")
|
||||
|
||||
return path, is_default
|
||||
return path, False
|
||||
|
||||
+127
-35
@@ -528,6 +528,11 @@ change_renpy_executable()
|
||||
self.reporter.info(_("Scanning project files..."))
|
||||
project.update_dump(force=True, gui=False, compile=project.data['force_recompile'])
|
||||
|
||||
if project.data['tutorial']:
|
||||
self.reporter.info(_("Building distributions failed:\n\nThe project is the Ren'Py Tutorial, which can't be distributed outside of Ren'Py. Consider using The Question as a test project."), pause=True)
|
||||
self.log.close()
|
||||
return
|
||||
|
||||
if project.data['force_recompile']:
|
||||
import compileall
|
||||
|
||||
@@ -551,7 +556,10 @@ change_renpy_executable()
|
||||
self.pretty_version = build['version']
|
||||
|
||||
if (" " in self.base_name) or (":" in self.base_name) or (";" in self.base_name):
|
||||
reporter.info(_("Building distributions failed:\n\nThe build.directory_name variable may not include the space, colon, or semicolon characters."), pause=True)
|
||||
reporter.info(
|
||||
_("Building distributions failed:\n\nThe build.directory_name variable may not include the space, colon, or semicolon characters."),
|
||||
submessage=_("This may be derived from build.name and config.version or build.version."),
|
||||
pause=True)
|
||||
self.log.close()
|
||||
return
|
||||
|
||||
@@ -576,6 +584,9 @@ change_renpy_executable()
|
||||
self.include_update = build['include_update']
|
||||
self.build_update = self.include_update and build_update
|
||||
|
||||
if self.include_update:
|
||||
self.make_key_pem()
|
||||
|
||||
# The various executables, which change names based on self.executable_name.
|
||||
self.app = self.executable_name + ".app"
|
||||
self.exe = self.executable_name + ".exe"
|
||||
@@ -673,11 +684,12 @@ change_renpy_executable()
|
||||
dlc=p["dlc"])
|
||||
|
||||
if self.build_update and p["update"]:
|
||||
self.make_package(
|
||||
p["name"],
|
||||
"update",
|
||||
p["file_lists"],
|
||||
dlc=p["dlc"])
|
||||
for update_format in self.list_update_formats():
|
||||
self.make_package(
|
||||
p["name"],
|
||||
update_format,
|
||||
p["file_lists"],
|
||||
dlc=p["dlc"])
|
||||
|
||||
wait_parallel_threads()
|
||||
|
||||
@@ -696,6 +708,23 @@ change_renpy_executable()
|
||||
if open_directory:
|
||||
renpy.run(store.OpenDirectory(self.destination, absolute=True))
|
||||
|
||||
def list_update_formats(self):
|
||||
"""
|
||||
Returns a list of update formats to build.
|
||||
"""
|
||||
|
||||
rv = [ ]
|
||||
|
||||
for update_format in self.build["update_formats"]:
|
||||
if update_format == "rpu":
|
||||
rv.append("rpu")
|
||||
elif update_format == "zsync":
|
||||
rv.append("update")
|
||||
else:
|
||||
raise Exception("Unknown update format: " + update_format)
|
||||
|
||||
return rv
|
||||
|
||||
def scan_and_classify(self, directory, patterns):
|
||||
"""
|
||||
Walks through the `directory`, finds files and directories that
|
||||
@@ -720,29 +749,37 @@ change_renpy_executable()
|
||||
is_dir = os.path.isdir(path)
|
||||
|
||||
if is_dir:
|
||||
match_name = name + "/"
|
||||
match_names = [ name + "/", name ]
|
||||
else:
|
||||
match_name = name
|
||||
match_names = [ name ]
|
||||
|
||||
for pattern, file_list in patterns:
|
||||
|
||||
if match(match_name, pattern):
|
||||
matched = False
|
||||
|
||||
# When we have ('test/**', None), avoid excluding test.
|
||||
if (not file_list) and is_dir:
|
||||
new_pattern = pattern.rstrip("*")
|
||||
if (pattern != new_pattern) and match(match_name, new_pattern):
|
||||
continue
|
||||
for match_name in match_names:
|
||||
|
||||
if match(match_name, pattern):
|
||||
|
||||
# When we have ('test/**', None), avoid excluding test.
|
||||
if (not file_list) and is_dir:
|
||||
new_pattern = pattern.rstrip("*")
|
||||
if (pattern != new_pattern) and match(match_name, new_pattern):
|
||||
continue
|
||||
|
||||
matched = True
|
||||
break
|
||||
|
||||
if matched:
|
||||
break
|
||||
|
||||
else:
|
||||
print(str(match_name), "doesn't match anything.", file=self.log)
|
||||
print(str(match_names[0]), "doesn't match anything.", file=self.log)
|
||||
|
||||
pattern = None
|
||||
file_list = None
|
||||
|
||||
print(str(match_name), "matches", str(pattern), "(" + str(file_list) + ").", file=self.log)
|
||||
print(str(match_names[0]), "matches", str(pattern), "(" + str(file_list) + ").", file=self.log)
|
||||
|
||||
if file_list is None:
|
||||
return
|
||||
@@ -1409,6 +1446,7 @@ change_renpy_executable()
|
||||
|
||||
FORMATS = {
|
||||
"update" : (".update", False, False, False),
|
||||
"rpu" : ("", False, False, False),
|
||||
|
||||
"tar.bz2" : (".tar.bz2", False, False, True),
|
||||
"zip" : (".zip", False, False, True),
|
||||
@@ -1458,7 +1496,7 @@ change_renpy_executable()
|
||||
|
||||
update_fn = os.path.join(self.destination, filename + ".update.json")
|
||||
|
||||
if self.include_update and (variant not in [ 'ios', 'android', 'source']) and (not format.startswith("app-")):
|
||||
if self.include_update and not format.startswith("app-"):
|
||||
|
||||
with open(update_fn, "wb" if PY2 else "w") as f:
|
||||
json.dump(update, f, indent=2)
|
||||
@@ -1467,6 +1505,9 @@ change_renpy_executable()
|
||||
fl.append(File("update", None, True, False))
|
||||
fl.append(File("update/current.json", update_fn, False, False))
|
||||
|
||||
if not dlc:
|
||||
fl.append(File("update/key.pem", self.temp_filename("key.pem"), False, False))
|
||||
|
||||
# If we're not an update file, prepend the directory.
|
||||
if (not dlc) and prepend:
|
||||
fl.prepend_directory(filename)
|
||||
@@ -1477,6 +1518,10 @@ change_renpy_executable()
|
||||
full_filename = filename + ext
|
||||
path += ext
|
||||
|
||||
if format == "rpu":
|
||||
full_filename = "rpu/" + variant + ".files.rpu"
|
||||
path = self.destination + "/" + full_filename
|
||||
|
||||
if self.build['renpy']:
|
||||
fl_hash = fl.hash(self)
|
||||
else:
|
||||
@@ -1513,6 +1558,8 @@ change_renpy_executable()
|
||||
pkg = TarPackage(path, "w:bz2")
|
||||
elif format == "update":
|
||||
pkg = UpdatePackage(path, filename, self.destination)
|
||||
elif format == "rpu":
|
||||
pkg = RPUPackage(self.destination, variant)
|
||||
elif format == "zip" or format == "app-zip" or format == "bare-zip":
|
||||
if self.build['renpy']:
|
||||
pkg = ExternalZipPackage(path)
|
||||
@@ -1549,13 +1596,13 @@ change_renpy_executable()
|
||||
|
||||
self.reporter.progress_done()
|
||||
|
||||
|
||||
if format == "update":
|
||||
# Build the zsync file.
|
||||
|
||||
self.reporter.info(_("Making the [variant] update zsync file."), variant=variant)
|
||||
|
||||
pkg.close()
|
||||
def close_progress(done, total):
|
||||
self.reporter.progress(_("Finishing the [variant] [format] package."), done, total, variant=variant, format=format)
|
||||
|
||||
pkg.close(close_progress)
|
||||
|
||||
if done is not None:
|
||||
done()
|
||||
@@ -1576,33 +1623,78 @@ change_renpy_executable()
|
||||
|
||||
def add_variant(variant):
|
||||
|
||||
digest = self.build_cache[self.base_name + "-" + variant + ".update"][0]
|
||||
|
||||
sums_size = os.path.getsize(self.destination + "/" + self.base_name + "-" + variant + ".sums")
|
||||
|
||||
index[variant] = {
|
||||
"version" : self.update_versions[variant],
|
||||
"pretty_version" : self.pretty_version,
|
||||
"digest" : digest,
|
||||
"zsync_url" : self.base_name + "-" + variant + ".zsync",
|
||||
"sums_url" : self.base_name + "-" + variant + ".sums",
|
||||
"sums_size" : sums_size,
|
||||
"json_url" : self.base_name + "-" + variant + ".update.json",
|
||||
}
|
||||
"renpy_version" : renpy.version_only,
|
||||
}
|
||||
|
||||
fn = renpy.fsencode(os.path.join(self.destination, self.base_name + "-" + variant + ".update"))
|
||||
if "update" in self.build["update_formats"]:
|
||||
|
||||
if os.path.exists(fn):
|
||||
os.unlink(fn)
|
||||
digest = self.build_cache[self.base_name + "-" + variant + ".update"][0]
|
||||
sums_size = os.path.getsize(self.destination + "/" + self.base_name + "-" + variant + ".sums")
|
||||
|
||||
index[variant].update({
|
||||
"digest" : digest,
|
||||
"zsync_url" : self.base_name + "-" + variant + ".zsync",
|
||||
"sums_url" : self.base_name + "-" + variant + ".sums",
|
||||
"sums_size" : sums_size,
|
||||
"json_url" : self.base_name + "-" + variant + ".update.json",
|
||||
})
|
||||
|
||||
fn = renpy.fsencode(os.path.join(self.destination, self.base_name + "-" + variant + ".update"))
|
||||
|
||||
if os.path.exists(fn):
|
||||
os.unlink(fn)
|
||||
|
||||
if "rpu" in self.build["update_formats"]:
|
||||
|
||||
rpu_size = 0
|
||||
|
||||
rpu_dir = os.path.join(self.destination, "rpu")
|
||||
|
||||
for i in os.listdir(rpu_dir):
|
||||
rpu_size += os.path.getsize(os.path.join(rpu_dir, i))
|
||||
|
||||
index[variant]["rpu_url"] = "rpu/" + variant + ".files.rpu"
|
||||
index[variant]["rpu_digest"] = self.build_cache["rpu/" + variant + ".files.rpu"][0]
|
||||
index[variant]["rpu_size"] = rpu_size
|
||||
|
||||
for p in packages:
|
||||
if p["update"]:
|
||||
add_variant(p["name"])
|
||||
|
||||
update_data = json.dumps(index, indent=2)
|
||||
|
||||
fn = renpy.fsencode(os.path.join(self.destination, "updates.json"))
|
||||
with open(fn, "wb" if PY2 else "w") as f:
|
||||
json.dump(index, f, indent=2)
|
||||
f.write(update_data)
|
||||
|
||||
# Write the signed file.
|
||||
import ecdsa
|
||||
|
||||
with open(self.find_update_pem(), "rb") as f:
|
||||
signing_key = ecdsa.SigningKey.from_pem(f.read())
|
||||
|
||||
fn = renpy.fsencode(os.path.join(self.destination, "updates.ecdsa"))
|
||||
with open(fn, "wb") as f:
|
||||
f.write(signing_key.sign(update_data.encode("utf-8")))
|
||||
|
||||
def find_update_pem(self):
|
||||
if self.build['renpy']:
|
||||
return os.path.join(config.renpy_base, "update.pem")
|
||||
else:
|
||||
return os.path.join(self.project.path, "update.pem")
|
||||
|
||||
def make_key_pem(self):
|
||||
import ecdsa
|
||||
|
||||
with open(self.find_update_pem(), "rb") as f:
|
||||
signing_key = ecdsa.SigningKey.from_pem(f.read())
|
||||
|
||||
key_pem = self.temp_filename("key.pem")
|
||||
with open(key_pem, "wb") as f:
|
||||
f.write(signing_key.verifying_key.to_pem())
|
||||
|
||||
def save_build_cache(self):
|
||||
if not self.build['renpy']:
|
||||
|
||||
@@ -267,7 +267,23 @@ label start_update_old_game:
|
||||
call update_old_game
|
||||
jump build_distributions
|
||||
|
||||
label add_update_pem:
|
||||
|
||||
python hide:
|
||||
interface.info("You're trying to build an update, but an update.pem file doesn't exist.\n\nThis file is used to sign updates, and will be automatically created in your projects's base directory.\n\nYou'll need to back up update.pem and keep it safe.", cancel=Jump("build_distributions"))
|
||||
|
||||
import ecdsa
|
||||
key = ecdsa.SigningKey.generate(curve=ecdsa.NIST256p).to_pem()
|
||||
|
||||
with open(os.path.join(project.current.path, "update.pem"), "wb") as f:
|
||||
f.write(key)
|
||||
|
||||
return
|
||||
|
||||
label start_distribute:
|
||||
if project.current.dump["build"]["include_update"] and not os.path.exists(os.path.join(project.current.path, "update.pem")):
|
||||
call add_update_pem
|
||||
|
||||
if project.current.data["add_from"]:
|
||||
call add_from_common
|
||||
|
||||
|
||||
@@ -162,7 +162,7 @@ init 1 python in editor:
|
||||
elif renpy.arch == "armv7l":
|
||||
arch = "arm"
|
||||
else:
|
||||
arch = "x86_64"
|
||||
arch = "x64"
|
||||
|
||||
installed = os.path.exists(os.path.join(config.renpy_base, "vscode/VSCode-linux-" + arch))
|
||||
|
||||
|
||||
@@ -259,7 +259,7 @@ label lint:
|
||||
interface.processing(_("Checking script for potential problems..."))
|
||||
lint_fn = project.current.temp_filename("lint.txt")
|
||||
|
||||
project.current.launch([ 'lint', lint_fn ], wait=True)
|
||||
project.current.launch([ 'lint', lint_fn, ] + list(persistent.lint_options), wait=True)
|
||||
|
||||
e = renpy.editor.editor
|
||||
e.begin(True)
|
||||
|
||||
@@ -81,7 +81,6 @@ init python:
|
||||
|
||||
label install_live2d:
|
||||
python hide:
|
||||
|
||||
if PY2:
|
||||
_prefix = r"lib/py2-"
|
||||
else:
|
||||
@@ -98,6 +97,11 @@ label install_live2d:
|
||||
(r".*/Core/dll/android/(x86_64/libLive2DCubismCore.so)", r"rapt/prototype/renpyandroid/src/main/jniLibs/\1"),
|
||||
]
|
||||
|
||||
if PY2:
|
||||
patterns.extend([
|
||||
(r".*/Core/dll/windows/x86/(Live2DCubismCore.dll)", _prefix + r"windows-i686/\1"),
|
||||
])
|
||||
|
||||
install_from_zip("Live2D Cubism SDK for Native", "CubismSdkForNative-4-*.zip", patterns)
|
||||
|
||||
jump front_page
|
||||
|
||||
@@ -492,7 +492,7 @@ init python in interface:
|
||||
The amount of time to pause for after showing the message.
|
||||
"""
|
||||
|
||||
common(title, store.INTERACTION_COLOR, message, submessage=None, pause=pause, show_screen=True, **kwargs)
|
||||
common(title, store.INTERACTION_COLOR, message, submessage=submessage, pause=pause, show_screen=True, **kwargs)
|
||||
renpy.pause(pause)
|
||||
|
||||
def processing(message, submessage=None, complete=None, total=None, **kwargs):
|
||||
|
||||
@@ -98,7 +98,7 @@ label itch:
|
||||
|
||||
for fn in os.listdir(destination):
|
||||
|
||||
for pattern, channel in reversed(build['itch_channels']):
|
||||
for pattern, channel in reversed(build['itch_channels'].items()):
|
||||
if fnmatch.fnmatch(fn, pattern):
|
||||
break
|
||||
else:
|
||||
|
||||
@@ -62,6 +62,9 @@ label new_project:
|
||||
if persistent.projects_directory is None:
|
||||
$ interface.error(_("The projects directory could not be set. Giving up."))
|
||||
|
||||
if PY2:
|
||||
$ interface.info(_("Warning : you are using Ren'Py 7. It is recommended to start new projects using Ren'Py 8 instead."))
|
||||
|
||||
python:
|
||||
if persistent.legacy:
|
||||
|
||||
|
||||
@@ -242,10 +242,12 @@ init python:
|
||||
# allows the updater to run.
|
||||
build.include_update = True
|
||||
|
||||
# Build both kinds of updates.
|
||||
build.update_formats = [ "zsync", "rpu" ]
|
||||
|
||||
# Allow empty directories, so we can distribute the images directory.
|
||||
build.exclude_empty_directories = False
|
||||
|
||||
|
||||
# Mac signing options.
|
||||
import os
|
||||
build.mac_identity = os.environ.get("RENPY_MAC_IDENTITY", None)
|
||||
@@ -339,7 +341,6 @@ init python:
|
||||
build.classify_renpy(pattern + "/**.rpymc", binary)
|
||||
|
||||
build.classify_renpy(pattern + "/**/" + renpy.script.BYTECODE_FILE, binary)
|
||||
build.classify_renpy(pattern + "/**/cache/bytecode-311.rpyb", "web")
|
||||
build.classify_renpy(pattern + "/**/cache/bytecode-*.rpyb", None)
|
||||
|
||||
build.classify_renpy(pattern + "/**/cache/*", binary)
|
||||
@@ -396,6 +397,7 @@ init python:
|
||||
build.classify_renpy("module/pysdlsound/*.pyx", "source")
|
||||
build.classify_renpy("module/fribidi-src/**", "source")
|
||||
build.classify_renpy("module/tinyfiledialogs/**", "source")
|
||||
build.classify_renpy("module/libhydrogen/**", "source")
|
||||
|
||||
# all-platforms binary.
|
||||
build.classify_renpy("lib/**/*steam_api*", "steam")
|
||||
|
||||
@@ -33,7 +33,6 @@ init python in distribute:
|
||||
|
||||
from zipfile import crc32
|
||||
|
||||
|
||||
# Since the long type doesn't exist on py3, define it here
|
||||
if not PY2:
|
||||
long = int
|
||||
@@ -195,7 +194,7 @@ init python in distribute:
|
||||
|
||||
self.zipfile.write_with_info(zi, path)
|
||||
|
||||
def close(self):
|
||||
def close(self, progress=None):
|
||||
self.zipfile.close()
|
||||
|
||||
|
||||
@@ -207,7 +206,7 @@ init python in distribute:
|
||||
If true, times will be forced to the epoch.
|
||||
"""
|
||||
|
||||
self.tarfile = tarfile.open(filename, mode)
|
||||
self.tarfile = tarfile.open(filename, mode, format=tarfile.PAX_FORMAT)
|
||||
self.tarfile.dereference = True
|
||||
self.notime = notime
|
||||
|
||||
@@ -243,9 +242,10 @@ init python in distribute:
|
||||
def add_directory(self, name, path):
|
||||
self.add_file(name, path, True)
|
||||
|
||||
def close(self):
|
||||
def close(self, progress=None):
|
||||
self.tarfile.close()
|
||||
|
||||
|
||||
class UpdatePackage(TarPackage):
|
||||
|
||||
def __init__(self, filename, basename, destination):
|
||||
@@ -255,7 +255,7 @@ init python in distribute:
|
||||
|
||||
TarPackage.__init__(self, filename, "w", notime=True)
|
||||
|
||||
def close(self):
|
||||
def close(self, progress=None):
|
||||
TarPackage.close(self)
|
||||
|
||||
cmd = [
|
||||
@@ -283,7 +283,6 @@ init python in distribute:
|
||||
sums.write(struct.pack("<I", zlib.adler32(data) & 0xffffffff))
|
||||
|
||||
|
||||
|
||||
class DirectoryPackage(object):
|
||||
|
||||
def mkdir(self, path):
|
||||
@@ -315,9 +314,10 @@ init python in distribute:
|
||||
fn = os.path.join(self.path, name)
|
||||
self.mkdir(fn)
|
||||
|
||||
def close(self):
|
||||
def close(self, progress=None):
|
||||
return
|
||||
|
||||
|
||||
class ExternalZipPackage(object):
|
||||
|
||||
def __init__(self, path):
|
||||
@@ -331,7 +331,7 @@ init python in distribute:
|
||||
def add_directory(self, name, path):
|
||||
self.dp.add_directory(name, path)
|
||||
|
||||
def close(self):
|
||||
def close(self, progress=None):
|
||||
self.dp.close()
|
||||
|
||||
if os.path.exists(self.path):
|
||||
@@ -350,17 +350,40 @@ init python in distribute:
|
||||
shutil.rmtree(self.directory)
|
||||
|
||||
|
||||
|
||||
class DMGPackage(DirectoryPackage):
|
||||
def __init__(self, path, make_dmg):
|
||||
self.make_dmg = make_dmg
|
||||
DirectoryPackage.__init__(self, path)
|
||||
|
||||
def close(self):
|
||||
def close(self, progress=None):
|
||||
DirectoryPackage.close(self)
|
||||
self.make_dmg()
|
||||
|
||||
|
||||
class RPUPackage(object):
|
||||
|
||||
def __init__(self, directory, variant):
|
||||
import renpy.update.common
|
||||
|
||||
self.directory = directory + "/rpu"
|
||||
self.variant = variant
|
||||
self.file_list = renpy.update.common.FileList()
|
||||
|
||||
if not os.path.exists(self.directory):
|
||||
os.mkdir(self.directory)
|
||||
|
||||
def add_file(self, name, path, xbit):
|
||||
self.file_list.add_file(name, path, xbit)
|
||||
|
||||
def add_directory(self, name, _path):
|
||||
self.file_list.add_directory(name)
|
||||
|
||||
def close(self, progress=None):
|
||||
import renpy.update.generate
|
||||
|
||||
renpy.update.generate.BlockGenerator(self.variant, self.file_list, self.directory, progress)
|
||||
|
||||
|
||||
parallel_threads = [ ]
|
||||
|
||||
class ParallelPackage(object):
|
||||
@@ -378,7 +401,7 @@ init python in distribute:
|
||||
def add_directory(self, name, path):
|
||||
self.worklist.append((True, name, path, True))
|
||||
|
||||
def close(self):
|
||||
def close(self, progress=None):
|
||||
t = threading.Thread(target=self.run)
|
||||
t.start()
|
||||
|
||||
|
||||
@@ -19,15 +19,15 @@
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
default persistent.show_edit_funcs = True
|
||||
default persistent.windows_console = False
|
||||
default persistent.lint_options = { # the ones which should be enabled by default
|
||||
"--orphan-tl",
|
||||
}
|
||||
|
||||
init python:
|
||||
from math import ceil
|
||||
|
||||
if persistent.show_edit_funcs is None:
|
||||
persistent.show_edit_funcs = True
|
||||
|
||||
if persistent.windows_console is None:
|
||||
persistent.windows_console = False
|
||||
|
||||
def scan_translations(piglatin=True):
|
||||
|
||||
languages = renpy.known_languages()
|
||||
@@ -64,6 +64,9 @@ default persistent.daily_update_check_once = False
|
||||
# Keep the default update check from triggering until tomorrow.
|
||||
default persistent.last_update_check = datetime.date.today()
|
||||
|
||||
# Should we try to skip the splashscreen?
|
||||
default persistent.skip_splashscreen = False
|
||||
|
||||
init python:
|
||||
if not persistent.daily_update_check_once:
|
||||
persistent.daily_update_check_once = True
|
||||
@@ -71,6 +74,14 @@ init python:
|
||||
|
||||
|
||||
default preference_tab = "general"
|
||||
define preference_tabs = {
|
||||
"general" : _("General"),
|
||||
"options" : _("Options"),
|
||||
"theme" : _("Theme"),
|
||||
"install" : _("Install Libraries"),
|
||||
"actions" : _("Actions"),
|
||||
"lint" : _("Lint Options"),
|
||||
}
|
||||
|
||||
screen preferences():
|
||||
|
||||
@@ -98,17 +109,12 @@ screen preferences():
|
||||
|
||||
has vbox
|
||||
|
||||
# Projects directory selection.
|
||||
add SEPARATOR2
|
||||
|
||||
add HALF_SPACER
|
||||
|
||||
textbutton _("General") action SetVariable("preference_tab", "general") style "l_list"
|
||||
textbutton _("Options") action SetVariable("preference_tab", "options") style "l_list"
|
||||
textbutton _("Theme") action SetVariable("preference_tab", "theme") style "l_list"
|
||||
textbutton _("Install Libraries") action SetVariable("preference_tab", "install") style "l_list"
|
||||
textbutton _("Actions") action SetVariable("preference_tab", "actions") style "l_list"
|
||||
|
||||
for i, l in preference_tabs.items():
|
||||
textbutton l action SetVariable("preference_tab", i) style "l_list"
|
||||
|
||||
if preference_tab == "general":
|
||||
|
||||
@@ -119,7 +125,6 @@ screen preferences():
|
||||
|
||||
has vbox
|
||||
|
||||
# Projects directory selection.
|
||||
add SEPARATOR2
|
||||
|
||||
|
||||
@@ -207,6 +212,22 @@ screen preferences():
|
||||
add SPACER
|
||||
add SEPARATOR2
|
||||
|
||||
frame:
|
||||
style "l_indent"
|
||||
has vbox
|
||||
|
||||
text _("Game Options:")
|
||||
|
||||
add HALF_SPACER
|
||||
|
||||
if renpy.windows:
|
||||
textbutton _("Console output") style "l_checkbox" action ToggleField(persistent, "windows_console")
|
||||
|
||||
textbutton _("Skip splashscreen") style "l_checkbox" action ToggleField(persistent, "skip_splashscreen")
|
||||
|
||||
add SPACER
|
||||
add SEPARATOR2
|
||||
|
||||
frame:
|
||||
style "l_indent"
|
||||
has vbox
|
||||
@@ -218,15 +239,11 @@ screen preferences():
|
||||
textbutton _("Show edit file section") style "l_checkbox" action ToggleField(persistent, "show_edit_funcs")
|
||||
textbutton _("Large fonts") style "l_checkbox" action [ ToggleField(persistent, "large_print"), renpy.utter_restart ]
|
||||
|
||||
if renpy.windows:
|
||||
textbutton _("Console output") style "l_checkbox" action ToggleField(persistent, "windows_console")
|
||||
|
||||
textbutton _("Sponsor message") style "l_checkbox" action ToggleField(persistent, "sponsor_message")
|
||||
|
||||
if ability.can_update:
|
||||
textbutton _("Daily check for update") style "l_checkbox" action [ToggleField(persistent, "daily_update_check"), SetField(persistent, "last_update_check", None)] selected persistent.daily_update_check
|
||||
|
||||
|
||||
elif preference_tab == "theme":
|
||||
|
||||
frame:
|
||||
@@ -236,7 +253,6 @@ screen preferences():
|
||||
|
||||
has vbox
|
||||
|
||||
# Projects directory selection.
|
||||
add SEPARATOR2
|
||||
|
||||
frame:
|
||||
@@ -276,7 +292,6 @@ screen preferences():
|
||||
|
||||
use install_preferences
|
||||
|
||||
|
||||
elif preference_tab == "actions":
|
||||
|
||||
frame:
|
||||
@@ -300,6 +315,39 @@ screen preferences():
|
||||
textbutton _("Reset window size") style "l_nonbox" action Preference("display", 1.0)
|
||||
textbutton _("Clean temporary files") style "l_nonbox" action Jump("clean_tmp")
|
||||
|
||||
elif preference_tab == "lint":
|
||||
|
||||
frame:
|
||||
style "l_indent"
|
||||
xmaximum TWOTHIRDS
|
||||
xfill True
|
||||
|
||||
has vbox
|
||||
|
||||
add SEPARATOR2
|
||||
|
||||
frame:
|
||||
style "l_indent"
|
||||
has vbox
|
||||
|
||||
text _("Lint toggles:")
|
||||
|
||||
add HALF_SPACER
|
||||
|
||||
textbutton _("Orphan translations"):
|
||||
style "l_checkbox"
|
||||
action ToggleSetMembership(persistent.lint_options, "--orphan-tl")
|
||||
textbutton _("Parameters overriding builtin names"):
|
||||
style "l_checkbox"
|
||||
action ToggleSetMembership(persistent.lint_options, "--builtins-parameters")
|
||||
textbutton _("Word count and character count for speaking characters"):
|
||||
style "l_checkbox"
|
||||
action ToggleSetMembership(persistent.lint_options, "--words-char-count")
|
||||
|
||||
add SPACER
|
||||
|
||||
textbutton _("Check Script (Lint)") action Jump("lint")
|
||||
|
||||
|
||||
textbutton _("Return") action Jump("front_page") style "l_left_button"
|
||||
|
||||
|
||||
@@ -55,12 +55,12 @@ init python in project:
|
||||
|
||||
def __init__(self, path, name=None):
|
||||
|
||||
if name is None:
|
||||
name = os.path.basename(path)
|
||||
|
||||
while path.endswith("/"):
|
||||
path = path[:-1]
|
||||
|
||||
if name is None:
|
||||
name = os.path.basename(path)
|
||||
|
||||
if not os.path.exists(path):
|
||||
raise Exception("{} does not exist.".format(path))
|
||||
|
||||
@@ -128,6 +128,7 @@ init python in project:
|
||||
data.setdefault("add_from", True)
|
||||
data.setdefault("force_recompile", True)
|
||||
data.setdefault("android_build", "Release")
|
||||
data.setdefault("tutorial", False)
|
||||
|
||||
if "renamed_all" not in data:
|
||||
dp = data["packages"]
|
||||
@@ -259,8 +260,16 @@ init python in project:
|
||||
|
||||
environ = dict(os.environ)
|
||||
environ["RENPY_LAUNCHER_LANGUAGE"] = _preferences.language or "english"
|
||||
|
||||
if persistent.skip_splashscreen:
|
||||
environ["RENPY_SKIP_SPLASHSCREEN"] = "1"
|
||||
|
||||
environ.update(env)
|
||||
|
||||
# Filter out system PYTHON* environment variables.
|
||||
if hasattr(sys, "renpy_executable"):
|
||||
environ = { k : v for k, v in environ.items() if not k.startswith("PYTHON") }
|
||||
|
||||
encoded_environ = { }
|
||||
|
||||
for k, v in environ.items():
|
||||
@@ -761,7 +770,12 @@ init python in project:
|
||||
blurb = LAUNCH_BLURBS[persistent.blurb % len(LAUNCH_BLURBS)]
|
||||
persistent.blurb += 1
|
||||
|
||||
interface.interaction(_("Launching"), blurb, pause=2.5)
|
||||
if persistent.skip_splashscreen:
|
||||
submessage = _("Splashscreen skipped in launcher preferences.")
|
||||
else:
|
||||
submessage = None
|
||||
|
||||
interface.interaction(_("Launching"), blurb, submessage=submessage, pause=2.5)
|
||||
|
||||
|
||||
def __call__(self):
|
||||
|
||||
@@ -3,7 +3,7 @@ translate finnish strings:
|
||||
|
||||
# 00action_file.rpy:26
|
||||
old "{#weekday}Monday"
|
||||
new "{#weekday}Maanatai"
|
||||
new "{#weekday}Maanantai"
|
||||
|
||||
# 00action_file.rpy:26
|
||||
old "{#weekday}Tuesday"
|
||||
@@ -341,13 +341,12 @@ translate finnish strings:
|
||||
|
||||
# renpy/common/00accessibility.rpy:32
|
||||
old "bar"
|
||||
# Automatic translation.
|
||||
new "baari"
|
||||
new "palkki"
|
||||
|
||||
# renpy/common/00accessibility.rpy:33
|
||||
old "selected"
|
||||
# Automatic translation.
|
||||
new "valitut"
|
||||
new "valittu"
|
||||
|
||||
# renpy/common/00accessibility.rpy:34
|
||||
old "viewport"
|
||||
@@ -375,13 +374,11 @@ translate finnish strings:
|
||||
|
||||
# renpy/common/00accessibility.rpy:39
|
||||
old "increase"
|
||||
# Automatic translation.
|
||||
new "lisätä"
|
||||
new "lisää"
|
||||
|
||||
# renpy/common/00accessibility.rpy:40
|
||||
old "decrease"
|
||||
# Automatic translation.
|
||||
new "vähentää"
|
||||
new "vähennä"
|
||||
|
||||
# renpy/common/00accessibility.rpy:138
|
||||
old "Font Override"
|
||||
@@ -413,8 +410,7 @@ translate finnish strings:
|
||||
|
||||
# renpy/common/00accessibility.rpy:168
|
||||
old "Line Spacing Scaling"
|
||||
# Automatic translation.
|
||||
new "Riviväli Skaalaus"
|
||||
new "Rivivälin skaalaus"
|
||||
|
||||
# renpy/common/00accessibility.rpy:180
|
||||
old "High Contrast Text"
|
||||
@@ -423,12 +419,11 @@ translate finnish strings:
|
||||
|
||||
# renpy/common/00accessibility.rpy:193
|
||||
old "Self-Voicing"
|
||||
# Automatic translation.
|
||||
new "Itseään ilmaiseva"
|
||||
new "Tietokoneen ääninäyttely"
|
||||
|
||||
# renpy/common/00accessibility.rpy:197
|
||||
old "Off"
|
||||
new "Off"
|
||||
new "Pois päältä"
|
||||
|
||||
# renpy/common/00accessibility.rpy:201
|
||||
old "Text-to-speech"
|
||||
@@ -447,58 +442,47 @@ translate finnish strings:
|
||||
|
||||
# renpy/common/00accessibility.rpy:223
|
||||
old "Self-Voicing Volume Drop"
|
||||
# Automatic translation.
|
||||
new "Itseään ilmaiseva äänenvoimakkuuden pudotus"
|
||||
new "Tietokoneen ääninäyttelyn äänenvoimakkuuden pudotus"
|
||||
|
||||
# renpy/common/00accessibility.rpy:234
|
||||
old "The options on this menu are intended to improve accessibility. They may not work with all games, and some combinations of options may render the game unplayable. This is not an issue with the game or engine. For the best results when changing fonts, try to keep the text size the same as it originally was."
|
||||
# Automatic translation.
|
||||
new "Tämän valikon vaihtoehtojen tarkoituksena on parantaa saavutettavuutta. Ne eivät välttämättä toimi kaikissa peleissä, ja jotkin vaihtoehtojen yhdistelmät saattavat tehdä pelistä pelikelvottoman. Tämä ei johdu pelistä tai moottorista. Parhaat tulokset saat, kun vaihdat fontteja, kun yrität pitää tekstin koon samana kuin se oli alun perin."
|
||||
new "Tämän valikon vaihtoehtojen tarkoituksena on parantaa saavutettavuutta. Ne eivät välttämättä toimi kaikissa peleissä, ja joidenkin vaihtoehtojen yhdistelmät saattavat tehdä pelistä pelikelvottoman. Tämä ei johdu pelistä tai moottorista. Saat fontteja vaihtaessa parhaat tulokset kun yrität pitää tekstin koon samana kuin se oli alun perin."
|
||||
|
||||
# renpy/common/00action_file.rpy:378
|
||||
old "Save slot %s: [text]"
|
||||
# Automatic translation.
|
||||
new "Tallenna paikka %s: [text]"
|
||||
new "Tallennuspaikka %s: [text]"
|
||||
|
||||
# renpy/common/00action_file.rpy:461
|
||||
old "Load slot %s: [text]"
|
||||
# Automatic translation.
|
||||
new "Lataa paikka %s: [text]"
|
||||
new "Lataa tallennus %s: [text]"
|
||||
|
||||
# renpy/common/00action_file.rpy:514
|
||||
old "Delete slot [text]"
|
||||
# Automatic translation.
|
||||
new "Poista korttipaikka [text]"
|
||||
new "Poista tallennus [text]"
|
||||
|
||||
# renpy/common/00action_file.rpy:593
|
||||
old "File page auto"
|
||||
# Automatic translation.
|
||||
new "Tiedoston sivu auto"
|
||||
new "Tiedoston sivu: auto"
|
||||
|
||||
# renpy/common/00action_file.rpy:595
|
||||
old "File page quick"
|
||||
# Automatic translation.
|
||||
new "Tiedoston sivu nopea"
|
||||
new "Tiedoston sivu: pika"
|
||||
|
||||
# renpy/common/00action_file.rpy:597
|
||||
old "File page [text]"
|
||||
# Automatic translation.
|
||||
new "Tiedoston sivu [text]"
|
||||
new "Tiedoston sivu: [text]"
|
||||
|
||||
# renpy/common/00action_file.rpy:796
|
||||
old "Next file page."
|
||||
# Automatic translation.
|
||||
new "Seuraava tiedostosivu."
|
||||
new "Seuraava tiedoston sivu."
|
||||
|
||||
# renpy/common/00action_file.rpy:868
|
||||
old "Previous file page."
|
||||
# Automatic translation.
|
||||
new "Edellinen sivu."
|
||||
new "Edellinen tiedoston sivu."
|
||||
|
||||
# renpy/common/00action_file.rpy:944
|
||||
old "Quick save."
|
||||
# Automatic translation.
|
||||
new "Nopea pelastus."
|
||||
new "Pikatallennus."
|
||||
|
||||
# renpy/common/00action_file.rpy:963
|
||||
old "Quick load."
|
||||
@@ -656,8 +640,7 @@ translate finnish strings:
|
||||
|
||||
# renpy/common/00preferences.rpy:292
|
||||
old "skip transitions"
|
||||
# Automatic translation.
|
||||
new "ohittaa siirtymiä"
|
||||
new "ohita siirtymät"
|
||||
|
||||
# renpy/common/00preferences.rpy:294
|
||||
old "video sprites"
|
||||
@@ -689,18 +672,15 @@ translate finnish strings:
|
||||
|
||||
# renpy/common/00preferences.rpy:330
|
||||
old "skip unseen [text]"
|
||||
# Automatic translation.
|
||||
new "hypätä näkymättömiin [text]"
|
||||
new "ohita näkemätön [text]"
|
||||
|
||||
# renpy/common/00preferences.rpy:335
|
||||
old "skip unseen text"
|
||||
# Automatic translation.
|
||||
new "hyppää näkymättömän tekstin yli"
|
||||
new "ohita näkemätön teksti"
|
||||
|
||||
# renpy/common/00preferences.rpy:337
|
||||
old "begin skipping"
|
||||
# Automatic translation.
|
||||
new "aloittaa hyppääminen"
|
||||
new "aloita ohittaminen"
|
||||
|
||||
# renpy/common/00preferences.rpy:341
|
||||
old "after choices"
|
||||
@@ -709,28 +689,23 @@ translate finnish strings:
|
||||
|
||||
# renpy/common/00preferences.rpy:348
|
||||
old "skip after choices"
|
||||
# Automatic translation.
|
||||
new "hyppää valintojen jälkeen"
|
||||
new "ohita valintojen jälkeen"
|
||||
|
||||
# renpy/common/00preferences.rpy:350
|
||||
old "auto-forward time"
|
||||
# Automatic translation.
|
||||
new "automaattisen eteenpäinlähetyksen aika"
|
||||
new "automaattisen eteenpäinsiirtymisen aika"
|
||||
|
||||
# renpy/common/00preferences.rpy:364
|
||||
old "auto-forward"
|
||||
# Automatic translation.
|
||||
new "automaattinen eteenpäinlähetys"
|
||||
new "automaattinen eteenpäinsiirtyminen"
|
||||
|
||||
# renpy/common/00preferences.rpy:371
|
||||
old "Auto forward"
|
||||
# Automatic translation.
|
||||
new "Automaattinen eteenpäin"
|
||||
new "Automaattinen eteenpäinsiirtyminen"
|
||||
|
||||
# renpy/common/00preferences.rpy:374
|
||||
old "auto-forward after click"
|
||||
# Automatic translation.
|
||||
new "automaattinen välitys eteenpäin napsautuksen jälkeen"
|
||||
new "automaattinen eteenpäinsiirtyminen napsautuksen jälkeen"
|
||||
|
||||
# renpy/common/00preferences.rpy:383
|
||||
old "automatic move"
|
||||
@@ -749,27 +724,23 @@ translate finnish strings:
|
||||
|
||||
# renpy/common/00preferences.rpy:410
|
||||
old "self voicing"
|
||||
# Automatic translation.
|
||||
new "itseään ilmaiseva"
|
||||
new "tietokoneen ääninäyttely"
|
||||
|
||||
# renpy/common/00preferences.rpy:419
|
||||
old "self voicing volume drop"
|
||||
# Automatic translation.
|
||||
new "itse ääntäminen äänenvoimakkuuden pudotus"
|
||||
new "tietokoneen ääninäyttelyn äänenvoimakkuuden pudotus"
|
||||
|
||||
# renpy/common/00preferences.rpy:427
|
||||
old "clipboard voicing"
|
||||
# Automatic translation.
|
||||
new "leikepöydän ääntäminen"
|
||||
new "leikepöydän ääni"
|
||||
|
||||
# renpy/common/00preferences.rpy:436
|
||||
old "debug voicing"
|
||||
new "debug voicing"
|
||||
new "virheenkorjausääni"
|
||||
|
||||
# renpy/common/00preferences.rpy:445
|
||||
old "emphasize audio"
|
||||
# Automatic translation.
|
||||
new "korostaa ääntä"
|
||||
new "korosta ääntä"
|
||||
|
||||
# renpy/common/00preferences.rpy:454
|
||||
old "rollback side"
|
||||
@@ -831,7 +802,7 @@ translate finnish strings:
|
||||
# renpy/common/00preferences.rpy:528
|
||||
old "audio when unfocused"
|
||||
# Automatic translation.
|
||||
new "ääni, kun se ei ole keskittynyt"
|
||||
new "ääni kun se ei ole keskittynyt"
|
||||
|
||||
# renpy/common/00preferences.rpy:537
|
||||
old "web cache preload"
|
||||
@@ -845,48 +816,39 @@ translate finnish strings:
|
||||
|
||||
# renpy/common/00preferences.rpy:571
|
||||
old "main volume"
|
||||
# Automatic translation.
|
||||
new "päätehoste"
|
||||
new "pää-äänenvoimakkuus"
|
||||
|
||||
# renpy/common/00preferences.rpy:572
|
||||
old "music volume"
|
||||
# Automatic translation.
|
||||
new "musiikin äänenvoimakkuus"
|
||||
|
||||
# renpy/common/00preferences.rpy:573
|
||||
old "sound volume"
|
||||
# Automatic translation.
|
||||
new "äänenvoimakkuus"
|
||||
new "tehosteiden äänenvoimakkuus"
|
||||
|
||||
# renpy/common/00preferences.rpy:574
|
||||
old "voice volume"
|
||||
# Automatic translation.
|
||||
new "äänenvoimakkuus"
|
||||
new "ääninäyttelyn äänenvoimakkuus"
|
||||
|
||||
# renpy/common/00preferences.rpy:575
|
||||
old "mute main"
|
||||
# Automatic translation.
|
||||
new "mykistää päävirran"
|
||||
new "mykistä pää-ääni"
|
||||
|
||||
# renpy/common/00preferences.rpy:576
|
||||
old "mute music"
|
||||
# Automatic translation.
|
||||
new "mykistää musiikin"
|
||||
new "mykistä musiikki"
|
||||
|
||||
# renpy/common/00preferences.rpy:577
|
||||
old "mute sound"
|
||||
# Automatic translation.
|
||||
new "äänen mykistäminen"
|
||||
new "mykistä äänitehosteet"
|
||||
|
||||
# renpy/common/00preferences.rpy:578
|
||||
old "mute voice"
|
||||
# Automatic translation.
|
||||
new "mykistää äänen"
|
||||
new "mykistä ääninäyttely"
|
||||
|
||||
# renpy/common/00preferences.rpy:579
|
||||
old "mute all"
|
||||
# Automatic translation.
|
||||
new "mykistää kaikki"
|
||||
new "mykistä kaikki"
|
||||
|
||||
# renpy/common/00speechbubble.rpy:344
|
||||
old "Speech Bubble Editor"
|
||||
@@ -950,8 +912,7 @@ translate finnish strings:
|
||||
|
||||
# renpy/common/00sync.rpy:529
|
||||
old "This will upload your saves to the {a=https://sync.renpy.org}Ren'Py Sync Server{/a}.\nDo you want to continue?"
|
||||
# Automatic translation.
|
||||
new "Tämä lataa tallennuksesi osoitteeseen {a=https://sync.renpy.org}Ren'Py Sync Server{/a}.\nHaluatko jatkaa?"
|
||||
new "Tämä lataa tallennuksesi {a=https://sync.renpy.org}Ren'Py Sync Serveriin{/a}.\nHaluatko jatkaa?"
|
||||
|
||||
# renpy/common/00sync.rpy:558
|
||||
old "Enter Sync ID"
|
||||
@@ -960,13 +921,11 @@ translate finnish strings:
|
||||
|
||||
# renpy/common/00sync.rpy:569
|
||||
old "This will contact the {a=https://sync.renpy.org}Ren'Py Sync Server{/a}."
|
||||
# Automatic translation.
|
||||
new "Tämä ottaa yhteyttä {a=https://sync.renpy.org}Ren'Py Sync Server{/a}."
|
||||
new "Tämä ottaa yhteyttä {a=https://sync.renpy.org}Ren'Py Sync Serveriin{/a}."
|
||||
|
||||
# renpy/common/00sync.rpy:596
|
||||
old "Sync Success"
|
||||
# Automatic translation.
|
||||
new "Synkronoinnin onnistuminen"
|
||||
new "Synkronointi onnistui"
|
||||
|
||||
# renpy/common/00sync.rpy:599
|
||||
old "The Sync ID is:"
|
||||
@@ -975,8 +934,7 @@ translate finnish strings:
|
||||
|
||||
# renpy/common/00sync.rpy:605
|
||||
old "You can use this ID to download your save on another device.\nThis sync will expire in an hour.\nRen'Py Sync is supported by {a=https://www.renpy.org/sponsors.html}Ren'Py's Sponsors{/a}."
|
||||
# Automatic translation.
|
||||
new "Voit käyttää tätä tunnusta ladataksesi tallennuksesi toiseen laitteeseen.\nTämä synkronointi päättyy tunnin kuluttua.\nRen'Py Sync on tuettu {a=https://www.renpy.org/sponsors.html}Ren'Py's Sponsors{/a}."
|
||||
new "Voit käyttää tätä tunnusta ladataksesi tallennuksesi toiseen laitteeseen.\nTämä synkronointi päättyy tunnin kuluttua.\nRen'Py Sync on {a=https://www.renpy.org/sponsors.html}Ren'Pyn sponsorien{/a} tukema."
|
||||
|
||||
# renpy/common/00sync.rpy:631
|
||||
old "Sync Error"
|
||||
|
||||
@@ -1243,8 +1243,7 @@ translate finnish strings:
|
||||
|
||||
# game/android.rpy:59
|
||||
old "Disconnects a device connected over Wi-Fi."
|
||||
# Automatic translation.
|
||||
new "Katkaisee Wi-Fi-yhteyden kautta yhdistetyn laitteen yhteyden."
|
||||
new "Katkaisee yhteyden Wi-Fi-yhteyden kautta yhdistetyn laitteeseen."
|
||||
|
||||
# game/android.rpy:61
|
||||
old "Removes Android temporary files."
|
||||
@@ -1258,8 +1257,7 @@ translate finnish strings:
|
||||
|
||||
# game/android.rpy:64
|
||||
old "Builds a Universal APK package, intended for sideloading and stores other than Google Play. This can include up to 2GB of data."
|
||||
# Automatic translation.
|
||||
new "Rakentaa universaalin APK-paketin, joka on tarkoitettu sivulataukseen ja muihin kauppoihin kuin Google Playyn. Tämä voi sisältää jopa 2 Gt dataa."
|
||||
new "Rakentaa universaalin APK-paketin, joka on tarkoitettu sivulataukseen ja muihin kauppoihin kuin Google Play'hin. Tämä voi sisältää enintään 2 Gt dataa."
|
||||
|
||||
# game/android.rpy:327
|
||||
old "Android: [project.current.display_name!q]"
|
||||
@@ -1277,7 +1275,7 @@ translate finnish strings:
|
||||
|
||||
# game/android.rpy:397
|
||||
old "Play Bundle"
|
||||
new "Play Bundle"
|
||||
new "Play-kaupan paketti"
|
||||
|
||||
# game/android.rpy:402
|
||||
old "Universal APK"
|
||||
@@ -1285,8 +1283,7 @@ translate finnish strings:
|
||||
|
||||
# game/android.rpy:452
|
||||
old "List Devices"
|
||||
# Automatic translation.
|
||||
new "Luettelo Laitteet"
|
||||
new "Listaa laitteet"
|
||||
|
||||
# game/android.rpy:456
|
||||
old "Wi-Fi Debugging Pair"
|
||||
@@ -1295,7 +1292,7 @@ translate finnish strings:
|
||||
|
||||
# game/android.rpy:460
|
||||
old "Wi-Fi Debugging Connect"
|
||||
new "Wi-Fi Debugging Connect"
|
||||
new "Wi-Fi-vianmäärityksen yhdistäminen"
|
||||
|
||||
# game/android.rpy:464
|
||||
old "Wi-Fi Debugging Disconnect"
|
||||
@@ -1304,8 +1301,7 @@ translate finnish strings:
|
||||
|
||||
# game/android.rpy:468
|
||||
old "Clean"
|
||||
# Automatic translation.
|
||||
new "Puhdas"
|
||||
new "Puhdista"
|
||||
|
||||
# game/android.rpy:573
|
||||
old "Wi-Fi Pairing Code"
|
||||
@@ -1334,8 +1330,7 @@ translate finnish strings:
|
||||
|
||||
# game/android.rpy:612
|
||||
old "This can be found in 'List Devices'."
|
||||
# Automatic translation.
|
||||
new "Tämä löytyy kohdasta 'List Devices'."
|
||||
new "Tämä löytyy kohdasta 'listaa laitteet'."
|
||||
|
||||
# game/android.rpy:632
|
||||
old "Cleaning up Android project."
|
||||
@@ -1364,8 +1359,7 @@ translate finnish strings:
|
||||
|
||||
# game/androidstrings.rpy:12
|
||||
old "Creating assets directory."
|
||||
# Automatic translation.
|
||||
new "Varallisuushakemiston luominen."
|
||||
new "Materiaalihakemiston luominen."
|
||||
|
||||
# game/androidstrings.rpy:13
|
||||
old "Packaging internal data."
|
||||
@@ -1389,13 +1383,11 @@ translate finnish strings:
|
||||
|
||||
# game/androidstrings.rpy:17
|
||||
old "Installing the bundle appears to have failed."
|
||||
# Automatic translation.
|
||||
new "Nipun asentaminen näyttää epäonnistuneen."
|
||||
new "Paketin asentaminen näyttää epäonnistuneen."
|
||||
|
||||
# game/androidstrings.rpy:18
|
||||
old "Launching app."
|
||||
# Automatic translation.
|
||||
new "Sovelluksen käynnistäminen."
|
||||
new "Sovellus käynnistyy."
|
||||
|
||||
# game/androidstrings.rpy:19
|
||||
old "Launching the app appears to have failed."
|
||||
@@ -1409,8 +1401,7 @@ translate finnish strings:
|
||||
|
||||
# game/androidstrings.rpy:21
|
||||
old "What is the full name of your application? This name will appear in the list of installed applications."
|
||||
# Automatic translation.
|
||||
new "Mikä on hakemuksesi koko nimi? Tämä nimi näkyy asennettujen sovellusten luettelossa."
|
||||
new "Mikä on sovelluksesi koko nimi? Tämä nimi näkyy asennettujen sovellusten luettelossa."
|
||||
|
||||
# game/androidstrings.rpy:22
|
||||
old "What is the short name of your application? This name will be used in the launcher, and for application shortcuts."
|
||||
@@ -1454,8 +1445,7 @@ translate finnish strings:
|
||||
|
||||
# game/androidstrings.rpy:30
|
||||
old "What is the application's version?\n\nThis should be the human-readable version that you would present to a person. It must contain only numbers and dots."
|
||||
# Automatic translation.
|
||||
new "Mikä on sovelluksen versio?\n\nTämän pitäisi olla ihmiselle luettava versio, jonka esittäisit henkilölle. Sen on sisällettävä vain numeroita ja pisteitä."
|
||||
new "Mikä on sovelluksen versio?\n\nTämän pitäisi olla ihmisen luettava versio, jonka voisi näyttää henkilölle. Sen on sisällettävä vain numeroita ja pisteitä."
|
||||
|
||||
# game/androidstrings.rpy:31
|
||||
old "The version number must contain only numbers and dots."
|
||||
@@ -1475,7 +1465,7 @@ translate finnish strings:
|
||||
# game/androidstrings.rpy:34
|
||||
old "How would you like your application to be displayed?"
|
||||
# Automatic translation.
|
||||
new "Miten haluat, että hakemuksesi näytetään?"
|
||||
new "Miten haluat, että sovelluksesi näytetään?"
|
||||
|
||||
# game/androidstrings.rpy:35
|
||||
old "In landscape orientation."
|
||||
@@ -1499,21 +1489,19 @@ translate finnish strings:
|
||||
|
||||
# game/androidstrings.rpy:39
|
||||
old "Google Play."
|
||||
new "Google Play."
|
||||
new "Google Playn."
|
||||
|
||||
# game/androidstrings.rpy:40
|
||||
old "Amazon App Store."
|
||||
new "Amazon App Store."
|
||||
new "Amazon App Storen."
|
||||
|
||||
# game/androidstrings.rpy:41
|
||||
old "Both, in one app."
|
||||
# Automatic translation.
|
||||
new "Molemmat yhdessä sovelluksessa."
|
||||
new "Molempien yhdessä sovelluksessa."
|
||||
|
||||
# game/androidstrings.rpy:42
|
||||
old "Neither."
|
||||
# Automatic translation.
|
||||
new "Ei kumpaakaan."
|
||||
new "En kummankaan."
|
||||
|
||||
# game/androidstrings.rpy:43
|
||||
old "Do you want to automatically update the Java source code?"
|
||||
@@ -1537,8 +1525,7 @@ translate finnish strings:
|
||||
|
||||
# game/androidstrings.rpy:47
|
||||
old "I'm compiling a short test program, to see if you have a working JDK on your system."
|
||||
# Automatic translation.
|
||||
new "Kokoonpanen lyhyen testiohjelman nähdäkseni, onko järjestelmässäsi toimiva JDK."
|
||||
new "Rakennan lyhyen testiohjelman nähdäkseni, onko järjestelmässäsi toimiva JDK."
|
||||
|
||||
# game/androidstrings.rpy:48
|
||||
old "I was unable to use javac to compile a test file. If you haven't installed the Java Development Kit yet, please download it from:\n\n{a=https://adoptium.net/?variant=openjdk8}https://adoptium.net/?variant=openjdk8{/a}\n\nThe JDK is different from the JRE, so it's possible you have Java without having the JDK. Please make sure you installed the 'JavaSoft (Oracle) registry keys'.\n\nWithout a working JDK, I can't continue."
|
||||
@@ -1647,8 +1634,7 @@ translate finnish strings:
|
||||
|
||||
# game/androidstrings.rpy:70
|
||||
old "I can create a bundle signing key for you. This key is required to build an Android App Bundle (AAB) for upload to Google Play.\n\nDo you want to create a key?"
|
||||
# Automatic translation.
|
||||
new "Voin luoda sinulle nipun allekirjoitusavaimen. Tätä avainta tarvitaan Android-sovelluspaketin (AAB) rakentamiseen Google Playyn lataamista varten.\n\nHaluatko luoda avaimen?"
|
||||
new "Voin luoda sinulle paketin allekirjoitusavaimen. Tätä avainta tarvitaan Android-sovelluspaketin (AAB) rakentamiseen Google Playyn lataamista varten.\n\nHaluatko luoda avaimen?"
|
||||
|
||||
# game/androidstrings.rpy:71
|
||||
old "I will create the key in the bundle.keystore file.\n\nYou need to back this file up. If you lose it, you will not be able to upgrade your application.\n\nYou also need to keep the key safe. If evil people get this file, they could make fake versions of your application, and potentially steal your users' data.\n\nWill you make a backup of bundle.keystore, and keep it in a safe place?"
|
||||
@@ -1682,13 +1668,11 @@ translate finnish strings:
|
||||
|
||||
# game/distribute.rpy:1278
|
||||
old "Signing the Macintosh application...\n(This may take a long time.)"
|
||||
# Automatic translation.
|
||||
new "Macintosh-sovelluksen allekirjoittaminen...\n(Tämä voi kestää kauan.)"
|
||||
new "Macintosh-sovellusta allekirjoitetaan...\n(Tämä voi kestää kauan.)"
|
||||
|
||||
# game/distribute.rpy:1745
|
||||
old "Copying files..."
|
||||
# Automatic translation.
|
||||
new "Tiedostojen kopiointi..."
|
||||
new "Tiedostoja kopioidaan..."
|
||||
|
||||
# game/distribute_gui.rpy:157
|
||||
old "Build Distributions: [project.current.display_name!q]"
|
||||
@@ -1697,8 +1681,7 @@ translate finnish strings:
|
||||
|
||||
# game/distribute_gui.rpy:195
|
||||
old "Update old-game"
|
||||
# Automatic translation.
|
||||
new "Vanhan pelin päivitys"
|
||||
new "Päivitä old-game"
|
||||
|
||||
# game/distribute_gui.rpy:231
|
||||
old "(DLC)"
|
||||
@@ -1744,8 +1727,7 @@ translate finnish strings:
|
||||
|
||||
# game/editor.rpy:196
|
||||
old "Up to 150 MB download required."
|
||||
# Automatic translation.
|
||||
new "Tarvitaan enintään 150 Mt:n lataus."
|
||||
new "Jopa 150 Mt:n lataus vaaditaan."
|
||||
|
||||
# game/editor.rpy:211
|
||||
old "jEdit"
|
||||
@@ -1758,13 +1740,11 @@ translate finnish strings:
|
||||
|
||||
# game/editor.rpy:220
|
||||
old "Uses a copy of Visual Studio Code that you have installed outside of Ren'Py. It's recommended you install the language-renpy extension to add support for Ren'Py files."
|
||||
# Automatic translation.
|
||||
new "Käyttää kopiota Visual Studio Code -ohjelmasta, jonka olet asentanut Ren'Py:n ulkopuolelle. On suositeltavaa asentaa language-renpy-laajennus lisätäksesi tuen Ren'Py-tiedostoille."
|
||||
new "Käyttää kopiota Visual Studio Code -ohjelmasta, jonka olet asentanut Ren'Py:n ulkopuolelle. On suositeltavaa asentaa language-renpy -laajennus lisätäksesi tuen Ren'Py-tiedostoille."
|
||||
|
||||
# game/editor.rpy:226
|
||||
old "System Editor"
|
||||
# Automatic translation.
|
||||
new "Järjestelmäeditori"
|
||||
new "Järjestelmän editori"
|
||||
|
||||
# game/editor.rpy:245
|
||||
old "None"
|
||||
@@ -1778,8 +1758,7 @@ translate finnish strings:
|
||||
|
||||
# game/front_page.rpy:58
|
||||
old "PROJECTS:"
|
||||
# Automatic translation.
|
||||
new "HANKKEET:"
|
||||
new "PROJEKTIT:"
|
||||
|
||||
# game/front_page.rpy:165
|
||||
old "audio"
|
||||
@@ -1787,8 +1766,7 @@ translate finnish strings:
|
||||
|
||||
# game/front_page.rpy:182
|
||||
old "Open project"
|
||||
# Automatic translation.
|
||||
new "Avoin hanke"
|
||||
new "Avaa projekti"
|
||||
|
||||
# game/front_page.rpy:188
|
||||
old "Actions"
|
||||
@@ -1845,13 +1823,11 @@ translate finnish strings:
|
||||
|
||||
# game/gui7.rpy:424
|
||||
old "creating a new project"
|
||||
# Automatic translation.
|
||||
new "uuden projektin luominen"
|
||||
new "uutta projektia luodaan"
|
||||
|
||||
# game/gui7.rpy:428
|
||||
old "activating the new project"
|
||||
# Automatic translation.
|
||||
new "uuden projektin aktivointi"
|
||||
new "uutta projektia aktivoidaan"
|
||||
|
||||
# game/install.rpy:33
|
||||
old "Could not install [name!t], as a file matching [zipglob] was not found in the Ren'Py SDK directory."
|
||||
@@ -1860,13 +1836,12 @@ translate finnish strings:
|
||||
|
||||
# game/install.rpy:79
|
||||
old "Successfully installed [name!t]."
|
||||
# Automatic translation.
|
||||
new "Asennettu onnistuneesti [name!t]."
|
||||
new "[name!t] asennettu onnistuneesti."
|
||||
|
||||
# game/install.rpy:111
|
||||
old "This screen allows you to install libraries that can't be distributed with Ren'Py. Some of these libraries may require you to agree to a third-party license before being used or distributed."
|
||||
# Automatic translation.
|
||||
new "Tällä näytöllä voit asentaa kirjastoja, joita ei voi jakaa Ren'Py:n mukana. Jotkin näistä kirjastoista saattavat vaatia, että hyväksyt kolmannen osapuolen lisenssin ennen käyttöä tai jakelua."
|
||||
new "Tällä näytöllä voit asentaa kirjastoja joita ei voi jakaa Ren'Py:n mukana. Jotkin näistä kirjastoista saattavat vaatia, että hyväksyt kolmannen osapuolen lisenssin ennen käyttöä tai jakelua."
|
||||
|
||||
# game/install.rpy:117
|
||||
old "Install Steam Support"
|
||||
@@ -1885,8 +1860,7 @@ translate finnish strings:
|
||||
|
||||
# game/install.rpy:142
|
||||
old "Install Live2D Cubism SDK for Native"
|
||||
# Automatic translation.
|
||||
new "Asenna Live2D Cubism SDK for Native -ohjelmisto"
|
||||
new "Asenna Live2D Cubism SDK for Native"
|
||||
|
||||
# game/install.rpy:156
|
||||
old "Install Libraries"
|
||||
@@ -1910,8 +1884,7 @@ translate finnish strings:
|
||||
|
||||
# game/installer.rpy:10
|
||||
old "Downloading [extension.download_file]."
|
||||
# Automatic translation.
|
||||
new "Lataaminen [extension.download_file]."
|
||||
new "Ladataan [extension.download_file]."
|
||||
|
||||
# game/installer.rpy:11
|
||||
old "Could not download [extension.download_file] from [extension.download_url]:\n{b}[extension.download_error]"
|
||||
@@ -1929,13 +1902,12 @@ translate finnish strings:
|
||||
|
||||
# game/interface.rpy:141
|
||||
old "Ren'Py Sponsor Information"
|
||||
# Automatic translation.
|
||||
new "Ren'Py sponsorin tiedot"
|
||||
new "Ren'Pyn sponsoritiedot"
|
||||
|
||||
# game/interface.rpy:385
|
||||
old "opening the log file"
|
||||
# Automatic translation.
|
||||
new "lokitiedoston avaaminen"
|
||||
new "lokitiedostoa avataan"
|
||||
|
||||
# game/ios.rpy:269
|
||||
old "iOS: [project.current.display_name!q]"
|
||||
@@ -1948,8 +1920,7 @@ translate finnish strings:
|
||||
|
||||
# game/itch.rpy:45
|
||||
old "Downloading the itch.io butler."
|
||||
# Automatic translation.
|
||||
new "Itch.io-hovimestarin lataaminen."
|
||||
new "Ladataan itch.io'n butler-ohjelmaa."
|
||||
|
||||
# game/navigation.rpy:168
|
||||
old "Navigate: [project.current.display_name!q]"
|
||||
@@ -1958,8 +1929,7 @@ translate finnish strings:
|
||||
|
||||
# game/new_project.rpy:81
|
||||
old "You will be creating an [new_project_language]{#this substitution may be localized} language project. Change the launcher language in preferences to create a project in another language."
|
||||
# Automatic translation.
|
||||
new "Teet [new_project_language]{#this substitution may be localized} -kieliprojektin. Vaihda käynnistyskieli asetuksissa, jos haluat luoda projektin toisella kielellä."
|
||||
new "Luot [new_project_language]{#this substitution may be localized} -kielisen projektin. Vaihda käynnistyskieli asetuksissa, jos haluat luoda projektin toisella kielellä."
|
||||
|
||||
# game/preferences.rpy:106
|
||||
old "General"
|
||||
@@ -1968,13 +1938,11 @@ translate finnish strings:
|
||||
|
||||
# game/preferences.rpy:107
|
||||
old "Options"
|
||||
# Automatic translation.
|
||||
new "Vaihtoehdot"
|
||||
new "Asetukset"
|
||||
|
||||
# game/preferences.rpy:224
|
||||
old "Sponsor message"
|
||||
# Automatic translation.
|
||||
new "Sponsorin viesti"
|
||||
new "Sponsoriviesti"
|
||||
|
||||
# game/preferences.rpy:227
|
||||
old "Daily check for update"
|
||||
@@ -1983,8 +1951,7 @@ translate finnish strings:
|
||||
|
||||
# game/preferences.rpy:246
|
||||
old "Launcher Theme:"
|
||||
# Automatic translation.
|
||||
new "Käynnistin Teema:"
|
||||
new "Käynnistimen Teema:"
|
||||
|
||||
# game/preferences.rpy:250
|
||||
old "Default theme"
|
||||
@@ -2003,8 +1970,7 @@ translate finnish strings:
|
||||
|
||||
# game/preferences.rpy:256
|
||||
old "Information about creating a custom theme can be found {a=https://www.renpy.org/doc/html/skins.html}in the Ren'Py Documentation{/a}."
|
||||
# Automatic translation.
|
||||
new "Tietoa mukautetun teeman luomisesta löytyy {a=https://www.renpy.org/doc/html/skins.html}Ren'Py Documentation -dokumentaatiosta{/a}."
|
||||
new "Tietoa mukautetun teeman luomisesta löytyy {a=https://www.renpy.org/doc/html/skins.html}Ren'Pyn dokumentaatiosta{/a}."
|
||||
|
||||
# game/preferences.rpy:273
|
||||
old "Install Libraries:"
|
||||
@@ -2013,18 +1979,15 @@ translate finnish strings:
|
||||
|
||||
# game/preferences.rpy:300
|
||||
old "Reset window size"
|
||||
# Automatic translation.
|
||||
new "Nollaa ikkunan koko"
|
||||
new "Palauta ikkunan oletuskoko"
|
||||
|
||||
# game/preferences.rpy:301
|
||||
old "Clean temporary files"
|
||||
# Automatic translation.
|
||||
new "Puhdista väliaikaiset tiedostot"
|
||||
new "Poista väliaikaiset tiedostot"
|
||||
|
||||
# game/preferences.rpy:308
|
||||
old "Cleaning temporary files..."
|
||||
# Automatic translation.
|
||||
new "Väliaikaisten tiedostojen puhdistaminen..."
|
||||
new "Poistetaan väliaikaisia tiedostoja..."
|
||||
|
||||
# game/preferences.rpy:338
|
||||
old "{#in language font}Welcome! Please choose a language"
|
||||
@@ -2033,8 +1996,7 @@ translate finnish strings:
|
||||
|
||||
# game/preferences.rpy:373
|
||||
old "{#in language font}Start using Ren'Py in [lang_name]"
|
||||
# Automatic translation.
|
||||
new "{#in language font}Aloita Ren'Py:n käyttö [lang_name]"
|
||||
new "{#in language font}Aloita Ren'Py:n käyttö kielellä [lang_name]"
|
||||
|
||||
# game/project.rpy:46
|
||||
old "Lint checks your game for potential mistakes, and gives you statistics."
|
||||
@@ -2053,8 +2015,7 @@ translate finnish strings:
|
||||
|
||||
# game/translations.rpy:342
|
||||
old "Extract Dialogue: [project.current.display_name!q]"
|
||||
# Automatic translation.
|
||||
new "Ote vuoropuhelusta: [project.current.display_name!q]"
|
||||
new "Kerää dialogi: [project.current.display_name!q]"
|
||||
|
||||
# game/translations.rpy:391
|
||||
old "Language (or None for the default language):"
|
||||
@@ -2073,21 +2034,19 @@ translate finnish strings:
|
||||
|
||||
# game/updater.rpy:69
|
||||
old "Prerelease (Ren'Py 8, Python 3)"
|
||||
new "Prerelease (Ren'Py 8, Python 3)"
|
||||
new "Esijulkaisu (Ren'Py 8, Python 3)"
|
||||
|
||||
# game/updater.rpy:70
|
||||
old "Prerelease (Ren'Py 7, Python 2)"
|
||||
new "Prerelease (Ren'Py 7, Python 2)"
|
||||
new "Esijulkaisu (Ren'Py 7, Python 2)"
|
||||
|
||||
# game/updater.rpy:77
|
||||
old "Nightly (Ren'Py 8, Python 3)"
|
||||
# Automatic translation.
|
||||
new "Öisin (Ren'Py 8, Python 3)"
|
||||
new "Nightly (Ren'Py 8, Python 3)"
|
||||
|
||||
# game/updater.rpy:78
|
||||
old "Nightly (Ren'Py 7, Python 2)"
|
||||
# Automatic translation.
|
||||
new "Öisin (Ren'Py 7, Python 2)"
|
||||
new "Nightly (Ren'Py 7, Python 2)"
|
||||
|
||||
# game/updater.rpy:108
|
||||
old "The update channel controls the version of Ren'Py the updater will download."
|
||||
@@ -2115,23 +2074,19 @@ translate finnish strings:
|
||||
|
||||
# game/updater.rpy:215
|
||||
old "Fetching the list of update channels"
|
||||
# Automatic translation.
|
||||
new "Päivityskanavien luettelon hakeminen"
|
||||
new "Haetaan päivityskanavien luetteloa"
|
||||
|
||||
# game/updater.rpy:220
|
||||
old "downloading the list of update channels"
|
||||
# Automatic translation.
|
||||
new "päivityskanavien luettelon lataaminen"
|
||||
new "ladataan päivityskanavien luetteloa"
|
||||
|
||||
# game/web.rpy:428
|
||||
old "Preparing progressive download"
|
||||
# Automatic translation.
|
||||
new "Progressiivisen latauksen valmistelu"
|
||||
new "Valmistellaan progressiivista latausta"
|
||||
|
||||
# game/web.rpy:485
|
||||
old "Creating package..."
|
||||
# Automatic translation.
|
||||
new "Paketin luominen..."
|
||||
new "Luodaan pakettia..."
|
||||
|
||||
# game/web.rpy:505
|
||||
old "Web: [project.current.display_name!q]"
|
||||
@@ -2167,3 +2122,11 @@ translate finnish strings:
|
||||
# Automatic translation.
|
||||
new "Ennen verkkosovellusten pakkaamista sinun on ladattava RenPyWeb, Ren'Pyn verkkotuki. Haluatko ladata RenPyWebin nyt?"
|
||||
|
||||
|
||||
translate finnish strings:
|
||||
|
||||
# game/updater.rpy:79
|
||||
old "A nightly build of fixes to the release version of Ren'Py."
|
||||
# Automatic translation.
|
||||
new "Yöllinen versio, joka sisältää korjauksia Ren'Pyn julkaisuversioon."
|
||||
|
||||
|
||||
@@ -731,7 +731,7 @@
|
||||
|
||||
# renpy/common/_developer/developer.rpym:57
|
||||
old "Show Image Load Log (F4)"
|
||||
new "Montrer le log ne chargement des images (F4)"
|
||||
new "Afficher le log de chargement des images (F4)"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:60
|
||||
old "Hide Image Load Log (F4)"
|
||||
|
||||
@@ -1108,6 +1108,14 @@
|
||||
old "Release"
|
||||
new "Stable"
|
||||
|
||||
# game/updater.rpy:64
|
||||
old "Release (Ren'Py 8, Python 3)"
|
||||
new "Stable (Ren'Py 8, Python 3)"
|
||||
|
||||
# game/updater.rpy:65
|
||||
old "Release (Ren'Py 7, Python 2)"
|
||||
new "Stable (Ren'Py 7, Python 2)"
|
||||
|
||||
# updater.rpy:97
|
||||
old "{b}Recommended.{/b} The version of Ren'Py that should be used in all newly-released games."
|
||||
new "{b}Recommandé.{/b} La version de Ren’Py qui devrait être utilisée pour tous les jeux récemment sortis."
|
||||
@@ -1116,6 +1124,14 @@
|
||||
old "Prerelease"
|
||||
new "Pré-stable"
|
||||
|
||||
# game/updater.rpy:69
|
||||
old "Prerelease (Ren'Py 8, Python 3)"
|
||||
new "Pré-stable (Ren'Py 8, Python 3)"
|
||||
|
||||
# game/updater.rpy:70
|
||||
old "Prerelease (Ren'Py 7, Python 2)"
|
||||
new "Pré-stable (Ren'Py 7, Python 2)"
|
||||
|
||||
# updater.rpy:108
|
||||
old "A preview of the next version of Ren'Py that can be used for testing and taking advantage of new features, but not for final releases of games."
|
||||
new "Un aperçu de la prochaine version de Ren’Py qui peut être utilisée pour faire des tests et profiter de toutes nouvelles fonctionnalités, mais pas pour créer de nouveaux jeux."
|
||||
@@ -1132,9 +1148,33 @@
|
||||
old "Nightly"
|
||||
new "Journalière"
|
||||
|
||||
# game/updater.rpy:77
|
||||
old "Nightly (Ren'Py 8, Python 3)"
|
||||
new "Journalière (Ren'Py 8, Python 3)"
|
||||
|
||||
# game/updater.rpy:78
|
||||
old "Nightly (Ren'Py 7, Python 2)"
|
||||
new "Journalière (Ren'Py 7, Python 2)"
|
||||
|
||||
# updater.rpy:132
|
||||
old "The bleeding edge of Ren'Py development. This may have the latest features, or might not run at all."
|
||||
new "Les toutes dernières version de Ren’Py encore en développement. Vous pouvez alors utiliser les toutes dernières fonctionnalités, mais le logiciel peut également ne pas s’exécuter du tout."
|
||||
new "La toute dernière version de Ren’Py, encore en développement. Elle peut contenir les toutes dernières fonctionnalités, ou alors ne pas marcher du tout."
|
||||
|
||||
# game/updater.rpy:76
|
||||
old "Nightly Fix"
|
||||
new "Journalière Corrective"
|
||||
|
||||
# game/updater.rpy:77
|
||||
old "Nightly Fix (Ren'Py 8, Python 3)"
|
||||
new "Journalière Corrective (Ren'Py 8, Python 3)"
|
||||
|
||||
# game/updater.rpy:78
|
||||
old "Nightly Fix (Ren'Py 7, Python 2)"
|
||||
new "Journalière Corrective (Ren'Py 7, Python 2)"
|
||||
|
||||
# game/updater.rpy:79
|
||||
old "A nightly build of fixes to the release version of Ren'Py."
|
||||
new "Une version journalière qui corrige les bugs de la dernière version stable."
|
||||
|
||||
# updater.rpy:152
|
||||
old "An error has occured:"
|
||||
@@ -1550,7 +1590,7 @@
|
||||
|
||||
# game/gui7.rpy:339
|
||||
old "Custom. The GUI is optimized for a 16:9 aspect ratio."
|
||||
new "Personnalisé. Le GUI est optimié pour un ratio de cadre 16:9."
|
||||
new "Personnalisé. Le GUI est optimisé pour un ratio de cadre 16:9."
|
||||
|
||||
# game/gui7.rpy:355
|
||||
old "WIDTH"
|
||||
@@ -2044,30 +2084,6 @@
|
||||
old "Install Libraries:"
|
||||
new "Installer des bibliothèques :"
|
||||
|
||||
# game/updater.rpy:64
|
||||
old "Release (Ren'Py 8, Python 3)"
|
||||
new "Stable (Ren'Py 8, Python 3)"
|
||||
|
||||
# game/updater.rpy:65
|
||||
old "Release (Ren'Py 7, Python 2)"
|
||||
new "Stable (Ren'Py 7, Python 2)"
|
||||
|
||||
# game/updater.rpy:69
|
||||
old "Prerelease (Ren'Py 8, Python 3)"
|
||||
new "Pré-stable (Ren'Py 8, Python 3)"
|
||||
|
||||
# game/updater.rpy:70
|
||||
old "Prerelease (Ren'Py 7, Python 2)"
|
||||
new "Pré-stable (Ren'Py 7, Python 2)"
|
||||
|
||||
# game/updater.rpy:77
|
||||
old "Nightly (Ren'Py 8, Python 3)"
|
||||
new "Journalière (Ren'Py 8, Python 3)"
|
||||
|
||||
# game/updater.rpy:78
|
||||
old "Nightly (Ren'Py 7, Python 2)"
|
||||
new "Journalière (Ren'Py 7, Python 2)"
|
||||
|
||||
# game/preferences.rpy:327
|
||||
old "{#in language font}Welcome! Please choose a language"
|
||||
new "{font=fonts/Roboto-Light.ttf}Bienvenue ! Choisissez une langue{/font}"
|
||||
@@ -2131,3 +2147,23 @@
|
||||
# game/androidstrings.rpy:69
|
||||
old "I found a bundle.keystore file in the rapt directory. Do you want to use this file?"
|
||||
new "J'ai trouvé un fichier bundle.keystore dans le dossier \"rapt\". Voulez-vous l'utiliser ?"
|
||||
|
||||
# game/choose_directory.rpy:72
|
||||
old "No directory was selected, but one is required."
|
||||
new "Un chemin d'accès est nécessaire, mais aucun n'a été fourni."
|
||||
|
||||
# game/choose_directory.rpy:80
|
||||
old "The selected directory does not exist."
|
||||
new "Le dossier sélectionné n'existe pas."
|
||||
|
||||
# game/choose_directory.rpy:82
|
||||
old "The selected directory is not writable."
|
||||
new "Le dossier sélectionné n'est pas ouvert en écriture."
|
||||
|
||||
# game/distribute.rpy:554
|
||||
old "This may be derived from build.name and config.version or build.version."
|
||||
new "Cette variable peut être dérivée de build.name, et de config.version ou build.version."
|
||||
|
||||
# game/new_project.rpy:66
|
||||
old "Warning : you are using Ren'Py 7. It is recommended to start new projects using Ren'Py 8 instead."
|
||||
new "Attention : vous utilisez Ren'Py 7. Il est recommandé d'utiliser Ren'Py 8 pour de nouveaux projets."
|
||||
|
||||
@@ -134,7 +134,7 @@ translate german strings:
|
||||
# gui.rpy:96
|
||||
old "## Dialogue"
|
||||
# Automatic translation.
|
||||
new "*Dialog"
|
||||
new "## Dialog"
|
||||
|
||||
# gui.rpy:98
|
||||
old "## These variables control how dialogue is displayed on the screen one line at a time."
|
||||
@@ -576,4 +576,3 @@ translate german strings:
|
||||
old "## Change the size and spacing of various things."
|
||||
# Automatic translation.
|
||||
new "## Ändern Sie die Größe und die Abstände verschiedener Dinge."
|
||||
|
||||
|
||||
@@ -2201,3 +2201,11 @@ translate german strings:
|
||||
# Automatic translation.
|
||||
new "Paket erstellen..."
|
||||
|
||||
|
||||
translate german strings:
|
||||
|
||||
# game/updater.rpy:79
|
||||
old "A nightly build of fixes to the release version of Ren'Py."
|
||||
# Automatic translation.
|
||||
new "Ein nächtlicher Build mit Korrekturen für die Release-Version von Ren'Py."
|
||||
|
||||
|
||||
@@ -207,11 +207,6 @@ translate german strings:
|
||||
# Automatic translation.
|
||||
new "## ** passt auf alle Zeichen, auch auf das Verzeichnis-Trennzeichen."
|
||||
|
||||
# options.rpy:173
|
||||
old "## For example, \"*.txt\" matches txt files in the base directory, \"game/**.ogg\" matches ogg files in the game directory or any of its subdirectories, and \"**.psd\" matches psd files anywhere in the project."
|
||||
# Automatic translation.
|
||||
new "*.txt\" findet beispielsweise txt-Dateien im Basisverzeichnis, \"game/**.ogg\" findet ogg-Dateien im Spielverzeichnis oder einem seiner Unterverzeichnisse und \"**.psd\" findet psd-Dateien überall im Projekt."
|
||||
|
||||
# options.rpy:177
|
||||
old "## Classify files as None to exclude them from the built distributions."
|
||||
# Automatic translation.
|
||||
@@ -237,9 +232,6 @@ translate german strings:
|
||||
# Automatic translation.
|
||||
new "## Der mit einem itch.io-Projekt verbundene Benutzername und Projektname, getrennt durch einen Schrägstrich."
|
||||
|
||||
|
||||
translate german strings:
|
||||
|
||||
# gui/game/options.rpy:31
|
||||
old "## Text that is placed on the game's about screen. Place the text between the triple-quotes, and leave a blank line between paragraphs."
|
||||
# Automatic translation.
|
||||
@@ -263,4 +255,3 @@ translate german strings:
|
||||
old "## A Google Play license key is required to perform in-app purchases. It can be found in the Google Play developer console, under \"Monetize\" > \"Monetization Setup\" > \"Licensing\"."
|
||||
# Automatic translation.
|
||||
new "## Für In-App-Käufe ist ein Google Play-Lizenzschlüssel erforderlich. Sie finden ihn in der Google Play-Entwicklerkonsole unter \"Monetize\" > \"Monetization Setup\" > \"Licensing\"."
|
||||
|
||||
|
||||
@@ -2210,3 +2210,11 @@ translate greek strings:
|
||||
# Automatic translation.
|
||||
new "Πριν συσκευάσετε εφαρμογές ιστού, θα πρέπει να κατεβάσετε το RenPyWeb, την υποστήριξη ιστού της Ren'Py. Θα θέλατε να κατεβάσετε το RenPyWeb τώρα;"
|
||||
|
||||
|
||||
translate greek strings:
|
||||
|
||||
# game/updater.rpy:79
|
||||
old "A nightly build of fixes to the release version of Ren'Py."
|
||||
# Automatic translation.
|
||||
new "Ένα νυχτερινό build με διορθώσεις στην έκδοση κυκλοφορίας του Ren'Py."
|
||||
|
||||
|
||||
@@ -207,11 +207,6 @@ translate indonesian strings:
|
||||
# Automatic translation.
|
||||
new "## Tombol Pilihan"
|
||||
|
||||
# gui.rpy:207
|
||||
old "## Choice buttons are used in the in-game menus."
|
||||
# Automatic translation.
|
||||
new "Tombol pilihan ## digunakan dalam menu dalam game."
|
||||
|
||||
# gui.rpy:220
|
||||
old "## File Slot Buttons"
|
||||
# Automatic translation.
|
||||
@@ -267,11 +262,6 @@ translate indonesian strings:
|
||||
# Automatic translation.
|
||||
new "## Jarak spasi di antara pilihan menu."
|
||||
|
||||
# gui.rpy:261
|
||||
old "## Buttons in the navigation section of the main and game menus."
|
||||
# Automatic translation.
|
||||
new "Tombol ## di bagian navigasi pada menu utama dan menu permainan."
|
||||
|
||||
# gui.rpy:264
|
||||
old "## Controls the amount of spacing between preferences."
|
||||
# Automatic translation.
|
||||
@@ -441,11 +431,6 @@ translate indonesian strings:
|
||||
# Automatic translation.
|
||||
new "## Ini mengubah ukuran dan spasi berbagai elemen GUI untuk memastikan elemen-elemen tersebut mudah terlihat pada ponsel."
|
||||
|
||||
# gui.rpy:413
|
||||
old "## Font sizes."
|
||||
# Automatic translation.
|
||||
new "Ukuran huruf ##."
|
||||
|
||||
# gui.rpy:421
|
||||
old "## Adjust the location of the textbox."
|
||||
# Automatic translation.
|
||||
@@ -471,8 +456,6 @@ translate indonesian strings:
|
||||
# Automatic translation.
|
||||
new "## Tombol cepat."
|
||||
|
||||
translate indonesian strings:
|
||||
|
||||
# gui.rpy:17
|
||||
old "## GUI Configuration Variables"
|
||||
new "## Variabel konfigurasi GUI"
|
||||
@@ -532,4 +515,3 @@ translate indonesian strings:
|
||||
old "## The maximum number of NVL-mode entries Ren'Py will display. When more entries than this are to be show, the oldest entry will be removed."
|
||||
# Automatic translation.
|
||||
new "## Jumlah maksimum entri mode NVL yang akan ditampilkan Ren'Py. Ketika lebih banyak entri daripada ini akan ditampilkan, entri tertua akan dihapus."
|
||||
|
||||
|
||||
@@ -2168,3 +2168,11 @@ translate indonesian strings:
|
||||
# Automatic translation.
|
||||
new "Gambar dan musik dapat diunduh saat bermain. File 'progressive_download.txt' akan dibuat sehingga Anda dapat mengonfigurasi perilaku ini."
|
||||
|
||||
|
||||
translate indonesian strings:
|
||||
|
||||
# game/updater.rpy:79
|
||||
old "A nightly build of fixes to the release version of Ren'Py."
|
||||
# Automatic translation.
|
||||
new "Perbaikan versi malam hari untuk versi rilis Ren'Py."
|
||||
|
||||
|
||||
@@ -2169,3 +2169,11 @@ translate italian strings:
|
||||
# Automatic translation.
|
||||
new "Prima di confezionare le applicazioni web, è necessario scaricare RenPyWeb, il supporto web di Ren'Py. Volete scaricare RenPyWeb ora?"
|
||||
|
||||
|
||||
translate italian strings:
|
||||
|
||||
# game/updater.rpy:79
|
||||
old "A nightly build of fixes to the release version of Ren'Py."
|
||||
# Automatic translation.
|
||||
new "Una build notturna di correzioni alla versione di rilascio di Ren'Py."
|
||||
|
||||
|
||||
@@ -343,17 +343,14 @@ translate japanese strings:
|
||||
|
||||
# 00director.rpy:1469
|
||||
old "(statement)"
|
||||
# Automatic translation.
|
||||
new "ね"
|
||||
new "(ステートメント)"
|
||||
|
||||
# 00director.rpy:1470
|
||||
old "(tag)"
|
||||
# Automatic translation.
|
||||
new "(タグ)"
|
||||
|
||||
# 00director.rpy:1471
|
||||
old "(attributes)"
|
||||
# Automatic translation.
|
||||
new "(属性)"
|
||||
|
||||
# 00director.rpy:1472
|
||||
@@ -366,12 +363,10 @@ translate japanese strings:
|
||||
|
||||
# 00director.rpy:1509
|
||||
old "(channel)"
|
||||
# Automatic translation.
|
||||
new "(チャンネル)"
|
||||
|
||||
# 00director.rpy:1510
|
||||
old "(filename)"
|
||||
# Automatic translation.
|
||||
new "(ファイル名)"
|
||||
|
||||
# 00director.rpy:1535
|
||||
@@ -436,8 +431,7 @@ translate japanese strings:
|
||||
|
||||
# _developer\developer.rpym:569
|
||||
old "{size_mb:,.1f} MB in {count} textures."
|
||||
# Automatic translation.
|
||||
new "{size_mb:,.1f} MB を のテクスチャで表示します。{count} "
|
||||
new "{count}つのテクスチャーで{size_mb:,.1f}MB。"
|
||||
|
||||
# 00action_file.rpy:344
|
||||
old "Save slot %s: [text]"
|
||||
@@ -609,8 +603,7 @@ translate japanese strings:
|
||||
|
||||
# 00preferences.rpy:337
|
||||
old "voice sustain"
|
||||
# Automatic translation.
|
||||
new "音声サステイン"
|
||||
new "ボイスの持続"
|
||||
|
||||
# 00preferences.rpy:346
|
||||
old "self voicing"
|
||||
@@ -762,8 +755,7 @@ translate japanese strings:
|
||||
|
||||
# renpy/common/_developer/developer.rpym:90
|
||||
old "[name] [attributes] (hidden)"
|
||||
# Automatic translation.
|
||||
new "[name] [attributes] (隠)"
|
||||
new "[name] [attributes] (非表示)"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:94
|
||||
old "[name] [attributes]"
|
||||
@@ -822,136 +814,109 @@ translate japanese strings:
|
||||
|
||||
# renpy/common/00director.rpy:1745
|
||||
old "Click to toggle attribute, right click to toggle negative attribute."
|
||||
# Automatic translation.
|
||||
new "クリックすると属性が切り替わり、右クリックすると負の属性が切り替わります。"
|
||||
|
||||
# renpy/common/00director.rpy:1768
|
||||
old "Click to set transform, right click to add to transform list."
|
||||
# Automatic translation.
|
||||
new "クリックでトランスフォームを設定し、右クリックでトランスフォームリストに追加します。"
|
||||
|
||||
# renpy/common/00director.rpy:1789
|
||||
old "Click to set, right click to add to behind list."
|
||||
# Automatic translation.
|
||||
new "クリックで設定、右クリックでビハインドリストに追加します。"
|
||||
new "クリックで設定、右クリックで背後のリストに追加します。"
|
||||
|
||||
# renpy/common/00gui.rpy:456
|
||||
old "This save was created on a different device. Maliciously constructed save files can harm your computer. Do you trust this save's creator and everyone who could have changed the file?"
|
||||
# Automatic translation.
|
||||
new "この保存ファイルは、別のデバイスで作成されたものです。悪意を持って作成された保存ファイルは、あなたのコンピューターに害を及ぼす可能性があります。この保存ファイルの作成者と、ファイルを変更した可能性のあるすべての人を信用しますか?"
|
||||
new "このセーブデータは、別のデバイスで作成されたものです。悪意を持って作成されたセーブデータは、あなたのコンピューターに害を及ぼす可能性があります。このセーブデータの作成者と、セーブデータを変更した可能性のあるすべての人を信用しますか?"
|
||||
|
||||
# renpy/common/00gui.rpy:457
|
||||
old "Do you trust the device the save was created on? You should only choose yes if you are the device's sole user."
|
||||
# Automatic translation.
|
||||
new "保存が作成されたデバイスを信頼しますか?あなたがそのデバイスの唯一のユーザーである場合のみ、「はい」を選択する必要があります。"
|
||||
new "セーブデータが作成されたデバイスを信頼しますか?あなたがそのデバイスの唯一のユーザーである場合のみ、「はい」を選択するべきです。"
|
||||
|
||||
# renpy/common/00preferences.rpy:528
|
||||
old "audio when unfocused"
|
||||
# Automatic translation.
|
||||
new "暈け音"
|
||||
new "バックグラウンドでの音声"
|
||||
|
||||
# renpy/common/00preferences.rpy:537
|
||||
old "web cache preload"
|
||||
# Automatic translation.
|
||||
new "ウェブキャッシュ・プリロード"
|
||||
new "ウェブキャッシュプリロード"
|
||||
|
||||
# renpy/common/00preferences.rpy:552
|
||||
old "voice after game menu"
|
||||
# Automatic translation.
|
||||
new "ゲームメニュー後の音声"
|
||||
new "ゲームメニュー後のボイス"
|
||||
|
||||
# renpy/common/00speechbubble.rpy:344
|
||||
old "Speech Bubble Editor"
|
||||
# Automatic translation.
|
||||
new "スピーチバブルエディター"
|
||||
|
||||
# renpy/common/00speechbubble.rpy:349
|
||||
old "(hide)"
|
||||
# Automatic translation.
|
||||
new "皮"
|
||||
new "(非表示)"
|
||||
|
||||
# renpy/common/00sync.rpy:70
|
||||
old "Sync downloaded."
|
||||
# Automatic translation.
|
||||
new "シンクをダウンロードしました。"
|
||||
new "同期をダウンロードしました。"
|
||||
|
||||
# renpy/common/00sync.rpy:190
|
||||
old "Could not connect to the Ren'Py Sync server."
|
||||
# Automatic translation.
|
||||
new "Ren'Py Syncサーバーに接続できませんでした。"
|
||||
|
||||
# renpy/common/00sync.rpy:192
|
||||
old "The Ren'Py Sync server timed out."
|
||||
# Automatic translation.
|
||||
new "Ren'Py Syncサーバーがタイムアウトした。"
|
||||
new "Ren'Py Syncサーバーがタイムアウトしました。"
|
||||
|
||||
# renpy/common/00sync.rpy:194
|
||||
old "An unknown error occurred while connecting to the Ren'Py Sync server."
|
||||
# Automatic translation.
|
||||
new "Ren'Py Syncサーバーへの接続中に不明なエラーが発生しました。"
|
||||
|
||||
# renpy/common/00sync.rpy:267
|
||||
old "The Ren'Py Sync server does not have a copy of this sync. The sync ID may be invalid, or it may have timed out."
|
||||
# Automatic translation.
|
||||
new "Ren'Py Syncサーバーに、このシンクのコピーがありません。同期IDが無効であるか、タイムアウトした可能性があります。"
|
||||
new "Ren'Py Syncサーバーに、この同期のコピーがありません。同期IDが無効であるか、タイムアウトした可能性があります。"
|
||||
|
||||
# renpy/common/00sync.rpy:409
|
||||
old "Please enter the sync ID you generated.\nNever enter a sync ID you didn't create yourself."
|
||||
# Automatic translation.
|
||||
new "生成したシンクIDを入力してください。\n自分で作成したものでない同期IDは絶対に入力しないでください。"
|
||||
new "生成した同期IDを入力してください。\n自分で作成したものでない同期IDは絶対に入力しないでください。"
|
||||
|
||||
# renpy/common/00sync.rpy:428
|
||||
old "The sync ID is not in the correct format."
|
||||
# Automatic translation.
|
||||
new "シンクIDが正しい形式でない。"
|
||||
new "同期IDが正しい形式ではありません。"
|
||||
|
||||
# renpy/common/00sync.rpy:448
|
||||
old "The sync could not be decrypted."
|
||||
# Automatic translation.
|
||||
new "同期を復号化することができませんでした。"
|
||||
|
||||
# renpy/common/00sync.rpy:471
|
||||
old "The sync belongs to a different game."
|
||||
# Automatic translation.
|
||||
new "同期は別のゲームに所属しています。"
|
||||
new "同期は別のゲームに属しています。"
|
||||
|
||||
# renpy/common/00sync.rpy:476
|
||||
old "The sync contains a file with an invalid name."
|
||||
# Automatic translation.
|
||||
new "シンクに不正な名前のファイルが含まれています。"
|
||||
new "同期に不正な名前のファイルが含まれています。"
|
||||
|
||||
# renpy/common/00sync.rpy:529
|
||||
old "This will upload your saves to the {a=https://sync.renpy.org}Ren'Py Sync Server{/a}.\nDo you want to continue?"
|
||||
# Automatic translation.
|
||||
new "これは、{a=https://sync.renpy.org}Ren'Py Sync Server{/a} にセーブをアップロードします。\n続けますか?"
|
||||
|
||||
# renpy/common/00sync.rpy:558
|
||||
old "Enter Sync ID"
|
||||
# Automatic translation.
|
||||
new "シンクIDを入力する"
|
||||
new "同期IDを入力する"
|
||||
|
||||
# renpy/common/00sync.rpy:569
|
||||
old "This will contact the {a=https://sync.renpy.org}Ren'Py Sync Server{/a}."
|
||||
# Automatic translation.
|
||||
new "これは、{a=https://sync.renpy.org}Ren'Py Sync Server{/a} に連絡します。"
|
||||
|
||||
# renpy/common/00sync.rpy:596
|
||||
old "Sync Success"
|
||||
# Automatic translation.
|
||||
new "シンクサクセス"
|
||||
new "同期成功"
|
||||
|
||||
# renpy/common/00sync.rpy:599
|
||||
old "The Sync ID is:"
|
||||
# Automatic translation.
|
||||
new "シンクIDは"
|
||||
new "同期IDは"
|
||||
|
||||
# renpy/common/00sync.rpy:605
|
||||
old "You can use this ID to download your save on another device.\nThis sync will expire in an hour.\nRen'Py Sync is supported by {a=https://www.renpy.org/sponsors.html}Ren'Py's Sponsors{/a}."
|
||||
# Automatic translation.
|
||||
new "このIDを使って、保存したものを別の端末でダウンロードすることができます。\nこのシンクは1時間後に期限切れとなります。\nRen'Py Sync は{a=https://www.renpy.org/sponsors.html}Ren'Py のスポンサー{/a} によってサポートされています。"
|
||||
new "このIDを使って、セーブデータを別の端末でダウンロードすることができます。\nこの同期は1時間後に期限切れとなります。\nRen'Py Sync は{a=https://www.renpy.org/sponsors.html}Ren'Py のスポンサー{/a} によってサポートされています。"
|
||||
|
||||
# renpy/common/00sync.rpy:631
|
||||
old "Sync Error"
|
||||
# Automatic translation.
|
||||
new "シンクエラー"
|
||||
new "同期エラー"
|
||||
|
||||
|
||||
@@ -187,7 +187,7 @@ translate japanese strings:
|
||||
|
||||
# renpy/common/00console.rpy:814
|
||||
old "watch <expression>: watch a python expression\n watch short: makes the representation of traced expressions short (default)\n watch long: makes the representation of traced expressions as is"
|
||||
new "watch <expression>: python式をウォッチ\n watch short: makes the representation of traced expressions short (default)\n watch long: makes the representation of traced expressions as is"
|
||||
new "watch <expression>: python式をウォッチ\n watch short: トレースされた式を短く表現する (デフォルト)\n watch long: そのままの表現にする"
|
||||
|
||||
# renpy/common/00console.rpy:925
|
||||
old "escape: Enables escaping of unicode symbols in unicode strings."
|
||||
@@ -206,21 +206,17 @@ translate japanese strings:
|
||||
|
||||
# renpy/common/_developer/developer.rpym:51
|
||||
old "Persistent Viewer"
|
||||
# Automatic translation.
|
||||
new "永続的なビューア"
|
||||
new "永続データビューア"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:70
|
||||
old "Speech Bubble Editor (Shift+B)"
|
||||
# Automatic translation.
|
||||
new "スピーチバブルエディター(Shift+B)"
|
||||
|
||||
# renpy/common/00console.rpy:789
|
||||
old "help: show this help\n help <expr>: show signature and documentation of <expr>"
|
||||
# Automatic translation.
|
||||
new "help: この助け舟を見せる\n help <expr>: <expr>の署名とドキュメントを表示する"
|
||||
new "help: このヘルプを表示する\n help <expr>: <expr>の署名とドキュメントを表示する"
|
||||
|
||||
# renpy/common/00console.rpy:813
|
||||
old "Help may display undocumented functions. Please check that the function or\nclass you want to use is documented.\n\n"
|
||||
# Automatic translation.
|
||||
new "ヘルプでは、文書化されていない機能が表示されることがあります。その場合は、その関数または\nを使用したいクラスは、ドキュメントを参照してください。\n\n"
|
||||
new "ヘルプでは、文書化されていない機能が表示されることがあります。ドキュメントで使用したい関数や\nクラスを確認してください。\n\n"
|
||||
|
||||
|
||||
@@ -209,8 +209,7 @@ translate japanese strings:
|
||||
|
||||
# 00gltest.rpy:89
|
||||
old "NPOT"
|
||||
# Automatic translation.
|
||||
new "エヌポット"
|
||||
new "NPOT"
|
||||
|
||||
# 00gltest.rpy:131
|
||||
old "Powersave"
|
||||
|
||||
@@ -462,5 +462,4 @@ translate japanese strings:
|
||||
|
||||
# gui/game/gui.rpy:14
|
||||
old "## Enable checks for invalid or unstable properties in screens or transforms"
|
||||
# Automatic translation.
|
||||
new "## スクリーンやトランスフォームのプロパティが無効または不安定であることをチェックできるようにする。"
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||
# android.rpy:31
|
||||
old "An x86 Java Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
new "Windows では、Android パッケージのビルドに 32-bit の Java 開発キットが必要です。JDK は JRE とは異なるため、JDK が無くても Java が利用できます。\n\n{a=http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html}JDK{/a}のダウンロードとインストールを行い、Ren'Py ランチャーを再起動して下さい。"
|
||||
new "Windows では、Android パッケージのビルドに 32-bit の Java 開発キットが必要です。JDKはJREとは異なるため、JDKがなくてもJavaを使用できる可能性があります。\n\n{a=http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html}JDK{/a}のダウンロードとインストールを行い、Ren'Py ランチャーを再起動して下さい。"
|
||||
|
||||
# android.rpy:32
|
||||
old "RAPT has been installed, but you'll need to install the Android SDK before you can build Android packages. Choose Install SDK to do this."
|
||||
@@ -109,8 +109,7 @@
|
||||
|
||||
# android.rpy:304
|
||||
old "Android: [project.current.name!q]"
|
||||
# Automatic translation.
|
||||
new "Androidです:[project.current.name!q]"
|
||||
new "Android: [project.current.name!q]"
|
||||
|
||||
# android.rpy:324
|
||||
old "Emulation:"
|
||||
@@ -118,18 +117,15 @@
|
||||
|
||||
# android.rpy:333
|
||||
old "Phone"
|
||||
# Automatic translation.
|
||||
new "電話番号"
|
||||
new "スマートフォン"
|
||||
|
||||
# android.rpy:337
|
||||
old "Tablet"
|
||||
# Automatic translation.
|
||||
new "タブレット"
|
||||
|
||||
# android.rpy:341
|
||||
old "Television"
|
||||
# Automatic translation.
|
||||
new "テレビジョン"
|
||||
new "テレビ"
|
||||
|
||||
# android.rpy:353
|
||||
old "Build:"
|
||||
@@ -169,8 +165,7 @@
|
||||
|
||||
# android.rpy:404
|
||||
old "Logcat"
|
||||
# Automatic translation.
|
||||
new "ログキャット"
|
||||
new "Logcat"
|
||||
|
||||
# android.rpy:437
|
||||
old "Before packaging Android apps, you'll need to download RAPT, the Ren'Py Android Packaging Tool. Would you like to download RAPT now?"
|
||||
@@ -438,12 +433,10 @@
|
||||
|
||||
# front_page.rpy:165
|
||||
old "Tutorial"
|
||||
# Automatic translation.
|
||||
new "チュートリアル"
|
||||
|
||||
# front_page.rpy:166
|
||||
old "The Question"
|
||||
# Automatic translation.
|
||||
new "ザ・クエスチョン"
|
||||
|
||||
# front_page.rpy:182
|
||||
@@ -504,13 +497,11 @@
|
||||
|
||||
# front_page.rpy:253
|
||||
old "Android"
|
||||
# Automatic translation.
|
||||
new "アンドロイド"
|
||||
new "Android"
|
||||
|
||||
# front_page.rpy:254
|
||||
old "iOS"
|
||||
# Automatic translation.
|
||||
new "アイオーエス"
|
||||
new "iOS"
|
||||
|
||||
# front_page.rpy:255
|
||||
old "Generate Translations"
|
||||
@@ -698,18 +689,15 @@
|
||||
|
||||
# ios.rpy:211
|
||||
old "iOS: [project.current.name!q]"
|
||||
# Automatic translation.
|
||||
new "iOSです:[project.current.name!q]"
|
||||
new "iOS: [project.current.name!q]"
|
||||
|
||||
# ios.rpy:240
|
||||
old "iPhone"
|
||||
# Automatic translation.
|
||||
new "アイフォン"
|
||||
new "iPhone"
|
||||
|
||||
# ios.rpy:244
|
||||
old "iPad"
|
||||
# Automatic translation.
|
||||
new "アイパッド"
|
||||
new "iPad"
|
||||
|
||||
# ios.rpy:264
|
||||
old "Select Xcode Projects Directory"
|
||||
@@ -737,8 +725,7 @@
|
||||
|
||||
# ios.rpy:354
|
||||
old "XCODE PROJECTS DIRECTORY"
|
||||
# Automatic translation.
|
||||
new "xcodeプロジェクトディレクトリ"
|
||||
new "Xcode プロジェクトディレクトリ"
|
||||
|
||||
# ios.rpy:354
|
||||
old "Please choose the Xcode Projects Directory using the directory chooser.\n{b}The directory chooser may have opened behind this window.{/b}"
|
||||
@@ -1118,7 +1105,6 @@
|
||||
|
||||
# updater.rpy:91
|
||||
old "Release"
|
||||
# Automatic translation.
|
||||
new "リリース"
|
||||
|
||||
# updater.rpy:97
|
||||
@@ -1127,7 +1113,6 @@
|
||||
|
||||
# updater.rpy:102
|
||||
old "Prerelease"
|
||||
# Automatic translation.
|
||||
new "プレリリース"
|
||||
|
||||
# updater.rpy:108
|
||||
@@ -1136,7 +1121,6 @@
|
||||
|
||||
# updater.rpy:114
|
||||
old "Experimental"
|
||||
# Automatic translation.
|
||||
new "実験的"
|
||||
|
||||
# updater.rpy:120
|
||||
@@ -1145,8 +1129,7 @@
|
||||
|
||||
# updater.rpy:126
|
||||
old "Nightly"
|
||||
# Automatic translation.
|
||||
new "夜間"
|
||||
new "ナイトリー"
|
||||
|
||||
# updater.rpy:132
|
||||
old "The bleeding edge of Ren'Py development. This may have the latest features, or might not run at all."
|
||||
@@ -1218,8 +1201,7 @@
|
||||
|
||||
# android.rpy:304
|
||||
old "Android: [project.current.display_name!q]"
|
||||
# Automatic translation.
|
||||
new "Androidです:[project.current.display_name!q]"
|
||||
new "Android: [project.current.display_name!q]"
|
||||
|
||||
# distribute_gui.rpy:157
|
||||
old "Build Distributions: [project.current.display_name!q]"
|
||||
@@ -1231,8 +1213,7 @@
|
||||
|
||||
# ios.rpy:211
|
||||
old "iOS: [project.current.display_name!q]"
|
||||
# Automatic translation.
|
||||
new "iOSです:[project.current.display_name!q]"
|
||||
new "iOS: [project.current.display_name!q]"
|
||||
|
||||
# navigation.rpy:168
|
||||
old "Navigate: [project.current.display_name!q]"
|
||||
@@ -1324,7 +1305,6 @@
|
||||
|
||||
# editor.rpy:338
|
||||
old "Edit [text]."
|
||||
# Automatic translation.
|
||||
new "[text] を編集します。"
|
||||
|
||||
# front_page.rpy:215
|
||||
@@ -1341,7 +1321,7 @@
|
||||
|
||||
# game/android.rpy:31
|
||||
old "A 64-bit/x64 Java [JDK_REQUIREMENT] Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=https://www.renpy.org/jdk/[JDK_REQUIREMENT]}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
new "ウィンドウズでアンドロイドパッケージをビルドするには、 64-bit/x64 Java 8 Development Kit が必要になります。 JDK は JRE とは違うもので、Java には含まれていません。\n\n{a=https://www.renpy.org/jdk/[JDK_REQUIREMENT]}JDK{/a}をダンロード、インストールしてから Ren'Py ランチャーを再起動してください。"
|
||||
new "ウィンドウズでアンドロイドパッケージをビルドするには、 64-bit/x64 Java 8 Development Kit が必要になります。 JDKはJREとは異なるため、JDKがなくてもJavaを使用できる可能性があります。\n\n{a=https://www.renpy.org/jdk/[JDK_REQUIREMENT]}JDK{/a}をダンロード、インストールしてから Ren'Py ランチャーを再起動してください。"
|
||||
|
||||
# game/android.rpy:50
|
||||
old "Selects the Debug build, which can be accessed through Android Studio. Changing between debug and release builds requires an uninstall from your device."
|
||||
@@ -1533,7 +1513,7 @@
|
||||
|
||||
# game/androidstrings.rpy:52
|
||||
old "I was unable to use javac to compile a test file. If you haven't installed the Java Development Kit yet, please download it from:\n\nhttp://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html\n\nThe JDK is different from the JRE, so it's possible you have Java without having the JDK. Without a working JDK, I can't continue."
|
||||
new "テストファイルのコンパイルに javac が利用できません。Java Development Kit をダウンロードしていないなら、\n\nhttp://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html\n\nからダウンロードしてください。 JDK は JRE とは違うもので、Java には含まれていません。JDK がなければ継続できません。"
|
||||
new "テストファイルのコンパイルに javac が利用できません。Java Development Kit をダウンロードしていないなら、\n\nhttp://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html\n\nからダウンロードしてください。 JDKはJREとは異なるため、JDKがなくてもJavaを使用できる可能性があります。 動作するJDKなしには続行できません。"
|
||||
|
||||
# game/androidstrings.rpy:53
|
||||
old "The version of Java on your computer does not appear to be JDK 8, which is the only version supported by the Android SDK. If you need to install JDK 8, you can download it from:\n\nhttp://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html\n\nYou can also set the JAVA_HOME environment variable to use a different version of Java."
|
||||
@@ -1617,12 +1597,10 @@
|
||||
|
||||
# game/front_page.rpy:252
|
||||
old "Web"
|
||||
# Automatic translation.
|
||||
new "ウェブ"
|
||||
|
||||
# game/front_page.rpy:252
|
||||
old "(Beta)"
|
||||
# Automatic translation.
|
||||
new "(ベータ)"
|
||||
|
||||
# game/front_page.rpy:198
|
||||
@@ -1671,8 +1649,7 @@
|
||||
|
||||
# game/web.rpy:118
|
||||
old "Web: [project.current.display_name!q]"
|
||||
# Automatic translation.
|
||||
new "ウェブ[project.current.display_name!q]"
|
||||
new "ウェブ: [project.current.display_name!q]"
|
||||
|
||||
# game/web.rpy:148
|
||||
old "Build Web Application"
|
||||
@@ -1700,8 +1677,7 @@
|
||||
|
||||
# game/web.rpy:164
|
||||
old "Beuc's Patreon"
|
||||
# Automatic translation.
|
||||
new "Beucのパトロン"
|
||||
new "Beucのパトレオン"
|
||||
|
||||
# game/web.rpy:182
|
||||
old "Ren'Py web applications require the entire game to be downloaded to the player's computer before it can start."
|
||||
@@ -1765,7 +1741,7 @@
|
||||
|
||||
# game/android.rpy:35
|
||||
old "A 64-bit/x64 Java 8 Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=https://adoptopenjdk.net/?variant=openjdk8&jvmVariant=hotspot}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
new "WindowsでAndroidパッケージをビルドするには64-bit/x64 Java 8 Development Kitが必要です。JDKはJREとは異り、JDKなしでJavaを利用できます。\n\n{a=https://adoptopenjdk.net/?variant=openjdk8&jvmVariant=hotspot}JDKのダウンロードとインストール{/a}を行い、Ren'Pyランチャーを再起動してください。"
|
||||
new "WindowsでAndroidパッケージをビルドするには64-bit/x64 Java 8 Development Kitが必要です。JDKはJREとは異なるため、JDKがなくてもJavaを使用できる可能性があります。\n\n{a=https://adoptopenjdk.net/?variant=openjdk8&jvmVariant=hotspot}JDKのダウンロードとインストール{/a}を行い、Ren'Pyランチャーを再起動してください。"
|
||||
|
||||
# game/android.rpy:403
|
||||
old "Universal APK"
|
||||
@@ -1973,7 +1949,7 @@
|
||||
|
||||
# game/androidstrings.rpy:43
|
||||
old "I was unable to use javac to compile a test file. If you haven't installed the Java Development Kit yet, please download it from:\n\n{a=https://adoptium.net/?variant=openjdk8}https://adoptium.net/?variant=openjdk8{/a}\n\nThe JDK is different from the JRE, so it's possible you have Java without having the JDK. Please make sure you installed the 'JavaSoft (Oracle) registry keys'.\n\nWithout a working JDK, I can't continue."
|
||||
new "javac を使用してテストファイルをコンパイルできませんでした。Java Development Kitをまだインストールしていないならば:\n\n{a=https://adoptium.net/?variant=openjdk8}https://adoptium.net/?variant=openjdk8{/a}からダウンロードしてください。\n\nJDK は JRE とは異り、JDKなしでJavaを利用できます。 'JavaSoft (Oracle) registry keys'.\n\nをインストールしたか確認してくあさい。JDK, I can't continue."
|
||||
new "javac を使用してテストファイルをコンパイルできませんでした。Java Development Kitをまだインストールしていないならば:\n\n{a=https://adoptium.net/?variant=openjdk8}https://adoptium.net/?variant=openjdk8{/a}からダウンロードしてください。\n\nJDKはJREとは異なるため、JDKがなくてもJavaを使用できる可能性があります。 'JavaSoft (Oracle) registry keys' をインストールしたかどうか確認してください。\n\n動作するJDKなしでは続行できません。"
|
||||
|
||||
# game/androidstrings.rpy:64
|
||||
old "I've opened the directory containing android.keystore and bundle.keystore. Please back them up, and keep them in a safe place."
|
||||
@@ -2021,7 +1997,6 @@
|
||||
|
||||
# game/editor.rpy:220
|
||||
old "Visual Studio Code (System)"
|
||||
# Automatic translation.
|
||||
new "Visual Studio Code(システム)"
|
||||
|
||||
# game/editor.rpy:220
|
||||
@@ -2090,32 +2065,26 @@
|
||||
|
||||
# game/updater.rpy:64
|
||||
old "Release (Ren'Py 8, Python 3)"
|
||||
# Automatic translation.
|
||||
new "リリース(Ren'Py 8、Python 3)"
|
||||
|
||||
# game/updater.rpy:65
|
||||
old "Release (Ren'Py 7, Python 2)"
|
||||
# Automatic translation.
|
||||
new "リリース(Ren'Py 7、Python 2)"
|
||||
|
||||
# game/updater.rpy:69
|
||||
old "Prerelease (Ren'Py 8, Python 3)"
|
||||
# Automatic translation.
|
||||
new "プレリリース(Ren'Py 8、Python 3)"
|
||||
|
||||
# game/updater.rpy:70
|
||||
old "Prerelease (Ren'Py 7, Python 2)"
|
||||
# Automatic translation.
|
||||
new "プレリリース(Ren'Py 7、Python 2)"
|
||||
|
||||
# game/updater.rpy:77
|
||||
old "Nightly (Ren'Py 8, Python 3)"
|
||||
# Automatic translation.
|
||||
new "ナイトリー(Ren'Py 8、Python 3)"
|
||||
|
||||
# game/updater.rpy:78
|
||||
old "Nightly (Ren'Py 7, Python 2)"
|
||||
# Automatic translation.
|
||||
new "ナイトリー(Ren'Py 7、Python 2)"
|
||||
|
||||
# game/web.rpy:344
|
||||
@@ -2130,71 +2099,65 @@ translate japanese strings:
|
||||
|
||||
# game/android.rpy:39
|
||||
old "RAPT has been installed, but a key hasn't been configured. Please generate new keys, or copy android.keystore and bundle.keystore to the base directory."
|
||||
# Automatic translation.
|
||||
new "RAPTはインストールされましたが、キーが設定されていません。新しい鍵を生成するか、android.keystoreとbundle.keystoreをベースディレクトリにコピーしてください。"
|
||||
new "RAPTはインストールされましたが、キーが設定されていません。新しいキーを生成するか、android.keystoreとbundle.keystoreをベースディレクトリにコピーしてください。"
|
||||
|
||||
# game/android.rpy:46
|
||||
old "Attempts to emulate a televison-based Android console.\n\nController input is mapped to the arrow keys, Enter is mapped to the select button, Escape is mapped to the menu button, and PageUp is mapped to the back button."
|
||||
# Automatic translation.
|
||||
new "テレヴィジョンベースのAndroidコンソールのエミュレーションを試みる。\n\nコントローラー入力は矢印キーに、Enterはセレクトボタンに、Escapeはメニューボタンに、PageUpはバックボタンにマッピングされています。"
|
||||
new "テレビベースのAndroidコンソールのエミュレーションを試みる。\n\nコントローラー入力は矢印キーに、Enterはセレクトボタンに、Escapeはメニューボタンに、PageUpはバックボタンにマッピングされています。"
|
||||
|
||||
# game/android.rpy:48
|
||||
old "Downloads and installs the Android SDK and supporting packages."
|
||||
# Automatic translation.
|
||||
new "Android SDKとサポートパッケージのダウンロードとインストールを行います。"
|
||||
|
||||
# game/android.rpy:49
|
||||
old "Generates the keys required to sign the package."
|
||||
# Automatic translation.
|
||||
new "パッケージの署名に必要なキーを生成します。"
|
||||
|
||||
# game/android.rpy:383
|
||||
old "Install SDK"
|
||||
# Automatic translation.
|
||||
new "SDKのインストール"
|
||||
|
||||
# game/android.rpy:387
|
||||
old "Generate Keys"
|
||||
# Automatic translation.
|
||||
new "鍵の生成"
|
||||
new "キーの生成"
|
||||
|
||||
# game/androidstrings.rpy:32
|
||||
old "How much RAM (in GB) do you want to allocate to Gradle?\nThis must be a positive integer number."
|
||||
# Automatic translation.
|
||||
new "Gradleに割り当てるRAMの量(GB)は?\n正の整数値である必要があります。"
|
||||
|
||||
# game/androidstrings.rpy:33
|
||||
old "The RAM size must contain only numbers and be positive."
|
||||
# Automatic translation.
|
||||
new "RAMサイズは、数字のみを含み、正の値でなければならない。"
|
||||
new "RAMサイズは、数字のみを含み、正の値でなければなりません。"
|
||||
|
||||
# game/androidstrings.rpy:63
|
||||
old "I found an android.keystore file in the rapt directory. Do you want to use this file?"
|
||||
# Automatic translation.
|
||||
new "raptディレクトリにandroid.keystoreファイルが見つかりました。このファイルを使用しますか?"
|
||||
|
||||
# game/androidstrings.rpy:66
|
||||
old "\n\nSaying 'No' will prevent key creation."
|
||||
# Automatic translation.
|
||||
new "\n\nいいえ」と答えると、キーが作成できなくなります。"
|
||||
new "\n\n「いいえ」と答えると、キーが作成できなくなります。"
|
||||
|
||||
# game/androidstrings.rpy:69
|
||||
old "I found a bundle.keystore file in the rapt directory. Do you want to use this file?"
|
||||
# Automatic translation.
|
||||
new "raptディレクトリにbundle.keystoreファイルがありました。このファイルを使用しますか?"
|
||||
|
||||
# game/distribute_gui.rpy:231
|
||||
old "(DLC)"
|
||||
# Automatic translation.
|
||||
new "(DLC)の"
|
||||
new "(DLC)"
|
||||
|
||||
# game/project.rpy:46
|
||||
old "Lint checks your game for potential mistakes, and gives you statistics."
|
||||
# Automatic translation.
|
||||
new "Lintは、あなたのゲームに潜在的なミスがないかをチェックし、統計情報を提供します。"
|
||||
|
||||
# game/web.rpy:485
|
||||
old "Creating package..."
|
||||
# Automatic translation.
|
||||
new "パッケージの作成..."
|
||||
|
||||
|
||||
translate japanese strings:
|
||||
|
||||
# game/updater.rpy:79
|
||||
old "A nightly build of fixes to the release version of Ren'Py."
|
||||
# Automatic translation.
|
||||
new "Ren'Py のリリース版に対する修正を行ったナイトリービルドです。"
|
||||
|
||||
|
||||
@@ -23,7 +23,6 @@ translate japanese strings:
|
||||
|
||||
# options.rpy:17
|
||||
old "Ren'Py 7 Default GUI"
|
||||
# Automatic translation.
|
||||
new "Ren'Py 7 デフォルトのGUI"
|
||||
|
||||
# options.rpy:20
|
||||
@@ -120,18 +119,15 @@ translate japanese strings:
|
||||
|
||||
# options.rpy:134
|
||||
old "## Windows: %APPDATA%\\RenPy\\<config.save_directory>"
|
||||
# Automatic translation.
|
||||
new "## Windows: %APPDATA%\\RenPy\\<config.save_directory>。"
|
||||
new "## Windows: %APPDATA%\\RenPy\\<config.save_directory>"
|
||||
|
||||
# options.rpy:136
|
||||
old "## Macintosh: $HOME/Library/RenPy/<config.save_directory>"
|
||||
# Automatic translation.
|
||||
new "## Macintosh: $HOME/Library/RenPy/<config.save_directory>."
|
||||
new "## Macintosh: $HOME/Library/RenPy/<config.save_directory>"
|
||||
|
||||
# options.rpy:138
|
||||
old "## Linux: $HOME/.renpy/<config.save_directory>"
|
||||
# Automatic translation.
|
||||
new "## Linux: $HOME/.renpy/<config.save_directory>."
|
||||
new "## Linux: $HOME/.renpy/<config.save_directory>"
|
||||
|
||||
# options.rpy:140
|
||||
old "## This generally should not be changed, and if it is, should always be a literal string, not an expression."
|
||||
@@ -217,8 +213,7 @@ translate japanese strings:
|
||||
|
||||
# gui/game/options.rpy:203
|
||||
old "## A Google Play license key is required to perform in-app purchases. It can be found in the Google Play developer console, under \"Monetize\" > \"Monetization Setup\" > \"Licensing\"."
|
||||
# Automatic translation.
|
||||
new "## アプリ内課金を行うには、Google Playのライセンスキーが必要です。Google Play開発者コンソールの「マネタイズ」→「マネタイズ設定」→「ライセンス」で確認することができます。"
|
||||
new "## アプリ内課金を行うには、Google Playのライセンスキーが必要です。Google Play開発者コンソールの「収益化」→「収益化のセットアップ」→「ライセンス」で確認することができます。"
|
||||
|
||||
translate japanese strings:
|
||||
|
||||
|
||||
@@ -222,8 +222,7 @@ translate japanese strings:
|
||||
|
||||
# screens.rpy:561
|
||||
old "Version [config.version!t]\n"
|
||||
# Automatic translation.
|
||||
new "バージョン[config.version!t]\n"
|
||||
new "バージョン [config.version!t]\n"
|
||||
|
||||
# screens.rpy:563
|
||||
old "## gui.about is usually set in options.rpy."
|
||||
@@ -439,7 +438,6 @@ translate japanese strings:
|
||||
|
||||
# screens.rpy:1003
|
||||
old "Enter"
|
||||
# Automatic translation.
|
||||
new "エンター"
|
||||
|
||||
# screens.rpy:1004
|
||||
@@ -448,7 +446,6 @@ translate japanese strings:
|
||||
|
||||
# screens.rpy:1007
|
||||
old "Space"
|
||||
# Automatic translation.
|
||||
new "スペース"
|
||||
|
||||
# screens.rpy:1008
|
||||
@@ -465,8 +462,7 @@ translate japanese strings:
|
||||
|
||||
# screens.rpy:1015
|
||||
old "Escape"
|
||||
# Automatic translation.
|
||||
new "エスケープ"
|
||||
new "ESC"
|
||||
|
||||
# screens.rpy:1016
|
||||
old "Accesses the game menu."
|
||||
@@ -490,8 +486,7 @@ translate japanese strings:
|
||||
|
||||
# screens.rpy:1027
|
||||
old "Page Up"
|
||||
# Automatic translation.
|
||||
new "ページアップ"
|
||||
new "Page Up"
|
||||
|
||||
# screens.rpy:1028
|
||||
old "Rolls back to earlier dialogue."
|
||||
@@ -499,8 +494,7 @@ translate japanese strings:
|
||||
|
||||
# screens.rpy:1031
|
||||
old "Page Down"
|
||||
# Automatic translation.
|
||||
new "ページダウン"
|
||||
new "Page Down"
|
||||
|
||||
# screens.rpy:1032
|
||||
old "Rolls forward to later dialogue."
|
||||
@@ -687,7 +681,6 @@ translate japanese strings:
|
||||
|
||||
# screens.rpy:916
|
||||
old "## This determines what tags are allowed to be displayed on the history screen."
|
||||
# Automatic translation.
|
||||
new "## 履歴画面に表示できるタグを決定します。"
|
||||
|
||||
# screens.rpy:1132
|
||||
@@ -715,23 +708,19 @@ translate japanese strings:
|
||||
|
||||
# gui/game/screens.rpy:676
|
||||
old "Upload Sync"
|
||||
# Automatic translation.
|
||||
new "アップロード・シンク"
|
||||
new "同期のアップロード"
|
||||
|
||||
# gui/game/screens.rpy:680
|
||||
old "Download Sync"
|
||||
# Automatic translation.
|
||||
new "シンクのダウンロード"
|
||||
new "同期のダウンロード"
|
||||
|
||||
# gui/game/screens.rpy:1410
|
||||
old "## Bubble screen"
|
||||
# Automatic translation.
|
||||
new "## バブルスクリーン"
|
||||
|
||||
# gui/game/screens.rpy:1412
|
||||
old "## The bubble screen is used to display dialogue to the player when using speech bubbles. The bubble screen takes the same parameters as the say screen, must create a displayable with the id of \"what\", and can create displayables with the \"namebox\", \"who\", and \"window\" ids."
|
||||
# Automatic translation.
|
||||
new "## バブルスクリーンは、スピーチバブルを使用する際に、プレイヤーにダイアログを表示するために使用されます。バブルスクリーンはセイスクリーンと同じパラメータを持ち、idが \"what \"のdisplayableを作成しなければならず、idが \"namebox\", \"who\", \"window \"のdisplayableを作成可能である。"
|
||||
new "## バブルスクリーンは、吹き出しを使用する際に、プレイヤーにダイアログを表示するために使用されます。バブルスクリーンはSayスクリーンと同じパラメータを持ち、idが \"what \"のdisplayableを作成しなければならず、idが \"namebox\", \"who\", \"window \"のdisplayableを作成できます。"
|
||||
|
||||
# gui/game/screens.rpy:1417
|
||||
old "## https://www.renpy.org/doc/html/bubble.html#bubble-screen"
|
||||
|
||||
@@ -2047,8 +2047,7 @@ translate korean strings:
|
||||
|
||||
# game/preferences.rpy:256
|
||||
old "Information about creating a custom theme can be found {a=https://www.renpy.org/doc/html/skins.html}in the Ren'Py Documentation{/a}."
|
||||
# Automatic translation.
|
||||
new "사용자 지정 테마를 만드는 방법에 대한 정보는 Ren'Py 문서{/a} 에서 {a=https://www.renpy.org/doc/html/skins.html}확인할 수 있습니다."
|
||||
new "사용자 지정 테마를 만드는 방법에 대한 정보는 {a=https://www.renpy.org/doc/html/skins.html}Ren'Py 문서{/a} 에서 확인할 수 있습니다."
|
||||
|
||||
# game/preferences.rpy:273
|
||||
old "Install Libraries:"
|
||||
@@ -2150,3 +2149,10 @@ translate korean strings:
|
||||
# Automatic translation.
|
||||
new "재생 중에 이미지와 음악을 다운로드할 수 있습니다. 이 동작을 구성할 수 있도록 'progressive_download.txt' 파일이 생성됩니다."
|
||||
|
||||
translate korean strings:
|
||||
|
||||
# game/updater.rpy:79
|
||||
old "A nightly build of fixes to the release version of Ren'Py."
|
||||
# Automatic translation.
|
||||
new "Ren'Py 릴리스 버전에 대한 수정 사항이 포함된 야간 빌드입니다."
|
||||
|
||||
|
||||
@@ -207,13 +207,7 @@ translate korean strings:
|
||||
# Automatic translation.
|
||||
new "## 이 세 가지 변수는 무엇보다도 플레이어에게 기본적으로 표시되는 믹서를 제어합니다. 이 중 하나를 False로 설정하면 해당 믹서가 숨겨집니다."
|
||||
|
||||
# gui/game/options.rpy:152
|
||||
old "## Icon"
|
||||
# Automatic translation.
|
||||
new "아이콘 ##"
|
||||
|
||||
# gui/game/options.rpy:203
|
||||
old "## A Google Play license key is required to perform in-app purchases. It can be found in the Google Play developer console, under \"Monetize\" > \"Monetization Setup\" > \"Licensing\"."
|
||||
# Automatic translation.
|
||||
new "## 인앱 구매를 수행하려면 Google Play 라이선스 키가 필요합니다. Google Play 개발자 콘솔의 '수익 창출' > '수익 창출 설정' > '라이선스'에서 찾을 수 있습니다."
|
||||
|
||||
|
||||
@@ -704,11 +704,6 @@ translate korean strings:
|
||||
# Automatic translation.
|
||||
new "## 주어진 경우 메뉴를 표시합니다. config.narrator_menu가 True로 설정된 경우 메뉴가 잘못 표시될 수 있습니다."
|
||||
|
||||
# gui/game/screens.rpy:1410
|
||||
old "## Bubble screen"
|
||||
# Automatic translation.
|
||||
new "버블 스크린 ##"
|
||||
|
||||
# gui/game/screens.rpy:1412
|
||||
old "## The bubble screen is used to display dialogue to the player when using speech bubbles. The bubble screen takes the same parameters as the say screen, must create a displayable with the id of \"what\", and can create displayables with the \"namebox\", \"who\", and \"window\" ids."
|
||||
# Automatic translation.
|
||||
|
||||
@@ -321,7 +321,7 @@ translate piglatin strings:
|
||||
old "Language [text]"
|
||||
new "Anguagelay [text]"
|
||||
|
||||
# renpy/common/00action_other.rpy:721
|
||||
# renpy/common/00action_other.rpy:722
|
||||
old "Open [text] directory."
|
||||
new "Penoay [text] irectoryday."
|
||||
|
||||
@@ -485,11 +485,11 @@ translate piglatin strings:
|
||||
old "Saved screenshot as %s."
|
||||
new "Avedsay creenshotsay asay %say."
|
||||
|
||||
# renpy/common/00library.rpy:235
|
||||
# renpy/common/00library.rpy:248
|
||||
old "Skip Mode"
|
||||
new "Kipsay Odemay"
|
||||
|
||||
# renpy/common/00library.rpy:340
|
||||
# renpy/common/00library.rpy:353
|
||||
old "This program contains free software under a number of licenses, including the MIT License and GNU Lesser General Public License. A complete list of software, including links to full source code, can be found {a=https://www.renpy.org/l/license}here{/a}."
|
||||
new "Histay rogrampay ontainscay eefray oftwaresay underay aay umbernay ofay icenseslay, includingay hetay Itmay Icenselay anday Nugay Esserlay Eneralgay Ublicpay Icenselay. Aay ompletecay istlay ofay oftwaresay, includingay inkslay otay ullfay ourcesay odecay, ancay ebay oundfay {a=https://www.renpy.org/l/license}erehay{/a}."
|
||||
|
||||
@@ -733,55 +733,55 @@ translate piglatin strings:
|
||||
old "The Ren'Py Sync server does not have a copy of this sync. The sync ID may be invalid, or it may have timed out."
|
||||
new "Hetay Enray'Ypay Yncsay erversay oesday otnay avehay aay opycay ofay histay yncsay. Hetay yncsay Diay aymay ebay invaliday, oray itay aymay avehay imedtay outay."
|
||||
|
||||
# renpy/common/00sync.rpy:409
|
||||
# renpy/common/00sync.rpy:412
|
||||
old "Please enter the sync ID you generated.\nNever enter a sync ID you didn't create yourself."
|
||||
new "Leasepay enteray hetay yncsay Diay ouyay eneratedgay.\nEvernay enteray aay yncsay Diay ouyay idnday'tay reatecay ourselfyay."
|
||||
|
||||
# renpy/common/00sync.rpy:428
|
||||
# renpy/common/00sync.rpy:431
|
||||
old "The sync ID is not in the correct format."
|
||||
new "Hetay yncsay Diay isay otnay inay hetay orrectcay ormatfay."
|
||||
|
||||
# renpy/common/00sync.rpy:448
|
||||
# renpy/common/00sync.rpy:451
|
||||
old "The sync could not be decrypted."
|
||||
new "Hetay yncsay ouldcay otnay ebay ecryptedday."
|
||||
|
||||
# renpy/common/00sync.rpy:471
|
||||
# renpy/common/00sync.rpy:474
|
||||
old "The sync belongs to a different game."
|
||||
new "Hetay yncsay elongsbay otay aay ifferentday amegay."
|
||||
|
||||
# renpy/common/00sync.rpy:476
|
||||
# renpy/common/00sync.rpy:479
|
||||
old "The sync contains a file with an invalid name."
|
||||
new "Hetay yncsay ontainscay aay ilefay ithway anay invaliday amenay."
|
||||
|
||||
# renpy/common/00sync.rpy:529
|
||||
# renpy/common/00sync.rpy:532
|
||||
old "This will upload your saves to the {a=https://sync.renpy.org}Ren'Py Sync Server{/a}.\nDo you want to continue?"
|
||||
new "Histay illway uploaday ouryay avessay otay hetay {a=https://sync.renpy.org}Enray'Ypay Yncsay Erversay{/a}.\nOday ouyay antway otay ontinuecay?"
|
||||
|
||||
# renpy/common/00sync.rpy:558
|
||||
# renpy/common/00sync.rpy:561
|
||||
old "Enter Sync ID"
|
||||
new "Ntereay Yncsay Diay"
|
||||
|
||||
# renpy/common/00sync.rpy:569
|
||||
# renpy/common/00sync.rpy:572
|
||||
old "This will contact the {a=https://sync.renpy.org}Ren'Py Sync Server{/a}."
|
||||
new "Histay illway ontactcay hetay {a=https://sync.renpy.org}Enray'Ypay Yncsay Erversay{/a}."
|
||||
|
||||
# renpy/common/00sync.rpy:596
|
||||
# renpy/common/00sync.rpy:599
|
||||
old "Sync Success"
|
||||
new "Yncsay Uccesssay"
|
||||
|
||||
# renpy/common/00sync.rpy:599
|
||||
# renpy/common/00sync.rpy:602
|
||||
old "The Sync ID is:"
|
||||
new "Hetay Yncsay Diay isay:"
|
||||
|
||||
# renpy/common/00sync.rpy:605
|
||||
# renpy/common/00sync.rpy:608
|
||||
old "You can use this ID to download your save on another device.\nThis sync will expire in an hour.\nRen'Py Sync is supported by {a=https://www.renpy.org/sponsors.html}Ren'Py's Sponsors{/a}."
|
||||
new "Ouyay ancay useay histay Diay otay ownloadday ouryay avesay onay anotheray eviceday.\nHistay yncsay illway expireay inay anay ourhay.\nEnray'Ypay Yncsay isay upportedsay ybay {a=https://www.renpy.org/sponsors.html}Enray'Ypay'say Ponsorssay{/a}."
|
||||
|
||||
# renpy/common/00sync.rpy:609
|
||||
# renpy/common/00sync.rpy:612
|
||||
old "Continue"
|
||||
new "Ontinuecay"
|
||||
|
||||
# renpy/common/00sync.rpy:631
|
||||
# renpy/common/00sync.rpy:634
|
||||
old "Sync Error"
|
||||
new "Yncsay Rroreay"
|
||||
|
||||
|
||||
@@ -51,11 +51,11 @@ translate piglatin strings:
|
||||
|
||||
# renpy/common/00gltest.rpy:181
|
||||
old "60"
|
||||
new "06ay"
|
||||
new "60"
|
||||
|
||||
# renpy/common/00gltest.rpy:185
|
||||
old "30"
|
||||
new "03ay"
|
||||
new "30"
|
||||
|
||||
# renpy/common/00gltest.rpy:191
|
||||
old "Tearing"
|
||||
|
||||
@@ -123,15 +123,15 @@ translate piglatin strings:
|
||||
|
||||
# gui/game/gui.rpy:103
|
||||
old "## The placement of the textbox vertically on the screen. 0.0 is the top, 0.5 is center, and 1.0 is the bottom."
|
||||
new "## Hetay acementplay ofay hetay extboxtay erticallyvay onay hetay creensay. 0ay.0ay isay hetay optay, 0ay.5ay isay entercay, anday 1ay.0ay isay hetay ottombay."
|
||||
new "## Hetay acementplay ofay hetay extboxtay erticallyvay onay hetay creensay. 0.0 isay hetay optay, 0.5 isay entercay, anday 1.0 isay hetay ottombay."
|
||||
|
||||
# gui/game/gui.rpy:108
|
||||
old "## The placement of the speaking character's name, relative to the textbox. These can be a whole number of pixels from the left or top, or 0.5 to center."
|
||||
new "## Hetay acementplay ofay hetay peakingsay aracterchay'say amenay, elativeray otay hetay extboxtay. Hesetay ancay ebay aay holeway umbernay ofay ixelspay omfray hetay eftlay oray optay, oray 0ay.5ay otay entercay."
|
||||
new "## Hetay acementplay ofay hetay peakingsay aracterchay'say amenay, elativeray otay hetay extboxtay. Hesetay ancay ebay aay holeway umbernay ofay ixelspay omfray hetay eftlay oray optay, oray 0.5 otay entercay."
|
||||
|
||||
# gui/game/gui.rpy:113
|
||||
old "## The horizontal alignment of the character's name. This can be 0.0 for left-aligned, 0.5 for centered, and 1.0 for right-aligned."
|
||||
new "## Hetay orizontalhay alignmentay ofay hetay aracterchay'say amenay. Histay ancay ebay 0ay.0ay orfay eftlay-aligneday, 0ay.5ay orfay enteredcay, anday 1ay.0ay orfay ightray-aligneday."
|
||||
new "## Hetay orizontalhay alignmentay ofay hetay aracterchay'say amenay. Histay ancay ebay 0.0 orfay eftlay-aligneday, 0.5 orfay enteredcay, anday 1.0 orfay ightray-aligneday."
|
||||
|
||||
# gui/game/gui.rpy:117
|
||||
old "## The width, height, and borders of the box containing the character's name, or None to automatically size it."
|
||||
@@ -147,7 +147,7 @@ translate piglatin strings:
|
||||
|
||||
# gui/game/gui.rpy:131
|
||||
old "## The placement of dialogue relative to the textbox. These can be a whole number of pixels relative to the left or top side of the textbox, or 0.5 to center."
|
||||
new "## Hetay acementplay ofay ialogueday elativeray otay hetay extboxtay. Hesetay ancay ebay aay holeway umbernay ofay ixelspay elativeray otay hetay eftlay oray optay idesay ofay hetay extboxtay, oray 0ay.5ay otay entercay."
|
||||
new "## Hetay acementplay ofay ialogueday elativeray otay hetay extboxtay. Hesetay ancay ebay aay holeway umbernay ofay ixelspay elativeray otay hetay eftlay oray optay idesay ofay hetay extboxtay, oray 0.5 otay entercay."
|
||||
|
||||
# gui/game/gui.rpy:137
|
||||
old "## The maximum width of dialogue text, in pixels."
|
||||
@@ -155,7 +155,7 @@ translate piglatin strings:
|
||||
|
||||
# gui/game/gui.rpy:140
|
||||
old "## The horizontal alignment of the dialogue text. This can be 0.0 for left-aligned, 0.5 for centered, and 1.0 for right-aligned."
|
||||
new "## Hetay orizontalhay alignmentay ofay hetay ialogueday exttay. Histay ancay ebay 0ay.0ay orfay eftlay-aligneday, 0ay.5ay orfay enteredcay, anday 1ay.0ay orfay ightray-aligneday."
|
||||
new "## Hetay orizontalhay alignmentay ofay hetay ialogueday exttay. Histay ancay ebay 0.0 orfay eftlay-aligneday, 0.5 orfay enteredcay, anday 1.0 orfay ightray-aligneday."
|
||||
|
||||
# gui/game/gui.rpy:145
|
||||
old "## Buttons"
|
||||
@@ -191,7 +191,7 @@ translate piglatin strings:
|
||||
|
||||
# gui/game/gui.rpy:173
|
||||
old "## The horizontal alignment of the button text. (0.0 is left, 0.5 is center, 1.0 is right)."
|
||||
new "## Hetay orizontalhay alignmentay ofay hetay uttonbay exttay. (0ay.0ay isay eftlay, 0ay.5ay isay entercay, 1ay.0ay isay ightray)."
|
||||
new "## Hetay orizontalhay alignmentay ofay hetay uttonbay exttay. (0.0 isay eftlay, 0.5 isay entercay, 1.0 isay ightray)."
|
||||
|
||||
# gui/game/gui.rpy:178
|
||||
old "## These variables override settings for different kinds of buttons. Please see the gui documentation for the kinds of buttons available, and what each is used for."
|
||||
|
||||
@@ -39,7 +39,7 @@ translate piglatin strings:
|
||||
|
||||
# game/android.rpy:37
|
||||
old "A 64-bit/x64 Java [JDK_REQUIREMENT] Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=https://www.renpy.org/jdk/[JDK_REQUIREMENT]}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
new "Aay 46ay-itbay/64xay Avajay [JDK_REQUIREMENT] Evelopmentday Itkay isay equiredray otay uildbay Ndroidaay ackagespay onay Indowsway. Hetay Dkjay isay ifferentday omfray hetay Rejay, osay itay'say ossiblepay ouyay avehay Avajay ithoutway avinghay hetay Dkjay.\n\nLeasepay {a=https://www.renpy.org/jdk/[JDK_REQUIREMENT]}ownloadday anday installay hetay Dkjay{/a}, hentay estartray hetay Enray'Ypay auncherlay."
|
||||
new "Aay 64-itbay/64xay Avajay [JDK_REQUIREMENT] Evelopmentday Itkay isay equiredray otay uildbay Ndroidaay ackagespay onay Indowsway. Hetay Dkjay isay ifferentday omfray hetay Rejay, osay itay'say ossiblepay ouyay avehay Avajay ithoutway avinghay hetay Dkjay.\n\nLeasepay {a=https://www.renpy.org/jdk/[JDK_REQUIREMENT]}ownloadday anday installay hetay Dkjay{/a}, hentay estartray hetay Enray'Ypay auncherlay."
|
||||
|
||||
# game/android.rpy:38
|
||||
old "RAPT has been installed, but you'll need to install the Android SDK before you can build Android packages. Choose Install SDK to do this."
|
||||
@@ -107,11 +107,11 @@ translate piglatin strings:
|
||||
|
||||
# game/android.rpy:57
|
||||
old "Pairs with a device over Wi-Fi, on Android 11+."
|
||||
new "Airspay ithway aay eviceday overay Iway-Ifay, onay Ndroidaay 11ay+."
|
||||
new "Airspay ithway aay eviceday overay Iway-Ifay, onay Ndroidaay 11+."
|
||||
|
||||
# game/android.rpy:58
|
||||
old "Connects to a device over Wi-Fi, on Android 11+."
|
||||
new "Onnectscay otay aay eviceday overay Iway-Ifay, onay Ndroidaay 11ay+."
|
||||
new "Onnectscay otay aay eviceday overay Iway-Ifay, onay Ndroidaay 11+."
|
||||
|
||||
# game/android.rpy:59
|
||||
old "Disconnects a device connected over Wi-Fi."
|
||||
@@ -123,11 +123,11 @@ translate piglatin strings:
|
||||
|
||||
# game/android.rpy:63
|
||||
old "Builds an Android App Bundle (ABB), intended to be uploaded to Google Play. This can include up to 2GB of data."
|
||||
new "Uildsbay anay Ndroidaay Ppaay Undlebay (Bbaay), intendeday otay ebay uploadeday otay Ooglegay Laypay. Histay ancay includeay upay otay GB2ay ofay ataday."
|
||||
new "Uildsbay anay Ndroidaay Ppaay Undlebay (Bbaay), intendeday otay ebay uploadeday otay Ooglegay Laypay. Histay ancay includeay upay otay 2GB ofay ataday."
|
||||
|
||||
# game/android.rpy:64
|
||||
old "Builds a Universal APK package, intended for sideloading and stores other than Google Play. This can include up to 2GB of data."
|
||||
new "Uildsbay aay Niversaluay Pkaay ackagepay, intendeday orfay ideloadingsay anday oresstay otheray hantay Ooglegay Laypay. Histay ancay includeay upay otay GB2ay ofay ataday."
|
||||
new "Uildsbay aay Niversaluay Pkaay ackagepay, intendeday orfay ideloadingsay anday oresstay otheray hantay Ooglegay Laypay. Histay ancay includeay upay otay 2GB ofay ataday."
|
||||
|
||||
# game/android.rpy:258
|
||||
old "Copying Android files to distributions directory."
|
||||
@@ -423,7 +423,7 @@ translate piglatin strings:
|
||||
|
||||
# game/androidstrings.rpy:49
|
||||
old "The version of Java on your computer does not appear to be JDK 8, which is the only version supported by the Android SDK. If you need to install JDK 8, you can download it from:\n\n{a=https://adoptium.net/?variant=openjdk8}https://adoptium.net/?variant=openjdk8{/a}\n\nYou can also set the JAVA_HOME environment variable to use a different version of Java."
|
||||
new "Hetay ersionvay ofay Avajay onay ouryay omputercay oesday otnay appearay otay ebay Dkjay 8ay, hichway isay hetay onlyay ersionvay upportedsay ybay hetay Ndroidaay Dksay. Fiay ouyay eednay otay installay Dkjay 8ay, ouyay ancay ownloadday itay omfray:\n\n{a=https://adoptium.net/?variant=openjdk8}ttpshay://adoptiumay.etnay/?ariantvay=openjdk8ay{/a}\n\nOuyay ancay alsoay etsay hetay Ava_homejay environmentay ariablevay otay useay aay ifferentday ersionvay ofay Avajay."
|
||||
new "Hetay ersionvay ofay Avajay onay ouryay omputercay oesday otnay appearay otay ebay Dkjay 8, hichway isay hetay onlyay ersionvay upportedsay ybay hetay Ndroidaay Dksay. Fiay ouyay eednay otay installay Dkjay 8, ouyay ancay ownloadday itay omfray:\n\n{a=https://adoptium.net/?variant=openjdk8}ttpshay://adoptiumay.etnay/?ariantvay=openjdk8ay{/a}\n\nOuyay ancay alsoay etsay hetay Ava_homejay environmentay ariablevay otay useay aay ifferentday ersionvay ofay Avajay."
|
||||
|
||||
# game/androidstrings.rpy:50
|
||||
old "The JDK is present and working. Good!"
|
||||
@@ -711,7 +711,7 @@ translate piglatin strings:
|
||||
|
||||
# game/editor.rpy:169
|
||||
old "Up to 110 MB download required."
|
||||
new "Puay otay 101ay Bmay ownloadday equiredray."
|
||||
new "Puay otay 110 Bmay ownloadday equiredray."
|
||||
|
||||
# game/editor.rpy:182
|
||||
old "A modern and approachable text editor."
|
||||
@@ -723,7 +723,7 @@ translate piglatin strings:
|
||||
|
||||
# game/editor.rpy:196
|
||||
old "Up to 150 MB download required."
|
||||
new "Puay otay 501ay Bmay ownloadday equiredray."
|
||||
new "Puay otay 150 Bmay ownloadday equiredray."
|
||||
|
||||
# game/editor.rpy:211
|
||||
old "jEdit"
|
||||
@@ -735,7 +735,7 @@ translate piglatin strings:
|
||||
|
||||
# game/editor.rpy:211
|
||||
old "1.8 MB download required."
|
||||
new "1ay.8ay Bmay ownloadday equiredray."
|
||||
new "1.8 Bmay ownloadday equiredray."
|
||||
|
||||
# game/editor.rpy:211
|
||||
old "This may have occured because Java is not installed on this system."
|
||||
@@ -821,26 +821,6 @@ translate piglatin strings:
|
||||
old "Open Directory"
|
||||
new "Penoay Irectoryday"
|
||||
|
||||
# game/front_page.rpy:162
|
||||
old "game"
|
||||
new "amegay"
|
||||
|
||||
# game/front_page.rpy:163
|
||||
old "base"
|
||||
new "asebay"
|
||||
|
||||
# game/front_page.rpy:164
|
||||
old "images"
|
||||
new "imagesay"
|
||||
|
||||
# game/front_page.rpy:165
|
||||
old "audio"
|
||||
new "audioay"
|
||||
|
||||
# game/front_page.rpy:166
|
||||
old "gui"
|
||||
new "uigay"
|
||||
|
||||
# game/front_page.rpy:171
|
||||
old "Edit File"
|
||||
new "Diteay Ilefay"
|
||||
@@ -939,11 +919,11 @@ translate piglatin strings:
|
||||
|
||||
# game/gui7.rpy:333
|
||||
old "What resolution should the project use? Although Ren'Py can scale the window up and down, this is the initial size of the window, the size at which assets should be drawn, and the size at which the assets will be at their sharpest.\n\nThe default of [default_size[0]]x[default_size[1]] is a reasonable compromise."
|
||||
new "Hatway esolutionray ouldshay hetay rojectpay useay? Lthoughaay Enray'Ypay ancay calesay hetay indowway upay anday ownday, histay isay hetay initialay izesay ofay hetay indowway, hetay izesay atay hichway assetsay ouldshay ebay rawnday, anday hetay izesay atay hichway hetay assetsay illway ebay atay heirtay arpestshay.\n\nHetay efaultday ofay [default_size[]]x0ay[default_size[]]1ay isay aay easonableray ompromisecay."
|
||||
new "Hatway esolutionray ouldshay hetay rojectpay useay? Lthoughaay Enray'Ypay ancay calesay hetay indowway upay anday ownday, histay isay hetay initialay izesay ofay hetay indowway, hetay izesay atay hichway assetsay ouldshay ebay rawnday, anday hetay izesay atay hichway hetay assetsay illway ebay atay heirtay arpestshay.\n\nHetay efaultday ofay [default_size[0]]xay[default_size[1]] isay aay easonableray ompromisecay."
|
||||
|
||||
# game/gui7.rpy:333
|
||||
old "Custom. The GUI is optimized for a 16:9 aspect ratio."
|
||||
new "Ustomcay. Hetay Uigay isay optimizeday orfay aay 61ay:9ay aspectay atioray."
|
||||
new "Ustomcay. Hetay Uigay isay optimizeday orfay aay 16:9 aspectay atioray."
|
||||
|
||||
# game/gui7.rpy:350
|
||||
old "WIDTH"
|
||||
@@ -1019,7 +999,7 @@ translate piglatin strings:
|
||||
|
||||
# game/install.rpy:182
|
||||
old "The {a=https://www.live2d.com/en/download/cubism-sdk/download-native/}Cubism SDK for Native{/a} adds support for displaying Live2D models. Place CubismSdkForNative-4-{i}version{/i}.zip in the Ren'Py SDK directory, and then click Install. Distributing a game with Live2D requires you to accept a license from Live2D, Inc."
|
||||
new "Hetay {a=https://www.live2d.com/en/download/cubism-sdk/download-native/}Ubismcay Dksay orfay Ativenay{/a} addsay upportsay orfay isplayingday Ive2dlay odelsmay. Lacepay Ubismsdkfornativecay-4ay-{i}ersionvay{/i}.ipzay inay hetay Enray'Ypay Dksay irectoryday, anday hentay ickclay Nstalliay. Istributingday aay amegay ithway Ive2dlay equiresray ouyay otay acceptay aay icenselay omfray Ive2dlay, Nciay."
|
||||
new "Hetay {a=https://www.live2d.com/en/download/cubism-sdk/download-native/}Ubismcay Dksay orfay Ativenay{/a} addsay upportsay orfay isplayingday Ive2dlay odelsmay. Lacepay Ubismsdkfornativecay-4-{i}ersionvay{/i}.ipzay inay hetay Enray'Ypay Dksay irectoryday, anday hentay ickclay Nstalliay. Istributingday aay amegay ithway Ive2dlay equiresray ouyay otay acceptay aay icenselay omfray Ive2dlay, Nciay."
|
||||
|
||||
# game/install.rpy:186
|
||||
old "Live2D in Ren'Py doesn't support the Web, Android x86_64 (including emulators and Chrome OS), and must be added to iOS projects manually. Live2D must be reinstalled after upgrading Ren'Py or installing Android support."
|
||||
@@ -1671,11 +1651,11 @@ translate piglatin strings:
|
||||
|
||||
# game/updater.rpy:64
|
||||
old "Release (Ren'Py 8, Python 3)"
|
||||
new "Eleaseray (Enray'Ypay 8ay, Ythonpay 3ay)"
|
||||
new "Eleaseray (Enray'Ypay 8, Ythonpay 3)"
|
||||
|
||||
# game/updater.rpy:65
|
||||
old "Release (Ren'Py 7, Python 2)"
|
||||
new "Eleaseray (Enray'Ypay 7ay, Ythonpay 2ay)"
|
||||
new "Eleaseray (Enray'Ypay 7, Ythonpay 2)"
|
||||
|
||||
# game/updater.rpy:66
|
||||
old "{b}Recommended.{/b} The version of Ren'Py that should be used in all newly-released games."
|
||||
@@ -1687,11 +1667,11 @@ translate piglatin strings:
|
||||
|
||||
# game/updater.rpy:69
|
||||
old "Prerelease (Ren'Py 8, Python 3)"
|
||||
new "Rereleasepay (Enray'Ypay 8ay, Ythonpay 3ay)"
|
||||
new "Rereleasepay (Enray'Ypay 8, Ythonpay 3)"
|
||||
|
||||
# game/updater.rpy:70
|
||||
old "Prerelease (Ren'Py 7, Python 2)"
|
||||
new "Rereleasepay (Enray'Ypay 7ay, Ythonpay 2ay)"
|
||||
new "Rereleasepay (Enray'Ypay 7, Ythonpay 2)"
|
||||
|
||||
# game/updater.rpy:71
|
||||
old "A preview of the next version of Ren'Py that can be used for testing and taking advantage of new features, but not for final releases of games."
|
||||
@@ -1706,102 +1686,118 @@ translate piglatin strings:
|
||||
new "Xperimentaleay ersionsvay ofay Enray'Ypay. Ouyay ouldnshay'tay electsay histay annelchay unlessay askeday ybay aay Enray'Ypay eveloperday."
|
||||
|
||||
# game/updater.rpy:76
|
||||
old "Nightly Fix"
|
||||
new "Ightlynay Ixfay"
|
||||
|
||||
# game/updater.rpy:77
|
||||
old "Nightly Fix (Ren'Py 8, Python 3)"
|
||||
new "Ightlynay Ixfay (Enray'Ypay 8, Ythonpay 3)"
|
||||
|
||||
# game/updater.rpy:78
|
||||
old "Nightly Fix (Ren'Py 7, Python 2)"
|
||||
new "Ightlynay Ixfay (Enray'Ypay 7, Ythonpay 2)"
|
||||
|
||||
# game/updater.rpy:79
|
||||
old "A nightly build of fixes to the release version of Ren'Py."
|
||||
new "Aay ightlynay uildbay ofay ixesfay otay hetay eleaseray ersionvay ofay Enray'Ypay."
|
||||
|
||||
# game/updater.rpy:81
|
||||
old "Nightly"
|
||||
new "Ightlynay"
|
||||
|
||||
# game/updater.rpy:77
|
||||
# game/updater.rpy:82
|
||||
old "Nightly (Ren'Py 8, Python 3)"
|
||||
new "Ightlynay (Enray'Ypay 8ay, Ythonpay 3ay)"
|
||||
new "Ightlynay (Enray'Ypay 8, Ythonpay 3)"
|
||||
|
||||
# game/updater.rpy:78
|
||||
# game/updater.rpy:83
|
||||
old "Nightly (Ren'Py 7, Python 2)"
|
||||
new "Ightlynay (Enray'Ypay 7ay, Ythonpay 2ay)"
|
||||
new "Ightlynay (Enray'Ypay 7, Ythonpay 2)"
|
||||
|
||||
# game/updater.rpy:79
|
||||
# game/updater.rpy:84
|
||||
old "The bleeding edge of Ren'Py development. This may have the latest features, or might not run at all."
|
||||
new "Hetay eedingblay edgeay ofay Enray'Ypay evelopmentday. Histay aymay avehay hetay atestlay eaturesfay, oray ightmay otnay unray atay allay."
|
||||
|
||||
# game/updater.rpy:97
|
||||
# game/updater.rpy:102
|
||||
old "Select Update Channel"
|
||||
new "Electsay Pdateuay Hannelcay"
|
||||
|
||||
# game/updater.rpy:108
|
||||
# game/updater.rpy:113
|
||||
old "The update channel controls the version of Ren'Py the updater will download."
|
||||
new "Hetay updateay annelchay ontrolscay hetay ersionvay ofay Enray'Ypay hetay updateray illway ownloadday."
|
||||
|
||||
# game/updater.rpy:116
|
||||
# game/updater.rpy:121
|
||||
old "• {a=https://www.renpy.org/doc/html/changelog.html}View change log{/a}"
|
||||
new "• {a=https://www.renpy.org/doc/html/changelog.html}Iewvay angechay oglay{/a}"
|
||||
|
||||
# game/updater.rpy:118
|
||||
# game/updater.rpy:123
|
||||
old "• {a=https://www.renpy.org/dev-doc/html/changelog.html}View change log{/a}"
|
||||
new "• {a=https://www.renpy.org/dev-doc/html/changelog.html}Iewvay angechay oglay{/a}"
|
||||
|
||||
# game/updater.rpy:124
|
||||
# game/updater.rpy:129
|
||||
old "• This version is installed and up-to-date."
|
||||
new "• Histay ersionvay isay installeday anday upay-otay-ateday."
|
||||
|
||||
# game/updater.rpy:136
|
||||
# game/updater.rpy:141
|
||||
old "%B %d, %Y"
|
||||
new "%Bay %day, %Yay"
|
||||
|
||||
# game/updater.rpy:158
|
||||
# game/updater.rpy:163
|
||||
old "An error has occured:"
|
||||
new "Naay erroray ashay occureday:"
|
||||
|
||||
# game/updater.rpy:160
|
||||
# game/updater.rpy:165
|
||||
old "Checking for updates."
|
||||
new "Heckingcay orfay updatesay."
|
||||
|
||||
# game/updater.rpy:162
|
||||
# game/updater.rpy:167
|
||||
old "Ren'Py is up to date."
|
||||
new "Enray'Ypay isay upay otay ateday."
|
||||
|
||||
# game/updater.rpy:164
|
||||
# game/updater.rpy:169
|
||||
old "[u.version] is now available. Do you want to install it?"
|
||||
new "[u.version] isay ownay availableay. Oday ouyay antway otay installay itay?"
|
||||
|
||||
# game/updater.rpy:166
|
||||
# game/updater.rpy:171
|
||||
old "Preparing to download the update."
|
||||
new "Reparingpay otay ownloadday hetay updateay."
|
||||
|
||||
# game/updater.rpy:168
|
||||
# game/updater.rpy:173
|
||||
old "Downloading the update."
|
||||
new "Ownloadingday hetay updateay."
|
||||
|
||||
# game/updater.rpy:170
|
||||
# game/updater.rpy:175
|
||||
old "Unpacking the update."
|
||||
new "Npackinguay hetay updateay."
|
||||
|
||||
# game/updater.rpy:172
|
||||
# game/updater.rpy:177
|
||||
old "Finishing up."
|
||||
new "Inishingfay upay."
|
||||
|
||||
# game/updater.rpy:174
|
||||
# game/updater.rpy:179
|
||||
old "The update has been installed. Ren'Py will restart."
|
||||
new "Hetay updateay ashay eenbay installeday. Enray'Ypay illway estartray."
|
||||
|
||||
# game/updater.rpy:176
|
||||
# game/updater.rpy:181
|
||||
old "The update has been installed."
|
||||
new "Hetay updateay ashay eenbay installeday."
|
||||
|
||||
# game/updater.rpy:178
|
||||
# game/updater.rpy:183
|
||||
old "The update was cancelled."
|
||||
new "Hetay updateay asway ancelledcay."
|
||||
|
||||
# game/updater.rpy:195
|
||||
# game/updater.rpy:200
|
||||
old "Ren'Py Update"
|
||||
new "Enray'Ypay Pdateuay"
|
||||
|
||||
# game/updater.rpy:201
|
||||
# game/updater.rpy:206
|
||||
old "Proceed"
|
||||
new "Roceedpay"
|
||||
|
||||
# game/updater.rpy:215
|
||||
# game/updater.rpy:220
|
||||
old "Fetching the list of update channels"
|
||||
new "Etchingfay hetay istlay ofay updateay annelschay"
|
||||
|
||||
# game/updater.rpy:220
|
||||
# game/updater.rpy:225
|
||||
old "downloading the list of update channels"
|
||||
new "ownloadingday hetay istlay ofay updateay annelschay"
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ translate piglatin strings:
|
||||
|
||||
# gui/game/options.rpy:17
|
||||
old "Ren'Py 7 Default GUI"
|
||||
new "Enray'Ypay 7ay Efaultday Uigay"
|
||||
new "Enray'Ypay 7 Efaultday Uigay"
|
||||
|
||||
# gui/game/options.rpy:20
|
||||
old "## Determines if the title given above is shown on the main menu screen. Set this to False to hide the title."
|
||||
@@ -107,11 +107,11 @@ translate piglatin strings:
|
||||
|
||||
# gui/game/options.rpy:123
|
||||
old "## Controls the default text speed. The default, 0, is infinite, while any other number is the number of characters per second to type out."
|
||||
new "## Ontrolscay hetay efaultday exttay peedsay. Hetay efaultday, 0ay, isay infiniteay, hileway anyay otheray umbernay isay hetay umbernay ofay aracterschay erpay econdsay otay ypetay outay."
|
||||
new "## Ontrolscay hetay efaultday exttay peedsay. Hetay efaultday, 0, isay infiniteay, hileway anyay otheray umbernay isay hetay umbernay ofay aracterschay erpay econdsay otay ypetay outay."
|
||||
|
||||
# gui/game/options.rpy:129
|
||||
old "## The default auto-forward delay. Larger numbers lead to longer waits, with 0 to 30 being the valid range."
|
||||
new "## Hetay efaultday autoay-orwardfay elayday. Argerlay umbersnay eadlay otay ongerlay aitsway, ithway 0ay otay 03ay eingbay hetay alidvay angeray."
|
||||
new "## Hetay efaultday autoay-orwardfay elayday. Argerlay umbersnay eadlay otay ongerlay aitsway, ithway 0 otay 30 eingbay hetay alidvay angeray."
|
||||
|
||||
# gui/game/options.rpy:135
|
||||
old "## Save directory"
|
||||
|
||||
@@ -295,7 +295,7 @@ translate piglatin strings:
|
||||
|
||||
# gui/game/screens.rpy:668
|
||||
old "## range(1, 10) gives the numbers from 1 to 9."
|
||||
new "## angeray(1ay, 01ay) ivesgay hetay umbersnay omfray 1ay otay 9ay."
|
||||
new "## angeray(1, 10) ivesgay hetay umbersnay omfray 1 otay 9."
|
||||
|
||||
# gui/game/screens.rpy:672
|
||||
old ">"
|
||||
@@ -672,3 +672,4 @@ translate piglatin strings:
|
||||
# gui/game/screens.rpy:1526
|
||||
old "Menu"
|
||||
new "Enumay"
|
||||
|
||||
|
||||
@@ -2055,3 +2055,11 @@ translate polish strings:
|
||||
# Automatic translation.
|
||||
new "Tworzenie pakietu..."
|
||||
|
||||
|
||||
translate polish strings:
|
||||
|
||||
# game/updater.rpy:79
|
||||
old "A nightly build of fixes to the release version of Ren'Py."
|
||||
# Automatic translation.
|
||||
new "Nocna kompilacja poprawek do wydanej wersji Ren'Py."
|
||||
|
||||
|
||||
@@ -674,9 +674,6 @@ translate polish strings:
|
||||
old "Menu"
|
||||
new "Menu"
|
||||
|
||||
|
||||
translate polish strings:
|
||||
|
||||
# gui/game/screens.rpy:676
|
||||
old "Upload Sync"
|
||||
# Automatic translation.
|
||||
@@ -700,7 +697,7 @@ translate polish strings:
|
||||
# gui/game/screens.rpy:1410
|
||||
old "## Bubble screen"
|
||||
# Automatic translation.
|
||||
new "# Bubble screen"
|
||||
new "## Bubble screen"
|
||||
|
||||
# gui/game/screens.rpy:1412
|
||||
old "## The bubble screen is used to display dialogue to the player when using speech bubbles. The bubble screen takes the same parameters as the say screen, must create a displayable with the id of \"what\", and can create displayables with the \"namebox\", \"who\", and \"window\" ids."
|
||||
|
||||
@@ -1227,3 +1227,11 @@ translate portuguese strings:
|
||||
# Automatic translation.
|
||||
new "Antes de empacotar aplicativos Web, você precisará baixar o RenPyWeb, o suporte Web do Ren'Py. Gostaria de fazer o download do RenPyWeb agora?"
|
||||
|
||||
|
||||
translate portuguese strings:
|
||||
|
||||
# game/updater.rpy:79
|
||||
old "A nightly build of fixes to the release version of Ren'Py."
|
||||
# Automatic translation.
|
||||
new "Uma compilação noturna de correções para a versão de lançamento do Ren'Py."
|
||||
|
||||
|
||||
@@ -206,7 +206,7 @@ translate portuguese strings:
|
||||
# gui/game/options.rpy:175
|
||||
old "## * matches all characters, except the directory separator."
|
||||
# Automatic translation.
|
||||
new "* corresponde a todos os caracteres, exceto o separador de diretório."
|
||||
new "## * corresponde a todos os caracteres, exceto o separador de diretório."
|
||||
|
||||
# gui/game/options.rpy:177
|
||||
old "## ** matches all characters, including the directory separator."
|
||||
@@ -242,4 +242,3 @@ translate portuguese strings:
|
||||
old "## The username and project name associated with an itch.io project, separated by a slash."
|
||||
# Automatic translation.
|
||||
new "## O nome de usuário e o nome do projeto associados a um projeto itch.io, separados por uma barra."
|
||||
|
||||
|
||||
@@ -2091,3 +2091,11 @@ translate russian strings:
|
||||
# Automatic translation.
|
||||
new "Создание пакета..."
|
||||
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# game/updater.rpy:79
|
||||
old "A nightly build of fixes to the release version of Ren'Py."
|
||||
# Automatic translation.
|
||||
new "Ночная сборка исправлений к релизной версии Ren'Py."
|
||||
|
||||
|
||||
@@ -12,51 +12,6 @@
|
||||
old "Self-voicing enabled. "
|
||||
new "机器朗读已启用。"
|
||||
|
||||
# renpy/common/00accessibility.rpy:32
|
||||
old "bar"
|
||||
# Automatic translation.
|
||||
new "吧台"
|
||||
|
||||
# renpy/common/00accessibility.rpy:33
|
||||
old "selected"
|
||||
# Automatic translation.
|
||||
new "选定的"
|
||||
|
||||
# renpy/common/00accessibility.rpy:34
|
||||
old "viewport"
|
||||
# Automatic translation.
|
||||
new "视口"
|
||||
|
||||
# renpy/common/00accessibility.rpy:35
|
||||
old "horizontal scroll"
|
||||
# Automatic translation.
|
||||
new "横向滚动"
|
||||
|
||||
# renpy/common/00accessibility.rpy:36
|
||||
old "vertical scroll"
|
||||
# Automatic translation.
|
||||
new "垂直滚动"
|
||||
|
||||
# renpy/common/00accessibility.rpy:37
|
||||
old "activate"
|
||||
# Automatic translation.
|
||||
new "激活"
|
||||
|
||||
# renpy/common/00accessibility.rpy:38
|
||||
old "deactivate"
|
||||
# Automatic translation.
|
||||
new "停用"
|
||||
|
||||
# renpy/common/00accessibility.rpy:39
|
||||
old "increase"
|
||||
# Automatic translation.
|
||||
new "增加"
|
||||
|
||||
# renpy/common/00accessibility.rpy:40
|
||||
old "decrease"
|
||||
# Automatic translation.
|
||||
new "减少"
|
||||
|
||||
# renpy/common/00accessibility.rpy:138
|
||||
old "Font Override"
|
||||
new "字体覆盖"
|
||||
@@ -351,36 +306,31 @@
|
||||
|
||||
# renpy/common/00director.rpy:1561
|
||||
old "(statement)"
|
||||
# Automatic translation.
|
||||
new "(声明)"
|
||||
new "(语句)"
|
||||
|
||||
# renpy/common/00director.rpy:1562
|
||||
old "(tag)"
|
||||
# Automatic translation.
|
||||
new "(标签)"
|
||||
new "(标签)"
|
||||
|
||||
# renpy/common/00director.rpy:1563
|
||||
old "(attributes)"
|
||||
# Automatic translation.
|
||||
new "(属性)"
|
||||
new "(属性)"
|
||||
|
||||
# renpy/common/00director.rpy:1564
|
||||
old "(transform)"
|
||||
new "(transform)"
|
||||
new "(变换)"
|
||||
|
||||
# renpy/common/00director.rpy:1589
|
||||
old "(transition)"
|
||||
new "(transition)"
|
||||
new "(转场)"
|
||||
|
||||
# renpy/common/00director.rpy:1601
|
||||
old "(channel)"
|
||||
# Automatic translation.
|
||||
new "(频道)"
|
||||
new "(轨道)"
|
||||
|
||||
# renpy/common/00director.rpy:1602
|
||||
old "(filename)"
|
||||
# Automatic translation.
|
||||
new "(文件名)"
|
||||
new "(文件名)"
|
||||
|
||||
# renpy/common/00director.rpy:1631
|
||||
old "Change"
|
||||
@@ -486,238 +436,6 @@
|
||||
old "This program contains free software under a number of licenses, including the MIT License and GNU Lesser General Public License. A complete list of software, including links to full source code, can be found {a=https://www.renpy.org/l/license}here{/a}."
|
||||
new "本程序包含了由数个许可证授权的自由软件,包括 MIT 许可证和 GNU 宽松通用公共许可证。完整软件列表及源代码链接,请{a=https://www.renpy.org/l/license}访问此处{/a}。"
|
||||
|
||||
# renpy/common/00preferences.rpy:263
|
||||
old "display"
|
||||
# Automatic translation.
|
||||
new "展示"
|
||||
|
||||
# renpy/common/00preferences.rpy:275
|
||||
old "transitions"
|
||||
# Automatic translation.
|
||||
new "过渡"
|
||||
|
||||
# renpy/common/00preferences.rpy:284
|
||||
old "skip transitions"
|
||||
# Automatic translation.
|
||||
new "跳过过渡期"
|
||||
|
||||
# renpy/common/00preferences.rpy:286
|
||||
old "video sprites"
|
||||
# Automatic translation.
|
||||
new "视频精灵"
|
||||
|
||||
# renpy/common/00preferences.rpy:295
|
||||
old "show empty window"
|
||||
# Automatic translation.
|
||||
new "显示空窗口"
|
||||
|
||||
# renpy/common/00preferences.rpy:304
|
||||
old "text speed"
|
||||
# Automatic translation.
|
||||
new "文字速度"
|
||||
|
||||
# renpy/common/00preferences.rpy:312
|
||||
old "joystick"
|
||||
# Automatic translation.
|
||||
new "操纵杆"
|
||||
|
||||
# renpy/common/00preferences.rpy:312
|
||||
old "joystick..."
|
||||
# Automatic translation.
|
||||
new "操纵杆..."
|
||||
|
||||
# renpy/common/00preferences.rpy:319
|
||||
old "skip"
|
||||
# Automatic translation.
|
||||
new "跳过"
|
||||
|
||||
# renpy/common/00preferences.rpy:322
|
||||
old "skip unseen [text]"
|
||||
# Automatic translation.
|
||||
new "跳过未见的[text]"
|
||||
|
||||
# renpy/common/00preferences.rpy:327
|
||||
old "skip unseen text"
|
||||
# Automatic translation.
|
||||
new "跳过未看到的文本"
|
||||
|
||||
# renpy/common/00preferences.rpy:329
|
||||
old "begin skipping"
|
||||
# Automatic translation.
|
||||
new "开始跳伞"
|
||||
|
||||
# renpy/common/00preferences.rpy:333
|
||||
old "after choices"
|
||||
# Automatic translation.
|
||||
new "选择之后"
|
||||
|
||||
# renpy/common/00preferences.rpy:340
|
||||
old "skip after choices"
|
||||
# Automatic translation.
|
||||
new "选择后跳过"
|
||||
|
||||
# renpy/common/00preferences.rpy:342
|
||||
old "auto-forward time"
|
||||
# Automatic translation.
|
||||
new "自动转发时间"
|
||||
|
||||
# renpy/common/00preferences.rpy:356
|
||||
old "auto-forward"
|
||||
# Automatic translation.
|
||||
new "自动转发"
|
||||
|
||||
# renpy/common/00preferences.rpy:363
|
||||
old "Auto forward"
|
||||
new "自动前进"
|
||||
|
||||
# renpy/common/00preferences.rpy:366
|
||||
old "auto-forward after click"
|
||||
# Automatic translation.
|
||||
new "点击后自动转发"
|
||||
|
||||
# renpy/common/00preferences.rpy:375
|
||||
old "automatic move"
|
||||
# Automatic translation.
|
||||
new "自动移动"
|
||||
|
||||
# renpy/common/00preferences.rpy:384
|
||||
old "wait for voice"
|
||||
# Automatic translation.
|
||||
new "等待声音"
|
||||
|
||||
# renpy/common/00preferences.rpy:393
|
||||
old "voice sustain"
|
||||
# Automatic translation.
|
||||
new "语音持续"
|
||||
|
||||
# renpy/common/00preferences.rpy:402
|
||||
old "self voicing"
|
||||
# Automatic translation.
|
||||
new "自言自语"
|
||||
|
||||
# renpy/common/00preferences.rpy:411
|
||||
old "self voicing volume drop"
|
||||
# Automatic translation.
|
||||
new "自我发声的音量下降"
|
||||
|
||||
# renpy/common/00preferences.rpy:419
|
||||
old "clipboard voicing"
|
||||
# Automatic translation.
|
||||
new "剪贴板配音"
|
||||
|
||||
# renpy/common/00preferences.rpy:428
|
||||
old "debug voicing"
|
||||
new "debug voicing"
|
||||
|
||||
# renpy/common/00preferences.rpy:437
|
||||
old "emphasize audio"
|
||||
# Automatic translation.
|
||||
new "强调音频"
|
||||
|
||||
# renpy/common/00preferences.rpy:446
|
||||
old "rollback side"
|
||||
# Automatic translation.
|
||||
new "回滚方"
|
||||
|
||||
# renpy/common/00preferences.rpy:456
|
||||
old "gl powersave"
|
||||
# Automatic translation.
|
||||
new "拯救生命的力量"
|
||||
|
||||
# renpy/common/00preferences.rpy:462
|
||||
old "gl framerate"
|
||||
# Automatic translation.
|
||||
new "帧速率"
|
||||
|
||||
# renpy/common/00preferences.rpy:465
|
||||
old "gl tearing"
|
||||
new "gl tearing"
|
||||
|
||||
# renpy/common/00preferences.rpy:468
|
||||
old "font transform"
|
||||
# Automatic translation.
|
||||
new "字体转换"
|
||||
|
||||
# renpy/common/00preferences.rpy:471
|
||||
old "font size"
|
||||
# Automatic translation.
|
||||
new "字体大小"
|
||||
|
||||
# renpy/common/00preferences.rpy:479
|
||||
old "font line spacing"
|
||||
# Automatic translation.
|
||||
new "字体行距"
|
||||
|
||||
# renpy/common/00preferences.rpy:487
|
||||
old "system cursor"
|
||||
# Automatic translation.
|
||||
new "系统光标"
|
||||
|
||||
# renpy/common/00preferences.rpy:496
|
||||
old "renderer menu"
|
||||
# Automatic translation.
|
||||
new "渲染器菜单"
|
||||
|
||||
# renpy/common/00preferences.rpy:499
|
||||
old "accessibility menu"
|
||||
# Automatic translation.
|
||||
new "无障碍菜单"
|
||||
|
||||
# renpy/common/00preferences.rpy:502
|
||||
old "high contrast text"
|
||||
# Automatic translation.
|
||||
new "高对比度文本"
|
||||
|
||||
# renpy/common/00preferences.rpy:511
|
||||
old "audio when minimized"
|
||||
# Automatic translation.
|
||||
new "最小化时的音频"
|
||||
|
||||
# renpy/common/00preferences.rpy:531
|
||||
old "main volume"
|
||||
# Automatic translation.
|
||||
new "主卷"
|
||||
|
||||
# renpy/common/00preferences.rpy:532
|
||||
old "music volume"
|
||||
# Automatic translation.
|
||||
new "音量"
|
||||
|
||||
# renpy/common/00preferences.rpy:533
|
||||
old "sound volume"
|
||||
# Automatic translation.
|
||||
new "音量"
|
||||
|
||||
# renpy/common/00preferences.rpy:534
|
||||
old "voice volume"
|
||||
# Automatic translation.
|
||||
new "音量"
|
||||
|
||||
# renpy/common/00preferences.rpy:535
|
||||
old "mute main"
|
||||
# Automatic translation.
|
||||
new "静音主"
|
||||
|
||||
# renpy/common/00preferences.rpy:536
|
||||
old "mute music"
|
||||
# Automatic translation.
|
||||
new "静音音乐"
|
||||
|
||||
# renpy/common/00preferences.rpy:537
|
||||
old "mute sound"
|
||||
# Automatic translation.
|
||||
new "静音"
|
||||
|
||||
# renpy/common/00preferences.rpy:538
|
||||
old "mute voice"
|
||||
# Automatic translation.
|
||||
new "喑哑的声音"
|
||||
|
||||
# renpy/common/00preferences.rpy:539
|
||||
old "mute all"
|
||||
# Automatic translation.
|
||||
new "全部静音"
|
||||
|
||||
# renpy/common/00preferences.rpy:620
|
||||
old "Clipboard voicing enabled. Press 'shift+C' to disable."
|
||||
new "剪贴板朗读已启用。按 Shift+C 来禁用。"
|
||||
@@ -888,8 +606,7 @@
|
||||
|
||||
# renpy/common/_developer/inspector.rpym:185
|
||||
old "<repr() failed>"
|
||||
# Automatic translation.
|
||||
new "<repr()失败>。"
|
||||
new "<repr() 失败>"
|
||||
|
||||
# renpy/common/_layout/classic_load_save.rpym:170
|
||||
old "a"
|
||||
@@ -995,140 +712,94 @@
|
||||
old "return"
|
||||
new "返回"
|
||||
|
||||
translate schinese strings:
|
||||
|
||||
# renpy/common/00director.rpy:1745
|
||||
old "Click to toggle attribute, right click to toggle negative attribute."
|
||||
# Automatic translation.
|
||||
new "点击切换属性,右击切换负面属性。"
|
||||
new "点击切换属性,右键点击切换反面属性。"
|
||||
|
||||
# renpy/common/00director.rpy:1768
|
||||
old "Click to set transform, right click to add to transform list."
|
||||
# Automatic translation.
|
||||
new "点击设置变换,右击添加到变换列表。"
|
||||
new "点击设置变换,右键点击添加到变换列表。"
|
||||
|
||||
# renpy/common/00director.rpy:1789
|
||||
old "Click to set, right click to add to behind list."
|
||||
# Automatic translation.
|
||||
new "点击设置,右击添加到后面的列表。"
|
||||
new "点击设置,右键点击添加到置后(behind)列表。"
|
||||
|
||||
# renpy/common/00gui.rpy:456
|
||||
old "This save was created on a different device. Maliciously constructed save files can harm your computer. Do you trust this save's creator and everyone who could have changed the file?"
|
||||
# Automatic translation.
|
||||
new "这个保存文件是在不同的设备上创建的。恶意构建的保存文件会损害你的计算机。你相信这个保存文件的创建者和所有可能改变该文件的人吗?"
|
||||
new "此存档是在其他设备上创建的。恶意构造的存档文件可能会对您的计算机造成损害。您是否信任此存档的创建者以及所有可能更改过该文件的人?"
|
||||
|
||||
# renpy/common/00gui.rpy:457
|
||||
old "Do you trust the device the save was created on? You should only choose yes if you are the device's sole user."
|
||||
# Automatic translation.
|
||||
new "你是否信任创建保存的设备?只有当你是该设备的唯一用户时,你才应该选择是。"
|
||||
|
||||
# renpy/common/00preferences.rpy:528
|
||||
old "audio when unfocused"
|
||||
# Automatic translation.
|
||||
new "无焦点时的音频"
|
||||
|
||||
# renpy/common/00preferences.rpy:537
|
||||
old "web cache preload"
|
||||
# Automatic translation.
|
||||
new "网络高速缓存预加载"
|
||||
|
||||
# renpy/common/00preferences.rpy:552
|
||||
old "voice after game menu"
|
||||
# Automatic translation.
|
||||
new "游戏菜单后的语音"
|
||||
new "您是否信任创建此存档的设备?只有当您是设备的唯一用户时,才应选择是。"
|
||||
|
||||
# renpy/common/00speechbubble.rpy:344
|
||||
old "Speech Bubble Editor"
|
||||
# Automatic translation.
|
||||
new "语音泡编辑"
|
||||
|
||||
# renpy/common/00speechbubble.rpy:349
|
||||
old "(hide)"
|
||||
# Automatic translation.
|
||||
new "(隐藏)"
|
||||
new "对话气泡编辑器"
|
||||
|
||||
# renpy/common/00sync.rpy:70
|
||||
old "Sync downloaded."
|
||||
# Automatic translation.
|
||||
new "同步下载。"
|
||||
new "同步下载完成。"
|
||||
|
||||
# renpy/common/00sync.rpy:190
|
||||
old "Could not connect to the Ren'Py Sync server."
|
||||
# Automatic translation.
|
||||
new "无法连接到Ren Py Sync服务器。"
|
||||
new "无法连接到 Ren'Py 同步服务器。"
|
||||
|
||||
# renpy/common/00sync.rpy:192
|
||||
old "The Ren'Py Sync server timed out."
|
||||
# Automatic translation.
|
||||
new "Ren'Py Sync服务器超时了。"
|
||||
new "Ren'Py 同步服务器已超时。"
|
||||
|
||||
# renpy/common/00sync.rpy:194
|
||||
old "An unknown error occurred while connecting to the Ren'Py Sync server."
|
||||
# Automatic translation.
|
||||
new "在连接到Ren Py Sync服务器时发生了一个未知的错误。"
|
||||
new "在连接到 Ren'Py 同步服务器时发生了未知错误。"
|
||||
|
||||
# renpy/common/00sync.rpy:267
|
||||
old "The Ren'Py Sync server does not have a copy of this sync. The sync ID may be invalid, or it may have timed out."
|
||||
# Automatic translation.
|
||||
new "Ren'Py Sync服务器没有这个同步的副本。同步ID可能是无效的,也可能是超时了。"
|
||||
new "Ren'Py 同步服务器没有该同步副本。同步 ID 可能无效,或者可能已经超时。"
|
||||
|
||||
# renpy/common/00sync.rpy:409
|
||||
old "Please enter the sync ID you generated.\nNever enter a sync ID you didn't create yourself."
|
||||
# Automatic translation.
|
||||
new "请输入你生成的同步ID。\n永远不要输入不是你自己创建的同步ID。"
|
||||
new "请输入您生成的同步 ID。\n切勿输入并非由您创建的同步 ID。"
|
||||
|
||||
# renpy/common/00sync.rpy:428
|
||||
old "The sync ID is not in the correct format."
|
||||
# Automatic translation.
|
||||
new "同步ID的格式不正确。"
|
||||
new "同步 ID 的格式不正确。"
|
||||
|
||||
# renpy/common/00sync.rpy:448
|
||||
old "The sync could not be decrypted."
|
||||
# Automatic translation.
|
||||
new "同步不能被解密。"
|
||||
new "无法解密该同步。"
|
||||
|
||||
# renpy/common/00sync.rpy:471
|
||||
old "The sync belongs to a different game."
|
||||
# Automatic translation.
|
||||
new "同步属于一个不同的游戏。"
|
||||
new "该同步属于另一款游戏。"
|
||||
|
||||
# renpy/common/00sync.rpy:476
|
||||
old "The sync contains a file with an invalid name."
|
||||
# Automatic translation.
|
||||
new "同步包含一个名称无效的文件。"
|
||||
new "该同步包含一个文件,其文件名无效。"
|
||||
|
||||
# renpy/common/00sync.rpy:529
|
||||
old "This will upload your saves to the {a=https://sync.renpy.org}Ren'Py Sync Server{/a}.\nDo you want to continue?"
|
||||
# Automatic translation.
|
||||
new "这将把你的保存上传到{a=https://sync.renpy.org}Ren Py Sync Server{/a} 。\n你想继续吗?"
|
||||
new "此操作将把您的存档上传到 {a=https://sync.renpy.org}Ren'Py 同步服务器{/a} 。\n您想要继续吗?"
|
||||
|
||||
# renpy/common/00sync.rpy:558
|
||||
old "Enter Sync ID"
|
||||
# Automatic translation.
|
||||
new "输入同步ID"
|
||||
new "输入同步 ID"
|
||||
|
||||
# renpy/common/00sync.rpy:569
|
||||
old "This will contact the {a=https://sync.renpy.org}Ren'Py Sync Server{/a}."
|
||||
# Automatic translation.
|
||||
new "这将联系{a=https://sync.renpy.org}Ren'Py Sync Server{/a} 。"
|
||||
new "此操作将联系 {a=https://sync.renpy.org}Ren'Py 同步服务器{/a}。"
|
||||
|
||||
# renpy/common/00sync.rpy:596
|
||||
old "Sync Success"
|
||||
# Automatic translation.
|
||||
new "同步成功"
|
||||
|
||||
# renpy/common/00sync.rpy:599
|
||||
old "The Sync ID is:"
|
||||
# Automatic translation.
|
||||
new "同步ID是:"
|
||||
new "同步 ID 是:"
|
||||
|
||||
# renpy/common/00sync.rpy:605
|
||||
old "You can use this ID to download your save on another device.\nThis sync will expire in an hour.\nRen'Py Sync is supported by {a=https://www.renpy.org/sponsors.html}Ren'Py's Sponsors{/a}."
|
||||
# Automatic translation.
|
||||
new "你可以使用这个ID在另一个设备上下载你的保存。\n这种同步将在一小时后失效。\nRen'Py Sync是由{a=https://www.renpy.org/sponsors.html}Ren'Py的赞助商{/a} 。"
|
||||
new "你可以使用此 ID 在另一设备上下载您的存档。\n此同步将在一小时后失效。\nRen'Py 同步由{a=https://www.renpy.org/sponsors.html}Ren'Py 赞助者{/a}赞助。"
|
||||
|
||||
# renpy/common/00sync.rpy:631
|
||||
old "Sync Error"
|
||||
# Automatic translation.
|
||||
new "同步错误"
|
||||
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
translate schinese strings:
|
||||
|
||||
# renpy/common/_developer/developer.rpym:51
|
||||
old "Persistent Viewer"
|
||||
new "持久化数据查看器"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:70
|
||||
old "Speech Bubble Editor (Shift+B)"
|
||||
new "对话气泡编辑器(Shift+B)"
|
||||
|
||||
# renpy/common/00console.rpy:492
|
||||
old "Press <esc> to exit console. Type help for help.\n"
|
||||
new "按 Esc 来退出控制台。输入 help 来查看帮助。\n"
|
||||
@@ -12,9 +20,9 @@
|
||||
old "Ren'Py script disabled."
|
||||
new "Ren'Py 脚本已禁用。"
|
||||
|
||||
# renpy/common/00console.rpy:747
|
||||
old "help: show this help"
|
||||
new "help:显示此帮助信息"
|
||||
# renpy/common/00console.rpy:789
|
||||
old "help: show this help\n help <expr>: show signature and documentation of <expr>"
|
||||
new "help:显示此帮助信息\n help <表达式>:显示 <表达式> 的签名和文档"
|
||||
|
||||
# renpy/common/00console.rpy:752
|
||||
old "commands:\n"
|
||||
@@ -84,25 +92,7 @@
|
||||
old "unescape: Disables escaping of unicode symbols in unicode strings and print it as is (default)."
|
||||
new "unescape:禁止转义 Unicode 字符串中的 Unicode 符号,并按原样打印(默认)。"
|
||||
|
||||
translate schinese strings:
|
||||
|
||||
# renpy/common/_developer/developer.rpym:51
|
||||
old "Persistent Viewer"
|
||||
# Automatic translation.
|
||||
new "持久性查看器"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:70
|
||||
old "Speech Bubble Editor (Shift+B)"
|
||||
# Automatic translation.
|
||||
new "语音泡泡编辑器(Shift+B)"
|
||||
|
||||
# renpy/common/00console.rpy:789
|
||||
old "help: show this help\n help <expr>: show signature and documentation of <expr>"
|
||||
# Automatic translation.
|
||||
new "help: 显示此帮助\n help <expr>: 显示<expr>的签名和文件"
|
||||
|
||||
# renpy/common/00console.rpy:813
|
||||
old "Help may display undocumented functions. Please check that the function or\nclass you want to use is documented.\n\n"
|
||||
# Automatic translation.
|
||||
new "帮助可能会显示未记录的功能。请检查该函数或\n你想使用的类是有记录的。\n\n"
|
||||
new "帮助功能可能会显示未记录文档的函数。请确认您想使用的函数或类是否已经被记录文档。\n\n"
|
||||
|
||||
|
||||
@@ -432,10 +432,7 @@
|
||||
old "## NVL-mode."
|
||||
new "## NVL 模式。"
|
||||
|
||||
translate schinese strings:
|
||||
|
||||
# gui/game/gui.rpy:14
|
||||
old "## Enable checks for invalid or unstable properties in screens or transforms"
|
||||
# Automatic translation.
|
||||
new "## 启用对屏幕或变换中无效或不稳定属性的检查"
|
||||
|
||||
|
||||
@@ -44,13 +44,9 @@
|
||||
old "RAPT has been installed, but you'll need to install the Android SDK before you can build Android packages. Choose Install SDK to do this."
|
||||
new "RAPT 已安装,但您还需要安装安卓 SDK 才可以构建安卓应用包。请继续安装 SDK。"
|
||||
|
||||
# game/android.rpy:37
|
||||
old "RAPT has been installed, but a key hasn't been configured. Please create a new key, or restore android.keystore."
|
||||
new "RAPT 已安装,但尚未配置密钥。请创建一个新密钥,或恢复 android.keystore 文件。"
|
||||
|
||||
# game/android.rpy:38
|
||||
old "RAPT has been installed, but a bundle key hasn't been configured. Please create a new key, or restore bundle.keystore."
|
||||
new "RAPT 已安装,但尚未配置 bundle 密钥。请创建一个新密钥,或恢复 bundle.keystore 文件。"
|
||||
# game/android.rpy:39
|
||||
old "RAPT has been installed, but a key hasn't been configured. Please generate new keys, or copy android.keystore and bundle.keystore to the base directory."
|
||||
new "RAPT 已安装,但尚未配置密钥。请生成新的密钥,或将 android.keystore 和 bundle.keystore 复制到基础目录中。"
|
||||
|
||||
# game/android.rpy:39
|
||||
old "The current project has not been configured. Use \"Configure\" to configure it before building."
|
||||
@@ -73,12 +69,16 @@
|
||||
new "尝试模拟为安卓平板。\n\nEsc 和 PageUp 键将分别重映射为平板的菜单键和返回键。"
|
||||
|
||||
# game/android.rpy:45
|
||||
old "Attempts to emulate a televison-based Android console, like the OUYA or Fire TV.\n\nController input is mapped to the arrow keys, Enter is mapped to the select button, Escape is mapped to the menu button, and PageUp is mapped to the back button."
|
||||
new "尝试模拟为基于电视的安卓平台,例如 OUYA 或 Fire TV。\n\n键盘方向键将重映射为手柄方向键,Enter、Esc 和 PageUp 键将分别重映射为手柄的选择键、菜单键和返回键。"
|
||||
old "Attempts to emulate a televison-based Android console.\n\nController input is mapped to the arrow keys, Enter is mapped to the select button, Escape is mapped to the menu button, and PageUp is mapped to the back button."
|
||||
new "尝试模拟为基于电视的安卓游戏机。\n\n键盘方向键将重映射为手柄方向键,Enter、Esc 和 PageUp 键将分别重映射为手柄的选择键、菜单键和返回键。"
|
||||
|
||||
# game/android.rpy:47
|
||||
old "Downloads and installs the Android SDK and supporting packages. Optionally, generates the keys required to sign the package."
|
||||
new "下载并安装安卓 SDK 以及支持包。还可以选择生成对应用包进行签名所需的密钥。"
|
||||
old "Downloads and installs the Android SDK and supporting packages."
|
||||
new "下载并安装安卓 SDK 以及支持包。"
|
||||
|
||||
# game/android.rpy:49
|
||||
old "Generates the keys required to sign the package."
|
||||
new "生成对应用包进行签名所需的密钥。"
|
||||
|
||||
# game/android.rpy:48
|
||||
old "Configures the package name, version, and other information about this project."
|
||||
@@ -196,11 +196,6 @@
|
||||
old "Other:"
|
||||
new "其他:"
|
||||
|
||||
# game/android.rpy:452
|
||||
old "Logcat"
|
||||
# Automatic translation.
|
||||
new "洛克特"
|
||||
|
||||
# game/android.rpy:456
|
||||
old "List Devices"
|
||||
new "列出设备"
|
||||
@@ -354,12 +349,12 @@
|
||||
new "版本号应仅含数字和点。"
|
||||
|
||||
# game/androidstrings.rpy:32
|
||||
old "How much RAM do you want to allocate to Gradle?\n\nThis must be a positive integer number."
|
||||
new "您打算给 Gradle 分配多少内存?\n\n必须为正整数。"
|
||||
old "How much RAM (in GB) do you want to allocate to Gradle?\nThis must be a positive integer number."
|
||||
new "您希望为 Gradle 分配多少 GB 的内存?\n\n必须为正整数。"
|
||||
|
||||
# game/androidstrings.rpy:33
|
||||
old "The RAM size must contain only numbers."
|
||||
new "内存大小应仅含数字。"
|
||||
old "The RAM size must contain only numbers and be positive."
|
||||
new "内存大小应为正整数。"
|
||||
|
||||
# game/androidstrings.rpy:34
|
||||
old "How would you like your application to be displayed?"
|
||||
@@ -497,11 +492,6 @@
|
||||
old "Could not change the theme. Perhaps options.rpy was changed too much."
|
||||
new "无法更改主题。可能 options.rpy 已被过度修改。"
|
||||
|
||||
# game/choose_theme.rpy:371
|
||||
old "Planetarium"
|
||||
# Automatic translation.
|
||||
new "天文馆"
|
||||
|
||||
# game/choose_theme.rpy:426
|
||||
old "Choose Theme"
|
||||
new "选择主题"
|
||||
@@ -778,11 +768,6 @@
|
||||
old "Tutorial"
|
||||
new "教程"
|
||||
|
||||
# game/front_page.rpy:133
|
||||
old "The Question"
|
||||
# Automatic translation.
|
||||
new "问题"
|
||||
|
||||
# game/front_page.rpy:149
|
||||
old "Active Project"
|
||||
new "活跃项目"
|
||||
@@ -857,8 +842,7 @@
|
||||
|
||||
# game/front_page.rpy:218
|
||||
old "iOS"
|
||||
# Automatic translation.
|
||||
new "基础设施"
|
||||
new "iOS"
|
||||
|
||||
# game/front_page.rpy:219
|
||||
old "Web"
|
||||
@@ -1138,13 +1122,11 @@
|
||||
|
||||
# game/ios.rpy:298
|
||||
old "iPhone"
|
||||
# Automatic translation.
|
||||
new "笔记本电脑"
|
||||
new "iPhone"
|
||||
|
||||
# game/ios.rpy:302
|
||||
old "iPad"
|
||||
# Automatic translation.
|
||||
new "笔记本电脑"
|
||||
new "iPad"
|
||||
|
||||
# game/ios.rpy:322
|
||||
old "Select Xcode Projects Directory"
|
||||
@@ -1818,99 +1800,56 @@
|
||||
old "Before packaging web apps, you'll need to download RenPyWeb, Ren'Py's web support. Would you like to download RenPyWeb now?"
|
||||
new "在打包网页应用之前,您需要先下载 Ren'Py 网页支持包 RenPyWeb。您希望现在下载 RenPyWeb 吗?"
|
||||
|
||||
translate schinese strings:
|
||||
|
||||
# game/android.rpy:39
|
||||
old "RAPT has been installed, but a key hasn't been configured. Please generate new keys, or copy android.keystore and bundle.keystore to the base directory."
|
||||
# Automatic translation.
|
||||
new "RAPT已经安装,但还没有配置密钥。请生成新的密钥,或将android.keystore和bundle.keystore复制到基本目录中。"
|
||||
|
||||
# game/android.rpy:46
|
||||
old "Attempts to emulate a televison-based Android console.\n\nController input is mapped to the arrow keys, Enter is mapped to the select button, Escape is mapped to the menu button, and PageUp is mapped to the back button."
|
||||
# Automatic translation.
|
||||
new "试图模拟一个基于电视的安卓控制台。\n\n控制器的输入被映射到方向键上,回车键被映射到选择按钮上,Escape被映射到菜单按钮上,而PageUp被映射到返回按钮上。"
|
||||
|
||||
# game/android.rpy:48
|
||||
old "Downloads and installs the Android SDK and supporting packages."
|
||||
# Automatic translation.
|
||||
new "下载并安装Android SDK和支持包。"
|
||||
|
||||
# game/android.rpy:49
|
||||
old "Generates the keys required to sign the package."
|
||||
# Automatic translation.
|
||||
new "生成签署软件包所需的密钥。"
|
||||
|
||||
# game/android.rpy:383
|
||||
old "Install SDK"
|
||||
# Automatic translation.
|
||||
new "安装SDK"
|
||||
new "安装 SDK"
|
||||
|
||||
# game/android.rpy:387
|
||||
old "Generate Keys"
|
||||
# Automatic translation.
|
||||
new "生成钥匙"
|
||||
|
||||
# game/androidstrings.rpy:32
|
||||
old "How much RAM (in GB) do you want to allocate to Gradle?\nThis must be a positive integer number."
|
||||
# Automatic translation.
|
||||
new "你想给Gradle分配多少内存(GB)?\n这必须是一个正的整数。"
|
||||
|
||||
# game/androidstrings.rpy:33
|
||||
old "The RAM size must contain only numbers and be positive."
|
||||
# Automatic translation.
|
||||
new "RAM大小必须只包含数字,并且是正数。"
|
||||
new "生成密钥"
|
||||
|
||||
# game/androidstrings.rpy:38
|
||||
old "Which app store would you like to support in-app purchasing through?"
|
||||
# Automatic translation.
|
||||
new "你希望通过哪个应用商店支持应用内购买?"
|
||||
|
||||
# game/androidstrings.rpy:39
|
||||
old "Google Play."
|
||||
# Automatic translation.
|
||||
new "谷歌游戏。"
|
||||
new "您希望通过哪个应用商店支持应用内购买?"
|
||||
|
||||
# game/androidstrings.rpy:40
|
||||
old "Amazon App Store."
|
||||
# Automatic translation.
|
||||
new "亚马逊应用商店。"
|
||||
new "亚马逊(Amazon)应用商店。"
|
||||
|
||||
# game/androidstrings.rpy:41
|
||||
old "Both, in one app."
|
||||
# Automatic translation.
|
||||
new "两者都是,在一个应用程序中。"
|
||||
new "在一个应用程序中同时支持两者。"
|
||||
|
||||
# game/androidstrings.rpy:42
|
||||
old "Neither."
|
||||
# Automatic translation.
|
||||
new "也没有。"
|
||||
new "以上都不需要。"
|
||||
|
||||
# game/androidstrings.rpy:63
|
||||
old "I found an android.keystore file in the rapt directory. Do you want to use this file?"
|
||||
# Automatic translation.
|
||||
new "我在rapt目录中发现了一个android.keystore文件。你想使用这个文件吗?"
|
||||
new "我在 RAPT 目录中找到了一个 android.keystore 文件。您希望使用这个文件吗?"
|
||||
|
||||
# game/androidstrings.rpy:66
|
||||
old "\n\nSaying 'No' will prevent key creation."
|
||||
# Automatic translation.
|
||||
new "\n\n说 \"不 \"将阻止钥匙的创建。"
|
||||
new "\n\n选择“否”将阻止密钥创建。"
|
||||
|
||||
# game/androidstrings.rpy:69
|
||||
old "I found a bundle.keystore file in the rapt directory. Do you want to use this file?"
|
||||
# Automatic translation.
|
||||
new "我在rapt目录中发现了一个bundle.keystore文件。你想使用这个文件吗?"
|
||||
new "我在 RAPT 目录中找到了一个 bundle.keystore 文件。您希望使用这个文件吗?"
|
||||
|
||||
# game/distribute_gui.rpy:231
|
||||
old "(DLC)"
|
||||
new "(DLC)"
|
||||
new "(DLC)"
|
||||
|
||||
# game/project.rpy:46
|
||||
old "Lint checks your game for potential mistakes, and gives you statistics."
|
||||
# Automatic translation.
|
||||
new "林特检查你的游戏是否有潜在的错误,并给你统计。"
|
||||
new "Lint 工具会检查您的游戏中可能的错误,并为您提供统计数据。"
|
||||
|
||||
# game/web.rpy:485
|
||||
old "Creating package..."
|
||||
# Automatic translation.
|
||||
new "创建包..."
|
||||
new "正在创建应用包……"
|
||||
|
||||
# game/updater.rpy:79
|
||||
old "A nightly build of fixes to the release version of Ren'Py."
|
||||
new "对 Ren'Py 发布版进行修正的每夜构建。"
|
||||
|
||||
@@ -189,17 +189,9 @@
|
||||
new "## 匹配为文档模式的文件会在 Mac 应用程序构建中被复制,因此它们同时出现在 APP 和 ZIP 文件中。"
|
||||
|
||||
# gui/game/options.rpy:203
|
||||
old "## A Google Play license key is required to download expansion files and perform in-app purchases. It can be found on the \"Services & APIs\" page of the Google Play developer console."
|
||||
new "## 下载扩展文件和执行应用内购需要一个 Google Play 许可密钥。许可密钥可以在 Google Play 开发者控制台的“服务和 API”页面找到。"
|
||||
old "## A Google Play license key is required to perform in-app purchases. It can be found in the Google Play developer console, under \"Monetize\" > \"Monetization Setup\" > \"Licensing\"."
|
||||
new "## 执行应用内购需要一个 Google Play 许可密钥。许可密钥可以在 Google Play 开发者控制台的“Monetize” > “Monetization Setup” > “Licensing”页面找到。"
|
||||
|
||||
# gui/game/options.rpy:210
|
||||
old "## The username and project name associated with an itch.io project, separated by a slash."
|
||||
new "## 与 itch.io 项目相关的用户名和项目名,以 / 分隔。"
|
||||
|
||||
translate schinese strings:
|
||||
|
||||
# gui/game/options.rpy:203
|
||||
old "## A Google Play license key is required to perform in-app purchases. It can be found in the Google Play developer console, under \"Monetize\" > \"Monetization Setup\" > \"Licensing\"."
|
||||
# Automatic translation.
|
||||
new "##执行应用内购买需要一个Google Play许可证密钥。它可以在Google Play开发者控制台的 \"Monetize\" > \"Monetization Setup\" > \"Licensing \"下找到。"
|
||||
|
||||
|
||||
@@ -6,19 +6,19 @@
|
||||
|
||||
# gui/game/screens.rpy:81
|
||||
old "## In-game screens"
|
||||
new "## 游戏内界面"
|
||||
new "## 游戏内屏幕"
|
||||
|
||||
# gui/game/screens.rpy:85
|
||||
old "## Say screen"
|
||||
new "## 对话界面"
|
||||
new "## 对话屏幕"
|
||||
|
||||
# gui/game/screens.rpy:87
|
||||
old "## The say screen is used to display dialogue to the player. It takes two parameters, who and what, which are the name of the speaking character and the text to be displayed, respectively. (The who parameter can be None if no name is given.)"
|
||||
new "## 对话界面用于向用户显示对话。它需要两个参数,who 和 what,分别是叙述角色的名字和所叙述的文本。(如果没有名字,参数 who 可以是 None。)"
|
||||
new "## 对话屏幕用于向用户显示对话。它需要两个参数,who 和 what,分别是叙述角色的名字和所叙述的文本。(如果没有名字,参数 who 可以是 None。)"
|
||||
|
||||
# gui/game/screens.rpy:92
|
||||
old "## This screen must create a text displayable with id \"what\", as Ren'Py uses this to manage text display. It can also create displayables with id \"who\" and id \"window\" to apply style properties."
|
||||
new "## 此界面必须创建一个 id 为 what 的文本可视控件,因为 Ren'Py 使用它来管理文本显示。它还可以创建 id 为 who 和 id 为 window 的可视控件来应用样式属性。"
|
||||
new "## 此屏幕必须创建一个 id 为 what 的文本可视控件,因为 Ren'Py 使用它来管理文本显示。它还可以创建 id 为 who 和 id 为 window 的可视控件来应用样式属性。"
|
||||
|
||||
# gui/game/screens.rpy:96
|
||||
old "## https://www.renpy.org/doc/html/screen_special.html#say"
|
||||
@@ -34,15 +34,15 @@
|
||||
|
||||
# gui/game/screens.rpy:165
|
||||
old "## Input screen"
|
||||
new "## 输入界面"
|
||||
new "## 输入屏幕"
|
||||
|
||||
# gui/game/screens.rpy:167
|
||||
old "## This screen is used to display renpy.input. The prompt parameter is used to pass a text prompt in."
|
||||
new "## 此界面用于显示 renpy.input。prompt 参数用于传递文本提示。"
|
||||
new "## 此屏幕用于显示 renpy.input。prompt 参数用于传递文本提示。"
|
||||
|
||||
# gui/game/screens.rpy:170
|
||||
old "## This screen must create an input displayable with id \"input\" to accept the various input parameters."
|
||||
new "## 此界面必须创建一个 id 为 input 的输入可视控件来接受各种输入参数。"
|
||||
new "## 此屏幕必须创建一个 id 为 input 的输入可视控件来接受各种输入参数。"
|
||||
|
||||
# gui/game/screens.rpy:173
|
||||
old "## https://www.renpy.org/doc/html/screen_special.html#input"
|
||||
@@ -50,11 +50,11 @@
|
||||
|
||||
# gui/game/screens.rpy:200
|
||||
old "## Choice screen"
|
||||
new "## 选择界面"
|
||||
new "## 选择屏幕"
|
||||
|
||||
# gui/game/screens.rpy:202
|
||||
old "## This screen is used to display the in-game choices presented by the menu statement. The one parameter, items, is a list of objects, each with caption and action fields."
|
||||
new "## 此界面用于显示由 menu 语句生成的游戏内选项。参数 items 是一个对象列表,每个对象都有字幕和动作字段。"
|
||||
new "## 此屏幕用于显示由 menu 语句生成的游戏内选项。参数 items 是一个对象列表,每个对象都有字幕和动作字段。"
|
||||
|
||||
# gui/game/screens.rpy:206
|
||||
old "## https://www.renpy.org/doc/html/screen_special.html#choice"
|
||||
@@ -62,7 +62,7 @@
|
||||
|
||||
# gui/game/screens.rpy:234
|
||||
old "## Quick Menu screen"
|
||||
new "## 快捷菜单界面"
|
||||
new "## 快捷菜单屏幕"
|
||||
|
||||
# gui/game/screens.rpy:236
|
||||
old "## The quick menu is displayed in-game to provide easy access to the out-of-game menus."
|
||||
@@ -70,7 +70,7 @@
|
||||
|
||||
# gui/game/screens.rpy:241
|
||||
old "## Ensure this appears on top of other screens."
|
||||
new "## 确保该菜单出现在其他界面之上,"
|
||||
new "## 确保该菜单出现在其他屏幕之上,"
|
||||
|
||||
# gui/game/screens.rpy:252
|
||||
old "Back"
|
||||
@@ -106,19 +106,19 @@
|
||||
|
||||
# gui/game/screens.rpy:262
|
||||
old "## This code ensures that the quick_menu screen is displayed in-game, whenever the player has not explicitly hidden the interface."
|
||||
new "## 此代码确保只要用户没有主动隐藏界面,就会在游戏中显示 quick_menu 界面。"
|
||||
new "## 此代码确保只要用户没有主动隐藏界面,就会在游戏中显示 quick_menu 屏幕。"
|
||||
|
||||
# gui/game/screens.rpy:280
|
||||
old "## Main and Game Menu Screens"
|
||||
new "## 标题和游戏菜单界面"
|
||||
new "## 标题和游戏菜单屏幕"
|
||||
|
||||
# gui/game/screens.rpy:283
|
||||
old "## Navigation screen"
|
||||
new "## 导航界面"
|
||||
new "## 导航屏幕"
|
||||
|
||||
# gui/game/screens.rpy:285
|
||||
old "## This screen is included in the main and game menus, and provides navigation to other menus, and to start the game."
|
||||
new "## 该界面包含在标题菜单和游戏菜单中,并提供导航到其他菜单,以及启动游戏。"
|
||||
new "## 该屏幕包含在标题菜单和游戏菜单中,并提供导航到其他菜单,以及启动游戏。"
|
||||
|
||||
# gui/game/screens.rpy:300
|
||||
old "Start"
|
||||
@@ -138,7 +138,7 @@
|
||||
|
||||
# gui/game/screens.rpy:318
|
||||
old "Main Menu"
|
||||
new "标题界面"
|
||||
new "标题菜单"
|
||||
|
||||
# gui/game/screens.rpy:320
|
||||
old "About"
|
||||
@@ -162,7 +162,7 @@
|
||||
|
||||
# gui/game/screens.rpy:344
|
||||
old "## Main Menu screen"
|
||||
new "## 标题菜单界面"
|
||||
new "## 标题菜单屏幕"
|
||||
|
||||
# gui/game/screens.rpy:346
|
||||
old "## Used to display the main menu when Ren'Py starts."
|
||||
@@ -174,7 +174,7 @@
|
||||
|
||||
# gui/game/screens.rpy:352
|
||||
old "## This ensures that any other menu screen is replaced."
|
||||
new "## 此语句可确保替换掉任何其他菜单界面。"
|
||||
new "## 此语句可确保替换掉任何其他菜单屏幕。"
|
||||
|
||||
# gui/game/screens.rpy:357
|
||||
old "## This empty frame darkens the main menu."
|
||||
@@ -182,19 +182,19 @@
|
||||
|
||||
# gui/game/screens.rpy:361
|
||||
old "## The use statement includes another screen inside this one. The actual contents of the main menu are in the navigation screen."
|
||||
new "## use 语句将其他的界面包含进此界面。标题界面的实际内容在导航界面中。"
|
||||
new "## use 语句将其他的屏幕包含进此屏幕。标题屏幕的实际内容在导航屏幕中。"
|
||||
|
||||
# gui/game/screens.rpy:406
|
||||
old "## Game Menu screen"
|
||||
new "## 游戏菜单界面"
|
||||
new "## 游戏菜单屏幕"
|
||||
|
||||
# gui/game/screens.rpy:408
|
||||
old "## This lays out the basic common structure of a game menu screen. It's called with the screen title, and displays the background, title, and navigation."
|
||||
new "## 此界面列出了游戏菜单的基本共同结构。可使用界面标题调用,并显示背景、标题和导航菜单。"
|
||||
new "## 此屏幕列出了游戏菜单的基本共同结构。可使用屏幕标题调用,并显示背景、标题和导航菜单。"
|
||||
|
||||
# gui/game/screens.rpy:411
|
||||
old "## The scroll parameter can be None, or one of \"viewport\" or \"vpgrid\". When this screen is intended to be used with one or more children, which are transcluded (placed) inside it."
|
||||
new "## scroll 参数可以是 None,也可以是 viewport 或 vpgrid。当此界面与一个或多个子界面同时使用时,这些子界面将被嵌入(放置)在其中。"
|
||||
old "## The scroll parameter can be None, or one of \"viewport\" or \"vpgrid\". This screen is intended to be used with one or more children, which are transcluded (placed) inside it."
|
||||
new "## scroll 参数可以是 None,也可以是 viewport 或 vpgrid。此屏幕旨在与一个或多个子屏幕同时使用,这些子屏幕将被嵌入(放置)在其中。"
|
||||
|
||||
# gui/game/screens.rpy:429
|
||||
old "## Reserve space for the navigation section."
|
||||
@@ -206,19 +206,19 @@
|
||||
|
||||
# gui/game/screens.rpy:534
|
||||
old "## About screen"
|
||||
new "## 关于界面"
|
||||
new "## 关于屏幕"
|
||||
|
||||
# gui/game/screens.rpy:536
|
||||
old "## This screen gives credit and copyright information about the game and Ren'Py."
|
||||
new "## 此界面提供有关游戏和 Ren'Py 的制作人员和版权信息。"
|
||||
new "## 此屏幕提供有关游戏和 Ren'Py 的制作人员和版权信息。"
|
||||
|
||||
# gui/game/screens.rpy:539
|
||||
old "## There's nothing special about this screen, and hence it also serves as an example of how to make a custom screen."
|
||||
new "## 此界面没有什么特别之处,因此它也可以作为一个例子来说明如何制作一个自定义界面。"
|
||||
new "## 此屏幕没有什么特别之处,因此它也可以作为一个例子来说明如何制作一个自定义屏幕。"
|
||||
|
||||
# gui/game/screens.rpy:546
|
||||
old "## This use statement includes the game_menu screen inside this one. The vbox child is then included inside the viewport inside the game_menu screen."
|
||||
new "## 此 use 语句将 game_menu 界面包含到了这个界面内。子级 vbox 将包含在 game_menu 界面的 viewport 内。"
|
||||
new "## 此 use 语句将 game_menu 屏幕包含到了这个屏幕内。子级 vbox 将包含在 game_menu 屏幕的 viewport 内。"
|
||||
|
||||
# gui/game/screens.rpy:556
|
||||
old "Version [config.version!t]\n"
|
||||
@@ -234,11 +234,11 @@
|
||||
|
||||
# gui/game/screens.rpy:573
|
||||
old "## Load and Save screens"
|
||||
new "## 读取和保存界面"
|
||||
new "## 读取和保存屏幕"
|
||||
|
||||
# gui/game/screens.rpy:575
|
||||
old "## These screens are responsible for letting the player save the game and load it again. Since they share nearly everything in common, both are implemented in terms of a third screen, file_slots."
|
||||
new "## 这些界面负责让用户保存游戏并能够再次读取。由于它们几乎完全一样,因此这两个界面都是以第三个界面 file_slots 来实现的。"
|
||||
new "## 这些屏幕负责让用户保存游戏并能够再次读取。由于它们几乎完全一样,因此这两个屏幕都是以第三个屏幕 file_slots 来实现的。"
|
||||
|
||||
# gui/game/screens.rpy:579
|
||||
old "## https://www.renpy.org/doc/html/screen_special.html#save https://www.renpy.org/doc/html/screen_special.html#load"
|
||||
@@ -302,11 +302,11 @@
|
||||
|
||||
# gui/game/screens.rpy:704
|
||||
old "## Preferences screen"
|
||||
new "## 设置界面"
|
||||
new "## 设置屏幕"
|
||||
|
||||
# gui/game/screens.rpy:706
|
||||
old "## The preferences screen allows the player to configure the game to better suit themselves."
|
||||
new "## 设置界面允许用户配置游戏,使其更适合自己。"
|
||||
new "## 设置屏幕允许用户配置游戏,使其更适合自己。"
|
||||
|
||||
# gui/game/screens.rpy:709
|
||||
old "## https://www.renpy.org/doc/html/screen_special.html#preferences"
|
||||
@@ -371,11 +371,11 @@
|
||||
|
||||
# gui/game/screens.rpy:863
|
||||
old "## History screen"
|
||||
new "## 历史界面"
|
||||
new "## 历史屏幕"
|
||||
|
||||
# gui/game/screens.rpy:865
|
||||
old "## This is a screen that displays the dialogue history to the player. While there isn't anything special about this screen, it does have to access the dialogue history stored in _history_list."
|
||||
new "## 这是一个向用户显示对话历史的界面。虽然此界面没有什么特别之处,但它必须访问储存在 _history_list 中的对话历史记录。"
|
||||
new "## 这是一个向用户显示对话历史的屏幕。虽然此屏幕没有什么特别之处,但它必须访问储存在 _history_list 中的对话历史记录。"
|
||||
|
||||
# gui/game/screens.rpy:869
|
||||
old "## https://www.renpy.org/doc/html/history.html"
|
||||
@@ -383,7 +383,7 @@
|
||||
|
||||
# gui/game/screens.rpy:875
|
||||
old "## Avoid predicting this screen, as it can be very large."
|
||||
new "## 避免预缓存此界面,因为它可能非常大。"
|
||||
new "## 避免预缓存此屏幕,因为它可能非常大。"
|
||||
|
||||
# gui/game/screens.rpy:886
|
||||
old "## This lays things out properly if history_height is None."
|
||||
@@ -399,15 +399,15 @@
|
||||
|
||||
# gui/game/screens.rpy:908
|
||||
old "## This determines what tags are allowed to be displayed on the history screen."
|
||||
new "## 此代码决定了允许在历史记录界面上显示哪些标签。"
|
||||
new "## 此代码决定了允许在历史记录屏幕上显示哪些标签。"
|
||||
|
||||
# gui/game/screens.rpy:953
|
||||
old "## Help screen"
|
||||
new "## 帮助界面"
|
||||
new "## 帮助屏幕"
|
||||
|
||||
# gui/game/screens.rpy:955
|
||||
old "## A screen that gives information about key and mouse bindings. It uses other screens (keyboard_help, mouse_help, and gamepad_help) to display the actual help."
|
||||
new "## 提供有关键盘和鼠标映射信息的界面。它使用其它界面(keyboard_help、mouse_help 和 gamepad_help)来显示实际的帮助内容。"
|
||||
new "## 提供有关键盘和鼠标映射信息的屏幕。它使用其它屏幕(keyboard_help、mouse_help 和 gamepad_help)来显示实际的帮助内容。"
|
||||
|
||||
# gui/game/screens.rpy:974
|
||||
old "Keyboard"
|
||||
@@ -554,15 +554,15 @@
|
||||
|
||||
# gui/game/screens.rpy:1117
|
||||
old "## Additional screens"
|
||||
new "## 其他界面"
|
||||
new "## 其他屏幕"
|
||||
|
||||
# gui/game/screens.rpy:1121
|
||||
old "## Confirm screen"
|
||||
new "## 确认界面"
|
||||
new "## 确认屏幕"
|
||||
|
||||
# gui/game/screens.rpy:1123
|
||||
old "## The confirm screen is called when Ren'Py wants to ask the player a yes or no question."
|
||||
new "## 当 Ren'Py 需要询问用户有关确定或取消的问题时,会调用确认界面。"
|
||||
new "## 当 Ren'Py 需要询问用户有关确定或取消的问题时,会调用确认屏幕。"
|
||||
|
||||
# gui/game/screens.rpy:1126
|
||||
old "## https://www.renpy.org/doc/html/screen_special.html#confirm"
|
||||
@@ -570,7 +570,7 @@
|
||||
|
||||
# gui/game/screens.rpy:1130
|
||||
old "## Ensure other screens do not get input while this screen is displayed."
|
||||
new "## 显示此界面时,确保其他界面无法输入。"
|
||||
new "## 显示此屏幕时,确保其他屏幕无法输入。"
|
||||
|
||||
# gui/game/screens.rpy:1154
|
||||
old "Yes"
|
||||
@@ -586,11 +586,11 @@
|
||||
|
||||
# gui/game/screens.rpy:1184
|
||||
old "## Skip indicator screen"
|
||||
new "## 快进指示界面"
|
||||
new "## 快进指示屏幕"
|
||||
|
||||
# gui/game/screens.rpy:1186
|
||||
old "## The skip_indicator screen is displayed to indicate that skipping is in progress."
|
||||
new "## skip_indicator 界面用于指示快进正在进行中。"
|
||||
new "## skip_indicator 屏幕用于指示快进正在进行中。"
|
||||
|
||||
# gui/game/screens.rpy:1189
|
||||
old "## https://www.renpy.org/doc/html/screen_special.html#skip-indicator"
|
||||
@@ -610,11 +610,11 @@
|
||||
|
||||
# gui/game/screens.rpy:1240
|
||||
old "## Notify screen"
|
||||
new "## 通知界面"
|
||||
new "## 通知屏幕"
|
||||
|
||||
# gui/game/screens.rpy:1242
|
||||
old "## The notify screen is used to show the player a message. (For example, when the game is quicksaved or a screenshot has been taken.)"
|
||||
new "## 通知界面用于向用户显示消息。(例如,当游戏快速保存或进行截屏时。)"
|
||||
new "## 通知屏幕用于向用户显示消息。(例如,当游戏快速保存或进行截屏时。)"
|
||||
|
||||
# gui/game/screens.rpy:1245
|
||||
old "## https://www.renpy.org/doc/html/screen_special.html#notify-screen"
|
||||
@@ -622,11 +622,11 @@
|
||||
|
||||
# gui/game/screens.rpy:1279
|
||||
old "## NVL screen"
|
||||
new "## NVL 模式界面"
|
||||
new "## NVL 模式屏幕"
|
||||
|
||||
# gui/game/screens.rpy:1281
|
||||
old "## This screen is used for NVL-mode dialogue and menus."
|
||||
new "## 此界面用于 NVL 模式的对话和菜单。"
|
||||
new "## 此屏幕用于 NVL 模式的对话和菜单。"
|
||||
|
||||
# gui/game/screens.rpy:1283
|
||||
old "## https://www.renpy.org/doc/html/screen_special.html#nvl"
|
||||
@@ -637,8 +637,8 @@
|
||||
new "## 在 vpgrid 或 vbox 中显示对话框。"
|
||||
|
||||
# gui/game/screens.rpy:1307
|
||||
old "## Displays the menu, if given. The menu may be displayed incorrectly if config.narrator_menu is set to True, as it is above."
|
||||
new "## 显示菜单,如果给定的话。如果 config.narrator_menu 设置为 True,则菜单可能显示不正确,就像上面那样。"
|
||||
old "## Displays the menu, if given. The menu may be displayed incorrectly if config.narrator_menu is set to True."
|
||||
new "## 显示菜单,如果给定的话。如果 config.narrator_menu 设置为 True,则菜单可能显示不正确。"
|
||||
|
||||
# gui/game/screens.rpy:1337
|
||||
old "## This controls the maximum number of NVL-mode entries that can be displayed at once."
|
||||
@@ -656,41 +656,23 @@
|
||||
old "Menu"
|
||||
new "菜单"
|
||||
|
||||
translate schinese strings:
|
||||
|
||||
# gui/game/screens.rpy:676
|
||||
old "Upload Sync"
|
||||
# Automatic translation.
|
||||
new "上传同步"
|
||||
|
||||
# gui/game/screens.rpy:680
|
||||
old "Download Sync"
|
||||
# Automatic translation.
|
||||
new "下载同步器"
|
||||
|
||||
# gui/game/screens.rpy:1320
|
||||
old "## Displays the menu, if given. The menu may be displayed incorrectly if config.narrator_menu is set to True."
|
||||
# Automatic translation.
|
||||
new "## 显示菜单,如果给定的话。如果config.narrator_menu被设置为True,菜单可能会被错误地显示。"
|
||||
new "下载同步"
|
||||
|
||||
# gui/game/screens.rpy:1410
|
||||
old "## Bubble screen"
|
||||
# Automatic translation.
|
||||
new "## 泡沫屏幕"
|
||||
new "## 对话气泡屏幕"
|
||||
|
||||
# gui/game/screens.rpy:1412
|
||||
old "## The bubble screen is used to display dialogue to the player when using speech bubbles. The bubble screen takes the same parameters as the say screen, must create a displayable with the id of \"what\", and can create displayables with the \"namebox\", \"who\", and \"window\" ids."
|
||||
# Automatic translation.
|
||||
new "## 泡泡屏幕用于在使用语音泡泡时向玩家显示对话。泡泡屏的参数与say屏相同,必须创建一个id为 \"what \"的可显示文件,并且可以创建id为 \"namebox\"、\"who \"和 \"window \"的可显示文件。"
|
||||
new "## 对话气泡屏幕用于以对话气泡的形式向玩家显示对话。对话气泡屏幕的参数与 say 屏幕相同,必须创建一个 id 为 what 的可视控件,并且可以创建 id 为 namebox、who 和 window 的可视控件。"
|
||||
|
||||
# gui/game/screens.rpy:1417
|
||||
old "## https://www.renpy.org/doc/html/bubble.html#bubble-screen"
|
||||
new "## https://www.renpy.org/doc/html/bubble.html#bubble-screen"
|
||||
|
||||
translate schinese strings:
|
||||
|
||||
# gui/game/screens.rpy:411
|
||||
old "## The scroll parameter can be None, or one of \"viewport\" or \"vpgrid\". This screen is intended to be used with one or more children, which are transcluded (placed) inside it."
|
||||
# Automatic translation.
|
||||
new "##滚动参数可以是无,或者是 \"viewport \"或 \"vpgrid \"中的一个。这个屏幕旨在与一个或多个孩子一起使用,这些孩子被反括(放置)在它里面。"
|
||||
|
||||
|
||||
|
||||
@@ -889,3 +889,8 @@ translate spanish strings:
|
||||
# renpy/common/00sync.rpy:619
|
||||
old "Sync Error"
|
||||
new "Error de sincronización"
|
||||
|
||||
# renpy/common/00speechbubble.rpy:391
|
||||
old "(clear retained bubbles)"
|
||||
new "(borrar burbujas retenidas)"
|
||||
|
||||
|
||||
@@ -228,3 +228,18 @@
|
||||
old "Speech Bubble Editor (Shift+B)"
|
||||
new "Editor de burbujas de diálogo (Mayús+B)"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:69
|
||||
old "Show Translation Identifiers"
|
||||
new "Mostrar identificadores de traducción"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:72
|
||||
old "Hide Translation Identifiers"
|
||||
new "Ocultar identificadores de traducción"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:582
|
||||
old "\n{color=#fff}Copied to clipboard.{/color}"
|
||||
new "\n{color=#fff}Copiado en el portapapeles.{/color}"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:588
|
||||
old "\n{color=#fff}Click to copy.\nDrag to move.{/color}"
|
||||
new "\n{color=#fff}Haz clic para copiar.\nArrastre para mover.{/color}"
|
||||
|
||||
@@ -435,3 +435,9 @@
|
||||
# gui/game/gui.rpy:14
|
||||
old "## Enable checks for invalid or unstable properties in screens or transforms"
|
||||
new "## Habilitar comprobaciones de propiedades no válidas o inestables en pantallas o transformaciones."
|
||||
|
||||
# gui/game/gui.rpy:347
|
||||
old "## Additional space to add between history screen entries."
|
||||
new "## Espacio adicional para añadir entre las entradas de la pantalla de historial."
|
||||
|
||||
|
||||
|
||||
@@ -1185,7 +1185,7 @@
|
||||
|
||||
# updater.rpy:91
|
||||
old "Release"
|
||||
new "Lanzamiento"
|
||||
new "Estable"
|
||||
|
||||
# updater.rpy:97
|
||||
old "{b}Recommended.{/b} The version of Ren'Py that should be used in all newly-released games."
|
||||
@@ -1193,7 +1193,7 @@
|
||||
|
||||
# updater.rpy:102
|
||||
old "Prerelease"
|
||||
new "Prelanzamiento"
|
||||
new "Preliminar"
|
||||
|
||||
# updater.rpy:108
|
||||
old "A preview of the next version of Ren'Py that can be used for testing and taking advantage of new features, but not for final releases of games."
|
||||
@@ -1267,8 +1267,6 @@
|
||||
old "Proceed"
|
||||
new "Continuar"
|
||||
|
||||
translate spanish strings:
|
||||
|
||||
# game/add_file.rpy:37
|
||||
old "The file name may not be empty."
|
||||
new "El nombre del archivo no puede estar vacío."
|
||||
@@ -1279,11 +1277,11 @@ translate spanish strings:
|
||||
|
||||
# game/android.rpy:50
|
||||
old "Selects the Debug build, which can be accessed through Android Studio. Changing between debug and release builds requires an uninstall from your device."
|
||||
new "Selecciona la versión de depuración, a la que se puedes acceder a través de Android Studio. Cambiar entre las compilaciones de depuración y de versión requiere una desinstalación de su dispositivo."
|
||||
new "Selecciona la versión de depuración, a la que se puedes acceder a través de Android Studio. Cambiar entre las compilaciones de depuración y estable requiere una desinstalación de su dispositivo."
|
||||
|
||||
# game/android.rpy:51
|
||||
old "Selects the Release build, which can be uploaded to stores. Changing between debug and release builds requires an uninstall from your device."
|
||||
new "Selecciona la versión de lanzamiento, que se puede cargar en las tiendas. Cambiar entre las compilaciones de depuración y de versión requiere una desinstalación de su dispositivo."
|
||||
new "Selecciona la versión estable, que se puede cargar en las tiendas. Cambiar entre las compilaciones de depuración y estable requiere una desinstalación de su dispositivo."
|
||||
|
||||
# game/androidstrings.rpy:7
|
||||
old "{} is not a directory."
|
||||
@@ -2007,7 +2005,7 @@ translate spanish strings:
|
||||
|
||||
# game/web.rpy:344
|
||||
old "We will restore support in a future release of Ren'Py 8. Until then, please use Ren'Py 7 for web support."
|
||||
new "Restauraremos el soporte en una versión futura de Ren'Py 8. Hasta entonces, use Ren'Py 7 para soporte web."
|
||||
new "Restauraremos el soporte en una versión estable futura de Ren'Py 8. Hasta entonces, use Ren'Py 7 para soporte web."
|
||||
|
||||
# game/preferences.rpy:104
|
||||
old "General"
|
||||
@@ -2047,11 +2045,11 @@ translate spanish strings:
|
||||
|
||||
# game/updater.rpy:77
|
||||
old "Nightly (Ren'Py 8, Python 3)"
|
||||
new "Nightly (Ren'Py 8, Python 3)"
|
||||
new "Nocturna (Ren'Py 8, Python 3)"
|
||||
|
||||
# game/updater.rpy:78
|
||||
old "Nightly (Ren'Py 7, Python 2)"
|
||||
new "Nightly (Ren'Py 7, Python 2)"
|
||||
new "Nocturna (Ren'Py 7, Python 2)"
|
||||
|
||||
# game/preferences.rpy:327
|
||||
old "{#in language font}Welcome! Please choose a language"
|
||||
@@ -2116,3 +2114,39 @@ translate spanish strings:
|
||||
# game/androidstrings.rpy:69
|
||||
old "I found a bundle.keystore file in the rapt directory. Do you want to use this file?"
|
||||
new "He encontrado un archivo bundle.keystore en el directorio rapt. ¿Quieres usar este archivo?"
|
||||
|
||||
# game/updater.rpy:79
|
||||
old "A nightly build of fixes to the release version of Ren'Py."
|
||||
new "Compilación nocturna de correcciones para la versión estable de Ren'Py."
|
||||
|
||||
# game/updater.rpy:76
|
||||
old "Nightly Fix"
|
||||
new "Correciones nocturnas"
|
||||
|
||||
# game/updater.rpy:77
|
||||
old "Nightly Fix (Ren'Py 8, Python 3)"
|
||||
new "Correciones nocturnas (Ren'Py 8, Python 3)"
|
||||
|
||||
# game/updater.rpy:78
|
||||
old "Nightly Fix (Ren'Py 7, Python 2)"
|
||||
new "Correciones nocturnas (Ren'Py 7, Python 2)"
|
||||
|
||||
# game/choose_directory.rpy:72
|
||||
old "No directory was selected, but one is required."
|
||||
new "No se seleccionó un directorio, pero uno requerido."
|
||||
|
||||
# game/choose_directory.rpy:79
|
||||
old "The selected directory does not exist."
|
||||
new "El directorio seleccionado no existe."
|
||||
|
||||
# game/choose_directory.rpy:81
|
||||
old "The selected directory is not writable."
|
||||
new "No se puede escribir en el directorio seleccionado."
|
||||
|
||||
# game/distribute.rpy:554
|
||||
old "This may be derived from build.name and config.version or build.version."
|
||||
new "Puede derivarse de build.name y config.version o build.version."
|
||||
|
||||
# game/distribute.rpy:532
|
||||
old "Building distributions failed:\n\nThe project is the Ren'Py Tutorial, which can't be distributed outside of Ren'Py. Consider using The Question as a test project."
|
||||
new "La compilación de distribuciones falló:\n\nEl proyecto es el Tutorial de Ren'Py, que no puede ser distribuido fuera de Ren'Py. Considera usar The Question como proyecto de prueba."
|
||||
|
||||
@@ -2095,3 +2095,11 @@ translate turkish strings:
|
||||
# Automatic translation.
|
||||
new "Web uygulamalarını paketlemeden önce, Ren'Py'nin web desteği olan RenPyWeb'i indirmeniz gerekir. RenPyWeb'i şimdi indirmek ister misiniz?"
|
||||
|
||||
|
||||
translate turkish strings:
|
||||
|
||||
# game/updater.rpy:79
|
||||
old "A nightly build of fixes to the release version of Ren'Py."
|
||||
# Automatic translation.
|
||||
new "Ren'Py'nin sürümüne yönelik düzeltmelerden oluşan bir gece derlemesi."
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ translate ukrainian strings:
|
||||
|
||||
# 00action_file.rpy:26
|
||||
old "{#weekday}Friday"
|
||||
new "{#weekday}П'ятниця"
|
||||
new "{#weekday}П’ятниця"
|
||||
|
||||
# 00action_file.rpy:26
|
||||
old "{#weekday}Saturday"
|
||||
@@ -59,51 +59,51 @@ translate ukrainian strings:
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}January"
|
||||
new "{#month}Січня"
|
||||
new "{#month}січня"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}February"
|
||||
new "{#month}Лютого"
|
||||
new "{#month}лютого"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}March"
|
||||
new "{#month}Березня"
|
||||
new "{#month}березня"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}April"
|
||||
new "{#month}Квітня"
|
||||
new "{#month}квітня"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}May"
|
||||
new "{#month}Травня"
|
||||
new "{#month}травня"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}June"
|
||||
new "{#month}Червня"
|
||||
new "{#month}червня"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}July"
|
||||
new "{#month}Липня"
|
||||
new "{#month}липня"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}August"
|
||||
new "{#month}Серпня"
|
||||
new "{#month}серпня"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}September"
|
||||
new "{#month}Вересня"
|
||||
new "{#month}вересня"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}October"
|
||||
new "{#month}Жовтня"
|
||||
new "{#month}жовтня"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}November"
|
||||
new "{#month}Листопада"
|
||||
new "{#month}листопада"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}December"
|
||||
new "{#month}Грудня"
|
||||
new "{#month}грудня"
|
||||
|
||||
# 00action_file.rpy:63
|
||||
old "{#month_short}Jan"
|
||||
@@ -155,19 +155,19 @@ translate ukrainian strings:
|
||||
|
||||
# 00action_file.rpy:240
|
||||
old "%b %d, %H:%M"
|
||||
new "%d %b, %H:%M"
|
||||
new "%b %d, %H:%M"
|
||||
|
||||
# 00action_file.rpy:353
|
||||
old "Save slot %s: [text]"
|
||||
new "Слот збереження %s: [text]"
|
||||
new "Зберегти комірку %s: [text]"
|
||||
|
||||
# 00action_file.rpy:434
|
||||
old "Load slot %s: [text]"
|
||||
new "Слот завантаження %s: [text]"
|
||||
new "Завантажити комірку %s: [text]"
|
||||
|
||||
# 00action_file.rpy:487
|
||||
old "Delete slot [text]"
|
||||
new "Видалити слот [text]"
|
||||
new "Видалити комірку [text]"
|
||||
|
||||
# 00action_file.rpy:569
|
||||
old "File page auto"
|
||||
@@ -179,19 +179,19 @@ translate ukrainian strings:
|
||||
|
||||
# 00action_file.rpy:573
|
||||
old "File page [text]"
|
||||
new "Сторінка збережень [text]"
|
||||
new "Сторінка [text]"
|
||||
|
||||
# 00action_file.rpy:763
|
||||
old "Next file page."
|
||||
new "Наступна сторінка збережень."
|
||||
new "Наступна сторінка."
|
||||
|
||||
# 00action_file.rpy:827
|
||||
old "Previous file page."
|
||||
new "Минула сторінка збережень"
|
||||
new "Попередня сторінка"
|
||||
|
||||
# 00action_file.rpy:888
|
||||
old "Quick save complete."
|
||||
new "Швидке збереження завершено."
|
||||
new "Швидке збереження виконано."
|
||||
|
||||
# 00action_file.rpy:906
|
||||
old "Quick save."
|
||||
@@ -207,7 +207,7 @@ translate ukrainian strings:
|
||||
|
||||
# 00director.rpy:708
|
||||
old "The interactive director is not enabled here."
|
||||
new "Інтерактивний директор недоступний."
|
||||
new "Інтерактивний режисер тут не ввімкнений."
|
||||
|
||||
# 00director.rpy:1481
|
||||
old "⬆"
|
||||
@@ -219,7 +219,7 @@ translate ukrainian strings:
|
||||
|
||||
# 00director.rpy:1551
|
||||
old "Done"
|
||||
new "Прийняти"
|
||||
new "Готово"
|
||||
|
||||
# 00director.rpy:1561
|
||||
old "(statement)"
|
||||
@@ -231,7 +231,7 @@ translate ukrainian strings:
|
||||
|
||||
# 00director.rpy:1563
|
||||
old "(attributes)"
|
||||
new "(атрибут)"
|
||||
new "(атрибути)"
|
||||
|
||||
# 00director.rpy:1564
|
||||
old "(transform)"
|
||||
@@ -247,7 +247,7 @@ translate ukrainian strings:
|
||||
|
||||
# 00director.rpy:1602
|
||||
old "(filename)"
|
||||
new "(ім'я файла)"
|
||||
new "(ім’я файла)"
|
||||
|
||||
# 00director.rpy:1631
|
||||
old "Change"
|
||||
@@ -263,19 +263,19 @@ translate ukrainian strings:
|
||||
|
||||
# 00director.rpy:1639
|
||||
old "Remove"
|
||||
new "Видалити"
|
||||
new "Вилучити"
|
||||
|
||||
# 00director.rpy:1674
|
||||
old "Statement:"
|
||||
new "Функції:"
|
||||
new "Функція:"
|
||||
|
||||
# 00director.rpy:1695
|
||||
old "Tag:"
|
||||
new "Теги:"
|
||||
new "Тег:"
|
||||
|
||||
# 00director.rpy:1711
|
||||
old "Attributes:"
|
||||
new "Атрибут:"
|
||||
new "Атрибути:"
|
||||
|
||||
# 00director.rpy:1729
|
||||
old "Transforms:"
|
||||
@@ -287,15 +287,15 @@ translate ukrainian strings:
|
||||
|
||||
# 00director.rpy:1767
|
||||
old "Transition:"
|
||||
new "Переходи:"
|
||||
new "Перехід:"
|
||||
|
||||
# 00director.rpy:1785
|
||||
old "Channel:"
|
||||
new "Канали:"
|
||||
new "Канал:"
|
||||
|
||||
# 00director.rpy:1803
|
||||
old "Audio Filename:"
|
||||
new "Ім'я файла:"
|
||||
new "Ім’я аудіофайлу::"
|
||||
|
||||
# 00gui.rpy:370
|
||||
old "Are you sure?"
|
||||
@@ -303,63 +303,63 @@ translate ukrainian strings:
|
||||
|
||||
# 00gui.rpy:371
|
||||
old "Are you sure you want to delete this save?"
|
||||
new "Ви впевнені що хочете видалити це збереження?"
|
||||
new "Ви дійсно бажаєте видалити збереження?"
|
||||
|
||||
# 00gui.rpy:372
|
||||
old "Are you sure you want to overwrite your save?"
|
||||
new "Ви впевнені що хочете перезаписати ваше збереження?"
|
||||
new "Ви дійсно бажаєте перезаписати збереження?"
|
||||
|
||||
# 00gui.rpy:373
|
||||
old "Loading will lose unsaved progress.\nAre you sure you want to do this?"
|
||||
new "Завантаження гри приведе до втрати незбереженого прогресу.\nВи впевнені що хочете це зробити?"
|
||||
new "Завантаження гри приведе до втрати незбереженого прогресу.\nВи дійсно бажаєте це зробити?"
|
||||
|
||||
# 00gui.rpy:374
|
||||
old "Are you sure you want to quit?"
|
||||
new "Ви впевнені що бажаєте вийти?"
|
||||
new "Ви дійсно бажаєте вийти?"
|
||||
|
||||
# 00gui.rpy:375
|
||||
old "Are you sure you want to return to the main menu?\nThis will lose unsaved progress."
|
||||
new "Ви впевнені, що хочете повернутися до головного меню?\nЦе призведе до втрати незбереженого прогресу."
|
||||
new "Ви дійсно бажаєте повернутися до головного меню?\nЦе призведе до втрати незбереженого прогресу."
|
||||
|
||||
# 00gui.rpy:376
|
||||
old "Are you sure you want to end the replay?"
|
||||
new "Ви впевнені, що хочете завершити повтор?"
|
||||
new "Ви дійсно бажаєте закінчити повтор?"
|
||||
|
||||
# 00gui.rpy:377
|
||||
old "Are you sure you want to begin skipping?"
|
||||
new "Ви впевнені, що бажаєте пропустити?"
|
||||
new "Ви дійсно бажаєте почати пропускати?"
|
||||
|
||||
# 00gui.rpy:378
|
||||
old "Are you sure you want to skip to the next choice?"
|
||||
new "Ви точно хочете пропустити все до наступного вибору?"
|
||||
new "Ви дійсно бажаєте пропустити все до наступного вибору?"
|
||||
|
||||
# 00gui.rpy:379
|
||||
old "Are you sure you want to skip unseen dialogue to the next choice?"
|
||||
new "Ви впевнені, що хочете пропустити непрочитані діалоги до наступного вибору?"
|
||||
new "Ви дійсно бажаєте пропустити непрочитані діалоги до наступного вибору?"
|
||||
|
||||
# 00keymap.rpy:258
|
||||
old "Failed to save screenshot as %s."
|
||||
new "Провалено спробу зберегти скріншот як %s."
|
||||
new "Не вдалося зберегти знімок екрана як %s."
|
||||
|
||||
# 00keymap.rpy:270
|
||||
old "Saved screenshot as %s."
|
||||
new "Скріншот збережений як %s."
|
||||
new "Знімок екрана збережено як %s."
|
||||
|
||||
# 00library.rpy:146
|
||||
old "Self-voicing disabled."
|
||||
new "Синтезатор мови вимкнено."
|
||||
new "Синтез мовлення вимкнено."
|
||||
|
||||
# 00library.rpy:147
|
||||
old "Clipboard voicing enabled. "
|
||||
new "Озвучення буфера обміну включено."
|
||||
new "Озвучення буфера обміну увімкнено."
|
||||
|
||||
# 00library.rpy:148
|
||||
old "Self-voicing enabled. "
|
||||
new "Синтезатор мови включений."
|
||||
new "Синтез мовлення увімкнено."
|
||||
|
||||
# 00library.rpy:150
|
||||
old "bar"
|
||||
new "Смуга налаштування"
|
||||
new "смуга"
|
||||
|
||||
# 00library.rpy:151
|
||||
old "selected"
|
||||
@@ -371,39 +371,39 @@ translate ukrainian strings:
|
||||
|
||||
# 00library.rpy:153
|
||||
old "horizontal scroll"
|
||||
new "горизонтальна смуга прокручування"
|
||||
new "горизонтальне прокручування"
|
||||
|
||||
# 00library.rpy:154
|
||||
old "vertical scroll"
|
||||
new "вертикальна смуга прокручування"
|
||||
new "вертикальне прокручування"
|
||||
|
||||
# 00library.rpy:155
|
||||
old "activate"
|
||||
new "елемент активовано"
|
||||
new "увімкнути"
|
||||
|
||||
# 00library.rpy:156
|
||||
old "deactivate"
|
||||
new "елемент деактивовано"
|
||||
new "вимкнути"
|
||||
|
||||
# 00library.rpy:157
|
||||
old "increase"
|
||||
new "більше"
|
||||
new "збільшити"
|
||||
|
||||
# 00library.rpy:158
|
||||
old "decrease"
|
||||
new "менше"
|
||||
new "зменшити"
|
||||
|
||||
# 00library.rpy:193
|
||||
old "Skip Mode"
|
||||
new "Режим Пропуску"
|
||||
new "Режим пропуску"
|
||||
|
||||
# 00library.rpy:279
|
||||
old "This program contains free software under a number of licenses, including the MIT License and GNU Lesser General Public License. A complete list of software, including links to full source code, can be found {a=https://www.renpy.org/l/license}here{/a}."
|
||||
new "Ця програма містить вільне та відкрите програмне забезпечення під кількома ліцензіями, включаючи ліцензію MIT та GNU Lesser General Public. Повний список ліцензій, враховуючи посилання на повний вихідний код, можна знайти {a=https://www.renpy.org/l/license}тут{/a}."
|
||||
new "Ця програма містить вільне програмне забезпечення під низкою ліцензій, зокрема ліцензією MIT та GNU Lesser General Public License. Повний список ПЗ, включно з посиланнями на повний вихідний код, можна знайти {a=https://www.renpy.org/l/license}тут{/a}."
|
||||
|
||||
# 00preferences.rpy:207
|
||||
old "display"
|
||||
new "режим екрана"
|
||||
new "режим показу"
|
||||
|
||||
# 00preferences.rpy:219
|
||||
old "transitions"
|
||||
@@ -415,11 +415,11 @@ translate ukrainian strings:
|
||||
|
||||
# 00preferences.rpy:230
|
||||
old "video sprites"
|
||||
new "відео-спрайти"
|
||||
new "відео спрайти"
|
||||
|
||||
# 00preferences.rpy:239
|
||||
old "show empty window"
|
||||
new "показувати порожнє вікно діалогу"
|
||||
new "показати порожнє вікно"
|
||||
|
||||
# 00preferences.rpy:248
|
||||
old "text speed"
|
||||
@@ -443,11 +443,11 @@ translate ukrainian strings:
|
||||
|
||||
# 00preferences.rpy:271
|
||||
old "skip unseen text"
|
||||
new "пропускати весь текст"
|
||||
new "пропускати увесь текст"
|
||||
|
||||
# 00preferences.rpy:273
|
||||
old "begin skipping"
|
||||
new "почати пропуск"
|
||||
new "почати пропускати"
|
||||
|
||||
# 00preferences.rpy:277
|
||||
old "after choices"
|
||||
@@ -459,23 +459,23 @@ translate ukrainian strings:
|
||||
|
||||
# 00preferences.rpy:286
|
||||
old "auto-forward time"
|
||||
new "швидкість авточитання"
|
||||
new "швидкість перемотки"
|
||||
|
||||
# 00preferences.rpy:300
|
||||
old "auto-forward"
|
||||
new "авточитання"
|
||||
new "перемотка"
|
||||
|
||||
# 00preferences.rpy:307
|
||||
old "Auto forward"
|
||||
new "Авточитання"
|
||||
new "Перемотка"
|
||||
|
||||
# 00preferences.rpy:310
|
||||
old "auto-forward after click"
|
||||
new "продовжувати авточитання після кліку"
|
||||
new "перемотка після дотику"
|
||||
|
||||
# 00preferences.rpy:319
|
||||
old "automatic move"
|
||||
new "автоматично пересувати мишу до кнопки" ###
|
||||
new "автоматичний рух"
|
||||
|
||||
# 00preferences.rpy:328
|
||||
old "wait for voice"
|
||||
@@ -483,23 +483,23 @@ translate ukrainian strings:
|
||||
|
||||
# 00preferences.rpy:337
|
||||
old "voice sustain"
|
||||
new "не зупиняти голос"
|
||||
new "підтримка голосу"
|
||||
|
||||
# 00preferences.rpy:346
|
||||
old "self voicing"
|
||||
new "озвучка через синтезатор мови"
|
||||
new "синтез мовлення"
|
||||
|
||||
# 00preferences.rpy:355
|
||||
old "clipboard voicing"
|
||||
new "синтез мови з буфера обміну"
|
||||
new "озвучення буфера обміну"
|
||||
|
||||
# 00preferences.rpy:364
|
||||
old "debug voicing"
|
||||
new "режим дебагу синтезу мови"
|
||||
new "режим налагодження синтезу мови"
|
||||
|
||||
# 00preferences.rpy:373
|
||||
old "emphasize audio"
|
||||
new "посилити гучність заздалегідь заданих звукових каналів рахунок приглушення інших каналів"
|
||||
new "виділити звук"
|
||||
|
||||
# 00preferences.rpy:382
|
||||
old "rollback side"
|
||||
@@ -507,15 +507,15 @@ translate ukrainian strings:
|
||||
|
||||
# 00preferences.rpy:392
|
||||
old "gl powersave"
|
||||
new "налаштування графіки. Економія енергії"
|
||||
new "економія енергії"
|
||||
|
||||
# 00preferences.rpy:398
|
||||
old "gl framerate"
|
||||
new "налаштування графіки. Частота кадрів"
|
||||
new "частота кадрів"
|
||||
|
||||
# 00preferences.rpy:401
|
||||
old "gl tearing"
|
||||
new "налаштування графіки. Розривання кадрів"
|
||||
new "розрив кадрів"
|
||||
|
||||
# 00preferences.rpy:413
|
||||
old "music volume"
|
||||
@@ -523,11 +523,11 @@ translate ukrainian strings:
|
||||
|
||||
# 00preferences.rpy:414
|
||||
old "sound volume"
|
||||
new "гучність звуків"
|
||||
new "гучність звук. ефектів"
|
||||
|
||||
# 00preferences.rpy:415
|
||||
old "voice volume"
|
||||
new "гучність голосу"
|
||||
new "гучність озвучення"
|
||||
|
||||
# 00preferences.rpy:416
|
||||
old "mute music"
|
||||
@@ -535,39 +535,39 @@ translate ukrainian strings:
|
||||
|
||||
# 00preferences.rpy:417
|
||||
old "mute sound"
|
||||
new "без звуків"
|
||||
new "без звук. ефектів"
|
||||
|
||||
# 00preferences.rpy:418
|
||||
old "mute voice"
|
||||
new "без голосу"
|
||||
new "без озвучення"
|
||||
|
||||
# 00preferences.rpy:419
|
||||
old "mute all"
|
||||
new "режим без звуку"
|
||||
new "без звуку"
|
||||
|
||||
# 00preferences.rpy:500
|
||||
old "Clipboard voicing enabled. Press 'shift+C' to disable."
|
||||
new "Озвучення буфера обміну увімкнено. Натисніть 'shift+C', щоб вимкнути це."
|
||||
new "Озвучення буфера обміну увімкнено. Натисніть 'shift+C', щоб вимкнути."
|
||||
|
||||
# 00preferences.rpy:502
|
||||
old "Self-voicing would say \"[renpy.display.tts.last]\". Press 'alt+shift+V' to disable."
|
||||
new "Синтезатор мови повинен сказати \"[renpy.display.tts.last]\". Натисніть 'alt+shift+V', щоб відключити його."
|
||||
new "Синтез мовлення має сказати \"[renpy.display.tts.last]\". Натисніть 'alt+shift+V', щоб вимкнути."
|
||||
|
||||
# 00preferences.rpy:504
|
||||
old "Self-voicing enabled. Press 'v' to disable."
|
||||
new "Синтезатор мови включено. Натисніть 'v', щоб вимкнути його."
|
||||
new "Синтез мовлення увімкнено. Натисніть 'v', щоб вимкнути його."
|
||||
|
||||
# _compat\gamemenu.rpym:198
|
||||
old "Empty Slot."
|
||||
new "Порожній слот"
|
||||
new "Порожній комірка."
|
||||
|
||||
# _compat\gamemenu.rpym:355
|
||||
old "Previous"
|
||||
new "Назад"
|
||||
new "Попередня"
|
||||
|
||||
# _compat\gamemenu.rpym:362
|
||||
old "Next"
|
||||
new "Далі"
|
||||
new "Наступна"
|
||||
|
||||
# _compat\preferences.rpym:428
|
||||
old "Joystick Mapping"
|
||||
@@ -579,7 +579,7 @@ translate ukrainian strings:
|
||||
|
||||
# _developer\developer.rpym:43
|
||||
old "Interactive Director (D)"
|
||||
new "Інтерактивний Директор (D)"
|
||||
new "Інтерактивний режисер (D)"
|
||||
|
||||
# _developer\developer.rpym:45
|
||||
old "Reload Game (Shift+R)"
|
||||
@@ -591,11 +591,11 @@ translate ukrainian strings:
|
||||
|
||||
# _developer\developer.rpym:49
|
||||
old "Variable Viewer"
|
||||
new "Перегляд змінних"
|
||||
new "Переглядач змінних"
|
||||
|
||||
# _developer\developer.rpym:51
|
||||
old "Image Location Picker"
|
||||
new "Інструмент позиціонування на зображеннях"
|
||||
new "Вибір розташування зображень"
|
||||
|
||||
# _developer\developer.rpym:53
|
||||
old "Filename List"
|
||||
@@ -603,11 +603,11 @@ translate ukrainian strings:
|
||||
|
||||
# _developer\developer.rpym:57
|
||||
old "Show Image Load Log (F4)"
|
||||
new "Показати лог завантаження зображень (F4)"
|
||||
new "Показати журнал завант. зображень (F4)"
|
||||
|
||||
# _developer\developer.rpym:60
|
||||
old "Hide Image Load Log (F4)"
|
||||
new "Скрыть лог загрузки изображений (F4)"
|
||||
new "Сховати журнал завант. зображень (F4)"
|
||||
|
||||
# _developer\developer.rpym:63
|
||||
old "Image Attributes"
|
||||
@@ -623,7 +623,7 @@ translate ukrainian strings:
|
||||
|
||||
# _developer\developer.rpym:137
|
||||
old "Nothing to inspect."
|
||||
new "Змінні не задано."
|
||||
new "Нічого оглядати."
|
||||
|
||||
# _developer\developer.rpym:265
|
||||
old "Return to the developer menu"
|
||||
@@ -639,27 +639,27 @@ translate ukrainian strings:
|
||||
|
||||
# _developer\developer.rpym:435
|
||||
old "Right-click or escape to quit."
|
||||
new "Натисніть праву кнопку миші або ESC, щоб вийти."
|
||||
new "Натисніть ПКМ або Escape, щоб вийти."
|
||||
|
||||
# _developer\developer.rpym:467
|
||||
old "Rectangle copied to clipboard."
|
||||
new "Координати прямокутника скопійовані в буфер обміну."
|
||||
new "Координати прямокутника скопійовано в буфер обміну."
|
||||
|
||||
# _developer\developer.rpym:470
|
||||
old "Position copied to clipboard."
|
||||
new "Координати позиції скопійовані у буфер обміну."
|
||||
new "Координати позиції скопійовано у буфер обміну."
|
||||
|
||||
# _developer\developer.rpym:489
|
||||
old "Type to filter: "
|
||||
new "Поточний фільтр: "
|
||||
new "Фільтр: "
|
||||
|
||||
# _developer\developer.rpym:617
|
||||
old "Textures: [tex_count] ([tex_size_mb:.1f] MB)"
|
||||
new "Текстур: [tex_count] ([tex_size_mb:.1f] МБ)"
|
||||
new "Текстури: [tex_count] ([tex_size_mb:.1f] Мб)"
|
||||
|
||||
# _developer\developer.rpym:621
|
||||
old "Image cache: [cache_pct:.1f]% ([cache_size_mb:.1f] MB)"
|
||||
new "Кеш зображень: [cache_pct:.1f]% ([cache_size_mb:.1f] МБ)"
|
||||
new "Кеш зображень: [cache_pct:.1f]% ([cache_size_mb:.1f] Мб)"
|
||||
|
||||
# _developer\developer.rpym:631
|
||||
old "✔ "
|
||||
@@ -671,11 +671,11 @@ translate ukrainian strings:
|
||||
|
||||
# _developer\developer.rpym:639
|
||||
old "\n{color=#cfc}✔ predicted image (good){/color}\n{color=#fcc}✘ unpredicted image (bad){/color}\n{color=#fff}Drag to move.{/color}"
|
||||
new "\n{color=#cfc}✔ передбачене зображення (добре){/color}\n{color=#fcc}✘ раптове зображення (погано){/color}\n{color=#fff}Натисніть, щоб пересунути.{/color}"
|
||||
new "\n{color=#cfc}✔ передбачене зображення (добре){/color}\n{color=#fcc}✘ раптове зображення (погано){/color}\n{color=#fff}Перетягніть, щоб перемістити.{/color}"
|
||||
|
||||
# _developer\inspector.rpym:38
|
||||
old "Displayable Inspector"
|
||||
new "Диспетчер об'єктів"
|
||||
new "Оглядач об’єктів"
|
||||
|
||||
# _developer\inspector.rpym:61
|
||||
old "Size"
|
||||
@@ -691,23 +691,23 @@ translate ukrainian strings:
|
||||
|
||||
# _developer\inspector.rpym:122
|
||||
old "Inspecting Styles of [displayable_name!q]"
|
||||
new "Інспектую стилі [displayable_name!q]"
|
||||
new "Оглядання стилів [displayable_name!q]"
|
||||
|
||||
# _developer\inspector.rpym:139
|
||||
old "displayable:"
|
||||
new "об'єкт:"
|
||||
new "об’єкт:"
|
||||
|
||||
# _developer\inspector.rpym:145
|
||||
old " (no properties affect the displayable)"
|
||||
new " (на об'єкт не впливають жодні параметри)"
|
||||
new " (на об’єкт не впливають жодні параметри)"
|
||||
|
||||
# _developer\inspector.rpym:147
|
||||
old " (default properties omitted)"
|
||||
new " (налаштування за замовчуванням опущено)"
|
||||
new " (стандартні властивості опущено)"
|
||||
|
||||
# _developer\inspector.rpym:185
|
||||
old "<repr() failed>"
|
||||
new "<repr() провалений>"
|
||||
new "<repr() failed>"
|
||||
|
||||
# _layout\classic_load_save.rpym:170
|
||||
old "a"
|
||||
@@ -719,11 +719,11 @@ translate ukrainian strings:
|
||||
|
||||
# 00iap.rpy:217
|
||||
old "Contacting App Store\nPlease Wait..."
|
||||
new "Зв'язуюсь з App Store\nБудь ласка, чекайте..."
|
||||
new "Зв’язок з App Store\nБудь ласка, зачекайте..."
|
||||
|
||||
# 00updater.rpy:375
|
||||
old "The Ren'Py Updater is not supported on mobile devices."
|
||||
new "Ren'Py Updater не підтримується на мобільних пристроях."
|
||||
new "Оновлювач Ren'Py не підтримується на мобільних пристроях."
|
||||
|
||||
# 00updater.rpy:494
|
||||
old "An error is being simulated."
|
||||
@@ -731,35 +731,35 @@ translate ukrainian strings:
|
||||
|
||||
# 00updater.rpy:678
|
||||
old "Either this project does not support updating, or the update status file was deleted."
|
||||
new "Або цей проект не підтримує оновлення, або видалено файл статусу оновлення."
|
||||
new "Або цей проєкт не підтримує оновлення, або файл стану оновлення було видалено."
|
||||
|
||||
# 00updater.rpy:692
|
||||
old "This account does not have permission to perform an update."
|
||||
new "Цей обліковий запис не має права проводити оновлення."
|
||||
new "Цей обліковий запис не має дозволу на виконання оновлення."
|
||||
|
||||
# 00updater.rpy:695
|
||||
old "This account does not have permission to write the update log."
|
||||
new "Цей обліковий запис не має права писати лог оновлення."
|
||||
new "Цей обліковий запис не має дозволу на запис журналу оновлень."
|
||||
|
||||
# 00updater.rpy:722
|
||||
old "Could not verify update signature."
|
||||
new "Не можу верифікувати підпис оновлення."
|
||||
new "Не вдалося перевірити підпис оновлення."
|
||||
|
||||
# 00updater.rpy:997
|
||||
old "The update file was not downloaded."
|
||||
new "Файл поновлення не був завантажений."
|
||||
new "Файл оновлення не було завантажено."
|
||||
|
||||
# 00updater.rpy:1015
|
||||
old "The update file does not have the correct digest - it may have been corrupted."
|
||||
new "Файл поновлення не містить коректного дайджесту — він може бути пошкоджений."
|
||||
new "Файл оновлення не має правильного дайджесту — можливо, він був пошкоджений."
|
||||
|
||||
# 00updater.rpy:1071
|
||||
old "While unpacking {}, unknown type {}."
|
||||
new "При розпаковуванні {} виявлено невідомий тип {}."
|
||||
new "Під час розпакування {}, невідомий тип {}."
|
||||
|
||||
# 00updater.rpy:1439
|
||||
old "Updater"
|
||||
new "Оновлення"
|
||||
new "Оновлювач"
|
||||
|
||||
# 00updater.rpy:1450
|
||||
old "This program is up to date."
|
||||
@@ -767,7 +767,7 @@ translate ukrainian strings:
|
||||
|
||||
# 00updater.rpy:1452
|
||||
old "[u.version] is available. Do you want to install it?"
|
||||
new "[u.version] доступна. Ви бажаєте її встановити?"
|
||||
new "[u.version] доступно. Бажаєте її встановити?"
|
||||
|
||||
# 00updater.rpy:1454
|
||||
old "Preparing to download the updates."
|
||||
@@ -799,11 +799,11 @@ translate ukrainian strings:
|
||||
|
||||
# 00gallery.rpy:605
|
||||
old "prev"
|
||||
new "мин"
|
||||
new "попер."
|
||||
|
||||
# 00gallery.rpy:606
|
||||
old "next"
|
||||
new "наст"
|
||||
new "наст."
|
||||
|
||||
# 00gallery.rpy:607
|
||||
old "slideshow"
|
||||
@@ -823,11 +823,11 @@ translate ukrainian strings:
|
||||
|
||||
# 00accessibility.rpy:76
|
||||
old "Font Override"
|
||||
new "Перевизначення шрифту"
|
||||
new "Замінити шрифт"
|
||||
|
||||
# 00accessibility.rpy:80
|
||||
old "Default"
|
||||
new "За замовчуванням"
|
||||
new "Стандратний"
|
||||
|
||||
# 00accessibility.rpy:84
|
||||
old "DejaVu Sans"
|
||||
@@ -839,7 +839,7 @@ translate ukrainian strings:
|
||||
|
||||
# 00accessibility.rpy:94
|
||||
old "Text Size Scaling"
|
||||
new "Масштабування розміру тексту"
|
||||
new "Масштаб розміру тексту"
|
||||
|
||||
# 00accessibility.rpy:100
|
||||
old "Reset"
|
||||
@@ -847,11 +847,11 @@ translate ukrainian strings:
|
||||
|
||||
# 00accessibility.rpy:105
|
||||
old "Line Spacing Scaling"
|
||||
new "Масштабування міжрядкового інтервалу"
|
||||
new "Масштаб міжрядкового інтервалу"
|
||||
|
||||
# 00accessibility.rpy:117
|
||||
old "Self-Voicing"
|
||||
new "Озвучка через синтезатор мовлення"
|
||||
new "Синтез мовлення"
|
||||
|
||||
# 00accessibility.rpy:121
|
||||
old "Off"
|
||||
@@ -859,11 +859,11 @@ translate ukrainian strings:
|
||||
|
||||
# 00accessibility.rpy:125
|
||||
old "Text-to-speech"
|
||||
new "Перетворення тексту на мовлення"
|
||||
new "Перетворення тексту в мовлення"
|
||||
|
||||
# 00accessibility.rpy:129
|
||||
old "Clipboard"
|
||||
new "З буфера обміну"
|
||||
new "Буфер обміну"
|
||||
|
||||
# 00preferences.rpy:430
|
||||
old "font transform"
|
||||
@@ -875,22 +875,23 @@ translate ukrainian strings:
|
||||
|
||||
# 00preferences.rpy:441
|
||||
old "font line spacing"
|
||||
new "міжрядковий інтервал"
|
||||
new "міжрядковий інтервал шрифту"
|
||||
|
||||
# renpy/common/00accessibility.rpy:191
|
||||
old "The options on this menu are intended to improve accessibility. They may not work with all games, and some combinations of options may render the game unplayable. This is not an issue with the game or engine. For the best results when changing fonts, try to keep the text size the same as it originally was."
|
||||
new "Установки цього меню призначені для збільшення доступності. Вони можуть працювати не з усіма іграми, а деякі комбінації опцій можуть зробити гру, що відображається некоректно. Це не проблема з грою чи движком. Для досягнення найкращих результатів при зміні шрифтів намагайтеся зберігати розмір тексту таким, яким він був спочатку."
|
||||
new "Параметри цього меню призначені для покращення доступності. Вони можуть працювати не з усіма іграми, а деякі комбінації параметрів можуть зробити гру неможливою для гри. Це не є проблемою гри або рушія. Для досягнення найкращих результатів при зміні шрифтів намагайтеся зберігати розмір тексту таким, яким він був спочатку."
|
||||
|
||||
# renpy/common/00accessibility.rpy:193
|
||||
old "Self-Voicing Volume Drop"
|
||||
new "Зменшення гучності при озвученні через синтезатор мовлення"
|
||||
new "Зменшити гучність синтезу мовлення"
|
||||
|
||||
# renpy/common/00preferences.rpy:384
|
||||
old "self voicing volume drop"
|
||||
new "зменшення гучності при озвученні через синтезатор мовлення"
|
||||
new "зменшити гучність синтезу мовлення"
|
||||
|
||||
# renpy/common/00preferences.rpy:464
|
||||
old "system cursor"
|
||||
new "системний курсор"
|
||||
new "системний вказівник"
|
||||
|
||||
# renpy/common/00accessibility.rpy:180
|
||||
old "High Contrast Text"
|
||||
@@ -898,11 +899,11 @@ translate ukrainian strings:
|
||||
|
||||
# renpy/common/00preferences.rpy:487
|
||||
old "renderer menu"
|
||||
new "меню рендерера"
|
||||
new "меню візуалізації"
|
||||
|
||||
# renpy/common/00preferences.rpy:490
|
||||
old "accessibility menu"
|
||||
new "меню спеціальних можливостей"
|
||||
new "меню доступності"
|
||||
|
||||
# renpy/common/00preferences.rpy:493
|
||||
old "high contrast text"
|
||||
@@ -910,165 +911,135 @@ translate ukrainian strings:
|
||||
|
||||
# renpy/common/00preferences.rpy:511
|
||||
old "audio when minimized"
|
||||
new "звук при згортанні вікна"
|
||||
new "звук при згортанні"
|
||||
|
||||
# renpy/common/00preferences.rpy:531
|
||||
old "main volume"
|
||||
new "загальна гучність"
|
||||
new "основна гучність"
|
||||
|
||||
# renpy/common/00preferences.rpy:535
|
||||
old "mute main"
|
||||
new "режим без звуку"
|
||||
new "без основи"
|
||||
|
||||
translate ukrainian strings:
|
||||
|
||||
# renpy/common/00accessibility.rpy:186
|
||||
old "Disable"
|
||||
# Automatic translation.
|
||||
new "Вимкнути"
|
||||
|
||||
# renpy/common/00accessibility.rpy:209
|
||||
old "Debug"
|
||||
# Automatic translation.
|
||||
new "Налагодження"
|
||||
|
||||
# renpy/common/00action_other.rpy:721
|
||||
old "Open [text] directory."
|
||||
# Automatic translation.
|
||||
new "Відкрийте каталог [text]."
|
||||
new "Відкрити теку [text]."
|
||||
|
||||
# renpy/common/00director.rpy:1745
|
||||
old "Click to toggle attribute, right click to toggle negative attribute."
|
||||
# Automatic translation.
|
||||
new "Клацніть, щоб увімкнути атрибут, клацніть правою кнопкою миші, щоб увімкнути від'ємний атрибут."
|
||||
new "Натисніть, аби увімкнути атрибут, натисніть ПКМ, аби увімкнути від’ємний атрибут."
|
||||
|
||||
# renpy/common/00director.rpy:1768
|
||||
old "Click to set transform, right click to add to transform list."
|
||||
# Automatic translation.
|
||||
new "Клацніть, щоб встановити трансформацію, клацніть правою кнопкою миші, щоб додати до списку трансформацій."
|
||||
new "Натисніть, щоб встановити трансформацію, натисніть ПКМ, щоб додати до списку трансформацій."
|
||||
|
||||
# renpy/common/00director.rpy:1789
|
||||
old "Click to set, right click to add to behind list."
|
||||
# Automatic translation.
|
||||
new "Клацніть, щоб встановити, клацніть правою кнопкою миші, щоб додати до списку."
|
||||
new "Натисніть, щоб встановити, натисніть ПКМ, щоб додати до списку."
|
||||
|
||||
# renpy/common/00gui.rpy:456
|
||||
old "This save was created on a different device. Maliciously constructed save files can harm your computer. Do you trust this save's creator and everyone who could have changed the file?"
|
||||
# Automatic translation.
|
||||
new "Це збереження було створено на іншому пристрої. Зловмисно створені файли збережень можуть завдати шкоди вашому комп'ютеру. Чи довіряєте ви творцю цього збереження і всім, хто міг змінити файл?"
|
||||
new "Це збереження було створено на іншому пристрої. Зловмисно створені файли збережень можуть завдати шкоди вашому пристрою. Чи довіряєте ви творцю цього збереження і всім, хто міг змінити файл?"
|
||||
|
||||
# renpy/common/00gui.rpy:457
|
||||
old "Do you trust the device the save was created on? You should only choose yes if you are the device's sole user."
|
||||
# Automatic translation.
|
||||
new "Чи довіряєте ви пристрою, на якому було створено збереження? Ви повинні вибрати \"так\", тільки якщо ви є єдиним користувачем пристрою."
|
||||
new "Чи довіряєте ви пристрою, на якому було створено збереження? Ви повинні вибрати «Так», тільки якщо ви є єдиним користувачем пристрою."
|
||||
|
||||
# renpy/common/00preferences.rpy:528
|
||||
old "audio when unfocused"
|
||||
# Automatic translation.
|
||||
new "звук при розфокусуванні"
|
||||
new "звук при згортанні вікна"
|
||||
|
||||
# renpy/common/00preferences.rpy:537
|
||||
old "web cache preload"
|
||||
# Automatic translation.
|
||||
new "попереднє завантаження веб-кешу"
|
||||
new "попер. завантаження вебкешу"
|
||||
|
||||
# renpy/common/00preferences.rpy:552
|
||||
old "voice after game menu"
|
||||
# Automatic translation.
|
||||
new "голос після ігрового меню"
|
||||
|
||||
# renpy/common/00speechbubble.rpy:344
|
||||
old "Speech Bubble Editor"
|
||||
# Automatic translation.
|
||||
new "Редактор мовних бульбашок"
|
||||
|
||||
# renpy/common/00speechbubble.rpy:349
|
||||
old "(hide)"
|
||||
# Automatic translation.
|
||||
new "(приховати)"
|
||||
|
||||
# renpy/common/00sync.rpy:70
|
||||
old "Sync downloaded."
|
||||
# Automatic translation.
|
||||
new "Синхронізація завантажена."
|
||||
new "Синхронізацію завантажено."
|
||||
|
||||
# renpy/common/00sync.rpy:190
|
||||
old "Could not connect to the Ren'Py Sync server."
|
||||
# Automatic translation.
|
||||
new "Не вдалося підключитися до сервера Ren'Py Sync."
|
||||
new "Не вдалося під’єднатися до сервера Ren'Py Sync."
|
||||
|
||||
# renpy/common/00sync.rpy:192
|
||||
old "The Ren'Py Sync server timed out."
|
||||
# Automatic translation.
|
||||
new "Сервер Ren'Py Sync вийшов з ладу."
|
||||
|
||||
# renpy/common/00sync.rpy:194
|
||||
old "An unknown error occurred while connecting to the Ren'Py Sync server."
|
||||
# Automatic translation.
|
||||
new "Під час підключення до сервера Ren'Py Sync виникла невідома помилка."
|
||||
new "Під час з’єднання до сервера Ren'Py Sync виникла невідома помилка."
|
||||
|
||||
# renpy/common/00sync.rpy:267
|
||||
old "The Ren'Py Sync server does not have a copy of this sync. The sync ID may be invalid, or it may have timed out."
|
||||
# Automatic translation.
|
||||
new "Сервер Ren'Py Sync не має копії цієї синхронізації. Ідентифікатор синхронізації може бути недійсним або його термін дії закінчився."
|
||||
|
||||
# renpy/common/00sync.rpy:409
|
||||
old "Please enter the sync ID you generated.\nNever enter a sync ID you didn't create yourself."
|
||||
# Automatic translation.
|
||||
new "Будь ласка, введіть згенерований вами ідентифікатор синхронізації.\nНіколи не вводьте ідентифікатор синхронізації, який ви не створювали."
|
||||
|
||||
# renpy/common/00sync.rpy:428
|
||||
old "The sync ID is not in the correct format."
|
||||
# Automatic translation.
|
||||
new "Ідентифікатор синхронізації має неправильний формат."
|
||||
|
||||
# renpy/common/00sync.rpy:448
|
||||
old "The sync could not be decrypted."
|
||||
# Automatic translation.
|
||||
new "Синхронізацію не вдалося розшифрувати."
|
||||
|
||||
# renpy/common/00sync.rpy:471
|
||||
old "The sync belongs to a different game."
|
||||
# Automatic translation.
|
||||
new "Синхронізація належить до іншої гри."
|
||||
|
||||
# renpy/common/00sync.rpy:476
|
||||
old "The sync contains a file with an invalid name."
|
||||
# Automatic translation.
|
||||
new "Синхронізація містить файл з невірним іменем."
|
||||
new "Синхронізація містить файл з невірною назвою."
|
||||
|
||||
# renpy/common/00sync.rpy:529
|
||||
old "This will upload your saves to the {a=https://sync.renpy.org}Ren'Py Sync Server{/a}.\nDo you want to continue?"
|
||||
# Automatic translation.
|
||||
new "Це завантажить ваші збереження на сервер синхронізації {a=https://sync.renpy.org}Ren'Py Sync Server{/a}.\nХочете продовжити?"
|
||||
new "Це завантажить ваші збереження на {a=https://sync.renpy.org}сервер Ren'Py Sync{/a}.\nБажаєте продовжити?"
|
||||
|
||||
# renpy/common/00sync.rpy:558
|
||||
old "Enter Sync ID"
|
||||
# Automatic translation.
|
||||
new "Введіть Sync ID"
|
||||
new "Уведіть ідентифікатор синхронізації"
|
||||
|
||||
# renpy/common/00sync.rpy:569
|
||||
old "This will contact the {a=https://sync.renpy.org}Ren'Py Sync Server{/a}."
|
||||
# Automatic translation.
|
||||
new "Він зв'яжеться з сервером синхронізації {a=https://sync.renpy.org}Ren'Py Sync Server{/a}."
|
||||
new "Зв’язок зі {a=https://sync.renpy.org}сервером Ren'Py Sync{/a}."
|
||||
|
||||
# renpy/common/00sync.rpy:596
|
||||
old "Sync Success"
|
||||
# Automatic translation.
|
||||
new "Успіх синхронізації"
|
||||
new "Успішна синхронізація"
|
||||
|
||||
# renpy/common/00sync.rpy:599
|
||||
old "The Sync ID is:"
|
||||
# Automatic translation.
|
||||
new "Ідентифікатор синхронізації:"
|
||||
|
||||
# renpy/common/00sync.rpy:605
|
||||
old "You can use this ID to download your save on another device.\nThis sync will expire in an hour.\nRen'Py Sync is supported by {a=https://www.renpy.org/sponsors.html}Ren'Py's Sponsors{/a}."
|
||||
# Automatic translation.
|
||||
new "Ви можете використовувати цей ідентифікатор, щоб завантажити збереження на інший пристрій.\nЦя синхронізація закінчиться через годину.\nRen'Py Sync підтримується {a=https://www.renpy.org/sponsors.html}Спонсорами Ren'Py{/a}."
|
||||
new "Ви можете використати цей ідентифікатор, щоб завантажити збереження на інший пристрій.\nЦя синхронізація завершиться за годину.\nRen'Py Sync підтримується за підтримки {a=https://www.renpy.org/sponsors.html}спонсорів Ren'Py{/a}."
|
||||
|
||||
# renpy/common/00sync.rpy:631
|
||||
old "Sync Error"
|
||||
# Automatic translation.
|
||||
new "Помилка синхронізації"
|
||||
|
||||
|
||||
@@ -3,19 +3,19 @@ translate ukrainian strings:
|
||||
|
||||
# 00console.rpy:255
|
||||
old "Press <esc> to exit console. Type help for help.\n"
|
||||
new "Натисніть <esc>, щоб вийти із консолі. Введіть <help> для допомоги.\n"
|
||||
new "Натисніть <esc>, щоб вийти із консолі. Введіть help для довідки.\n"
|
||||
|
||||
# 00console.rpy:259
|
||||
old "Ren'Py script enabled."
|
||||
new "Ren'Py script активовано."
|
||||
new "Скрипт Ren'Py увімкено."
|
||||
|
||||
# 00console.rpy:261
|
||||
old "Ren'Py script disabled."
|
||||
new "Ren'Py script деактивовано."
|
||||
new "Скрипт Ren'Py вимкнуто."
|
||||
|
||||
# 00console.rpy:496
|
||||
old "help: show this help"
|
||||
new "help: показує допомогу"
|
||||
new "help: показує цю довідку"
|
||||
|
||||
# 00console.rpy:501
|
||||
old "commands:\n"
|
||||
@@ -23,27 +23,27 @@ translate ukrainian strings:
|
||||
|
||||
# 00console.rpy:511
|
||||
old " <renpy script statement>: run the statement\n"
|
||||
new " <оператор renpy script>: запуск оператора\n"
|
||||
new " <функція скрипту renpy>: запуск функції\n"
|
||||
|
||||
# 00console.rpy:513
|
||||
old " <python expression or statement>: run the expression or statement"
|
||||
new " <вираз або оператор python>: запустити вираз або оператор"
|
||||
new " <вираз або функція python>: запуск виразу або функції"
|
||||
|
||||
# 00console.rpy:521
|
||||
old "clear: clear the console history"
|
||||
new "clear: очищення історії консолі"
|
||||
new "clear: очистити історію консолі"
|
||||
|
||||
# 00console.rpy:525
|
||||
old "exit: exit the console"
|
||||
new "exit: вихід із консолі"
|
||||
new "exit: вийти із консолі"
|
||||
|
||||
# 00console.rpy:533
|
||||
old "load <slot>: loads the game from slot"
|
||||
new "load <слот>: завантажує гру з вибраного слота"
|
||||
new "load <комірка>: завантажує гру з вибраної комірки"
|
||||
|
||||
# 00console.rpy:546
|
||||
old "save <slot>: saves the game in slot"
|
||||
new "save <слот>: зберігає гру у вибраний слот"
|
||||
new "save <комірка>: зберігає гру у вибраній комірці"
|
||||
|
||||
# 00console.rpy:557
|
||||
old "reload: reloads the game, refreshing the scripts"
|
||||
@@ -51,63 +51,59 @@ translate ukrainian strings:
|
||||
|
||||
# 00console.rpy:565
|
||||
old "watch <expression>: watch a python expression"
|
||||
new "watch <вираз>: спостерігати за виразом python"
|
||||
new "watch <вираз>: дивитися вираз python"
|
||||
|
||||
# 00console.rpy:591
|
||||
old "unwatch <expression>: stop watching an expression"
|
||||
new "unwatch <вираз>: припинити спостерігати за виразом"
|
||||
new "unwatch <вираз>: припинити дивитися вираз"
|
||||
|
||||
# 00console.rpy:622
|
||||
old "unwatchall: stop watching all expressions"
|
||||
new "unwatchall: глобальне припинення спостереження"
|
||||
new "unwatchall: припинити дивитися за всіма виразами"
|
||||
|
||||
# 00console.rpy:639
|
||||
old "jump <label>: jumps to label"
|
||||
new "jump <мітка>: стрибок на мітку"
|
||||
new "jump <мітка>: перейти на мітку"
|
||||
|
||||
# 00console.rpy:685
|
||||
old "short: Shorten the representation of objects on the console (default)."
|
||||
new "short: Скорочене представлення об'єктів (repr) у консолі (за замовчуванням)."
|
||||
new "short: Скоротити представлення об’єктів на консолі (за стандартом)."
|
||||
|
||||
# 00console.rpy:690
|
||||
old "long: Print the full representation of objects on the console."
|
||||
new "long: Виводити повне уявлення об'єктів (repr) у консолі."
|
||||
new "long: Вивести повне представлення об’єктів на консолі."
|
||||
|
||||
# renpy/common/00console.rpy:814
|
||||
old "watch <expression>: watch a python expression\n watch short: makes the representation of traced expressions short (default)\n watch long: makes the representation of traced expressions as is"
|
||||
new "watch <вираз>: спостерігати за виразом python\n watch short: вкорочує відображення виразів, що відстежуються (за замовчуванням)\n watch long: робить відображення відстежуваних виразів як є"
|
||||
new "watch <вираз>: дивитися вираз python\n watch short: робить представлення відстежених виразів коротким (за стандартом)\n watch long: робить представлення відстежених виразів як є"
|
||||
|
||||
# renpy/common/00console.rpy:925
|
||||
old "escape: Enables escaping of unicode symbols in unicode strings."
|
||||
new "escape: Включає екранування Unicode символів у рядках unicode."
|
||||
new "escape: Вмикає екранування символів Unicode в рядках Unicode."
|
||||
|
||||
# renpy/common/00console.rpy:929
|
||||
old "unescape: Disables escaping of unicode symbols in unicode strings and print it as is (default)."
|
||||
new "unescape: Вимикає екранування Unicode символів у рядках unicode та виводить їх як є (за замовчуванням)."
|
||||
new "unescape: Вимикає екранування символів Unicode в рядках Unicode і друкує їх як є (за стандартом)."
|
||||
|
||||
# renpy/common/00console.rpy:784
|
||||
old "stack: print the return stack"
|
||||
new "stack: виводить стек повернення (return stack)"
|
||||
new "stack: вивести стек повернення"
|
||||
|
||||
translate ukrainian strings:
|
||||
|
||||
# renpy/common/_developer/developer.rpym:51
|
||||
old "Persistent Viewer"
|
||||
# Automatic translation.
|
||||
new "Постійний глядач"
|
||||
new "Переглядач даних"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:70
|
||||
old "Speech Bubble Editor (Shift+B)"
|
||||
# Automatic translation.
|
||||
new "Редактор мовних бульбашок (Shift+B)"
|
||||
|
||||
# renpy/common/00console.rpy:789
|
||||
old "help: show this help\n help <expr>: show signature and documentation of <expr>"
|
||||
# Automatic translation.
|
||||
new "help: показати цю довідку\n help <expr>: показати підпис та документацію <expr>"
|
||||
new "help: показує цю довідку\n help <вираз>: показує підпис та документацію <виразу>"
|
||||
|
||||
# renpy/common/00console.rpy:813
|
||||
old "Help may display undocumented functions. Please check that the function or\nclass you want to use is documented.\n\n"
|
||||
# Automatic translation.
|
||||
new "Довідка може відображати недокументовані функції. Будь ласка, перевірте, чи функція або\nклас, який ви хочете використовувати, задокументовано.\n\n"
|
||||
old "Help may display undocumented functions. Please check that the function or\nclass you want to use is documented.\n\n"
|
||||
new "У довідці можуть відображатися недокументовані функції. Будь ласка, перевірте, чи функцію або\nклас, який бажаєте використати, задокументовано.\n\n"
|
||||
|
||||
|
||||
@@ -3,35 +3,35 @@ translate ukrainian strings:
|
||||
|
||||
# 00gltest.rpy:70
|
||||
old "Renderer"
|
||||
new "Рендер"
|
||||
new "Візуалізація"
|
||||
|
||||
# 00gltest.rpy:74
|
||||
old "Automatically Choose"
|
||||
new "Вибирати Автоматично"
|
||||
new "Обрати автоматично"
|
||||
|
||||
# 00gltest.rpy:79
|
||||
old "Force Angle/DirectX Renderer"
|
||||
new "Примусовий Angle/DirectX"
|
||||
new "Візуалізація Angle/DirectX"
|
||||
|
||||
# 00gltest.rpy:83
|
||||
old "Force OpenGL Renderer"
|
||||
new "Примусовий OpenGL"
|
||||
new "Візуалізація OpenGL"
|
||||
|
||||
# 00gltest.rpy:87
|
||||
old "Force Software Renderer"
|
||||
new "Примусовий Програмний"
|
||||
new "Програмна візуалізація"
|
||||
|
||||
# 00gltest.rpy:93
|
||||
old "NPOT"
|
||||
new "NPOT (OpenGL 2+)"
|
||||
new "NPOT"
|
||||
|
||||
# 00gltest.rpy:97
|
||||
old "Enable"
|
||||
new "Активовано"
|
||||
new "Увімкнути"
|
||||
|
||||
# 00gltest.rpy:131
|
||||
old "Powersave"
|
||||
new "Економія енергії"
|
||||
new "Енергозбереження"
|
||||
|
||||
# 00gltest.rpy:145
|
||||
old "Framerate"
|
||||
@@ -51,7 +51,7 @@ translate ukrainian strings:
|
||||
|
||||
# 00gltest.rpy:163
|
||||
old "Tearing"
|
||||
new "Розривання кадрів"
|
||||
new "Розрив кадрів"
|
||||
|
||||
# 00gltest.rpy:179
|
||||
old "Changes will take effect the next time this program is run."
|
||||
@@ -59,31 +59,31 @@ translate ukrainian strings:
|
||||
|
||||
# 00gltest.rpy:213
|
||||
old "Performance Warning"
|
||||
new "Попередження Продуктивності"
|
||||
new "Попередження про продуктивність"
|
||||
|
||||
# 00gltest.rpy:218
|
||||
old "This computer is using software rendering."
|
||||
new "Цей комп'ютер використовує програмний рендеринг."
|
||||
new "Цей пристрій використовує програмну візуалізацію."
|
||||
|
||||
# 00gltest.rpy:220
|
||||
old "This computer is not using shaders."
|
||||
new "Цей комп'ютер не використовує шейдерів."
|
||||
new "Цей пристрій не використовує шейдерів."
|
||||
|
||||
# 00gltest.rpy:222
|
||||
old "This computer is displaying graphics slowly."
|
||||
new "Цей комп'ютер повільно відображає графіку."
|
||||
new "Цей пристрій повільно відображає графіку."
|
||||
|
||||
# 00gltest.rpy:224
|
||||
old "This computer has a problem displaying graphics: [problem]."
|
||||
new "Цей комп'ютер має проблему з відображенням графіки: [problem]"
|
||||
new "Цей пристрій має проблему з відображенням графіки: [problem]"
|
||||
|
||||
# 00gltest.rpy:229
|
||||
old "Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display. Updating DirectX could fix this problem."
|
||||
new "Графічні драйвера застаріли чи працюють неправильно. Це може призвести до повільного або неправильного відображення графіки. Оновлення DirectX може вирішити цю проблему."
|
||||
new "Графічні драйвери можуть бути застарілими або працювати неправильно. Це може призвести до повільного або некоректного відображення графіки. Оновлення DirectX може вирішити цю проблему."
|
||||
|
||||
# 00gltest.rpy:231
|
||||
old "Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display."
|
||||
new "Графічні драйвера застаріли чи працюють неправильно. Це може призвести до повільного або неправильного відображення графіки."
|
||||
new "Графічні драйвери можуть бути застарілими або працювати неправильно. Це може призвести до повільного або некоректного відображення графіки."
|
||||
|
||||
# 00gltest.rpy:236
|
||||
old "Update DirectX"
|
||||
@@ -91,11 +91,11 @@ translate ukrainian strings:
|
||||
|
||||
# 00gltest.rpy:242
|
||||
old "Continue, Show this warning again"
|
||||
new "Продовжити, показати це попередження знову"
|
||||
new "Продовжити, показувати знову"
|
||||
|
||||
# 00gltest.rpy:246
|
||||
old "Continue, Don't show warning again"
|
||||
new "Продовжити, не показувати це попередження знову."
|
||||
new "Продовжити, не показувати знову."
|
||||
|
||||
# 00gltest.rpy:264
|
||||
old "Updating DirectX."
|
||||
@@ -103,15 +103,15 @@ translate ukrainian strings:
|
||||
|
||||
# 00gltest.rpy:268
|
||||
old "DirectX web setup has been started. It may start minimized in the taskbar. Please follow the prompts to install DirectX."
|
||||
new "Інсталятор DirectX був запущений. Можливо, що він запустився у згорнутому стані. Будь ласка, дотримуйтесь інструкцій для встановлення DirectX."
|
||||
new "Запущено вебналаштування DirectX. Вона може згорнутися на панелі завдань. Будь ласка, дотримуйтесь підказок для встановлення DirectX."
|
||||
|
||||
# 00gltest.rpy:272
|
||||
old "{b}Note:{/b} Microsoft's DirectX web setup program will, by default, install the Bing toolbar. If you do not want this toolbar, uncheck the appropriate box."
|
||||
new "{b}Попередження:{/b} Інсталятор DirectX за замовчуванням намагається встановити панель інструментів Bing. Якщо ви цього не хочете, зніміть відповідну галочку."
|
||||
new "{b}Нотатка:{/b} Програма вебналаштування DirectX від Microsoft за стандартом встановлює панель інструментів Bing. Якщо вам не потрібна ця панель, зніміть позначку у відповідному полі."
|
||||
|
||||
# 00gltest.rpy:276
|
||||
old "When setup finishes, please click below to restart this program."
|
||||
new "Після завершення інсталяції клацніть, щоб перезапустити програму."
|
||||
new "Після завершення налаштування, натисніть нижче, щоб перезапустити програму."
|
||||
|
||||
# 00gltest.rpy:278
|
||||
old "Restart"
|
||||
@@ -119,19 +119,19 @@ translate ukrainian strings:
|
||||
|
||||
# 00gamepad.rpy:32
|
||||
old "Select Gamepad to Calibrate"
|
||||
new "Виберіть Геймпад для калібрування"
|
||||
new "Оберіть ґеймпад для калібрування"
|
||||
|
||||
# 00gamepad.rpy:35
|
||||
old "No Gamepads Available"
|
||||
new "Геймпадів не виявлено"
|
||||
new "Ґеймпадів не виявлено"
|
||||
|
||||
# 00gamepad.rpy:54
|
||||
old "Calibrating [name] ([i]/[total])"
|
||||
new "Калібрую [name] ([i]/[total])"
|
||||
new "Калібрування [name] ([i]/[total])"
|
||||
|
||||
# 00gamepad.rpy:58
|
||||
old "Press or move the [control!s] [kind]."
|
||||
new "Натисніть або посуньте [control!s] [kind]."
|
||||
new "Натисніть або рухніть [control!s] [kind]."
|
||||
|
||||
# 00gamepad.rpy:66
|
||||
old "Skip (A)"
|
||||
@@ -143,7 +143,7 @@ translate ukrainian strings:
|
||||
|
||||
# _errorhandling.rpym:529
|
||||
old "Open"
|
||||
new "Журнал"
|
||||
new "Відкрити"
|
||||
|
||||
# _errorhandling.rpym:531
|
||||
old "Opens the traceback.txt file in a text editor."
|
||||
@@ -159,15 +159,15 @@ translate ukrainian strings:
|
||||
|
||||
# _errorhandling.rpym:562
|
||||
old "An exception has occurred."
|
||||
new "Виник виняток."
|
||||
new "Стався виняток."
|
||||
|
||||
# _errorhandling.rpym:582
|
||||
old "Rollback"
|
||||
new "Назад"
|
||||
new "Відкат"
|
||||
|
||||
# _errorhandling.rpym:584
|
||||
old "Attempts a roll back to a prior time, allowing you to save or choose a different choice."
|
||||
new "Намагається повернутися назад, дозволяючи вам зберегтися або прийняти інший вибір."
|
||||
new "Спроба відкату до попереднього часу, що дозволяє зберегти або вибрати інший варіант."
|
||||
|
||||
# _errorhandling.rpym:587
|
||||
old "Ignore"
|
||||
@@ -187,7 +187,7 @@ translate ukrainian strings:
|
||||
|
||||
# _errorhandling.rpym:599
|
||||
old "Reloads the game from disk, saving and restoring game state if possible."
|
||||
new "Перезавантажує гру з диска, зберігаючи та відновлюючи її стан, якщо це можливо."
|
||||
new "Перезавантажує гру з диска, зберігаючи та відновлюючи її стан, якщо можливо."
|
||||
|
||||
# _errorhandling.rpym:602
|
||||
old "Console"
|
||||
@@ -203,7 +203,7 @@ translate ukrainian strings:
|
||||
|
||||
# _errorhandling.rpym:638
|
||||
old "Parsing the script failed."
|
||||
new "Опрацювання сценарію завершилося невдало."
|
||||
new "Розбір скрипта не вдався."
|
||||
|
||||
# _errorhandling.rpym:664
|
||||
old "Opens the errors.txt file in a text editor."
|
||||
@@ -215,51 +215,51 @@ translate ukrainian strings:
|
||||
|
||||
# _errorhandling.rpym:542
|
||||
old "Copy BBCode"
|
||||
new "Копіювати як BBCode"
|
||||
new "Копіювати BBCode"
|
||||
|
||||
# _errorhandling.rpym:544
|
||||
old "Copies the traceback.txt file to the clipboard as BBcode for forums like https://lemmasoft.renai.us/."
|
||||
new "Копіює файл traceback.txt у буфер обміну як BBCode для форумів типу https://lemmasoft.renai.us/."
|
||||
new "Копіює файл traceback.txt у буфер обміну як BBCode для форумів як https://lemmasoft.renai.us/."
|
||||
|
||||
# _errorhandling.rpym:546
|
||||
old "Copy Markdown"
|
||||
new "Скопіювати як Markdown"
|
||||
new "Копіювати Markdown"
|
||||
|
||||
# _errorhandling.rpym:548
|
||||
old "Copies the traceback.txt file to the clipboard as Markdown for Discord."
|
||||
new "Копіює файл traceback.txt у буфер обміну як Markdown для Дискорду."
|
||||
new "Копіює файл traceback.txt у буфер обміну як Markdown для Discord."
|
||||
|
||||
# _errorhandling.rpym:683
|
||||
old "Copies the errors.txt file to the clipboard as BBcode for forums like https://lemmasoft.renai.us/."
|
||||
new "Копіює файл errors.txt у буфер обміну як BBCode для форумів типу https://lemmasoft.renai.us/."
|
||||
new "Копіює файл errors.txt у буфер обміну як BBCode для форумів як https://lemmasoft.renai.us/."
|
||||
|
||||
# _errorhandling.rpym:687
|
||||
old "Copies the errors.txt file to the clipboard as Markdown for Discord."
|
||||
new "Копіює файл errors.txt у буфер обміну як Markdown для Дискорду."
|
||||
new "Копіює файл errors.txt у буфер обміну як Markdown для Discord."
|
||||
|
||||
# renpy/common/00gltest.rpy:100
|
||||
old "Force GL Renderer"
|
||||
new "Примусовий рендеринг GL"
|
||||
new "Візуалізація GL"
|
||||
|
||||
# renpy/common/00gltest.rpy:105
|
||||
old "Force ANGLE Renderer"
|
||||
new "Примусовий рендеринг ANGLE"
|
||||
new "Візуалізація ANGLE"
|
||||
|
||||
# renpy/common/00gltest.rpy:110
|
||||
old "Force GLES Renderer"
|
||||
new "Примусовий рендеринг GLES"
|
||||
new "Візуалізація GLES"
|
||||
|
||||
# renpy/common/00gltest.rpy:116
|
||||
old "Force GL2 Renderer"
|
||||
new "Примусовий рендеринг GL2"
|
||||
new "Візуалізація GL2"
|
||||
|
||||
# renpy/common/00gltest.rpy:121
|
||||
old "Force ANGLE2 Renderer"
|
||||
new "Примусовий рендеринг ANGLE2"
|
||||
new "Візуалізація ANGLE2"
|
||||
|
||||
# renpy/common/00gltest.rpy:126
|
||||
old "Force GLES2 Renderer"
|
||||
new "Примусовий рендеринг GLES2"
|
||||
new "Візуалізація GLES2"
|
||||
|
||||
# renpy/common/00gltest.rpy:245
|
||||
old "This game requires use of GL2 that can't be initialised."
|
||||
@@ -271,16 +271,16 @@ translate ukrainian strings:
|
||||
|
||||
# renpy/common/00gltest.rpy:273
|
||||
old "Change render options"
|
||||
new "Змінити налаштування рендерингу"
|
||||
new "Змінити параметри візцалізації"
|
||||
|
||||
# renpy/common/00gamepad.rpy:58
|
||||
old "Press or move the '[control!s]' [kind]."
|
||||
new "Натисніть або посуньте [kind] '[control!s]'"
|
||||
new "Натисніть або рухніть '[control!s]' [kind]."
|
||||
|
||||
# renpy/common/00gltest.rpy:136
|
||||
old "Enable (No Blocklist)"
|
||||
new "Увімкнути (ігнорувати блоклист)"
|
||||
new "Увімкнути (без списку блокування)"
|
||||
|
||||
# renpy/common/00gltest.rpy:259
|
||||
old "The {a=edit:1:log.txt}log.txt{/a} file may contain information to help you determine what is wrong with your computer."
|
||||
new "Файл {a=edit:1:log.txt}log.txt{/a} може містити інформацію, яка допоможе вам визначити, що не так з вашим комп'ютером."
|
||||
new "Файл {a=edit:1:log.txt}log.txt{/a} може містити інформацію, яка допоможе вам визначити, що не так з вашим пристроєм."
|
||||
|
||||
@@ -437,6 +437,5 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/gui.rpy:14
|
||||
old "## Enable checks for invalid or unstable properties in screens or transforms"
|
||||
# Automatic translation.
|
||||
new "## Увімкнути перевірку на невірні або нестабільні властивості в екранах або перетвореннях"
|
||||
new "## Увімкнути перевірку недійсних або нестабільних властивостей у екранах або перетвореннях"
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -39,7 +39,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/options.rpy:38
|
||||
old "## A short name for the game used for executables and directories in the built distribution. This must be ASCII-only, and must not contain spaces, colons, or semicolons."
|
||||
new "## Коротка назва гри, яка використовується для виконуваних файлів і каталогів у вбудованому дистрибутиві. Це має бути лише ASCII і не повинно містити пробілів, двокрапки чи крапки з комою."
|
||||
new "## Коротка назва гри, яка використовується для виконуваних файлів і тек у вбудованому дистрибутиві. Це має бути лише ASCII і не повинно містити пробілів, двокрапки чи крапки з комою."
|
||||
|
||||
# gui/game/options.rpy:45
|
||||
old "## Sounds and music"
|
||||
@@ -115,7 +115,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/options.rpy:135
|
||||
old "## Save directory"
|
||||
new "## Зберегти каталог"
|
||||
new "## Зберегти теку"
|
||||
|
||||
# gui/game/options.rpy:137
|
||||
old "## Controls the platform-specific place Ren'Py will place the save files for this game. The save files will be placed in:"
|
||||
@@ -155,7 +155,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/options.rpy:166
|
||||
old "## The following functions take file patterns. File patterns are case- insensitive, and matched against the path relative to the base directory, with and without a leading /. If multiple patterns match, the first is used."
|
||||
new "## Наступні функції приймають шаблони файлів. Шаблони файлів не чутливі до регістру та зіставляються зі шляхом відносно основного каталогу, з / без нього на початку. Якщо збігається декілька шаблонів, використовується перший."
|
||||
new "## Наступні функції приймають шаблони файлів. Шаблони файлів не чутливі до регістру та зіставляються зі шляхом відносно основної теки, з / без нього на початку. Якщо збігається декілька шаблонів, використовується перший."
|
||||
|
||||
# gui/game/options.rpy:171
|
||||
old "## In a pattern:"
|
||||
@@ -163,19 +163,19 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/options.rpy:173
|
||||
old "## / is the directory separator."
|
||||
new "## / є роздільником каталогу."
|
||||
new "## / є роздільником теки."
|
||||
|
||||
# gui/game/options.rpy:175
|
||||
old "## * matches all characters, except the directory separator."
|
||||
new "## * відповідає всім символам, крім роздільника каталогу."
|
||||
new "## * відповідає всім символам, крім роздільника теки."
|
||||
|
||||
# gui/game/options.rpy:177
|
||||
old "## ** matches all characters, including the directory separator."
|
||||
new "## ** відповідає всім символам, включаючи роздільник каталогу."
|
||||
new "## ** відповідає всім символам, включаючи роздільник теки."
|
||||
|
||||
# gui/game/options.rpy:179
|
||||
old "## For example, \"*.txt\" matches txt files in the base directory, \"game/**.ogg\" matches ogg files in the game directory or any of its subdirectories, and \"**.psd\" matches psd files anywhere in the project."
|
||||
new "## Наприклад, \"*.txt\" відповідає файлам txt у базовому каталозі, \"game/**.ogg\" відповідає файлам ogg у каталозі гри або будь-якому з його підкаталогів, а \"**.psd \" відповідає файлам psd будь-де в проєкті."
|
||||
new "## Наприклад, \"*.txt\" відповідає файлам txt у базовому каталозі, \"game/**.ogg\" відповідає файлам ogg у каталозі гри або будь-якому з його під-тек, а \"**.psd \" відповідає файлам psd будь-де в проєкті."
|
||||
|
||||
# gui/game/options.rpy:183
|
||||
old "## Classify files as None to exclude them from the built distributions."
|
||||
@@ -202,6 +202,5 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/options.rpy:203
|
||||
old "## A Google Play license key is required to perform in-app purchases. It can be found in the Google Play developer console, under \"Monetize\" > \"Monetization Setup\" > \"Licensing\"."
|
||||
# Automatic translation.
|
||||
new "## Для здійснення покупок у додатку потрібен ліцензійний ключ Google Play. Його можна знайти в консолі розробника Google Play у розділі \"Монетизація\" > \"Налаштування монетизації\" > \"Ліцензування\"."
|
||||
|
||||
|
||||
@@ -11,15 +11,15 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:85
|
||||
old "## Say screen"
|
||||
new "## Екран розмови"
|
||||
new "## Екран Say"
|
||||
|
||||
# gui/game/screens.rpy:87
|
||||
old "## The say screen is used to display dialogue to the player. It takes two parameters, who and what, which are the name of the speaking character and the text to be displayed, respectively. (The who parameter can be None if no name is given.)"
|
||||
new "## Екран say використовується для відображення діалогу гравцеві. Він приймає два параметри, хто і що, ім'я персонажа, що говорить, і текст, який буде відображатися відповідно. (Параметр who може мати значення None, якщо ім’я не вказано.)"
|
||||
new "## Екран Say використовується для відображення діалогу гравцеві. Він приймає два параметри, who і what, ім’я персонажа, що говорить, і текст, який буде відображатися відповідно. (Параметр who може мати значення None, якщо ім’я не вказано.)"
|
||||
|
||||
# gui/game/screens.rpy:92
|
||||
old "## This screen must create a text displayable with id \"what\", as Ren'Py uses this to manage text display. It can also create displayables with id \"who\" and id \"window\" to apply style properties."
|
||||
new "## Цей екран має створювати текст, який можна відображати з ідентифікатором \"what\", оскільки Ren'Py використовує це для керування відображенням тексту. Він також може створювати відображувані елементи з ідентифікаторами \"who\" та ідентифікаторами \"window\" для застосування властивостей стилю."
|
||||
new "## Цей екран має створювати текст, який можна відображати з ідентифікатором «what», оскільки Ren'Py використовує це для керування відображенням тексту. Він також може створювати відображувані елементи з ідентифікаторами «who» та «window» для застосування властивостей стилю."
|
||||
|
||||
# gui/game/screens.rpy:96
|
||||
old "## https://www.renpy.org/doc/html/screen_special.html#say"
|
||||
@@ -27,11 +27,11 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:114
|
||||
old "## If there's a side image, display it above the text. Do not display on the phone variant - there's no room."
|
||||
new "## Якщо є зображення збоку, відобразіть його над текстом. Не відображати на телефоні як варіант - немає місця."
|
||||
new "Якщо є бічне зображення, показуйте його над текстом. Не виводьте на мобільний варіант — немає місця."
|
||||
|
||||
# gui/game/screens.rpy:120
|
||||
old "## Make the namebox available for styling through the Character object."
|
||||
new "## Робить поле імен доступним для стилізації через об'єкт Character."
|
||||
new "## Робить поле імені доступним для стилізації за допомогою об’єкта Character."
|
||||
|
||||
# gui/game/screens.rpy:165
|
||||
old "## Input screen"
|
||||
@@ -43,7 +43,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:170
|
||||
old "## This screen must create an input displayable with id \"input\" to accept the various input parameters."
|
||||
new "## Цей екран має створити відображуваний вхід з ідентифікатором \"input\" для прийняття різних вхідних параметрів."
|
||||
new "## Цей екран має створити відображуваний вхід з ідентифікатором «input» для прийняття різних вхідних параметрів."
|
||||
|
||||
# gui/game/screens.rpy:173
|
||||
old "## https://www.renpy.org/doc/html/screen_special.html#input"
|
||||
@@ -55,7 +55,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:202
|
||||
old "## This screen is used to display the in-game choices presented by the menu statement. The one parameter, items, is a list of objects, each with caption and action fields."
|
||||
new "## Цей екран використовується для відображення вибору в грі, представленого командою 'menu'. Один параметр, 'items', — це список об’єктів, кожен із полями заголовка та дії."
|
||||
new "## Цей екран використовується для відображення вибору в грі, представленого командою 'menu'. Один параметр, 'items' — це список об’єктів, кожен із полями заголовка та дії."
|
||||
|
||||
# gui/game/screens.rpy:206
|
||||
old "## https://www.renpy.org/doc/html/screen_special.html#choice"
|
||||
@@ -87,7 +87,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:255
|
||||
old "Auto"
|
||||
new "Авто"
|
||||
new "Авто."
|
||||
|
||||
# gui/game/screens.rpy:256
|
||||
old "Save"
|
||||
@@ -103,7 +103,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:259
|
||||
old "Prefs"
|
||||
new "Опції"
|
||||
new "Налаштування"
|
||||
|
||||
# gui/game/screens.rpy:262
|
||||
old "## This code ensures that the quick_menu screen is displayed in-game, whenever the player has not explicitly hidden the interface."
|
||||
@@ -135,7 +135,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:314
|
||||
old "End Replay"
|
||||
new "Кінець повтору"
|
||||
new "Закінчити повтор"
|
||||
|
||||
# gui/game/screens.rpy:318
|
||||
old "Main Menu"
|
||||
@@ -155,7 +155,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:329
|
||||
old "## The quit button is banned on iOS and unnecessary on Android and Web."
|
||||
new "## Кнопка виходу заборонена на iOS і непотрібна на Android і в Веб."
|
||||
new "## Кнопка виходу заборонена на iOS і непотрібна на Android і в Web."
|
||||
|
||||
# gui/game/screens.rpy:330
|
||||
old "Quit"
|
||||
@@ -191,15 +191,15 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:408
|
||||
old "## This lays out the basic common structure of a game menu screen. It's called with the screen title, and displays the background, title, and navigation."
|
||||
new "## Це описує базову структуру екрана меню гри. Він викликається за допомогою заголовка екрана та відображає фон, заголовок і навігацію."
|
||||
new "## Це описує базову структуру екрана меню гри. Він викликається за допомогою заголовка екрана та відображає тло, заголовок і навігацію."
|
||||
|
||||
# gui/game/screens.rpy:411
|
||||
old "## The scroll parameter can be None, or one of \"viewport\" or \"vpgrid\". This screen is intended to be used with one or more children, which are transcluded (placed) inside it."
|
||||
new "## Параметр прокручування може бути None або одним із \"viewport\" чи \"vpgrid\". Цей екран призначений для використання з одним або декількома об'єктами, які включені (розміщені) всередині нього."
|
||||
new "## Параметр прокручування може бути None або одним із «viewport» чи «vpgrid». Цей екран призначений для використання з одним або декількома об’єктами, які включені (розміщені) всередині нього."
|
||||
|
||||
# gui/game/screens.rpy:429
|
||||
old "## Reserve space for the navigation section."
|
||||
new "## Зарезервуйте місце для розділу навігації."
|
||||
new "## Зарезервування місця для розділу навігації."
|
||||
|
||||
# gui/game/screens.rpy:471
|
||||
old "Return"
|
||||
@@ -207,7 +207,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:534
|
||||
old "## About screen"
|
||||
new "## Про екран"
|
||||
new "## Екран «Про гру»"
|
||||
|
||||
# gui/game/screens.rpy:536
|
||||
old "## This screen gives credit and copyright information about the game and Ren'Py."
|
||||
@@ -219,7 +219,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:546
|
||||
old "## This use statement includes the game_menu screen inside this one. The vbox child is then included inside the viewport inside the game_menu screen."
|
||||
new "## Цей оператор використання включає екран game_menu всередині цього. Потім дочірній елемент vbox включається в область перегляду всередині екрана game_menu."
|
||||
new "## Цей оператор використання включає екран «game_menu» всередині цього. Потім дочірній елемент «vbox» включається в область перегляду всередині екрана «game_menu»."
|
||||
|
||||
# gui/game/screens.rpy:556
|
||||
old "Version [config.version!t]\n"
|
||||
@@ -227,11 +227,11 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:558
|
||||
old "## gui.about is usually set in options.rpy."
|
||||
new "## gui.about зазвичай встановлюється в options.rpy."
|
||||
new "## «gui.about» зазвичай встановлюється в «options.rpy»."
|
||||
|
||||
# gui/game/screens.rpy:562
|
||||
old "Made with {a=https://www.renpy.org/}Ren'Py{/a} [renpy.version_only].\n\n[renpy.license!t]"
|
||||
new "Створено за допомогою {a=https://www.renpy.org/}Ren'Py{/a} [renpy.version_only].\n\n[renpy.license!t]"
|
||||
new "Зроблено з {a=https://www.renpy.org/}Ren'Py{/a} [renpy.version_only].\n\n[renpy.license!t]"
|
||||
|
||||
# gui/game/screens.rpy:573
|
||||
old "## Load and Save screens"
|
||||
@@ -239,7 +239,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:575
|
||||
old "## These screens are responsible for letting the player save the game and load it again. Since they share nearly everything in common, both are implemented in terms of a third screen, file_slots."
|
||||
new "## Ці екрани дозволяють гравцеві зберегти гру та завантажити її знову. Оскільки вони мають майже все спільне, обидва реалізовані в термінах третього екрана, file_slots."
|
||||
new "## Ці екрани дозволяють гравцеві зберегти гру та завантажити її знову. Оскільки вони мають майже все спільне, обидва реалізовані в термінах третього екрана, «file_slots»."
|
||||
|
||||
# gui/game/screens.rpy:579
|
||||
old "## https://www.renpy.org/doc/html/screen_special.html#save https://www.renpy.org/doc/html/screen_special.html#load"
|
||||
@@ -251,7 +251,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:598
|
||||
old "Automatic saves"
|
||||
new "Авто збереження"
|
||||
new "Автоматичні збереження"
|
||||
|
||||
# gui/game/screens.rpy:598
|
||||
old "Quick saves"
|
||||
@@ -259,7 +259,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:604
|
||||
old "## This ensures the input will get the enter event before any of the buttons do."
|
||||
new "## Це гарантує, що введення отримає подію enter раніше, ніж будь-яка кнопка."
|
||||
new "## Це гарантує, що введення отримає подію «enter» раніше, ніж будь-яка кнопка."
|
||||
|
||||
# gui/game/screens.rpy:608
|
||||
old "## The page name, which can be edited by clicking on a button."
|
||||
@@ -267,7 +267,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:620
|
||||
old "## The grid of file slots."
|
||||
new "## Сітка слотів для файлів."
|
||||
new "## Сітка комірок для файлів."
|
||||
|
||||
# gui/game/screens.rpy:640
|
||||
old "{#file_time}%A, %B %d %Y, %H:%M"
|
||||
@@ -275,7 +275,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:640
|
||||
old "empty slot"
|
||||
new "порожній слот"
|
||||
new "порожня комірка"
|
||||
|
||||
# gui/game/screens.rpy:648
|
||||
old "## Buttons to access other pages."
|
||||
@@ -287,7 +287,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:660
|
||||
old "{#auto_page}A"
|
||||
new "{#auto_page}A"
|
||||
new "{#auto_page}А"
|
||||
|
||||
# gui/game/screens.rpy:663
|
||||
old "{#quick_page}Q"
|
||||
@@ -295,7 +295,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:665
|
||||
old "## range(1, 10) gives the numbers from 1 to 9."
|
||||
new "## діапазон(1, 10) дає числа від 1 до 9."
|
||||
new "## range(1, 10) дає числа від 1 до 9."
|
||||
|
||||
# gui/game/screens.rpy:669
|
||||
old ">"
|
||||
@@ -315,11 +315,11 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:726
|
||||
old "Display"
|
||||
new "Дисплей"
|
||||
new "Режим показу"
|
||||
|
||||
# gui/game/screens.rpy:727
|
||||
old "Window"
|
||||
new "Вікно"
|
||||
new "У вікні"
|
||||
|
||||
# gui/game/screens.rpy:728
|
||||
old "Fullscreen"
|
||||
@@ -327,7 +327,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:733
|
||||
old "Unseen Text"
|
||||
new "Невидимий текст"
|
||||
new "Непрочитаний текст"
|
||||
|
||||
# gui/game/screens.rpy:734
|
||||
old "After Choices"
|
||||
@@ -339,7 +339,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:737
|
||||
old "## Additional vboxes of type \"radio_pref\" or \"check_pref\" can be added here, to add additional creator-defined preferences."
|
||||
new "## Сюди можна долучити додаткові вікна vbox типу \"radio_pref\" або \"check_pref\", щоб долучити додаткові параметри, визначені творцем."
|
||||
new "## Сюди можна долучити додаткові вікна vbox типу «radio_pref» або «check_pref», щоб долучити додаткові параметри, визначені творцем."
|
||||
|
||||
# gui/game/screens.rpy:748
|
||||
old "Text Speed"
|
||||
@@ -347,7 +347,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:752
|
||||
old "Auto-Forward Time"
|
||||
new "Час авто-переадресації"
|
||||
new "Швидкість перемотки"
|
||||
|
||||
# gui/game/screens.rpy:759
|
||||
old "Music Volume"
|
||||
@@ -355,7 +355,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:766
|
||||
old "Sound Volume"
|
||||
new "Гучність звуку"
|
||||
new "Гучність звук. ефектів"
|
||||
|
||||
# gui/game/screens.rpy:772
|
||||
old "Test"
|
||||
@@ -363,7 +363,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:776
|
||||
old "Voice Volume"
|
||||
new "Гучність голосу"
|
||||
new "Гучність озвучення"
|
||||
|
||||
# gui/game/screens.rpy:787
|
||||
old "Mute All"
|
||||
@@ -383,15 +383,15 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:875
|
||||
old "## Avoid predicting this screen, as it can be very large."
|
||||
new "## Уникайте прогнозування цього екрана, оскільки він може бути дуже великим."
|
||||
new "## Не намагайтеся передбачити цей екран, оскільки він може бути дуже великим."
|
||||
|
||||
# gui/game/screens.rpy:886
|
||||
old "## This lays things out properly if history_height is None."
|
||||
new "## Це правильно розкладає речі, якщо history_height дорівнює None."
|
||||
new "## Тут все буде правильно, якщо history_height дорівнює None."
|
||||
|
||||
# gui/game/screens.rpy:896
|
||||
old "## Take the color of the who text from the Character, if set."
|
||||
new "## Взяти колір тексту що від персонажа, якщо встановлено."
|
||||
new "## Бере колір тексту who з Character, якщо він заданий."
|
||||
|
||||
# gui/game/screens.rpy:905
|
||||
old "The dialogue history is empty."
|
||||
@@ -415,25 +415,23 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:975
|
||||
old "Mouse"
|
||||
new "Мишка"
|
||||
new "Миша"
|
||||
|
||||
# gui/game/screens.rpy:978
|
||||
old "Gamepad"
|
||||
new "Геймпад"
|
||||
new "Ґеймпад"
|
||||
|
||||
# gui/game/screens.rpy:991
|
||||
old "Enter"
|
||||
# Automatic translation.
|
||||
new "Увійдіть"
|
||||
new "Enter"
|
||||
|
||||
# gui/game/screens.rpy:992
|
||||
old "Advances dialogue and activates the interface."
|
||||
new "Розвиває діалог і активує інтерфейс."
|
||||
new "Просуває діалог і вмикає інтерфейс."
|
||||
|
||||
# gui/game/screens.rpy:995
|
||||
old "Space"
|
||||
# Automatic translation.
|
||||
new "Простір"
|
||||
new "Пробіл"
|
||||
|
||||
# gui/game/screens.rpy:996
|
||||
old "Advances dialogue without selecting choices."
|
||||
@@ -441,7 +439,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:999
|
||||
old "Arrow Keys"
|
||||
new "Клавіші cтрілок"
|
||||
new "Клавіші зі стрілками"
|
||||
|
||||
# gui/game/screens.rpy:1000
|
||||
old "Navigate the interface."
|
||||
@@ -449,8 +447,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:1003
|
||||
old "Escape"
|
||||
# Automatic translation.
|
||||
new "Втеча"
|
||||
new "Escape"
|
||||
|
||||
# gui/game/screens.rpy:1004
|
||||
old "Accesses the game menu."
|
||||
@@ -474,8 +471,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:1015
|
||||
old "Page Up"
|
||||
# Automatic translation.
|
||||
new "Перегорнути сторінку."
|
||||
new "Page Up"
|
||||
|
||||
# gui/game/screens.rpy:1016
|
||||
old "Rolls back to earlier dialogue."
|
||||
@@ -483,8 +479,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:1019
|
||||
old "Page Down"
|
||||
# Automatic translation.
|
||||
new "Перегорнути сторінку вниз."
|
||||
new "Page Down"
|
||||
|
||||
# gui/game/screens.rpy:1020
|
||||
old "Rolls forward to later dialogue."
|
||||
@@ -496,63 +491,63 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:1028
|
||||
old "Takes a screenshot."
|
||||
new "Робить скріншот."
|
||||
new "Робить знімок екрана."
|
||||
|
||||
# gui/game/screens.rpy:1032
|
||||
old "Toggles assistive {a=https://www.renpy.org/l/voicing}self-voicing{/a}."
|
||||
new "Вмикає допоміжне {a=https://www.renpy.org/l/voicing}самоозвучення{/a}."
|
||||
new "Вмикає допоміжний {a=https://www.renpy.org/l/voicing}синтез мовлення{/a}."
|
||||
|
||||
# gui/game/screens.rpy:1036
|
||||
old "Opens the accessibility menu."
|
||||
new "Відкриває меню спеціальних можливостей."
|
||||
new "Відкриває меню доступності."
|
||||
|
||||
# gui/game/screens.rpy:1042
|
||||
old "Left Click"
|
||||
new "Лівий клік"
|
||||
new "ЛКМ"
|
||||
|
||||
# gui/game/screens.rpy:1046
|
||||
old "Middle Click"
|
||||
new "Середній клік"
|
||||
new "СКМ"
|
||||
|
||||
# gui/game/screens.rpy:1050
|
||||
old "Right Click"
|
||||
new "Правий клік"
|
||||
new "ПКМ"
|
||||
|
||||
# gui/game/screens.rpy:1054
|
||||
old "Mouse Wheel Up\nClick Rollback Side"
|
||||
new "Колесо миші вгору\nбік повернення назад"
|
||||
new "Коліщатко миші вгору\nСторона відкату"
|
||||
|
||||
# gui/game/screens.rpy:1058
|
||||
old "Mouse Wheel Down"
|
||||
new "Колесо миші вниз"
|
||||
new "Коліщатко миші вниз"
|
||||
|
||||
# gui/game/screens.rpy:1065
|
||||
old "Right Trigger\nA/Bottom Button"
|
||||
new "Правий тригер\nA/нижня кнопка"
|
||||
new "Правий тригер\nA/Нижня кнопка"
|
||||
|
||||
# gui/game/screens.rpy:1069
|
||||
old "Left Trigger\nLeft Shoulder"
|
||||
new "Лівий тригер\nЛіве плече"
|
||||
new "Лівий тригер\nЛівий бампер"
|
||||
|
||||
# gui/game/screens.rpy:1073
|
||||
old "Right Shoulder"
|
||||
new "Праве плече"
|
||||
new "Правий бампер"
|
||||
|
||||
# gui/game/screens.rpy:1078
|
||||
old "D-Pad, Sticks"
|
||||
new "D-Pad, стіки"
|
||||
new "Хрестовина, Стики"
|
||||
|
||||
# gui/game/screens.rpy:1082
|
||||
old "Start, Guide"
|
||||
new "Старт, Гайд"
|
||||
new "Start, Guide"
|
||||
|
||||
# gui/game/screens.rpy:1086
|
||||
old "Y/Top Button"
|
||||
new "Кнопка Y/Top"
|
||||
new "Y/Верхня кнопка"
|
||||
|
||||
# gui/game/screens.rpy:1089
|
||||
old "Calibrate"
|
||||
new "Калібрувати"
|
||||
new "Відкалібрувати"
|
||||
|
||||
# gui/game/screens.rpy:1117
|
||||
old "## Additional screens"
|
||||
@@ -564,7 +559,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:1123
|
||||
old "## The confirm screen is called when Ren'Py wants to ask the player a yes or no question."
|
||||
new "## Екран підтвердження викликається, коли Ren'Py хоче поставити гравцеві запитання «так» або «ні»."
|
||||
new "## Екран підтвердження викликається, коли Ren'Py хоче поставити гравцеві запитання «Так» або «Ні»."
|
||||
|
||||
# gui/game/screens.rpy:1126
|
||||
old "## https://www.renpy.org/doc/html/screen_special.html#confirm"
|
||||
@@ -584,7 +579,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:1157
|
||||
old "## Right-click and escape answer \"no\"."
|
||||
new "## Клацніть правою кнопкою миші та вийдіть із відповіді \"no\"."
|
||||
new "## Клацніть ПКМ та вийдіть із відповіді «Ні»."
|
||||
|
||||
# gui/game/screens.rpy:1184
|
||||
old "## Skip indicator screen"
|
||||
@@ -628,7 +623,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:1281
|
||||
old "## This screen is used for NVL-mode dialogue and menus."
|
||||
new "## Відображає діалог у vpgrid або vbox."
|
||||
new "## Цей екран використовується для діалогу та меню режиму NVL."
|
||||
|
||||
# gui/game/screens.rpy:1283
|
||||
old "## https://www.renpy.org/doc/html/screen_special.html#nvl"
|
||||
@@ -640,7 +635,7 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:1307
|
||||
old "## Displays the menu, if given. The menu may be displayed incorrectly if config.narrator_menu is set to True."
|
||||
new "## Відображає меню, якщо є. Меню може відображатися неправильно, якщо для config.narrator_menu встановлено значення True."
|
||||
new "## Відображає меню, якщо є. Меню може відображатися неправильно, якщо для config.narrator_menu задано значення True."
|
||||
|
||||
# gui/game/screens.rpy:1337
|
||||
old "## This controls the maximum number of NVL-mode entries that can be displayed at once."
|
||||
@@ -663,23 +658,19 @@ translate ukrainian strings:
|
||||
|
||||
# gui/game/screens.rpy:676
|
||||
old "Upload Sync"
|
||||
# Automatic translation.
|
||||
new "Завантажити Синхронізація"
|
||||
new "Вивантажити синхронізацію"
|
||||
|
||||
# gui/game/screens.rpy:680
|
||||
old "Download Sync"
|
||||
# Automatic translation.
|
||||
new "Завантажити Синхронізація"
|
||||
new "Завантажити синхронізацію"
|
||||
|
||||
# gui/game/screens.rpy:1410
|
||||
old "## Bubble screen"
|
||||
# Automatic translation.
|
||||
new "## Бульбашковий екран"
|
||||
new "## Екран з бульбашками"
|
||||
|
||||
# gui/game/screens.rpy:1412
|
||||
old "## The bubble screen is used to display dialogue to the player when using speech bubbles. The bubble screen takes the same parameters as the say screen, must create a displayable with the id of \"what\", and can create displayables with the \"namebox\", \"who\", and \"window\" ids."
|
||||
# Automatic translation.
|
||||
new "## Екран бульбашок використовується для показу діалогу гравцеві під час використання мовних бульбашок. Екран бульбашок має ті самі параметри, що й екран промови, повинен створювати елемент відображення з ідентифікатором \"what\", а також може створювати елементи відображення з ідентифікаторами \"namebox\", \"who\" та \"window\"."
|
||||
new "## Екран бульбашок використовується для показу діалогу гравцеві під час використання мовних бульбашок. Екран бульбашок має ті самі параметри, що й екран слів, має створювати елемент відображення з ідентифікатором «what», а також може створювати елементи відображення з ідентифікаторами «namebox», «who» і «window»."
|
||||
|
||||
# gui/game/screens.rpy:1417
|
||||
old "## https://www.renpy.org/doc/html/bubble.html#bubble-screen"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# У цьому файлі міститься скрипт гри.
|
||||
|
||||
# Оголошення символів, які використовуються в цій грі. Колірний аргумент розфарбовує
|
||||
# ім'я персонажа.
|
||||
# Оголошення персонажів, які використовуються в цій грі. Колірний аргумент розфарбовує
|
||||
# ім’я персонажа.
|
||||
|
||||
define e = Character("Ейлін")
|
||||
|
||||
@@ -10,15 +10,15 @@ define e = Character("Ейлін")
|
||||
|
||||
label start:
|
||||
|
||||
# Це показує фон. За замовчуванням використовується заповнювач, але ви можете
|
||||
# додати файл (з назвою "bg room.png" або "bg room.jpg") до
|
||||
# каталогу images, щоб показати його.
|
||||
# Це показує тло. За стандратом використовується заповнювач, але ви можете
|
||||
# додати файл (з назвою «bg room.png» або «bg room.jpg») до
|
||||
# теки images, щоб показати його.
|
||||
|
||||
scene bg room
|
||||
|
||||
# Це показує спрайт персонажа. Використовується заповнювач, але ви можете
|
||||
# замінити його, додавши до зображень файл із назвою "eileen happy.png".
|
||||
# до каталогу.
|
||||
# замінити його, додавши до зображень файл із назвою «eileen happy.png».
|
||||
# до теки.
|
||||
|
||||
show eileen happy
|
||||
|
||||
|
||||
@@ -357,11 +357,11 @@
|
||||
|
||||
# editor.rpy:150
|
||||
old "{b}Recommended.{/b} A beta editor with an easy to use interface and features that aid in development, such as spell-checking. Editra currently lacks the IME support required for Chinese, Japanese, and Korean text input."
|
||||
new "{b}Khuyến khích{/ b} Một trình biên tập có giao diện thân thiện và chức năng hỗ trợ phát triển, chẳng hạn như kiểm tra lỗi chính tả. Editra hiện đang thiếu sự hỗ trợ IME cần thiết để nhập văn bản Trung Quốc, Nhật Bản, và Hàn Quốc."
|
||||
new "{b}Khuyến khích{/b} Một trình biên tập có giao diện thân thiện và chức năng hỗ trợ phát triển, chẳng hạn như kiểm tra lỗi chính tả. Editra hiện đang thiếu sự hỗ trợ IME cần thiết để nhập văn bản Trung Quốc, Nhật Bản, và Hàn Quốc."
|
||||
|
||||
# editor.rpy:151
|
||||
old "{b}Recommended.{/b} A beta editor with an easy to use interface and features that aid in development, such as spell-checking. Editra currently lacks the IME support required for Chinese, Japanese, and Korean text input. On Linux, Editra requires wxPython."
|
||||
new "{b}Khuyến khích{/ b} Một trình biên tập có giao diện thân thiện và chức năng hỗ trợ phát triển, chẳng hạn như kiểm tra lỗi chính tả. Editra hiện đang thiếu sự hỗ trợ IME cần thiết để nhập văn bản Trung Quốc, Nhật Bản, và Hàn Quốc. Với Linux Editra cần thêm wxPython."
|
||||
new "{b}Khuyến khích{/b} Một trình biên tập có giao diện thân thiện và chức năng hỗ trợ phát triển, chẳng hạn như kiểm tra lỗi chính tả. Editra hiện đang thiếu sự hỗ trợ IME cần thiết để nhập văn bản Trung Quốc, Nhật Bản, và Hàn Quốc. Với Linux Editra cần thêm wxPython."
|
||||
|
||||
# editor.rpy:167
|
||||
old "This may have occured because wxPython is not installed on this system."
|
||||
|
||||
@@ -52,7 +52,7 @@ init python:
|
||||
if state is not None:
|
||||
base_name = state.get("sdk", {}).get('base_name', '')
|
||||
|
||||
if "-nightly-" in base_name:
|
||||
if "+nightly" in base_name:
|
||||
dlc_url = "http://nightly.renpy.org/{}/updates.json".format(base_name[6:])
|
||||
|
||||
return renpy.invoke_in_new_context(updater.update, dlc_url, add=[name], public_key=PUBLIC_KEY, simulate=UPDATE_SIMULATE, restart=restart)
|
||||
@@ -73,6 +73,11 @@ init python:
|
||||
_("Experimental")
|
||||
_("Experimental versions of Ren'Py. You shouldn't select this channel unless asked by a Ren'Py developer.")
|
||||
|
||||
_("Nightly Fix")
|
||||
_("Nightly Fix (Ren'Py 8, Python 3)")
|
||||
_("Nightly Fix (Ren'Py 7, Python 2)")
|
||||
_("A nightly build of fixes to the release version of Ren'Py.")
|
||||
|
||||
_("Nightly")
|
||||
_("Nightly (Ren'Py 8, Python 3)")
|
||||
_("Nightly (Ren'Py 7, Python 2)")
|
||||
@@ -110,7 +115,7 @@ screen update_channel(channels):
|
||||
for c in channels:
|
||||
|
||||
if c["split_version"] != list(renpy.version_tuple) or allow_repair_update:
|
||||
$ action = [SetField(persistent, "has_update", None), SetField(persistent, "last_update_check", None), updater.Update(c["url"], simulate=UPDATE_SIMULATE, public_key=PUBLIC_KEY, confirm=False, force=allow_repair_update)]
|
||||
$ action = [SetField(persistent, "has_update", None), SetField(persistent, "last_update_check", None), updater.Update(c["url"], simulate=UPDATE_SIMULATE, public_key=PUBLIC_KEY, confirm=False, force=allow_repair_update, prefer_rpu=c.get("prefer_rpu", False))]
|
||||
|
||||
if c["channel"].startswith("Release"):
|
||||
$ current = _("• {a=https://www.renpy.org/doc/html/changelog.html}View change log{/a}")
|
||||
@@ -127,15 +132,14 @@ screen update_channel(channels):
|
||||
|
||||
hbox:
|
||||
spacing 7
|
||||
textbutton c["channel"] action action
|
||||
|
||||
|
||||
textbutton c["channel"] action action
|
||||
|
||||
add HALF_SPACER
|
||||
|
||||
$ date = _strftime(__("%B %d, %Y"), time.localtime(c["timestamp"]))
|
||||
$ pretty = c["pretty_version"]
|
||||
|
||||
text "[date] • [c[pretty_version]] [current!t]" style "l_small_text"
|
||||
text "[date] • [pretty] [current!t]" style "l_small_text"
|
||||
|
||||
add HALF_SPACER
|
||||
|
||||
|
||||
@@ -228,11 +228,11 @@ init python:
|
||||
return f_rule
|
||||
return False
|
||||
|
||||
def generate_pwa_icons(p, destination):
|
||||
def generate_web_icons(p, destination):
|
||||
"""
|
||||
Checks if the pwa_icon.png file exists in the game folder and generates
|
||||
Checks if the web-icon.png file exists in the game folder and generates
|
||||
required icons for PWA in subdirectory icons/ in the destination folder.
|
||||
If no pwa_icon.png is found, the default Ren'Py icon is used instead in
|
||||
If no web-icon.png is found, the default Ren'Py icon is used instead in
|
||||
the web folder, if exists.
|
||||
"""
|
||||
# Check if there's a custom icon in the game directory
|
||||
@@ -430,7 +430,7 @@ init python:
|
||||
|
||||
# Copy the files from WEB_PATH to destination.
|
||||
for fn in os.listdir(WEB_PATH):
|
||||
if fn in { "game.zip", "hash.txt", "index.html", "pwa_icon.png" }:
|
||||
if fn in { "game.zip", "hash.txt", "index.html", "web-icon.png" }:
|
||||
continue
|
||||
|
||||
shutil.copy(os.path.join(WEB_PATH, fn), os.path.join(destination, fn))
|
||||
@@ -466,7 +466,7 @@ init python:
|
||||
f.write(html)
|
||||
|
||||
if not PY2:
|
||||
generate_pwa_icons(p, destination)
|
||||
generate_web_icons(p, destination)
|
||||
prepare_pwa_files(p, destination)
|
||||
|
||||
# Zip up the game.
|
||||
|
||||
@@ -41,3 +41,4 @@ renpy.gl2.live2dmodel gen/renpy.gl2.live2dmodel.c
|
||||
renpy.text.textsupport gen/renpy.text.textsupport.c
|
||||
renpy.text.texwrap gen/renpy.text.texwrap.c
|
||||
renpy.text.ftfont gen/renpy.text.ftfont.c ftsupport.c ttgsubtable.c
|
||||
renpy.text.hbfont gen/renpy.text.hbfont.c
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Executable
+214
@@ -0,0 +1,214 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import collections
|
||||
import graphlib
|
||||
from pathlib import Path
|
||||
import pprint
|
||||
|
||||
class trie_node(dict):
|
||||
name = None
|
||||
|
||||
def __missing__(self, key):
|
||||
self[key] = trie_node()
|
||||
self[key][''] = 0
|
||||
return self[key]
|
||||
|
||||
@property
|
||||
def key(self):
|
||||
return tuple(sorted(self.items()))
|
||||
|
||||
def __hash__(self):
|
||||
return hash(self.key)
|
||||
|
||||
def __eq__(self, other):
|
||||
return self.key == other.key
|
||||
|
||||
emoji = trie_node()
|
||||
|
||||
LEVEL = {
|
||||
"unqualified" : 1,
|
||||
"component" : 2,
|
||||
"minimally-qualified" : 3,
|
||||
"fully-qualified" : 4,
|
||||
}
|
||||
|
||||
def load():
|
||||
"""
|
||||
Load the emoji.
|
||||
"""
|
||||
|
||||
emoji_test_text = Path(__file__).parent / "emoji-test.txt"
|
||||
lines = emoji_test_text.read_text().splitlines()
|
||||
|
||||
for l in lines:
|
||||
l = l.partition("#")[0].strip()
|
||||
if not l:
|
||||
continue
|
||||
|
||||
codepoints, qualifier = l.split(";")
|
||||
|
||||
level = LEVEL[qualifier.strip()]
|
||||
|
||||
d = emoji
|
||||
|
||||
for i in codepoints.strip().split():
|
||||
i = chr(int(i, 16))
|
||||
d = d[i]
|
||||
|
||||
d[''] = level
|
||||
|
||||
emoji[''] = 0
|
||||
|
||||
|
||||
def merge(d):
|
||||
"""
|
||||
Merge tries with identical subtrees.
|
||||
"""
|
||||
|
||||
unique_tries = { }
|
||||
|
||||
def pass1(d):
|
||||
unique_tries[d] = d
|
||||
for v in d.values():
|
||||
if type(v) is not int:
|
||||
pass1(v)
|
||||
|
||||
def pass2(d):
|
||||
d = unique_tries[d]
|
||||
|
||||
for k, v in d.items():
|
||||
if type(v) is not int:
|
||||
d[k] = pass2(v)
|
||||
|
||||
return d
|
||||
|
||||
pass1(d)
|
||||
return pass2(d)
|
||||
|
||||
dict_by_name = { }
|
||||
|
||||
def assign_names(d):
|
||||
"""
|
||||
Assigns a unique name to each trie node.
|
||||
"""
|
||||
|
||||
serial = 0
|
||||
|
||||
def assign(d):
|
||||
if type(d) is int or type(d) is str:
|
||||
return
|
||||
|
||||
if d.name is not None:
|
||||
return
|
||||
|
||||
nonlocal serial
|
||||
d.name = f"e{serial}"
|
||||
dict_by_name[d.name] = d
|
||||
serial += 1
|
||||
|
||||
for v in d.values():
|
||||
assign(v)
|
||||
|
||||
assign(d)
|
||||
d.name = "emoji"
|
||||
dict_by_name[d.name] = d
|
||||
|
||||
order = [ ]
|
||||
|
||||
def sort():
|
||||
"""
|
||||
Sorts the dicts into dependency order.
|
||||
"""
|
||||
|
||||
graph = { }
|
||||
|
||||
def add(d):
|
||||
graph[d.name] = {v.name for v in d.values() if type(v) is not int}
|
||||
|
||||
for v in d.values():
|
||||
if type(v) is not int:
|
||||
add(v)
|
||||
|
||||
add(emoji)
|
||||
|
||||
ts = graphlib.TopologicalSorter(graph)
|
||||
|
||||
global order
|
||||
order = list(ts.static_order())
|
||||
|
||||
def generate(f, d):
|
||||
"""
|
||||
Generates Python code for a trie node.
|
||||
"""
|
||||
|
||||
l = [ f"{d.name} = {{" ]
|
||||
|
||||
for k in sorted(d.keys()):
|
||||
v = d[k]
|
||||
if type(v) is int:
|
||||
l.append(f"'{k}': {v},")
|
||||
else:
|
||||
l.append(f"'{k}': {v.name},")
|
||||
|
||||
l.append("}")
|
||||
|
||||
print(" ".join(l), file=f)
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
dest = Path(__file__).parent.parent.parent / "renpy"/ "text"/ "emoji_trie.py"
|
||||
|
||||
with open(dest, "w") as f:
|
||||
|
||||
print("""\
|
||||
# coding: utf-8
|
||||
#
|
||||
# This file is generated by module/emoji/make_emoji_trie.py. Do not
|
||||
# edit it directly.
|
||||
#
|
||||
# Emoji trie data.
|
||||
#
|
||||
#
|
||||
# It contains a data structure that can be used to determine if a
|
||||
# sequence of codepoints is an emoji and if it should be rendered
|
||||
# in an emoji font.
|
||||
#
|
||||
# Each trie node is a dictionary mapping codepoints to other dictionaries.
|
||||
# If a codepoint is not present in the dictionarly, look up the '' key
|
||||
# in the dictionary to find what it maps to. (It will be one of the constants
|
||||
# below.
|
||||
#
|
||||
# The top-level dictionary is named emoji.
|
||||
|
||||
# The codepoint is not an emoji.
|
||||
NOT_EMOJI = 0
|
||||
|
||||
# The codepoints are an emoji, but it may or may not be rendered in an emoji font.
|
||||
UNQUALIFIED = 1
|
||||
|
||||
# The codepoints are part of a larger emoji sequence, and should be rendered
|
||||
# in an emoji font when standing alone.
|
||||
COMPONENT = 2
|
||||
|
||||
# The codepoints are an emoji, and should be rendered in an emoji font, but
|
||||
# aren't fully qualified.
|
||||
MINIMALLY_QUALIFIED = 3
|
||||
|
||||
# The codepoints are an emoji, and should be rendered in an emoji font.
|
||||
QUALIFIED = 4
|
||||
|
||||
""", file=f)
|
||||
|
||||
global emoji
|
||||
|
||||
load()
|
||||
emoji = merge(emoji)
|
||||
assign_names(emoji)
|
||||
sort()
|
||||
|
||||
for name in order:
|
||||
generate(f, dict_by_name[name])
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -134,7 +134,7 @@ style_properties = sorted_dict(
|
||||
alt=None,
|
||||
altruby_style=None,
|
||||
antialias=None,
|
||||
vertical=None,
|
||||
axis=None,
|
||||
background='renpy.easy.displayable_or_none',
|
||||
bar_invert=None,
|
||||
bar_resizing=None,
|
||||
@@ -155,6 +155,7 @@ style_properties = sorted_dict(
|
||||
debug=None,
|
||||
drop_shadow=None,
|
||||
drop_shadow_color='renpy.easy.color',
|
||||
emoji_font=None,
|
||||
first_indent=None,
|
||||
first_spacing=None,
|
||||
fit_first=None,
|
||||
@@ -168,6 +169,7 @@ style_properties = sorted_dict(
|
||||
hover_sound=None,
|
||||
hyperlink_functions=None,
|
||||
italic=None,
|
||||
instance=None,
|
||||
justify=None,
|
||||
kerning=None,
|
||||
key_events=None,
|
||||
@@ -187,10 +189,12 @@ style_properties = sorted_dict(
|
||||
order_reverse=None,
|
||||
outlines='expand_outlines',
|
||||
outline_scaling=None,
|
||||
prefer_emoji=None,
|
||||
rest_indent=None,
|
||||
right_margin=None,
|
||||
right_padding=None,
|
||||
ruby_style=None,
|
||||
shaper=None,
|
||||
size=None,
|
||||
size_group=None,
|
||||
slow_abortable=None,
|
||||
@@ -209,6 +213,7 @@ style_properties = sorted_dict(
|
||||
top_margin=None,
|
||||
top_padding=None,
|
||||
underline=None,
|
||||
vertical=None,
|
||||
xanchor='expand_anchor',
|
||||
xfill=None,
|
||||
xfit=None,
|
||||
|
||||
@@ -88,6 +88,7 @@ cdef extern from "pyfreetype.h":
|
||||
FT_PIXEL_MODE_GRAY4,
|
||||
FT_PIXEL_MODE_LCD,
|
||||
FT_PIXEL_MODE_LCD_V,
|
||||
FT_PIXEL_MODE_BGRA,
|
||||
|
||||
FT_PIXEL_MODE_MAX
|
||||
|
||||
@@ -394,6 +395,13 @@ cdef extern from "pyfreetype.h":
|
||||
FT_LOAD_LINEAR_DESIGN
|
||||
FT_LOAD_SBITS_ONLY
|
||||
FT_LOAD_NO_AUTOHINT
|
||||
FT_LOAD_COLOR
|
||||
|
||||
FT_LOAD_TARGET_NORMAL
|
||||
FT_LOAD_TARGET_LIGHT
|
||||
FT_LOAD_TARGET_MONO
|
||||
FT_LOAD_TARGET_LCD
|
||||
FT_LOAD_TARGET_LCD_V
|
||||
|
||||
FT_Error FT_Load_Glyph(FT_Face face, FT_UInt glyph_index, FT_Int32 flags)
|
||||
FT_Error FT_Load_Char(FT_Face face, FT_ULong char_code, FT_Int32 flags)
|
||||
@@ -515,7 +523,7 @@ cdef extern from "pyfreetype.h":
|
||||
FT_Error FT_Bitmap_Embolden(FT_Library lib, FT_Bitmap *bitmap, FT_Pos xStrength, FT_Pos yStrength)
|
||||
FT_Error FT_Bitmap_Convert(FT_Library lib, FT_Bitmap *source, FT_Bitmap *target, FT_Int alignment)
|
||||
|
||||
# Additions by Tom Rothame.
|
||||
# Additions by Tom Rothamel.
|
||||
|
||||
cdef struct FT_MemoryRec_
|
||||
ctypedef FT_MemoryRec_ *FT_Memory
|
||||
@@ -605,3 +613,42 @@ cdef extern from "pyfreetype.h":
|
||||
cdef FT_Long FT_CEIL(FT_Long)
|
||||
cdef FT_Long FT_FLOOR(FT_Long)
|
||||
cdef FT_Long FT_ROUND(FT_Long)
|
||||
|
||||
# Multiple Masters
|
||||
|
||||
cdef struct FT_Var_Axis_:
|
||||
FT_String* name
|
||||
|
||||
FT_Fixed minimum
|
||||
FT_Fixed default "def"
|
||||
FT_Fixed maximum
|
||||
|
||||
FT_ULong tag
|
||||
FT_UInt strid
|
||||
|
||||
ctypedef FT_Var_Axis_ FT_Var_Axis
|
||||
|
||||
cdef struct FT_Var_Named_Style_:
|
||||
FT_Fixed* coords
|
||||
FT_UInt strid
|
||||
FT_UInt psid
|
||||
|
||||
ctypedef FT_Var_Named_Style_ FT_Var_Named_Style
|
||||
|
||||
cdef struct FT_MM_Var_:
|
||||
FT_UInt num_axis
|
||||
FT_UInt num_designs
|
||||
FT_UInt num_namedstyles
|
||||
FT_Var_Axis* axis
|
||||
FT_Var_Named_Style* namedstyle
|
||||
|
||||
ctypedef FT_MM_Var_ FT_MM_Var
|
||||
|
||||
FT_Error FT_Get_MM_Var(FT_Face face, FT_MM_Var **amaster)
|
||||
FT_Error FT_Done_MM_Var(FT_Library library, FT_MM_Var *amaster)
|
||||
|
||||
FT_Error FT_Set_Named_Instance(FT_Face, FT_UInt instance_index)
|
||||
|
||||
FT_Error FT_Set_Var_Design_Coordinates( FT_Face face,
|
||||
FT_UInt num_coords,
|
||||
FT_Fixed* coords )
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include FT_OUTLINE_H
|
||||
#include FT_BITMAP_H
|
||||
#include FT_STROKER_H
|
||||
#include FT_MULTIPLE_MASTERS_H
|
||||
|
||||
#define FT_FLOOR(X) ((X & -64) >> 6)
|
||||
#define FT_CEIL(X) (((X + 63) & -64) >> 6)
|
||||
|
||||
@@ -86,6 +86,7 @@ include("libavcodec/avcodec.h", directory="ffmpeg", optional=True) or include("l
|
||||
include("libswscale/swscale.h", directory="ffmpeg", optional=True) or include("libswscale/swscale.h") # type: ignore
|
||||
include("GL/glew.h")
|
||||
include("pygame_sdl2/pygame_sdl2.h", directory="python{}.{}".format(sys.version_info.major, sys.version_info.minor))
|
||||
include("hb.h", directory="harfbuzz")
|
||||
|
||||
library("SDL2")
|
||||
library("png")
|
||||
@@ -197,6 +198,13 @@ cython(
|
||||
[ "ftsupport.c", "ttgsubtable.c" ],
|
||||
libs=sdl + [ 'freetype', 'z', 'm' ])
|
||||
|
||||
if not (PY2 and emscripten):
|
||||
|
||||
cython(
|
||||
"renpy.text.hbfont",
|
||||
[ "ftsupport.c" ],
|
||||
libs=sdl + [ 'harfbuzz', 'freetype', 'z', 'm' ])
|
||||
|
||||
generate_all_cython()
|
||||
find_unnecessary_gen()
|
||||
|
||||
|
||||
@@ -204,14 +204,28 @@ def path_to_saves(gamedir, save_directory=None): # type: (str, str|None) -> str
|
||||
# the launcher, usually.)
|
||||
def path_to_renpy_base():
|
||||
"""
|
||||
Returns the absolute path to thew Ren'Py base directory.
|
||||
Returns the absolute path to the Ren'Py base directory.
|
||||
"""
|
||||
|
||||
renpy_base = os.path.dirname(os.path.realpath(sys.argv[0]))
|
||||
renpy_base = os.path.dirname(os.path.abspath(__file__))
|
||||
renpy_base = os.path.abspath(renpy_base)
|
||||
|
||||
return renpy_base
|
||||
|
||||
def path_to_logdir(basedir):
|
||||
"""
|
||||
Returns the absolute path to the log directory.
|
||||
`basedir`
|
||||
The base directory (config.basedir)
|
||||
"""
|
||||
|
||||
import renpy # @UnresolvedImport
|
||||
|
||||
if renpy.android:
|
||||
return os.environ['ANDROID_PUBLIC']
|
||||
|
||||
return basedir
|
||||
|
||||
##############################################################################
|
||||
|
||||
|
||||
|
||||
+28
-39
@@ -75,31 +75,20 @@ from collections import namedtuple
|
||||
|
||||
# Version numbers.
|
||||
try:
|
||||
from renpy.vc_version import vc_version, official, nightly
|
||||
from renpy.vc_version import official, nightly, version_name, version
|
||||
except ImportError:
|
||||
vc_version = 0
|
||||
official = False
|
||||
nightly = False
|
||||
import renpy.versions
|
||||
version_dict = renpy.versions.get_version()
|
||||
|
||||
official = version_dict["official"]
|
||||
nightly = version_dict["nightly"]
|
||||
version_name = version_dict["version_name"]
|
||||
version = version_dict["version"]
|
||||
|
||||
official = official and getattr(site, "renpy_build_official", False)
|
||||
|
||||
VersionTuple = namedtuple("VersionTuple", ["major", "minor", "patch", "commit"])
|
||||
|
||||
if PY2:
|
||||
|
||||
# The tuple giving the version number.
|
||||
version_tuple = VersionTuple(7, 6, 0, vc_version)
|
||||
|
||||
# The name of this version.
|
||||
version_name = "To Boldly Go"
|
||||
|
||||
else:
|
||||
|
||||
# The tuple giving the version number.
|
||||
version_tuple = VersionTuple(8, 1, 0, vc_version)
|
||||
|
||||
# The name of this version.
|
||||
version_name = "Where No One Has Gone Before"
|
||||
version_tuple = VersionTuple(*(int(i) for i in version.split(".")))
|
||||
|
||||
# A string giving the version number only (8.0.1.123), with a suffix if needed.
|
||||
version_only = ".".join(str(i) for i in version_tuple)
|
||||
@@ -289,9 +278,6 @@ class Backup(_object):
|
||||
# A map from module to the set of names in that module.
|
||||
self.names = { }
|
||||
|
||||
if mobile:
|
||||
return
|
||||
|
||||
for m in sys.modules.values():
|
||||
if m is None:
|
||||
continue
|
||||
@@ -448,11 +434,12 @@ def import_all():
|
||||
import renpy.script
|
||||
import renpy.statements
|
||||
import renpy.util
|
||||
import renpy.versions
|
||||
|
||||
global plog
|
||||
plog = renpy.performance.log # type:ignore
|
||||
|
||||
import renpy.styledata # @UnresolvedImport
|
||||
import renpy.styledata
|
||||
|
||||
import renpy.style
|
||||
renpy.styledata.import_style_functions()
|
||||
@@ -467,14 +454,15 @@ def import_all():
|
||||
import renpy.translation.extract
|
||||
import renpy.translation.merge
|
||||
|
||||
import renpy.display # @UnresolvedImport @Reimport
|
||||
import renpy.display
|
||||
|
||||
import renpy.display.presplash
|
||||
import renpy.display.pgrender
|
||||
import renpy.display.scale
|
||||
import renpy.display.module
|
||||
import renpy.display.render # Most display stuff depends on this. @UnresolvedImport
|
||||
import renpy.display.core # object @UnresolvedImport
|
||||
import renpy.display.render
|
||||
import renpy.display.displayable
|
||||
import renpy.display.core
|
||||
import renpy.display.swdraw
|
||||
|
||||
import renpy.text
|
||||
@@ -494,13 +482,13 @@ def import_all():
|
||||
import renpy.display.layout
|
||||
import renpy.display.viewport
|
||||
import renpy.display.transform
|
||||
import renpy.display.motion # layout @UnresolvedImport
|
||||
import renpy.display.behavior # layout @UnresolvedImport
|
||||
import renpy.display.transition # core, layout @UnresolvedImport
|
||||
import renpy.display.movetransition # core @UnresolvedImport
|
||||
import renpy.display.motion
|
||||
import renpy.display.behavior
|
||||
import renpy.display.transition
|
||||
import renpy.display.movetransition
|
||||
import renpy.display.im
|
||||
import renpy.display.imagelike
|
||||
import renpy.display.image # core, behavior, im, imagelike @UnresolvedImport
|
||||
import renpy.display.image
|
||||
import renpy.display.video
|
||||
import renpy.display.focus
|
||||
import renpy.display.anim
|
||||
@@ -546,7 +534,7 @@ def import_all():
|
||||
import renpy.memory
|
||||
|
||||
import renpy.exports
|
||||
import renpy.character # depends on exports. @UnresolvedImport
|
||||
import renpy.character
|
||||
|
||||
import renpy.add_from
|
||||
import renpy.dump
|
||||
@@ -559,8 +547,8 @@ def import_all():
|
||||
import renpy.gl2.gl2texture
|
||||
import renpy.gl2.live2d
|
||||
|
||||
import renpy.minstore # depends on lots. @UnresolvedImport
|
||||
import renpy.defaultstore # depends on everything. @UnresolvedImport
|
||||
import renpy.minstore
|
||||
import renpy.defaultstore
|
||||
|
||||
import renpy.test
|
||||
import renpy.test.testmouse
|
||||
@@ -580,8 +568,7 @@ def import_all():
|
||||
|
||||
global backup
|
||||
|
||||
if not mobile:
|
||||
backup = Backup()
|
||||
backup = Backup()
|
||||
|
||||
post_import()
|
||||
|
||||
@@ -627,8 +614,8 @@ def reload_all():
|
||||
returned.
|
||||
"""
|
||||
|
||||
if mobile:
|
||||
raise Exception("Reloading is not supported on mobile platforms.")
|
||||
# if mobile:
|
||||
# raise Exception("Reloading is not supported on mobile platforms.")
|
||||
|
||||
import renpy
|
||||
|
||||
@@ -709,6 +696,7 @@ if 1 == 0:
|
||||
from . import dump
|
||||
from . import easy
|
||||
from . import editor
|
||||
from . import encryption
|
||||
from . import error
|
||||
from . import execution
|
||||
from . import exports
|
||||
@@ -753,5 +741,6 @@ if 1 == 0:
|
||||
from . import ui
|
||||
from . import util
|
||||
from . import vc_version
|
||||
from . import versions
|
||||
from . import warp
|
||||
from . import webloader
|
||||
|
||||
+4
-11
@@ -151,20 +151,13 @@ class ArgumentParser(argparse.ArgumentParser):
|
||||
else:
|
||||
self.group.add_argument(*args, **kwargs)
|
||||
|
||||
def parse_args(self, *args, **kwargs):
|
||||
rv = argparse.ArgumentParser.parse_args(self, *args, **kwargs)
|
||||
|
||||
if rv.command in compile_commands:
|
||||
rv.compile = True
|
||||
|
||||
if renpy.session.get("compile", False):
|
||||
rv.compile = True
|
||||
|
||||
return rv
|
||||
|
||||
def parse_known_args(self, *args, **kwargs):
|
||||
args, rest = argparse.ArgumentParser.parse_known_args(self, *args, **kwargs)
|
||||
|
||||
if renpy.session.get("_reload", False):
|
||||
args.compile = False
|
||||
|
||||
if args.command in compile_commands:
|
||||
args.compile = True
|
||||
|
||||
@@ -195,7 +188,7 @@ def run():
|
||||
|
||||
args = renpy.game.args = ap.parse_args()
|
||||
|
||||
if args.warp:
|
||||
if args.warp and not renpy.session.get("_reload", False):
|
||||
renpy.warp.warp_spec = args.warp
|
||||
|
||||
if args.profile_display: # @UndefinedVariable
|
||||
|
||||
+25
-3
@@ -1497,7 +1497,7 @@ class Camera(Node):
|
||||
self.atl = atl
|
||||
|
||||
def diff_info(self):
|
||||
return (ShowLayer, self.layer)
|
||||
return (Camera, self.layer)
|
||||
|
||||
def execute(self):
|
||||
next_node(self.next)
|
||||
@@ -1697,19 +1697,22 @@ class Call(Node):
|
||||
'label',
|
||||
'arguments',
|
||||
'expression',
|
||||
'global_label',
|
||||
]
|
||||
|
||||
def __new__(cls, *args, **kwargs):
|
||||
self = Node.__new__(cls)
|
||||
self.arguments = None
|
||||
self.global_label = ""
|
||||
return self
|
||||
|
||||
def __init__(self, loc, label, expression, arguments):
|
||||
def __init__(self, loc, label, expression, arguments, global_label=""):
|
||||
|
||||
super(Call, self).__init__(loc)
|
||||
self.label = label
|
||||
self.expression = expression
|
||||
self.arguments = arguments
|
||||
self.global_label = global_label
|
||||
|
||||
def diff_info(self):
|
||||
return (Call, self.label, self.expression)
|
||||
@@ -1722,6 +1725,9 @@ class Call(Node):
|
||||
if self.expression:
|
||||
label = renpy.python.py_eval(label)
|
||||
|
||||
if isinstance(label, str) and label.startswith("."):
|
||||
label = self.global_label + label
|
||||
|
||||
rv = renpy.game.context().call(label, return_site=self.next.name)
|
||||
next_node(rv)
|
||||
renpy.game.context().abnormal = True
|
||||
@@ -1748,6 +1754,9 @@ class Call(Node):
|
||||
except Exception:
|
||||
return [ ]
|
||||
|
||||
if isinstance(label, str) and label.startswith("."):
|
||||
label = self.global_label + label
|
||||
|
||||
if not renpy.game.script.has_label(label):
|
||||
return [ ]
|
||||
|
||||
@@ -1966,13 +1975,20 @@ class Jump(Node):
|
||||
__slots__ = [
|
||||
'target',
|
||||
'expression',
|
||||
'global_label',
|
||||
]
|
||||
|
||||
def __init__(self, loc, target, expression):
|
||||
def __new__(cls, *args, **kwargs):
|
||||
self = Node.__new__(cls)
|
||||
self.global_label = ""
|
||||
return self
|
||||
|
||||
def __init__(self, loc, target, expression, global_label=""):
|
||||
super(Jump, self).__init__(loc)
|
||||
|
||||
self.target = target
|
||||
self.expression = expression
|
||||
self.global_label = global_label
|
||||
|
||||
def diff_info(self):
|
||||
return (Jump, self.target, self.expression)
|
||||
@@ -1989,6 +2005,9 @@ class Jump(Node):
|
||||
if self.expression:
|
||||
target = renpy.python.py_eval(target)
|
||||
|
||||
if isinstance(target, str) and target.startswith("."):
|
||||
target = self.global_label + target
|
||||
|
||||
rv = renpy.game.script.lookup(target)
|
||||
renpy.game.context().abnormal = True
|
||||
|
||||
@@ -2008,6 +2027,9 @@ class Jump(Node):
|
||||
except Exception:
|
||||
return [ ]
|
||||
|
||||
if isinstance(label, str) and label.startswith("."):
|
||||
label = self.global_label + label
|
||||
|
||||
if not renpy.game.script.has_label(label):
|
||||
return [ ]
|
||||
|
||||
|
||||
+111
-148
@@ -242,24 +242,11 @@ def compile_all():
|
||||
|
||||
for i in compile_queue:
|
||||
|
||||
i.atl.find_loaded_variables()
|
||||
|
||||
if i.atl.constant == GLOBAL_CONST:
|
||||
i.compile()
|
||||
|
||||
compile_queue = [ ]
|
||||
|
||||
def find_loaded_variables(expr):
|
||||
"""
|
||||
Returns the set of variables that are loaded by the given expression.
|
||||
"""
|
||||
|
||||
if expr is None:
|
||||
return set()
|
||||
|
||||
ast = renpy.pyanalysis.ccache.ast_eval(expr)
|
||||
return renpy.python.find_loaded_variables(ast)
|
||||
|
||||
|
||||
# Used to indicate that a variable is not in the context.
|
||||
NotInContext = renpy.object.Sentinel("NotInContext")
|
||||
@@ -285,34 +272,6 @@ class Context(object):
|
||||
def __ne__(self, other):
|
||||
return not (self == other)
|
||||
|
||||
def variables_equal(self, other, variables):
|
||||
"""
|
||||
Returns true if the variables in `variables` are equal in
|
||||
this context and `other`. False if they are not equal.
|
||||
|
||||
Returns True if any variable cannot be compared.
|
||||
"""
|
||||
|
||||
try:
|
||||
|
||||
if renpy.config.at_transform_compare_full_context:
|
||||
if self.context != other.context:
|
||||
return False
|
||||
|
||||
for i in variables:
|
||||
if self.context.get(i, NotInContext) != other.context.get(i, NotInContext):
|
||||
|
||||
# Ignore the arguments given to ATL Transitions, which
|
||||
# will change each time an interaction restarts. (See #4167.)
|
||||
if i in ("new_widget", "old_widget"):
|
||||
continue
|
||||
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
except Exception:
|
||||
return True
|
||||
|
||||
|
||||
# This is intended to be subclassed by ATLTransform. It takes care of
|
||||
@@ -398,6 +357,13 @@ class ATLTransformBase(renpy.object.Object):
|
||||
if renpy.game.context().init_phase:
|
||||
compile_queue.append(self)
|
||||
|
||||
@property
|
||||
def transition(self):
|
||||
"""
|
||||
Returns true if this is likely to be an ATL transition.
|
||||
"""
|
||||
|
||||
return "new_widget" in self.context.context
|
||||
|
||||
def _handles_event(self, event):
|
||||
|
||||
@@ -446,7 +412,12 @@ class ATLTransformBase(renpy.object.Object):
|
||||
# a way that would affect the execution of the ATL.
|
||||
|
||||
if t.atl.constant != GLOBAL_CONST:
|
||||
if not self.context.variables_equal(t.context, t.atl.find_loaded_variables()):
|
||||
|
||||
block = self.get_block()
|
||||
if block is None:
|
||||
block = self.compile()
|
||||
|
||||
if not deep_compare(self.block, t.block):
|
||||
return
|
||||
|
||||
self.done = t.done
|
||||
@@ -639,7 +610,7 @@ class ATLTransformBase(renpy.object.Object):
|
||||
if (self.atl_st_offset is None) or (st - self.atl_st_offset) < 0:
|
||||
self.atl_st_offset = st
|
||||
|
||||
if self.atl.animation:
|
||||
if self.atl.animation or self.transition:
|
||||
timebase = at
|
||||
else:
|
||||
timebase = st - self.atl_st_offset
|
||||
@@ -700,12 +671,6 @@ class RawStatement(object):
|
||||
|
||||
self.constant = NOT_CONST
|
||||
|
||||
def find_loaded_variables(self):
|
||||
"""
|
||||
Returns the set of variables that are loaded by this statement.
|
||||
"""
|
||||
|
||||
raise Exception("find_loaded_variables not implemented.")
|
||||
|
||||
# The base class for compiled ATL Statements.
|
||||
|
||||
@@ -764,10 +729,6 @@ class RawBlock(RawStatement):
|
||||
# and use this value for all ATLTransform that use us as an atl.
|
||||
compiled_block = None
|
||||
|
||||
# If this is the outermost ATL of a parse, a set giving the variables
|
||||
# that are loaded by this block.
|
||||
loaded_variable_cache = None
|
||||
|
||||
|
||||
def __init__(self, loc, statements, animation):
|
||||
|
||||
@@ -830,20 +791,6 @@ class RawBlock(RawStatement):
|
||||
|
||||
self.constant = constant
|
||||
|
||||
def find_loaded_variables(self):
|
||||
|
||||
if self.loaded_variable_cache is not None:
|
||||
return self.loaded_variable_cache
|
||||
|
||||
variables = set()
|
||||
|
||||
for i in self.statements:
|
||||
variables.update(i.find_loaded_variables())
|
||||
|
||||
self.loaded_variable_cache = variables
|
||||
|
||||
return variables
|
||||
|
||||
|
||||
# A compiled ATL block.
|
||||
class Block(Statement):
|
||||
@@ -985,10 +932,12 @@ incompatible_props = {
|
||||
"align" : {"xanchor", "yanchor", "xpos", "ypos"},
|
||||
"anchor" : {"xanchor", "yanchor"},
|
||||
"angle" : {"xpos", "ypos"},
|
||||
"anchorangle" : {"xangle", "yangle"},
|
||||
"around" : {"xaround", "yaround", "xanchoraround", "yanchoraround"},
|
||||
"offset" : {"xoffset", "yoffset"},
|
||||
"pos" : {"xpos", "ypos"},
|
||||
"radius" : {"xpos", "ypos"},
|
||||
"anchorradius" : {"xanchor", "yanchor"},
|
||||
"size" : {"xsize", "ysize"},
|
||||
"xalign" : {"xpos", "xanchor"},
|
||||
"xcenter" : {"xpos", "xanchor"},
|
||||
@@ -1000,7 +949,8 @@ incompatible_props = {
|
||||
|
||||
# A list of sets of pairs of properties that do not conflict.
|
||||
compatible_pairs = [
|
||||
{"radius", "angle"}
|
||||
{"radius", "angle"},
|
||||
{"anchorradius", "anchorangle"}
|
||||
]
|
||||
|
||||
# This can become one of four things:
|
||||
@@ -1179,26 +1129,6 @@ class RawMultipurpose(RawStatement):
|
||||
|
||||
self.constant = constant
|
||||
|
||||
def find_loaded_variables(self):
|
||||
rv = set()
|
||||
|
||||
rv.update(find_loaded_variables(self.warp_function))
|
||||
rv.update(find_loaded_variables(self.duration))
|
||||
rv.update(find_loaded_variables(self.circles))
|
||||
|
||||
for _name, expr in self.properties:
|
||||
rv.update(find_loaded_variables(expr))
|
||||
|
||||
for _name, exprs in self.splines:
|
||||
for expr in exprs:
|
||||
rv.update(find_loaded_variables(expr))
|
||||
|
||||
for expr, withexpr in self.expressions:
|
||||
rv.update(find_loaded_variables(expr))
|
||||
rv.update(find_loaded_variables(withexpr))
|
||||
|
||||
return rv
|
||||
|
||||
def predict(self, ctx):
|
||||
|
||||
for i, _j in self.expressions:
|
||||
@@ -1234,9 +1164,6 @@ class RawContainsExpr(RawStatement):
|
||||
def mark_constant(self, analysis):
|
||||
self.constant = analysis.is_constant_expr(self.expression)
|
||||
|
||||
def find_loaded_variables(self):
|
||||
return find_loaded_variables(self.expression)
|
||||
|
||||
|
||||
# This allows us to have multiple ATL transforms as children.
|
||||
class RawChild(RawStatement):
|
||||
@@ -1271,14 +1198,6 @@ class RawChild(RawStatement):
|
||||
|
||||
self.constant = constant
|
||||
|
||||
def find_loaded_variables(self):
|
||||
rv = set()
|
||||
|
||||
for i in self.children:
|
||||
rv.update(i.find_loaded_variables())
|
||||
|
||||
return rv
|
||||
|
||||
|
||||
# This changes the child of this statement, optionally with a transition.
|
||||
class Child(Statement):
|
||||
@@ -1359,7 +1278,7 @@ class Interpolation(Statement):
|
||||
|
||||
complete = warper(complete)
|
||||
|
||||
if state is None:
|
||||
if state is None or len(state) != 6:
|
||||
|
||||
# Create a new transform state, and apply the property
|
||||
# changes to it.
|
||||
@@ -1368,17 +1287,24 @@ class Interpolation(Statement):
|
||||
|
||||
has_angle = False
|
||||
has_radius = False
|
||||
has_anchorangle = False
|
||||
has_anchorradius = False
|
||||
|
||||
for k, v in self.properties:
|
||||
setattr(newts, k, v)
|
||||
|
||||
if k == "angle":
|
||||
newts.last_angle = v
|
||||
has_angle = True
|
||||
|
||||
elif k == "radius":
|
||||
has_radius = True
|
||||
|
||||
elif k == "anchorangle":
|
||||
has_anchorangle = True
|
||||
|
||||
elif k == "anchorradius":
|
||||
has_anchorradius = True
|
||||
|
||||
# Now, the things we change linearly are in the difference
|
||||
# between the new and old states.
|
||||
linear = trans.state.diff(newts)
|
||||
@@ -1387,6 +1313,8 @@ class Interpolation(Statement):
|
||||
# around or alignaround must be set first.
|
||||
angle = None
|
||||
radius = None
|
||||
anchorangle = None
|
||||
anchorradius = None
|
||||
|
||||
splines = [ ]
|
||||
|
||||
@@ -1418,6 +1346,11 @@ class Interpolation(Statement):
|
||||
startradius = trans.state.radius
|
||||
endradius = newts.radius
|
||||
|
||||
startanchorangle = trans.state.anchorangle
|
||||
endanchorangle = newts.anchorangle
|
||||
startanchorradius = trans.state.anchorradius
|
||||
endanchorradius = newts.anchorradius
|
||||
|
||||
# Make sure the angle is in the appropriate direction,
|
||||
# and contains an appropriate number of circles.
|
||||
|
||||
@@ -1425,36 +1358,67 @@ class Interpolation(Statement):
|
||||
if endangle < startangle:
|
||||
startangle -= 360
|
||||
|
||||
if endanchorangle < startanchorangle:
|
||||
startanchorangle -= 360
|
||||
|
||||
startangle -= circles * 360
|
||||
startanchorangle -= circles * 360
|
||||
|
||||
elif revdir == "counterclockwise":
|
||||
if endangle > startangle:
|
||||
startangle += 360
|
||||
|
||||
if endanchorangle > startanchorangle:
|
||||
startanchorangle += 360
|
||||
|
||||
startangle += circles * 360
|
||||
startanchorangle += circles * 360
|
||||
|
||||
if has_radius:
|
||||
radius = (startradius, endradius)
|
||||
has_radius = True
|
||||
has_angle = True
|
||||
has_anchorangle = True
|
||||
has_anchorradius = True
|
||||
|
||||
# Store the angle.
|
||||
if has_angle:
|
||||
angle = (startangle, endangle)
|
||||
radius = (startradius, endradius)
|
||||
angle = (startangle, endangle)
|
||||
anchorradius = (startanchorradius, endanchorradius)
|
||||
anchorangle = (startanchorangle, endanchorangle)
|
||||
|
||||
else:
|
||||
|
||||
if has_angle:
|
||||
last_angle = trans.state.last_angle or trans.state.angle
|
||||
angle = (last_angle, newts.last_angle)
|
||||
start = trans.state.angle
|
||||
end = newts.last_angle
|
||||
|
||||
if end - start > 180:
|
||||
start += 360
|
||||
if end - start < -180:
|
||||
start -= 360
|
||||
|
||||
angle = (start, end)
|
||||
|
||||
if has_radius:
|
||||
radius = (trans.state.radius, newts.radius)
|
||||
|
||||
if has_anchorangle:
|
||||
start = trans.state.anchorangle
|
||||
end = newts.last_anchorangle
|
||||
|
||||
if end - start > 180:
|
||||
start += 360
|
||||
if end - start < -180:
|
||||
start -= 360
|
||||
|
||||
anchorangle = (start, end)
|
||||
|
||||
if has_anchorradius:
|
||||
anchorradius = (trans.state.anchorradius, newts.anchorradius)
|
||||
|
||||
# Figure out the splines.
|
||||
for name, values in self.splines:
|
||||
splines.append((name, [ getattr(trans.state, name) ] + values))
|
||||
|
||||
state = (linear, angle, radius, splines)
|
||||
state = (linear, angle, radius, anchorangle, anchorradius, splines)
|
||||
|
||||
# Ensure that we set things, even if they don't actually
|
||||
# change from the old state.
|
||||
@@ -1463,7 +1427,7 @@ class Interpolation(Statement):
|
||||
setattr(trans.state, k, v)
|
||||
|
||||
else:
|
||||
linear, angle, radius, splines = state
|
||||
linear, angle, radius, anchorangle, anchorradius, splines = state
|
||||
|
||||
# Linearly interpolate between the things in linear.
|
||||
for k, (old, new) in linear.items():
|
||||
@@ -1488,13 +1452,24 @@ class Interpolation(Statement):
|
||||
startangle, endangle = angle[:2]
|
||||
|
||||
angle = interpolate(complete, startangle, endangle, float)
|
||||
trans.state.last_angle = angle
|
||||
trans.state.angle = angle
|
||||
|
||||
if radius is not None:
|
||||
startradius, endradius = radius
|
||||
trans.state.radius = interpolate(complete, startradius, endradius, position)
|
||||
|
||||
if anchorangle is not None:
|
||||
startangle, endangle = anchorangle[:2]
|
||||
|
||||
angle = interpolate(complete, startangle, endangle, float)
|
||||
trans.state.anchorangle = angle
|
||||
|
||||
if anchorradius is not None:
|
||||
startradius, endradius = anchorradius
|
||||
trans.state.anchorradius = interpolate(complete, startradius, endradius, position)
|
||||
|
||||
|
||||
|
||||
# Handle any splines we might have.
|
||||
for name, values in splines:
|
||||
value = interpolate_spline(complete, values)
|
||||
@@ -1532,9 +1507,6 @@ class RawRepeat(RawStatement):
|
||||
def mark_constant(self, analysis):
|
||||
self.constant = analysis.is_constant_expr(self.repeats)
|
||||
|
||||
def find_loaded_variables(self):
|
||||
return find_loaded_variables(self.repeats)
|
||||
|
||||
class Repeat(Statement):
|
||||
|
||||
def __init__(self, loc, repeats):
|
||||
@@ -1572,13 +1544,6 @@ class RawParallel(RawStatement):
|
||||
|
||||
self.constant = constant
|
||||
|
||||
def find_loaded_variables(self):
|
||||
rv = set()
|
||||
|
||||
for i in self.blocks:
|
||||
rv.update(i.find_loaded_variables())
|
||||
|
||||
return rv
|
||||
|
||||
|
||||
class Parallel(Statement):
|
||||
@@ -1660,15 +1625,6 @@ class RawChoice(RawStatement):
|
||||
|
||||
self.constant = constant
|
||||
|
||||
def find_loaded_variables(self):
|
||||
rv = set()
|
||||
|
||||
for chance, block in self.choices:
|
||||
rv.update(find_loaded_variables(chance))
|
||||
rv.update(block.find_loaded_variables())
|
||||
|
||||
return rv
|
||||
|
||||
|
||||
class Choice(Statement):
|
||||
|
||||
@@ -1738,9 +1694,6 @@ class RawTime(RawStatement):
|
||||
def mark_constant(self, analysis):
|
||||
self.constant = analysis.is_constant_expr(self.time)
|
||||
|
||||
def find_loaded_variables(self):
|
||||
return find_loaded_variables(self.time)
|
||||
|
||||
|
||||
class Time(Statement):
|
||||
|
||||
@@ -1788,15 +1741,6 @@ class RawOn(RawStatement):
|
||||
|
||||
self.constant = constant
|
||||
|
||||
def find_loaded_variables(self):
|
||||
rv = set()
|
||||
|
||||
for block in self.handlers.values():
|
||||
rv.update(block.find_loaded_variables())
|
||||
|
||||
return rv
|
||||
|
||||
|
||||
class On(Statement):
|
||||
|
||||
def __init__(self, loc, handlers):
|
||||
@@ -1905,9 +1849,6 @@ class RawEvent(RawStatement):
|
||||
def mark_constant(self, analysis):
|
||||
self.constant = GLOBAL_CONST
|
||||
|
||||
def find_loaded_variables(self):
|
||||
return set()
|
||||
|
||||
|
||||
class Event(Statement):
|
||||
|
||||
@@ -1934,9 +1875,6 @@ class RawFunction(RawStatement):
|
||||
def mark_constant(self, analysis):
|
||||
self.constant = analysis.is_constant_expr(self.expr)
|
||||
|
||||
def find_loaded_variables(self):
|
||||
return find_loaded_variables(self.expr)
|
||||
|
||||
|
||||
class Function(Statement):
|
||||
|
||||
@@ -2248,3 +2186,28 @@ def parse_atl(l):
|
||||
old = new
|
||||
|
||||
return RawBlock(block_loc, merged, animation)
|
||||
|
||||
def deep_compare(a, b):
|
||||
"""
|
||||
Compares two trees of ATL statements for equality.
|
||||
"""
|
||||
|
||||
if type(a) != type(b):
|
||||
return False
|
||||
|
||||
if isinstance(a, (list, tuple)):
|
||||
return all(deep_compare(i, j) for i, j in zip(a, b))
|
||||
|
||||
if isinstance(a, dict):
|
||||
if len(a) != len(b):
|
||||
return False
|
||||
|
||||
return all((k in b) and deep_compare(a[k], b[k]) for k in a)
|
||||
|
||||
if isinstance(a, Statement):
|
||||
return deep_compare(a.__dict__, b.__dict__)
|
||||
|
||||
try:
|
||||
return a == b
|
||||
except Exception:
|
||||
return True
|
||||
|
||||
@@ -1,217 +0,0 @@
|
||||
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person
|
||||
# obtaining a copy of this software and associated documentation files
|
||||
# (the "Software"), to deal in the Software without restriction,
|
||||
# including without limitation the rights to use, copy, modify, merge,
|
||||
# publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
# and to permit persons to whom the Software is furnished to do so,
|
||||
# subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
from __future__ import division, absolute_import, with_statement, print_function, unicode_literals
|
||||
from renpy.compat import PY2, basestring, bchr, bord, chr, open, pystr, range, round, str, tobytes, unicode # *
|
||||
|
||||
|
||||
|
||||
import renpy
|
||||
import jnius # type: ignore
|
||||
|
||||
from renpy.audio.audio import MusicContext
|
||||
|
||||
VideoPlayer = jnius.autoclass("org.renpy.android.VideoPlayer")
|
||||
|
||||
|
||||
class AndroidVideoChannel(object):
|
||||
|
||||
def __init__(self, name, file_prefix="", file_suffix="", default_loop=None):
|
||||
|
||||
# A list of queued filenames.
|
||||
self.queue = [ ]
|
||||
|
||||
# The filename that's currently playing.
|
||||
self.filename = None
|
||||
|
||||
# The videoplayer that's currently playing.
|
||||
self.player = None
|
||||
|
||||
# The name assigned to this channel. This is used to look up
|
||||
# information about the channel in the MusicContext object.
|
||||
self.name = name
|
||||
|
||||
# The name of the mixer this channel uses. Set below, as there's
|
||||
# no good default.
|
||||
self.mixer = None
|
||||
|
||||
# The time the music in this channel was last changed.
|
||||
self.last_changed = 0
|
||||
|
||||
# The callback that is called if the queue becomes empty.
|
||||
self.callback = None
|
||||
|
||||
# Ignored.
|
||||
self.synchro_start = False
|
||||
self.wait_stop = False
|
||||
self.loop = [ ]
|
||||
|
||||
# A prefix and suffix that are used to create the full filenames.
|
||||
self.file_prefix = file_prefix
|
||||
self.file_suffix = file_suffix
|
||||
|
||||
if default_loop is None:
|
||||
# By default, should we loop the music?
|
||||
self.default_loop = True
|
||||
# Was this set explicitly?
|
||||
self.default_loop_set = False
|
||||
|
||||
else:
|
||||
self.default_loop = default_loop
|
||||
self.default_loop_set = True
|
||||
|
||||
def get_context(self):
|
||||
"""
|
||||
Returns the MusicContext corresponding to this channel, taken from
|
||||
the context object. Allocates a MusicContext if none exists.
|
||||
"""
|
||||
|
||||
mcd = renpy.game.context().music
|
||||
|
||||
rv = mcd.get(self.name)
|
||||
if rv is None:
|
||||
rv = mcd[self.name] = MusicContext()
|
||||
|
||||
return rv
|
||||
|
||||
context = property(get_context)
|
||||
|
||||
def copy_context(self):
|
||||
"""
|
||||
Copies the MusicContext associated with this channel, updates the
|
||||
ExecutionContext to point to the copy, and returns the copy.
|
||||
"""
|
||||
|
||||
mcd = renpy.game.context().music
|
||||
|
||||
ctx = self.get_context().copy()
|
||||
mcd[self.name] = ctx
|
||||
return ctx
|
||||
|
||||
def start(self):
|
||||
"""
|
||||
Starts playing the first video in the queue.
|
||||
"""
|
||||
|
||||
if not self.queue:
|
||||
return
|
||||
|
||||
filename = self.queue.pop(0)
|
||||
|
||||
with renpy.loader.load(filename, directory="audio") as f:
|
||||
real_fn = f.name
|
||||
base = getattr(f, "base", -1)
|
||||
length = getattr(f, "length", -1)
|
||||
|
||||
self.filename = filename
|
||||
self.player = VideoPlayer(real_fn, base, length)
|
||||
|
||||
def stop(self):
|
||||
|
||||
if self.player is not None:
|
||||
self.player.stop()
|
||||
self.player = None
|
||||
|
||||
self.filename = None
|
||||
|
||||
def get_playing(self):
|
||||
|
||||
if self.player is None:
|
||||
return None
|
||||
|
||||
if self.player.isPlaying():
|
||||
return self.filename
|
||||
|
||||
def periodic(self):
|
||||
|
||||
# This should be set from something that checks to see if our
|
||||
# mixer is muted.
|
||||
force_stop = self.context.force_stop
|
||||
|
||||
if force_stop:
|
||||
self.dequeue()
|
||||
self.stop()
|
||||
return
|
||||
|
||||
if self.get_playing():
|
||||
return
|
||||
|
||||
if self.queue:
|
||||
self.start()
|
||||
|
||||
def dequeue(self, even_tight=False):
|
||||
"""
|
||||
Clears the queued music, except for a first item that has
|
||||
not been started.
|
||||
"""
|
||||
|
||||
if self.get_playing():
|
||||
self.queue = [ ]
|
||||
else:
|
||||
self.queue = self.queue[:1]
|
||||
|
||||
def interact(self):
|
||||
"""
|
||||
Called (mostly) once per interaction.
|
||||
"""
|
||||
|
||||
self.periodic()
|
||||
|
||||
def fadeout(self, secs):
|
||||
"""
|
||||
Causes the playing music to be faded out for the given number
|
||||
of seconds. Also clears any queued music.
|
||||
"""
|
||||
|
||||
self.stop()
|
||||
self.queue = [ ]
|
||||
|
||||
def enqueue(self, filenames, loop=True, synchro_start=False, fadein=0, tight=None, loop_only=False, relative_volume=1.0):
|
||||
self.queue.extend(filenames)
|
||||
|
||||
def set_volume(self, volume):
|
||||
pass
|
||||
|
||||
def get_pos(self):
|
||||
pass
|
||||
|
||||
def set_pan(self, pan, delay):
|
||||
pass
|
||||
|
||||
def set_secondary_volume(self, volume, delay):
|
||||
pass
|
||||
|
||||
def pause(self):
|
||||
if self.player is not None:
|
||||
self.player.pause()
|
||||
|
||||
def unpause(self):
|
||||
if self.player is not None:
|
||||
self.player.unpause()
|
||||
|
||||
def reload(self):
|
||||
return
|
||||
|
||||
def read_video(self):
|
||||
return None
|
||||
|
||||
def video_ready(self):
|
||||
return 1
|
||||
+5
-24
@@ -680,16 +680,16 @@ class Channel(object):
|
||||
|
||||
if tight is None:
|
||||
tight = self.tight
|
||||
|
||||
|
||||
self.keep_queue += 1
|
||||
|
||||
|
||||
for filename in filenames:
|
||||
qe = QueueEntry(filename, fadein, tight, False, relative_volume)
|
||||
self.queue.append(qe)
|
||||
|
||||
|
||||
# Only fade the first thing in.
|
||||
fadein = 0
|
||||
|
||||
|
||||
self.wait_stop = synchro_start
|
||||
self.synchro_start = synchro_start
|
||||
|
||||
@@ -792,20 +792,6 @@ class Channel(object):
|
||||
return renpysound.video_ready(self.number)
|
||||
|
||||
|
||||
# Use unconditional imports so these files get compiled during the build
|
||||
# process.
|
||||
|
||||
|
||||
try:
|
||||
from renpy.audio.androidhw import AndroidVideoChannel
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
try:
|
||||
from renpy.audio.ioshw import IOSVideoChannel
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# A list of channels we know about.
|
||||
all_channels = [ ]
|
||||
|
||||
@@ -882,12 +868,7 @@ def register_channel(name,
|
||||
if not force and not renpy.game.context().init_phase and (" " not in name):
|
||||
raise Exception("Can't register channel outside of init phase.")
|
||||
|
||||
if renpy.android and renpy.config.hw_video and name == "movie":
|
||||
c = AndroidVideoChannel(name, default_loop=loop, file_prefix=file_prefix, file_suffix=file_suffix)
|
||||
elif renpy.ios and renpy.config.hw_video and name == "movie":
|
||||
c = IOSVideoChannel(name, default_loop=loop, file_prefix=file_prefix, file_suffix=file_suffix)
|
||||
else:
|
||||
c = Channel(name, loop, stop_on_mute, tight, file_prefix, file_suffix, buffer_queue, movie=movie, framedrop=framedrop)
|
||||
c = Channel(name, loop, stop_on_mute, tight, file_prefix, file_suffix, buffer_queue, movie=movie, framedrop=framedrop)
|
||||
|
||||
c.mixer = mixer
|
||||
|
||||
|
||||
@@ -1,196 +0,0 @@
|
||||
from __future__ import division, absolute_import, with_statement, print_function, unicode_literals
|
||||
from renpy.compat import PY2, basestring, bchr, bord, chr, open, pystr, range, round, str, tobytes, unicode # *
|
||||
|
||||
|
||||
|
||||
import renpy
|
||||
import pyobjus # type: ignore
|
||||
|
||||
from renpy.audio.audio import MusicContext
|
||||
|
||||
VideoPlayer = pyobjus.autoclass("VideoPlayer")
|
||||
|
||||
|
||||
class IOSVideoChannel(object):
|
||||
|
||||
def __init__(self, name, file_prefix="", file_suffix="", default_loop=None):
|
||||
|
||||
# A list of queued filenames.
|
||||
self.queue = [ ]
|
||||
|
||||
# The filename that's currently playing.
|
||||
self.filename = None
|
||||
|
||||
# The videoplayer that's currently playing.
|
||||
self.player = None
|
||||
|
||||
# The name assigned to this channel. This is used to look up
|
||||
# information about the channel in the MusicContext object.
|
||||
self.name = name
|
||||
|
||||
# The name of the mixer this channel uses. Set below, as there's
|
||||
# no good default.
|
||||
self.mixer = None
|
||||
|
||||
# The time the music in this channel was last changed.
|
||||
self.last_changed = 0
|
||||
|
||||
# The callback that is called if the queue becomes empty.
|
||||
self.callback = None
|
||||
|
||||
# Ignored.
|
||||
self.synchro_start = False
|
||||
self.wait_stop = False
|
||||
self.loop = [ ]
|
||||
|
||||
# A prefix and suffix that are used to create the full filenames.
|
||||
self.file_prefix = file_prefix
|
||||
self.file_suffix = file_suffix
|
||||
|
||||
if default_loop is None:
|
||||
# By default, should we loop the music?
|
||||
self.default_loop = True
|
||||
# Was this set explicitly?
|
||||
self.default_loop_set = False
|
||||
|
||||
else:
|
||||
self.default_loop = default_loop
|
||||
self.default_loop_set = True
|
||||
|
||||
def get_context(self):
|
||||
"""
|
||||
Returns the MusicContext corresponding to this channel, taken from
|
||||
the context object. Allocates a MusicContext if none exists.
|
||||
"""
|
||||
|
||||
mcd = renpy.game.context().music
|
||||
|
||||
rv = mcd.get(self.name)
|
||||
if rv is None:
|
||||
rv = mcd[self.name] = MusicContext()
|
||||
|
||||
return rv
|
||||
|
||||
context = property(get_context)
|
||||
|
||||
def copy_context(self):
|
||||
"""
|
||||
Copies the MusicContext associated with this channel, updates the
|
||||
ExecutionContext to point to the copy, and returns the copy.
|
||||
"""
|
||||
|
||||
mcd = renpy.game.context().music
|
||||
|
||||
ctx = self.get_context().copy()
|
||||
mcd[self.name] = ctx
|
||||
return ctx
|
||||
|
||||
def start(self):
|
||||
"""
|
||||
Starts playing the first video in the queue.
|
||||
"""
|
||||
|
||||
if not self.queue:
|
||||
return
|
||||
|
||||
filename = self.queue.pop(0)
|
||||
with renpy.loader.load(filename, directory="audio") as f:
|
||||
real_fn = f.name
|
||||
|
||||
self.filename = filename
|
||||
self.player = VideoPlayer.alloc().initWithFile_(real_fn)
|
||||
|
||||
def stop(self):
|
||||
|
||||
if self.player is not None:
|
||||
self.player.stop()
|
||||
self.player = None
|
||||
|
||||
self.filename = None
|
||||
|
||||
def get_playing(self):
|
||||
|
||||
if self.player is None:
|
||||
return None
|
||||
|
||||
if self.player.isPlaying():
|
||||
return self.filename
|
||||
|
||||
def periodic(self):
|
||||
|
||||
# This should be set from something that checks to see if our
|
||||
# mixer is muted.
|
||||
force_stop = self.context.force_stop
|
||||
|
||||
if force_stop:
|
||||
self.dequeue()
|
||||
self.stop()
|
||||
return
|
||||
|
||||
if self.player:
|
||||
self.player.periodic()
|
||||
|
||||
if self.get_playing():
|
||||
return
|
||||
|
||||
if self.queue:
|
||||
self.start()
|
||||
|
||||
def dequeue(self, even_tight=False):
|
||||
"""
|
||||
Clears the queued music, except for a first item that has
|
||||
not been started.
|
||||
"""
|
||||
|
||||
if self.get_playing():
|
||||
self.queue = [ ]
|
||||
else:
|
||||
self.queue = self.queue[:1]
|
||||
|
||||
def interact(self):
|
||||
"""
|
||||
Called (mostly) once per interaction.
|
||||
"""
|
||||
|
||||
self.periodic()
|
||||
|
||||
def fadeout(self, secs):
|
||||
"""
|
||||
Causes the playing music to be faded out for the given number
|
||||
of seconds. Also clears any queued music.
|
||||
"""
|
||||
|
||||
self.stop()
|
||||
self.queue = [ ]
|
||||
|
||||
def enqueue(self, filenames, loop=True, synchro_start=False, fadein=0, tight=None, loop_only=False, relative_volume=1.0):
|
||||
self.queue.extend(filenames)
|
||||
|
||||
def pause(self):
|
||||
if self.player is not None:
|
||||
self.player.pause()
|
||||
|
||||
def unpause(self):
|
||||
if self.player is not None:
|
||||
self.player.unpause()
|
||||
|
||||
def set_volume(self, volume):
|
||||
pass
|
||||
|
||||
def get_pos(self):
|
||||
pass
|
||||
|
||||
def set_pan(self, pan, delay):
|
||||
pass
|
||||
|
||||
def set_secondary_volume(self, volume, delay):
|
||||
pass
|
||||
|
||||
def reload(self):
|
||||
return
|
||||
|
||||
def read_video(self):
|
||||
return None
|
||||
|
||||
def video_ready(self):
|
||||
return 1
|
||||
@@ -111,15 +111,16 @@ def play(filenames, channel="music", loop=None, fadeout=None, synchro_start=Fals
|
||||
|
||||
loop_is_filenames = (c.loop == filenames)
|
||||
|
||||
c.dequeue()
|
||||
|
||||
if fadeout is None:
|
||||
fadeout = renpy.config.fadeout_audio
|
||||
|
||||
if if_changed and c.get_playing() in filenames:
|
||||
fadein = 0
|
||||
loop_only = loop_is_filenames
|
||||
if not loop_is_filenames:
|
||||
c.dequeue()
|
||||
else:
|
||||
c.dequeue()
|
||||
c.fadeout(fadeout)
|
||||
loop_only = False
|
||||
|
||||
|
||||
+80
-5
@@ -121,11 +121,82 @@ def mac_start(fn):
|
||||
|
||||
def popen_del(self, *args, **kwargs):
|
||||
"""
|
||||
Fix an issue where the __del__ method of popen doesn't wor,
|
||||
Fix an issue where the __del__ method of popen doesn't work.
|
||||
"""
|
||||
|
||||
return
|
||||
|
||||
def get_alternate_base(basedir, always=False):
|
||||
"""
|
||||
:undocumented:
|
||||
|
||||
Tries to find an alternate base directory. This exists in a writable
|
||||
location, and is intended for use by a game that downloads its assets
|
||||
to the device (generally for ios or android, where the assets may be
|
||||
too big for the app store).
|
||||
"""
|
||||
|
||||
# Determine the alternate base directory location.
|
||||
|
||||
if renpy.android:
|
||||
altbase = os.path.join(os.environ["ANDROID_PRIVATE"], "base")
|
||||
|
||||
elif renpy.ios:
|
||||
from pyobjus import autoclass # type: ignore
|
||||
from pyobjus.objc_py_types import enum # type: ignore
|
||||
|
||||
NSSearchPathDirectory = enum("NSSearchPathDirectory", NSApplicationSupportDirectory=14)
|
||||
NSSearchPathDomainMask = enum("NSSearchPathDomainMask", NSUserDomainMask=1)
|
||||
|
||||
NSFileManager = autoclass('NSFileManager')
|
||||
manager = NSFileManager.defaultManager()
|
||||
url = manager.URLsForDirectory_inDomains_(
|
||||
NSSearchPathDirectory.NSApplicationSupportDirectory,
|
||||
NSSearchPathDomainMask.NSUserDomainMask,
|
||||
).lastObject()
|
||||
|
||||
# url.path seems to change type based on iOS version, for some reason.
|
||||
try:
|
||||
altbase = url.path().UTF8String()
|
||||
except Exception:
|
||||
altbase = url.path.UTF8String()
|
||||
|
||||
if isinstance(altbase, bytes):
|
||||
altbase = altbase.decode("utf-8")
|
||||
|
||||
else:
|
||||
altbase = os.path.join(basedir, "base")
|
||||
|
||||
if always:
|
||||
return altbase
|
||||
|
||||
# Check to see if there's a game in there created with the
|
||||
# current version of Ren'Py.
|
||||
|
||||
def ver(s):
|
||||
"""
|
||||
Returns the first three components of a version string.
|
||||
"""
|
||||
|
||||
return tuple(int(i) for i in s.split(".")[:3])
|
||||
|
||||
import json
|
||||
|
||||
version_json = os.path.join(altbase, "update", "version.json")
|
||||
|
||||
if not os.path.exists(version_json):
|
||||
return basedir
|
||||
|
||||
with open(version_json, "r") as f:
|
||||
modules = json.load(f)
|
||||
|
||||
for v in modules.values():
|
||||
if ver(v["renpy_version"]) != ver(renpy.version_only):
|
||||
return basedir
|
||||
|
||||
return altbase
|
||||
|
||||
|
||||
def bootstrap(renpy_base):
|
||||
|
||||
global renpy
|
||||
@@ -189,6 +260,13 @@ def bootstrap(renpy_base):
|
||||
sys.stderr.write("Base directory %r does not exist. Giving up.\n" % (basedir,))
|
||||
sys.exit(1)
|
||||
|
||||
# Potentially use an alternate base directory.
|
||||
try:
|
||||
basedir = get_alternate_base(basedir)
|
||||
except Exception:
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
# Make game/ on Android.
|
||||
if renpy.android:
|
||||
if not os.path.exists(basedir + "/game"):
|
||||
@@ -264,10 +342,7 @@ You may be using a system install of python. Please run {0}.sh,
|
||||
renpy.config.gamedir = gamedir
|
||||
renpy.config.args = [ ] # type: ignore
|
||||
|
||||
if renpy.android:
|
||||
renpy.config.logdir = os.environ['ANDROID_PUBLIC']
|
||||
else:
|
||||
renpy.config.logdir = basedir
|
||||
renpy.config.logdir = renpy.__main__.path_to_logdir(basedir)
|
||||
|
||||
if not os.path.exists(renpy.config.logdir):
|
||||
os.makedirs(renpy.config.logdir, 0o777)
|
||||
|
||||
+70
-30
@@ -95,6 +95,11 @@ class DialogueTextTags(object):
|
||||
elif tag == "nw":
|
||||
self.no_wait = True
|
||||
|
||||
if value is not None and not less_pauses:
|
||||
self.pause_start.append(len(self.text))
|
||||
self.pause_end.append(len(self.text))
|
||||
self.pause_delay.append(value)
|
||||
|
||||
elif tag == "fast":
|
||||
self.pause_start = [ len(self.text) ]
|
||||
self.pause_end = [ ]
|
||||
@@ -240,6 +245,7 @@ def show_display_say(who, what, who_args={}, what_args={}, window_args={},
|
||||
layer=None,
|
||||
properties={},
|
||||
multiple=None,
|
||||
retain=None,
|
||||
**kwargs):
|
||||
"""
|
||||
This is called (by default) by renpy.display_say to add the
|
||||
@@ -270,6 +276,11 @@ def show_display_say(who, what, who_args={}, what_args={}, window_args={},
|
||||
|
||||
@param kwargs: Additional keyword arguments should be ignored.
|
||||
|
||||
`retain`
|
||||
If not None, the screen should be retained (not transient),
|
||||
and the screen should be given the value of this argument as
|
||||
its tag.
|
||||
|
||||
This function is required to return the ui.text() widget
|
||||
displaying the what text.
|
||||
"""
|
||||
@@ -305,7 +316,10 @@ def show_display_say(who, what, who_args={}, what_args={}, window_args={},
|
||||
|
||||
tag = screen
|
||||
|
||||
if multiple:
|
||||
if retain:
|
||||
tag = retain
|
||||
|
||||
elif multiple:
|
||||
|
||||
if renpy.display.screen.has_screen("multiple_" + screen):
|
||||
screen = "multiple_" + screen
|
||||
@@ -325,7 +339,7 @@ def show_display_say(who, what, who_args={}, what_args={}, window_args={},
|
||||
renpy.display.screen.show_screen(
|
||||
screen,
|
||||
_widget_properties=props,
|
||||
_transient=True,
|
||||
_transient=not retain,
|
||||
_tag=tag,
|
||||
who=who,
|
||||
what=what,
|
||||
@@ -439,7 +453,8 @@ def display_say(
|
||||
ctc_force=False,
|
||||
advance=True,
|
||||
multiple=None,
|
||||
dtt=None):
|
||||
dtt=None,
|
||||
retain=False):
|
||||
|
||||
global afm_text_queue
|
||||
|
||||
@@ -477,6 +492,9 @@ def display_say(
|
||||
|
||||
# Clears out transients.
|
||||
renpy.exports.with_statement(None)
|
||||
|
||||
renpy.exports.checkpoint(True, hard=checkpoint)
|
||||
|
||||
return
|
||||
|
||||
# If we're not interacting, call the noniteractive_callbacks.
|
||||
@@ -538,6 +556,19 @@ def display_say(
|
||||
|
||||
exception = None
|
||||
|
||||
|
||||
retain_tag = "_retain_0"
|
||||
retain_count = -1
|
||||
|
||||
if retain:
|
||||
|
||||
while True:
|
||||
retain_count += 1
|
||||
retain_tag = "_retain_{}".format(retain_count)
|
||||
|
||||
if not renpy.exports.get_screen(retain_tag):
|
||||
break
|
||||
|
||||
if dtt.fast:
|
||||
for i in renpy.config.say_sustain_callbacks:
|
||||
i()
|
||||
@@ -609,9 +640,12 @@ def display_say(
|
||||
# is not required.
|
||||
if renpy.config.scry_extend:
|
||||
|
||||
scry = renpy.exports.scry().next()
|
||||
scry_count = 0
|
||||
scry = renpy.exports.scry()
|
||||
|
||||
if scry is not None:
|
||||
scry = scry.next()
|
||||
|
||||
scry_count = 0
|
||||
|
||||
while scry and scry_count < 64:
|
||||
if scry.extend_text is renpy.ast.DoesNotExtend:
|
||||
@@ -626,10 +660,16 @@ def display_say(
|
||||
extend_text = "{done}" + extend_text
|
||||
|
||||
# Show the text.
|
||||
|
||||
show_args = { }
|
||||
|
||||
if multiple:
|
||||
what_text = show_function(who, what_string, multiple=multiple)
|
||||
else:
|
||||
what_text = show_function(who, what_string)
|
||||
show_args["multiple"] = multiple
|
||||
|
||||
if retain:
|
||||
show_args["retain"] = retain_tag
|
||||
|
||||
what_text = show_function(who, what_string, **show_args)
|
||||
|
||||
if isinstance(what_text, tuple):
|
||||
what_text = renpy.display.screen.get_widget(what_text[0], what_text[1], what_text[2])
|
||||
@@ -856,6 +896,7 @@ class ADVCharacter(object):
|
||||
callback=d('callback'),
|
||||
type=d('type'),
|
||||
advance=d('advance'),
|
||||
retain=d('retain'),
|
||||
)
|
||||
|
||||
self._statement_name = properties.pop("statement_name", None)
|
||||
@@ -956,34 +997,27 @@ class ADVCharacter(object):
|
||||
return screen, show_args, who_args, what_args, window_args, properties
|
||||
|
||||
|
||||
def do_show(self, who, what, multiple=None, extra_properties=None):
|
||||
def do_show(self, who, what, multiple=None, extra_properties=None, retain=None):
|
||||
|
||||
screen, show_args, who_args, what_args, window_args, properties = self.get_show_properties(extra_properties)
|
||||
|
||||
show_args = dict(show_args)
|
||||
|
||||
if multiple is not None:
|
||||
show_args["multiple"] = multiple
|
||||
|
||||
return self.show_function(
|
||||
who,
|
||||
what,
|
||||
who_args=who_args,
|
||||
what_args=what_args,
|
||||
window_args=window_args,
|
||||
screen=screen,
|
||||
properties=properties,
|
||||
multiple=multiple,
|
||||
**show_args)
|
||||
if retain:
|
||||
show_args["retain"] = retain
|
||||
|
||||
else:
|
||||
|
||||
return self.show_function(
|
||||
who,
|
||||
what,
|
||||
who_args=who_args,
|
||||
what_args=what_args,
|
||||
window_args=window_args,
|
||||
screen=screen,
|
||||
properties=properties,
|
||||
**show_args)
|
||||
return self.show_function(
|
||||
who,
|
||||
what,
|
||||
who_args=who_args,
|
||||
what_args=what_args,
|
||||
window_args=window_args,
|
||||
screen=screen,
|
||||
properties=properties,
|
||||
**show_args)
|
||||
|
||||
|
||||
# This is called after the last interaction is done.
|
||||
@@ -1628,6 +1662,12 @@ def Character(name=NotSet, kind=None, **properties):
|
||||
`screen`
|
||||
The name of the screen that is used to display the dialogue.
|
||||
|
||||
`retain`
|
||||
If not true, an unused tag is generated for each line of dialogue,
|
||||
and the screens are shown non-transiently. Call :func:`renpy.clear_retain`
|
||||
to remove all retaint screens. This is almost always used with
|
||||
:doc:`bubble`.
|
||||
|
||||
Keyword arguments beginning with ``show_`` have the prefix
|
||||
stripped off, and are passed to the screen as arguments. For
|
||||
example, the value of ``show_myflag`` will become the value of
|
||||
|
||||
@@ -196,7 +196,7 @@ init -1500 python:
|
||||
:func:`renpy.show_screen` function.
|
||||
"""
|
||||
|
||||
return Show(screen, transition, _transient=True, *args, **kwargs)
|
||||
return Show(screen, transition, *args, _transient=True, **kwargs)
|
||||
|
||||
@renpy.pure
|
||||
class Hide(Action, DictEquality):
|
||||
|
||||
+222
-274
@@ -21,10 +21,7 @@
|
||||
|
||||
init -1600 python:
|
||||
|
||||
##########################################################################
|
||||
# Functions that set variables or fields.
|
||||
|
||||
__FieldNotFound = object()
|
||||
__Sentinel = object()
|
||||
|
||||
def _get_field(obj, name, kind):
|
||||
|
||||
@@ -34,372 +31,323 @@ init -1600 python:
|
||||
rv = obj
|
||||
|
||||
for i in name.split("."):
|
||||
rv = getattr(rv, i, __FieldNotFound)
|
||||
if rv is __FieldNotFound:
|
||||
raise NameError("The {} {} does not exist.".format(kind, name))
|
||||
rv = getattr(rv, i, __Sentinel)
|
||||
if rv is __Sentinel:
|
||||
raise Exception("The {!r} {} does not exist.".format(name, kind))
|
||||
|
||||
return rv
|
||||
|
||||
def _set_field(obj, name, value, kind):
|
||||
fields, _, attr = name.rpartition(".")
|
||||
obj = _get_field(obj, fields, kind)
|
||||
|
||||
try:
|
||||
obj = _get_field(obj, fields, kind)
|
||||
setattr(obj, attr, value)
|
||||
except Exception:
|
||||
raise NameError("The {} {} does not exist.".format(kind, name))
|
||||
raise Exception("The {!r} {} cannot be set.".format(name, kind))
|
||||
|
||||
@renpy.pure
|
||||
class SetField(Action, FieldEquality):
|
||||
|
||||
init -1600 python hide:
|
||||
|
||||
Accessor = Manager = python_object
|
||||
# clarify the role of each class without adding to the mro
|
||||
# and without having ancestors placed between RevertableObject and python_object in the mro
|
||||
|
||||
# Accessor mixins : manage how the data is accessed
|
||||
# defines a __call__ which gets the value to set from the value_to_set() method
|
||||
# defines a current_value() method which returns the current value of the accessed data or raise an exception
|
||||
# may define the `kind` class attribute, which is used in error messages
|
||||
class Field(Accessor):
|
||||
"""
|
||||
:doc: data_action
|
||||
:args: (object, field, value)
|
||||
|
||||
Causes the a field on an object to be set to a given value.
|
||||
`object` is the object, `field` is a string giving the name of the
|
||||
field to set, and `value` is the value to set it to.
|
||||
An Accessor mixin class for Actions setting a field on an object.
|
||||
"""
|
||||
|
||||
identity_fields = [ "object" ]
|
||||
equality_fields = [ "field", "value" ]
|
||||
|
||||
identity_fields = ("object",)
|
||||
equality_fields = ("field",)
|
||||
kind = "field"
|
||||
|
||||
def __init__(self, object, field, value, kind="field"):
|
||||
def __init__(self, object, field, *args, **kwargs):
|
||||
super(Field, self).__init__(*args, **kwargs)
|
||||
self.object = object
|
||||
self.field = field
|
||||
self.value = value
|
||||
self.kind = kind
|
||||
|
||||
def __call__(self):
|
||||
_set_field(self.object, self.field, self.value, self.kind)
|
||||
_set_field(self.object, self.field, self.value_to_set(), self.kind)
|
||||
renpy.restart_interaction()
|
||||
|
||||
def get_selected(self):
|
||||
return _get_field(self.object, self.field, self.kind) == self.value
|
||||
def current_value(self):
|
||||
return _get_field(self.object, self.field, self.kind)
|
||||
|
||||
@renpy.pure
|
||||
def SetVariable(name, value):
|
||||
class Variable(Field):
|
||||
"""
|
||||
:doc: data_action
|
||||
|
||||
Causes the variable called `name` to be set to `value`.
|
||||
|
||||
The `name` argument must be a string, and can be a simple name like "strength", or
|
||||
one with dots separating the variable from fields, like "hero.strength"
|
||||
or "persistent.show_cutscenes".
|
||||
An Accessor mixin class for Actions setting a global variable.
|
||||
"""
|
||||
|
||||
return SetField(store, name, value, kind="variable")
|
||||
kind = "global variable"
|
||||
|
||||
@renpy.pure
|
||||
class SetDict(Action, FieldEquality):
|
||||
def __init__(self, name, *args, **kwargs):
|
||||
super(Variable, self).__init__(store, name, *args, **kwargs)
|
||||
|
||||
class Dict(Accessor):
|
||||
"""
|
||||
:doc: data_action
|
||||
|
||||
Causes the value of `key` in `dict` to be set to `value`.
|
||||
This also works with lists, where `key` is the index at which
|
||||
the value will be set.
|
||||
An Accessor mixin class for Actions setting an index on a sequence or a key on a mapping.
|
||||
"""
|
||||
|
||||
identity_fields = [ "dict" ]
|
||||
equality_fields = [ "key", "value" ]
|
||||
identity_fields = ("dict",)
|
||||
equality_fields = ("key",)
|
||||
kind = "key or index"
|
||||
|
||||
def __init__(self, dict, key, value):
|
||||
def __init__(self, dict, key, *args, **kwargs):
|
||||
super(Dict, self).__init__(*args, **kwargs)
|
||||
self.dict = dict
|
||||
self.key = key
|
||||
self.value = value
|
||||
|
||||
def __call__(self):
|
||||
self.dict[self.key] = self.value
|
||||
self.dict[self.key] = self.value_to_set()
|
||||
renpy.restart_interaction()
|
||||
|
||||
def get_selected(self):
|
||||
if self.key not in self.dict:
|
||||
return False
|
||||
def current_value(self):
|
||||
key = self.key
|
||||
try:
|
||||
return self.dict[self.key]
|
||||
except LookupError as e:
|
||||
raise Exception("The {!r} {} does not exist.".format(key, self.kind)) # from e # PY3 only
|
||||
|
||||
return self.dict[self.key] == self.value
|
||||
|
||||
|
||||
@renpy.pure
|
||||
class SetScreenVariable(Action, FieldEquality):
|
||||
class ScreenVariable(Accessor):
|
||||
"""
|
||||
:doc: data_action
|
||||
|
||||
Causes the variable called `name` associated with the current screen
|
||||
to be set to `value`.
|
||||
In a ``use``\ d screen, this action sets the variable in the context
|
||||
of the screen containing the ``use``\ d one(s).
|
||||
To set variables within a ``use``\ d screen, and only in that
|
||||
case, use :func:`SetLocalVariable` instead.
|
||||
An Accessor mixin class for Actions setting a screen variable.
|
||||
"""
|
||||
|
||||
identity_fields = [ "value" ]
|
||||
equality_fields = [ "name" ]
|
||||
identity_fields = ()
|
||||
equality_fields = ("name",)
|
||||
kind = "screen variable"
|
||||
|
||||
def __init__(self, name, value):
|
||||
def __init__(self, name, *args, **kwargs):
|
||||
super(ScreenVariable, self).__init__(*args, **kwargs)
|
||||
self.name = name
|
||||
self.value = value
|
||||
|
||||
def __call__(self):
|
||||
|
||||
cs = renpy.current_screen()
|
||||
|
||||
if cs is None:
|
||||
return
|
||||
|
||||
cs.scope[self.name] = self.value
|
||||
cs.scope[self.name] = self.value_to_set()
|
||||
renpy.restart_interaction()
|
||||
|
||||
def get_selected(self):
|
||||
|
||||
def current_value(self):
|
||||
cs = renpy.current_screen()
|
||||
|
||||
if cs is None:
|
||||
return False
|
||||
raise Exception("No current screen.")
|
||||
|
||||
if self.name not in cs.scope:
|
||||
return False
|
||||
|
||||
return cs.scope[self.name] == self.value
|
||||
|
||||
# Not pure.
|
||||
def SetLocalVariable(name, value):
|
||||
"""
|
||||
:doc: data_action
|
||||
|
||||
Causes the variable called `name` to be set to `value` in the current
|
||||
local context.
|
||||
|
||||
This function is only useful in a screen that has been ``use``\ d by
|
||||
another screen, as it provides a way of setting the value of a
|
||||
variable inside the used screen. In all other cases,
|
||||
:func:`SetScreenVariable` should be preferred, as it allows more
|
||||
of the screen to be cached.
|
||||
|
||||
For more information, see :ref:`sl-use`.
|
||||
|
||||
This must be created in the context that the variable is set
|
||||
in - it can't be passed in from somewhere else.
|
||||
"""
|
||||
|
||||
return SetDict(sys._getframe(1).f_locals, name, value)
|
||||
|
||||
|
||||
@renpy.pure
|
||||
class ToggleField(Action, FieldEquality):
|
||||
"""
|
||||
:doc: data_action
|
||||
:args: (object, field, true_value=None, false_value=None)
|
||||
|
||||
Toggles `field` on `object`. Toggling means to invert the boolean
|
||||
value of that field when the action is performed.
|
||||
|
||||
`true_value`
|
||||
If not None, then this is the true value we use.
|
||||
`false_value`
|
||||
If not None, then this is the false value we use.
|
||||
"""
|
||||
|
||||
identity_fields = [ "object"]
|
||||
equality_fields = [ "field", "true_value", "false_value" ]
|
||||
|
||||
kind = "field"
|
||||
|
||||
def __init__(self, object, field, true_value=None, false_value=None, kind="field"):
|
||||
self.object = object
|
||||
self.field = field
|
||||
self.true_value = true_value
|
||||
self.false_value = false_value
|
||||
self.kind = kind
|
||||
|
||||
def __call__(self):
|
||||
value = _get_field(self.object, self.field, self.kind)
|
||||
|
||||
if self.true_value is not None:
|
||||
value = (value == self.true_value)
|
||||
|
||||
value = not value
|
||||
|
||||
if self.true_value is not None:
|
||||
if value:
|
||||
value = self.true_value
|
||||
else:
|
||||
value = self.false_value
|
||||
|
||||
_set_field(self.object, self.field, value, self.kind)
|
||||
renpy.restart_interaction()
|
||||
|
||||
def get_selected(self):
|
||||
rv = _get_field(self.object, self.field, self.kind)
|
||||
|
||||
if self.true_value is not None:
|
||||
rv = (rv == self.true_value)
|
||||
rv = cs.scope.get(self.name, __Sentinel)
|
||||
if rv is __Sentinel:
|
||||
raise Exception("The {!r} {} does not exist.".format(self.name, self.kind))
|
||||
|
||||
return rv
|
||||
|
||||
|
||||
@renpy.pure
|
||||
def ToggleVariable(variable, true_value=None, false_value=None):
|
||||
class LocalVariable(Dict):
|
||||
"""
|
||||
:doc: data_action
|
||||
|
||||
Toggles the variable whose name is given in `variable`.
|
||||
|
||||
The `variable` argument must be a string, and can be a simple name like "strength", or
|
||||
one with dots separating the variable from fields, like "hero.strength"
|
||||
or "persistent.show_cutscenes".
|
||||
|
||||
|
||||
`true_value`
|
||||
If not None, then this is the true value used.
|
||||
`false_value`
|
||||
If not None, then this is the false value used.
|
||||
An Accessor mixin class for Actions setting a local variable.
|
||||
"""
|
||||
|
||||
return ToggleField(store, variable, true_value=true_value, false_value=false_value, kind="variable")
|
||||
kind = "local variable"
|
||||
|
||||
def __init__(self, name, *args, **kwargs):
|
||||
super(LocalVariable, self).__init__(sys._getframe(1).f_locals,
|
||||
name,
|
||||
*args, **kwargs)
|
||||
|
||||
@renpy.pure
|
||||
class ToggleDict(Action, FieldEquality):
|
||||
# Manager mixins : manage what value gets written
|
||||
# defines a value_to_set() method which returns the value to be set
|
||||
# may define get_selected and such methods
|
||||
# both of these may call the current_value() method
|
||||
class Set(Manager):
|
||||
"""
|
||||
:doc: data_action
|
||||
|
||||
Toggles the value of `key` in `dict`. It also works on
|
||||
lists, in which case `key` is the index of the value to toggle.
|
||||
Toggling means to invert the value when the action is performed.
|
||||
|
||||
`true_value`
|
||||
If not None, then this is the true value used.
|
||||
`false_value`
|
||||
If not None, then this is the false value used.
|
||||
A Manager mixin class for Actions setting a single value
|
||||
"""
|
||||
|
||||
identity_fields = [ "dict", ]
|
||||
equality_fields = [ "key", "true_value", "false_value" ]
|
||||
identity_fields = ()
|
||||
equality_fields = ("value",)
|
||||
|
||||
def __init__(self, dict, key, true_value=None, false_value=None):
|
||||
self.dict = dict
|
||||
self.key = key
|
||||
self.true_value = true_value
|
||||
self.false_value = false_value
|
||||
def __init__(self, value, *args, **kwargs):
|
||||
super(Set, self).__init__(*args, **kwargs)
|
||||
self.value = value
|
||||
|
||||
def __call__(self):
|
||||
value = self.dict[self.key]
|
||||
|
||||
if self.true_value is not None:
|
||||
value = (value == self.true_value)
|
||||
|
||||
value = not value
|
||||
|
||||
if self.true_value is not None:
|
||||
if value:
|
||||
value = self.true_value
|
||||
else:
|
||||
value = self.false_value
|
||||
|
||||
self.dict[self.key] = value
|
||||
renpy.restart_interaction()
|
||||
def value_to_set(self):
|
||||
return self.value
|
||||
|
||||
def get_selected(self):
|
||||
try:
|
||||
rv = self.dict[self.key]
|
||||
except (KeyError, IndexError):
|
||||
val = self.current_value()
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
if self.true_value is not None:
|
||||
rv = (rv == self.true_value)
|
||||
return val == self.value
|
||||
|
||||
return rv
|
||||
|
||||
# Not pure.
|
||||
def ToggleLocalVariable(name, true_value=None, false_value=None):
|
||||
class Toggle(Manager):
|
||||
"""
|
||||
:doc: data_action
|
||||
|
||||
Toggles the value of the variable called `name` in the current local context.
|
||||
|
||||
This function is only useful in a screen that has been ``use``\ d by
|
||||
another screen, as it provides a way of setting the value of a
|
||||
variable inside the used screen. In all other cases,
|
||||
:func:`ToggleScreenVariable` should be preferred, as it allows more
|
||||
of the screen to be cached.
|
||||
|
||||
For more information, see :ref:`sl-use`.
|
||||
|
||||
This must be created in the context that the variable is set
|
||||
in - it can't be passed in from somewhere else.
|
||||
|
||||
`true_value`
|
||||
If not None, then this is the true value used.
|
||||
`false_value`
|
||||
If not None, then this is the false value used.
|
||||
A Manager mixin class for Actions toggling between two values.
|
||||
"""
|
||||
|
||||
return ToggleDict(sys._getframe(1).f_locals, name, true_value=true_value, false_value=false_value)
|
||||
identity_fields = ()
|
||||
equality_fields = ("true_value", "false_value")
|
||||
|
||||
@renpy.pure
|
||||
class ToggleScreenVariable(Action, FieldEquality):
|
||||
"""
|
||||
:doc: data_action
|
||||
|
||||
Toggles the value of the variable called `name` in the current screen.
|
||||
In a ``use``\ d screen, this action accesses and sets the given variable
|
||||
in the context of the screen containing the ``use``\ d one(s).
|
||||
To access and set variables within a ``use``\ d screen, and only in that
|
||||
case, use :func:`ToggleLocalVariable` instead.
|
||||
|
||||
`true_value`
|
||||
If not None, then this is the true value used.
|
||||
`false_value`
|
||||
If not None, then this is the false value used.
|
||||
"""
|
||||
|
||||
equality_fields = [ "name", "true_value", "false_value" ]
|
||||
|
||||
def __init__(self, name, true_value=None, false_value=None):
|
||||
self.name = name
|
||||
def __init__(self, true_value=None, false_value=None, *args, **kwargs):
|
||||
super(Toggle, self).__init__(*args, **kwargs)
|
||||
self.true_value = true_value
|
||||
self.false_value = false_value
|
||||
|
||||
def __call__(self):
|
||||
cs = renpy.current_screen()
|
||||
def value_to_set(self):
|
||||
value = self.current_value()
|
||||
|
||||
if cs is None:
|
||||
return
|
||||
|
||||
value = cs.scope[self.name]
|
||||
|
||||
if self.true_value is not None:
|
||||
value = (value == self.true_value)
|
||||
tv = self.true_value
|
||||
if tv is not None:
|
||||
value = (value == tv)
|
||||
|
||||
value = not value
|
||||
|
||||
if self.true_value is not None:
|
||||
if tv is not None:
|
||||
if value:
|
||||
value = self.true_value
|
||||
return tv
|
||||
else:
|
||||
value = self.false_value
|
||||
return self.false_value
|
||||
|
||||
cs.scope[self.name] = value
|
||||
renpy.restart_interaction()
|
||||
return value
|
||||
|
||||
def get_selected(self):
|
||||
cs = renpy.current_screen()
|
||||
|
||||
if cs is None:
|
||||
try:
|
||||
val = self.current_value()
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
if self.name not in cs.scope:
|
||||
tv = self.true_value
|
||||
if tv is not None:
|
||||
return val == tv
|
||||
|
||||
return bool(val)
|
||||
|
||||
class Cycle(Manager):
|
||||
"""
|
||||
A Manager mixin class for Actions cycling through a list of values.
|
||||
|
||||
Warning : the provided values must not be duplicated, otherwise some values can never be set.
|
||||
"""
|
||||
|
||||
identity_fields = ()
|
||||
equality_fields = ("values", "loop")
|
||||
|
||||
def __init__(self, values, *args, **kwargs):
|
||||
if kwargs.pop("reverse", False):
|
||||
values = values[::-1]
|
||||
# the reversed builtin returns a non-indexable iterator
|
||||
# and we only support sequences anyway - iterators are not picklable
|
||||
self.loop = kwargs.pop("loop", True)
|
||||
|
||||
super(Cycle, self).__init__(*args, **kwargs)
|
||||
|
||||
self.values = renpy.easy.to_tuple(values)
|
||||
|
||||
def value_to_set(self):
|
||||
values = self.values
|
||||
value = self.current_value()
|
||||
|
||||
if value in values:
|
||||
idx = values.index(value) + 1
|
||||
|
||||
lnv = len(values)
|
||||
if self.loop and idx >= lnv:
|
||||
idx -= lnv
|
||||
|
||||
else:
|
||||
idx = 0
|
||||
|
||||
return values[idx]
|
||||
|
||||
def get_sensitive(self):
|
||||
values = self.values
|
||||
if not values:
|
||||
return False
|
||||
|
||||
rv = cs.scope[self.name]
|
||||
if self.loop:
|
||||
return True
|
||||
|
||||
if self.true_value is not None:
|
||||
rv = (rv == self.true_value)
|
||||
try:
|
||||
value = self.current_value()
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
if value in values:
|
||||
idx = values.index(value)+1
|
||||
if idx >= len(values):
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
class Increment(Manager):
|
||||
"""
|
||||
A Manager mixin class for Actions incrementing a value by a set amount.
|
||||
"""
|
||||
|
||||
identity_fields = ()
|
||||
equality_fields = ("amount",)
|
||||
|
||||
def __init__(self, amount=1, *args, **kwargs):
|
||||
super(Increment, self).__init__(*args, **kwargs)
|
||||
self.amount = amount
|
||||
|
||||
def value_to_set(self):
|
||||
return self.current_value() + self.amount
|
||||
|
||||
def get_sensitive(self):
|
||||
try:
|
||||
value = self.current_value()
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
try:
|
||||
value + self.amount
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
|
||||
return rv
|
||||
for accessor in (Field, Variable, Dict, ScreenVariable, LocalVariable):
|
||||
for manager in (Set, Toggle, Cycle, Increment):
|
||||
name = manager.__name__ + accessor.__name__
|
||||
doc = ":doc: generated_data_action"
|
||||
|
||||
if config.generating_documentation:
|
||||
from inspect import signature, Signature, Parameter
|
||||
|
||||
params = []
|
||||
for bas in (accessor, manager):
|
||||
sig = signature(bas.__init__)
|
||||
for k, param in enumerate(sig.parameters.values()):
|
||||
if k and (param.kind not in (param.VAR_POSITIONAL, param.VAR_KEYWORD)):
|
||||
params.append(param)
|
||||
|
||||
if manager is Cycle:
|
||||
params.append(Parameter("reverse", Parameter.KEYWORD_ONLY, default=False))
|
||||
params.append(Parameter("loop", Parameter.KEYWORD_ONLY, default=True))
|
||||
|
||||
doc += "\n:args: " + str(Signature(parameters=params)) + "\n\nSee :ref:`data-actions`."
|
||||
|
||||
clsdict = python_dict(
|
||||
identity_fields=manager.identity_fields+accessor.identity_fields,
|
||||
equality_fields=manager.equality_fields+accessor.equality_fields,
|
||||
__doc__=doc,
|
||||
)
|
||||
|
||||
cls = type(name, (accessor, manager, Action, FieldEquality), clsdict)
|
||||
|
||||
if accessor is not LocalVariable:
|
||||
renpy.pure(name)
|
||||
setattr(store, name, cls)
|
||||
|
||||
|
||||
init -1600 python:
|
||||
|
||||
@renpy.pure
|
||||
class AddToSet(Action, FieldEquality):
|
||||
|
||||
@@ -291,6 +291,23 @@ init -1500 python:
|
||||
|
||||
Such Json data is added to a save slot by callbacks registered using
|
||||
:var:`config.save_json_callbacks`.
|
||||
|
||||
By default, the following keys are defined:
|
||||
|
||||
`_save_name`
|
||||
The value of :var:`save_name` when the game was saved.
|
||||
|
||||
`_renpy_version`
|
||||
The version of Ren'Py the save was created with.
|
||||
|
||||
`_version`
|
||||
The value of :var:`config.version` when the save was created.
|
||||
|
||||
`_game_runtime`
|
||||
The result of calling :func:`renpy.get_game_runtime`.
|
||||
|
||||
`_ctime`
|
||||
The time the save was created, in seconds since January 1, 1970, UTC.
|
||||
"""
|
||||
|
||||
json = renpy.slot_json(__slotname(name, page, slot))
|
||||
|
||||
@@ -30,17 +30,21 @@ init -1500 python:
|
||||
"load" : "(not _in_replay)",
|
||||
}
|
||||
|
||||
__NoShowTransition = renpy.object.Sentinel("NoShowTransition")
|
||||
|
||||
@renpy.pure
|
||||
class ShowMenu(Action, DictEquality):
|
||||
"""
|
||||
:doc: menu_action
|
||||
:args: (screen=_game_menu_screen, *args, _transition=config.intra_transition, **kwargs)
|
||||
|
||||
Causes us to enter the game menu, if we're not there already. If we
|
||||
are in the game menu, then this shows a screen or jumps to a label.
|
||||
|
||||
`screen` is usually the name of a screen, which is shown using
|
||||
the screen mechanism. If the screen doesn't exist, then "_screen"
|
||||
is appended to it, and that label is jumped to.
|
||||
the screen mechanism with the ``*args`` and ``**kwargs`` passed to
|
||||
the screen. If the screen doesn't exist, then "_screen" is appended
|
||||
to it, and that label is jumped to, ignoring `args` and `kwargs`.
|
||||
|
||||
If the optional keyword argument `_transition` is given, the
|
||||
menu will change screens using the provided transition.
|
||||
@@ -58,15 +62,15 @@ init -1500 python:
|
||||
* ShowMenu("stats")
|
||||
|
||||
ShowMenu without an argument will enter the game menu at the
|
||||
default screen, taken from _game_menu_screen.
|
||||
default screen, taken from :var:`_game_menu_screen`.
|
||||
|
||||
Extra arguments and keyword arguments are passed on to the screen
|
||||
"""
|
||||
transition = None # For save compatability; see renpy#2376
|
||||
transition = None # For save compatibility; see renpy#2376
|
||||
|
||||
def __init__(self, screen=None, *args, **kwargs):
|
||||
self.screen = screen
|
||||
self.transition = kwargs.pop("_transition", None)
|
||||
self.transition = kwargs.pop("_transition", __NoShowTransition)
|
||||
self.args = args
|
||||
self.kwargs = kwargs
|
||||
|
||||
@@ -79,6 +83,10 @@ init -1500 python:
|
||||
if not self.get_sensitive():
|
||||
return
|
||||
|
||||
transition = self.transition
|
||||
if transition is __NoShowTransition:
|
||||
transition = config.intra_transition
|
||||
|
||||
orig_screen = screen = self.screen or store._game_menu_screen
|
||||
|
||||
if not (renpy.has_screen(screen) or renpy.has_label(screen)):
|
||||
@@ -90,12 +98,12 @@ init -1500 python:
|
||||
|
||||
if renpy.has_screen(screen):
|
||||
|
||||
renpy.transition(self.transition or config.intra_transition)
|
||||
renpy.show_screen(screen, _transient=True, *self.args, **self.kwargs)
|
||||
renpy.transition(transition)
|
||||
renpy.show_screen(screen, *self.args, _transient=True, **self.kwargs)
|
||||
renpy.restart_interaction()
|
||||
|
||||
elif renpy.has_label(screen):
|
||||
renpy.transition(config.intra_transition)
|
||||
renpy.transition(transition)
|
||||
|
||||
ui.layer("screens")
|
||||
ui.remove_above(None)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user