Compare commits

...

697 Commits

Author SHA1 Message Date
Tom Rothamel 5534516253 Take background screenshots when polling events.
This prevents constant animation from preventing autosaves from
happening.
2019-05-02 22:50:06 -04:00
Tom Rothamel a445a7b000 Screens take a sensitive property.
If False, than the screen does not respond to input.

Fixes #1755.
2019-05-01 22:16:20 -04:00
Tom Rothamel 601594e047 Text interpolations support !c, !u, and !l.
For capitalization, upper case, and lower case.
2019-04-30 23:31:45 -04:00
Tom Rothamel cedff0527f Merge pull request #1808 from Andykl/fix-console
Do short repr for defaultdict and OrderedDict
2019-04-30 16:59:14 -04:00
Andy_kl 2b1f812051 Do short repr for defaultdict and OrderedDict 2019-04-30 23:57:41 +03:00
Tom Rothamel c85c917d12 Merge pull request #1803 from Moshibit/master
Corrections in the Spanish translation of the tutorial
2019-04-30 00:16:18 -04:00
Tom Rothamel f2040ea6d5 On emscripten, force a redraw after is_pixel_opaque.
This fixes an issue with emscripten where it flips GL buffers
without Ren'Py explicitly asking for it.
2019-04-28 18:03:38 -04:00
Sylvain Beucler 7602e726f2 web: self.redraw_period=1.0 re-introduced audio glitch 2019-04-28 19:53:24 +02:00
Tom Rothamel dce59141a7 web: Avoid the use of float arguments.
This is because of a bug in emscripten, see
https://github.com/emscripten-core/emscripten/issues/6759 for
the details.
2019-04-28 13:09:11 -04:00
Sylvain Beucler 8dfafd617b web: use FBO and GLES 2019-04-28 15:01:44 +02:00
Sylvain Beucler a28829662c web: Fix 'TypeError: coercing to Unicode: need string or buffer, NoneType found' 2019-04-28 14:22:33 +02:00
Tom Rothamel 9665ee9226 Add config.equal_mono.
This changes mono support so there's two channels at 100%, rather
than each channel getting 50% of the energy.
2019-04-27 23:21:47 -04:00
Tom Rothamel b79419ea2f Support for equal_mono. 2019-04-27 22:28:22 -04:00
Tom Rothamel b2787cc61d Clear the history list on language change.
Fixes #1797.
2019-04-27 02:57:06 -04:00
Moshibit 8c45a9a1ec Add files via upload 2019-04-27 00:08:59 -05:00
Tom Rothamel fc45dca4c8 Merge pull request #1798 from Moshibit/master
Add Spanish translation for Ren'Py Tutorial
2019-04-26 17:12:14 -04:00
Tom Rothamel be4d4290a8 Rename the internal copy of OpenDyslexic.
This is so it doesn't interfere with a game that already includes
a copy.
2019-04-25 18:58:52 -04:00
Tom Rothamel 59c49a6512 Documentation tweak to config.reload_modules. 2019-04-24 17:56:51 -04:00
Tom Rothamel 6fedb10d30 Merge pull request #1801 from mal/reload-modules
Python module reloading support
2019-04-24 17:55:15 -04:00
Tom Rothamel 5eb650d3fb Merge pull request #1802 from mal/master
Keep vanilla python's late import binding
2019-04-24 17:53:57 -04:00
Mal Graty 8c2d509b9c Keep vanilla python's late import binding 2019-04-24 19:41:25 +01:00
Mal Graty 1eee09bb9e Document config.reload_modules 2019-04-24 19:13:06 +01:00
Sylvain Beucler bacc645355 renpyweb: link to a controlled donation URL 2019-04-24 18:45:39 +02:00
Sylvain Beucler db83f8462d renpyweb: more sound tuning
No real user feedback despite dedicated test URLs, so using my system as reference.
2019-04-24 18:40:51 +02:00
Sylvain Beucler 4ee3026cad renpyweb: consistent capitalization 2019-04-24 18:38:08 +02:00
Tom Rothamel cc6594d068 web: Fix tyop. 2019-04-23 22:34:21 -04:00
Tom Rothamel 3469504ffd web: Since Popen doesn't exist, do not modify the class. 2019-04-23 22:33:38 -04:00
Tom Rothamel 7954d1d9cd web: Serve built games through a local webserver. 2019-04-23 20:22:03 -04:00
Sylvain Beucler 8706d19545 Typo in French translation 2019-04-23 21:50:38 +02:00
Mal Graty 666370ac7f Python module reloading support 2019-04-23 19:03:08 +01:00
Tom Rothamel 88722cc03b web: Set the title of the generated page based on display_name. 2019-04-22 21:20:00 -04:00
Tom Rothamel 64171052ac Default display_name to config.name.
It seems like a closer match to what display_name is used for.
2019-04-22 21:17:15 -04:00
Tom Rothamel 793a2b2250 web: One click build of a web app. 2019-04-22 02:08:45 -04:00
Moshibit d16e1e71b8 Add files via upload 2019-04-21 16:48:25 -05:00
Moshibit cf56ebc008 Delete common.rpyc 2019-04-21 14:50:30 -05:00
Moshibit 26166cfdd8 Delete 01example.rpyc 2019-04-21 14:50:01 -05:00
Moshibit c5f60655d3 Add files via upload
Update translations.
2019-04-21 14:49:14 -05:00
Tom Rothamel 0ef5e6650e web: Tweak wording of the web screen, add Beuc's info. 2019-04-21 11:43:13 -04:00
Moshibit 036bdc4afe Add files via upload 2019-04-21 01:46:10 -05:00
Moshibit 33d8c014ec Add files via upload 2019-04-21 00:51:20 -05:00
Moshibit 1b193e6884 Add files via upload 2019-04-20 23:50:22 -05:00
Moshibit d6b7786f60 Add files via upload 2019-04-20 18:04:49 -05:00
Tom Rothamel a1bcb09260 web: Interface for creating a web project. 2019-04-20 16:10:50 -04:00
Moshibit d05704c7c7 Add files via upload 2019-04-20 13:40:11 -05:00
Tom Rothamel 68af2f3db2 Shrink the spacer sizes.
This provides a little extra room as we add the Web button to
the launcher.
2019-04-20 12:23:36 -04:00
Tom Rothamel 9b6ab94970 Add SimpleHTTPServer to the list of modules Ren'Py imports. 2019-04-20 10:37:00 -04:00
Tom Rothamel 51abcae5d4 Revert "Log startup timings to the Javascript console."
This reverts commit 045b6cc227.
2019-04-20 01:35:44 -04:00
Tom Rothamel 79e9d81173 web: Distribute compiled Ren'Py files as part of the web distribution.
This includes the .pyo files, and also creates a main.py to start
the game up.
2019-04-20 01:03:22 -04:00
Tom Rothamel 4e60a996dd Merge pull request #1796 from jbeich/bsdarm
Unbreak ARM build on BSDs
2019-04-19 17:01:11 -04:00
Jan Beich 15738d1dfb Unbreak ARM build on BSDs
In file included from ffmedia.c:13:
/usr/include/malloc.h:3:2: error: "<malloc.h> has been replaced by <stdlib.h>"
 #error "<malloc.h> has been replaced by <stdlib.h>"
  ^
2019-04-19 20:01:23 +00:00
Moshibit c37c44d227 Add files via upload 2019-04-19 08:39:03 -05:00
Tom Rothamel 045b6cc227 Log startup timings to the Javascript console. 2019-04-18 22:53:00 -04:00
Moshibit 56f86495fb Add files via upload 2019-04-18 20:56:40 -05:00
Moshibit 576b02d124 Add files via upload 2019-04-17 23:18:42 -05:00
Moshibit b5b7673e8b Add files via upload 2019-04-17 23:05:41 -05:00
Moshibit 455274bbaa Add files via upload 2019-04-17 21:40:04 -05:00
Tom Rothamel 0b492357d9 Fixes to get compiling on PC. 2019-04-17 22:38:59 -04:00
Tom Rothamel fb0149d0dc Merge branch 'web'
Based on @beuc's patches.
2019-04-17 21:58:45 -04:00
Tom Rothamel e7184c3a11 Minor cleanups. 2019-04-17 21:40:08 -04:00
Tom Rothamel 963dba7cc6 Minor cleanups. 2019-04-17 21:36:18 -04:00
Tom Rothamel 087f618326 Revert "web: Remove threading from pgrender.py"
This reverts commit 8dc57697bf.
2019-04-17 21:28:27 -04:00
Tom Rothamel 4c2be41c63 Revert "web: Replace uses of float with double in the gl renderer."
This reverts commit 86bab3977e.
2019-04-17 20:27:36 -04:00
Moshibit d23d5d91e3 Add files via upload 2019-04-17 19:09:34 -05:00
Tom Rothamel 7f8a07a8a5 web: Ifdef changes to renpysound_core.c 2019-04-17 02:38:53 -04:00
Tom Rothamel 173eaf6029 web: Use ifdefs to separate emscripten code in ffmpeg. 2019-04-17 01:07:17 -04:00
Tom Rothamel 8d0830f66f web: Remove threading in ffmedia.c
Originally-by: Sylvain Beucler <beuc@beuc.net>
2019-04-17 00:07:52 -04:00
Moshibit 584f7a0be7 Add files via upload 2019-04-16 21:50:40 -05:00
Tom Rothamel e210147343 Only force a checkpoint if one hasn't been forced already.
This improves things because forced checkpoints would prevent
rollforward data from being saved.
2019-04-16 01:35:59 -04:00
Tom Rothamel e4b33e595a Force a checkpoint after a print statement occurs.
This prevents the console from rolling back past the python block
it's in.
2019-04-15 23:05:56 -04:00
Tom Rothamel 53d08e0f2d Threadless image prediciton. 2019-04-15 01:50:16 -04:00
Tom Rothamel 84c53d3d9c Revert "web: Remove threading in savelocation.py (and a call to renpy.sync?)"
This reverts commit fe2ccc43e2.
2019-04-15 01:50:16 -04:00
Tom Rothamel 2962b5c398 Revert "web: Remove threading in main.py."
This reverts commit 030d9d2dbf.
2019-04-15 01:50:16 -04:00
Tom Rothamel 0ebfae81c9 Revert some changes from loadsave.py. 2019-04-15 01:50:16 -04:00
Tom Rothamel 5dc0372228 Revert "web: Remove threading from render.pyx"
This reverts commit 02ded280af.
2019-04-15 01:50:16 -04:00
Tom Rothamel 82780c57ee Revert "web: Remove threading from presplash."
This reverts commit d6ba807878.
2019-04-15 01:50:16 -04:00
Tom Rothamel 305215823d Revert "web: Remove threading from im.py"
This reverts commit 3c12d7ddb5.
2019-04-15 01:50:16 -04:00
Tom Rothamel 38440bf843 Do not take background screenshots when in emscripten. 2019-04-15 01:50:16 -04:00
Tom Rothamel 3596a59a54 Revert "web: Remove threading in core.py"
This reverts commit 626a5b03a1.
2019-04-15 01:50:16 -04:00
Tom Rothamel 5aaf1f8ef4 Revert "web: Remove threading in debug.py"
This reverts commit 7da19e215f.
2019-04-15 01:50:16 -04:00
Tom Rothamel 398c8a3053 Revert "web: Remove threading in audio.py"
This reverts commit 7a11cb35eb.
2019-04-15 01:50:16 -04:00
Tom Rothamel cfa560d8fa Revert "web: Patch out use of the subprocess module."
This reverts commit e4aa46e7fe.
2019-04-15 01:50:16 -04:00
Tom Rothamel 46fe772cc5 Revert "web: Remove threading from loader.py,"
This reverts commit c0281a41de.
2019-04-15 01:50:16 -04:00
Moshibit 9149a5c941 Add files via upload 2019-04-15 00:45:16 -05:00
Moshibit ce50d6e3f1 Add files via upload 2019-04-15 00:09:51 -05:00
Moshibit f015cda018 Add files via upload 2019-04-15 00:02:19 -05:00
Sylvain Beucler 069ac8e6c3 web: audio: use larger buffer/latency to work-around sound jitter 2019-04-14 23:19:27 +02:00
Moshibit e2ad4d5a3c Add files via upload 2019-04-14 00:08:22 -05:00
Moshibit 3239f0d5bb Add files via upload 2019-04-14 00:04:54 -05:00
Moshibit 7ac80c1a4f Add files via upload 2019-04-14 00:04:17 -05:00
Tom Rothamel eda749e44a Avoid running expressions with side effects when predicting.
See https://twitter.com/SakuraRiver/status/1117201035217358848 .
2019-04-13 21:34:37 -04:00
Moshibit 5da79e86ae Add files via upload 2019-04-13 20:12:14 -05:00
Tom Rothamel dc73065241 Web packaging changes. 2019-04-12 23:59:26 -04:00
Tom Rothamel 55992074c1 Allow building when the .exe files are missing. 2019-04-12 23:57:22 -04:00
Moshibit ba79f7986c Add files via upload 2019-04-12 14:17:21 -05:00
Tom Rothamel 5a0e3da293 sl2: Fix regression in 49c92600bf.
Layouts weren't being parsed in layout mode, which lead to all
sorts of problems.
2019-04-12 09:57:03 -04:00
Tom Rothamel d7a2bd7bdf Add config.load_failed_label.
This is a label that is jumped if the load fails, to give the game
a chance at recovering.

Fixes #1792.
2019-04-11 20:15:57 -04:00
Moshibit aa43d1828a Add files via upload 2019-04-11 17:31:14 -05:00
Moshibit 21d90dbd55 Add files via upload 2019-04-10 23:18:22 -05:00
Tom Rothamel 4b8026fdd7 Use RENPY_STATIC to control the static build.
This lets us enable and disable static building on a per-platform
basis.
2019-04-10 22:54:27 -04:00
Tom Rothamel 73b8629724 Compat last. 2019-04-10 10:17:04 -04:00
Tom Rothamel 79f0037afc sl2: Report when a non-constant keyword argument follows a python statement.
Fixes #1791.
2019-04-10 09:39:37 -04:00
Tom Rothamel 49c92600bf sl2: Parsing can reject keyword arguments. 2019-04-10 02:59:24 -04:00
Moshibit f594f51ada Add files via upload 2019-04-10 01:22:58 -05:00
Tom Rothamel 254c5b6a2a Make it possible to determine if an SL2 statement supports python. 2019-04-09 20:40:51 -04:00
Tom Rothamel 7568ae3146 Document the supported Python version.
Fixes #1789.
2019-04-08 21:35:41 -04:00
Moshibit 1d7f7353c8 Add files via upload 2019-04-08 15:42:18 -05:00
Moshibit ad4756039d Add files via upload 2019-04-07 16:00:10 -05:00
Tom Rothamel dc30cc39aa Add config.notify. 2019-04-07 10:05:04 -04:00
Tom Rothamel 2720ab3615 Add compatibility for the change in #1774. 2019-04-06 23:08:16 -04:00
Tom Rothamel d7a8c5fb96 Merge pull request #1774 from mal/extend-say-attribute-trans-callback
Extend say_attribute_transition_callback with canonical tag list
2019-04-06 22:45:35 -04:00
Tom Rothamel 49baa6e6cb Script to upload to itch.io. 2019-04-06 04:27:01 -04:00
Tom Rothamel b5abd9f4c4 Merge pull request #1785 from kobaltcore/bmfont-kerning-support
Add ability to parse kerning messages of BMFont fonts
2019-04-04 17:55:44 -04:00
Tom Rothamel 98d104b9ec Shortcut creating vc_version.py for build processes. 2019-04-03 01:32:49 -04:00
Tom Rothamel f5e001ac99 web: Mitigate busy script warnings from the browser.
Originally-by: Sylvain Beucler <beuc@beuc.net>
2019-04-02 02:03:39 -04:00
Tom Rothamel fe2ccc43e2 web: Remove threading in savelocation.py (and a call to renpy.sync?)
Originally-by: Sylvain Beucler <beuc@beuc.net>
2019-04-02 02:03:39 -04:00
Tom Rothamel 030d9d2dbf web: Remove threading in main.py.
Originally-by: Sylvain Beucler <beuc@beuc.net>
2019-04-02 02:03:39 -04:00
Tom Rothamel 011c3147dc web: Remove threading from loadsave.py,
Originally-by: Sylvain Beucler <beuc@beuc.net>
2019-04-02 02:03:39 -04:00
Tom Rothamel c0281a41de web: Remove threading from loader.py,
Originally-by: Sylvain Beucler <beuc@beuc.net>
2019-04-02 02:03:39 -04:00
Tom Rothamel 02ded280af web: Remove threading from render.pyx
Originally-by: Sylvain Beucler <beuc@beuc.net>
2019-04-02 02:03:39 -04:00
Tom Rothamel d6ba807878 web: Remove threading from presplash.
Originally-by: Sylvain Beucler <beuc@beuc.net>
2019-04-02 02:03:39 -04:00
Tom Rothamel 8dc57697bf web: Remove threading from pgrender.py
Originally-by: Sylvain Beucler <beuc@beuc.net>
2019-04-02 02:03:39 -04:00
Tom Rothamel 3c12d7ddb5 web: Remove threading from im.py
Originally-by: Sylvain Beucler <beuc@beuc.net>
2019-04-02 02:03:39 -04:00
Tom Rothamel c851968def web: Download a screenshot once it's been taken.
Originally-by: Sylvain Beucler <beuc@beuc.net>
2019-04-02 02:03:39 -04:00
Tom Rothamel 626a5b03a1 web: Remove threading in core.py
Originally-by: Sylvain Beucler <beuc@beuc.net>
2019-04-02 02:03:39 -04:00
Tom Rothamel 7da19e215f web: Remove threading in debug.py
Originally-by: Sylvain Beucler <beuc@beuc.net>
2019-04-02 02:03:39 -04:00
Tom Rothamel 7a11cb35eb web: Remove threading in audio.py
Originally-by: Sylvain Beucler <beuc@beuc.net>
2019-04-02 02:03:39 -04:00
Tom Rothamel d2981c59cd web: Remove threading in renpysound_core.c
Originally-by: Sylvain Beucler <beuc@beuc.net>
2019-04-02 02:03:39 -04:00
Tom Rothamel e4aa46e7fe web: Patch out use of the subprocess module.
Originally-by: Sylvain Beucler <beuc@beuc.net>
2019-04-02 00:07:48 -04:00
Tom Rothamel c56aea9dc8 web: Fix up source for static loading.
Originally-by: Sylvain Beucler <beuc@beuc.net>
2019-04-02 00:06:40 -04:00
Tom Rothamel 86bab3977e web: Replace uses of float with double in the gl renderer.
Originally-by: Sylvain Beucler <beuc@beuc.net>
2019-04-02 00:03:14 -04:00
Tom Rothamel 2b03eb6c39 Add the ability to build a web package. 2019-04-01 23:04:11 -04:00
Tom Rothamel 7f33118758 Bump version. 2019-04-01 19:25:56 -04:00
Tom Rothamel 1bea3fc006 Update changelog and credits, fix docs. 2019-03-31 10:37:27 -04:00
Tom Rothamel 9608615542 android: Set the searchpath _after_ clearing it. 2019-03-30 19:44:09 -04:00
Tom Rothamel 9ddff5d7a5 android: Prioritize files on disk over files in the APK. 2019-03-30 19:41:41 -04:00
Tom Rothamel e623134867 Predict the proper image in resolve_say_attributes.
Fixes #1175.
2019-03-30 14:30:57 -04:00
Tom Rothamel 77e428c9a1 Include temporary attributes when generating translations.
Fixes #1784.
2019-03-30 14:22:38 -04:00
Tom Rothamel 03c951c4a4 itch: Download butler and use the downloaded copy.
Fixes #1782.
2019-03-30 13:26:46 -04:00
Tom Rothamel d9fb4a4234 Update sponsors doc. 2019-03-29 23:29:43 -04:00
Tom Rothamel 571aff3eb1 Update changelog. 2019-03-29 22:20:37 -04:00
Moshibit 7b1e96300f Add files via upload 2019-03-29 15:16:03 -06:00
kobaltcore 0f00705da7 Add ability to parse kerning messages of BMFont fonts
This allows the BMFont object to understand "kerning" lines embedded within BMFont definitions.
The kerning information is added to the existing "self.kerns" property.
2019-03-29 18:14:40 +01:00
Tom Rothamel 9d9f2c2a75 Correct the priority order of crop vs (corner1, corner2). 2019-03-28 23:23:37 -04:00
Tom Rothamel ce2fa71356 Adjust the accessibility message. 2019-03-28 18:55:09 -04:00
Tom Rothamel e315006136 Add the accessibility menu. 2019-03-27 21:15:41 -04:00
Tom Rothamel a2bf4f3452 Resize a side if the displayabls that comprise it change size. 2019-03-27 21:13:57 -04:00
Tom Rothamel f9a2d1153a Add accessability preferences. 2019-03-27 00:44:41 -04:00
Tom Rothamel 33f9cef572 renpy.free_memory frees fonts.
As intended.
2019-03-26 22:36:47 -04:00
Tom Rothamel c3a1c8d7ff Add bars to error handling. 2019-03-25 22:29:05 -04:00
Tom Rothamel 565956e966 Allow bar values to call an action when they change something. 2019-03-25 22:12:44 -04:00
Tom Rothamel 4eb84611fe More work on the accessibility menu. 2019-03-24 13:16:29 -04:00
Moshibit 69f3c01442 Add files via upload 2019-03-24 11:12:07 -06:00
Moshibit f205b611b5 Add files via upload 2019-03-24 10:53:24 -06:00
Tom Rothamel fad22b3631 Start work on the accessibility screen. 2019-03-24 11:36:02 -04:00
Tom Rothamel 176309152f Shrink _label_text in most places. 2019-03-24 11:32:42 -04:00
Tom Rothamel 1bf0e75bc1 Add preferences to adjust ftfont size and spacing. 2019-03-23 22:53:39 -04:00
Moshibit 8266095feb Add files via upload 2019-03-23 15:14:20 -06:00
Moshibit e2843c06ba Add files via upload 2019-03-23 12:26:37 -06:00
Tom Rothamel 28d5f5fc39 Fix issue with #1780. 2019-03-22 18:24:07 -04:00
Tom Rothamel a6b21ec78f Merge pull request #1781 from Andykl/fix-lexer-eob
Perform re-create Lexer.eob on revert
2019-03-21 22:25:35 -04:00
Andy_kl 62bac5aa0e Performed re-create Lexer.eob on revert 2019-03-21 19:03:41 +03:00
Tom Rothamel 843b10851f Fix bad .pop() in #1780. 2019-03-20 23:21:48 -04:00
Tom Rothamel c5f15b5c6a Merge pull request #1780 from Meithal/clean
GC optimizations
2019-03-20 23:20:31 -04:00
Meithal ebd8baba00 GC optimizations 2019-03-21 03:58:30 +01:00
Tom Rothamel 464ae528b1 Dejavusans font transform. 2019-03-20 02:04:08 -04:00
Tom Rothamel 884de6f4c3 Add additonal font scaling options.
There is a way to scale the size per font file, and a way to scale the
vertical extent by font file. The main reason for these is to provide
a way to rescale opendyslexic to fit in the same space as DejaVuSans.
2019-03-19 00:50:19 -04:00
Tom Rothamel 414b1a36c7 Add OpenDyslexic files. 2019-03-18 23:58:18 -04:00
Tom Rothamel 8b1168b621 Add font transform support.
This is an accesibility function that can turn one font into
another font, or a font group. It's currently being used to
enable OpenDyslexic when it's needed.
2019-03-18 23:51:33 -04:00
Tom Rothamel 8526cc1ba3 Rewrite FontGroup.
It's now O(1) in operation, at the cost of increasing the size of the
FontGroup. There's also the option to specify a default font, and
it's possible to add a FontGroup to a FontGroup.
2019-03-18 22:43:19 -04:00
Moshibit 5870b6cd1f Add files via upload 2019-03-17 21:21:18 -06:00
Tom Rothamel 7b2f7d7e85 Set steam=None if steam fails to initialize.
This fixes #1772.
2019-03-17 18:31:32 -04:00
Tom Rothamel cbff654273 Bump version. 2019-03-17 17:36:02 -04:00
Tom Rothamel 7cad0e9e06 Fix typo in changelog. 2019-03-17 13:44:10 -04:00
Mal Graty a7471bba03 Extend say_attribute_transition_callback with tags
This provides context to the callback about the image it's affecting
with the transition. This can be used in isolation, or with the current
state to intelligently utilise a transition based upon the
tags/attributes of the image being displayed.
2019-03-17 15:40:33 +00:00
Moshibit 44c11a7803 Add files via upload 2019-03-16 20:31:21 -06:00
Tom Rothamel 210935c4c6 Fix docs. 2019-03-16 21:32:05 -04:00
Tom Rothamel 412cbda546 Update credits and sponsors. 2019-03-16 21:04:39 -04:00
Tom Rothamel 553e80d12e Update changelog. 2019-03-16 20:49:58 -04:00
Tom Rothamel 5dd3af6a0a console: Properly parse jump command.
Fixes #1767.
2019-03-16 20:23:36 -04:00
Tom Rothamel 879d97a93b sl2: Propagate transform state to the right place.
Fixes #1769.
2019-03-16 11:10:55 -04:00
Tom Rothamel c5325bb61e Arguments to extend override older arguments.
Fixed #1768.
2019-03-15 22:32:08 -04:00
Tom Rothamel 5a708e86d0 Ensure a __ne__ method exists for each __eq__ method. 2019-03-14 20:54:29 -04:00
Tom Rothamel 3a52fd76e5 Merge pull request #1766 from Enerccio/rpe-enviroment-loading
added RENPY_SEARCHPATH environment variable
2019-03-14 00:03:28 -04:00
Tom Rothamel 4e24239322 Document iOS image files. 2019-03-14 00:02:18 -04:00
Tom Rothamel d2bdc159bd Ignore iOS files. 2019-03-13 22:49:03 -04:00
Tom Rothamel 49e804eb50 Update the changelog. 2019-03-13 22:43:06 -04:00
Tom Rothamel 209564d2d2 Set _voice.auto_filename.
Fixes #1765.
2019-03-13 21:09:10 -04:00
Tom Rothamel 56b42f7f8a Remain in rollback until an interaction occurs.
This makes it more reliable to detect rollbacks and loads, and avoid
triggering code when they happen.
2019-03-13 20:27:25 -04:00
Enerccio fb1a01c37f added RENPY_SEARCHPATH environment variable 2019-03-13 18:24:46 +01:00
Tom Rothamel 1d1c53e2d5 Generate iOS images when needed. 2019-03-12 21:23:37 -04:00
Tom Rothamel 0604e61151 Add iOS icons. 2019-03-12 21:16:43 -04:00
Moshibit 19f69717de Add files via upload 2019-03-12 11:50:18 -06:00
Tom Rothamel f8232ed24a Doc config.say_attribute_transition_callback. 2019-03-11 02:02:18 -04:00
Tom Rothamel efafa4e9e6 Add config.say_attribute_transition_callback.
This is a callback that returns the say attribute transition to use,
allowing it to be changed in more complex ways.
2019-03-10 22:46:59 -04:00
Moshibit 5a7856cb26 Add files via upload 2019-03-10 10:48:41 -06:00
Tom Rothamel 48130761d7 Open save_dump.txt in the same location as other error files.
This prevents a crash on mac when it's opened in /.
2019-03-10 03:02:01 -04:00
Tom Rothamel 95daa0251f Properly quote % in profiling data. 2019-03-09 22:42:05 -05:00
Tom Rothamel 31c3efa9bc Prevent logging from crashing Ren'Py if a spurious % appears. 2019-03-09 21:21:16 -05:00
Tom Rothamel 34875f0011 Pass names and versions when creating iOS project. 2019-03-09 15:12:59 -05:00
Moshibit 78c61e45c5 Add files via upload 2019-03-09 09:06:25 -06:00
Tom Rothamel 4f78eeed28 DynamicImages that take a scope should consider that in equality.
That's because when a scope is involved, it's possible for two
DynamicImages with the same name to be different, even if the
name is the same.

This can cause problems with displayable reuse in screens.

Fixes #1759.
2019-03-08 20:19:20 -05:00
Tom Rothamel 8b80e916a7 Changelog. 2019-03-07 09:21:46 -05:00
Tom Rothamel b810238038 Merge pull request #1758 from Moshibit/patch-4
correct button
2019-03-07 08:45:43 -05:00
Tom Rothamel 7808826773 Fix roll-forward not working through menus.
Fixes #1754.
2019-03-06 23:31:46 -05:00
Moshibit 782f89510b Add files via upload 2019-03-06 10:35:27 -06:00
Moshibit ec8147408b correct button 2019-03-06 09:22:44 -06:00
Tom Rothamel 92d89ea508 Merge pull request #1756 from fchapoton/patch-1
fix an illegal raise False
2019-03-05 18:08:16 -05:00
Tom Rothamel 1ebae688db Merge pull request #1757 from Moshibit/patch-3
correct buttons
2019-03-05 18:07:50 -05:00
Moshibit 927370ebfc Add files via upload 2019-03-05 14:14:27 -06:00
Moshibit 7afe53fb81 correct buttons 2019-03-05 13:40:31 -06:00
Moshibit 9eb1c06659 Add files via upload 2019-03-05 13:19:32 -06:00
Frédéric Chapoton f6e7f67faa fix an illegal raise False
changed to return False

found by https://lgtm.com/projects/g/renpy/renpy/
2019-03-05 19:48:10 +01:00
Tom Rothamel f96d677d4a Bump version to 7.2.1. 2019-03-04 19:15:11 -05:00
Tom Rothamel dd115f186f Remove spurious character. 2019-03-04 19:14:26 -05:00
Tom Rothamel 344079de86 Fix changelog. 2019-03-03 21:16:41 -05:00
Tom Rothamel 47c53e90b4 Force begin rollback at menu and call screen.
This ensures that saves will load at those statements, even in
the presence of fast skipping.

Fixes #1751.
2019-03-03 12:19:45 -05:00
Tom Rothamel bd07fa6abb Defer SHOW->UPDATE until the screen has been drawn.
Calls to renpy.restart_interaction were causing the screen to
restart early, which means that the show events never were
dispatched, and the update event would overwrite it.

Fixes #1753.
2019-03-03 11:15:22 -05:00
Moshibit 8f1d3636d5 Merge pull request #4 from Moshibit/Moshibit-patch-3
Add files via upload
2019-03-03 09:30:21 -06:00
Moshibit 07886362c5 Add files via upload 2019-03-03 09:29:31 -06:00
Moshibit 85c58d5220 Add files via upload 2019-03-03 09:20:46 -06:00
Tom Rothamel 203fdbcc84 Fix User Interface Statement documentation.
Fixes #1752.
2019-03-03 00:33:33 -05:00
Tom Rothamel a47e9ae043 Round .subsurface arguments to integers.
This is more correct, and fixes a bug where inaccuracy could cause
is_pixel_opaque to fail because the 1x1 it wants was rounded down
to 0x1.
2019-03-02 23:21:22 -05:00
Tom Rothamel 6c09b387a3 Document lint functions as functions.
Rather than in the .rst file.
2019-03-01 21:53:28 -05:00
Tom Rothamel 8969d18c91 Merge pull request #1747 from Andykl/CDSfixs
Documentation corrections
2019-03-01 20:13:33 -05:00
Tom Rothamel 828bc67064 Merge pull request #1750 from kevinturner/patch-2
Remove MPEG-1 from renpy.movie_cutscene()
2019-03-01 19:47:16 -05:00
Kevin Turner de01c76882 Remove MPEG-1 from renpy.movie_cutscene()
renpy.movie_cutscene() can play any Ren'Py compatible movie file, but the documentation had not been updated to reflect this.
2019-02-28 01:47:20 -05:00
Tom Rothamel b32c618886 Update version in changelog. 2019-02-28 00:59:34 -05:00
Andy_kl 7be9a851c3 Added docs for lint functions 2019-02-27 22:52:03 +03:00
Andy_kl 38e83e3401 Improved CDS description 2019-02-27 19:14:28 +03:00
Tom Rothamel 5876764730 Merge pull request #1748 from Moshibit/master
Add Spanish translation for The Question
2019-02-27 10:22:16 -05:00
Tom Rothamel 31677e806f Merge branch 'master' into master 2019-02-27 10:21:59 -05:00
Tom Rothamel 4d26e052a1 Merge pull request #1745 from Moshibit/patch-2
Update common.rpy
2019-02-27 10:19:52 -05:00
Andy_kl bcda13f128 Added documentation for simple_expression and delimited_python 2019-02-27 17:12:30 +03:00
Tom Rothamel eeee5afd4d Bump version to 7.2. 2019-02-26 23:22:15 -05:00
Andy_kl 121ba27204 Documentation for some of the Lexer methods. 2019-02-27 02:05:41 +03:00
Moshibit d76c325b3b Add Spanish traslation for The Question 2019-02-26 12:59:30 -06:00
Moshibit 9b35295a6d Update screens.rpy 2019-02-26 12:44:19 -06:00
Andy_kl 572c915b06 Added missing "expression" 2019-02-26 16:48:16 +03:00
Andy_kl 520a4016db Small fix 2019-02-26 16:25:58 +03:00
Andy_kl 16b85e42ac Typos fixed 2019-02-26 16:12:20 +03:00
Tom Rothamel fc54469606 Merge pull request #1746 from AXYPB/master
Documentation corrections
2019-02-26 02:24:25 -05:00
Moshibit 7226cf3998 Add files via upload 2019-02-26 01:22:40 -06:00
Craig Donson a260ed5880 Documentation corrections 2019-02-26 02:21:36 -05:00
Moshibit 2224208aa7 Add files via upload 2019-02-26 00:23:27 -06:00
Moshibit 6846b42612 Update common.rpy
translation correction
2019-02-25 23:55:58 -06:00
Tom Rothamel 69a648b23c Merge pull request #1744 from Moshibit/patch-1
Update screens.rpy
2019-02-26 00:50:26 -05:00
Moshibit 5f5fd90731 Update screens.rpy 2019-02-25 23:48:30 -06:00
Tom Rothamel b0d4fca4f0 Allow nvl=True to be passed as an argument to menu.
This makes Ren'Py use nvl_menu instead of menu.
2019-02-25 23:54:19 -05:00
Tom Rothamel 1a50cfff71 Separate checking redraws and processing redraws.
This is because checking redraws happens once per event, but
we might handle multiple events before the redraw itself occurs.
After process_redraws happens, the Renders are in an invalid state
until the next draw_screen.

When in this invalid state, if the inspector is called, a crash
occurs.
2019-02-25 20:46:35 -05:00
Tom Rothamel 9d6ff18e15 Document new screen statements. 2019-02-24 20:51:53 -05:00
Moshibit 7fb674ca11 Delete script.rpyc 2019-02-24 19:32:23 -06:00
Moshibit a32d9e0be0 Delete screens.rpyc 2019-02-24 19:32:14 -06:00
Moshibit 7315e353a8 Delete options.rpyc 2019-02-24 19:32:07 -06:00
Moshibit 3590a545e7 Delete common.rpyc 2019-02-24 19:31:59 -06:00
Moshibit 4ac857581d Add files via upload 2019-02-24 19:31:22 -06:00
Moshibit 383fe6195c Add files via upload 2019-02-24 19:29:38 -06:00
Moshibit a22ad60b0f Merge pull request #2 from Moshibit/Moshibit-patch-2
Update common.rpy
2019-02-24 19:17:04 -06:00
Tom Rothamel 322811168a Update the changelog. 2019-02-24 19:58:23 -05:00
Tom Rothamel eded9b0c79 Update keywords. 2019-02-24 18:49:12 -05:00
Tom Rothamel 810835020b Bring back renpy.pause(hard=True) with a suitable disclaimer. 2019-02-24 16:34:14 -05:00
Tom Rothamel cfdf3d57f4 Merge pull request #1741 from Andykl/DateFormatFix
Date format changed to correct in Russian translation
2019-02-24 15:41:22 -05:00
Tom Rothamel 6e4b805cae Undocument rarely used arguments to renpy.pause.
Including hard=True.
2019-02-24 12:37:59 -05:00
Moshibit 704573db42 Update common.rpy
correction of translation error
2019-02-24 11:26:02 -06:00
Tom Rothamel c1292d4975 Allow show screen and hide screen to take a width clause.
Show would parse it but ignore it, which was bad. Now it just
works the same as with the usual show and hide statements.
2019-02-24 12:21:27 -05:00
Andy_kl ffd35663a6 Date format changed to correct in Russian translation 2019-02-24 13:48:27 +03:00
Tom Rothamel 2eea4a442c sl2: Add use expression as a statement. 2019-02-24 02:15:43 -05:00
Tom Rothamel be6d14d740 Propertly set _main for sl2 add with transform.
Fixes a problem where the scope would not be updated correctly when
a transform was involved.

Fixes #1740.
2019-02-23 22:22:06 -05:00
Tom Rothamel eff4c21cfe Drag/DragGroup zorder rewrite.
This moves from trying to maintain the zorder, to just sorting
the children any time it changes. This makes it possible to
persist the zorder through interaction restarts in a sensible
way.

Fixes #1727.
2019-02-23 19:37:17 -05:00
Tom Rothamel 919c0a7f0d Merge pull request #1739 from mal/issue-1738
Fix speaking_attribute suppression
2019-02-23 10:17:46 -05:00
Mal Graty 432acfcf9e Fix speaking_attribute suppression
Switch back to prepending temporary_attrs with speaking_attribute so
that temporary say attributes have the chance to suppress the
speaking_attribute.

The use case for this is catering for infrequent lines of a character's
internal monologue, for which they are responsible, but do not actively
speak.
2019-02-23 11:06:06 +00:00
Tom Rothamel eab5170ae1 Attributes should only be restored if temporary attributes are present. 2019-02-23 01:59:12 -05:00
Tom Rothamel ad4f4095fd Only restore attributes if the attributes have changed.
Fixes #1737.
2019-02-23 01:35:43 -05:00
Tom Rothamel 94ee41646d Only set config.missing_{scene,show,hide} if None. 2019-02-23 01:23:05 -05:00
Tom Rothamel 46bafe91ae Merge pull request #1726 from AXYPB/master
Documentation corrections
2019-02-22 17:11:51 -05:00
Tom Rothamel 0cfdf68f7d Merge pull request #1735 from mal/augment-dont-replace-speaking-attr
Let temp attrs and speaking attr to work together
2019-02-22 17:11:23 -05:00
Mal Graty 18713b60f2 Let temp attrs and speaking attr to work together 2019-02-22 09:52:21 +00:00
Tom Rothamel 5adfccf53f Explicit test for attrs being None.
Fixes #1734.
2019-02-21 23:10:07 -05:00
Tom Rothamel eb0d1c8bfd Merge pull request #1733 from mal/fix-outline-stepping
Fix positional stepping when scaling outlines
2019-02-21 22:33:11 -05:00
Mal Graty 1e9d6bd519 Fix position stepping when scaling outlines 2019-02-21 19:11:39 +00:00
Tom Rothamel f5c1e108c5 Implement the outline_scaling style property.
This controls if the outlines are scaled using the current stepped
approach or a new linear approach.
2019-02-20 22:30:18 -05:00
Tom Rothamel 2b0691233e When adjusting spacing, try to keep the baselines aligned. 2019-02-20 21:55:25 -05:00
Tom Rothamel 065a46caa4 Adjust baseline as the text scales. 2019-02-20 12:35:15 -05:00
Craig Donson 5ebc270420 Further corrections 2019-02-20 05:18:02 -05:00
Tom Rothamel c4fb7c44dd Add renpy.is_skipping.
A documented way to know if skipping is going on.
2019-02-19 20:01:51 -05:00
Tom Rothamel df9be4a293 Release a grab when the associated displayable can't be focused.
Fixes #1728.
2019-02-19 19:37:52 -05:00
Tom Rothamel b639e0bca5 Update changelog. 2019-02-18 21:27:19 -05:00
Tom Rothamel 6aaf8b6ce9 Accept copy and paste in launcher input. 2019-02-18 20:40:41 -05:00
Tom Rothamel 15cf4341c3 Explictly remove temporary say attributes.
This fixes a problem with layeredimages for which "foo red happy"
and "foo red happy speaking" will both be defined. In that case,
"show foo red happy" won't remove speaking, and so we need to
do an explicit "show red happy -speaking".
2019-02-17 22:52:29 -05:00
Tom Rothamel 2bec7e4a73 Store the width and heigh passed to render().
Used by 115aae01dc, forgot to check
it in.
2019-02-17 21:40:04 -05:00
Tom Rothamel 6a94806b29 Check in data used when creating test projects. 2019-02-17 21:12:28 -05:00
Craig Donson 184006e7b8 Documentation corrections 2019-02-17 20:03:33 -05:00
Tom Rothamel 115aae01dc xmaxiuum and xymaximum shouldn't restrict where a drag can be moved.
We had been using the width and height offered to the drag as
the places where it can move. However, those are affected by
any xmaximum or ymaximum in effect.

This changes that so the original width and height are stored an
passed to the drag.
2019-02-17 14:39:18 -05:00
Tom Rothamel 00e71e3247 Merge pull request #1715 from Andykl/InputCopypaste
Added ability to input do copy paste
2019-02-17 12:32:06 -05:00
Andy_kl 4c0f25a53d Moved scrap calls to direct use 2019-02-17 20:30:57 +03:00
Tom Rothamel 482a3526df Merge pull request #1724 from Andykl/PlacementImprove
renpy.get_placement improve
2019-02-17 12:11:46 -05:00
Andy_kl 77dbe13a50 Doc last 2019-02-17 20:07:20 +03:00
Andy_kl ea305245f3 A small addition for renpy.get_placement 2019-02-17 20:06:01 +03:00
Tom Rothamel 2924a35b0d Merge pull request #1723 from Andykl/GetAttrsImprove
Added ability to specify if_hidden for renpy.get_attributes
2019-02-17 11:50:32 -05:00
Andy_kl d8b15aa717 Added ability to specify if_hidden for renpy.get_attributes 2019-02-17 19:48:55 +03:00
Tom Rothamel 13ef80181a Add a script to manage temporary tests. 2019-02-17 10:38:38 -05:00
Tom Rothamel fc1392a0a3 Avoid displaying the CTC screen for 0 seconds. (As with {nw}.) 2019-02-16 18:09:36 -05:00
Tom Rothamel deedb038c2 Fix broken extend. 2019-02-16 17:59:19 -05:00
Tom Rothamel 31a0355299 Doc fix. 2019-02-16 17:53:13 -05:00
Tom Rothamel c243915cdb Document say with temporary attributes. 2019-02-16 13:59:25 -05:00
Tom Rothamel 27c6fe0e71 Update changelog. 2019-02-16 13:43:05 -05:00
Tom Rothamel 838d87ab66 Use the max_window_size in Preference
This makes sure that we can't create a window too big to fit on the
user's monitor.

It aso now highlights the Window preference when it's as big as it
can be, even if less than 100% of the game's size.

Fixes #1716.
2019-02-16 13:26:26 -05:00
Tom Rothamel 488a2ff7b8 Compute and store the maximum window size. 2019-02-16 13:24:49 -05:00
Tom Rothamel 5a2b42f0c4 Update credits. 2019-02-16 10:34:42 -05:00
Tom Rothamel ae138402ec Update sponsors. 2019-02-16 10:31:49 -05:00
Tom Rothamel 26f60f8b09 Do not show the ctc screen when interact=False. 2019-02-16 10:29:39 -05:00
Tom Rothamel 871bc9a9bb Allow the interact argument to be passed to a say-with-arguments. 2019-02-16 10:07:42 -05:00
Tom Rothamel 4c3891538a Document several lexer methods.
* .arguments
* .image_name_component
* .label_name
* .delimited_python
2019-02-16 09:52:07 -05:00
Tom Rothamel 7af27638a3 Do not begin a new rollback while in _after_load.
We don't want the after_load block to be a distinct part of the
game for the purpose of rollback, as it might come and go and
hence block roll-forward.

Fixes #1718.
2019-02-16 01:34:23 -05:00
Tom Rothamel fba8fb6cd7 Give a space segment an ascent of 1.
This prevents it from triggering a case that's meant for
DisplayableSegments. Fixes #1719.
2019-02-15 23:29:51 -05:00
Tom Rothamel bcf2734f53 Round up the size of the generated texture when doing a render-to-texture.
Having that extra pixel guarantees all the data is present, preventing
a blank (black or white) line from appearing at the bottom of the screen
during dissolves.
2019-02-15 21:31:22 -05:00
Tom Rothamel 80d4796c04 Fix translations after 30225b7de0 2019-02-14 22:34:03 -05:00
Tom Rothamel 8529993ffb Script for altering translations after minor text changes. 2019-02-14 22:33:32 -05:00
Tom Rothamel 718b0d7eb8 gc: Prevent reference counting loop through Render. 2019-02-14 02:42:36 -05:00
Tom Rothamel 21f654e559 gc: Avoid reference counting loop in ast.fix_missing_locations 2019-02-14 02:35:38 -05:00
Tom Rothamel a8c4c34782 gc: Fix reference loop in merge_slide. 2019-02-14 00:13:57 -05:00
Tom Rothamel 79a099315f Add temporary say attributes to the changelog. 2019-02-13 21:21:16 -05:00
Tom Rothamel 6136404adc Add window auto show and window auto hide statements. 2019-02-12 23:40:40 -05:00
Tom Rothamel 38de45259f Allow force_autosave to block until the save is done. 2019-02-12 20:20:04 -05:00
Tom Rothamel 331738b11f MoveTransition should indicate it creates a MultiBox with layers.
Some other part of Ren'Py will raise IgnoreLayers, and if the
root widget doesn't understand layers, this will be wrong.
2019-02-12 01:01:01 -05:00
Tom Rothamel dd6f482fcd Rewrite say attribute handling to support temporary attributes. 2019-02-11 23:12:01 -05:00
Tom Rothamel 9f770ce6fe Make the layer optional in most ShownImageInfo methods. 2019-02-11 23:12:01 -05:00
Beuc 75c6df852f doc: savelocation.sync() is for syncing HOME 2019-02-11 22:44:13 +01:00
Tom Rothamel 748228581b Merge pull request #1714 from shayneofficer/patch-2
Update tutorial_quickstart.rpy
2019-02-11 01:57:58 -05:00
Tom Rothamel b6ff60ac91 Merge pull request #1713 from shayneofficer/patch-1
Update examples.rpy
2019-02-11 01:57:51 -05:00
Tom Rothamel a2315537a3 Parse temporary image attributes as part of a say statement. 2019-02-10 21:28:25 -05:00
Andy_kl 2f7aea3bff Renamed keyword 2019-02-11 03:23:13 +03:00
Andy_kl a66f7f1716 Added doc 2019-02-11 02:47:33 +03:00
Andy_kl be28c4c8cb Added copypaste for console 2019-02-11 02:16:24 +03:00
Andy_kl 09e7296dac Added screenlang keywords 2019-02-11 02:15:12 +03:00
Andy_kl ed60700636 Initial 2019-02-11 02:15:04 +03:00
Shayne Officer 30225b7de0 Update tutorial_quickstart.rpy 2019-02-09 22:24:12 -06:00
Shayne Officer 0ba59c4a3c Update examples.rpy
Just fixing a typo, higlight to highlight
2019-02-09 22:15:10 -06:00
Tom Rothamel 0c6648cc69 Allow text images to participate in ruby layout.
Fixes #1704.
2019-02-09 12:49:50 -05:00
Tom Rothamel 3537d4df09 Update Pig Latin. 2019-02-08 08:26:00 -05:00
Tom Rothamel cfa1053331 Tweak formatting of the error handling screen. 2019-02-08 08:24:26 -05:00
Tom Rothamel 735f355aa9 Support copying errors/tracebacks via Markdown. 2019-02-08 08:20:42 -05:00
Tom Rothamel 88722c18dc Update the changelog. 2019-02-06 23:47:24 -05:00
Tom Rothamel b4a9d9e163 Optionally provide additional arguments to the ctc screen. 2019-02-06 23:31:12 -05:00
Tom Rothamel 54e8c63b3a Allow passing of arguments in a way that not all keyword arguments need be consumed.
The goal of this is to allow the transparent addition of new arguments
to screens, without the old screens needing to be updated.
2019-02-06 23:25:39 -05:00
Tom Rothamel de0d21b377 Do not quite the display on a resize.
Instead, we let set_mode do it if and when it proves necessary.
2019-02-06 10:28:07 -05:00
Tom Rothamel 3980e65920 Ignore spurious event when leaving fullscreen. 2019-02-06 02:59:05 -05:00
Tom Rothamel 6be0f498e4 Allow add_from to deal with calls to a local label.
Fixes #1709.
2019-02-05 17:36:40 -05:00
Tom Rothamel 957e79dd88 Make sure that the periodic thread can wait deadlocked.
Fixes a case where Ren'Py won't quit.
2019-02-05 02:05:31 -05:00
Tom Rothamel b33d61e52a Use the y coordinate to determine the baseline.
Fixes #1706 again.
2019-02-04 22:05:31 -05:00
Tom Rothamel f61dc75199 Document renpy.BASELINE. 2019-02-04 02:05:42 -05:00
Tom Rothamel b7a67d50ef Add yanchor renpy.BASELINE.
This lets us line the text's baseline up with other things.

Fixes #1706.
2019-02-03 23:55:03 -05:00
Tom Rothamel efe919e875 Predict images used by Movie. 2019-02-03 20:28:04 -05:00
Tom Rothamel 0aeba7e272 Add start_image to Movie.
This is an image that is displayed before the first frame of
the movie has been rendered.
2019-02-03 20:28:04 -05:00
Tom Rothamel e735f8a566 Merge pull request #1707 from xavi-mat/master
Doc fix: gui.font_size -> gui.text_size
2019-02-03 19:55:27 -05:00
xavi-mat a02b5347bf correction
gui.font_size -> gui.text_size
2019-02-03 22:29:21 +01:00
Tom Rothamel 408e5dc02b Ensure menu arguments always exist. 2019-02-02 10:31:41 -05:00
Tom Rothamel 0c5012f835 Clean up the renpysound api. 2019-02-01 23:47:46 -05:00
Tom Rothamel 7d1b9e2e80 Document renpysound.
This is intended to become a replaceable interface that can allow
for decoding of audio in a platform-specific manner.
2019-02-01 22:21:32 -05:00
Tom Rothamel 2ea71b8240 Update credits. 2019-01-31 23:33:35 -05:00
Tom Rothamel f0c304eb52 Fix typo. 2019-01-31 23:32:16 -05:00
Tom Rothamel d4ebdc2c2e Update keywords. 2019-01-31 23:21:48 -05:00
Tom Rothamel 32f373f8f8 Document menu set again. 2019-01-31 23:18:42 -05:00
Tom Rothamel 2813e5ce01 Document menu arguments. 2019-01-31 00:31:28 -05:00
Tom Rothamel d584e370a1 Initialize the slideshow field on the gallery object. 2019-01-30 22:35:16 -05:00
Tom Rothamel ee28b54c6c menu: Filter item_arguments when a set is used. 2019-01-30 01:12:01 -05:00
Tom Rothamel 2b914b040f Boldly fix bug #1701.
Which pertained to say with menu arguments not removing the argument
corresponding to the menu caption.

Fixes #1701.
2019-01-29 23:15:28 -05:00
Tom Rothamel 5845ee32f8 Update changelog for 7.1.4. 2019-01-29 09:06:03 -05:00
Tom Rothamel 5ceb63ffec Merge pull request #1685 from Beuc/patch-1
Doc fixes
2019-01-28 21:34:00 -05:00
Tom Rothamel 1c4281923c Merge pull request #1689 from Beuc/patch-2
doc fix: layer_at_list -> show_layer_at
2019-01-28 21:33:49 -05:00
Tom Rothamel 61c3e38bb5 Avoid resizing a maximized window. 2019-01-28 01:45:46 -05:00
Tom Rothamel 9a38109af6 Change the FULLSCREEN flag, rather than closing and repopening video.
Fixes #1665, along with an update to pygame_sdl2.
2019-01-27 19:17:45 -05:00
Tom Rothamel d7cdc62eb8 Remain fullscreen when the mouse changes desktops. 2019-01-27 11:17:50 -05:00
Tom Rothamel 697a7906ef li: Groups now support the multiple attribute.
When given, the attributes are defined without the group - that
means that auto can be used to define multiple attributes, of
which any of them can be selected at once.
2019-01-27 01:23:55 -05:00
Tom Rothamel 4c59d32bea Add allow_duplicate_labels to be defined early. 2019-01-26 10:13:46 -05:00
Tom Rothamel 3c8fd80503 Add config.allow_duplicate_labels.
A variable that does what it says on the tin, allowing the same
variable to be defined twice in one script.
2019-01-25 23:38:40 -05:00
Tom Rothamel 80c7516e9a Check the name after running prior early python blocks. 2019-01-25 22:35:14 -05:00
Tom Rothamel 4242b7dab4 Fix creating a new file. 2019-01-25 19:08:24 -05:00
Tom Rothamel 136150b8e4 Set a default thumbnail size. 2019-01-25 11:27:49 -05:00
Tom Rothamel fde8daca3e Merge pull request #1698 from Beuc/patch-5
hw_video: use consistent platform testing
2019-01-24 08:32:26 -05:00
Tom Rothamel b8fe298e8e Automatically clear screenshots when a checkpoint occurs.
This is a compromise between the 6.99 and 7.x behavior. In the older
stuff, we would never automatically clear the screenshot, meaning
if a game called renpy.take_screenshot, it could grow stale.

In the newer behavior, we would clear it after each interaction,
even meanigless ones, like an implie with.

This uses renpy.checkpoint to clear the screenshot, which is a proxy
for the game state meaningfully advancing. In addition, this behavior
can be disabled by setting config.auto_clear_screenshot to False.

Fixes #1680.
2019-01-23 23:41:30 -05:00
Tom Rothamel beb82cc52a Merge pull request #1696 from Beuc/patch-3
Comment typo
2019-01-23 22:13:09 -05:00
Tom Rothamel e888f64795 Merge pull request #1697 from Beuc/patch-4
doc: hints for supported mobile video formats
2019-01-23 22:12:55 -05:00
Beuc 811977793d hw_video: use consistent platform testing 2019-01-23 18:13:37 +01:00
Beuc 185a3898d0 doc: hints for supported mobile video formats 2019-01-23 18:08:24 +01:00
Tom Rothamel 92e0375108 Allow the creator to configure the steam popup position.
Fixes #1686.
2019-01-22 22:10:28 -05:00
Beuc c741220b8b Comment typo 2019-01-23 01:10:58 +01:00
Tom Rothamel 2d9f3000a4 Fix inverted test in imagefonts. 2019-01-21 23:51:48 -05:00
Tom Rothamel f44796fd5b If an action argument isn't comparable, say it's not equal.
Fixes #1693.
2019-01-21 22:25:06 -05:00
Tom Rothamel 4c1fa7b36d Start input mode after setting the text rectangle. 2019-01-21 22:02:03 -05:00
Tom Rothamel 867e8ad144 Rename some of the gl2 files.
This allows static and semi-static linking, of the sort that we
do on Android and iOS.
2019-01-21 00:42:55 -05:00
Tom Rothamel e218adf0fd Allow arguments to be passed to individual menu choices.
This uses the syntax:

menu:
    "Choice 1" (1, color="#f00"):
        pass
    "Choice 2" (2, color="#0ff") if unlocked:
        pass
2019-01-20 18:37:35 -05:00
Tom Rothamel fe29d69ccb Add config.menu_arguments_callback.
This is something like config.say_arguments_callback, except for
menus.
2019-01-18 22:56:22 -05:00
Tom Rothamel 7d63a35734 Allow the menu statement to take arguments. 2019-01-18 22:40:04 -05:00
Beuc 3d7533552d doc fix: layer_at_list -> show_layer_at 2019-01-17 17:14:52 +01:00
Tom Rothamel b539e047ed Use the original list of items when checking the menu set.
Fixes #1688.
2019-01-17 02:02:20 -05:00
Tom Rothamel bcd35bd79e Drop version to 7.1.4.
As I plan to make a fix release before 7.2 hits.
2019-01-16 17:55:16 -05:00
Beuc bc49ab7d78 Doc fixes 2019-01-16 13:17:49 +01:00
Tom Rothamel 5eee3ba007 Cause a new rollback to begin if needed to match a rollforward.
Fixes #1671.
2019-01-15 23:22:37 -05:00
Tom Rothamel 6e6841c500 Add a loop parameter to Movie.
This makes it easy to display non-looping movies that stop when
they are done.
2019-01-15 23:22:37 -05:00
Tom Rothamel cb5fecc9b0 Merge pull request #1679 from mal/song-2
Fast im.Blur implementation
2019-01-15 21:59:30 -05:00
Tom Rothamel d75828e35b Fix video fallback when not playing. 2019-01-15 01:29:07 -05:00
Tom Rothamel b1a5d587e7 launcher: Restore interface.error handling.
Per #1684.
2019-01-14 22:18:00 -05:00
Tom Rothamel da92428cb9 Handle errors downloading and parsing channels.json.
Fixes #1684.
2019-01-14 00:07:09 -05:00
Tom Rothamel cd47441420 steam: Re-set DYLD_INSERT_LIBRARIES before invoking Ren'Py proper.
This works around an issue in Steam where the injected libraries
change the variable to STEAM_DYLD_INSERT_LIBRARIES, which means
python never sees it and the overlay doesn't load.
2019-01-13 19:57:53 -05:00
Tom Rothamel f9deff6bc5 Update copyright for 2019. 2019-01-12 13:37:18 -05:00
Tom Rothamel 854c08f1a5 Automatically pick the copyright year. 2019-01-12 13:34:33 -05:00
Tom Rothamel 5e45ed9cf4 Add keyup and keydown modifiers. 2019-01-11 21:57:11 -05:00
Tom Rothamel 62637db772 Remove size / 2 limitation.
Fixes #1661.
2019-01-11 18:57:52 -05:00
Tom Rothamel c75855e7e5 On Android, read files out of the public directory.
Fixes #1664.
2019-01-10 22:24:41 -05:00
Tom Rothamel f2dcd5af8e Prevent a crash when generating a 9:16 screen.
Fixes #1682.
2019-01-10 22:24:08 -05:00
Tom Rothamel de67f53409 Include SDL_opengles2 when required. 2019-01-09 22:54:53 -05:00
Tom Rothamel 361787a3f3 Support clicking cancel in tkaskdir.
Fixes #1678.
2019-01-09 02:05:32 -05:00
Tom Rothamel 7cc5b5db73 Error out if an attribut isn't present on lint. 2019-01-08 23:43:44 -05:00
Tom Rothamel 2bd87a931f Add a flag to the displayable arguments if lint is happening. 2019-01-08 21:24:28 -05:00
Mal Graty 3e73f0d8e9 Wire blur into renpy.display.im 2019-01-07 21:31:05 +00:00
Mal Graty 231daa4e60 Cython wrappers for linear and gaussian blurs 2019-01-07 21:31:05 +00:00
Mal Graty 920d21d518 Linear and gaussian blur implementations 2019-01-07 21:31:05 +00:00
Tom Rothamel 6ddd1f2234 menu: Do not create a ChoiceReturn when the value is None.
This restores the behavior of config.narrator_menu=False, at least for
games that use screens that support the old way of doing it.
2019-01-06 18:58:04 -05:00
Tom Rothamel 958a48199a Add the caret property to screen language. 2019-01-05 16:28:06 -05:00
Tom Rothamel 78bfc2c43d Display Movie's image argument if the movie stops playing.
Fixes #1677.
2019-01-04 22:46:38 -05:00
Tom Rothamel 83f6c56f0a Report an error if the displayable with id "what" doesn't have what as its text.
This detects a problem where the creator passed something else to
text, and had a hard-to-diagnose problem. ie:

    text ("!" + what) id "what"

will cause weird tag errors.
2019-01-03 19:56:31 -05:00
Tom Rothamel ee64a7b592 Remove TODO. 2018-12-31 23:52:48 -05:00
Tom Rothamel 26e582a70f tutorial: Update the French and Russian translations.
To include 1674.
2018-12-31 22:57:36 -05:00
Tom Rothamel 6896ad9bce Fix typo.
Fixes #1674.
2018-12-31 22:41:23 -05:00
Tom Rothamel 74ca5c9de8 Merge pull request #1675 from Beuc/patch-1
emscripten: tidy platform detection
2018-12-30 14:21:14 -05:00
Sylvain Beucler 8a327eacea emscripten: tidy platform detection 2018-12-30 18:42:16 +01:00
Tom Rothamel f25fcacd44 Clear the say attributes once they are consumed.
This prevents them from being re-consumed by empty_window if it's called.
2018-12-29 00:17:09 -05:00
Tom Rothamel 6445f3a9c5 Fix functions that are documented more than once.
Fixes #1669.
2018-12-23 00:05:35 -05:00
Tom Rothamel 90ba612afa Look for and report duplicate functions. 2018-12-22 22:48:54 -05:00
Tom Rothamel 6a5363f747 Import opengl through sdl2. 2018-12-18 10:34:40 -05:00
Tom Rothamel 3d2079f665 Ensure renpy.play can never loop a sound. 2018-12-11 22:13:17 -05:00
Tom Rothamel 372216ef08 Signal when data is written.
This is a rewrite of #1631, to put all the emscripten changes into
a single function.
2018-12-10 17:55:49 -05:00
Tom Rothamel 4ec44cf1ff Merge pull request #1660 from Beuc/patch-3
update_path: support static Python modules
2018-12-10 17:48:49 -05:00
Tom Rothamel e62bef8e6f Merge pull request #1662 from Beuc/patch-4
Remove unused import
2018-12-10 17:48:14 -05:00
Beuc 689cedd191 Remove unused import 2018-12-09 13:27:43 +01:00
Sylvain Beucler 475abc4218 update_path: support static Python modules 2018-12-08 14:55:32 +01:00
Tom Rothamel 863535cca4 Filter text tags when computer the length of AFM text.
Fixes #1659.
2018-12-04 22:09:45 -05:00
Tom Rothamel c7fb7a40df Do not pickle six. 2018-12-04 00:31:20 -05:00
Tom Rothamel ff81f1dc1a Merge pull request #1596 from wchill/py3_compat_exceptions
[Py3] Make exceptions both python2 and python3 compatible
2018-11-29 22:12:23 -05:00
Tom Rothamel d5248ad00d Merge pull request #1597 from wchill/use_print_function
[Py3] Use print function in pure python files
2018-11-29 22:12:09 -05:00
Tom Rothamel c34ca2acb4 Overwrite obsolete android packaging page.
Fixes renpy/rapt#7.
2018-11-28 01:15:27 -05:00
Tom Rothamel eb36cc693d Merge pull request #1653 from Beuc/patch-2
Explicitely close audio on quit
2018-11-27 18:29:56 -05:00
Tom Rothamel fc0328f609 Prevent a corrupt RPC file from taking down Ren'Py. 2018-11-26 20:46:54 -05:00
Tom Rothamel 6ad657ca30 Duplicate the child of a transform when the transform is duplicated.
Fixes #1654.
2018-11-25 23:07:31 -05:00
Beuc f779d3af59 Explicitely close audio on quit
With Emscripten, this tells the browser to stop calling the audio callback.
2018-11-25 13:14:41 +01:00
Tom Rothamel 89a116330a Make ftfont explicity mark glyphs as non-drawing.
Rather than using <0 width to imply it, which is a problem as fonts
seem to have 0 or negative width characters.

Fixes #1652.
2018-11-24 23:45:53 -05:00
Tom Rothamel 71ca7d3cb8 Merge pull request #1632 from Beuc/patch-7
emscripten: presplash specific handling
2018-11-24 20:45:33 -05:00
Tom Rothamel 211d35681f Merge pull request #1642 from Beuc/patch-2
audio: fix deadlock on quit
2018-11-24 20:45:03 -05:00
Tom Rothamel 18ad931283 Merge pull request #1651 from musiyenko/master
Fixed some typos
2018-11-23 22:36:55 -05:00
Tom Rothamel 005a524123 lint: Report screens that do not have parameter lists.
This should prevent people from making this mistake.
2018-11-23 10:08:03 -05:00
Sergey Musiyenko e9d30afc29 Fixed a typo 2018-11-22 14:48:42 +01:00
Sergey Musiyenko ee39d4cc73 Fixed a typo 2018-11-22 14:48:02 +01:00
Sergey Musiyenko 34e294e35c Fixed a typo 2018-11-22 14:47:14 +01:00
Sergey Musiyenko fd3f50d223 Fixed a typo 2018-11-22 14:45:51 +01:00
Tom Rothamel 4d7a93f09e Alow user statements to supply translation strings. 2018-11-22 01:09:21 -05:00
Tom Rothamel 0382e17b35 Better document reserved filenames. 2018-11-21 21:12:51 -05:00
Tom Rothamel 02b0627051 Shorten output that goes to the console.
Unless the creator chooses long output.
2018-11-20 23:30:35 -05:00
Tom Rothamel 373e6359f0 gl2: Remove non-NPOT textures. 2018-11-19 23:59:11 -05:00
Tom Rothamel 380f7824c5 gl2: egl2 -> gles2 renaming. 2018-11-19 11:31:50 -05:00
Tom Rothamel 6bd05879ce gl2: Allow the player to choose between gl2 and gles2 renderers.
This uses the same codebase and same modules, and just chooses by
asking OpenGL for the right kind of context at runtime.
2018-11-18 22:05:16 -05:00
Tom Rothamel fa6efc44a8 Bump version to 7.2.0. 2018-11-18 11:27:23 -05:00
Tom Rothamel e563889ef9 Merge branch 'gl2'. 2018-11-18 11:24:41 -05:00
Tom Rothamel f2376c02e8 Changelog 7.1.3. 2018-11-18 10:49:45 -05:00
Tom Rothamel ec9e1c2aa5 Bump version. 2018-11-18 01:20:03 -05:00
Tom Rothamel 6e880b2ba7 Fix incorrectly set default language. 2018-11-18 01:17:33 -05:00
Tom Rothamel 44e8dd8ab3 Remove the use of glew from the gl2 renderer. 2018-11-17 18:16:01 -05:00
Tom Rothamel 1943682bc6 Make gltexture use uguugl.
This also entailed some simplifications that make sense for modern
GL environments. We now exclusively use GL_RGBA, and we require the
third texture.
2018-11-17 18:09:09 -05:00
Tom Rothamel e43f8af2c3 gl2: Make glenviron_shader use uguugl. 2018-11-17 00:30:57 -05:00
Tom Rothamel ed342d27ac gl2: Make glrtt_fbo use uguugl. 2018-11-16 23:55:09 -05:00
Tom Rothamel c75ee1bf5f Merge branch 'master' into gl2 2018-11-16 21:28:01 -05:00
Beuc b42d2ab892 audio: fix deadlock on quit 2018-11-16 09:25:03 +01:00
Tom Rothamel 09002e2ef0 Update credits and changelog. 2018-11-15 22:59:58 -05:00
Tom Rothamel a876b05b10 Update sponsors doc. 2018-11-15 22:55:26 -05:00
Tom Rothamel 909258735f Fix translations. 2018-11-15 22:52:27 -05:00
Tom Rothamel 77ec342d5a Fix typo in source string. 2018-11-15 22:24:29 -05:00
Tom Rothamel 27d393af8a Check in obsolete.rpy files.
This is to prevent Ren'Py from causing problems if it deletes a
.rpy file when the .rpyc file is present, where the translation
is available in multiple files.
2018-11-15 22:21:47 -05:00
Tom Rothamel 871f361e16 Revert 3f474a4262 2018-11-15 22:21:16 -05:00
Tom Rothamel 3e9b85acfe Merge pull request #1640 from lee-yunseok/master
Fixes Korean translations for the latest launcher.
2018-11-15 21:35:41 -05:00
Tom Rothamel 3f474a4262 Merge pull request #1639 from Beuc/patch-1
Explicitely close audio on quit
2018-11-15 21:34:50 -05:00
Tom Rothamel 144d1b84ce Merge pull request #1638 from zedraxlo/master
chinese update, with new font
2018-11-15 21:17:08 -05:00
Lee Yunseok 6ebe6f429a Minor updates for the Korean translation. 2018-11-16 10:58:21 +09:00
Lee Yunseok 7a378931af Fix a mistake and add comments for android build tab. 2018-11-16 10:42:19 +09:00
Lee Yunseok f9cf932b67 Fix korean translations for the latest 2018-11-16 09:52:58 +09:00
Lee Yunseok 7222495537 Remove duplicate translations 2018-11-16 08:53:46 +09:00
Lee Yunseok c96ecd4bb5 Just remove whitespace 2018-11-16 08:34:56 +09:00
Lee Yunseok 42f399986f Fix korean translation 2018-11-16 08:27:24 +09:00
Lee Yunseok 1f14415c05 Merge pull request #10 from renpy/master
Latest
2018-11-16 05:55:48 +09:00
Beuc 2973209767 Explicitely close audio on quit
With Emscripten, this tells the browser to stop calling the audio callback.
2018-11-15 15:51:21 +01:00
zedraxlo 2a40cf1617 fix typo 2018-11-15 22:00:08 +08:00
zedraxlo 28f5980cae update chinese for "The Question"
tchinese just for test font.
2018-11-15 21:56:41 +08:00
zedraxlo 5a808ecb20 update language select for chinese 2018-11-15 21:54:17 +08:00
zedraxlo a45523559b Update style.rpy 2018-11-15 21:53:11 +08:00
zedraxlo b9051524e8 Update style.rpy 2018-11-15 21:52:52 +08:00
zedraxlo 2b4d3b7c68 Delete DroidSansFallback.ttf 2018-11-15 21:51:58 +08:00
zedraxlo ef2e2cc112 New font for chinese
SourceHanSans-Light-Lite, based on SourceHanSansCN-Light, which contain General specification Chinese table (China Mainland) 1st-order table (3500 characters) and Common Chinese character standard font table (Taiwan) (aka A-order table) (4808 characters), have already tested in "The Question" and launcher.
2018-11-15 21:51:21 +08:00
zedraxlo fc60b8d568 Merge pull request #2 from zedraxlo/patch-1
Patch 1
2018-11-15 21:44:04 +08:00
zedraxlo caa675948d Delete DroidSansFallback.txt 2018-11-15 21:42:35 +08:00
zedraxlo 0e7cb38637 Update screens.rpy 2018-11-15 18:09:46 +08:00
zedraxlo c169afb6f3 Update screens.rpy 2018-11-15 18:05:07 +08:00
zedraxlo 8578df7ca4 Update gui.rpy 2018-11-15 17:52:37 +08:00
zedraxlo e6a199e60b Update screens.rpy 2018-11-15 17:16:43 +08:00
zedraxlo 8612b3bf3b Update screens.rpy 2018-11-15 17:15:45 +08:00
zedraxlo dd82a2ffbb fix typo 2018-11-15 14:01:19 +08:00
Tom Rothamel 59f905327a Merge pull request #1636 from zedraxlo/master
SChinese update.
2018-11-15 00:56:22 -05:00
zedraxlo b22855e039 Merge pull request #1 from zedraxlo/patch-2
Patch 2
2018-11-15 13:52:15 +08:00
zedraxlo 2f4999fcbc Update options.rpy 2018-11-15 13:49:12 +08:00
zedraxlo e657fbe20b Delete obsolete.rpy 2018-11-15 13:42:14 +08:00
zedraxlo 8bbf879c68 Update launcher.rpy 2018-11-15 13:25:16 +08:00
zedraxlo 3635ffdedd fix typo 2018-11-15 12:43:01 +08:00
Tom Rothamel 71bbddf06b Automatic translation fixes. 2018-11-14 23:01:23 -05:00
Tom Rothamel 22bcfd5415 Merge pull request #1623 from lee-yunseok/master
Fix Korean typos in the launcher. Add Korean translation for The Question.
2018-11-14 22:59:23 -05:00
Tom Rothamel 8d3d5cbfc0 Merge branch 'master' into master 2018-11-14 22:59:09 -05:00
Tom Rothamel 2beb1b7ace Do not pass attributes to layerdimage children.
Chances are, the children will not understand the arguments,
and hence will error out.

Fixes #1635.
2018-11-14 22:52:32 -05:00
zedraxlo 20b09ba2f5 Update error.rpy 2018-11-15 11:39:51 +08:00
zedraxlo 96e5cb7457 Update developer.rpy 2018-11-15 11:29:38 +08:00
zedraxlo d5b98efce6 Update common.rpy 2018-11-15 11:24:18 +08:00
zedraxlo a5b8e1ff02 Update common.rpy 2018-11-15 11:14:37 +08:00
Tom Rothamel 99578871c5 Fix code typo.
Fixes #1634.
2018-11-13 20:58:25 -05:00
Tom Rothamel 88e9793cce Revert "Make sure we don't distribute gl2 by mistake."
This reverts commit 5df0bb9fbd.
2018-11-13 20:55:04 -05:00
Tom Rothamel c7c127ef04 Merge branch 'master' into gl2 2018-11-13 20:54:25 -05:00
Tom Rothamel 5df0bb9fbd Make sure we don't distribute gl2 by mistake. 2018-11-13 20:48:09 -05:00
Lee Yunseok 1bb5716b63 Salt 2018-11-13 16:44:53 +09:00
Lee Yunseok a812fc4f56 Minor fixes in the Korean translation. 2018-11-13 16:35:38 +09:00
Lee Yunseok edbccb3783 Fix Korean translation for The Question 2018-11-13 16:22:08 +09:00
Tom Rothamel 181d28e0e7 gl2: Convert gldraw.pyx to uguu. 2018-11-13 00:33:24 -05:00
Tom Rothamel c649ffe23b gl2: Build uguu as part of Ren'Py. 2018-11-12 00:56:17 -05:00
Tom Rothamel 4de956940f Add uguu to Ren'Py. 2018-11-11 22:23:48 -05:00
Tom Rothamel f9e9acedd5 gl2: Start work by copying over renpy.gl. 2018-11-11 13:18:31 -05:00
Lee Yunseok 7b24be5d29 Add Korean translation for The Question. 2018-11-11 16:10:52 +09:00
Tom Rothamel 664b1ff6ec Add renpy.skip_sounds. 2018-11-11 01:09:13 -05:00
Tom Rothamel 9c08339f9a Merge pull request #1630 from Beuc/patch-5
Fixes to French translation
2018-11-10 17:53:32 -05:00
Sylvain Beucler 35416aab22 emscripten: presplash specific handling 2018-11-10 21:23:50 +01:00
Sylvain Beucler 29e8269de7 Fixes to French translation
replicated from 53261a7a52
2018-11-10 20:01:48 +01:00
Tom Rothamel e2556bf9c4 Make pop_current_screen properly update the _current_screen. 2018-11-10 10:53:53 -05:00
Tom Rothamel b159a34e44 Elide the filename when assigning names to statements. 2018-11-09 17:47:50 -05:00
Tom Rothamel 63efa20467 Update the error handling styles at init 9999.
This allows the styles to change to deal with the actual size
of the screen.
2018-11-09 01:23:58 -05:00
Tom Rothamel 17b943693c Allow error handling hyperlink functions to be pickled.
Fixes #1626.
2018-11-09 01:16:54 -05:00
Tom Rothamel 8e09177b6e Ensure the full path to a directory exists in DirectoryPackage.
Fixes #1627.
2018-11-08 22:31:47 -05:00
Tom Rothamel ddaf9f3de3 Check in keywords. 2018-11-08 02:02:15 -05:00
Tom Rothamel 8900d6f3df Update changelog. 2018-11-07 20:48:46 -05:00
Tom Rothamel 2e2f2ea460 Merge pull request #1625 from Beuc/patch-4
Fixes to French translation
2018-11-07 20:28:39 -05:00
Tom Rothamel adb928e234 Merge pull request #1624 from Beuc/patch-3
Fix missing spaces in the_question's screens.rpy
2018-11-07 20:27:56 -05:00
Beuc 53261a7a52 Fixes to French translation 2018-11-07 17:06:17 +01:00
Beuc 2e6f61e673 Fix missing spaces in the_question's screens.rpy 2018-11-07 16:04:31 +01:00
Lee Yunseok afce996d0e Fix typo. 2018-11-07 20:10:15 +09:00
Lee Yunseok 170351a81a Merge pull request #9 from renpy/master
Keep going to latest...
2018-11-07 20:09:17 +09:00
Tom Rothamel 1392cd9dad Allow FilePageNext and FilePagePrevious to choose if they go to auto and quick.
Fixes #1621.
2018-11-07 02:09:49 -05:00
Tom Rothamel c2be31d5de Merge pull request #1622 from Andykl/Transalion_Fix
Fix typos in Russian translate
2018-11-06 12:24:38 -05:00
Andy_kl e419711493 Fix typos in Russian translate 2018-11-06 17:37:43 +03:00
Tom Rothamel c734c5cda1 Merge pull request #1619 from Andykl/Launcher_Adds
Updated working of input screen for launcher
2018-11-05 22:00:28 -05:00
Tom Rothamel bde048b359 Merge pull request #1620 from Andykl/Rework_variable_viewer
Added button which hides deleted variables to the Variable Viewer.
2018-11-04 18:50:08 -05:00
Tom Rothamel 9878ccec4b Store the game version in _version and the json. 2018-11-04 17:41:10 -05:00
Andy_kl 30d8911abf Added button which hides deleted variables to the Variable Viewer. 2018-11-04 23:57:23 +03:00
Tom Rothamel d9ab291a68 Move absolute into minstore and mark as pure. 2018-11-04 12:53:39 -05:00
Tom Rothamel 1bc29461d1 Movie can now take a single movie with color and mask data side by side.
This should prevent movie sprites from going out of sync, by
taking both the color and mask data from a single file.

Fixes #1515.
2018-11-03 17:39:40 -04:00
Tom Rothamel f2e62c571c Document that screens can take positional arguments. 2018-11-03 17:39:40 -04:00
Andy_kl 0208328307 Updated russian translate 2018-11-03 21:38:27 +03:00
Andy_kl 3ee71e9b0d Added text-tag comment for translators. 2018-11-03 21:37:42 +03:00
Andy_kl d83788fa23 Added uppercase letters for translation name 2018-11-03 20:58:21 +03:00
Andy_kl 3c2cebacef Added underscore and space in the names of projects and files 2018-11-03 20:54:17 +03:00
Tom Rothamel 834b9fa1d1 Define centerd and vcentered normally.
Fixes #1347.
2018-11-03 13:17:51 -04:00
Tom Rothamel 9dd55e7b66 Merge pull request #1618 from Andykl/Fix_1161
Fix #1161
2018-11-03 13:16:57 -04:00
Tom Rothamel 857a8a65a2 Update sponsor docs. 2018-11-03 13:04:35 -04:00
Andy_kl dc58e6e8c8 Revert "Fix #1161"
This reverts commit c6dd267772.
2018-11-03 20:00:47 +03:00
Andy_kl 7f8101e2ee Revert "Fix #1045"
This reverts commit c2895f465c.
2018-11-03 19:59:07 +03:00
Andy_kl f7b389a5bc Updated working of input screen 2018-11-03 09:52:07 +03:00
Andy_kl c2895f465c Fix #1045 2018-11-03 06:43:08 +03:00
Andy_kl 075ba4bc49 Fix #1347 2018-11-03 06:41:36 +03:00
Andy_kl c6dd267772 Fix #1161 2018-11-03 04:53:58 +03:00
Tom Rothamel 06443a5f2e Fix typo. 2018-11-02 17:15:29 -04:00
Tom Rothamel ed564397d2 Merge pull request #1615 from Andykl/Fix_Issues
Fix issues with quick_menu on phones and performance encoding.
2018-11-01 22:12:47 -04:00
Andy_kl 66ef5ba2cf Fix #1360 2018-11-01 20:47:17 +03:00
Andy_kl fed3430d76 Fix #1603 2018-11-01 19:12:25 +03:00
Tom Rothamel cca4bf016c Set the compatibility channel looping properly. 2018-10-31 23:34:10 -04:00
Tom Rothamel 432ba06a48 Fix audio crash in moonlight walks. 2018-10-30 23:17:44 -04:00
Tom Rothamel 92fb4098b2 Update changelog. 2018-10-30 22:48:22 -04:00
Tom Rothamel a4340f7798 Merge pull request #1574 from Andykl/Drag_Changes
Extension of the Drag'n'Drop functional
2018-10-30 21:52:18 -04:00
Tom Rothamel 80ec5ad31e Merge pull request #1584 from Andykl/UserStatement_change
Changes in register_statement
2018-10-30 21:52:00 -04:00
Tom Rothamel df4d653b86 Merge pull request #1600 from vollschauer/master
Add delay to renpy.sound.set_volume
2018-10-30 21:50:37 -04:00
Andy_kl bcfa6d126b Doc this 2018-10-31 03:39:34 +03:00
Tom Rothamel 92bd507781 Update the credits. 2018-10-30 00:18:36 -04:00
Tom Rothamel b6966bdc21 Update changelog. 2018-10-30 00:04:27 -04:00
Tom Rothamel 6f5c8975b6 Minor cleanups for the last PR. 2018-10-29 22:38:54 -04:00
Tom Rothamel 35b60303ff Merge pull request #1610 from Andykl/UserLanguage
Added stuff for autodetect language by user's locale
2018-10-29 22:21:08 -04:00
Tom Rothamel 969e269f4d Merge pull request #1611 from KosMos-pv/master
Add missing history_allow_tags set to tutorial and The question.
2018-10-29 21:53:09 -04:00
Konstantin Mozheyko 291af49bc9 Add missing history_allow_tags set to tutorial and The question. 2018-10-29 15:00:20 +02:00
Tom Rothamel ffa33a8f29 Merge pull request #1609 from Beuc/patch-2
emscripten: detect and start configuring accordingly
2018-10-28 23:48:57 -04:00
Tom Rothamel 10e3acf760 Merge pull request #1608 from Beuc/patch-1
Rename IMG_SavePNG* to avoid conflict with PygameSDL2's
2018-10-28 23:48:36 -04:00
Andy_kl 93a9b9deee Doc last 2018-10-29 06:41:51 +03:00
Tom Rothamel 37604894e4 Lint now properly checks images for existence, even in superset cases. 2018-10-28 23:35:58 -04:00
Andy_kl 67717ef9b7 Added configuration variables to control language autodetect. 2018-10-29 06:20:03 +03:00
Andy_kl 43534a758c Added function for detect user locale 2018-10-29 06:14:06 +03:00
Sylvain Beucler bf8e70485d emscripten: detect and start configuring accordingly 2018-10-28 21:51:35 +01:00
Sylvain Beucler b3af65d7ab Rename IMG_SavePNG* to avoid conflict with PygameSDL2's during static linking 2018-10-28 21:15:39 +01:00
Tom Rothamel 6b7260fe39 Report and error out on extraneous arguments.
Because of changes that have been made over the past few years,
it was possible to write:

    show eileen happy but with random attributes appended

And Ren'Py would take it. That was never intended, and this closes
off this case.
2018-10-28 00:59:16 -04:00
Tom Rothamel 4809c16cd9 lint: Have show deal with layeredimages.
It now considers the available attributes when checking the
image.

Fixes #1604.
2018-10-27 23:13:11 -04:00
Tom Rothamel df0e0086c7 Draw underline and strikethrough when a glyph's width is zero.
Fixes #1605.
2018-10-26 22:22:41 -04:00
Tom Rothamel abd01eb734 Create phone choice images.
Fixes renpy/rapt#16.
2018-10-25 21:22:05 -04:00
Tom Rothamel 4818e43632 Allow shift keys in the emulator.
This lets one do shift+I, to inspect styles in small or touch mode.
2018-10-25 21:17:58 -04:00
Tom Rothamel a3ed117153 Lower version to 7.1.2. 2018-10-24 21:26:30 -04:00
Tom Rothamel f73acbdf9f Merge pull request #1602 from ShehriyarQureshi/master
Add checks for tags that require value
2018-10-24 19:07:33 -04:00
Lee Yunseok 4df7cafe93 Merge pull request #8 from renpy/master
Keep going to latest
2018-10-24 22:14:22 +09:00
Shehriyar Qureshi 0b0c97e2ec Add checks for tags that require value
Some tags that require value, when supplied none, raise python's
exceptions which might be hard to interpret.

Added simple checks to those tags to see if the supplied value is
empty. Raises exception that is easier to read than the ones
Python raises.
2018-10-24 09:49:51 +05:00
Tom Rothamel ffbe373dbb Display the text tag and string when parsing a text tag fails.
Fixes #1598.
2018-10-23 22:30:14 -04:00
Tom Rothamel 3f0e21b174 Merge pull request #1599 from fblampe/master
translation: Translated more strings to German, fixed ellipses.
2018-10-22 18:39:05 -04:00
Unknown d521e79b46 Add delay to renpy.sound.set_volume 2018-10-21 20:17:24 +02:00
Tom Rothamel f725485412 Indicate we require a 64-bit Java. 2018-10-21 11:04:20 -04:00
Felix Lampe e7015b9b88 translation: Translated more strings to German, fixed ellipses. 2018-10-21 14:22:59 +02:00
Tom Rothamel 4b74d34580 gui: Add gui.choice_button_text_insensitive_color 2018-10-21 01:05:26 -04:00
Tom Rothamel 9ca2db8869 Document config.menu_include_disabled. 2018-10-21 00:34:23 -04:00
Tom Rothamel 274934d356 Compat menu actions. 2018-10-20 22:58:51 -04:00
Tom Rothamel 56fe28955a Add config.menu_include_disabled.
This causes Ren'Py to include disabled menu items as part of the
a menu, rather than removing them entirely.
2018-10-19 21:49:50 -04:00
Eric Ahn bb7759c9f3 Fix print in remaining files 2018-10-19 13:45:00 -07:00
Eric Ahn 7415ca19f8 Use print function in pure python files 2018-10-19 12:56:58 -07:00
Eric Ahn d542b05287 Make exceptions both python2 and python3 compatible 2018-10-19 12:13:14 -07:00
Tom Rothamel ba06e9538b Add requirements to the documentation. 2018-10-18 21:05:31 -04:00
Tom Rothamel e117adb219 Clear kwargs and args from being set inappropriatey.
This is an attempt to fix a bug in Planet Stronghold 2 that was
caused by kwargs being set when it should not have been.
2018-10-18 00:50:33 -04:00
Tom Rothamel 27aa12a5f0 Include the current Ren'Py version in a savefile. 2018-10-17 11:14:35 -04:00
Tom Rothamel 25c39eebf9 Changelog last. 2018-10-17 02:01:56 -04:00
Tom Rothamel 4b4aa38455 Add SetLocalVariable and ToggleLocalVariable
These make it possible to set variables in the local context of a
used screen.
2018-10-16 21:47:47 -04:00
Tom Rothamel c468f8c60e ShowIf should not pass focus when it's hiding.
Fixes #1592.
2018-10-15 23:16:37 -04:00
Tom Rothamel 1d8643045a Merge pull request #1594 from Andykl/Directly_At
Added the ability to specify a transform directly in the SL
2018-10-14 08:38:14 -04:00
Tom Rothamel 51e79498f0 Merge pull request #1577 from Andykl/Displayable_Changes
Avoid skipping displayables with redefined __bool__
2018-10-13 19:37:48 -04:00
Tom Rothamel 06590beca2 Merge pull request #1593 from XelaPy/patch-1
Adds "transpose" keyword to SL2 vpgrid.
2018-10-13 09:39:46 -04:00
Andy_kl 496d5d1c14 Doc for this 2018-10-13 16:18:30 +03:00
Tom Rothamel 96a6f9556c Start the 7.1.2 changelog. 2018-10-12 23:16:44 -04:00
Andy_kl 1ae6255301 Move creating ATLTransform in SLBlock 2018-10-12 21:45:20 +03:00
Andy_kl 207c9ad79b Mark constant for atl_transform 2018-10-12 19:12:18 +03:00
Andy_kl 788ee0399a Rework it 2018-10-12 19:01:01 +03:00
Andy_kl ee1027a8da Added the ability to specify a transform directly in the SL 2018-10-12 18:09:32 +03:00
Xela b3a528ddcc Adds "transpose" keyword to SL2 vpgrid.
Fixes #1560
2018-10-12 15:31:42 +03:00
Tom Rothamel 19204d0f82 Force the size of FriBidiChr to 4 bytes on all problems.
Fixes a problem where on windows it was corrupting RTL text into
garbage.
2018-10-12 01:41:52 -04:00
Tom Rothamel 8f0c7df619 Start the 7.2 series. 2018-10-11 17:06:39 -04:00
Tom Rothamel 41e9f86d1d Update sponsors list. 2018-10-10 00:16:46 -04:00
Tom Rothamel f3bee22ae7 Changelog last. 2018-10-08 23:02:22 -04:00
Tom Rothamel 0923ca9880 SetVariable and ToggleVariable now take fields along with variables. 2018-10-08 20:05:34 -04:00
Lee Yunseok b9a0975a71 Merge pull request #7 from renpy/master
Keep going to latest
2018-10-09 06:00:42 +09:00
Tom Rothamel abef9ac3f9 Automatically determine the version number to use. 2018-10-06 12:55:20 -04:00
Tom Rothamel 966adf6821 Distribute checks that checksums.txt exists, refuses to run if so. 2018-10-06 11:49:15 -04:00
Tom Rothamel 99d8a021c6 Changelog. 2018-10-06 08:32:55 -04:00
Tom Rothamel 6f379ca291 Add the new string to Android. 2018-10-06 08:20:15 -04:00
Tom Rothamel 326f8532f6 distribute: Sign by default. 2018-10-03 22:54:40 -04:00
Tom Rothamel 63a9c3943c Fix typos in changelog. 2018-10-03 22:50:08 -04:00
Tom Rothamel 8bf108be2e Update incompatible. 2018-10-02 21:11:53 -04:00
Tom Rothamel 20fa4cb41d New icon background for the_question. 2018-10-01 22:43:33 -04:00
Tom Rothamel 16c9e776b2 Fix the sense of the version test. 2018-10-01 22:42:06 -04:00
Lee Yunseok 7dc4f335eb Merge pull request #6 from renpy/master
Keep going to latest
2018-10-01 18:15:05 +09:00
Tom Rothamel 866ee50498 Chain translates even if a module isn't loaded.
Fixes #1569.
2018-09-30 14:49:01 -04:00
Andy_kl 1789b5a2ca More correctly check of the block value 2018-09-29 20:50:32 +03:00
Andy_kl bc121ac0cc Added "possible" value for block argument 2018-09-29 20:27:50 +03:00
Andy_kl a2e8a536b4 Added init_priority for register_statement 2018-09-29 20:07:29 +03:00
Tom Rothamel 018887163f Update changelog. 2018-09-29 02:56:30 -04:00
Tom Rothamel 0ad2f6b847 Store the locations of displaybales in text.
Fixes #1582.
2018-09-28 23:23:08 -04:00
Tom Rothamel a5222719b0 window auto treats menu-with-caption differently. 2018-09-27 10:31:04 -04:00
Tom Rothamel d1f5ab37d9 Give menu-with-caption a different statement name.
This then lets us treat it differently for the purpose of window
auto.
2018-09-27 10:29:00 -04:00
Tom Rothamel 5c0ab50d22 Place displayables-in-text on every frame.
Fixes #1573.
2018-09-26 23:01:54 -04:00
Tom Rothamel f2a824e2ef Changelog android. 2018-09-26 01:36:19 -04:00
Tom Rothamel 7e30c7ee0a Restart the interaction after taking a screenshot.
Fixes #1581.
2018-09-25 02:23:34 -04:00
Tom Rothamel 31e85a14c2 Dcoument the history fix. 2018-09-24 21:27:05 -04:00
Tom Rothamel a9dfb15d14 Set motion.null properly.
Fixes #1578. This is used to transfer an animation if no frame would
otherwise have been shown - a rare case.
2018-09-23 23:45:59 -04:00
Tom Rothamel a1f0fbaa19 Give the tutorial a valid version number.
Fixes #1580. Fixes #1579.
2018-09-23 16:38:06 -04:00
Tom Rothamel 52083b2be9 Handle zero-width characters in Ren'Py for image fonts. 2018-09-22 13:33:07 -04:00
Tom Rothamel 40d481b72f Handle all of the zero-width characters in Ren'Py's freetype support. 2018-09-22 13:24:10 -04:00
Andy_kl a6a97a3f4f Avoid skipping displayables with redefined __bool__ 2018-09-22 11:36:32 +03:00
Tom Rothamel 6985e14737 Make menus respect window show/hide/auto.
This addresses #1576, by keeping the window up all the time, as
it should have been.
2018-09-22 01:28:09 -04:00
Tom Rothamel 5e567f040b Do not substitute history text.
It has already been substituted, so we don't want to do it again.

Fixes #1575. Fixes #1516.
2018-09-21 01:02:21 -04:00
Tom Rothamel 6a1873be1a Expose the substitute property for label. 2018-09-20 22:45:06 -04:00
Andy_kl 715899ade4 Added drop_allowable property for Drag class 2018-09-20 07:13:49 +03:00
Andy_kl d829d1ab2f Added min_overlap property 2018-09-20 04:51:16 +03:00
Andy_kl 2069612eff Fix typo 2018-09-20 04:11:30 +03:00
Tom Rothamel 8add50b930 Merge pull request #1568 from lee-yunseok/master
Fix a little bit in Korean comments.
2018-09-19 16:33:03 -05:00
Tom Rothamel a9c4b72bb0 Wrap error handling writes to stdout in exception handling.
At least one computer has been having problems with stdout on
windows, so we want to error handle this.
2018-09-18 20:53:52 -04:00
Tom Rothamel e52eb6fead Fix doc typo. 2018-09-18 20:44:16 -04:00
Tom Rothamel 01b37552f6 Translate the current update status. 2018-09-18 20:39:58 -04:00
Tom Rothamel ea31af9bc2 Remove russian obsolete.rpy.
It duplicates translations found in other files - something went
wrong with #1570.
2018-09-18 20:35:46 -04:00
Tom Rothamel e5a3cff41e Merge pull request #1570 from Ria-kon/master
Russian update 7.1.0
2018-09-17 16:12:27 -05:00
Ria-kon 70881c90a4 Russian update 7.0.1. 2018-09-16 23:01:01 +03:00
Tom Rothamel 607a1acc00 Add nestled-close as an option for ctc_position. 2018-09-16 12:22:14 -04:00
Tom Rothamel 53ffeed805 Allow multiple segments to be passed to CTC, internally. 2018-09-16 12:12:00 -04:00
Tom Rothamel 0ae0bf4c0d Handle the CB (contingient break) breaking class.
This is used by displayables embedded in text. The unicode standard
allows us to handle this however we want, so we break unless there
is a non-breaking-space before or after the CB. (including ZWNBSP).
2018-09-15 23:42:07 -04:00
Tom Rothamel 8f40cf2da5 Use U+FFFC to represent displayables in text.
This is the OBJECT REPLACEMENT CHARACTER, which is useful because
it creates a character of breaking class CB, which allows Ren'Py
to decide if it wants to put a break before or after the object.
2018-09-15 23:39:01 -04:00
Tom Rothamel 08dba61bd9 Add alternate click to Drag.
This seems like it would make sense for things like a Minecraft-like
crafting system.

Fixes #1567.
2018-09-14 23:17:11 -04:00
Lee Yunseok 41fce3426d Merge pull request #5 from renpy/master
Keep going to latest.
2018-09-15 08:43:53 +09:00
Lee Yunseok 057ea1ea2c Fix some comments. 2018-09-15 08:42:11 +09:00
Tom Rothamel 8baaa7654f Changelog 7.1.1. 2018-09-13 21:11:09 -04:00
Tom Rothamel 14bf26efd6 Voice fixes.
* Always compute and use the tlid.
* Handle the sustain preference before an interaction, rather
  than after it.

Fixes #1566.
2018-09-13 00:09:38 -04:00
Tom Rothamel 8ad281048b Bump version. 2018-09-12 01:21:29 -04:00
Tom Rothamel 1b169672ba Add fribidi-src to the source archive.
This should address #1562, though I'll check for the nightly to
see that the build completed.
2018-09-11 18:34:25 -04:00
Tom Rothamel 4b4c3b73a3 Do not use ruby top text when computing typewriter blits. 2018-09-10 19:40:49 -04:00
Tom Rothamel 9270013b9a Fix the combination of ART and Knuth-Plass. 2018-09-09 21:38:30 -04:00
Tom Rothamel 0f618bc54f Log the Ren'Py version in android.txt. 2018-09-08 11:45:37 -04:00
Tom Rothamel 06979f6ade sl2: Give vpgrid its transpose property. 2018-09-08 11:19:22 -04:00
Tom Rothamel b4ff687efe Fix parsing of r at the end of a line. 2018-09-07 23:37:12 -04:00
Tom Rothamel 5c5408a490 Sponsors and keywords. 2018-09-07 10:03:30 -04:00
Tom Rothamel 492cacca02 Add the activated property to Drag.
This lets a function run when the user clicks on the drag.
2018-09-07 00:53:59 -04:00
Tom Rothamel 1fabbf4976 Credits and changelog. 2018-09-06 00:22:59 -04:00
Lee Yunseok cd33c95cc9 Merge pull request #4 from renpy/master
Keep going with latest.
2018-09-05 03:40:19 +09:00
444 changed files with 85708 additions and 6365 deletions
+13 -2
View File
@@ -47,12 +47,14 @@ def main():
raise Exception("Not running with python optimization.")
ap = argparse.ArgumentParser()
ap.add_argument("version")
ap.add_argument("version", nargs="?")
ap.add_argument("--fast", action="store_true")
ap.add_argument("--pygame", action="store", default=None)
ap.add_argument("--no-rapt", action="store_true")
ap.add_argument("--variant", action="store")
ap.add_argument("--sign", action="store_true")
ap.add_argument("--sign", action="store_true", default=True)
ap.add_argument("--nosign", action="store_false", dest="sign")
ap.add_argument("--vc-version-only", action="store_true")
args = ap.parse_args()
@@ -66,6 +68,9 @@ def main():
# 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]) # @UndefinedVariable
match_version = ".".join(str(i) for i in renpy.version_tuple[:2]) # @UndefinedVariable
s = subprocess.check_output([ "git", "describe", "--tags", "--dirty", "--match", "start-" + match_version ])
@@ -82,6 +87,9 @@ def main():
with open("renpy/vc_version.py", "w") as f:
f.write("vc_version = {}".format(vc_version))
if args.vc_version_only:
return
try:
reload(sys.modules['renpy.vc_version']) # @UndefinedVariable
except:
@@ -103,6 +111,9 @@ def main():
if args.variant:
destination += "-" + args.variant
if os.path.exists(os.path.join(destination, "checksums.txt")):
raise Exception("The checksums.txt file exists.")
print("Version {} ({})".format(args.version, full_version))
# Perhaps autobuild.
+1
View File
@@ -212,6 +212,7 @@ define gui.choice_button_text_size = gui.text_size
define gui.choice_button_text_xalign = 0.5
define gui.choice_button_text_idle_color = "#cccccc"
define gui.choice_button_text_hover_color = "#ffffff"
define gui.choice_button_text_insensitive_color = "#444444"
## File Slot Buttons ###########################################################
+15 -16
View File
@@ -843,7 +843,7 @@ style radio_vbox:
style radio_button:
properties gui.button_properties("radio_button")
foreground "gui/button/check_[prefix_]foreground.png"
foreground "gui/button/radio_[prefix_]foreground.png"
style radio_button_text:
properties gui.button_text_properties("radio_button")
@@ -904,13 +904,15 @@ screen history():
label h.who:
style "history_name"
substitute False
## Take the color of the who text from the Character, if set.
if "color" in h.who_args:
text_color h.who_args["color"]
$ what = renpy.filter_text_tags(h.what, allow=gui.history_allow_tags)
text what
text what:
substitute False
if not _history_list:
label _("The dialogue history is empty.")
@@ -1419,16 +1421,18 @@ screen quick_menu():
zorder 100
hbox:
style_prefix "quick"
if quick_menu:
xalign 0.5
yalign 1.0
hbox:
style_prefix "quick"
textbutton _("Back") action Rollback()
textbutton _("Skip") action Skip() alternate Skip(fast=True, confirm=True)
textbutton _("Auto") action Preference("auto-forward", "toggle")
textbutton _("Menu") action ShowMenu()
xalign 0.5
yalign 1.0
textbutton _("Back") action Rollback()
textbutton _("Skip") action Skip() alternate Skip(fast=True, confirm=True)
textbutton _("Auto") action Preference("auto-forward", "toggle")
textbutton _("Menu") action ShowMenu()
style window:
@@ -1437,7 +1441,7 @@ style window:
style radio_button:
variant "small"
foreground "gui/phone/button/check_[prefix_]foreground.png"
foreground "gui/phone/button/radio_[prefix_]foreground.png"
style check_button:
variant "small"
@@ -1510,8 +1514,3 @@ style slider_pref_vbox:
style slider_pref_slider:
variant "small"
xsize gui.scale(600)
+2 -2
View File
@@ -996,14 +996,14 @@ def GetArgv(optionlist=None, commandlist=None, addoldfile=1, addnewfile=1, addfo
if item[0] == '"':
while item[-1] != '"':
if not tmplist:
raise RuntimeError, "Unterminated quoted argument"
raise RuntimeError("Unterminated quoted argument")
item = item + ' ' + tmplist[0]
del tmplist[0]
item = item[1:-1]
if item[0] == "'":
while item[-1] != "'":
if not tmplist:
raise RuntimeError, "Unterminated quoted argument"
raise RuntimeError("Unterminated quoted argument")
item = item + ' ' + tmplist[0]
del tmplist[0]
item = item[1:-1]
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
+25 -16
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
@@ -23,24 +23,34 @@ label add_file:
python hide:
import os
import codecs
filename = ""
while True:
filename = interface.input(
_("FILENAME"),
_("Enter the name of the script file to create."),
allow=interface.FILENAME_LETTERS,
cancel=Jump("navigation"),
default=filename,
)
filename = filename.strip()
if not filename:
interface.error(_("The file name may not be empty."), label=None)
continue
filename = interface.input(_("FILENAME"), _("Enter the name of the script file to create."), filename="withslash", cancel=Jump("navigation"))
if "." in filename and not filename.endswith(".rpy"):
interface.error(_("The filename must have the .rpy extension."), label=None)
continue
elif "." not in filename:
filename += ".rpy"
if "." in filename and not filename.endswith(".rpy"):
interface.error(_("The filename must have the .rpy extension."), label="navigation")
elif "." not in filename:
filename += ".rpy"
path = os.path.join(project.current.gamedir, filename)
dir = os.path.dirname(path)
path = os.path.join(project.current.gamedir, filename)
dir = os.path.dirname(path)
if os.path.exists(path):
interface.error(_("The file already exists."), label=None)
continue
if os.path.exists(path):
interface.error(_("The file already exists."), label="navigation")
contents = u"\uFEFF"
contents += _("# Ren'Py automatically loads all script files ending with .rpy. To use this\n# file, define a label and jump to it from another file.\n")
contents += "\n"
break
try:
os.makedirs(dir)
@@ -54,4 +64,3 @@ label add_file:
f.write(contents.encode("utf-8"))
jump navigation_refresh
+2 -2
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
@@ -28,7 +28,7 @@ init python:
ANDROID_OK = 5
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 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=http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html}download and install the JDK{/a}, then restart the Ren'Py launcher.")
NO_JDK_TEXT = _("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=http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html}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 create a new key, or restore android.keystore.")
NO_CONFIG_TEXT = _("The current project has not been configured. Use \"Configure\" to configure it before building.")
+3 -2
View File
@@ -1,6 +1,6 @@
# This file contains strings used by RAPT, so the Ren'Py translation framework
# can find them. It's automatically generated by rapt/update_strings.py, and
# can find them. It's automatically generated by rapt/update_translations.py, and
# hence should not be changed by hand.
init python hide:
@@ -17,6 +17,7 @@ init python hide:
__("The build seems to have failed.")
__("Launching app.")
__("The build seems to have succeeded.")
__("The armeabi-v7a version works on most phones or tablets, while the x86_64 version works on the simulator and chromebooks.")
__("What is the full name of your application? This name will appear in the list of installed applications.")
__("What is the short name of your application? This name will be used in the launcher, and for application shortcuts.")
__("What is the name of the package?\n\nThis is usually of the form com.domain.program or com.domain.email.program. It may only contain ASCII letters and dots. It must contain at least one dot.")
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
+2 -2
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
@@ -317,7 +317,7 @@ def change_icons(oldexe, icofn):
alignment = pe.OPTIONAL_HEADER.SectionAlignment
# print "Alignment is", alignment
# print("Alignment is", alignment)
if len(rsrc) % alignment:
pad = alignment - (len(rsrc) % alignment)
+3 -2
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
@@ -94,7 +94,8 @@ init python:
is_default = False
if path is None:
# Path being None or "" means nothing was selected.
if not path:
path = default_path
is_default = True
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
+28 -14
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
@@ -373,7 +373,7 @@ init python in distribute:
This manages the process of building distributions.
"""
def __init__(self, project, destination=None, reporter=None, packages=None, build_update=True, open_directory=False, noarchive=False, packagedest=None, report_success=True):
def __init__(self, project, destination=None, reporter=None, packages=None, build_update=True, open_directory=False, noarchive=False, packagedest=None, report_success=True, scan=True):
"""
Distributes `project`.
@@ -441,8 +441,9 @@ init python in distribute:
# dictionaries.
data = project.data
self.reporter.info(_("Scanning project files..."))
project.update_dump(force=True, gui=False, compile=project.data['force_recompile'])
if scan:
self.reporter.info(_("Scanning project files..."))
project.update_dump(force=True, gui=False, compile=project.data['force_recompile'])
if project.dump.get("error", False):
raise Exception("Could not get build data from the project. Please ensure the project runs.")
@@ -523,6 +524,10 @@ init python in distribute:
# Build the mac app and windows exes.
self.add_mac_files()
self.add_windows_files()
self.add_main_py()
# Add the main.py.
self.add_main_py()
# Add generated/special files.
if build['renpy']:
@@ -606,12 +611,12 @@ init python in distribute:
if match(match_name, pattern):
break
else:
print >> self.log, match_name.encode("utf-8"), "doesn't match anything."
print(match_name.encode("utf-8"), "doesn't match anything.", file=self.log)
pattern = None
file_list = None
print >> self.log, match_name.encode("utf-8"), "matches", pattern, "(" + str(file_list) + ")."
print(match_name.encode("utf-8"), "matches", pattern, "(" + str(file_list) + ").", file=self.log)
if file_list is None:
return
@@ -805,6 +810,7 @@ init python in distribute:
self.add_file_list_hash("rapt")
self.add_file_list_hash("renios")
self.add_file_list_hash("web")
tmp_fn = self.temp_filename("renpy.py")
@@ -965,7 +971,7 @@ init python in distribute:
old_exe_fn = os.path.join(config.renpy_base, "renpy.exe")
old_main_fn = os.path.join(config.renpy_base, "lib/windows-i686/renpy.exe")
if os.path.exists(icon_fn):
if os.path.exists(icon_fn) and os.path.exists(old_exe_fn):
exe_fn = self.temp_filename("renpy.exe")
main_fn = self.temp_filename("main.exe")
@@ -979,8 +985,16 @@ init python in distribute:
exe_fn = old_exe_fn
main_fn = old_main_fn
self.add_file(windows, self.exe, exe_fn)
self.add_file(windows, "lib/windows-i686/" + self.exe, main_fn)
if os.path.exists(exe_fn):
self.add_file(windows, self.exe, exe_fn)
self.add_file(windows, "lib/windows-i686/" + self.exe, main_fn)
def add_main_py(self):
if self.build['renpy']:
return
self.add_file("web", "main.py", os.path.join(config.renpy_base, "renpy.py"))
def mark_executable(self):
"""
@@ -1026,7 +1040,7 @@ init python in distribute:
cmd = [ renpy.fsencode(i.format(**kwargs)) for i in command ]
# print "\"" + "\" \"".join(cmd) + "\""
# print("\"" + "\" \"".join(cmd) + "\"")
try:
import sys, os
@@ -1396,13 +1410,13 @@ init python in distribute:
def dump(self):
for k, v in sorted(self.file_lists.items()):
print
print k + ":"
print()
print(k + ":")
v.sort()
for i in v:
print " ", i.name, "xbit" if i.executable else ""
print(" ", i.name, "xbit" if i.executable else "")
class GuiReporter(object):
"""
@@ -1441,7 +1455,7 @@ init python in distribute:
what = what.replace("[", "{")
what = what.replace("]", "}")
what = what.format(**kwargs)
print what
print(what)
def progress(self, what, done, total, **kwargs):
what = what.replace("[", "{")
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
Binary file not shown.
Binary file not shown.
+2 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
@@ -249,6 +249,7 @@ screen front_page_project:
textbutton _("Android") action Jump("android")
textbutton _("iOS") action Jump("ios")
textbutton _("Web") + " " + _("(Beta)") action Jump("web")
textbutton _("Generate Translations") action Jump("translate")
textbutton _("Extract Dialogue") action Jump("extract_dialogue")
+29 -31
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
@@ -327,25 +327,6 @@ label new_gui_project:
python:
gui_new = True
project_name = interface.input(
_("PROJECT NAME"),
_("Please enter the name of your project:"),
filename=True,
cancel=Jump("front_page"))
project_name = project_name.strip()
if not project_name:
interface.error(_("The project name may not be empty."))
project_dir = os.path.join(persistent.projects_directory, project_name)
if project.manager.get(project_name) is not None:
interface.error(_("[project_name!q] already exists. Please choose a different project name."), project_name=project_name)
if os.path.exists(project_dir):
interface.error(_("[project_dir!q] already exists. Please choose a different project name."), project_dir=project_dir)
gui_replace_images = True
gui_replace_code = True
gui_update_code = True
@@ -369,20 +350,37 @@ label gui_project_size:
if gui_size == "custom":
gui_width = ""
while True:
gui_width = interface.input(
_("WIDTH"),
_("Please enter the width of your game, in pixels."),
cancel=Jump("front_page"),
allow=interface.DIGITS_LETTERS,
)
gui_width = interface.input(_("WIDTH"), _("Please enter the width of your game, in pixels."), cancel=Jump("front_page"))
try:
gui_width = int(gui_width)
except:
interface.error(_("The width must be a number."), label=None)
continue
break
try:
gui_width = int(gui_width)
except:
interface.error(_("The width must be a number."))
gui_height = ""
while True:
gui_height = interface.input(
_("HEIGHT"),
_("Please enter the height of your game, in pixels."),
cancel=Jump("front_page"),
allow=interface.DIGITS_LETTERS,
)
gui_height = interface.input(_("HEIGHT"), _("Please enter the height of your game, in pixels."), cancel=Jump("front_page"))
try:
gui_height = int(gui_height)
except:
interface.error(_("The height must be a number."))
try:
gui_height = int(gui_height)
except:
interface.error(_("The height must be a number."), label=None)
continue
break
gui_size = (gui_width, gui_height)
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
+5 -12
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
@@ -25,6 +25,7 @@ import os
from renpy.store import config
import renpy.display
class ImageGenerator(object):
def __init__(self, parameters):
@@ -199,7 +200,6 @@ class ImageGenerator(object):
self.generate_image("textbox", X, Y, self.boring_color.opacity(.8))
YSIZE = 240
YBORDER = 5
@@ -237,7 +237,6 @@ class ImageGenerator(object):
(YSIZE, 1.0),
]
self.generate_image("nvl", X, Y, self.boring_color.opacity(.8))
X = [
@@ -252,8 +251,6 @@ class ImageGenerator(object):
self.generate_image("phone/nvl", X, Y, self.boring_color.opacity(.8))
def generate_choice_button(self):
XSIZE = 790
XINSIDE = 100
@@ -277,6 +274,8 @@ class ImageGenerator(object):
self.generate_image("button/choice_idle_background", X, Y, self.boring_color.opacity(.8))
self.generate_image("button/choice_hover_background", X, Y, self.accent_color.opacity(.95))
self.generate_image("phone/button/choice_idle_background", X, Y, self.boring_color.opacity(.8))
self.generate_image("phone/button/choice_hover_background", X, Y, self.accent_color.opacity(.95))
def generate_overlay(self):
@@ -288,7 +287,6 @@ class ImageGenerator(object):
line_width = self.scale_int(3)
if self.p.light:
opacity = 0.9
else:
@@ -332,7 +330,6 @@ class ImageGenerator(object):
s.subsurface((border, border, width - 2 * border, height - 2 * border)).fill(self.boring_color)
self.save(s, "frame")
def generate_quick_buttons(self):
width = self.scale_int(100)
height = self.scale_int(30)
@@ -379,7 +376,6 @@ class ImageGenerator(object):
self.generate_image("notify", X, Y, self.boring_color.opacity(.8))
def generate_icon(self):
icon_fn = os.path.join(config.renpy_base, "launcher", "game", "gui7", "icon.png")
@@ -406,7 +402,6 @@ class ImageGenerator(object):
self.save(surf, "window_icon", overwrite=False)
def generate_menus(self):
s = self.make_surface(self.width, self.height)
s.fill(self.menu_color)
@@ -414,7 +409,6 @@ class ImageGenerator(object):
self.save(s, "main_menu", overwrite=False)
self.save(s, "game_menu", overwrite=False)
def generate_all(self):
self.generate_textbox()
self.generate_choice_button()
@@ -427,6 +421,7 @@ class ImageGenerator(object):
self.generate_menus()
self.generate_icon()
if __name__ == "__main__":
import argparse
@@ -439,5 +434,3 @@ if __name__ == "__main__":
args = ap.parse_args()
ImageGenerator(args.prefix, args.width, args.height).generate_all()
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
+34 -10
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
@@ -251,7 +251,13 @@ screen launcher_input:
add SPACER
input style "l_default" value ScreenVariableInputValue("value", returnable=True) size 24 xalign 0.5 color INPUT_COLOR
input style "l_default":
value ScreenVariableInputValue("value", returnable=True)
size 24
xalign 0.5
color INPUT_COLOR
allow allow
copypaste True
if filename:
add SPACER
@@ -380,11 +386,24 @@ init python in interface:
f = open("log.txt", "w")
"""
store._ignore_action = Jump(label)
yield
store._ignore_action = Jump("front_page")
try:
yield
except Exception as e:
renpy.renpy.error.report_exception(e, editor=False)
def input(title, message, filename=False, sanitize=True, cancel=None, default=""):
error(_("While [what!q], an error occured:"),
_("[exception!q]"),
what=what,
label=label,
exception=traceback.format_exception_only(type(e), e)[-1][:-1])
import string
DIGITS_LETTERS = string.digits
PROJECT_LETTERS = DIGITS_LETTERS + string.ascii_letters + " _"
FILENAME_LETTERS = PROJECT_LETTERS + "\\/"
TRANSLATE_LETTERS = string.ascii_letters + "_"
def input(title, message, filename=False, sanitize=True, cancel=None, allow=None, default=""):
"""
Requests typewritten input from the user.
"""
@@ -393,7 +412,15 @@ init python in interface:
while True:
rv = renpy.call_screen("launcher_input", title=title, message=message, filename=filename, cancel=cancel, default=rv)
rv = renpy.call_screen(
"launcher_input",
title=title,
message=message,
filename=filename or (allow in [PROJECT_LETTERS, FILENAME_LETTERS]),
allow=allow,
cancel=cancel,
default=rv
)
if sanitize:
if ("[" in rv) or ("{" in rv):
@@ -507,6 +534,3 @@ init python in interface:
"""
return common(_("CHOICE"), store.QUESTION_COLOR, message, choices=choices, selected=selected, **kwargs)
+16 -2
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
@@ -58,6 +58,7 @@ init python:
if RENIOS_PATH:
import renios.create
import renios.image
def IOSState():
if not RENIOS_PATH:
@@ -119,6 +120,10 @@ init python:
return os.path.join(persistent.xcode_projects_directory, xcode_name(p.name))
def ios_create(p=None, gui=True):
project.current.update_dump(force=True)
name = project.current.dump.get("name", None)
version = project.current.dump.get("version", None)
dest = xcode_project(p)
@@ -135,7 +140,7 @@ init python:
os.rename(dest, backup)
iface = MobileInterface("ios")
renios.create.create_project(iface, dest)
renios.create.create_project(iface, dest, name, version)
ios_populate(p, gui=gui)
@@ -187,6 +192,15 @@ init python:
os.unlink(py_fn)
ios_image(p, "ios-icon.png", "Media.xcassets/AppIcon.appiconset", True)
ios_image(p, "ios-launchimage.png", "Media.xcassets/LaunchImage.launchimage", False)
def ios_image(p, source, destination, scale):
source = os.path.join(p.path, source)
destination = os.path.join(xcode_project(p), destination)
renios.image.generate(source, destination, scale)
def launch_xcode():
dist = xcode_project(None)
+49 -15
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
@@ -23,23 +23,57 @@ init python:
def find_itch_butler():
import os
if renpy.windows:
rv = os.path.join(os.environ.get("APPDATA", ""), "Roaming", "itch", "bin", "butler.exe")
if not os.path.exists(rv):
rv = os.path.join(os.environ.get("APPDATA", ""), "itch", "bin", "butler.exe")
platform = "windows-amd64"
exe = "butler.exe"
elif renpy.macintosh:
rv = os.path.join(os.environ.get("HOME", ""), "Library", "Application Support", "itch", "bin", "butler")
plaform = "darwin-amd64"
exe = "butler"
else:
rv = os.path.join(os.environ.get("HOME", ""), ".config", "itch", "bin", "butler")
platform = "linux-amd64"
exe = "butler"
if not os.path.exists(rv):
return None
dn = os.path.join(config.renpy_base, "tmp", "butler-" + platform)
zip = os.path.join(dn, "butler.zip")
exe = os.path.join(dn, exe)
if os.path.exists(exe):
return exe
interface.processing(_("Downloading the itch.io butler."))
try:
os.makedirs(dn)
except:
pass
import urllib2
import ssl
with interface.error_handling("Downloading the itch.io butler."):
context = ssl._create_unverified_context()
response = urllib2.urlopen("https://broth.itch.ovh/butler/{}/LATEST/archive/default".format(platform), context=context)
with open(zip, "wb") as f:
while True:
data = response.read(1024 * 1024)
if not data:
break
f.write(data)
import zipfile
with zipfile.ZipFile(zip) as zf:
zf.extractall(dn)
try:
os.chmod(exe, 0o755)
except:
pass
return exe
return rv
label itch:
@@ -48,6 +82,8 @@ label itch:
python hide:
butler = find_itch_butler()
build = project.current.dump["build"]
destination = build["destination"]
@@ -100,8 +136,6 @@ label itch:
label="build_distributions"
)
butler = find_itch_butler()
if not butler:
interface.error(
_("The butler program was not found."),
+3 -2
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
@@ -84,7 +84,8 @@ init -1 python:
self.info_msg = ""
with open(self.filename, "w"):
with open(self.filename, "w") as f:
f.write(renpy.version() + "\n")
pass
def log(self, msg):
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
+40 -35
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
@@ -62,28 +62,52 @@ label new_project:
if persistent.projects_directory is None:
$ interface.error(_("The projects directory could not be set. Giving up."))
if not persistent.legacy:
python:
if persistent.legacy:
python:
check_language_support()
gui_kind = interface.choice(
_("Which interface would you like to use? The new GUI has a modern look, supports wide screens and mobile devices, and is easier to customize. Legacy themes might be necessary to work with older example code.\n\n[language_support!t]\n\nIf in doubt, choose the new GUI, then click Continue on the bottom-right."),
[ ( 'new_gui_project', _("New GUI Interface") ), ( 'new_theme_project', _("Legacy Theme Interface")) ],
"new_gui_project",
cancel=Jump("front_page"),
)
else:
new_project_language = (_preferences.language or "english").title()
gui_kind = "new_gui_project"
# When translating this, feel free to replace [new_project_language] with the translation of your language.
$ interface.info(_("You will be creating an [new_project_language] language project. Change the launcher language in preferences to create a project in another language."))
jump new_gui_project
# When translating this, feel free to replace [new_project_language] with the translation of your language.
interface.info(_("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."))
python:
check_language_support()
gui_kind = interface.choice(
_("Which interface would you like to use? The new GUI has a modern look, supports wide screens and mobile devices, and is easier to customize. Legacy themes might be necessary to work with older example code.\n\n[language_support!t]\n\nIf in doubt, choose the new GUI, then click Continue on the bottom-right."),
[ ( 'new_gui_project', _("New GUI Interface") ), ( 'new_theme_project', _("Legacy Theme Interface")) ],
"new_gui_project",
cancel=Jump("front_page"),
project_name = ""
while True:
project_name = interface.input(
_("PROJECT NAME"),
_("Please enter the name of your project:"),
allow=interface.PROJECT_LETTERS,
cancel=Jump("front_page"),
default=project_name,
)
renpy.jump(gui_kind)
project_name = project_name.strip()
if not project_name:
interface.error(_("The project name may not be empty."), label=None)
continue
project_dir = os.path.join(persistent.projects_directory, project_name)
if project.manager.get(project_name) is not None:
interface.error(_("[project_name!q] already exists. Please choose a different project name."), project_name=project_name, label=None)
continue
if os.path.exists(project_dir):
interface.error(_("[project_dir!q] already exists. Please choose a different project name."), project_dir=project_dir, label=None)
continue
break
jump expression gui_kind
screen select_template:
@@ -125,25 +149,6 @@ screen select_template:
label new_theme_project:
python hide:
project_name = interface.input(
_("PROJECT NAME"),
_("Please enter the name of your project:"),
filename=True,
cancel=Jump("front_page"))
project_name = project_name.strip()
if not project_name:
interface.error(_("The project name may not be empty."))
project_dir = os.path.join(persistent.projects_directory, project_name)
if project.manager.get(project_name) is not None:
interface.error(_("[project_name!q] already exists. Please choose a different project name."), project_name=project_name)
if os.path.exists(project_dir):
interface.error(_("[project_dir!q] already exists. Please choose a different project name."), project_dir=project_dir)
if len(project.manager.templates) == 1:
template = project.manager.templates[0]
else:
+2 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
@@ -367,6 +367,7 @@ init python:
build.classify_renpy("module/pysdlsound/", "source")
build.classify_renpy("module/pysdlsound/*.py", "source")
build.classify_renpy("module/pysdlsound/*.pyx", "source")
build.classify_renpy("module/fribidi-src/**", "source")
# all-platforms binary.
build.classify_renpy("lib/**/_renpysteam*", None)
+3 -4
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
@@ -267,7 +267,7 @@ init python in distribute:
def mkdir(self, path):
if not os.path.isdir(path):
os.mkdir(path, 0755)
os.makedirs(path, 0755)
def __init__(self, path):
self.path = path
@@ -278,8 +278,7 @@ init python in distribute:
# If this is not a directory, ensure all parent directories
# have been created
if not os.path.isdir(os.path.dirname(fn)):
os.makedirs(os.path.dirname(fn), 0755)
self.mkdir(os.path.dirname(fn))
shutil.copy2(path, fn)
if xbit:
+25 -25
View File
@@ -576,7 +576,7 @@ class UnicodeStringWrapperPostProcessor:
try:
data = self.pe.get_data(self.rva_ptr, 2)
except PEFormatError, e:
except PEFormatError as e:
return False
if len(data)<2:
@@ -821,7 +821,7 @@ class Structure:
if key == 'TimeDateStamp' or key == 'dwTimeStamp':
try:
val_str += ' [%s UTC]' % time.asctime(time.gmtime(val))
except exceptions.ValueError, e:
except exceptions.ValueError as e:
val_str += ' [INVALID TIME]'
else:
val_str = ''.join(filter(lambda c:c != '\0', str(val)))
@@ -890,7 +890,7 @@ class SectionStructure(Structure):
return self.VirtualAddress <= rva < self.VirtualAddress + size
def contains(self, rva):
#print "DEPRECATION WARNING: you should use contains_rva() instead of contains()"
#print("DEPRECATION WARNING: you should use contains_rva() instead of contains()")
return self.contains_rva(rva)
@@ -1373,7 +1373,7 @@ class PE:
try:
structure.__unpack__(data)
except PEFormatError, err:
except PEFormatError as err:
self.__warnings.append(
'Corrupt header "%s" at file offset %d. Exception: %s' % (
format[0], file_offset, str(err)) )
@@ -2115,7 +2115,7 @@ class PE:
for idx in xrange(size/dbg_size):
try:
data = self.get_data(rva+dbg_size*idx, dbg_size)
except PEFormatError, e:
except PEFormatError as e:
self.__warnings.append(
'Invalid debug information. Can\'t read ' +
'data at RVA: 0x%x' % rva)
@@ -2169,7 +2169,7 @@ class PE:
# If the RVA is invalid all would blow up. Some EXEs seem to be
# specially nasty and have an invalid RVA.
data = self.get_data(rva, Structure(self.__IMAGE_RESOURCE_DIRECTORY_format__).sizeof() )
except PEFormatError, e:
except PEFormatError as e:
self.__warnings.append(
'Invalid resources directory. Can\'t read ' +
'directory data at RVA: 0x%x' % rva)
@@ -2229,7 +2229,7 @@ class PE:
entry_name = UnicodeStringWrapperPostProcessor(self, ustr_offset)
strings_to_postprocess.append(entry_name)
except PEFormatError, excp:
except PEFormatError as excp:
self.__warnings.append(
'Error parsing the resources directory, ' +
'attempting to read entry name. ' +
@@ -2330,7 +2330,7 @@ class PE:
# If the RVA is invalid all would blow up. Some EXEs seem to be
# specially nasty and have an invalid RVA.
data = self.get_data(rva, Structure(self.__IMAGE_RESOURCE_DATA_ENTRY_format__).sizeof() )
except PEFormatError, excp:
except PEFormatError as excp:
self.__warnings.append(
'Error parsing a resource directory data entry, ' +
'the RVA is invalid: 0x%x' % ( rva ) )
@@ -2409,7 +2409,7 @@ class PE:
ustr_offset = version_struct.OffsetToData + versioninfo_struct.sizeof()
try:
versioninfo_string = self.get_string_u_at_rva( ustr_offset )
except PEFormatError, excp:
except PEFormatError as excp:
self.__warnings.append(
'Error parsing the version information, ' +
'attempting to read VS_VERSION_INFO string. Can\'t ' +
@@ -2489,7 +2489,7 @@ class PE:
stringfileinfo_offset + versioninfo_struct.sizeof() )
try:
stringfileinfo_string = self.get_string_u_at_rva( ustr_offset )
except PEFormatError, excp:
except PEFormatError as excp:
self.__warnings.append(
'Error parsing the version information, ' +
'attempting to read StringFileInfo string. Can\'t ' +
@@ -2535,7 +2535,7 @@ class PE:
stringtable_struct.sizeof() )
try:
stringtable_string = self.get_string_u_at_rva( ustr_offset )
except PEFormatError, excp:
except PEFormatError as excp:
self.__warnings.append(
'Error parsing the version information, ' +
'attempting to read StringTable string. Can\'t ' +
@@ -2570,7 +2570,7 @@ class PE:
try:
key = self.get_string_u_at_rva( ustr_offset )
key_offset = self.get_offset_from_rva( ustr_offset )
except PEFormatError, excp:
except PEFormatError as excp:
self.__warnings.append(
'Error parsing the version information, ' +
'attempting to read StringTable Key string. Can\'t ' +
@@ -2586,7 +2586,7 @@ class PE:
value = self.get_string_u_at_rva( ustr_offset,
max_length = string_struct.ValueLength )
value_offset = self.get_offset_from_rva( ustr_offset )
except PEFormatError, excp:
except PEFormatError as excp:
self.__warnings.append(
'Error parsing the version information, ' +
'attempting to read StringTable Value string. ' +
@@ -2661,7 +2661,7 @@ class PE:
var_struct.sizeof() )
try:
var_string = self.get_string_u_at_rva( ustr_offset )
except PEFormatError, excp:
except PEFormatError as excp:
self.__warnings.append(
'Error parsing the version information, ' +
'attempting to read VarFileInfo Var string. ' +
@@ -2830,7 +2830,7 @@ class PE:
# If the RVA is invalid all would blow up. Some PEs seem to be
# specially nasty and have an invalid RVA.
data = self.get_data( rva, Structure(self.__IMAGE_DELAY_IMPORT_DESCRIPTOR_format__).sizeof() )
except PEFormatError, e:
except PEFormatError as e:
self.__warnings.append(
'Error parsing the Delay import directory at RVA: 0x%x' % ( rva ) )
break
@@ -2852,7 +2852,7 @@ class PE:
import_desc.pINT,
import_desc.pIAT,
None)
except PEFormatError, e:
except PEFormatError as e:
self.__warnings.append(
'Error parsing the Delay import directory. ' +
'Invalid import data at RVA: 0x%x' % ( rva ) )
@@ -2883,7 +2883,7 @@ class PE:
# If the RVA is invalid all would blow up. Some EXEs seem to be
# specially nasty and have an invalid RVA.
data = self.get_data(rva, Structure(self.__IMAGE_IMPORT_DESCRIPTOR_format__).sizeof() )
except PEFormatError, e:
except PEFormatError as e:
self.__warnings.append(
'Error parsing the Import directory at RVA: 0x%x' % ( rva ) )
break
@@ -2903,7 +2903,7 @@ class PE:
import_desc.OriginalFirstThunk,
import_desc.FirstThunk,
import_desc.ForwarderChain)
except PEFormatError, excp:
except PEFormatError as excp:
self.__warnings.append(
'Error parsing the Import directory. ' +
'Invalid Import data at RVA: 0x%x' % ( rva ) )
@@ -2936,7 +2936,7 @@ class PE:
imported_symbols = []
imports_section = self.get_section_by_rva(first_thunk)
if not imports_section:
raise PEFormatError, 'Invalid/corrupt imports.'
raise PEFormatError('Invalid/corrupt imports.')
# Import Lookup Table. Contains ordinals or pointers to strings.
@@ -2991,7 +2991,7 @@ class PE:
# Get the Hint
imp_hint = self.get_word_from_data(data, 0)
imp_name = self.get_string_at_rva(table[idx].AddressOfData+2)
except PEFormatError, e:
except PEFormatError as e:
pass
imp_address = first_thunk+self.OPTIONAL_HEADER.ImageBase+idx*4
@@ -3032,7 +3032,7 @@ class PE:
try:
data = self.get_data( rva, Structure(format).sizeof() )
except PEFormatError, e:
except PEFormatError as e:
self.__warnings.append(
'Error parsing the import table. ' +
'Invalid data at RVA: 0x%x' % ( rva ) )
@@ -3137,7 +3137,7 @@ class PE:
end = None
return self.header[rva:end]
raise PEFormatError, 'data at RVA can\'t be fetched. Corrupt header?'
raise PEFormatError('data at RVA can\'t be fetched. Corrupt header?')
return s.get_data(rva, length)
@@ -3160,7 +3160,7 @@ class PE:
s = self.get_section_by_rva(rva)
if not s:
raise PEFormatError, 'data at RVA can\'t be fetched. Corrupt header?'
raise PEFormatError('data at RVA can\'t be fetched. Corrupt header?')
return s.get_offset_from_rva(rva)
@@ -3207,7 +3207,7 @@ class PE:
# If the RVA is invalid all would blow up. Some EXEs seem to be
# specially nasty and have an invalid RVA.
self.get_data(rva, 2)
except PEFormatError, e:
except PEFormatError as e:
return None
#length = struct.unpack('<H', data)[0]
@@ -3744,7 +3744,7 @@ class PE:
offset = self.get_physical_by_rva(rva)
if not offset:
raise False
return False
return self.set_bytes_at_offset(offset, data)
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
+3 -3
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
@@ -109,10 +109,10 @@ init 1 python:
SEPARATOR = Frame(PATTERN, 0, 0, tile=True, ymaximum=5, yalign=1.0)
SEPARATOR2 = Frame(PATTERN, 0, 0, tile=True, ymaximum=10, yalign=1.0)
SPACER_HEIGHT = 12
SPACER_HEIGHT = 8
SPACER = Null(height=SPACER_HEIGHT)
HALF_SPACER_HEIGHT = 6
HALF_SPACER_HEIGHT = 4
HALF_SPACER = Null(height=HALF_SPACER_HEIGHT)
# DIVIDING THE SCREEN
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
+5 -1
View File
@@ -1,6 +1,6 @@
#!/usr/bin/env python
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
@@ -47,4 +47,8 @@ if __name__ == "__main__":
root.withdraw()
result = askdirectory(initialdir=sys.argv[1], parent=root, title="Select Ren'Py Projects Directory")
if result == ():
result = ""
sys.stdout.write(result.encode("utf8"))
+2 -2
View File
@@ -299,7 +299,7 @@ translate french strings:
# screens.rpy:744
old "Rollback Side"
new "Sens dannulation"
new "Rembobinage côté"
# screens.rpy:745
old "Disable"
@@ -495,7 +495,7 @@ translate french strings:
# screens.rpy:1062
old "Molette vers le haut\nBouton de retour en arrière"
new "Mouse Wheel Up\nClick Rollback Side"
new "Mouse Wheel Up\nClic du côté rembobinage"
# screens.rpy:1066
old "Mouse Wheel Down"
+29 -17
View File
@@ -7,7 +7,7 @@ translate german strings:
# about.rpy:43
old "View license"
new "Lizenz ansehen"
new "Lizenz anzeigen"
# add_file.rpy:28
old "FILENAME"
@@ -15,7 +15,7 @@ translate german strings:
# add_file.rpy:28
old "Enter the name of the script file to create."
new "Geben Sie den Namen der Script-Datei ein, um sie zu erstellen."
new "Geben Sie den Namen der zu erstellenden Script-Datei ein."
# add_file.rpy:31
old "The filename must have the .rpy extension."
@@ -235,7 +235,7 @@ translate german strings:
# distribute.rpy:443
old "Scanning project files..."
new "Projektdateien werden geprüft"
new "Projektdateien werden geprüft..."
# distribute.rpy:459
old "Building distributions failed:\n\nThe build.directory_name variable may not include the space, colon, or semicolon characters."
@@ -247,7 +247,7 @@ translate german strings:
# distribute.rpy:516
old "Scanning Ren'Py files..."
new "RenPy-Dateien werden geprüft"
new "RenPy-Dateien werden geprüft..."
# distribute.rpy:569
old "All packages have been built.\n\nDue to the presence of permission information, unpacking and repacking the Linux and Macintosh distributions on Windows is not supported."
@@ -255,7 +255,7 @@ translate german strings:
# distribute.rpy:752
old "Archiving files..."
new "Dateien werden archiviert"
new "Dateien werden archiviert..."
# distribute.rpy:1050
old "Unpacking the Macintosh application for signing..."
@@ -335,7 +335,7 @@ translate german strings:
# distribute_gui.rpy:242
old "Force Recompile"
new "Force Recompile"
new "Neu kompilieren"
# distribute_gui.rpy:246
old "Build"
@@ -409,6 +409,10 @@ translate german strings:
old "Open [text] directory."
new "Open [text] directory."
# front_page.rpy:91
old "PROJECTS:"
new "PROJEKTE:"
# front_page.rpy:93
old "refresh"
new "Aktualisieren"
@@ -469,6 +473,10 @@ translate german strings:
old "All script files"
new "Alle Dateien"
# front_page.rpy:221
old "Actions"
new "Aktionen"
# front_page.rpy:223
old "Navigate Script"
new "Skript navigieren"
@@ -479,7 +487,7 @@ translate german strings:
# front_page.rpy:237
old "Change/Update GUI"
new "Change/Update GUI"
new "GUI anpassen/aktualisieren"
# front_page.rpy:239
old "Change Theme"
@@ -487,7 +495,7 @@ translate german strings:
# front_page.rpy:242
old "Delete Persistent"
new "Persistent-Dateien löschen"
new "Persistenz-Dateien löschen"
# front_page.rpy:251
old "Build Distributions"
@@ -511,11 +519,11 @@ translate german strings:
# front_page.rpy:272
old "Checking script for potential problems..."
new "Überprüft Script auf potentielle Probleme"
new "Überprüfe Script auf potentielle Probleme..."
# front_page.rpy:287
old "Deleting persistent data..."
new "Löscht Persistent-Dateien"
new "Lösche Persistent-Dateien..."
# front_page.rpy:295
old "Recompiling all rpy files into rpyc files..."
@@ -879,7 +887,7 @@ translate german strings:
# preferences.rpy:94
old "Projects directory: [text]"
new "Projects directory: [text]"
new "Projektverzeichnis: [text]"
# preferences.rpy:96
old "Not Set"
@@ -891,7 +899,7 @@ translate german strings:
# preferences.rpy:117
old "Text editor: [text]"
new "Text editor: [text]"
new "Texteditor: [text]"
# preferences.rpy:133
old "Update Channel:"
@@ -923,11 +931,15 @@ translate german strings:
# preferences.rpy:174
old "Show edit file section"
new "Show edit file section"
new "'Dateien bearbeiten' anzeigen"
# preferences.rpy:175
old "Large fonts"
new "Large fonts"
new "Große Schriftarten"
# preferences.rpy:182
old "Sponsor message"
new "Sponsoren-Hinweis"
# preferences.rpy:178
old "Console output"
@@ -967,7 +979,7 @@ translate german strings:
# project.rpy:242
old "Ren'Py is scanning the project..."
new "RenPy scannt das Projekt"
new "RenPy scannt das Projekt..."
# project.rpy:568
old "Launching"
@@ -1031,7 +1043,7 @@ translate german strings:
# translations.rpy:224
old "Ren'Py is generating translations...."
new "RenPy erstellt Übersetzungen"
new "RenPy erstellt Übersetzungen..."
# translations.rpy:235
old "Ren'Py has finished generating [language] translations."
@@ -1087,7 +1099,7 @@ translate german strings:
# translations.rpy:374
old "Ren'Py is extracting dialogue...."
new "RenPy extrahiert Dialoge"
new "RenPy extrahiert Dialoge..."
# translations.rpy:378
old "Ren'Py has finished extracting dialogue. The extracted dialogue can be found in dialogue.[persistent.dialogue_format] in the base directory."
+1 -2
View File
@@ -1253,7 +1253,7 @@ translate indonesian strings:
new "Navigasi: [project.current.display_name!q]"
# new_project.rpy:71
old "You will be creating an [new_project_language] language project. Change the launcher language in preferences to create a project in another language."
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."
new "Kamu akan membuat bahasa proyek : [new_project_language]. Ganti bahasa launcher di pengaturan untuk membuat proyek dalam bahasa lain."
# preferences.rpy:187
@@ -1271,4 +1271,3 @@ translate indonesian strings:
# translations.rpy:343
old "Extract Dialogue: [project.current.display_name!q]"
new "Extrak Dialog: [project.current.display_name!q]"
+1 -2
View File
@@ -1221,7 +1221,7 @@ translate japanese strings:
new "ナビゲーション: [project.current.display_name!q]"
# new_project.rpy:71
old "You will be creating an [new_project_language] language project. Change the launcher language in preferences to create a project in another language."
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."
new "日本語のプロジェクトを作成します。別の言語のプロジェクトを作成するには、設定でランチャーの言語を変更してください。"
# preferences.rpy:187
@@ -1321,4 +1321,3 @@ translate japanese strings:
# front_page.rpy:221
old "Actions"
new "アクション"
+396 -22
View File
@@ -1,5 +1,4 @@

translate korean strings:
translate korean strings:
# 00action_file.rpy:26
old "{#weekday}Monday"
@@ -27,7 +26,7 @@ translate korean strings:
# 00action_file.rpy:26
old "{#weekday}Sunday"
new "{#weekday}일일"
new "{#weekday}일일"
# 00action_file.rpy:37
old "{#weekday_short}Mon"
@@ -153,74 +152,394 @@ translate korean strings:
old "{#month_short}Dec"
new "{#month_short}12월"
# 00action_file.rpy:235
# 00action_file.rpy:240
old "%b %d, %H:%M"
new "%b %d %H:%M"
# 00action_file.rpy:820
# 00action_file.rpy:353
old "Save slot %s: [text]"
new "%s 슬롯에 저장: [text]"
# 00action_file.rpy:434
old "Load slot %s: [text]"
new "%s 슬롯 불러오기: [text]"
# 00action_file.rpy:487
old "Delete slot [text]"
new "[text] 슬롯 삭제"
# 00action_file.rpy:569
old "File page auto"
new "자동 파일 페이지"
# 00action_file.rpy:571
old "File page quick"
new "빠른 파일 페이지"
# 00action_file.rpy:573
old "File page [text]"
new "[text] 파일 페이지"
# 00action_file.rpy:763
old "Next file page."
new "다음 파일 페이지."
# 00action_file.rpy:827
old "Previous file page."
new "이전 파일 페이지."
# 00action_file.rpy:889
old "Quick save complete."
new "퀵세이브 완료."
# 00gui.rpy:227
# 00action_file.rpy:907
old "Quick save."
new "빠른 저장."
# 00action_file.rpy:926
old "Quick load."
new "빠른 불러오기."
# 00action_other.rpy:355
old "Language [text]"
new "[text] 언어"
# 00director.rpy:708
old "The interactive director is not enabled here."
new "인터렉티브 디렉터는 여기에서 사용할 수 없습니다."
# 00director.rpy:1481
old "⬆"
new "⬆"
# 00director.rpy:1487
old "⬇"
new "⬇"
# 00director.rpy:1551
old "Done"
new "완료"
# 00director.rpy:1561
old "(statement)"
new "(명령문)"
# 00director.rpy:1562
old "(tag)"
new "(태그)"
# 00director.rpy:1563
old "(attributes)"
new "(속성)"
# 00director.rpy:1564
old "(transform)"
new "(변환)"
# 00director.rpy:1589
old "(transition)"
new "(전환)"
# 00director.rpy:1601
old "(channel)"
new "(채널)"
# 00director.rpy:1602
old "(filename)"
new "(파일이름)"
# 00director.rpy:1631
old "Change"
new "교체"
# 00director.rpy:1633
old "Add"
new "추가"
# 00director.rpy:1636
old "Cancel"
new "취소"
# 00director.rpy:1639
old "Remove"
new "제거"
# 00director.rpy:1674
old "Statement:"
new "명령문:"
# 00director.rpy:1695
old "Tag:"
new "태그:"
# 00director.rpy:1711
old "Attributes:"
new "속성:"
# 00director.rpy:1729
old "Transforms:"
new "변환:"
# 00director.rpy:1748
old "Behind:"
new "뒤에:"
# 00director.rpy:1767
old "Transition:"
new "전환:"
# 00director.rpy:1785
old "Channel:"
new "채널:"
# 00director.rpy:1803
old "Audio Filename:"
new "오디오 파일이름:"
# 00gui.rpy:370
old "Are you sure?"
new "정말입니까?"
# 00gui.rpy:228
# 00gui.rpy:371
old "Are you sure you want to delete this save?"
new "이 세이브 파일을 지우겠습니까?"
# 00gui.rpy:229
# 00gui.rpy:372
old "Are you sure you want to overwrite your save?"
new "이 세이브 파일에 덮어쓰겠습니까?"
# 00gui.rpy:230
# 00gui.rpy:373
old "Loading will lose unsaved progress.\nAre you sure you want to do this?"
new "불러오기를 하면 저장하지 않은 데이터를 잃게 됩니다.\n파일을 불러올까요?"
# 00gui.rpy:231
# 00gui.rpy:374
old "Are you sure you want to quit?"
new "종료하겠습니까?"
# 00gui.rpy:232
# 00gui.rpy:375
old "Are you sure you want to return to the main menu?\nThis will lose unsaved progress."
new "메인 메뉴로 돌아가겠습니까?\n저장하지 않은 데이터는 잃게 됩니다."
# 00gui.rpy:233
# 00gui.rpy:376
old "Are you sure you want to end the replay?"
new "리플레이를 종료하겠습니까?"
# 00gui.rpy:234
# 00gui.rpy:377
old "Are you sure you want to begin skipping?"
new "스킵을 시작하겠습니까?"
# 00gui.rpy:235
# 00gui.rpy:378
old "Are you sure you want to skip to the next choice?"
new "다음 선택지가 나타날 때까지 스킵하겠습니까?"
# 00gui.rpy:236
# 00gui.rpy:379
old "Are you sure you want to skip unseen dialogue to the next choice?"
new "다음 선택지가 나타날 때까지 본 적이 없는 대사까지 모두 스킵하겠습니까?"
# 00keymap.rpy:250
# 00keymap.rpy:258
old "Failed to save screenshot as %s."
new "%s 에 스크린샷 저장을 실패했습니다."
# 00keymap.rpy:270
old "Saved screenshot as %s."
new "스크린샷을 %s 에 저장했습니다."
# 00library.rpy:142
# 00library.rpy:146
old "Self-voicing disabled."
new "대사 읽기를 끕니다."
# 00library.rpy:143
# 00library.rpy:147
old "Clipboard voicing enabled. "
new "대사 복사하기를 켭니다. "
# 00library.rpy:144
# 00library.rpy:148
old "Self-voicing enabled. "
new "대사 읽기를 켭니다. "
# 00library.rpy:179
# 00library.rpy:150
old "bar"
new "바"
# 00library.rpy:151
old "selected"
new "선택된"
# 00library.rpy:152
old "viewport"
new "뷰포트"
# 00library.rpy:153
old "horizontal scroll"
new "수평 스크롤"
# 00library.rpy:154
old "vertical scroll"
new "수직 스크롤"
# 00library.rpy:155
old "activate"
new "활성화"
# 00library.rpy:156
old "deactivate"
new "비활성화"
# 00library.rpy:157
old "increase"
new "증가"
# 00library.rpy:158
old "decrease"
new "감소"
# 00library.rpy:193
old "Skip Mode"
new "스킵 모드"
# 00preferences.rpy:207
old "display"
new "화면 모드"
# 00preferences.rpy:219
old "transitions"
new "화면 전환"
# 00preferences.rpy:228
old "skip transitions"
new "화면 전환 스킵"
# 00preferences.rpy:230
old "video sprites"
new "비디오 스프라이트"
# 00preferences.rpy:239
old "show empty window"
new "빈 창 보이기"
# 00preferences.rpy:248
old "text speed"
new "텍스트 속도"
# 00preferences.rpy:256
old "joystick"
new "조이스틱"
# 00preferences.rpy:256
old "joystick..."
new "조이스틱..."
# 00preferences.rpy:263
old "skip"
new "스킵"
# 00preferences.rpy:266
old "skip unseen [text]"
new "읽지 않은 [text] 스킵"
# 00preferences.rpy:271
old "skip unseen text"
new "읽지 않은 텍스트까지 모두 스킵"
# 00preferences.rpy:273
old "begin skipping"
new "스킵 시작"
# 00preferences.rpy:277
old "after choices"
new "선택지 이후에도 스킵"
# 00preferences.rpy:284
old "skip after choices"
new "선택후 스킵"
# 00preferences.rpy:286
old "auto-forward time"
new "자동 진행 시간"
# 00preferences.rpy:300
old "auto-forward"
new "자동 진행"
# 00preferences.rpy:307
old "Auto forward"
new "자동 진행"
# 00preferences.rpy:310
old "auto-forward after click"
new "클릭후 자동 진행"
# 00preferences.rpy:319
old "automatic move"
new "자동 이동"
# 00preferences.rpy:328
old "wait for voice"
new "음성 기다리기"
# 00preferences.rpy:337
old "voice sustain"
new "음성 지속"
# 00preferences.rpy:346
old "self voicing"
new "대사 읽기"
# 00preferences.rpy:355
old "clipboard voicing"
new "대사 복사하기"
# 00preferences.rpy:364
old "debug voicing"
new "음성 디버그"
# 00preferences.rpy:373
old "emphasize audio"
new "오디오 강조"
# 00preferences.rpy:382
old "rollback side"
new "롤백 클릭 옵션"
# 00preferences.rpy:392
old "gl powersave"
new "GL 절전"
# 00preferences.rpy:398
old "gl framerate"
new "GL 프레임 속도"
# 00preferences.rpy:401
old "gl tearing"
new "GL 티어링"
# 00preferences.rpy:413
old "music volume"
new "배경음악 크기"
# 00preferences.rpy:414
old "sound volume"
new "효과음 크기"
# 00preferences.rpy:415
old "voice volume"
new "음성 크기"
# 00preferences.rpy:416
old "mute music"
new "배경음악 크기"
# 00preferences.rpy:417
old "mute sound"
new "효과음 끄기"
# 00preferences.rpy:418
old "mute voice"
new "음성 끄기"
# 00preferences.rpy:419
old "mute all"
new "모두 음소거"
# 00library.rpy:262
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}에서 포함된 모든 소프트웨어와 그 소스코드를 확인할 수 있습니다."
@@ -231,12 +550,68 @@ translate korean strings:
# 00preferences.rpy:424
old "Self-voicing would say \"[renpy.display.tts.last]\". Press 'alt+shift+V' to disable."
new "Self-voicing would say \"[renpy.display.tts.last]\". Press 'alt+shift+V' to disable."
new "대사 읽기 기능이 \"[renpy.display.tts.last]\" 를(을) 말할 것입니다. 'alt+shift+V'를 누르면 비활성화됩니다."
# 00preferences.rpy:426
old "Self-voicing enabled. Press 'v' to disable."
new "대사 읽기 기능을 실행했습니다. 'v' 키를 눌러 종료합니다."
# _compat\gamemenu.rpym:198
old "Empty Slot."
new "빈 슬롯"
# _compat\gamemenu.rpym:355
old "Previous"
new "이전"
# _compat\gamemenu.rpym:362
old "Next"
new "다음"
# _developer\developer.rpym:43
old "Interactive Director (D)"
new "인터렉티브 디렉터 (D)"
# _developer\developer.rpym:57
old "Show Image Load Log (F4)"
new "이미지 불러오기 목록을 표시하기 (F4)"
# _developer\developer.rpym:60
old "Hide Image Load Log (F4)"
new "이미지 불러오기 목록을 숨기기 (F4)"
# _developer\developer.rpym:63
old "Image Attributes"
new "이미지 속성"
# _developer\developer.rpym:90
old "[name] [attributes] (hidden)"
new "[name] [attributes] (hidden)"
# _developer\developer.rpym:94
old "[name] [attributes]"
new "[name] [attributes]"
# _developer\developer.rpym:489
old "Type to filter: "
new "필터: "
# _developer\developer.rpym:617
old "Textures: [tex_count] ([tex_size_mb:.1f] MB)"
new "텍스쳐: [tex_count] ([tex_size_mb:.1f] MB)"
# _developer\developer.rpym:621
old "Image cache: [cache_pct:.1f]% ([cache_size_mb:.1f] MB)"
new "이미지 캐시: [cache_pct:.1f]% ([cache_size_mb:.1f] MB)"
# _layout\classic_load_save.rpym:170
old "a"
new "a"
# _layout\classic_load_save.rpym:179
old "q"
new "q"
# 00iap.rpy:217
old "Contacting App Store\nPlease Wait..."
new "앱스토어와 통신 중\n잠시만 기다려주십시오..."
@@ -332,4 +707,3 @@ translate korean strings:
# 00gallery.rpy:586
old "return"
new "돌아가기"
+4 -6
View File
@@ -1,5 +1,4 @@

translate korean strings:
translate korean strings:
# _developer/developer.rpym:38
old "Developer Menu"
@@ -7,7 +6,7 @@ translate korean strings:
# _developer/developer.rpym:43
old "Reload Game (Shift+R)"
new "게임 재시작 (Shift + R)"
new "게임 재시작 (Shift+R)"
# _developer/developer.rpym:45
old "Console (Shift+O)"
@@ -51,7 +50,7 @@ translate korean strings:
# _developer/developer.rpym:378
old "Mouse position: %r"
new "마우스 포인터 좌: %r"
new "마우스 포인터 좌: %r"
# _developer/developer.rpym:383
old "Right-click or escape to quit."
@@ -75,7 +74,7 @@ translate korean strings:
# _developer/developer.rpym:532
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}✔ 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}"
# _developer/inspector.rpym:38
old "Displayable Inspector"
@@ -176,4 +175,3 @@ translate korean strings:
# 00console.rpy:536
old "jump <label>: jumps to label"
new "jump <label>: label로 점프한다"
+81 -51
View File
@@ -1,91 +1,118 @@

translate korean strings:
# 00gltest.rpy:64
old "Graphics Acceleration"
new "그래픽 가속"
translate korean strings:
# 00gltest.rpy:70
old "Renderer"
new "렌더러"
# 00gltest.rpy:74
old "Automatically Choose"
new "자동으로 선택한다"
# 00gltest.rpy:75
# 00gltest.rpy:79
old "Force Angle/DirectX Renderer"
new "앵글/다이렉트X 렌더러를 강제한다"
# 00gltest.rpy:79
# 00gltest.rpy:83
old "Force OpenGL Renderer"
new "오픈GL 렌더러를 강제한다"
# 00gltest.rpy:83
# 00gltest.rpy:87
old "Force Software Renderer"
new "소프트웨어 렌더러를 강제한다"
# 00gltest.rpy:93
old "NPOT"
new "NPOT"
# 00gltest.rpy:97
old "Enable"
new "활성"
# 00gltest.rpy:109
# 00gltest.rpy:131
old "Powersave"
new "절전"
# 00gltest.rpy:145
old "Framerate"
new "프레임 속도"
# 00gltest.rpy:149
old "Screen"
new "스크린"
# 00gltest.rpy:153
old "60"
new "60"
# 00gltest.rpy:157
old "30"
new "30"
# 00gltest.rpy:163
old "Tearing"
new "티어링"
# 00gltest.rpy:179
old "Changes will take effect the next time this program is run."
new "변경사항은 프로그램을 재시작하면 적용됩니다."
# 00gltest.rpy:141
# 00gltest.rpy:213
old "Performance Warning"
new "성능 경고"
# 00gltest.rpy:146
# 00gltest.rpy:218
old "This computer is using software rendering."
new "이 컴퓨터에서는 소프트웨어 렌더링을 사용하고 있습니다."
# 00gltest.rpy:148
# 00gltest.rpy:220
old "This computer is not using shaders."
new "이 컴퓨터에서는 쉐이더를 사용하지 않습니다."
# 00gltest.rpy:150
# 00gltest.rpy:222
old "This computer is displaying graphics slowly."
new "이 컴퓨터에서는 그래픽을 느리게 표시합니다."
# 00gltest.rpy:152
# 00gltest.rpy:224
old "This computer has a problem displaying graphics: [problem]."
new "이 컴퓨터에는 그래픽 표시에 문제가 있습니다. [problem]."
# 00gltest.rpy:157
# 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 "컴퓨터의 그래픽 드라비어가 구버전이거나 제대로 작동하지 않습니다. 그래픽을 느리게 표시하거나 제대로 표시하지 못할 수 있습니다. 다이렉트X를 업데이트하면 이 문제를 해결할 수 있습니다."
# 00gltest.rpy:159
# 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 "컴퓨터의 그래픽 드라비어가 구버전이거나 제대로 작동하지 않습니다. 그래픽을 느리게 표시하거나 제대로 표시하지 못할 수 있습니다."
# 00gltest.rpy:164
# 00gltest.rpy:236
old "Update DirectX"
new "다이렉트X 업데이트하기"
# 00gltest.rpy:170
# 00gltest.rpy:242
old "Continue, Show this warning again"
new "계속한다. 이 경고를 다시 표시한다."
# 00gltest.rpy:174
# 00gltest.rpy:246
old "Continue, Don't show warning again"
new "계속한다. 이 경고를 다시 표시하지 않는다."
# 00gltest.rpy:192
# 00gltest.rpy:264
old "Updating DirectX."
new "다이렉트X를 업데이트하고 있습니다."
# 00gltest.rpy:196
# 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 "다이렉트X 웹 설치를 시작했습니다. 작업표시줄에 최소화 상태로 시작되었을 수도 있습니다. 설치 안내창에 따라 다이렉트X를 설치하세요."
# 00gltest.rpy:200
# 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}/n 마이크로소프트의 다이렉트X 웹 설치 프로그램은 기본적으로 Bing 툴바를 설치합니다. 이 툴바를 설치하고 싶지 않다면 체크 박스의 체크 표시를 해제하세요."
# 00gltest.rpy:204
# 00gltest.rpy:276
old "When setup finishes, please click below to restart this program."
new "설치가 완료되면 아래 버튼을 눌러 프로그램을 다시 시작하세요."
# 00gltest.rpy:206
# 00gltest.rpy:278
old "Restart"
new "다시 시작"
@@ -113,67 +140,70 @@ translate korean strings:
old "Back (B)"
new "뒤로 (B)"
# _errorhandling.rpym:495
old "Open Traceback"
new "Traceback.txt 파일 열기"
# _errorhandling.rpym:529
old "Open"
new "열기"
# _errorhandling.rpym:497
# _errorhandling.rpym:531
old "Opens the traceback.txt file in a text editor."
new "traceback.txt 파일을 스크립트 에디터로 엽니다."
new "traceback.txt 파일을 스트 에디터로 엽니다."
# _errorhandling.rpym:499
old "Copy to Clipboard"
new "클립보드로 복사"
# _errorhandling.rpym:533
old "Copy"
new "복사"
# _errorhandling.rpym:501
# _errorhandling.rpym:535
old "Copies the traceback.txt file to the clipboard."
new "traceback.txt 파일을 클립보드로 복사합니다."
# _errorhandling.rpym:519
# _errorhandling.rpym:562
old "An exception has occurred."
new "예외가 발생했습니다."
# _errorhandling.rpym:538
# _errorhandling.rpym:582
old "Rollback"
new "롤백"
# _errorhandling.rpym:540
# _errorhandling.rpym:584
old "Attempts a roll back to a prior time, allowing you to save or choose a different choice."
new "게임을 저장하거나 다른 선택지를 선택할 수 있도록 이전으로 롤백합니다."
# _errorhandling.rpym:543
# _errorhandling.rpym:587
old "Ignore"
new "무시"
# _errorhandling.rpym:545
# _errorhandling.rpym:591
old "Ignores the exception, allowing you to continue. This often leads to additional errors."
new "예외를 무시하고 게임을 계속합니다. 간혹 오류가 추가 발생할 수 있습니다."
# _errorhandling.rpym:548
# _errorhandling.rpym:593
old "Reload"
new "다시 불러오기"
# _errorhandling.rpym:550
# _errorhandling.rpym:597
old "Reloads the game from disk, saving and restoring game state if possible."
new "현재 상태를 저장한 뒤 복원하여 게임을 디스크에서 다시 불러옵니다."
# _errorhandling.rpym:560
# _errorhandling.rpym:602
old "Console"
new "콘솔"
# _errorhandling.rpym:604
old "Opens a console to allow debugging the problem."
new "콘솔을 열어 문제를 디버깅합니다."
# _errorhandling.rpym:614
old "Quits the game."
new "게임을 종료합니다."
# _errorhandling.rpym:582
# _errorhandling.rpym:638
old "Parsing the script failed."
new "스크립트 해석 실패."
# _errorhandling.rpym:606
old "Open Parse Errors"
new "Error.txt 파일 열기"
# _errorhandling.rpym:608
# _errorhandling.rpym:664
old "Opens the errors.txt file in a text editor."
new "errors.txt 파일을 스크립트 에디터로 엽니다."
new "errors.txt 파일을 스트 에디터로 엽니다."
# _errorhandling.rpym:612
# _errorhandling.rpym:668
old "Copies the errors.txt file to the clipboard."
new "errors.txt 파일을 클립보드로 복사합니다."
+118 -96
View File
@@ -1,18 +1,21 @@

translate korean strings:
translate korean strings:
# gui.rpy:2
old "## Initialization"
new "## 초기화"
# gui.rpy:5
old "## The init offset statement causes the init code in this file to run before init code in any other file."
new "## 이 파일에서 init offset 문을 사용하면 이 파일의 init 코드가 다른 파일의 init 코드보다 먼저 실행됩니다."
old "## The init offset statement causes the initialization statements in this file to run before init statements in any other file."
new "## 이 파일에서 init offset 문을 사용하면 이 파일의 초기화 문이 다른 파일의 init 코드보다 먼저 실행됩니다."
# gui.rpy:9
old "## Calling gui.init resets the styles to sensible default values, and sets the width and height of the game."
new "## gui.init의 호출은 스타일을 합리적인 기본값으로 재설정하고, 게임의 너비(width)와 높이(height)를 설정합니다."
# gui.rpy:17
old "## GUI Configuration Variables"
new "## GUI 설정 변수"
# gui.rpy:21
old "## Colors"
new "## 색상"
@@ -39,7 +42,7 @@ translate korean strings:
# gui.rpy:39
old "## The color used for a text button when it is selected but not focused. A button is selected if it is the current screen or preference value."
new "## 텍스트 버튼(text button)에 선택됐지만(selected) 포커스되지 않았을 때(focused) 사용됩니다. 버튼(button)은 현재 화면이거나 설정값인 경우 선택됨(selected)이 됩니다."
new "## 텍스트 버튼(text button)에 선택됐지만(selected) 포커스되지(focused) 않았을 때 사용됩니다. 버튼(button)은 현재 화면이거나 설정값인 경우 선택됨(selected)이 됩니다."
# gui.rpy:43
old "## The color used for a text button when it cannot be selected."
@@ -101,311 +104,330 @@ translate korean strings:
old "## The images used for the main and game menus."
new "## 이미지들은 메인(main)과 게임 메뉴(game menu)에 사용됩니다."
# gui.rpy:92
old "## Should we show the name and version of the game?"
new "## 게임의 이름과 버전을 보여줘야 할까요?"
# gui.rpy:96
# gui.rpy:93
old "## Dialogue"
new "## 대사"
# gui.rpy:98
# gui.rpy:95
old "## These variables control how dialogue is displayed on the screen one line at a time."
new "## 이러한 변수들은 한 번에 한 줄의 대사가 어떻게 화면에 표시되는지 제어합니다."
# gui.rpy:101
# gui.rpy:98
old "## The height of the textbox containing dialogue."
new "## 대사를 포함하는 텍스트 박스의 높이입니다."
# gui.rpy:104
# gui.rpy:101
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 "## 화면에 텍스트박스를 세로로 배치합니다. 0.0은 최상단, 0.5는 중앙, 그리고 1.0은 최하단입니다."
# gui.rpy:109
# gui.rpy:106
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 "## 말하는 캐릭터의 이름을 텍스트 박스를 기준으로 배치합니다. 이것은 좌측이나 최상단으로부터 전체 픽셀값의 숫자가 되거나, 0.5로 중앙이 될 수 있습니다."
# gui.rpy:114
# gui.rpy:111
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 "## 캐릭터들의 이름을 수평으로 정렬합니다. 이것은 0.0으로 좌측 정렬, 0.5로 중앙, 그리고 1.0으로 우측 정렬될 수 있습니다."
# gui.rpy:118
# gui.rpy:115
old "## The width, height, and borders of the box containing the character's name, or None to automatically size it."
new "## 캐릭터들의 이름이 들어 있는 박스의 너비, 높이, 그리고 테두리입니다. 혹은 그것을 None으로 자동 설정할 수 있습니다."
# gui.rpy:123
# gui.rpy:120
old "## The borders of the box containing the character's name, in left, top, right, bottom order."
new "## 캐릭터의 이름이 들어 있는 박스의 테두리를 좌측, 상단, 우측, 하단의 순서로 정합니다."
# gui.rpy:127
# gui.rpy:124
old "## If True, the background of the namebox will be tiled, if False, the background of the namebox will be scaled."
new "## 만약 참(True)이면, 네임박스의 배경은 바둑판식으로 배열(tiled)될 것이고, 거짓(False)이면, 네임박스의 배경은 채워질(scaled) 것입니다."
# gui.rpy:132
# gui.rpy:129
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 "## 텍스트박스에서 대사의 위치입니다. These can be a whole number of pixels relative to the left or top side of the textbox, or 0.5 to center."
# gui.rpy:138
# gui.rpy:135
old "## The maximum width of dialogue text, in pixels."
new "## 픽셀값에서 대사의 최대 너비입니다."
# gui.rpy:141
# gui.rpy:138
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 "## 대사 글자의 수평 정렬입니다. 이것은 0.0으로 좌측 정렬, 0.5로 중앙, 그리고 1.0으로 우측 정렬이 될 수 있습니다."
# gui.rpy:146
# gui.rpy:143
old "## Buttons"
new "## 버튼들"
# gui.rpy:148
# gui.rpy:145
old "## These variables, along with the image files in gui/button, control aspects of how buttons are displayed."
new "## 이러한 변수들은 GUI/버튼에서 이미지 파일들과 함께 어떻게 버튼이 표시되는지 제어합니다."
# gui.rpy:151
# gui.rpy:148
old "## The width and height of a button, in pixels. If None, Ren'Py computes a size."
new "## 픽셀값에서 버튼의 너비와 높이입니다. 만약 None이면, 렌파이가 크기를 계산합니다."
# gui.rpy:155
# gui.rpy:152
old "## The borders on each side of the button, in left, top, right, bottom order."
new "## 좌측, 상단, 우측, 하단의 순서에서 버튼의 테두리 값입니다."
# gui.rpy:158
# gui.rpy:155
old "## If True, the background image will be tiled. If False, the background image will be linearly scaled."
new "## 만약 참(True)이면, 배경 이미지는 바둑판식으로 배열(tiled)될 것입니다. 만약 거짓(False)이면, 배경 이미지는 선으로 채워질(scaled) 것입니다."
# gui.rpy:162
# gui.rpy:159
old "## The font used by the button."
new "## 버튼에 사용된 글자의 폰트입니다."
# gui.rpy:165
# gui.rpy:162
old "## The size of the text used by the button."
new "## 버튼에 사용된 글자의 크기입니다."
# gui.rpy:179
# gui.rpy:165
old "## The color of button text in various states."
new "## 다양한 상태의 버튼 글자의 색상입니다."
# gui.rpy:171
old "## The horizontal alignment of the button text. (0.0 is left, 0.5 is center, 1.0 is right)."
new "## 버튼 글자의 수평 정렬(0.0은 왼쪽,0.5은 가운데,1.0은 오른쪽)입니다."
# gui.rpy:176
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."
new "## 이러한 변수는 다른 종류의 버튼 설정을 덮어씌웁니다. 사용 가능한 버튼의 종류와, 각각 무엇을 위해 사용하는지는 gui 문서를 확인해주세요."
# gui.rpy:183
# gui.rpy:180
old "## These customizations are used by the default interface:"
new "## 이러한 사용자 지정은 기본 인터페이스에 사용됩니다:"
# gui.rpy:198
# gui.rpy:195
old "## You can also add your own customizations, by adding properly-named variables. For example, you can uncomment the following line to set the width of a navigation button."
new "## 당신은 또한 설정된 이름의 변수를 추가함으로써 당신만의 커스텀을 추가할 수 있습니다. 예를 들어, 다음 행의 주석 표시를 제거하여 탐색(navigation) 버튼의 너비를 설정할 수 있습니다."
# gui.rpy:205
# gui.rpy:202
old "## Choice Buttons"
new "## 선택 버튼들"
# gui.rpy:207
# gui.rpy:204
old "## Choice buttons are used in the in-game menus."
new "## 선택 버튼은 인-게임 메뉴에 사용됩니다."
# gui.rpy:220
# gui.rpy:217
old "## File Slot Buttons"
new "## 파일 슬롯 버튼"
# gui.rpy:222
# gui.rpy:219
old "## A file slot button is a special kind of button. It contains a thumbnail image, and text describing the contents of the save slot. A save slot uses image files in gui/button, like the other kinds of buttons."
new "## 파일 슬롯 버튼은 버튼의 특별한 종류입니다. 그것은 썸네일 이미지나 저장 슬롯의 콘텐츠를 설명하는 글자를 포함합니다. GUI/버튼에서 저장 슬롯은 버튼의 다른 종류와 같은 이미지 파일을 사용합니다."
# gui.rpy:226
# gui.rpy:223
old "## The save slot button."
new "## 저장 슬롯 버튼입니다."
# gui.rpy:234
# gui.rpy:233
old "## The width and height of thumbnails used by the save slots."
new "## 저장 슬롯에 사용되는 썸네일의 너비와 높이입니다."
# gui.rpy:238
# gui.rpy:237
old "## The number of columns and rows in the grid of save slots."
new "## 저장 슬롯의 그리드(grid)에서 행(rows)과 열(columns)의 갯수입니다."
# gui.rpy:243
# gui.rpy:242
old "## Positioning and Spacing"
new "## 위치와 간격"
# gui.rpy:245
# gui.rpy:244
old "## These variables control the positioning and spacing of various user interface elements."
new "## 이러한 변수들은 다양한 사용자 인터페이스 요소들의 위치와 간격을 제어합니다."
# gui.rpy:248
# gui.rpy:247
old "## The position of the left side of the navigation buttons, relative to the left side of the screen."
new "## 화면의 왼쪽을 기준으로 하는 네비게이션 버튼의 왼쪽 위치입니다."
# gui.rpy:252
# gui.rpy:251
old "## The vertical position of the skip indicator."
new "## 스킵 표시기(skip indicator)의 수직 위치입니다."
# gui.rpy:255
# gui.rpy:254
old "## The vertical position of the notify screen."
new "## 통지(notify) 스크린의 수직 위치입니다."
# gui.rpy:258
# gui.rpy:257
old "## The spacing between menu choices."
new "## 선택지의 메뉴 선택 간의 간격입니다."
# gui.rpy:261
# gui.rpy:260
old "## Buttons in the navigation section of the main and game menus."
new "## 메인과 게임 메뉴에서 네비게이션 섹션의 버튼들 간의 간격입니다."
# gui.rpy:264
# gui.rpy:263
old "## Controls the amount of spacing between preferences."
new "## 환경 설정들 간의 간격을 제어합니다."
# gui.rpy:267
# gui.rpy:266
old "## Controls the amount of spacing between preference buttons."
new "## 환경 설정 버튼들 사이의 간격을 제어합니다."
# gui.rpy:270
# gui.rpy:269
old "## The spacing between file page buttons."
new "## 파일 페이지 버튼들 간의 간격입니다."
# gui.rpy:273
# gui.rpy:272
old "## The spacing between file slots."
new "## 파일 슬롯들 간의 간격입니다."
# gui.rpy:277
# gui.rpy:275
old "## The position of the main menu text."
new "## 메인 메뉴 글자의 위치입니다."
# gui.rpy:279
old "## Frames"
new "## 프레임들"
# gui.rpy:279
# gui.rpy:281
old "## These variables control the look of frames that can contain user interface components when an overlay or window is not present."
new "## 이러한 변수들은 오버레이되거나 창이 없을 때 보여지는 사용자 인터페이스 구성 요소들을 포함하는 프레임을 제어합니다."
# gui.rpy:282
# gui.rpy:284
old "## Generic frames that are introduced by player code."
new "## 플레이어 코드에 의해 소개되는 일반 프레임."
# gui.rpy:285
# gui.rpy:287
old "## The frame that is used as part of the confirm screen."
new "## 프레임은 확인(confirm) 화면의 일부로 사용됩니다."
# gui.rpy:288
# gui.rpy:290
old "## The frame that is used as part of the skip screen."
new "## 프레임은 스킵(skip) 화면의 일부로 사용됩니다."
# gui.rpy:291
# gui.rpy:293
old "## The frame that is used as part of the notify screen."
new "## 프레임은 통지(notify) 화면의 일부로 사용됩니다."
# gui.rpy:294
# gui.rpy:296
old "## Should frame backgrounds be tiled?"
new "## 프레임 배경들은 바둑판식으로 배열해야 할까요?"
# gui.rpy:298
# gui.rpy:230
old "## Bars, Scrollbars, and Sliders"
new "## 막대, 스크롤바, 슬라이더"
# gui.rpy:300
# gui.rpy:302
old "## These control the look and size of bars, scrollbars, and sliders."
new "## 이러한 설정은 막대와 스크롤바, 그리고 슬라이더의 보여지는 것과 크기를 제어합니다."
# gui.rpy:302
# gui.rpy:304
old "## The default GUI only uses sliders and vertical scrollbars. All of the other bars are only used in creator-written code."
new "## 기본 GUI는 슬라이더와 세로 스크롤바만 사용합니다. 다른 모든 막대들은 창작자가 작성한 코드에서 사용됩니다."
# gui.rpy:305
# gui.rpy:307
old "## The height of horizontal bars, scrollbars, and sliders. The width of vertical bars, scrollbars, and sliders."
new "## 수평 막대, 스크롤바, 슬라이더의 높이. 수직 막대, 스크롤바, 슬라이더의 너비."
# gui.rpy:311
# gui.rpy:313
old "## True if bar images should be tiled. False if they should be linearly scaled."
new "## 막대 이미지가 바둑판식 배열돼야 하면 참(True)입니다. 선으로 채워져야 한다면 거짓(False)입니다."
# gui.rpy:316
# gui.rpy:318
old "## Horizontal borders."
new "## 수평 테두리입니다."
# gui.rpy:321
# gui.rpy:323
old "## Vertical borders."
new "## 수직 테두리입니다."
# gui.rpy:326
# gui.rpy:328
old "## What to do with unscrollable scrollbars in the gui. \"hide\" hides them, while None shows them."
new "## GUI에서 스크롤할 수 없는 스크롤 막대로 뭘 할 수 있나요? \"hide\"로 그것들을 숨기고, None은 그것들을 보여줍니다."
# gui.rpy:331
old "## History"
new "## 다시보기"
# gui.rpy:333
old "## The history screen displays dialogue that the player has already dismissed."
new "## 다시보기 화면은 사용자가 이미 확인한 다이얼로그를 표시합니다."
old "## History"
new "## 대사록"
# gui.rpy:335
old "## The history screen displays dialogue that the player has already dismissed."
new "## 대사록 화면은 사용자가 이미 확인한 다이얼로그를 표시합니다."
# gui.rpy:337
old "## The number of blocks of dialogue history Ren'Py will keep."
new "## 렌파이가 보관할 다시보기의 블록 갯수입니다."
new "## 렌파이가 보관할 대사록의 블록 갯수입니다."
# gui.rpy:338
# gui.rpy:340
old "## The height of a history screen entry, or None to make the height variable at the cost of performance."
new "## 다시보기 화면 항목의 높이를 지정하거나 None으로 하여 높이를 성능에 맡길 수 있습니다."
new "## 대사록 화면 항목의 높이를 지정하거나 None으로 하여 높이를 성능에 맡길 수 있습니다."
# gui.rpy:342
# gui.rpy:344
old "## The position, width, and alignment of the label giving the name of the speaking character."
new "## 말하는 캐릭터의 이름을 나타내는 레이블의 위치, 너비, 그리고 정렬입니다."
# gui.rpy:349
# gui.rpy:351
old "## The position, width, and alignment of the dialogue text."
new "## 대사 글자의 위치, 너비, 그리고 정렬입니다."
# gui.rpy:356
# gui.rpy:358
old "## NVL-Mode"
new "## NVL-모드"
# gui.rpy:358
# gui.rpy:360
old "## The NVL-mode screen displays the dialogue spoken by NVL-mode characters."
new "## NVL-모드 화면은 NVL-모드 캐릭터들에 의한 대화를 화면에 표시합니다."
# gui.rpy:360
# gui.rpy:362
old "## The borders of the background of the NVL-mode background window."
new "## NVL-모드 배경 창에서 배경의 테두리입니다."
# gui.rpy:363
# gui.rpy:365
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."
new "## 렌파이가 표시할 NVL-mode 항목의 최대 수입니다. 설정보다 많은 항목이 표시되면 가장 오래된 항목이 제거됩니다."
# gui.rpy:369
old "## The height of an NVL-mode entry. Set this to None to have the entries dynamically adjust height."
new "## NVL-모드 항목의 높이입니다. 이것을 None으로 설정하면 항목들은 동적으로 높이를 조정합니다."
# gui.rpy:367
# gui.rpy:373
old "## The spacing between NVL-mode entries when gui.nvl_height is None, and between NVL-mode entries and an NVL-mode menu."
new "## gui.nvl_height 값이 None일 때 NVL-모드 항목들, 그리고 NVL-모드 항목들과 NVL-모드 메뉴간의 간의 간격입니다."
# gui.rpy:384
# gui.rpy:390
old "## The position, width, and alignment of nvl_thought text (the text said by the nvl_narrator character.)"
new "## nvl_thought 글자의 위치, 너비, 정렬(nvl_narrator 캐릭터에 의해 표시되는 글자)입니다."
# gui.rpy:391
# gui.rpy:397
old "## The position of nvl menu_buttons."
new "## NVL 메뉴 버튼의 위치입니다."
# gui.rpy:403
old "## This increases the size of the quick buttons to make them easier to touch on tablets and phones."
new "## 이것은 휴대전화와 태블릿에서 쉽게 터지할 수 있도록 퀵 버튼들의 크기를 크게 합니다."
# gui.rpy:401
old "## Localization"
new "## 현지화"
# gui.rpy:409
# gui.rpy:403
old "## This controls where a line break is permitted. The default is suitable for most languages. A list of available values can be found at https://www.renpy.org/doc/html/style_properties.html#style-property-language"
new "## 줄 바꿈이 허용되는 위치를 제어합니다. 기본값은 대부분의 언어에 적합합니다. 사용 가능한 값 목록은 https://www.renpy.org/doc/html/style_properties.html#style-property-language 에서 찾을 수 있습니다."
# gui.rpy:411
old "## Mobile devices"
new "## 모바일 기기"
# gui.rpy:416
old "## This increases the size of the quick buttons to make them easier to touch on tablets and phones."
new "## 이것은 휴대전화와 태블릿에서 쉽게 터치할 수 있도록 빠른(Quick) 버튼들의 크기를 크게 합니다."
# gui.rpy:422
old "## This changes the size and spacing of various GUI elements to ensure they are easily visible on phones."
new "## 이것은 휴대전화에서 다양한 GUI 요소들의 크기와 간격을 쉽게 보일 수 있도록 변경합니다."
# gui.rpy:413
# gui.rpy:426
old "## Font sizes."
new "## 글자 크기들."
# gui.rpy:421
# gui.rpy:434
old "## Adjust the location of the textbox."
new "## 텍스트박스의 위치를 조정합니다."
# gui.rpy:427
# gui.rpy:440
old "## Change the size and spacing of items in the game menu."
new "## 게임 메뉴에서 항목들의 크기와 간격을 변경합니다."
# gui.rpy:436
# gui.rpy:453
old "## File button layout."
new "## 파일 버튼 레이아웃."
# gui.rpy:440
# gui.rpy:457
old "## NVL-mode."
new "## NVL-모드."
# gui.rpy:456
old "## Quick buttons."
new "## 빠른(Quick) 버튼들."
File diff suppressed because it is too large Load Diff
+1 -27
View File
@@ -1,27 +1 @@

translate korean strings:
# _layout/classic_joystick_preferences.rpym:94
old "Joystick Mapping"
new "조이스틱 설정"
# _layout/classic_load_save.rpym:138
old "Empty Slot."
new "빈 슬롯."
# _layout/classic_load_save.rpym:170
old "a"
new "a"
# _layout/classic_load_save.rpym:179
old "q"
new "q"
# _compat/gamemenu.rpym:355
old "Previous"
new "뒤로"
# _compat/gamemenu.rpym:362
old "Next"
new "앞으로"
# This file intentionally left blank.
+50 -44
View File
@@ -1,5 +1,4 @@

translate korean strings:
translate korean strings:
# options.rpy:1
old "## This file contains options that can be changed to customize your game."
@@ -34,162 +33,169 @@ translate korean strings:
new "## 게임의 버전입니다."
# options.rpy:31
old "## Text that is placed on the game's about screen. To insert a blank line between paragraphs, write \\n\\n."
new "## 게임의 about 스크린에 배치되는 텍스트입니다. 단락 사이에 빈 줄을 넣으려면 \\n\\n를 적으십시오."
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."
new "## 게임의 about 스크린에 배치되는 텍스트입니다. 텍스트를 삼중 따옴표 사이에 배치하고 단락 사이에 빈 줄을 남겨 둡니다."
# options.rpy:37
# 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 전용이어야 하며 공백, 콜론 또는 세미콜론을 포함해서는 안 됩니다."
# options.rpy:44
# options.rpy:45
old "## Sounds and music"
new "## 음악과 음향"
# options.rpy:46
# options.rpy:47
old "## These three variables control which mixers are shown to the player by default. Setting one of these to False will hide the appropriate mixer."
new "## 이 세 가지 변수는 기본적으로 플레이어에 표시되는 믹서를 제어합니다. 이들 중 하나를 False로 설정하면 해당 믹서가 숨겨집니다."
# options.rpy:55
# options.rpy:56
old "## To allow the user to play a test sound on the sound or voice channel, uncomment a line below and use it to set a sample sound to play."
new "## 사용자가 음향 또는 음성 채널에서 테스트 사운드를 재생할 수 있게 하려면 아래 줄의 주석을 제거하고 이를 사용하여 재생할 샘플 사운드를 설정하십시오."
# options.rpy:62
# options.rpy:63
old "## Uncomment the following line to set an audio file that will be played while the player is at the main menu. This file will continue playing into the game, until it is stopped or another file is played."
new "## 플레이어가 주 메뉴에 있을 때 재생할 오디오 파일을 설정하려면 다음 줄의 주석 처리를 제거하십시오. 이 파일은 중지되거나 다른 파일이 재생 될 때까지 계속 재생합니다."
# options.rpy:69
# options.rpy:70
old "## Transitions"
new "## 번역"
# options.rpy:71
# options.rpy:72
old "## These variables set transitions that are used when certain events occur. Each variable should be set to a transition, or None to indicate that no transition should be used."
new "## 이러한 변수는 특정 이벤트가 발생할 때 사용되는 전환을 설정합니다. 각 변수는 전환으로 설정해야 하며, 전환을 사용하지 말아야 한다는 것을 나타내려면 None으로 설정해야 합니다."
# options.rpy:75
# options.rpy:76
old "## Entering or exiting the game menu."
new "## 게임 메뉴에 진입하거나 나갑니다."
# options.rpy:81
# options.rpy:82
old "## Between screens of the game menu."
new "## 게임 메뉴 화면 사이입니다."
# options.rpy:87
old "## A transition that is used after a game has been loaded."
new "## 게임이 로드된 후 사용되는 전환입니다."
# options.rpy:86
# options.rpy:92
old "## Used when entering the main menu after the game has ended."
new "## 게임 종료 후 주 메뉴에 진입할 때 사용됩니다."
# options.rpy:91
# options.rpy:97
old "## A variable to set the transition used when the game starts does not exist. Instead, use a with statement after showing the initial scene."
new "## 게임을 시작할 때 사용되는 전환을 설정하는 변수가 없습니다. 대신, 초기 장면을 표시한 후 with 문을 사용하십시오."
# options.rpy:96
# options.rpy:102
old "## Window management"
new "## 창 관리"
# options.rpy:98
# options.rpy:104
old "## This controls when the dialogue window is displayed. If \"show\", it is always displayed. If \"hide\", it is only displayed when dialogue is present. If \"auto\", the window is hidden before scene statements and shown again once dialogue is displayed."
new "## 이것은 대사 창이 표시됐을 때 제어합니다. 만약 \"show\"면, 그것은 상항 표시됩니다. 만약 \"hide\"면, 그것은 대사가 주어질 때만 표시됩니다. 만약 \"auto\"면, 창은 장면(scene) 문 앞에 숨겨져 대화 상자가 표시되면 다시 표시됩니다."
# options.rpy:103
# options.rpy:109
old "## After the game has started, this can be changed with the \"window show\", \"window hide\", and \"window auto\" statements."
new "## 게임이 시작된 후에는 \"window show\", \"window hide\", 그리고 \"window auto\" 문을 사용하여 변경할 수 있습니다."
# options.rpy:109
# options.rpy:115
old "## Transitions used to show and hide the dialogue window"
new "## 대화 창을 표시하고 숨기는 데 사용되는 전환"
# options.rpy:115
# options.rpy:121
old "## Preference defaults"
new "## 환경설정 기본값"
# options.rpy:117
# 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 "## 기본 글자 속도를 제어합니다. 기본적으로, 0은 즉시이며 다른 숫자는 초당 입력 할 문자 수입니다."
# options.rpy:123
# options.rpy:129
old "## The default auto-forward delay. Larger numbers lead to longer waits, with 0 to 30 being the valid range."
new "## 기본 auto-forward 지연 시간입니다. 숫자가 클수록 대기 시간이 길어지며, 0 ~ 30이 유효한 범위가 됩니다."
# options.rpy:129
# options.rpy:135
old "## Save directory"
new "## 세이브 디렉토리"
# options.rpy:131
# 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:"
new "## 렌파이는 이 게임에 대한 저장 파일을 플랫폼 별로 배치합니다. 세이브 파일들은 여기에 있습니다:"
# options.rpy:134
# options.rpy:140
old "## Windows: %APPDATA\\RenPy\\<config.save_directory>"
new "## 윈도우즈: %APPDATA\\RenPy\\<config.save_directory>"
# options.rpy:136
# options.rpy:142
old "## Macintosh: $HOME/Library/RenPy/<config.save_directory>"
new "## 매킨토시: $HOME/Library/RenPy/<config.save_directory>"
# options.rpy:138
# options.rpy:144
old "## Linux: $HOME/.renpy/<config.save_directory>"
new "## 리눅스: $HOME/.renpy/<config.save_directory>"
# options.rpy:140
# options.rpy:146
old "## This generally should not be changed, and if it is, should always be a literal string, not an expression."
new "## 이것은 일반적으로 변경해서는 안 되며, 항상 표현형식이 아닌 정확한 문자열이어야 합니다."
# options.rpy:146
# options.rpy:152
old "## Icon ########################################################################'"
new "## 아이콘 #######################################################################'"
# options.rpy:148
# options.rpy:154
old "## The icon displayed on the taskbar or dock."
new "## 작업 표시 줄 또는 독에 표시되는 아이콘."
# options.rpy:153
# options.rpy:159
old "## Build configuration"
new "## 빌드 구성"
# options.rpy:155
# options.rpy:161
old "## This section controls how Ren'Py turns your project into distribution files."
new "## 이 섹션은 렌파이가 프로젝트를 배포 파일로 만드는 방법을 제어합니다."
# options.rpy:160
# 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 "## 다음 함수는 파일 패턴을 사용합니다. 파일 패턴은 대/소문자를 구분하지 않으며, /의 유무와 관계없이 기본 디렉터리의 상대 경로와 일치합니다. 여러 패턴이 일치하면 첫 번째 패턴이 사용됩니다."
# options.rpy:165
# options.rpy:171
old "## In a pattern:"
new "## 패턴 있음:"
# options.rpy:167
# options.rpy:173
old "## / is the directory separator."
new "## / 는 디렉토리 구분 기호입니다."
# options.rpy:169
# options.rpy:175
old "## * matches all characters, except the directory separator."
new "## * 는 디렉토리 구분자를 제외한 모든 문자와 일치합니다."
# options.rpy:171
# options.rpy:177
old "## ** matches all characters, including the directory separator."
new "## ** 는 디렉토리 구분자를 포함해 모든 문자와 일치합니다."
# options.rpy:173
# 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 파일들과 일치합니다."
# options.rpy:177
# options.rpy:183
old "## Classify files as None to exclude them from the built distributions."
new "## 파일을 None으로 분류하여 배포판으로부터 제외하십시오."
# options.rpy:185
# options.rpy:191
old "## To archive files, classify them as 'archive'."
new "## 파일을 아카이브하려면 'archive'로 분류하십시오."
# options.rpy:190
# options.rpy:196
old "## Files matching documentation patterns are duplicated in a mac app build, so they appear in both the app and the zip file."
new "## 파일들의 매칭 문서 패턴은 맥앱(Mac App) 빌드에서 중복되므로 app 및 zip 파일에 모두 나타납니다."
# options.rpy:196
# options.rpy:202
old "## Set this to a string containing your Apple Developer ID Application to enable codesigning on the Mac. Be sure to change it to your own Apple-issued ID."
new "## 맥(Mac)에서 코드 서명을 사용하려면 Apple Developer ID Application이 포함된 문자열로 설정하십시오. 애플(Apple)에서 발행한 ID로 변경하십시오."
# options.rpy:209
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\"페이지에서 확인할 수 있습니다."
# options.rpy:203
# options.rpy:216
old "## The username and project name associated with an itch.io project, separated by a slash."
new "## itch.io 프로젝트와 연관된 사용자 이름과 프로젝트 이름이며 슬래시로 구분됩니다."
+226 -216
View File
@@ -1,643 +1,653 @@

translate korean strings:
translate korean strings:
# screens.rpy:9
old "## Styles"
new "## 스타일"
# screens.rpy:87
# screens.rpy:81
old "## In-game screens"
new "## 게임내 스크린"
# screens.rpy:91
# screens.rpy:85
old "## Say screen"
new "## Say 스크린"
# screens.rpy:93
# 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와 대사 what, 두 개의 매개변수를 받습니다. (화자 이름이 없으면 who는 None일 수 있음)"
# screens.rpy:98
# 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\"을 가진 텍스트 디스플레이어블을 생성해야 합니다. (이 디스플레이어블은 렌파이의 대사 출력에 필요합니다.) id \"who\" 와 id \"window\" 디스플레이블이 존재할 경우 관련 스타일 속성이 적용됩니다."
# screens.rpy:102
# screens.rpy:96
old "## https://www.renpy.org/doc/html/screen_special.html#say"
new "## https://www.renpy.org/doc/html/screen_special.html#say"
# screens.rpy:169
# 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 "## 사이드 이미지가 있는 경우 글자 위에 표시합니다. 휴대폰 환경에서는 보이지 않습니다."
# screens.rpy:120
old "## Make the namebox available for styling through the Character object."
new "## Character 객체를 통해 스타일을 지정할 수 있도록 namebox를 사용할 수 있게 만듭니다."
# screens.rpy:164
old "## Input screen"
new "## Input 스크린"
# screens.rpy:171
# screens.rpy:166
old "## This screen is used to display renpy.input. The prompt parameter is used to pass a text prompt in."
new "## 플레이어 입력을 받는 renpy.input을 출력할 때 쓰이는 스크린입니다. prompt 매개변수를 통해 입력 지문을 표시할 수 있습니다."
# screens.rpy:174
# screens.rpy:169
old "## This screen must create an input displayable with id \"input\" to accept the various input parameters."
new "## 이 스크린은 id \"input\"을 가진 input 디스플레이어블을 생성해야 합니다."
# screens.rpy:177
old "## http://www.renpy.org/doc/html/screen_special.html#input"
new "## http://www.renpy.org/doc/html/screen_special.html#input"
# screens.rpy:172
old "## https://www.renpy.org/doc/html/screen_special.html#input"
new "## https://www.renpy.org/doc/html/screen_special.html#input"
# screens.rpy:205
# screens.rpy:199
old "## Choice screen"
new "## Choice 스크린"
# screens.rpy:207
# screens.rpy:201
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를 받고, 이는 선택지 내용(caption)과 선택지 결과(action)이 있는 오브젝트가 들어있는 리스트입니다."
# screens.rpy:211
old "## http://www.renpy.org/doc/html/screen_special.html#choice"
new "## http://www.renpy.org/doc/html/screen_special.html#choice"
# screens.rpy:205
old "## https://www.renpy.org/doc/html/screen_special.html#choice"
new "## https://www.renpy.org/doc/html/screen_special.html#choice"
# screens.rpy:221
# screens.rpy:215
old "## When this is true, menu captions will be spoken by the narrator. When false, menu captions will be displayed as empty buttons."
new "## True일 경우 narrator 캐릭터를 통해 지문을 표시합니다. False일 경우 지문이 비활성화 선택지로 표시됩니다."
# screens.rpy:244
# screens.rpy:238
old "## Quick Menu screen"
new "## Quick Menu 스크린"
# screens.rpy:246
# screens.rpy:240
old "## The quick menu is displayed in-game to provide easy access to the out-of-game menus."
new "## 퀵메뉴는 게임 외 메뉴 접근성을 높여주기 위해 게임 내에 표시됩니다."
# screens.rpy:261
# screens.rpy:256
old "Back"
new "뒤로"
new "되감기"
# screens.rpy:262
# screens.rpy:257
old "History"
new "History"
new "대사록"
# screens.rpy:263
# screens.rpy:258
old "Skip"
new "스킵"
new "넘기기"
# screens.rpy:264
# screens.rpy:259
old "Auto"
new "자동진행"
# screens.rpy:265
# screens.rpy:260
old "Save"
new "저장하기"
# screens.rpy:266
# screens.rpy:261
old "Q.Save"
new "퀵세이브"
new "Q.저장하기"
# screens.rpy:267
# screens.rpy:262
old "Q.Load"
new "퀵로드"
new "Q.불러오기"
# screens.rpy:268
# screens.rpy:263
old "Prefs"
new "설정"
# screens.rpy:271
# screens.rpy:266
old "## This code ensures that the quick_menu screen is displayed in-game, whenever the player has not explicitly hidden the interface."
new "## 플레이어가 UI(스크린)을 일부러 숨기지 않는 한 퀵메뉴가 게임 내에 오버레이로 출력되게 합니다."
# screens.rpy:291
# screens.rpy:284
old "## Main and Game Menu Screens"
new "## Main과 Game Menu 스크린"
# screens.rpy:287
old "## Navigation screen"
new "## Navigation 스크린"
# screens.rpy:293
# screens.rpy:289
old "## This screen is included in the main and game menus, and provides navigation to other menus, and to start the game."
new "## 이 스크린은 메인메뉴와 게임외 메뉴에 포함되어 다른 메뉴로 이동하거나 게임을 시작/종료할 수 있게 합니다."
# screens.rpy:308
# screens.rpy:304
old "Start"
new "시작하기"
# screens.rpy:316
# screens.rpy:312
old "Load"
new "로드"
new "불러오기"
# screens.rpy:314
old "Preferences"
new "환경설정"
# screens.rpy:318
old "Preferences"
new "환경 설정"
# screens.rpy:322
old "End Replay"
new "리플레이 끝내기"
# screens.rpy:326
# screens.rpy:322
old "Main Menu"
new "메인 메뉴"
# screens.rpy:328
# screens.rpy:324
old "About"
new "렌파이란"
new "버전정보"
# screens.rpy:332
# screens.rpy:328
old "## Help isn't necessary or relevant to mobile devices."
new "## 도움말 메뉴는 모바일 디바이스와 맞지 않아 불필요합니다."
# screens.rpy:333
# screens.rpy:329
old "Help"
new "도움말"
new "조작방법"
# screens.rpy:335
# screens.rpy:331
old "## The quit button is banned on iOS and unnecessary on Android."
new "## 종료 버튼은 iOS 규정에 어긋나고 안드로이드에는 불필요합니다."
# screens.rpy:336
# screens.rpy:332
old "Quit"
new "끝내기"
new "종료하기"
# screens.rpy:350
# screens.rpy:346
old "## Main Menu screen"
new "## Main Menu 스크린"
# screens.rpy:352
# screens.rpy:348
old "## Used to display the main menu when Ren'Py starts."
new "## 렌파이가 시작할 때 메인메뉴를 출력합니다."
# screens.rpy:354
old "## http://www.renpy.org/doc/html/screen_special.html#main-menu"
new "## http://www.renpy.org/doc/html/screen_special.html#main-menu"
old "## https://www.renpy.org/doc/html/screen_special.html#main-menu"
new "## https://www.renpy.org/doc/html/screen_special.html#main-menu"
# screens.rpy:369
# screens.rpy:365
old "## The use statement includes another screen inside this one. The actual contents of the main menu are in the navigation screen."
new "## use 명령어로 스크린 내에 다른 스크린을 불러옵니다. 메인 메뉴 스크린의 내용물은 navigation 스크린에 있습니다."
# screens.rpy:413
# screens.rpy:408
old "## Game Menu screen"
new "## Game Menu 스크린"
# screens.rpy:415
# screens.rpy:410
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 "## 게임 메뉴의 기본 틀입니다. 매개변수 title로 스크린 제목을 정하고, 배경, 제목, 그리고 navigation 스크린을 출력합니다."
# screens.rpy:418
# screens.rpy:413
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\" 중 하나여야 합니다. transclude 명령어를 통해 다른 스크린을 이 스크린 내부에 불러옵니다."
# screens.rpy:476
# screens.rpy:473
old "Return"
new "돌아가기"
# screens.rpy:539
# screens.rpy:536
old "## About screen"
new "## About 스크린"
# screens.rpy:541
# screens.rpy:538
old "## This screen gives credit and copyright information about the game and Ren'Py."
new "## 이 스크린은 게임과 렌파이 엔진 크레딧과 저작권 정보를 표시합니다."
# screens.rpy:544
# screens.rpy:541
old "## There's nothing special about this screen, and hence it also serves as an example of how to make a custom screen."
new "## 특별할 것이 없으므로 스크린을 새로 커스터마이징하여 만드는 예제이기도 합니다."
# screens.rpy:551
# screens.rpy:548
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 스크린을 이 스크린 내에 불러옵니다. use 명령어 하위블럭(vbox 내용)은 game_menu 스크린 내 transclude 명령어가 있는 곳에 다시 불려집니다."
# screens.rpy:561
# screens.rpy:558
old "Version [config.version!t]\n"
new "버젼 [config.version!t]\n"
# screens.rpy:563
# screens.rpy:560
old "## gui.about is usually set in options.rpy."
new "## gui.about 의 내용은 보통 options.rpy에 있습니다."
# screens.rpy:567
# screens.rpy:564
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]"
# screens.rpy:570
# screens.rpy:577
old "## This is redefined in options.rpy to add text to the about screen."
new "## options.rpy에서 규정된 내용이 about 스크린에 추가됩니다."
# screens.rpy:582
# screens.rpy:579
old "## Load and Save screens"
new "## Load and Save 스크린"
new "## Load 그리고 Save 스크린"
# screens.rpy:584
# screens.rpy:581
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 스크린을 불러와서 씁니다."
# screens.rpy:588
# screens.rpy:585
old "## https://www.renpy.org/doc/html/screen_special.html#save https://www.renpy.org/doc/html/screen_special.html#load"
new "## https://www.renpy.org/doc/html/screen_special.html#save https://www.renpy.org/doc/html/screen_special.html#load"
# screens.rpy:607
# screens.rpy:604
old "Page {}"
new "{} 페이지"
# screens.rpy:607
# screens.rpy:604
old "Automatic saves"
new "자동 세이브"
# screens.rpy:607
# screens.rpy:604
old "Quick saves"
new "퀵세이브"
# screens.rpy:613
# screens.rpy:610
old "## This ensures the input will get the enter event before any of the buttons do."
new "## input (페이지 제목을 플레이어가 수정할 수 있음)이 세이브/로드 버튼보다 먼저 엔터에 반응하도록 합니다."
new "## input이 세이브/로드 버튼보다 먼저 엔터에 반응하도록 합니다."
# screens.rpy:629
# screens.rpy:614
old "## The page name, which can be edited by clicking on a button."
new "## 페이지 제목을 플레이어가 수정할 수 있음."
# screens.rpy:626
old "## The grid of file slots."
new "## 파일 슬롯 그리드."
# screens.rpy:649
# screens.rpy:646
old "{#file_time}%A, %B %d %Y, %H:%M"
new "{#file_time}%A, %B %d %Y, %H:%M"
# screens.rpy:649
# screens.rpy:646
old "empty slot"
new "빈 슬롯"
# screens.rpy:657
# screens.rpy:654
old "## Buttons to access other pages."
new "## 페이지 이동 버튼."
# screens.rpy:666
# screens.rpy:663
old "<"
new "<"
# screens.rpy:668
# screens.rpy:666
old "{#auto_page}A"
new "{#auto_page}자동"
# screens.rpy:670
# screens.rpy:669
old "{#quick_page}Q"
new "{#quick_page}퀵"
# screens.rpy:676
# screens.rpy:671
old "## range(1, 10) gives the numbers from 1 to 9."
new "## 범위(1, 10)는 1부터 9까지 숫자를 제공합니다."
# screens.rpy:675
old ">"
new ">"
# screens.rpy:711
# screens.rpy:710
old "## Preferences screen"
new "## Preferences 스크린"
# screens.rpy:713
# screens.rpy:712
old "## The preferences screen allows the player to configure the game to better suit themselves."
new "## Preferences 스크린에서는 각종 환경설정을 플레이어가 지정할 수 있습니다."
# screens.rpy:716
# screens.rpy:715
old "## https://www.renpy.org/doc/html/screen_special.html#preferences"
new "## https://www.renpy.org/doc/html/screen_special.html#preferences"
# screens.rpy:738
# screens.rpy:732
old "Display"
new "화면 모드"
# screens.rpy:739
# screens.rpy:733
old "Window"
new "창 모드"
new "창 화면"
# screens.rpy:740
# screens.rpy:734
old "Fullscreen"
new "전체 화면 모드"
new "전체 화면"
# screens.rpy:744
# screens.rpy:738
old "Rollback Side"
new "롤백 클릭 옵션"
new "측면 되감기"
# screens.rpy:745
# screens.rpy:739
old "Disable"
new "비활성화"
# screens.rpy:746
# screens.rpy:740
old "Left"
new "화면 왼쪽 클릭"
# screens.rpy:747
# screens.rpy:741
old "Right"
new "화면 오른쪽 클릭"
# screens.rpy:752
# screens.rpy:746
old "Unseen Text"
new "읽지 않은 텍스트까지 모두 스킵"
new "읽지 않은 지문"
# screens.rpy:753
# screens.rpy:747
old "After Choices"
new "선택지 이후에도 스킵"
new "선택지 이후"
# screens.rpy:754
# screens.rpy:748
old "Transitions"
new "화면 전환 효과를 모두 스킵"
new "화면 전환 효과"
# screens.rpy:756
# screens.rpy:750
old "## Additional vboxes of type \"radio_pref\" or \"check_pref\" can be added here, to add additional creator-defined preferences."
new "## \"radio_pref\" 나 \"check_pref\" 를 추가하여 그 외에도 환경설정 항목을 추가할 수 있습니다."
# screens.rpy:767
# screens.rpy:761
old "Text Speed"
new "텍스트 속도"
# screens.rpy:771
# screens.rpy:765
old "Auto-Forward Time"
new "자동 진행 시간"
# screens.rpy:778
# screens.rpy:772
old "Music Volume"
new "배경음악 크기"
new "배경음 음량"
# screens.rpy:779
old "Sound Volume"
new "효과음 음량"
# screens.rpy:785
old "Sound Volume"
new "효과음 크기"
# screens.rpy:791
old "Test"
new "테스트"
# screens.rpy:795
# screens.rpy:789
old "Voice Volume"
new "음성 크기"
new "음성 음량"
# screens.rpy:806
# screens.rpy:800
old "Mute All"
new "모두 음소거"
# screens.rpy:882
# screens.rpy:876
old "## History screen"
new "## History 스크린"
# screens.rpy:884
# screens.rpy:878
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 에 저장된 대사 기록을 확인합니다."
# screens.rpy:888
# screens.rpy:882
old "## https://www.renpy.org/doc/html/history.html"
new "## https://www.renpy.org/doc/html/history.html"
# screens.rpy:894
# screens.rpy:888
old "## Avoid predicting this screen, as it can be very large."
new "## 이 스크린은 내용이 아주 많을 수 있으므로 prediction을 끕니다."
# screens.rpy:905
# screens.rpy:899
old "## This lays things out properly if history_height is None."
new "## history_height 이 None일 경우 레이아웃이 틀어지지 않게 합니다."
# screens.rpy:914
# screens.rpy:909
old "## Take the color of the who text from the Character, if set."
new "## 화자 Character에 화자 색깔이 지정되어 있으면 불러옵니다."
# screens.rpy:921
# screens.rpy:918
old "The dialogue history is empty."
new "대사가 없습니다."
# screens.rpy:965
# screens.rpy:921
old "## This determines what tags are allowed to be displayed on the history screen."
new "## 이것은 대사록 화면에 표시할 수 있는 태그를 결정합니다."
# screens.rpy:968
old "## Help screen"
new "## Help 스크린"
# screens.rpy:967
# screens.rpy:970
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 스크린을 각각 불러와서 출력합니다."
# screens.rpy:986
# screens.rpy:989
old "Keyboard"
new "키보드"
# screens.rpy:987
# screens.rpy:990
old "Mouse"
new "마우스"
# screens.rpy:990
# screens.rpy:993
old "Gamepad"
new "게임패드"
# screens.rpy:1003
# screens.rpy:1006
old "Enter"
new "Enter"
new "엔터(Enter)"
# screens.rpy:1004
# screens.rpy:1007
old "Advances dialogue and activates the interface."
new "대사 진행 및 UI (선택지 포함) 선택."
# screens.rpy:1007
# screens.rpy:1010
old "Space"
new "Space"
new "스페이스(Space)"
# screens.rpy:1008
# screens.rpy:1011
old "Advances dialogue without selecting choices."
new "대사를 진행하되 선택지는 선택하지 않음."
# screens.rpy:1011
# screens.rpy:1014
old "Arrow Keys"
new "화살표 키"
# screens.rpy:1012
# screens.rpy:1015
old "Navigate the interface."
new "UI 이동."
# screens.rpy:1015
# screens.rpy:1018
old "Escape"
new "Esc"
new "이스케이프(Esc)"
# screens.rpy:1016
# screens.rpy:1019
old "Accesses the game menu."
new "게임 메뉴 불러옴."
# screens.rpy:1019
# screens.rpy:1022
old "Ctrl"
new "Ctrl"
new "컨트롤(Ctrl)"
# screens.rpy:1020
# screens.rpy:1023
old "Skips dialogue while held down."
new "누르고 있는 동안 대사를 스킵."
# screens.rpy:1023
# screens.rpy:1026
old "Tab"
new "Tab"
new "탭(Tab)"
# screens.rpy:1024
# screens.rpy:1027
old "Toggles dialogue skipping."
new "대사 스킵 토글."
# screens.rpy:1027
# screens.rpy:1030
old "Page Up"
new "Page Up"
new "페이지 업(Page Up)"
# screens.rpy:1028
# screens.rpy:1031
old "Rolls back to earlier dialogue."
new "이전 대사로 롤백."
# screens.rpy:1031
# screens.rpy:1034
old "Page Down"
new "Page Down"
new "페이지 다운(Page Down)"
# screens.rpy:1032
# screens.rpy:1035
old "Rolls forward to later dialogue."
new "이후 대사로 롤포워드."
# screens.rpy:1036
# screens.rpy:1039
old "Hides the user interface."
new "UI를 숨김."
# screens.rpy:1040
# screens.rpy:1043
old "Takes a screenshot."
new "스크린샷 저장."
# screens.rpy:1044
# screens.rpy:1047
old "Toggles assistive {a=https://www.renpy.org/l/voicing}self-voicing{/a}."
new "{a=https://www.renpy.org/l/voicing}대사 읽어주기 기능{/a} 토글."
# screens.rpy:1050
# screens.rpy:1056
old "Left Click"
new "클릭"
# screens.rpy:1054
# screens.rpy:1057
old "Middle Click"
new "가운데 버튼이나 휠버튼 클릭"
# screens.rpy:1058
# screens.rpy:1061
old "Right Click"
new "우클릭"
# screens.rpy:1062
# screens.rpy:1065
old "Mouse Wheel Up\nClick Rollback Side"
new "휠 위로\n롤백 클릭"
# screens.rpy:1066
# screens.rpy:1069
old "Mouse Wheel Down"
new "휠 아래로"
# screens.rpy:1073
# screens.rpy:1076
old "Right Trigger\nA/Bottom Button"
new "오른쪽 트리거(RT)\nA버튼/아래 버튼"
# screens.rpy:1074
old "Advance dialogue and activates the interface."
new "대사 진행 및 UI (선택지 포함) 선택."
# screens.rpy:1078
old "Roll back to earlier dialogue."
new "이전 대사로 롤백."
# screens.rpy:1081
# screens.rpy:1084
old "Right Shoulder"
new "오른쪽 범퍼(RB)"
# screens.rpy:1082
old "Roll forward to later dialogue."
new "이후 대사로 롤포워드."
# screens.rpy:1085
old "D-Pad, Sticks"
new "D-Pad, 아날로그 스틱"
# screens.rpy:1089
old "Start, Guide"
new "스타스 버튼/가이드 버튼"
# screens.rpy:1090
old "Access the game menu."
new "게임 메뉴 불러옴."
# screens.rpy:1093
old "Start, Guide"
new "스타트 버튼/가이드 버튼"
# screens.rpy:1097
old "Y/Top Button"
new "Y버튼/위 버튼"
# screens.rpy:1096
# screens.rpy:1100
old "Calibrate"
new "조정"
# screens.rpy:1124
# screens.rpy:1128
old "## Additional screens"
new "## 그 외 스크린"
# screens.rpy:1128
# screens.rpy:1132
old "## Confirm screen"
new "## Confirm 스크린"
# screens.rpy:1130
# screens.rpy:1134
old "## The confirm screen is called when Ren'Py wants to ask the player a yes or no question."
new "## 게임 입력 관련 예/아니오 질문을 플레이어에게 할 때 이 스크린을 표시합니다."
# screens.rpy:1133
old "## http://www.renpy.org/doc/html/screen_special.html#confirm"
new "## http://www.renpy.org/doc/html/screen_special.html#confirm"
# screens.rpy:1137
old "## https://www.renpy.org/doc/html/screen_special.html#confirm"
new "## https://www.renpy.org/doc/html/screen_special.html#confirm"
# screens.rpy:1141
old "## Ensure other screens do not get input while this screen is displayed."
new "## 이 스크린이 출력 중일 때 다른 스크린과 상호작용할 수 없게 합니다."
# screens.rpy:1161
# screens.rpy:1165
old "Yes"
new "네"
# screens.rpy:1162
# screens.rpy:1166
old "No"
new "아니오"
# screens.rpy:1164
# screens.rpy:1168
old "## Right-click and escape answer \"no\"."
new "## 우클릭과 esc는 '아니오'를 입력하는 것과 같습니다."
# screens.rpy:1191
# screens.rpy:1195
old "## Skip indicator screen"
new "## Skip indicator 스크린"
# screens.rpy:1193
# screens.rpy:1197
old "## The skip_indicator screen is displayed to indicate that skipping is in progress."
new "## Skip_indicator 스크린은 스킵 중일 때 \"스킵 중\"을 표시하기 위해 출력됩니다."
# screens.rpy:1196
# screens.rpy:1200
old "## https://www.renpy.org/doc/html/screen_special.html#skip-indicator"
new "## https://www.renpy.org/doc/html/screen_special.html#skip-indicator"
# screens.rpy:1208
# screens.rpy:1212
old "Skipping"
new "스킵 중"
new "넘기는 중"
# screens.rpy:1215
# screens.rpy:1219
old "## This transform is used to blink the arrows one after another."
new "## 이 transform으로 화살표를 순서대로 페이드인/페이드아웃합니다."
# screens.rpy:1247
# screens.rpy:1246
old "## We have to use a font that has the BLACK RIGHT-POINTING SMALL TRIANGLE glyph in it."
new "## BLACK RIGHT-POINTING SMALL TRIANGLE 글리프가 있는 글꼴을 사용해야 합니다."
# screens.rpy:1251
old "## Notify screen"
new "## Notify 스크린"
# screens.rpy:1249
# screens.rpy:1253
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 "## Notify 스크린으로 플레이어에게 메시지를 출력합니다. (예를 들어 '퀵세이브 완료'나 '스크린샷 저장 완료')"
# screens.rpy:1252
# screens.rpy:1256
old "## https://www.renpy.org/doc/html/screen_special.html#notify-screen"
new "## https://www.renpy.org/doc/html/screen_special.html#notify-screen"
# screens.rpy:1286
# screens.rpy:1290
old "## NVL screen"
new "## NVL 스크린"
# screens.rpy:1288
# screens.rpy:1292
old "## This screen is used for NVL-mode dialogue and menus."
new "## NVL모드 대사와 선택지를 출력합니다."
# screens.rpy:1290
old "## http://www.renpy.org/doc/html/screen_special.html#nvl"
new "## http://www.renpy.org/doc/html/screen_special.html#nvl"
# screens.rpy:1294
old "## https://www.renpy.org/doc/html/screen_special.html#nvl"
new "## https://www.renpy.org/doc/html/screen_special.html#nvl"
# screens.rpy:1301
# screens.rpy:1305
old "## Displays dialogue in either a vpgrid or the vbox."
new "## vpgrid나 vbox 내에 대사를 출력합니다."
# screens.rpy:1314
# screens.rpy:1318
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일 경우 선택지가 비정상적으로 출력될 수 있습니다. (디폴트는 True입니다.)"
# screens.rpy:1344
# screens.rpy:1348
old "## This controls the maximum number of NVL-mode entries that can be displayed at once."
new "## 동시에 출력될 수 있는 NVL 대사의 최대치를 조정합니다."
# screens.rpy:1406
# screens.rpy:1410
old "## Mobile Variants"
new "## 모바일 버"
new "## 모바일 버"
# screens.rpy:1413
# screens.rpy:1417
old "## Since a mouse may not be present, we replace the quick menu with a version that uses fewer and bigger buttons that are easier to touch."
new "## 마우스가 없고 화면이 작을 가능성이 높으므로, 퀵메뉴 버튼의 크기를 키우고 가짓수를 줄입니다."
# screens.rpy:1429
# screens.rpy:1433
old "Menu"
new "메뉴"
+1 -2
View File
@@ -913,7 +913,7 @@
new "Direktori projek tidak boleh ditetapkan. Putus asa."
# new_project.rpy:71
old "You will be creating an [new_project_language] language project. Change the launcher language in preferences to create a project in another language."
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."
new "Anda akan mencipta projek bahasa [new_project_language]. Tukar bahasa pelancar dalam menu keutamaan untuk mencipta projek dalam bahasa yang lain."
# new_project.rpy:79
@@ -1263,4 +1263,3 @@
# updater.rpy:201
old "Proceed"
new "Teruskan"
+34 -34
View File
@@ -181,23 +181,23 @@ translate piglatin strings:
old "File page [text]"
new "Ilefay agepay [text]"
# 00action_file.rpy:763
# 00action_file.rpy:772
old "Next file page."
new "Extnay ilefay agepay."
# 00action_file.rpy:827
# 00action_file.rpy:845
old "Previous file page."
new "Reviouspay ilefay agepay."
# 00action_file.rpy:888
# 00action_file.rpy:906
old "Quick save complete."
new "Uickqay avesay ompletecay."
# 00action_file.rpy:906
# 00action_file.rpy:924
old "Quick save."
new "Uickqay avesay."
# 00action_file.rpy:925
# 00action_file.rpy:943
old "Quick load."
new "Uickqay oadlay."
@@ -297,43 +297,43 @@ translate piglatin strings:
old "Audio Filename:"
new "Udioaay Ilenamefay:"
# 00gui.rpy:370
# 00gui.rpy:371
old "Are you sure?"
new "Reaay ouyay uresay?"
# 00gui.rpy:371
# 00gui.rpy:372
old "Are you sure you want to delete this save?"
new "Reaay ouyay uresay ouyay antway otay eleteday histay avesay?"
# 00gui.rpy:372
# 00gui.rpy:373
old "Are you sure you want to overwrite your save?"
new "Reaay ouyay uresay ouyay antway otay overwriteay ouryay avesay?"
# 00gui.rpy:373
# 00gui.rpy:374
old "Loading will lose unsaved progress.\nAre you sure you want to do this?"
new "Oadinglay illway oselay unsaveday rogresspay.\nReaay ouyay uresay ouyay antway otay oday histay?"
# 00gui.rpy:374
# 00gui.rpy:375
old "Are you sure you want to quit?"
new "Reaay ouyay uresay ouyay antway otay uitqay?"
# 00gui.rpy:375
# 00gui.rpy:376
old "Are you sure you want to return to the main menu?\nThis will lose unsaved progress."
new "Reaay ouyay uresay ouyay antway otay eturnray otay hetay ainmay enumay?\nHistay illway oselay unsaveday rogresspay."
# 00gui.rpy:376
# 00gui.rpy:377
old "Are you sure you want to end the replay?"
new "Reaay ouyay uresay ouyay antway otay enday hetay eplayray?"
# 00gui.rpy:377
# 00gui.rpy:378
old "Are you sure you want to begin skipping?"
new "Reaay ouyay uresay ouyay antway otay eginbay kippingsay?"
# 00gui.rpy:378
# 00gui.rpy:379
old "Are you sure you want to skip to the next choice?"
new "Reaay ouyay uresay ouyay antway otay kipsay otay hetay extnay oicechay?"
# 00gui.rpy:379
# 00gui.rpy:380
old "Are you sure you want to skip unseen dialogue to the next choice?"
new "Reaay ouyay uresay ouyay antway otay kipsay unseenay ialogueday otay hetay extnay oicechay?"
@@ -345,59 +345,59 @@ translate piglatin strings:
old "Saved screenshot as %s."
new "Avedsay creenshotsay asay %say."
# 00library.rpy:146
# 00library.rpy:168
old "Self-voicing disabled."
new "Elfsay-oicingvay isabledday."
# 00library.rpy:147
# 00library.rpy:169
old "Clipboard voicing enabled. "
new "Lipboardcay oicingvay enableday. "
# 00library.rpy:148
# 00library.rpy:170
old "Self-voicing enabled. "
new "Elfsay-oicingvay enableday. "
# 00library.rpy:150
# 00library.rpy:172
old "bar"
new "arbay"
# 00library.rpy:151
# 00library.rpy:173
old "selected"
new "electedsay"
# 00library.rpy:152
# 00library.rpy:174
old "viewport"
new "iewportvay"
# 00library.rpy:153
# 00library.rpy:175
old "horizontal scroll"
new "orizontalhay crollsay"
# 00library.rpy:154
# 00library.rpy:176
old "vertical scroll"
new "erticalvay crollsay"
# 00library.rpy:155
# 00library.rpy:177
old "activate"
new "activateay"
# 00library.rpy:156
# 00library.rpy:178
old "deactivate"
new "eactivateday"
# 00library.rpy:157
# 00library.rpy:179
old "increase"
new "increaseay"
# 00library.rpy:158
# 00library.rpy:180
old "decrease"
new "ecreaseday"
# 00library.rpy:193
# 00library.rpy:215
old "Skip Mode"
new "Kipsay Odemay"
# 00library.rpy:279
# 00library.rpy:301
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}."
@@ -633,23 +633,23 @@ translate piglatin strings:
old "The updates were cancelled."
new "Hetay updatesay ereway ancelledcay."
# 00gallery.rpy:585
# 00gallery.rpy:587
old "Image [index] of [count] locked."
new "Mageiay [index] ofay [count] ockedlay."
# 00gallery.rpy:605
# 00gallery.rpy:607
old "prev"
new "revpay"
# 00gallery.rpy:606
# 00gallery.rpy:608
old "next"
new "extnay"
# 00gallery.rpy:607
# 00gallery.rpy:609
old "slideshow"
new "ideshowslay"
# 00gallery.rpy:608
# 00gallery.rpy:610
old "return"
new "eturnray"
+45 -29
View File
@@ -49,55 +49,63 @@ translate piglatin strings:
old "[name] [attributes]"
new "[name] [attributes]"
# _developer/developer.rpym:137
# _developer/developer.rpym:143
old "Nothing to inspect."
new "Othingnay otay inspectay."
# _developer/developer.rpym:265
# _developer/developer.rpym:154
old "Hide deleted"
new "Idehay eletedday"
# _developer/developer.rpym:154
old "Show deleted"
new "Howsay eletedday"
# _developer/developer.rpym:278
old "Return to the developer menu"
new "Eturnray otay hetay eveloperday enumay"
# _developer/developer.rpym:425
# _developer/developer.rpym:438
old "Rectangle: %r"
new "Ectangleray: %ray"
# _developer/developer.rpym:430
# _developer/developer.rpym:443
old "Mouse position: %r"
new "Ousemay ositionpay: %ray"
# _developer/developer.rpym:435
# _developer/developer.rpym:448
old "Right-click or escape to quit."
new "Ightray-ickclay oray escapeay otay uitqay."
# _developer/developer.rpym:467
# _developer/developer.rpym:480
old "Rectangle copied to clipboard."
new "Ectangleray opiedcay otay ipboardclay."
# _developer/developer.rpym:470
# _developer/developer.rpym:483
old "Position copied to clipboard."
new "Ositionpay opiedcay otay ipboardclay."
# _developer/developer.rpym:489
# _developer/developer.rpym:502
old "Type to filter: "
new "Ypetay otay ilterfay: "
# _developer/developer.rpym:617
# _developer/developer.rpym:630
old "Textures: [tex_count] ([tex_size_mb:.1f] MB)"
new "Exturestay: [tex_count] ([tex_size_mb:.1f] Bmay)"
# _developer/developer.rpym:621
# _developer/developer.rpym:634
old "Image cache: [cache_pct:.1f]% ([cache_size_mb:.1f] MB)"
new "Mageiay achecay: [cache_pct:.1f]% ([cache_size_mb:.1f] Bmay)"
# _developer/developer.rpym:631
# _developer/developer.rpym:644
old "✔ "
new "✔ "
# _developer/developer.rpym:634
# _developer/developer.rpym:647
old "✘ "
new "✘ "
# _developer/developer.rpym:639
# _developer/developer.rpym:652
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}✔ redictedpay imageay (oodgay){/color}\n{color=#fcc}✘ unpredicteday imageay (adbay){/color}\n{color=#fff}Ragday otay ovemay.{/color}"
@@ -137,67 +145,75 @@ translate piglatin strings:
old "<repr() failed>"
new "<eprray() ailedfay>"
# 00console.rpy:255
# 00console.rpy:271
old "Press <esc> to exit console. Type help for help.\n"
new "Resspay <escay> otay exitay onsolecay. Ypetay elphay orfay elphay.\n"
# 00console.rpy:259
# 00console.rpy:275
old "Ren'Py script enabled."
new "Enray'Ypay criptsay enableday."
# 00console.rpy:261
# 00console.rpy:277
old "Ren'Py script disabled."
new "Enray'Ypay criptsay isabledday."
# 00console.rpy:496
# 00console.rpy:524
old "help: show this help"
new "elphay: owshay histay elphay"
# 00console.rpy:501
# 00console.rpy:529
old "commands:\n"
new "ommandscay:\n"
# 00console.rpy:511
# 00console.rpy:539
old " <renpy script statement>: run the statement\n"
new " <enpyray criptsay atementstay>: unray hetay atementstay\n"
# 00console.rpy:513
# 00console.rpy:541
old " <python expression or statement>: run the expression or statement"
new " <ythonpay expressionay oray atementstay>: unray hetay expressionay oray atementstay"
# 00console.rpy:521
# 00console.rpy:549
old "clear: clear the console history"
new "earclay: earclay hetay onsolecay istoryhay"
# 00console.rpy:525
# 00console.rpy:553
old "exit: exit the console"
new "exitay: exitay hetay onsolecay"
# 00console.rpy:533
# 00console.rpy:561
old "load <slot>: loads the game from slot"
new "oadlay <otslay>: oadslay hetay amegay omfray otslay"
# 00console.rpy:546
# 00console.rpy:574
old "save <slot>: saves the game in slot"
new "avesay <otslay>: avessay hetay amegay inay otslay"
# 00console.rpy:557
# 00console.rpy:585
old "reload: reloads the game, refreshing the scripts"
new "eloadray: eloadsray hetay amegay, efreshingray hetay criptssay"
# 00console.rpy:565
# 00console.rpy:593
old "watch <expression>: watch a python expression"
new "atchway <expressionay>: atchway aay ythonpay expressionay"
# 00console.rpy:591
# 00console.rpy:619
old "unwatch <expression>: stop watching an expression"
new "unwatchay <expressionay>: opstay atchingway anay expressionay"
# 00console.rpy:622
# 00console.rpy:650
old "unwatchall: stop watching all expressions"
new "unwatchallay: opstay atchingway allay expressionsay"
# 00console.rpy:639
# 00console.rpy:667
old "jump <label>: jumps to label"
new "umpjay <abellay>: umpsjay otay abellay"
# 00console.rpy:680
old "short: Shorten the representation of objects on the console (default)."
new "ortshay: Hortensay hetay epresentationray ofay objectsay onay hetay onsolecay (efaultday)."
# 00console.rpy:685
old "long: Print the full representation of objects on the console."
new "onglay: Rintpay hetay ullfay epresentationray ofay objectsay onay hetay onsolecay."
+36 -24
View File
@@ -141,75 +141,87 @@ translate piglatin strings:
old "Back (B)"
new "Ackbay (Bay)"
# _errorhandling.rpym:529
# _errorhandling.rpym:535
old "Open"
new "Penoay"
# _errorhandling.rpym:531
# _errorhandling.rpym:537
old "Opens the traceback.txt file in a text editor."
new "Pensoay hetay acebacktray.xttay ilefay inay aay exttay editoray."
# _errorhandling.rpym:533
old "Copy"
new "Opycay"
# _errorhandling.rpym:539
old "Copy BBCode"
new "Opycay Bcodebay"
# _errorhandling.rpym:535
old "Copies the traceback.txt file to the clipboard."
new "Opiescay hetay acebacktray.xttay ilefay otay hetay ipboardclay."
# _errorhandling.rpym:541
old "Copies the traceback.txt file to the clipboard as BBcode for forums like https://lemmasoft.renai.us/."
new "Opiescay hetay acebacktray.xttay ilefay otay hetay ipboardclay asay Bcodebay orfay orumsfay ikelay ttpshay://emmasoftlay.enairay.usay/."
# _errorhandling.rpym:562
# _errorhandling.rpym:543
old "Copy Markdown"
new "Opycay Arkdownmay"
# _errorhandling.rpym:545
old "Copies the traceback.txt file to the clipboard as Markdown for Discord."
new "Opiescay hetay acebacktray.xttay ilefay otay hetay ipboardclay asay Arkdownmay orfay Iscordday."
# _errorhandling.rpym:574
old "An exception has occurred."
new "Naay exceptionay ashay occurreday."
# _errorhandling.rpym:582
# _errorhandling.rpym:594
old "Rollback"
new "Ollbackray"
# _errorhandling.rpym:584
# _errorhandling.rpym:596
old "Attempts a roll back to a prior time, allowing you to save or choose a different choice."
new "Ttemptsaay aay ollray ackbay otay aay riorpay imetay, allowingay ouyay otay avesay oray oosechay aay ifferentday oicechay."
# _errorhandling.rpym:587
# _errorhandling.rpym:599
old "Ignore"
new "Gnoreiay"
# _errorhandling.rpym:591
# _errorhandling.rpym:603
old "Ignores the exception, allowing you to continue."
new "Gnoresiay hetay exceptionay, allowingay ouyay otay ontinuecay."
# _errorhandling.rpym:593
# _errorhandling.rpym:605
old "Ignores the exception, allowing you to continue. This often leads to additional errors."
new "Gnoresiay hetay exceptionay, allowingay ouyay otay ontinuecay. Histay oftenay eadslay otay additionalay errorsay."
# _errorhandling.rpym:597
# _errorhandling.rpym:609
old "Reload"
new "Eloadray"
# _errorhandling.rpym:599
# _errorhandling.rpym:611
old "Reloads the game from disk, saving and restoring game state if possible."
new "Eloadsray hetay amegay omfray iskday, avingsay anday estoringray amegay atestay ifay ossiblepay."
# _errorhandling.rpym:602
# _errorhandling.rpym:614
old "Console"
new "Onsolecay"
# _errorhandling.rpym:604
# _errorhandling.rpym:616
old "Opens a console to allow debugging the problem."
new "Pensoay aay onsolecay otay alloway ebuggingday hetay roblempay."
# _errorhandling.rpym:614
# _errorhandling.rpym:626
old "Quits the game."
new "Uitsqay hetay amegay."
# _errorhandling.rpym:638
# _errorhandling.rpym:650
old "Parsing the script failed."
new "Arsingpay hetay criptsay ailedfay."
# _errorhandling.rpym:664
# _errorhandling.rpym:676
old "Opens the errors.txt file in a text editor."
new "Pensoay hetay errorsay.xttay ilefay inay aay exttay editoray."
# _errorhandling.rpym:668
old "Copies the errors.txt file to the clipboard."
new "Opiescay hetay errorsay.xttay ilefay otay hetay ipboardclay."
# _errorhandling.rpym:680
old "Copies the errors.txt file to the clipboard as BBcode for forums like https://lemmasoft.renai.us/."
new "Opiescay hetay errorsay.xttay ilefay otay hetay ipboardclay asay Bcodebay orfay orumsfay ikelay ttpshay://emmasoftlay.enairay.usay/."
# _errorhandling.rpym:684
old "Copies the errors.txt file to the clipboard as Markdown for Discord."
new "Opiescay hetay errorsay.xttay ilefay otay hetay ipboardclay asay Arkdownmay orfay Iscordday."
+57 -57
View File
@@ -139,7 +139,7 @@ translate piglatin strings:
# gui.rpy:124
old "## If True, the background of the namebox will be tiled, if False, the background of the namebox will be scaled."
new "## Fiay Ruetay, hetay ackgroundbay ofay hetay ameboxnay illway ebay iledtay, ifay Alsefay, hetay ackgroundbay ifay hetay ameboxnay illway ebay caledsay."
new "## Fiay Ruetay, hetay ackgroundbay ofay hetay ameboxnay illway ebay iledtay, ifay Alsefay, hetay ackgroundbay ofay hetay ameboxnay illway ebay caledsay."
# gui.rpy:129
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."
@@ -209,227 +209,227 @@ translate piglatin strings:
old "## Choice buttons are used in the in-game menus."
new "## Hoicecay uttonsbay areay useday inay hetay inay-amegay enusmay."
# gui.rpy:217
# gui.rpy:218
old "## File Slot Buttons"
new "## Ilefay Lotsay Uttonsbay"
# gui.rpy:219
# gui.rpy:220
old "## A file slot button is a special kind of button. It contains a thumbnail image, and text describing the contents of the save slot. A save slot uses image files in gui/button, like the other kinds of buttons."
new "## Aay ilefay otslay uttonbay isay aay pecialsay indkay ofay uttonbay. Tiay ontainscay aay humbnailtay imageay, anday exttay escribingday hetay ontentscay ofay hetay avesay otslay. Aay avesay otslay usesay imageay ilesfay inay uigay/uttonbay, ikelay hetay otheray indskay ofay uttonsbay."
# gui.rpy:223
# gui.rpy:224
old "## The save slot button."
new "## Hetay avesay otslay uttonbay."
# gui.rpy:233
# gui.rpy:234
old "## The width and height of thumbnails used by the save slots."
new "## Hetay idthway anday eighthay ofay humbnailstay useday ybay hetay avesay otsslay."
# gui.rpy:237
# gui.rpy:238
old "## The number of columns and rows in the grid of save slots."
new "## Hetay umbernay ofay olumnscay anday owsray inay hetay idgray ofay avesay otsslay."
# gui.rpy:242
# gui.rpy:243
old "## Positioning and Spacing"
new "## Ositioningpay anday Pacingsay"
# gui.rpy:244
# gui.rpy:245
old "## These variables control the positioning and spacing of various user interface elements."
new "## Hesetay ariablesvay ontrolcay hetay ositioningpay anday pacingsay ofay ariousvay useray interfaceay elementsay."
# gui.rpy:247
# gui.rpy:248
old "## The position of the left side of the navigation buttons, relative to the left side of the screen."
new "## Hetay ositionpay ofay hetay eftlay idesay ofay hetay avigationnay uttonsbay, elativeray otay hetay eftlay idesay ofay hetay creensay."
# gui.rpy:251
# gui.rpy:252
old "## The vertical position of the skip indicator."
new "## Hetay erticalvay ositionpay ofay hetay kipsay indicatoray."
# gui.rpy:254
# gui.rpy:255
old "## The vertical position of the notify screen."
new "## Hetay erticalvay ositionpay ofay hetay otifynay creensay."
# gui.rpy:257
# gui.rpy:258
old "## The spacing between menu choices."
new "## Hetay pacingsay etweenbay enumay oiceschay."
# gui.rpy:260
# gui.rpy:261
old "## Buttons in the navigation section of the main and game menus."
new "## Uttonsbay inay hetay avigationnay ectionsay ofay hetay ainmay anday amegay enusmay."
# gui.rpy:263
# gui.rpy:264
old "## Controls the amount of spacing between preferences."
new "## Ontrolscay hetay amountay ofay pacingsay etweenbay referencespay."
# gui.rpy:266
# gui.rpy:267
old "## Controls the amount of spacing between preference buttons."
new "## Ontrolscay hetay amountay ofay pacingsay etweenbay referencepay uttonsbay."
# gui.rpy:269
# gui.rpy:270
old "## The spacing between file page buttons."
new "## Hetay pacingsay etweenbay ilefay agepay uttonsbay."
# gui.rpy:272
# gui.rpy:273
old "## The spacing between file slots."
new "## Hetay pacingsay etweenbay ilefay otsslay."
# gui.rpy:275
# gui.rpy:276
old "## The position of the main menu text."
new "## Hetay ositionpay ofay hetay ainmay enumay exttay."
# gui.rpy:279
# gui.rpy:280
old "## Frames"
new "## Ramesfay"
# gui.rpy:281
# gui.rpy:282
old "## These variables control the look of frames that can contain user interface components when an overlay or window is not present."
new "## Hesetay ariablesvay ontrolcay hetay ooklay ofay amesfray hattay ancay ontaincay useray interfaceay omponentscay henway anay overlayay oray indowway isay otnay resentpay."
# gui.rpy:284
# gui.rpy:285
old "## Generic frames."
new "## Enericgay amesfray."
# gui.rpy:287
# gui.rpy:288
old "## The frame that is used as part of the confirm screen."
new "## Hetay amefray hattay isay useday asay artpay ofay hetay onfirmcay creensay."
# gui.rpy:290
# gui.rpy:291
old "## The frame that is used as part of the skip screen."
new "## Hetay amefray hattay isay useday asay artpay ofay hetay kipsay creensay."
# gui.rpy:293
# gui.rpy:294
old "## The frame that is used as part of the notify screen."
new "## Hetay amefray hattay isay useday asay artpay ofay hetay otifynay creensay."
# gui.rpy:296
# gui.rpy:297
old "## Should frame backgrounds be tiled?"
new "## Houldsay amefray ackgroundsbay ebay iledtay?"
# gui.rpy:300
# gui.rpy:301
old "## Bars, Scrollbars, and Sliders"
new "## Arsbay, Crollbarssay, anday Liderssay"
# gui.rpy:302
# gui.rpy:303
old "## These control the look and size of bars, scrollbars, and sliders."
new "## Hesetay ontrolcay hetay ooklay anday izesay ofay arsbay, crollbarssay, anday idersslay."
# gui.rpy:304
# gui.rpy:305
old "## The default GUI only uses sliders and vertical scrollbars. All of the other bars are only used in creator-written screens."
new "## Hetay efaultday Uigay onlyay usesay idersslay anday erticalvay crollbarssay. Llaay ofay hetay otheray arsbay areay onlyay useday inay reatorcay-rittenway creenssay."
# gui.rpy:307
# gui.rpy:308
old "## The height of horizontal bars, scrollbars, and sliders. The width of vertical bars, scrollbars, and sliders."
new "## Hetay eighthay ofay orizontalhay arsbay, crollbarssay, anday idersslay. Hetay idthway ofay erticalvay arsbay, crollbarssay, anday idersslay."
# gui.rpy:313
# gui.rpy:314
old "## True if bar images should be tiled. False if they should be linearly scaled."
new "## Ruetay ifay arbay imagesay ouldshay ebay iledtay. Alsefay ifay heytay ouldshay ebay inearlylay caledsay."
# gui.rpy:318
# gui.rpy:319
old "## Horizontal borders."
new "## Orizontalhay ordersbay."
# gui.rpy:323
# gui.rpy:324
old "## Vertical borders."
new "## Erticalvay ordersbay."
# gui.rpy:328
# gui.rpy:329
old "## What to do with unscrollable scrollbars in the gui. \"hide\" hides them, while None shows them."
new "## Hatway otay oday ithway unscrollableay crollbarssay inay hetay uigay. \"idehay\" ideshay hemtay, hileway Onenay owsshay hemtay."
# gui.rpy:333
# gui.rpy:334
old "## History"
new "## Istoryhay"
# gui.rpy:335
# gui.rpy:336
old "## The history screen displays dialogue that the player has already dismissed."
new "## Hetay istoryhay creensay isplaysday ialogueday hattay hetay ayerplay ashay alreadyay ismissedday."
# gui.rpy:337
# gui.rpy:338
old "## The number of blocks of dialogue history Ren'Py will keep."
new "## Hetay umbernay ofay ocksblay ofay ialogueday istoryhay Enray'Ypay illway eepkay."
# gui.rpy:340
# gui.rpy:341
old "## The height of a history screen entry, or None to make the height variable at the cost of performance."
new "## Hetay eighthay ofay aay istoryhay creensay entryay, oray Onenay otay akemay hetay eighthay ariablevay atay hetay ostcay ofay erformancepay."
# gui.rpy:344
# gui.rpy:345
old "## The position, width, and alignment of the label giving the name of the speaking character."
new "## Hetay ositionpay, idthway, anday alignmentay ofay hetay abellay ivinggay hetay amenay ofay hetay peakingsay aracterchay."
# gui.rpy:351
# gui.rpy:352
old "## The position, width, and alignment of the dialogue text."
new "## Hetay ositionpay, idthway, anday alignmentay ofay hetay ialogueday exttay."
# gui.rpy:358
# gui.rpy:359
old "## NVL-Mode"
new "## Vlnay-Odemay"
# gui.rpy:360
# gui.rpy:361
old "## The NVL-mode screen displays the dialogue spoken by NVL-mode characters."
new "## Hetay Vlnay-odemay creensay isplaysday hetay ialogueday pokensay ybay Vlnay-odemay aracterschay."
# gui.rpy:362
# gui.rpy:363
old "## The borders of the background of the NVL-mode background window."
new "## Hetay ordersbay ofay hetay ackgroundbay ofay hetay Vlnay-odemay ackgroundbay indowway."
# gui.rpy:365
# gui.rpy:366
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."
new "## Hetay aximummay umbernay ofay Vlnay-odemay entriesay Enray'Ypay illway isplayday. Henway oremay entriesay hantay histay areay otay ebay owshay, hetay oldestay entryay illway ebay emovedray."
# gui.rpy:369
# gui.rpy:370
old "## The height of an NVL-mode entry. Set this to None to have the entries dynamically adjust height."
new "## Hetay eighthay ofay anay Vlnay-odemay entryay. Etsay histay otay Onenay otay avehay hetay entriesay ynamicallyday adjustay eighthay."
# gui.rpy:373
# gui.rpy:374
old "## The spacing between NVL-mode entries when gui.nvl_height is None, and between NVL-mode entries and an NVL-mode menu."
new "## Hetay pacingsay etweenbay Vlnay-odemay entriesay henway uigay.vl_heightnay isay Onenay, anday etweenbay Vlnay-odemay entriesay anday anay Vlnay-odemay enumay."
# gui.rpy:390
# gui.rpy:391
old "## The position, width, and alignment of nvl_thought text (the text said by the nvl_narrator character.)"
new "## Hetay ositionpay, idthway, anday alignmentay ofay vl_thoughtnay exttay (hetay exttay aidsay ybay hetay vl_narratornay aracterchay.)"
# gui.rpy:397
# gui.rpy:398
old "## The position of nvl menu_buttons."
new "## Hetay ositionpay ofay vlnay enu_buttonsmay."
# gui.rpy:401
# gui.rpy:402
old "## Localization"
new "## Ocalizationlay"
# gui.rpy:403
# gui.rpy:404
old "## This controls where a line break is permitted. The default is suitable for most languages. A list of available values can be found at https://www.renpy.org/doc/html/style_properties.html#style-property-language"
new "## Histay ontrolscay hereway aay inelay eakbray isay ermittedpay. Hetay efaultday isay uitablesay orfay ostmay anguageslay. Aay istlay ofay availableay aluesvay ancay ebay oundfay atay ttpshay://wwway.enpyray.orgay/ocday/tmlhay/yle_propertiesstay.tmlhay#ylestay-ropertypay-anguagelay"
# gui.rpy:411
# gui.rpy:412
old "## Mobile devices"
new "## Obilemay evicesday"
# gui.rpy:416
# gui.rpy:417
old "## This increases the size of the quick buttons to make them easier to touch on tablets and phones."
new "## Histay increasesay hetay izesay ofay hetay uickqay uttonsbay otay akemay hemtay easieray otay ouchtay onay abletstay anday onesphay."
# gui.rpy:422
# gui.rpy:423
old "## This changes the size and spacing of various GUI elements to ensure they are easily visible on phones."
new "## Histay angeschay hetay izesay anday pacingsay ofay ariousvay Uigay elementsay otay ensureay heytay areay easilyay isiblevay onay onesphay."
# gui.rpy:426
# gui.rpy:427
old "## Font sizes."
new "## Ontfay izessay."
# gui.rpy:434
# gui.rpy:435
old "## Adjust the location of the textbox."
new "## Djustaay hetay ocationlay ofay hetay extboxtay."
# gui.rpy:440
# gui.rpy:441
old "## Change the size and spacing of various things."
new "## Hangecay hetay izesay anday pacingsay ofay ariousvay hingstay."
# gui.rpy:453
# gui.rpy:454
old "## File button layout."
new "## Ilefay uttonbay ayoutlay."
# gui.rpy:457
# gui.rpy:458
old "## NVL-mode."
new "## Vlnay-odemay."
+157 -125
View File
@@ -17,15 +17,19 @@ translate piglatin strings:
old "Enter the name of the script file to create."
new "Ntereay hetay amenay ofay hetay criptsay ilefay otay reatecay."
# add_file.rpy:31
# add_file.rpy:37
old "The file name may not be empty."
new "Hetay ilefay amenay aymay otnay ebay emptyay."
# add_file.rpy:41
old "The filename must have the .rpy extension."
new "Hetay ilenamefay ustmay avehay hetay .pyray extensionay."
# add_file.rpy:39
# add_file.rpy:50
old "The file already exists."
new "Hetay ilefay alreadyay existsay."
# add_file.rpy:42
# add_file.rpy:61
old "# Ren'Py automatically loads all script files ending with .rpy. To use this\n# file, define a label and jump to it from another file.\n"
new "# Enray'Ypay automaticallyay oadslay allay criptsay ilesfay endingay ithway .pyray. Otay useay histay\n# ilefay, efineday aay abellay anday umpjay otay itay omfray anotheray ilefay.\n"
@@ -34,8 +38,8 @@ translate piglatin strings:
new "Otay uildbay Ndroidaay ackagespay, easeplay ownloadday Aptray, unzipay itay, anday aceplay itay intoay hetay Enray'Ypay irectoryday. Hentay estartray hetay Enray'Ypay auncherlay."
# android.rpy:31
old "A 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=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 "Aay Avajay 8ay 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=http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html}ownloadday anday installay hetay Dkjay{/a}, hentay estartray hetay Enray'Ypay auncherlay."
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=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 "Aay 46ay-itbay/64xay Avajay 8ay 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=http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html}ownloadday anday installay hetay Dkjay{/a}, hentay estartray hetay Enray'Ypay auncherlay."
# 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."
@@ -101,75 +105,75 @@ translate piglatin strings:
old "Selects the Release build, which can be uploaded to stores. Changing between debug and release builds requires an uninstall from your device."
new "Electssay hetay Eleaseray uildbay, hichway ancay ebay uploadeday otay oresstay. Hangingcay etweenbay ebugday anday eleaseray uildsbay equiresray anay uninstallay omfray ouryay eviceday."
# android.rpy:243
# android.rpy:245
old "Copying Android files to distributions directory."
new "Opyingcay Ndroidaay ilesfay otay istributionsday irectoryday."
# android.rpy:311
# android.rpy:313
old "Android: [project.current.display_name!q]"
new "Ndroidaay: [project.current.display_name!q]"
# android.rpy:331
# android.rpy:333
old "Emulation:"
new "Mulationeay:"
# android.rpy:340
# android.rpy:342
old "Phone"
new "Honepay"
# android.rpy:344
# android.rpy:346
old "Tablet"
new "Ablettay"
# android.rpy:348
# android.rpy:350
old "Television"
new "Elevisiontay"
# android.rpy:360
# android.rpy:362
old "Build:"
new "Uildbay:"
# android.rpy:371
# android.rpy:373
old "Debug"
new "Ebugday"
# android.rpy:375
# android.rpy:377
old "Release"
new "Eleaseray"
# android.rpy:382
# android.rpy:384
old "Install SDK & Create Keys"
new "Nstalliay Dksay & Reatecay Eyskay"
# android.rpy:386
# android.rpy:388
old "Configure"
new "Onfigurecay"
# android.rpy:390
# android.rpy:392
old "Build Package"
new "Uildbay Ackagepay"
# android.rpy:394
# android.rpy:396
old "Build & Install"
new "Uildbay & Nstalliay"
# android.rpy:398
# android.rpy:400
old "Build, Install & Launch"
new "Uildbay, Nstalliay & Aunchlay"
# android.rpy:409
# android.rpy:411
old "Other:"
new "Theroay:"
# android.rpy:417
# android.rpy:419
old "Logcat"
new "Ogcatlay"
# android.rpy:450
# android.rpy:452
old "Before packaging Android apps, you'll need to download RAPT, the Ren'Py Android Packaging Tool. Would you like to download RAPT now?"
new "Eforebay ackagingpay Ndroidaay appsay, ouyay'llay eednay otay ownloadday Aptray, hetay Enray'Ypay Ndroidaay Ackagingpay Ooltay. Ouldway ouyay ikelay otay ownloadday Aptray ownay?"
# android.rpy:503
# android.rpy:505
old "Retrieving logcat information from device."
new "Etrievingray ogcatlay informationay omfray eviceday."
@@ -190,226 +194,246 @@ translate piglatin strings:
new "Ooglegay Laypay upportsay isay enableday, utbay uildbay.oogle_play_keygay isay otnay efinedday."
# androidstrings.rpy:11
old "Updating project."
new "Pdatinguay rojectpay."
# androidstrings.rpy:12
old "Creating assets directory."
new "Reatingcay assetsay irectoryday."
# androidstrings.rpy:12
# androidstrings.rpy:13
old "Creating expansion file."
new "Reatingcay expansionay ilefay."
# androidstrings.rpy:13
# androidstrings.rpy:14
old "Packaging internal data."
new "Ackagingpay internalay ataday."
# androidstrings.rpy:14
# androidstrings.rpy:15
old "I'm using Gradle to build the package."
new "Iay'may usingay Radlegay otay uildbay hetay ackagepay."
# androidstrings.rpy:15
# androidstrings.rpy:16
old "Uploading expansion file."
new "Ploadinguay expansionay ilefay."
# androidstrings.rpy:16
# androidstrings.rpy:17
old "The build seems to have failed."
new "Hetay uildbay eemssay otay avehay ailedfay."
# androidstrings.rpy:17
# androidstrings.rpy:18
old "Launching app."
new "Aunchinglay appay."
# androidstrings.rpy:18
# androidstrings.rpy:19
old "The build seems to have succeeded."
new "Hetay uildbay eemssay otay avehay ucceededsay."
# androidstrings.rpy:19
# androidstrings.rpy:20
old "The armeabi-v7a version works on most phones or tablets, while the x86_64 version works on the simulator and chromebooks."
new "Hetay armeabiay-7avay ersionvay orksway onay ostmay onesphay oray abletstay, hileway hetay 86_64xay ersionvay orksway onay hetay imulatorsay anday romebookschay."
# androidstrings.rpy:21
old "What is the full name of your application? This name will appear in the list of installed applications."
new "Hatway isay hetay ullfay amenay ofay ouryay applicationay? Histay amenay illway appearay inay hetay istlay ofay installeday applicationsay."
# androidstrings.rpy:20
# androidstrings.rpy:22
old "What is the short name of your application? This name will be used in the launcher, and for application shortcuts."
new "Hatway isay hetay ortshay amenay ofay ouryay applicationay? Histay amenay illway ebay useday inay hetay auncherlay, anday orfay applicationay ortcutsshay."
# androidstrings.rpy:21
# androidstrings.rpy:23
old "What is the name of the package?\n\nThis is usually of the form com.domain.program or com.domain.email.program. It may only contain ASCII letters and dots. It must contain at least one dot."
new "Hatway isay hetay amenay ofay hetay ackagepay?\n\nHistay isay usuallyay ofay hetay ormfay omcay.omainday.rogrampay oray omcay.omainday.emailay.rogrampay. Tiay aymay onlyay ontaincay Sciiaay etterslay anday otsday. Tiay ustmay ontaincay atay eastlay oneay otday."
# androidstrings.rpy:22
# androidstrings.rpy:24
old "The package name may not be empty."
new "Hetay ackagepay amenay aymay otnay ebay emptyay."
# androidstrings.rpy:23
# androidstrings.rpy:25
old "The package name may not contain spaces."
new "Hetay ackagepay amenay aymay otnay ontaincay pacessay."
# androidstrings.rpy:24
# androidstrings.rpy:26
old "The package name must contain at least one dot."
new "Hetay ackagepay amenay ustmay ontaincay atay eastlay oneay otday."
# androidstrings.rpy:25
# androidstrings.rpy:27
old "The package name may not contain two dots in a row, or begin or end with a dot."
new "Hetay ackagepay amenay aymay otnay ontaincay wotay otsday inay aay owray, oray eginbay oray enday ithway aay otday."
# androidstrings.rpy:26
# androidstrings.rpy:28
old "Each part of the package name must start with a letter, and contain only letters, numbers, and underscores."
new "Acheay artpay ofay hetay ackagepay amenay ustmay artstay ithway aay etterlay, anday ontaincay onlyay etterslay, umbersnay, anday underscoresay."
# androidstrings.rpy:27
# androidstrings.rpy:29
old "{} is a Java keyword, and can't be used as part of a package name."
new "{} isay aay Avajay eywordkay, anday ancay'tay ebay useday asay artpay ofay aay ackagepay amenay."
# androidstrings.rpy:28
# 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."
new "Hatway isay hetay applicationay'say ersionvay?\n\nHistay ouldshay ebay hetay umanhay-eadableray ersionvay hattay ouyay ouldway resentpay otay aay ersonpay. Tiay ustmay ontaincay onlyay umbersnay anday otsday."
# androidstrings.rpy:29
# androidstrings.rpy:31
old "The version number must contain only numbers and dots."
new "Hetay ersionvay umbernay ustmay ontaincay onlyay umbersnay anday otsday."
# androidstrings.rpy:30
# androidstrings.rpy:32
old "What is the version code?\n\nThis must be a positive integer number, and the value should increase between versions."
new "Hatway isay hetay ersionvay odecay?\n\nHistay ustmay ebay aay ositivepay integeray umbernay, anday hetay aluevay ouldshay increaseay etweenbay ersionsvay."
# androidstrings.rpy:31
# androidstrings.rpy:33
old "The numeric version must contain only numbers."
new "Hetay umericnay ersionvay ustmay ontaincay onlyay umbersnay."
# androidstrings.rpy:32
# androidstrings.rpy:34
old "How would you like your application to be displayed?"
new "Owhay ouldway ouyay ikelay ouryay applicationay otay ebay isplayedday?"
# androidstrings.rpy:33
# androidstrings.rpy:35
old "In landscape orientation."
new "Niay andscapelay orientationay."
# androidstrings.rpy:34
# androidstrings.rpy:36
old "In portrait orientation."
new "Niay ortraitpay orientationay."
# androidstrings.rpy:35
# androidstrings.rpy:37
old "In the user's preferred orientation."
new "Niay hetay useray'say referredpay orientationay."
# androidstrings.rpy:36
# androidstrings.rpy:38
old "Which app store would you like to support in-app purchasing through?"
new "Hichway appay orestay ouldway ouyay ikelay otay upportsay inay-appay urchasingpay hroughtay?"
# androidstrings.rpy:37
# androidstrings.rpy:39
old "Google Play."
new "Ooglegay Laypay."
# androidstrings.rpy:38
# androidstrings.rpy:40
old "Amazon App Store."
new "Mazonaay Ppaay Toresay."
# androidstrings.rpy:39
# androidstrings.rpy:41
old "Both, in one app."
new "Othbay, inay oneay appay."
# androidstrings.rpy:40
# androidstrings.rpy:42
old "Neither."
new "Eithernay."
# androidstrings.rpy:41
# androidstrings.rpy:43
old "Would you like to create an expansion APK?"
new "Ouldway ouyay ikelay otay reatecay anay expansionay Pkaay?"
# androidstrings.rpy:42
# androidstrings.rpy:44
old "No. Size limit of 100 MB on Google Play, but can be distributed through other stores and sideloaded."
new "Onay. Izesay imitlay ofay 001ay Bmay onay Ooglegay Laypay, utbay ancay ebay istributedday hroughtay otheray oresstay anday ideloadedsay."
# androidstrings.rpy:43
# androidstrings.rpy:45
old "Yes. 2 GB size limit, but won't work outside of Google Play. (Read the documentation to get this to work.)"
new "Esyay. 2ay Bgay izesay imitlay, utbay onway'tay orkway outsideay ofay Ooglegay Laypay. (Eadray hetay ocumentationday otay etgay histay otay orkway.)"
# androidstrings.rpy:44
# androidstrings.rpy:46
old "Do you want to allow the app to access the Internet?"
new "Oday ouyay antway otay alloway hetay appay otay accessay hetay Nternetiay?"
# androidstrings.rpy:45
# androidstrings.rpy:47
old "Do you want to automatically update the generated project?"
new "Oday ouyay antway otay automaticallyay updateay hetay eneratedgay rojectpay?"
# androidstrings.rpy:48
old "Yes. This is the best choice for most projects."
new "Esyay. Histay isay hetay estbay oicechay orfay ostmay rojectspay."
# androidstrings.rpy:49
old "No. This may require manual updates when Ren'Py or the project configuration changes."
new "Onay. Histay aymay equireray anualmay updatesay henway Enray'Ypay oray hetay rojectpay onfigurationcay angeschay."
# androidstrings.rpy:50
old "Unknown configuration variable: {}"
new "Nknownuay onfigurationcay ariablevay: {}"
# androidstrings.rpy:46
# androidstrings.rpy:51
old "I'm compiling a short test program, to see if you have a working JDK on your system."
new "Iay'may ompilingcay aay ortshay esttay rogrampay, otay eesay ifay ouyay avehay aay orkingway Dkjay onay ouryay ystemsay."
# androidstrings.rpy:47
# 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 "Iay asway unableay otay useay avacjay otay ompilecay aay esttay ilefay. Fiay ouyay avenhay'tay installeday hetay Avajay Evelopmentday Itkay etyay, easeplay ownloadday itay omfray:\n\nttphay://wwway.oracleay.omcay/echnetworktay/avajay/avasejay/ownloadsday/dk8jay-ownloadsday-1331512ay.tmlhay\n\nHetay Dkjay isay ifferentday omfray hetay Rejay, osay itay'say ossiblepay ouyay avehay Avajay ithoutway avinghay hetay Dkjay. Ithoutway aay orkingway Dkjay, Iay ancay'tay ontinuecay."
# androidstrings.rpy:48
# 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 variabe 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\nttphay://wwway.oracleay.omcay/echnetworktay/avajay/avasejay/ownloadsday/dk8jay-ownloadsday-1331512ay.tmlhay\n\nOuyay ancay alsoay etsay hetay Ava_homejay environmentay ariabevay otay useay aay ifferentday ersionvay ofay Avajay."
# androidstrings.rpy:49
# androidstrings.rpy:54
old "The JDK is present and working. Good!"
new "Hetay Dkjay isay resentpay anday orkingway. Oodgay!"
# androidstrings.rpy:50
# androidstrings.rpy:55
old "The Android SDK has already been unpacked."
new "Hetay Ndroidaay Dksay ashay alreadyay eenbay unpackeday."
# androidstrings.rpy:51
# androidstrings.rpy:56
old "Do you accept the Android SDK Terms and Conditions?"
new "Oday ouyay acceptay hetay Ndroidaay Dksay Ermstay anday Onditionscay?"
# androidstrings.rpy:52
# androidstrings.rpy:57
old "I'm downloading the Android SDK. This might take a while."
new "Iay'may ownloadingday hetay Ndroidaay Dksay. Histay ightmay aketay aay hileway."
# androidstrings.rpy:53
# androidstrings.rpy:58
old "I'm extracting the Android SDK."
new "Iay'may extractingay hetay Ndroidaay Dksay."
# androidstrings.rpy:54
# androidstrings.rpy:59
old "I've finished unpacking the Android SDK."
new "Iay'evay inishedfay unpackingay hetay Ndroidaay Dksay."
# androidstrings.rpy:55
# androidstrings.rpy:60
old "I'm about to download and install the required Android packages. This might take a while."
new "Iay'may aboutay otay ownloadday anday installay hetay equiredray Ndroidaay ackagespay. Histay ightmay aketay aay hileway."
# androidstrings.rpy:56
# androidstrings.rpy:61
old "I was unable to accept the Android licenses."
new "Iay asway unableay otay acceptay hetay Ndroidaay icenseslay."
# androidstrings.rpy:57
# androidstrings.rpy:62
old "I was unable to install the required Android packages."
new "Iay asway unableay otay installay hetay equiredray Ndroidaay ackagespay."
# androidstrings.rpy:58
# androidstrings.rpy:63
old "I've finished installing the required Android packages."
new "Iay'evay inishedfay installingay hetay equiredray Ndroidaay ackagespay."
# androidstrings.rpy:59
# androidstrings.rpy:64
old "You set the keystore yourself, so I'll assume it's how you want it."
new "Ouyay etsay hetay eystorekay ourselfyay, osay Iay'llay assumeay itay'say owhay ouyay antway itay."
# androidstrings.rpy:60
# androidstrings.rpy:65
old "You've already created an Android keystore, so I won't create a new one for you."
new "Ouyay'evay alreadyay reatedcay anay Ndroidaay eystorekay, osay Iay onway'tay reatecay aay ewnay oneay orfay ouyay."
# androidstrings.rpy:61
# androidstrings.rpy:66
old "I can create an application signing key for you. Signing an application with this key allows it to be placed in the Android Market and other app stores.\n\nDo you want to create a key?"
new "Iay ancay reatecay anay applicationay igningsay eykay orfay ouyay. Igningsay anay applicationay ithway histay eykay allowsay itay otay ebay acedplay inay hetay Ndroidaay Arketmay anday otheray appay oresstay.\n\nOday ouyay antway otay reatecay aay eykay?"
# androidstrings.rpy:62
# androidstrings.rpy:67
old "I will create the key in the android.keystore file.\n\nYou need to back this file up. If you lose it, you will not be able to upgrade your application.\n\n\\You 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 android.keystore, and keep it in a safe place?"
new "Iay illway reatecay hetay eykay inay hetay androiday.eystorekay ilefay.\n\nOuyay eednay otay ackbay histay ilefay upay. Fiay ouyay oselay itay, ouyay illway otnay ebay ableay otay upgradeay ouryay applicationay.\n\n\\Ouyay alsoay eednay otay eepkay hetay eykay afesay. Fiay evilay eoplepay etgay histay ilefay, heytay ouldcay akemay akefay ersionsvay ofay ouryay applicationay, anday otentiallypay ealstay ouryay usersay' ataday.\n\nIllway ouyay akemay aay ackupbay ofay androiday.eystorekay, anday eepkay itay inay aay afesay aceplay?"
# androidstrings.rpy:63
# androidstrings.rpy:68
old "Please enter your name or the name of your organization."
new "Leasepay enteray ouryay amenay oray hetay amenay ofay ouryay organizationay."
# androidstrings.rpy:64
# androidstrings.rpy:69
old "Could not create android.keystore. Is keytool in your path?"
new "Ouldcay otnay reatecay androiday.eystorekay. Siay eytoolkay inay ouryay athpay?"
# androidstrings.rpy:65
# androidstrings.rpy:70
old "I've finished creating android.keystore. Please back it up, and keep it in a safe place."
new "Iay'evay inishedfay reatingcay androiday.eystorekay. Leasepay ackbay itay upay, anday eepkay itay inay aay afesay aceplay."
# androidstrings.rpy:66
# androidstrings.rpy:71
old "It looks like you're ready to start packaging games."
new "Tiay ookslay ikelay ouyay'eray eadyray otay artstay ackagingpay amesgay."
@@ -417,7 +441,7 @@ translate piglatin strings:
old "Ren'Py was unable to run python with tkinter to choose the directory. Please install the python-tk or tkinter package."
new "Enray'Ypay asway unableay otay unray ythonpay ithway kintertay otay oosechay hetay irectoryday. Leasepay installay hetay ythonpay-ktay oray kintertay ackagepay."
# choose_directory.rpy:104
# choose_directory.rpy:105
old "The selected projects directory is not writable."
new "Hetay electedsay rojectspay irectoryday isay otnay ritableway."
@@ -797,63 +821,43 @@ translate piglatin strings:
old "Regenerate the image files using the colors in gui.rpy."
new "Egenerateray hetay imageay ilesfay usingay hetay olorscay inay uigay.pyray."
# gui7.rpy:331
old "PROJECT NAME"
new "Rojectpay Amenay"
# gui7.rpy:331
old "Please enter the name of your project:"
new "Leasepay enteray hetay amenay ofay ouryay rojectpay:"
# gui7.rpy:339
old "The project name may not be empty."
new "Hetay rojectpay amenay aymay otnay ebay emptyay."
# gui7.rpy:344
old "[project_name!q] already exists. Please choose a different project name."
new "[project_name!q] alreadyay existsay. Leasepay oosechay aay ifferentday rojectpay amenay."
# gui7.rpy:347
old "[project_dir!q] already exists. Please choose a different project name."
new "[project_dir!q] alreadyay existsay. Leasepay oosechay aay ifferentday rojectpay amenay."
# gui7.rpy:358
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 1280x720 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 280x7201ay isay aay easonableray ompromisecay."
# gui7.rpy:358
# gui7.rpy:339
old "Custom. The GUI is optimized for a 16:9 aspect ratio."
new "Ustomcay. Hetay Uigay isay optimizeday orfay aay 61ay:9ay aspectay atioray."
# gui7.rpy:373
# gui7.rpy:355
old "WIDTH"
new "Idthway"
# gui7.rpy:373
# gui7.rpy:355
old "Please enter the width of your game, in pixels."
new "Leasepay enteray hetay idthway ofay ouryay amegay, inay ixelspay."
# gui7.rpy:378
# gui7.rpy:365
old "The width must be a number."
new "Hetay idthway ustmay ebay aay umbernay."
# gui7.rpy:380
# gui7.rpy:371
old "HEIGHT"
new "Eighthay"
# gui7.rpy:380
# gui7.rpy:371
old "Please enter the height of your game, in pixels."
new "Leasepay enteray hetay eighthay ofay ouryay amegay, inay ixelspay."
# gui7.rpy:385
# gui7.rpy:381
old "The height must be a number."
new "Hetay eighthay ustmay ebay aay umbernay."
# gui7.rpy:427
# gui7.rpy:425
old "Creating the new project..."
new "Reatingcay hetay ewnay rojectpay..."
# gui7.rpy:429
# gui7.rpy:427
old "Updating the project..."
new "Pdatinguay hetay rojectpay..."
@@ -885,35 +889,43 @@ translate piglatin strings:
old "Ren'Py Sponsor Information"
new "Enray'Ypay Ponsorsay Nformationiay"
# interface.rpy:258
# interface.rpy:263
old "Due to package format limitations, non-ASCII file and directory names are not allowed."
new "Ueday otay ackagepay ormatfay imitationslay, onnay-Sciiaay ilefay anday irectoryday amesnay areay otnay alloweday."
# interface.rpy:354
# interface.rpy:359
old "ERROR"
new "Rroreay"
# interface.rpy:400
# interface.rpy:393
old "While [what!q], an error occured:"
new "Hileway [what!q], anay erroray occureday:"
# interface.rpy:393
old "[exception!q]"
new "[exception!q]"
# interface.rpy:426
old "Text input may not contain the {{ or [[ characters."
new "Exttay inputay aymay otnay ontaincay hetay {{ oray [[ aracterschay."
# interface.rpy:405
# interface.rpy:431
old "File and directory names may not contain / or \\."
new "Ilefay anday irectoryday amesnay aymay otnay ontaincay / oray \\."
# interface.rpy:411
# interface.rpy:437
old "File and directory names must consist of ASCII characters."
new "Ilefay anday irectoryday amesnay ustmay onsistcay ofay Sciiaay aracterschay."
# interface.rpy:479
# interface.rpy:505
old "PROCESSING"
new "Rocessingpay"
# interface.rpy:496
# interface.rpy:522
old "QUESTION"
new "Uestionqay"
# interface.rpy:509
# interface.rpy:535
old "CHOICE"
new "Hoicecay"
@@ -1037,7 +1049,7 @@ translate piglatin strings:
old "Please {a=https://itch.io/game/new}create your project{/a}, then add a line like \n{vspace=5}define build.itch_project = \"user-name/game-name\"\n{vspace=5} to options.rpy."
new "Leasepay {a=https://itch.io/game/new}reatecay ouryay rojectpay{/a}, hentay adday aay inelay ikelay \n{vspace=5}efineday uildbay.itch_projectay = \"useray-amenay/amegay-amenay\"\n{vspace=5} otay optionsay.pyray."
# mobilebuild.rpy:109
# mobilebuild.rpy:110
old "{a=%s}%s{/a}"
new "{a=%s}%say{/a}"
@@ -1129,23 +1141,43 @@ translate piglatin strings:
old "The projects directory could not be set. Giving up."
new "Hetay rojectspay irectoryday ouldcay otnay ebay etsay. Ivinggay upay."
# new_project.rpy:71
old "You will be creating an [new_project_language] language project. Change the launcher language in preferences to create a project in another language."
new "Ouyay illway ebay reatingcay anay [new_project_language] anguagelay rojectpay. Hangecay hetay auncherlay anguagelay inay referencespay otay reatecay aay rojectpay inay anotheray anguagelay."
# new_project.rpy:79
# new_project.rpy:70
old "Which interface would you like to use? The new GUI has a modern look, supports wide screens and mobile devices, and is easier to customize. Legacy themes might be necessary to work with older example code.\n\n[language_support!t]\n\nIf in doubt, choose the new GUI, then click Continue on the bottom-right."
new "Hichway interfaceay ouldway ouyay ikelay otay useay? Hetay ewnay Uigay ashay aay odernmay ooklay, upportssay ideway creenssay anday obilemay evicesday, anday isay easieray otay ustomizecay. Egacylay hemestay ightmay ebay ecessarynay otay orkway ithway olderay exampleay odecay.\n\n[language_support!t]\n\nFiay inay oubtday, oosechay hetay ewnay Uigay, hentay ickclay Ontinuecay onay hetay ottombay-ightray."
# new_project.rpy:79
# new_project.rpy:70
old "Legacy Theme Interface"
new "Egacylay Hemetay Nterfaceiay"
# new_project.rpy:100
# 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."
new "Ouyay illway ebay reatingcay anay [new_project_language]{#this substitution may be localized} anguagelay rojectpay. Hangecay hetay auncherlay anguagelay inay referencespay otay reatecay aay rojectpay inay anotheray anguagelay."
# new_project.rpy:86
old "PROJECT NAME"
new "Rojectpay Amenay"
# new_project.rpy:86
old "Please enter the name of your project:"
new "Leasepay enteray hetay amenay ofay ouryay rojectpay:"
# new_project.rpy:96
old "The project name may not be empty."
new "Hetay rojectpay amenay aymay otnay ebay emptyay."
# new_project.rpy:102
old "[project_name!q] already exists. Please choose a different project name."
new "[project_name!q] alreadyay existsay. Leasepay oosechay aay ifferentday rojectpay amenay."
# new_project.rpy:106
old "[project_dir!q] already exists. Please choose a different project name."
new "[project_dir!q] alreadyay existsay. Leasepay oosechay aay ifferentday rojectpay amenay."
# new_project.rpy:124
old "Choose Project Template"
new "Hoosecay Rojectpay Emplatetay"
# new_project.rpy:118
# new_project.rpy:142
old "Please select a template to use for your new project. The template sets the default font and the user interface language. If your language is not supported, choose 'english'."
new "Leasepay electsay aay emplatetay otay useay orfay ouryay ewnay rojectpay. Hetay emplatetay etssay hetay efaultday ontfay anday hetay useray interfaceay anguagelay. Fiay ouryay anguagelay isay otnay upportedsay, oosechay 'englishay'."
+65 -65
View File
@@ -413,263 +413,263 @@ translate piglatin strings:
old "## This lays things out properly if history_height is None."
new "## Histay ayslay hingstay outay roperlypay ifay istory_heighthay isay Onenay."
# screens.rpy:908
# screens.rpy:909
old "## Take the color of the who text from the Character, if set."
new "## Aketay hetay olorcay ofay hetay howay exttay omfray hetay Haractercay, ifay etsay."
# screens.rpy:916
# screens.rpy:918
old "The dialogue history is empty."
new "Hetay ialogueday istoryhay isay emptyay."
# screens.rpy:919
# screens.rpy:921
old "## This determines what tags are allowed to be displayed on the history screen."
new "## Histay eterminesday hatway agstay areay alloweday otay ebay isplayedday onay hetay istoryhay creensay."
# screens.rpy:966
# screens.rpy:968
old "## Help screen"
new "## Elphay creensay"
# screens.rpy:968
# screens.rpy:970
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 "## Aay creensay hattay ivesgay informationay aboutay eykay anday ousemay indingsbay. Tiay usesay otheray creenssay (eyboard_helpkay, ouse_helpmay, anday amepad_helpgay) otay isplayday hetay actualay elphay."
# screens.rpy:987
# screens.rpy:989
old "Keyboard"
new "Eyboardkay"
# screens.rpy:988
# screens.rpy:990
old "Mouse"
new "Ousemay"
# screens.rpy:991
# screens.rpy:993
old "Gamepad"
new "Amepadgay"
# screens.rpy:1004
# screens.rpy:1006
old "Enter"
new "Ntereay"
# screens.rpy:1005
# screens.rpy:1007
old "Advances dialogue and activates the interface."
new "Dvancesaay ialogueday anday activatesay hetay interfaceay."
# screens.rpy:1008
# screens.rpy:1010
old "Space"
new "Pacesay"
# screens.rpy:1009
# screens.rpy:1011
old "Advances dialogue without selecting choices."
new "Dvancesaay ialogueday ithoutway electingsay oiceschay."
# screens.rpy:1012
# screens.rpy:1014
old "Arrow Keys"
new "Rrowaay Eyskay"
# screens.rpy:1013
# screens.rpy:1015
old "Navigate the interface."
new "Avigatenay hetay interfaceay."
# screens.rpy:1016
# screens.rpy:1018
old "Escape"
new "Scapeeay"
# screens.rpy:1017
# screens.rpy:1019
old "Accesses the game menu."
new "Ccessesaay hetay amegay enumay."
# screens.rpy:1020
# screens.rpy:1022
old "Ctrl"
new "Trlcay"
# screens.rpy:1021
# screens.rpy:1023
old "Skips dialogue while held down."
new "Kipssay ialogueday hileway eldhay ownday."
# screens.rpy:1024
# screens.rpy:1026
old "Tab"
new "Abtay"
# screens.rpy:1025
# screens.rpy:1027
old "Toggles dialogue skipping."
new "Ogglestay ialogueday kippingsay."
# screens.rpy:1028
# screens.rpy:1030
old "Page Up"
new "Agepay Puay"
# screens.rpy:1029
# screens.rpy:1031
old "Rolls back to earlier dialogue."
new "Ollsray ackbay otay earlieray ialogueday."
# screens.rpy:1032
# screens.rpy:1034
old "Page Down"
new "Agepay Ownday"
# screens.rpy:1033
# screens.rpy:1035
old "Rolls forward to later dialogue."
new "Ollsray orwardfay otay aterlay ialogueday."
# screens.rpy:1037
# screens.rpy:1039
old "Hides the user interface."
new "Ideshay hetay useray interfaceay."
# screens.rpy:1041
# screens.rpy:1043
old "Takes a screenshot."
new "Akestay aay creenshotsay."
# screens.rpy:1045
# screens.rpy:1047
old "Toggles assistive {a=https://www.renpy.org/l/voicing}self-voicing{/a}."
new "Ogglestay assistiveay {a=https://www.renpy.org/l/voicing}elfsay-oicingvay{/a}."
# screens.rpy:1051
# screens.rpy:1053
old "Left Click"
new "Eftlay Lickcay"
# screens.rpy:1055
# screens.rpy:1057
old "Middle Click"
new "Iddlemay Lickcay"
# screens.rpy:1059
# screens.rpy:1061
old "Right Click"
new "Ightray Lickcay"
# screens.rpy:1063
# screens.rpy:1065
old "Mouse Wheel Up\nClick Rollback Side"
new "Ousemay Heelway Puay\nLickcay Ollbackray Idesay"
# screens.rpy:1067
# screens.rpy:1069
old "Mouse Wheel Down"
new "Ousemay Heelway Ownday"
# screens.rpy:1074
# screens.rpy:1076
old "Right Trigger\nA/Bottom Button"
new "Ightray Riggertay\nAay/Ottombay Uttonbay"
# screens.rpy:1078
# screens.rpy:1080
old "Left Trigger\nLeft Shoulder"
new "Eftlay Riggertay\nEftlay Houldersay"
# screens.rpy:1082
# screens.rpy:1084
old "Right Shoulder"
new "Ightray Houldersay"
# screens.rpy:1087
# screens.rpy:1089
old "D-Pad, Sticks"
new "Day-Adpay, Tickssay"
# screens.rpy:1091
# screens.rpy:1093
old "Start, Guide"
new "Tartsay, Uidegay"
# screens.rpy:1095
# screens.rpy:1097
old "Y/Top Button"
new "Yay/Optay Uttonbay"
# screens.rpy:1098
# screens.rpy:1100
old "Calibrate"
new "Alibratecay"
# screens.rpy:1126
# screens.rpy:1128
old "## Additional screens"
new "## Dditionalaay creenssay"
# screens.rpy:1130
# screens.rpy:1132
old "## Confirm screen"
new "## Onfirmcay creensay"
# screens.rpy:1132
# screens.rpy:1134
old "## The confirm screen is called when Ren'Py wants to ask the player a yes or no question."
new "## Hetay onfirmcay creensay isay alledcay henway Enray'Ypay antsway otay askay hetay ayerplay aay esyay oray onay uestionqay."
# screens.rpy:1135
# screens.rpy:1137
old "## https://www.renpy.org/doc/html/screen_special.html#confirm"
new "## ttpshay://wwway.enpyray.orgay/ocday/tmlhay/creen_specialsay.tmlhay#onfirmcay"
# screens.rpy:1139
# screens.rpy:1141
old "## Ensure other screens do not get input while this screen is displayed."
new "## Nsureeay otheray creenssay oday otnay etgay inputay hileway histay creensay isay isplayedday."
# screens.rpy:1163
# screens.rpy:1165
old "Yes"
new "Esyay"
# screens.rpy:1164
# screens.rpy:1166
old "No"
new "Onay"
# screens.rpy:1166
# screens.rpy:1168
old "## Right-click and escape answer \"no\"."
new "## Ightray-ickclay anday escapeay answeray \"onay\"."
# screens.rpy:1193
# screens.rpy:1195
old "## Skip indicator screen"
new "## Kipsay indicatoray creensay"
# screens.rpy:1195
# screens.rpy:1197
old "## The skip_indicator screen is displayed to indicate that skipping is in progress."
new "## Hetay kip_indicatorsay creensay isay isplayedday otay indicateay hattay kippingsay isay inay rogresspay."
# screens.rpy:1198
# screens.rpy:1200
old "## https://www.renpy.org/doc/html/screen_special.html#skip-indicator"
new "## ttpshay://wwway.enpyray.orgay/ocday/tmlhay/creen_specialsay.tmlhay#kipsay-indicatoray"
# screens.rpy:1210
# screens.rpy:1212
old "Skipping"
new "Kippingsay"
# screens.rpy:1217
# screens.rpy:1219
old "## This transform is used to blink the arrows one after another."
new "## Histay ansformtray isay useday otay inkblay hetay arrowsay oneay afteray anotheray."
# screens.rpy:1244
# screens.rpy:1246
old "## We have to use a font that has the BLACK RIGHT-POINTING SMALL TRIANGLE glyph in it."
new "## Eway avehay otay useay aay ontfay hattay ashay hetay Lackbay Ightray-Ointingpay Mallsay Riangletay yphglay inay itay."
# screens.rpy:1249
# screens.rpy:1251
old "## Notify screen"
new "## Otifynay creensay"
# screens.rpy:1251
# screens.rpy:1253
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 "## Hetay otifynay creensay isay useday otay owshay hetay ayerplay aay essagemay. (Orfay exampleay, henway hetay amegay isay uicksavedqay oray aay creenshotsay ashay eenbay akentay.)"
# screens.rpy:1254
# screens.rpy:1256
old "## https://www.renpy.org/doc/html/screen_special.html#notify-screen"
new "## ttpshay://wwway.enpyray.orgay/ocday/tmlhay/creen_specialsay.tmlhay#otifynay-creensay"
# screens.rpy:1288
# screens.rpy:1290
old "## NVL screen"
new "## Vlnay creensay"
# screens.rpy:1290
# screens.rpy:1292
old "## This screen is used for NVL-mode dialogue and menus."
new "## Histay creensay isay useday orfay Vlnay-odemay ialogueday anday enusmay."
# screens.rpy:1292
# screens.rpy:1294
old "## https://www.renpy.org/doc/html/screen_special.html#nvl"
new "## ttpshay://wwway.enpyray.orgay/ocday/tmlhay/creen_specialsay.tmlhay#vlnay"
# screens.rpy:1303
# screens.rpy:1305
old "## Displays dialogue in either a vpgrid or the vbox."
new "## Isplaysday ialogueday inay eitheray aay pgridvay oray hetay boxvay."
# screens.rpy:1316
# screens.rpy:1318
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 "## Isplaysday hetay enumay, ifay ivengay. Hetay enumay aymay ebay isplayedday incorrectlyay ifay onfigcay.arrator_menunay isay etsay otay Ruetay, asay itay isay aboveay."
# screens.rpy:1346
# screens.rpy:1348
old "## This controls the maximum number of NVL-mode entries that can be displayed at once."
new "## Histay ontrolscay hetay aximummay umbernay ofay Vlnay-odemay entriesay hattay ancay ebay isplayedday atay onceay."
# screens.rpy:1408
# screens.rpy:1410
old "## Mobile Variants"
new "## Obilemay Ariantsvay"
# screens.rpy:1415
# screens.rpy:1417
old "## Since a mouse may not be present, we replace the quick menu with a version that uses fewer and bigger buttons that are easier to touch."
new "## Incesay aay ousemay aymay otnay ebay resentpay, eway eplaceray hetay uickqay enumay ithway aay ersionvay hattay usesay ewerfay anday iggerbay uttonsbay hattay areay easieray otay ouchtay."
# screens.rpy:1431
# screens.rpy:1435
old "Menu"
new "Enumay"
+250 -75
View File
@@ -153,179 +153,187 @@ translate russian strings:
old "{#month_short}Dec"
new "{#month_short}Дек"
# 00action_file.rpy:237
# 00action_file.rpy:240
old "%b %d, %H:%M"
new "%d %b, %H:%M"
# 00action_file.rpy:344
# 00action_file.rpy:353
old "Save slot %s: [text]"
new "Слот сохранения %s: [text]"
# 00action_file.rpy:417
# 00action_file.rpy:434
old "Load slot %s: [text]"
new "Слот загрузки %s: [text]"
# 00action_file.rpy:459
# 00action_file.rpy:487
old "Delete slot [text]"
new "Удалить слот [text]"
# 00action_file.rpy:539
# 00action_file.rpy:569
old "File page auto"
new "Автосохранения"
# 00action_file.rpy:541
# 00action_file.rpy:571
old "File page quick"
new "Быстрые сохранения"
# 00action_file.rpy:543
# 00action_file.rpy:573
old "File page [text]"
new "Страница сохранений [text]"
# 00action_file.rpy:733
# 00action_file.rpy:763
old "Next file page."
new "Следующая страница сохранений"
# 00action_file.rpy:797
# 00action_file.rpy:827
old "Previous file page."
new "Предыдущая страница сохранений"
# 00action_file.rpy:858
# 00action_file.rpy:888
old "Quick save complete."
new "Быстрое сохранение завершено."
# 00action_file.rpy:876
# 00action_file.rpy:906
old "Quick save."
new "Быстрое сохранение"
# 00action_file.rpy:895
# 00action_file.rpy:925
old "Quick load."
new "Быстрая загрузка"
# 00action_other.rpy:344
# 00action_other.rpy:355
old "Language [text]"
new "Язык [text]"
# 00director.rpy:703
# 00director.rpy:708
old "The interactive director is not enabled here."
new "Интерактивный директор недоступен."
# 00director.rpy:1490
# 00director.rpy:1481
old "⬆"
new "⬆"
# 00director.rpy:1487
old "⬇"
new "⬇"
# 00director.rpy:1551
old "Done"
new "Принять"
# 00director.rpy:1498
# 00director.rpy:1561
old "(statement)"
new "(функция)"
# 00director.rpy:1499
# 00director.rpy:1562
old "(tag)"
new "(тег)"
# 00director.rpy:1500
# 00director.rpy:1563
old "(attributes)"
new "(аттрибут)"
# 00director.rpy:1501
# 00director.rpy:1564
old "(transform)"
new "(трансформация)"
# 00director.rpy:1526
# 00director.rpy:1589
old "(transition)"
new "(переход)"
# 00director.rpy:1538
# 00director.rpy:1601
old "(channel)"
new "(канал)"
# 00director.rpy:1539
# 00director.rpy:1602
old "(filename)"
new "(имя файла)"
# 00director.rpy:1564
# 00director.rpy:1631
old "Change"
new "Изменить"
# 00director.rpy:1566
# 00director.rpy:1633
old "Add"
new "Добавить"
# 00director.rpy:1569
# 00director.rpy:1636
old "Cancel"
new "Отмена"
# 00director.rpy:1572
# 00director.rpy:1639
old "Remove"
new "Убрать"
# 00director.rpy:1605
# 00director.rpy:1674
old "Statement:"
new "Функции:"
# 00director.rpy:1626
# 00director.rpy:1695
old "Tag:"
new "Теги:"
# 00director.rpy:1642
# 00director.rpy:1711
old "Attributes:"
new "Аттрибут:"
# 00director.rpy:1660
# 00director.rpy:1729
old "Transforms:"
new "Трансформации:"
# 00director.rpy:1679
# 00director.rpy:1748
old "Behind:"
new "Позади:"
# 00director.rpy:1698
# 00director.rpy:1767
old "Transition:"
new "Переходы:"
# 00director.rpy:1716
# 00director.rpy:1785
old "Channel:"
new "Каналы:"
# 00director.rpy:1734
# 00director.rpy:1803
old "Audio Filename:"
new "Имя файла:"
# 00gui.rpy:368
# 00gui.rpy:370
old "Are you sure?"
new "Вы уверены?"
# 00gui.rpy:369
# 00gui.rpy:371
old "Are you sure you want to delete this save?"
new "Вы уверены, что хотите удалить это сохранение?"
# 00gui.rpy:370
# 00gui.rpy:372
old "Are you sure you want to overwrite your save?"
new "Вы уверены, что хотите перезаписать ваше сохранение?"
# 00gui.rpy:371
# 00gui.rpy:373
old "Loading will lose unsaved progress.\nAre you sure you want to do this?"
new "Загрузка игры приведёт к потере несохранённого прогресса.\nВы уверены, что хотите это сделать?"
# 00gui.rpy:372
# 00gui.rpy:374
old "Are you sure you want to quit?"
new "Вы уверены, что хотите выйти?"
# 00gui.rpy:373
# 00gui.rpy:375
old "Are you sure you want to return to the main menu?\nThis will lose unsaved progress."
new "Вы уверены, что хотите вернуться в главное меню?\nЭто приведёт к потере несохранённого прогресса."
# 00gui.rpy:374
# 00gui.rpy:376
old "Are you sure you want to end the replay?"
new "Вы уверены, что хотите завершить повтор?"
# 00gui.rpy:375
# 00gui.rpy:377
old "Are you sure you want to begin skipping?"
new "Вы уверены, что хотите начать пропуск?"
# 00gui.rpy:376
# 00gui.rpy:378
old "Are you sure you want to skip to the next choice?"
new "Вы точно хотите пропустить всё до следующего выбора?"
# 00gui.rpy:377
# 00gui.rpy:379
old "Are you sure you want to skip unseen dialogue to the next choice?"
new "Вы уверены, что хотите пропустить непрочитанные диалоги до следующего выбора?"
@@ -379,11 +387,11 @@ translate russian strings:
# 00library.rpy:157
old "increase"
new "больше" ### но полоса прокрутки тоже здесь!
new "больше"
# 00library.rpy:158
old "decrease"
new "меньше" ###
new "меньше"
# 00library.rpy:193
old "Skip Mode"
@@ -431,7 +439,7 @@ translate russian strings:
# 00preferences.rpy:266
old "skip unseen [text]"
new "пропускать весь [text]" ###
new "пропускать весь [text]"
# 00preferences.rpy:271
old "skip unseen text"
@@ -455,11 +463,11 @@ translate russian strings:
# 00preferences.rpy:300
old "auto-forward"
new "авточтение" ###
new "авточтение"
# 00preferences.rpy:307
old "Auto forward"
new "Авточтение" ###
new "Авточтение"
# 00preferences.rpy:310
old "auto-forward after click"
@@ -537,111 +545,278 @@ translate russian strings:
old "mute all"
new "режим без звука"
# 00preferences.rpy:498
# 00preferences.rpy:500
old "Clipboard voicing enabled. Press 'shift+C' to disable."
new "Озвучка буфера обмена включена. Нажмите 'shift+C', чтобы отключить её."
# 00preferences.rpy:500
# 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', чтобы отключить его."
# 00preferences.rpy:502
# 00preferences.rpy:504
old "Self-voicing enabled. Press 'v' to disable."
new "Синтезатор речи включён. Нажмите 'v', чтобы отключить его."
# _compat\gamemenu.rpym:198
old "Empty Slot."
new "Пустой слот"
# _compat\gamemenu.rpym:355
old "Previous"
new "Назад"
# _compat\gamemenu.rpym:362
old "Next"
new "Далее"
# _compat\preferences.rpym:428
old "Joystick Mapping"
new "Раскладка джойстика"
# _developer\developer.rpym:38
old "Developer Menu"
new "Меню разработчика"
# _developer\developer.rpym:43
old "Interactive Director (D)"
new "Интерактивный Директор (D)"
# _developer\developer.rpym:45
old "Reload Game (Shift+R)"
new "Перезагрузить игру (Shift+R)"
# _developer\developer.rpym:47
old "Console (Shift+O)"
new "Консоль (Shift+O)"
# _developer\developer.rpym:49
old "Variable Viewer"
new "Просмотр переменных"
# _developer\developer.rpym:51
old "Image Location Picker"
new "Инструмент позиционирования на изображениях"
# _developer\developer.rpym:53
old "Filename List"
new "Список файлов"
# _developer\developer.rpym:57
old "Show Image Load Log (F4)"
new "Показать лог загрузки изображений (F4)"
# _developer\developer.rpym:60
old "Hide Image Load Log (F4)"
new "Скрыть лог загрузки изображений (F4)"
# _developer\developer.rpym:63
old "Image Attributes"
new "Аттрибуты изображения"
# _developer\developer.rpym:90
old "[name] [attributes] (hidden)"
new "[name] [attributes] (hidden)"
# _developer\developer.rpym:94
old "[name] [attributes]"
new "[name] [attributes]"
# _developer\developer.rpym:137
old "Nothing to inspect."
new "Переменные не заданы."
# _developer\developer.rpym:265
old "Return to the developer menu"
new "Вернуться в меню разработчика"
# _developer\developer.rpym:425
old "Rectangle: %r"
new "Прямоугольник: %r"
# _developer\developer.rpym:430
old "Mouse position: %r"
new "Позиция мыши: %r"
# _developer\developer.rpym:435
old "Right-click or escape to quit."
new "Нажмите правую кнопку мыши или ESC чтобы выйти."
# _developer\developer.rpym:467
old "Rectangle copied to clipboard."
new "Координаты прямоугольника скопированы в буфер обмена."
# _developer\developer.rpym:470
old "Position copied to clipboard."
new "Координаты позиции скопированы в буфер обмена."
# _developer\developer.rpym:489
old "Type to filter: "
new "Текущий фильтр: "
# _developer\developer.rpym:617
old "Textures: [tex_count] ([tex_size_mb:.1f] MB)"
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] МБ)"
# _developer\developer.rpym:631
old "✔ "
new "✔ "
# _developer\developer.rpym:634
old "✘ "
new "✘ "
# _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}"
# _developer\inspector.rpym:38
old "Displayable Inspector"
new "Диспетчер объектов"
# _developer\inspector.rpym:61
old "Size"
new "Разрешение"
# _developer\inspector.rpym:65
old "Style"
new "Стиль"
# _developer\inspector.rpym:71
old "Location"
new "Местоположение"
# _developer\inspector.rpym:122
old "Inspecting Styles of [displayable_name!q]"
new "Инспектирую стили [displayable_name!q]"
# _developer\inspector.rpym:139
old "displayable:"
new "объект:"
# _developer\inspector.rpym:145
old " (no properties affect the displayable)"
new " (на объект не влияют никакие параметры)"
# _developer\inspector.rpym:147
old " (default properties omitted)"
new " (настройки по умолчанию опущены)"
# _developer\inspector.rpym:185
old "<repr() failed>"
new "<repr() провален>"
# _layout\classic_load_save.rpym:170
old "a"
new "а"
# _layout\classic_load_save.rpym:179
old "q"
new "б"
# 00iap.rpy:217
old "Contacting App Store\nPlease Wait..."
new "Связываюсь с App Store\nПожалуйста, ждите..."
# 00updater.rpy:372
# 00updater.rpy:375
old "The Ren'Py Updater is not supported on mobile devices."
new "Ren'Py Updater не поддерживается на мобильных устройствах."
# 00updater.rpy:491
# 00updater.rpy:494
old "An error is being simulated."
new "Симулируется ошибка."
# 00updater.rpy:672
# 00updater.rpy:678
old "Either this project does not support updating, or the update status file was deleted."
new "Или этот проект не поддерживает обновление, или файл статуса обновления был удалён."
# 00updater.rpy:686
# 00updater.rpy:692
old "This account does not have permission to perform an update."
new "У этого аккаунта нет прав проводить обновление."
# 00updater.rpy:689
# 00updater.rpy:695
old "This account does not have permission to write the update log."
new "У этого аккаунта нет прав писать лог обновления."
# 00updater.rpy:716
# 00updater.rpy:722
old "Could not verify update signature."
new "Не могу верифицировать подпись обновления."
# 00updater.rpy:991
# 00updater.rpy:997
old "The update file was not downloaded."
new "Файл обновления не был загружен."
# 00updater.rpy:1009
# 00updater.rpy:1015
old "The update file does not have the correct digest - it may have been corrupted."
new "Файл обновления не содержит корректного дайджеста — он может быть повреждён."
# 00updater.rpy:1065
# 00updater.rpy:1071
old "While unpacking {}, unknown type {}."
new "При распаковке {} обнаружен неизвестный тип {}."
# 00updater.rpy:1412
# 00updater.rpy:1439
old "Updater"
new "Обновление"
# 00updater.rpy:1423
# 00updater.rpy:1450
old "This program is up to date."
new "Эта программа обновлена."
# 00updater.rpy:1425
# 00updater.rpy:1452
old "[u.version] is available. Do you want to install it?"
new "[u.version] доступна. Вы хотите её установить?"
# 00updater.rpy:1427
# 00updater.rpy:1454
old "Preparing to download the updates."
new "Подготовка к загрузке обновлений."
# 00updater.rpy:1429
# 00updater.rpy:1456
old "Downloading the updates."
new "Загрузка обновлений."
# 00updater.rpy:1431
# 00updater.rpy:1458
old "Unpacking the updates."
new "Распаковка обновлений."
# 00updater.rpy:1435
# 00updater.rpy:1462
old "The updates have been installed. The program will restart."
new "Обновления установлены. Программа будет перезапущена."
# 00updater.rpy:1437
# 00updater.rpy:1464
old "The updates have been installed."
new "Обновления были установлены."
# 00updater.rpy:1439
# 00updater.rpy:1466
old "The updates were cancelled."
new "Обновления были отменены."
# 00gallery.rpy:573
# 00gallery.rpy:585
old "Image [index] of [count] locked."
new "Изображение [index] из [count] закрыто."
# 00gallery.rpy:593
# 00gallery.rpy:605
old "prev"
new "пред"
# 00gallery.rpy:594
# 00gallery.rpy:606
old "next"
new "след"
# 00gallery.rpy:595
# 00gallery.rpy:607
old "slideshow"
new "слайд-шоу"
# 00gallery.rpy:596
# 00gallery.rpy:608
old "return"
new "вернуться"
# _developer\developer.rpym:154
old "Hide deleted"
new "Скрыть удалённые"
# _developer\developer.rpym:154
old "Show deleted"
new "Показать удалённые"
-124
View File
@@ -1,130 +1,6 @@

translate russian strings:
# _developer/developer.rpym:38
old "Developer Menu"
new "Меню разработчика"
# _developer/developer.rpym:43
old "Interactive Director (D)"
new "Интерактивный Директор (D)"
# _developer/developer.rpym:45
old "Reload Game (Shift+R)"
new "Перезагрузить игру (Shift+R)"
# _developer/developer.rpym:47
old "Console (Shift+O)"
new "Консоль (Shift+O)"
# _developer/developer.rpym:49
old "Variable Viewer"
new "Просмотр переменных"
# _developer/developer.rpym:51
old "Image Location Picker"
new "Инструмент позиционирования на изображениях"
# _developer/developer.rpym:53
old "Filename List"
new "Список файлов"
# _developer/developer.rpym:57
old "Show Image Load Log (F4)"
new "Показать лог загрузки изображений (F4)"
# _developer/developer.rpym:60
old "Hide Image Load Log (F4)"
new "Скрыть лог загрузки изображений (F4)"
# _developer/developer.rpym:95
old "Nothing to inspect."
new "Переменные не заданы."
# _developer/developer.rpym:223
old "Return to the developer menu"
new "Вернуться в меню разработчика"
# _developer/developer.rpym:383
old "Rectangle: %r"
new "Прямоугольник: %r"
# _developer/developer.rpym:388
old "Mouse position: %r"
new "Позиция мыши: %r"
# _developer/developer.rpym:393
old "Right-click or escape to quit."
new "Нажмите правую кнопку мыши или ESC чтобы выйти."
# _developer/developer.rpym:425
old "Rectangle copied to clipboard."
new "Координаты прямоугольника скопированы в буфер обмена."
# _developer/developer.rpym:428
old "Position copied to clipboard."
new "Координаты позиции скопированы в буфер обмена."
# _developer/developer.rpym:447
old "Type to filter: "
new "Текущий фильтр: "
# _developer/developer.rpym:575
old "Textures: [tex_count] ([tex_size_mb:.1f] MB)"
new "Текстур: [tex_count] ([tex_size_mb:.1f] МБ)"
# _developer/developer.rpym:579
old "Image cache: [cache_pct:.1f]% ([cache_size_mb:.1f] MB)"
new "Кеш изображений: [cache_pct:.1f]% ([cache_size_mb:.1f] МБ)"
# _developer/developer.rpym:589
old "✔ "
new "✔ "
# _developer/developer.rpym:592
old "✘ "
new "✘ "
# _developer/developer.rpym:597
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}"
# _developer/inspector.rpym:38
old "Displayable Inspector"
new "Диспетчер объектов"
# _developer/inspector.rpym:61
old "Size"
new "Разрешение"
# _developer/inspector.rpym:65
old "Style"
new "Стиль"
# _developer/inspector.rpym:71
old "Location"
new "Местоположение"
# _developer/inspector.rpym:122
old "Inspecting Styles of [displayable_name!q]"
new "Инспектирую стили [displayable_name!q]"
# _developer/inspector.rpym:139
old "displayable:"
new "объект:"
# _developer/inspector.rpym:145
old " (no properties affect the displayable)"
new " (на объект не влияют никакие параметры)"
# _developer/inspector.rpym:147
old " (default properties omitted)"
new " (настройки по умолчанию опущены)"
# _developer/inspector.rpym:185
old "<repr() failed>"
new "<repr() провален>"
# 00console.rpy:255
old "Press <esc> to exit console. Type help for help.\n"
new "Нажмите <esc>, чтобы выйти из консоли. Введите help для помощи.\n"
+18 -18
View File
@@ -141,75 +141,75 @@ translate russian strings:
old "Back (B)"
new "Back (B)"
# _errorhandling.rpym:528
# _errorhandling.rpym:529
old "Open"
new "Журнал"
# _errorhandling.rpym:530
# _errorhandling.rpym:531
old "Opens the traceback.txt file in a text editor."
new "Открывает файл traceback.txt в текстовом редакторе."
# _errorhandling.rpym:532
# _errorhandling.rpym:533
old "Copy"
new "Копировать"
# _errorhandling.rpym:534
# _errorhandling.rpym:535
old "Copies the traceback.txt file to the clipboard."
new "Копирует файл traceback.txt в буфер обмена."
# _errorhandling.rpym:561
# _errorhandling.rpym:562
old "An exception has occurred."
new "Возникло исключение."
# _errorhandling.rpym:581
# _errorhandling.rpym:582
old "Rollback"
new "Назад"
# _errorhandling.rpym:583
# _errorhandling.rpym:584
old "Attempts a roll back to a prior time, allowing you to save or choose a different choice."
new "Пытается вернуться назад, позволяя вам сохраниться или принять другой выбор."
# _errorhandling.rpym:586
# _errorhandling.rpym:587
old "Ignore"
new "Игнорировать"
# _errorhandling.rpym:590
# _errorhandling.rpym:591
old "Ignores the exception, allowing you to continue."
new "Игнорирует это исключение, позволяя вам продолжить."
# _errorhandling.rpym:592
# _errorhandling.rpym:593
old "Ignores the exception, allowing you to continue. This often leads to additional errors."
new "Игнорирует это исключение, позволяя вам продолжить. Зачастую это ведёт к дополнительным ошибкам."
# _errorhandling.rpym:596
# _errorhandling.rpym:597
old "Reload"
new "Перезагрузить"
# _errorhandling.rpym:598
# _errorhandling.rpym:599
old "Reloads the game from disk, saving and restoring game state if possible."
new "Перезагружает игру с диска, сохраняя и восстанавливая её состояние, если это возможно."
# _errorhandling.rpym:601
# _errorhandling.rpym:602
old "Console"
new "Консоль"
# _errorhandling.rpym:603
# _errorhandling.rpym:604
old "Opens a console to allow debugging the problem."
new "Открывает консоль, позволяющую отладить проблему."
# _errorhandling.rpym:613
# _errorhandling.rpym:614
old "Quits the game."
new "Выходит из игры."
# _errorhandling.rpym:637
# _errorhandling.rpym:638
old "Parsing the script failed."
new "Обработка сценария завершилась неудачно."
# _errorhandling.rpym:663
# _errorhandling.rpym:664
old "Opens the errors.txt file in a text editor."
new "Открывает файл errors.txt в текстовом редакторе."
# _errorhandling.rpym:667
# _errorhandling.rpym:668
old "Copies the errors.txt file to the clipboard."
new "Копирует файл errors.txt в буфер обмена."
+53 -53
View File
@@ -221,215 +221,215 @@ translate russian strings:
old "## The save slot button."
new "## Кнопка слота сохранения."
# gui.rpy:231
# gui.rpy:233
old "## The width and height of thumbnails used by the save slots."
new "## Ширина и высота миниатюры, используемой слотом сохранения."
# gui.rpy:235
# gui.rpy:237
old "## The number of columns and rows in the grid of save slots."
new "## Количество колонок и рядов в таблице слотов."
# gui.rpy:240
# gui.rpy:242
old "## Positioning and Spacing"
new "## Позиционирование и Интервалы"
# gui.rpy:242
# gui.rpy:244
old "## These variables control the positioning and spacing of various user interface elements."
new "## Эти переменные контролируют позиционирование и интервалы различных элементов пользовательского интерфейса."
# gui.rpy:245
# gui.rpy:247
old "## The position of the left side of the navigation buttons, relative to the left side of the screen."
new "## Местоположение левого края навигационных кнопок по отношению к левому краю экрана."
# gui.rpy:249
# gui.rpy:251
old "## The vertical position of the skip indicator."
new "## Вертикальная позиция индикатора пропуска."
# gui.rpy:252
# gui.rpy:254
old "## The vertical position of the notify screen."
new "## Вертикальная позиция экрана уведомлений."
# gui.rpy:255
# gui.rpy:257
old "## The spacing between menu choices."
new "## Интервал между выборами в меню."
# gui.rpy:258
# gui.rpy:260
old "## Buttons in the navigation section of the main and game menus."
new "## Кнопки в секции навигации главного и игрового меню."
# gui.rpy:261
# gui.rpy:263
old "## Controls the amount of spacing between preferences."
new "## Контролирует интервал между настройками."
# gui.rpy:264
# gui.rpy:266
old "## Controls the amount of spacing between preference buttons."
new "## Контролирует интервал между кнопками настройки."
# gui.rpy:267
# gui.rpy:269
old "## The spacing between file page buttons."
new "## Интервал между кнопками страниц."
# gui.rpy:270
# gui.rpy:272
old "## The spacing between file slots."
new "## Интервал между слотами."
# gui.rpy:273
# gui.rpy:275
old "## The position of the main menu text."
new "## Позиция текста главного меню."
# gui.rpy:277
# gui.rpy:279
old "## Frames"
new "## Рамки"
# gui.rpy:279
# gui.rpy:281
old "## These variables control the look of frames that can contain user interface components when an overlay or window is not present."
new "## Эти переменные контролируют вид рамок, содержащих компоненты пользовательского интерфейса, когда наложения или окна не представлены."
# gui.rpy:282
# gui.rpy:284
old "## Generic frames."
new "## Генерируем рамки."
# gui.rpy:285
# gui.rpy:287
old "## The frame that is used as part of the confirm screen."
new "## Рамки, используемые в частях экрана подтверждения."
# gui.rpy:288
# gui.rpy:290
old "## The frame that is used as part of the skip screen."
new "## Рамки, используемые в частях экрана пропуска."
# gui.rpy:291
# gui.rpy:293
old "## The frame that is used as part of the notify screen."
new "## Рамки, используемые в частях экрана уведомлений."
# gui.rpy:294
# gui.rpy:296
old "## Should frame backgrounds be tiled?"
new "## Должны ли фоны рамок моститься?"
# gui.rpy:298
# gui.rpy:300
old "## Bars, Scrollbars, and Sliders"
new "## Панели, Полосы прокрутки и Ползунки"
# gui.rpy:300
# gui.rpy:302
old "## These control the look and size of bars, scrollbars, and sliders."
new "## Эти настройки контролируют вид и размер панелей, полос прокрутки и ползунков."
# gui.rpy:302
# gui.rpy:304
old "## The default GUI only uses sliders and vertical scrollbars. All of the other bars are only used in creator-written screens."
new "## Стандартный GUI использует только ползунки и вертикальные полосы прокрутки. Все остальные полосы используются только в новосозданных экранах."
# gui.rpy:305
# gui.rpy:307
old "## The height of horizontal bars, scrollbars, and sliders. The width of vertical bars, scrollbars, and sliders."
new "## Высота горизонтальных панелей, полос прокрутки и ползунков. Ширина вертикальных панелей, полос прокрутки и ползунков."
# gui.rpy:311
# gui.rpy:313
old "## True if bar images should be tiled. False if they should be linearly scaled."
new "## True, если изображения панелей должны моститься. False, если они должны быть линейно масштабированы."
# gui.rpy:316
# gui.rpy:318
old "## Horizontal borders."
new "## Горизонтальные границы."
# gui.rpy:321
# gui.rpy:323
old "## Vertical borders."
new "## Вертикальные границы."
# gui.rpy:326
# gui.rpy:328
old "## What to do with unscrollable scrollbars in the gui. \"hide\" hides them, while None shows them."
new "## Что делать с непрокручиваемыми полосами прокрутки в интерфейсе. \"hide\" прячет их, а None их показывает."
# gui.rpy:331
# gui.rpy:333
old "## History"
new "## История"
# gui.rpy:333
# gui.rpy:335
old "## The history screen displays dialogue that the player has already dismissed."
new "## Экран истории показывает диалог, который игрок уже прошёл."
# gui.rpy:335
# gui.rpy:337
old "## The number of blocks of dialogue history Ren'Py will keep."
new "## Количество диалоговых блоков истории, которые Ren'Py будет хранить."
# gui.rpy:338
# gui.rpy:340
old "## The height of a history screen entry, or None to make the height variable at the cost of performance."
new "## Высота доступных записей на экране истории, или None, чтобы задать высоту в зависимости от производительности."
# gui.rpy:342
# gui.rpy:344
old "## The position, width, and alignment of the label giving the name of the speaking character."
new "## Местоположение, ширина и выравнивание заголовка, показывающего имя говорящего персонажа."
# gui.rpy:349
# gui.rpy:351
old "## The position, width, and alignment of the dialogue text."
new "## Местоположение, ширина и выравнивание диалогового текста."
# gui.rpy:356
# gui.rpy:358
old "## NVL-Mode"
new "## Режим NVL"
# gui.rpy:358
# gui.rpy:360
old "## The NVL-mode screen displays the dialogue spoken by NVL-mode characters."
new "## Экран режима NVL показывает диалог NVL персонажей."
# gui.rpy:360
# gui.rpy:362
old "## The borders of the background of the NVL-mode background window."
new "## Границы фона окна NVL."
# gui.rpy:363
# gui.rpy:365
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."
new "## Максимальное число показываемых строк в режиме NVL. Когда количество строчек начинает превышать это значение, старые строчки очищаются."
# gui.rpy:367
# gui.rpy:369
old "## The height of an NVL-mode entry. Set this to None to have the entries dynamically adjust height."
new "## Высота доступных строчек в режиме NVL. Установите на None, чтобы строчки динамически регулировали свою высоту."
# gui.rpy:371
# gui.rpy:373
old "## The spacing between NVL-mode entries when gui.nvl_height is None, and between NVL-mode entries and an NVL-mode menu."
new "## Интервал между строчками в режиме NVL, если gui.nvl_height имеет значение None, а также между строчками и меню режима NVL."
# gui.rpy:388
# gui.rpy:390
old "## The position, width, and alignment of nvl_thought text (the text said by the nvl_narrator character.)"
new "## Местоположение, ширина и выравнивание текста nvl_thought (текст от лица персонажа nvl_narrator)."
# gui.rpy:395
# gui.rpy:397
old "## The position of nvl menu_buttons."
new "## Местоположение кнопок меню NVL."
# gui.rpy:399
# gui.rpy:401
old "## Localization"
new "## Локализация"
# gui.rpy:401
# gui.rpy:403
old "## This controls where a line break is permitted. The default is suitable for most languages. A list of available values can be found at https://www.renpy.org/doc/html/style_properties.html#style-property-language"
new "## Эта настройка контролирует доступ к разрыву линий. Стандартная настройка подходит для большинства языков. Список доступных значений можно найти на https://www.renpy.org/doc/html/style_properties.html#style-property-language"
# gui.rpy:409
# gui.rpy:411
old "## Mobile devices"
new "## Мобильные устройства"
# gui.rpy:414
# gui.rpy:416
old "## This increases the size of the quick buttons to make them easier to touch on tablets and phones."
new "## Этот параметр увеличивает размер быстрых кнопок, чтобы сделать их доступнее для нажатия на планшетах и телефонах."
# gui.rpy:420
# gui.rpy:422
old "## This changes the size and spacing of various GUI elements to ensure they are easily visible on phones."
new "## Это изменяет размеры и интервалы различных элементов GUI, чтобы убедиться, что они будут лучше видны на телефонах."
# gui.rpy:424
# gui.rpy:426
old "## Font sizes."
new "## Размеры шрифтов."
# gui.rpy:432
# gui.rpy:434
old "## Adjust the location of the textbox."
new "## Регулирует местоположение текстового окна."
# gui.rpy:438
# gui.rpy:440
old "## Change the size and spacing of various things."
new "## Изменяет размеры и интервалы различных объектов."
# gui.rpy:451
# gui.rpy:453
old "## File button layout."
new "## Местоположение кнопок слотов."
# gui.rpy:455
# gui.rpy:457
old "## NVL-mode."
new "## Режим NVL."
+391 -148
View File
@@ -21,6 +21,10 @@ translate russian strings:
old "The filename must have the .rpy extension."
new "Имя должно иметь расширение .rpy."
# add_file.rpy:37
old "The file name may not be empty."
new "Имя файла не может быть пустым."
# add_file.rpy:39
old "The file already exists."
new "Файл уже существует."
@@ -31,11 +35,11 @@ translate russian strings:
# android.rpy:30
old "To build Android packages, please download RAPT, unzip it, and place it into the Ren'Py directory. Then restart the Ren'Py launcher."
new "Чтобы построить Android-пакет, пожалуйста, загрузите RAPT, разархивируйте его и поместить в директорию Ren'Py. Затем перезагрузите лаунчер Ren'Py."
new "Чтобы построить Android-пакет, пожалуйста, загрузите RAPT, разархивируйте его, и поместите в директорию Ren'Py. Затем перезагрузите лаунчер Ren'Py."
# 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 "Чтобы построить Android-пакеты на Windows требуется 32-разрядный инструментарий разработки Java. JDK отличен от JRE, и возможно, у вас есть Java без JDK.\n\nПожалуйста, {a=httpу://www.oracle.com/technetwork/java/javase/downloads/index.html}загрузите и установите JDK{/a}, и перезапустите лаунчер Ren'Py."
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=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 "Чтобы построить Android-пакеты на Windows требуется 64-битный инструментарий разработки Java 8. JDK отличен от JRE, и возможно, у вас есть Java без JDK.\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."
@@ -90,112 +94,348 @@ translate russian strings:
new "Собирает Android-пакет, устанавливает его на Android-устройстве, подключённом к компьютеру, а затем запускает приложение на устройстве."
# android.rpy:48
old "Connects to an Android device running ADB in TCP/IP mode."
new "Присоединение к Android-устройству с запущенным Android Debug Bridge в режиме TCP/IP."
# android.rpy:49
old "Disconnects from an Android device running ADB in TCP/IP mode."
new "Отсоединение от Android-устройства с запущенным Android Debug Bridge в режиме TCP/IP."
old "Retrieves the log from the Android device and writes it to a file."
new "Берёт лог с Андроид-устройства и пишет его в файл."
# android.rpy:50
old "Retrieves the log from the Android device and writes it to a file."
new "Берёт лог с Android-устройства и пишет его в файл."
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 "Выбор сборки Отладки, доступной для Android Studio. Смена режимов между отладкой и релизом требует предварительного удаления приложения с вашего устройства."
# android.rpy:244
# 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 "Выбор сборки Релиза, которую можно загружать в магазины приложений. Смена режимов между отладкой и релизом требует предварительного удаления приложения с вашего устройства."
# android.rpy:245
old "Copying Android files to distributions directory."
new "Копирую файлы Android в директорию дистрибутивов."
# android.rpy:308
# android.rpy:313
old "Android: [project.current.display_name!q]"
new "Android: [project.current.display_name!q]"
# android.rpy:328
# android.rpy:333
old "Emulation:"
new "Эмуляция:"
# android.rpy:337
# android.rpy:342
old "Phone"
new "Телефон"
# android.rpy:341
# android.rpy:346
old "Tablet"
new "Планшет"
# android.rpy:345
# android.rpy:350
old "Television"
new "Телевизор"
# android.rpy:357
# android.rpy:362
old "Build:"
new "Собрать:"
# android.rpy:365
# android.rpy:373
old "Debug"
new "Отладку"
# android.rpy:377
old "Release"
new "Релиз"
# android.rpy:384
old "Install SDK & Create Keys"
new "Установить SDK и создать ключи"
# android.rpy:369
# android.rpy:388
old "Configure"
new "Настроить"
# android.rpy:373
# android.rpy:392
old "Build Package"
new "Собрать Пакет"
# android.rpy:377
# android.rpy:396
old "Build & Install"
new "Собрать и Установить"
# android.rpy:381
# android.rpy:400
old "Build, Install & Launch"
new "Собрать, Установить и Запустить"
# android.rpy:392
# android.rpy:411
old "Other:"
new "Другое:"
# android.rpy:400
old "Remote ADB Connect"
new "Удалённое Соединение с ADB"
# android.rpy:404
old "Remote ADB Disconnect"
new "Удалённое Отсоединение от ADB"
# android.rpy:408
# android.rpy:419
old "Logcat"
new "Logcat"
# android.rpy:441
# android.rpy:452
old "Before packaging Android apps, you'll need to download RAPT, the Ren'Py Android Packaging Tool. Would you like to download RAPT now?"
new "Перед тем как собирать приложения Android, вам нужно загрузить RAPT, инструмент Ren'Py для сбора пакетов Android. Хотите загрузить RAPT сейчас?"
new "Перед упаковкой приложений Android вам нужно загрузить RAPT, инструмент упаковки Ren'Py Android. Желаете загрузить RAPT сейчас?"
# android.rpy:500
old "Remote ADB Address"
new "Удалённый адрес ADB"
# android.rpy:500
old "Please enter the IP address and port number to connect to, in the form \"192.168.1.143:5555\". Consult your device's documentation to determine if it supports remote ADB, and if so, the address and port to use."
new "Пожалуйста, введите IP-адрес и номер порта, чтобы соединиться с устройством, по форме \"192.168.1.143:5555\". Ознакомьтесь с документацией своего устройства, чтобы определить поддерживает ли оно удалённый ADB, и если так, адрес и порт для использования."
# android.rpy:512
old "Invalid remote ADB address"
new "Неверный адрес удалённого ADB"
# android.rpy:512
old "The address must contain one exactly one ':'."
new "Адрес должен содержать один, только один ':'."
# android.rpy:516
old "The host may not contain whitespace."
new "Хост не может содержать пробелы."
# android.rpy:522
old "The port must be a number."
new "Порт должен содержать только цифры."
# android.rpy:548
# android.rpy:505
old "Retrieving logcat information from device."
new "Извлекаю информацию logcat из устройства."
new "Извлекаю информацию logcat с устройства."
# androidstrings.rpy:7
old "{} is not a directory."
new "{} - не папка."
# androidstrings.rpy:8
old "{} does not contain a Ren'Py game."
new "{} не содержит игру Ren'Py."
# androidstrings.rpy:9
old "Run configure before attempting to build the app."
new "Запуск настройки перед попыткой постройки приложения."
# androidstrings.rpy:10
old "Google Play support is enabled, but build.google_play_key is not defined."
new "Поддержка Google Play включена, однако переменная build.google_play_key не определена."
# androidstrings.rpy:11
old "Updating project."
new "Обновляю проект"
# androidstrings.rpy:12
old "Creating assets directory."
new "Создаю директорию ресурсов"
# androidstrings.rpy:13
old "Creating expansion file."
new "Создаю файл-расширение"
# androidstrings.rpy:14
old "Packaging internal data."
new "Пакую внутренние данные"
# androidstrings.rpy:15
old "I'm using Gradle to build the package."
new "Использую Gradle для сборки пакета"
# androidstrings.rpy:16
old "Uploading expansion file."
new "Загружаю файл-расширение"
# androidstrings.rpy:17
old "The build seems to have failed."
new "Похоже, сборка провалилась."
# androidstrings.rpy:18
old "Launching app."
new "Запускаю приложение"
# androidstrings.rpy:19
old "The build seems to have succeeded."
new "Кажется, сборка прошла успешно!"
# androidstrings.rpy:20
old "The armeabi-v7a version works on most phones or tablets, while the x86_64 version works on the simulator and chromebooks."
new "Версия armeabi-v7a работает на большинстве смартфонов и планшетов, а версия x86_64 требуется для симуляторов и хромбуков."
# androidstrings.rpy:20
old "What is the full name of your application? This name will appear in the list of installed applications."
new "Каким будет полное имя вашего приложения? Это имя будет представлено в списке установленных приложений."
# androidstrings.rpy:21
old "What is the short name of your application? This name will be used in the launcher, and for application shortcuts."
new "Каким будет короткое имя вашего приложения? Это имя будет использоваться в лаунчере, а также ярлыках приложения."
# androidstrings.rpy:22
old "What is the name of the package?\n\nThis is usually of the form com.domain.program or com.domain.email.program. It may only contain ASCII letters and dots. It must contain at least one dot."
new "Каким будет имя собранного пакета?\n\nОбычно оно имеет форму com.domain.program или com.domain.email.program. Имя может содержать только символы ASCII и точки. Также оно должно содержать хотя бы одну точку."
# androidstrings.rpy:23
old "The package name may not be empty."
new "Имя пакета не может быть пустым."
# androidstrings.rpy:24
old "The package name may not contain spaces."
new "В имени пакета не должно быть пробелов."
# androidstrings.rpy:25
old "The package name must contain at least one dot."
new "Имя пакета должно содержать как минимум одну точку."
# androidstrings.rpy:26
old "The package name may not contain two dots in a row, or begin or end with a dot."
new "Имя пакета не должно содержать две и более точек подряд, или начинаться и заканчиваться с точки."
# androidstrings.rpy:27
old "Each part of the package name must start with a letter, and contain only letters, numbers, and underscores."
new "Каждая часть имя пакета должна начинаться с буквы и содержать только английские буквы, цифры и подчёркивания."
# androidstrings.rpy:28
old "{} is a Java keyword, and can't be used as part of a package name."
new "{} - оператор Java, его нельзя использовать в имени пакета."
# androidstrings.rpy:29
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."
new "Какой будет версия приложения?\n\nВерсия приложения представлена для человека и независима от config.version. Она может содержать только цифры и точки."
# androidstrings.rpy:30
old "The version number must contain only numbers and dots."
new "Номер версии должен содержать только цифры и точки."
# androidstrings.rpy:31
old "What is the version code?\n\nThis must be a positive integer number, and the value should increase between versions."
new "Каким будет код версии?\n\nЭто должно быть положительное целое число, и его значение должно увеличиваться с каждой версией."
# androidstrings.rpy:32
old "The numeric version must contain only numbers."
new "Целое версии должно содержать только цифры."
# androidstrings.rpy:33
old "How would you like your application to be displayed?"
new "В какой ориентации экрана вы хотите отображать ваше приложение?"
# androidstrings.rpy:34
old "In landscape orientation."
new "В альбомном виде."
# androidstrings.rpy:35
old "In portrait orientation."
new "В портретном виде."
# androidstrings.rpy:36
old "In the user's preferred orientation."
new "По желанию пользователя."
# androidstrings.rpy:37
old "Which app store would you like to support in-app purchasing through?"
new "Через какой магазин приложений вы желаете поддерживать микротранзакции внутри приложения?"
# androidstrings.rpy:38
old "Google Play."
new "Google Play."
# androidstrings.rpy:39
old "Amazon App Store."
new "Магазин приложений Amazon."
# androidstrings.rpy:40
old "Both, in one app."
new "Оба, в одном приложении."
# androidstrings.rpy:41
old "Neither."
new "Отключить."
# androidstrings.rpy:42
old "Would you like to create an expansion APK?"
new "Желаете создать пакет в формате APK+кэш?"
# androidstrings.rpy:43
old "No. Size limit of 100 MB on Google Play, but can be distributed through other stores and sideloaded."
new "Нет. Ограничение по размеру в Google Play - 100 МБ, но может распространяться через другие магазины или локально."
# androidstrings.rpy:44
old "Yes. 2 GB size limit, but won't work outside of Google Play. (Read the documentation to get this to work.)"
new "Да. Ограничение в 2 ГБ, но не будет работать вне среды Google Play. (Ознакомьтесь с {a=https://renpy.org/doc/html/android.html?highlight=apk#google-play-expansion-apks}документацией{/a})"
# androidstrings.rpy:45
old "Do you want to allow the app to access the Internet?"
new "Желаете разрешить вашему приложению доступ в Интернет?"
# androidstrings.rpy:46
old "Do you want to automatically update the generated project?"
new "Желаете автоматически обновлять сгенерированный проект?"
# androidstrings.rpy:47
old "Yes. This is the best choice for most projects."
new "Да. Это лучшее решение для большинства проектов."
# androidstrings.rpy:48
old "No. This may require manual updates when Ren'Py or the project configuration changes."
new "Нет. Это решение может потребовать ручных обновлений при изменении Ren'Py или конфигурации проекта."
# androidstrings.rpy:49
old "Unknown configuration variable: {}"
new "Неизвестная конфигурационная переменная: {}"
# androidstrings.rpy:50
old "I'm compiling a short test program, to see if you have a working JDK on your system."
new "Сейчас я компилирую небольшую тестовую программу, чтобы убедиться, что в вашей системе есть работающий JDK."
# androidstrings.rpy:51
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, пожалуйста, загрузите его с:\n\nhttp://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html\n\nJDK отличается от JRE, так что есть вероятность, что у вас установлена Java без JDK. Без функционирующего JDK я не могу продолжить."
# androidstrings.rpy:52
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 variabe to use a different version of Java."
new "Судя по всему, версия Java на вашем компьютере - не JDK 8, единственная версия, поддерживаемая Android SDK. Если вам нужно установить JDK 8, вы можете скачать его с:\n\nhttp://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html\n\nТакже вы можете изменить переменную окружения JAVA_HOME, чтобы воспользоваться другой версией Java."
# androidstrings.rpy:53
old "The JDK is present and working. Good!"
new "JDK найден и работает. Отлично!"
# androidstrings.rpy:54
old "The Android SDK has already been unpacked."
new "Android SDK уже распакован."
# androidstrings.rpy:55
old "Do you accept the Android SDK Terms and Conditions?"
new "Вы принимаете условия и положения пользования Android SDK?"
# androidstrings.rpy:56
old "I'm downloading the Android SDK. This might take a while."
new "Загружаю Android SDK. Это может занять некоторое время."
# androidstrings.rpy:57
old "I'm extracting the Android SDK."
new "Извлекаю Android SDK."
# androidstrings.rpy:58
old "I've finished unpacking the Android SDK."
new "Извлечение Android SDK завершено."
# androidstrings.rpy:59
old "I'm about to download and install the required Android packages. This might take a while."
new "Начинаю загрузку и установку необходимых пакетов Android. Это может занять время."
# androidstrings.rpy:60
old "I was unable to accept the Android licenses."
new "Внимание, не удалось принять соглашения Android!"
# androidstrings.rpy:61
old "I was unable to install the required Android packages."
new "Установка необходимых пакетов Android не удалась!"
# androidstrings.rpy:62
old "I've finished installing the required Android packages."
new "Заканчиваю установку необходимых пакетов Android."
# androidstrings.rpy:63
old "You set the keystore yourself, so I'll assume it's how you want it."
new "Вы сами установили хранилище ключей, так что посмею предположить, что оно настроено так, как вы хотите."
# androidstrings.rpy:64
old "You've already created an Android keystore, so I won't create a new one for you."
new "Вы уже создали хранилище ключей Android, так что я не буду создавать для вас новое."
# androidstrings.rpy:65
old "I can create an application signing key for you. Signing an application with this key allows it to be placed in the Android Market and other app stores.\n\nDo you want to create a key?"
new "Я могу создать для вас ключ для подписи приложения. Подпись приложения этим ключом позволит разместить его в Android Market и других магазинах приложений.\n\nХотите создать ключ?"
# androidstrings.rpy:66
old "I will create the key in the android.keystore file.\n\nYou need to back this file up. If you lose it, you will not be able to upgrade your application.\n\n\\You 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 android.keystore, and keep it in a safe place?"
new "Я создам ключ в файле android.keystore.\n\nВам нужно сохранить этот файл. Если вы его потеряете, то не сможете обновлять ваше приложение. n.\n\n\\Также вам нужно держать ваш ключ в безопасность. Если злоумышленникам удастся получить его, они потенциально могут создать вредоносную версию приложения и красть данные ваших пользователей.\n\nБудете ли вы хранить android.keystore и держать его в надёжном месте?"
# androidstrings.rpy:67
old "Please enter your name or the name of your organization."
new "Пожалуйста, введите ваше имя или имя вашей организации."
# androidstrings.rpy:68
old "Could not create android.keystore. Is keytool in your path?"
new "Не могу создать android.keystore. Хранилище ключей расположено в вашем пути файлов?"
# androidstrings.rpy:69
old "I've finished creating android.keystore. Please back it up, and keep it in a safe place."
new "Создание android.keystore завершено. Пожалуйста, сохраните его и держите в надёжном месте."
# androidstrings.rpy:70
old "It looks like you're ready to start packaging games."
new "Похоже, вы готовы собирать игры!"
# choose_directory.rpy:87
old "Ren'Py was unable to run python with tkinter to choose the directory. Please install the python-tk or tkinter package."
@@ -569,75 +809,75 @@ translate russian strings:
old "Please click on the color scheme you wish to use, then click Continue. These colors can be changed and customized later."
new "Пожалуйста, кликните на цветовую схему, которую вы хотите использовать, а затем кликните Продолжить. Эти цвета можно изменить позже."
# gui7.rpy:310
# gui7.rpy:311
old "{b}Warning{/b}\nContinuing will overwrite customized bar, button, save slot, scrollbar, and slider images.\n\nWhat would you like to do?"
new "{b}Внимание{/b}\nПродолжив, вы перепишете настроенные полосы, кнопки, слоты сохранения, полосы прокрутки и ползунки.\n\nЧто вы хотите сделать?"
# gui7.rpy:310
# gui7.rpy:311
old "Choose new colors, then regenerate image files."
new "Выбрать новые цвета, затем воссоздать файлы изображений."
# gui7.rpy:310
# gui7.rpy:311
old "Regenerate the image files using the colors in gui.rpy."
new "Воссоздать файлы изображений используя цвета из gui.rpy."
# gui7.rpy:330
# gui7.rpy:331
old "PROJECT NAME"
new "ИМЯ ПРОЕКТА"
# gui7.rpy:330
# gui7.rpy:331
old "Please enter the name of your project:"
new "Пожалуйста, введите имя проекта:"
# gui7.rpy:338
# gui7.rpy:339
old "The project name may not be empty."
new "Имя проекта не должно быть пустым."
# gui7.rpy:343
# gui7.rpy:344
old "[project_name!q] already exists. Please choose a different project name."
new "[project_name!q] уже существует. Выберите другое имя проекта."
# gui7.rpy:346
# gui7.rpy:347
old "[project_dir!q] already exists. Please choose a different project name."
new "[project_dir!q] уже существует. Выберите другое имя проекта."
# gui7.rpy:357
# gui7.rpy:358
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 1280x720 is a reasonable compromise."
new "Какое разрешение будет использовать ваш проект? Хотя Ren'Py может масштабировать окно, это будет целевой размер окна, по отношению к которому будут вырисовываться ресурсы, и на котором они будут наиболее чёткие.\n\nСтандартный 1280x720 — резонный компромисс."
# gui7.rpy:357
# gui7.rpy:358
old "Custom. The GUI is optimized for a 16:9 aspect ratio."
new "Своё. GUI оптимизирован под соотношение сторон 16:9."
# gui7.rpy:372
# gui7.rpy:373
old "WIDTH"
new "ШИРИНА"
# gui7.rpy:372
# gui7.rpy:373
old "Please enter the width of your game, in pixels."
new "Пожалуйста, введите ширину вашей игры в пикселях."
# gui7.rpy:377
# gui7.rpy:378
old "The width must be a number."
new "Ширина должна быть цифрой."
# gui7.rpy:379
# gui7.rpy:380
old "HEIGHT"
new "ВЫСОТА"
# gui7.rpy:379
# gui7.rpy:380
old "Please enter the height of your game, in pixels."
new "Пожалуйста, введите высоту вашей игры в пикселях."
# gui7.rpy:384
# gui7.rpy:385
old "The height must be a number."
new "Высота должна быть цифрой."
# gui7.rpy:426
# gui7.rpy:427
old "Creating the new project..."
new "Создаю новый проект..."
# gui7.rpy:428
# gui7.rpy:429
old "Updating the project..."
new "Обновляю проект..."
@@ -821,7 +1061,7 @@ translate russian strings:
old "Please {a=https://itch.io/game/new}create your project{/a}, then add a line like \n{vspace=5}define build.itch_project = \"user-name/game-name\"\n{vspace=5} to options.rpy."
new "Пожалуйста, {a=https://itch.io/game/new}создайте ваш проект{/a}, затем добавьте строку типа\n{vspace=5}define build.itch_project = \"user-name/game-name\"\n{vspace=5} в options.rpy."
# mobilebuild.rpy:109
# mobilebuild.rpy:110
old "{a=%s}%s{/a}"
new "{a=%s}%s{/a}"
@@ -829,7 +1069,7 @@ translate russian strings:
old "Navigate: [project.current.display_name!q]"
new "Навигация: [project.current.display_name!q]"
# navigation.rpy:177
# navigation.rpy:178
old "Order: "
new "Порядок: "
@@ -914,8 +1154,8 @@ translate russian strings:
new "Директория проектов не может быть установлена. Сдаюсь."
# new_project.rpy:71
old "You will be creating an [new_project_language] language project. Change the launcher language in preferences to create a project in another language."
new "Вы создаёте проект на языке [new_project_language]. Чтобы создать проект на другом языке, измените язык лаунчера."
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."
new "Вы создаёте проект на русском языке. Чтобы создать проект на другом языке, измените язык лаунчера."
# new_project.rpy:79
old "Which interface would you like to use? The new GUI has a modern look, supports wide screens and mobile devices, and is easier to customize. Legacy themes might be necessary to work with older example code.\n\n[language_support!t]\n\nIf in doubt, choose the new GUI, then click Continue on the bottom-right."
@@ -933,91 +1173,87 @@ translate russian strings:
old "Please select a template to use for your new project. The template sets the default font and the user interface language. If your language is not supported, choose 'english'."
new "Пожалуйста, выберите образец, на котором основывать ваш проект. Образец задаёт шрифт и язык по умолчанию для интерфейса. Если ваш язык не поддерживается, выберите 'english'."
# preferences.rpy:72
# preferences.rpy:73
old "Launcher Preferences"
new "Настройки лаунчера"
# preferences.rpy:93
# preferences.rpy:94
old "Projects Directory:"
new "Папка проектов:"
# preferences.rpy:100
# preferences.rpy:101
old "[persistent.projects_directory!q]"
new "[persistent.projects_directory!q]"
# preferences.rpy:102
# preferences.rpy:103
old "Projects directory: [text]"
new "Папка проектов: [text]"
# preferences.rpy:104
# preferences.rpy:105
old "Not Set"
new "Не задано"
# preferences.rpy:119
# preferences.rpy:120
old "Text Editor:"
new "Текстовый редактор:"
# preferences.rpy:125
# preferences.rpy:126
old "Text editor: [text]"
new "Текстовый редактор: [text]"
# preferences.rpy:141
old "Update Channel:"
new "Канал обновлений:"
# preferences.rpy:161
# preferences.rpy:145
old "Navigation Options:"
new "Опции навигации:"
# preferences.rpy:165
# preferences.rpy:149
old "Include private names"
new "Включать приватные имена"
# preferences.rpy:166
# preferences.rpy:150
old "Include library names"
new "Включать имена библиотек"
# preferences.rpy:176
# preferences.rpy:160
old "Launcher Options:"
new "Опции лаунчера:"
# preferences.rpy:180
# preferences.rpy:164
old "Hardware rendering"
new "Аппаратный рендеринг"
# preferences.rpy:181
# preferences.rpy:165
old "Show edit file section"
new "Показывать секцию редактирования"
# preferences.rpy:182
# preferences.rpy:166
old "Large fonts"
new "Большие шрифты"
# preferences.rpy:185
# preferences.rpy:169
old "Console output"
new "Вывод на консоль"
# preferences.rpy:187
# preferences.rpy:173
old "Force new tutorial"
new "Новое обучение"
# preferences.rpy:189
# preferences.rpy:177
old "Legacy options"
new "Включить старые темы"
# preferences.rpy:192
# preferences.rpy:180
old "Show templates"
new "Показывать образцы"
# preferences.rpy:194
# preferences.rpy:182
old "Sponsor message"
new "Сообщение спонсорам"
# preferences.rpy:214
# preferences.rpy:202
old "Open launcher project"
new "Открыть проект лаунчера"
# preferences.rpy:228
# preferences.rpy:216
old "Language:"
new "Язык:"
@@ -1037,35 +1273,35 @@ translate russian strings:
old "Have you backed up your projects recently?"
new "Давно сохраняли свои проекты?"
# project.rpy:280
# project.rpy:281
old "Launching the project failed."
new "Запуск проекта провален."
# project.rpy:280
# project.rpy:281
old "Please ensure that your project launches normally before running this command."
new "Пожалуйста, убедитесь, что ваш проект нормально запускается перед использованием этой команды."
# project.rpy:296
# project.rpy:297
old "Ren'Py is scanning the project..."
new "Ren'Py сканирует проект..."
# project.rpy:725
# project.rpy:729
old "Launching"
new "Запускаю"
# project.rpy:759
# project.rpy:763
old "PROJECTS DIRECTORY"
new "ДИРЕКТОРИЯ ПРОЕКТОВ"
# project.rpy:759
# project.rpy:763
old "Please choose the projects directory using the directory chooser.\n{b}The directory chooser may have opened behind this window.{/b}"
new "Пожалуйста, выберите директорию проектов, используя выборщик директорий.\n{b}Он мог появиться позади этого окна.{/b}"
# project.rpy:759
# project.rpy:763
old "This launcher will scan for projects in this directory, will create new projects in this directory, and will place built projects into this directory."
new "Лаунчер будет искать проекты в этой директории, создавать новые проекты в этой директории, и размещать построенные проекты в этой директории."
# project.rpy:764
# project.rpy:768
old "Ren'Py has set the projects directory to:"
new "Ren'Py установила директорию проектов на:"
@@ -1173,95 +1409,102 @@ translate russian strings:
old "Ren'Py has finished extracting dialogue. The extracted dialogue can be found in dialogue.[persistent.dialogue_format] in the base directory."
new "Ren'Py завершила извлечение диалога. Извлечённый диалог можно найти в файле dialogue.[persistent.dialogue_format] в директории проекта."
# updater.rpy:75
old "Select Update Channel"
new "Выберите канал обновлений"
# updater.rpy:86
old "The update channel controls the version of Ren'Py the updater will download. Please select an update channel:"
new "Канал обновлений выбирает, какую версию Ren'Py скачает программа для обновления. Выберите канал:"
# updater.rpy:91
old "Release"
new "Релиз"
# updater.rpy:97
# updater.rpy:63
old "{b}Recommended.{/b} The version of Ren'Py that should be used in all newly-released games."
new "{b}Рекомендуется.{/b} Эта версия Ren'Py должна использоваться для всех новых игр."
# updater.rpy:102
# updater.rpy:65
old "Prerelease"
new "Пререлиз"
# updater.rpy:108
# updater.rpy:66
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 "Публичный анонс следующей версии Ren'Py, который можно использовать для тестирования, в том числе новых возможностей Ren'Py, но не для финальных релизов игр."
# updater.rpy:114
# updater.rpy:68
old "Experimental"
new "Экспериментальный"
# updater.rpy:120
# updater.rpy:69
old "Experimental versions of Ren'Py. You shouldn't select this channel unless asked by a Ren'Py developer."
new "Экспериментальные версии Ren'Py. Не выбирайте этот канал, если вас не просил об этом разработчик Ren'Py."
# updater.rpy:126
# updater.rpy:71
old "Nightly"
new "Ночной"
# updater.rpy:132
# updater.rpy:72
old "The bleeding edge of Ren'Py development. This may have the latest features, or might not run at all."
new "Развитие Ren'Py на краю горизонта событий. Здесь можно найти новейшие возможности Ren'Py или всё может просто не запуститься."
# updater.rpy:152
# updater.rpy:90
old "Select Update Channel"
new "Выберите канал обновлений"
# updater.rpy:101
old "The update channel controls the version of Ren'Py the updater will download."
new "Канал обновлений отвечает за версию Ren'Py, скачиваемую через обновление."
# updater.rpy:110
old "• This version is installed and up-to-date."
new "• На данный момент установлена эта версия."
# updater.rpy:118
old "%B %d, %Y"
new "%d %B %Y года"
# updater.rpy:140
old "An error has occured:"
new "Возникла ошибка:"
# updater.rpy:154
# updater.rpy:142
old "Checking for updates."
new "Проверка обновлений."
# updater.rpy:156
# updater.rpy:144
old "Ren'Py is up to date."
new "Ren'Py обновлена."
# updater.rpy:158
# updater.rpy:146
old "[u.version] is now available. Do you want to install it?"
new "[u.version] доступна. Вы хотите её установить?"
# updater.rpy:160
# updater.rpy:148
old "Preparing to download the update."
new "Подготовка к обновлению."
# updater.rpy:162
# updater.rpy:150
old "Downloading the update."
new "Загрузка обновления."
# updater.rpy:164
# updater.rpy:152
old "Unpacking the update."
new "Распаковка обновления."
# updater.rpy:166
# updater.rpy:154
old "Finishing up."
new "Завершаю..."
# updater.rpy:168
# updater.rpy:156
old "The update has been installed. Ren'Py will restart."
new "Обновление было установлено. Ren'Py будет перезапущена."
# updater.rpy:170
# updater.rpy:158
old "The update has been installed."
new "Обновление было установлено."
# updater.rpy:172
# updater.rpy:160
old "The update was cancelled."
new "Обновление было отменено."
# updater.rpy:189
# updater.rpy:177
old "Ren'Py Update"
new "Обновление Ren'Py"
# updater.rpy:195
# updater.rpy:183
old "Proceed"
new "Продолжить"
# updater.rpy:188
old "Fetching the list of update channels"
new "Запрашиваю список каналов обновления"
+1 -27
View File
@@ -1,27 +1 @@

translate russian strings:
# _layout/classic_joystick_preferences.rpym:94
old "Joystick Mapping"
new "Раскладка джойстика"
# _layout/classic_load_save.rpym:138
old "Empty Slot."
new "Пустой слот"
# _layout/classic_load_save.rpym:170
old "a"
new "а"
# _layout/classic_load_save.rpym:179
old "q"
new "б"
# _compat/gamemenu.rpym:355
old "Previous"
new "Назад"
# _compat/gamemenu.rpym:362
old "Next"
new "Далее"
# This file intentionally left blank.
+2 -2
View File
@@ -205,7 +205,7 @@ translate russian strings:
old "## Reserve space for the navigation section."
new "## Резервирует пространство для навигации."
# screens.rpy:471
# screens.rpy:473
old "Return"
new "Вернуться"
@@ -297,7 +297,7 @@ translate russian strings:
old "{#auto_page}A"
new "{#auto_page}А"
# screens.rpy:667
# screens.rpy:669
old "{#quick_page}Q"
new "{#quick_page}Б"
@@ -1,13 +0,0 @@
Copyright (C) 2008 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
+531 -151
View File
@@ -153,282 +153,662 @@ translate simplified_chinese strings:
old "{#month_short}Dec"
new "{#month_short}12月"
# 00action_file.rpy:235
# 00action_file.rpy:240
old "%b %d, %H:%M"
new "%m月%d日, %H:%M"
new "%m月%d日%H:%M"
# 00action_file.rpy:820
# 00action_file.rpy:353
old "Save slot %s: [text]"
new "保存存档 %s[text]"
# 00action_file.rpy:434
old "Load slot %s: [text]"
new "读取存档 %s[text]"
# 00action_file.rpy:487
old "Delete slot [text]"
new "删除存档 [text]"
# 00action_file.rpy:569
old "File page auto"
new "自动存档页"
# 00action_file.rpy:571
old "File page quick"
new "快速存档页"
# 00action_file.rpy:573
old "File page [text]"
new "第 [text] 存档页"
# 00action_file.rpy:763
old "Next file page."
new "下一存档页。"
# 00action_file.rpy:827
old "Previous file page."
new "上一存档页。"
# 00action_file.rpy:889
old "Quick save complete."
new "快速保存完成。"
# 00gui.rpy:227
# 00action_file.rpy:907
old "Quick save."
new "快速保存。"
# 00action_file.rpy:926
old "Quick load."
new "快速读取。"
# 00action_other.rpy:355
old "Language [text]"
new "语言 [text]"
# 00director.rpy:708
old "The interactive director is not enabled here."
new "互动导演模式未启动。"
# 00director.rpy:1481
old "⬆"
new "⬆"
# 00director.rpy:1487
old "⬇"
new "⬇"
# 00director.rpy:1551
old "Done"
new "完成"
# 00director.rpy:1561
old "(statement)"
new "(statement)"
# 00director.rpy:1562
old "(tag)"
new "(tag)"
# 00director.rpy:1563
old "(attributes)"
new "(attributes)"
# 00director.rpy:1564
old "(transform)"
new "(transform)"
# 00director.rpy:1589
old "(transition)"
new "(transition)"
# 00director.rpy:1601
old "(channel)"
new "(channel)"
# 00director.rpy:1602
old "(filename)"
new "(filename)"
# 00director.rpy:1631
old "Change"
new "更改"
# 00director.rpy:1633
old "Add"
new "添加"
# 00director.rpy:1636
old "Cancel"
new "取消"
# 00director.rpy:1639
old "Remove"
new "移除"
# 00director.rpy:1674
old "Statement:"
new "声明:"
# 00director.rpy:1695
old "Tag:"
new "标签:"
# 00director.rpy:1711
old "Attributes:"
new "属性:"
# 00director.rpy:1729
old "Transforms:"
new "变换:"
# 00director.rpy:1748
old "Behind:"
new "置后于:"
# 00director.rpy:1767
old "Transition:"
new "转场:"
# 00director.rpy:1785
old "Channel:"
new "轨道:"
# 00director.rpy:1803
old "Audio Filename:"
new "音频文件:"
# 00gui.rpy:370
old "Are you sure?"
new "您确定吗?"
# 00gui.rpy:228
# 00gui.rpy:371
old "Are you sure you want to delete this save?"
new "您确定要删除此存档吗?"
# 00gui.rpy:229
# 00gui.rpy:372
old "Are you sure you want to overwrite your save?"
new "您确定要覆盖此存档吗?"
# 00gui.rpy:230
# 00gui.rpy:373
old "Loading will lose unsaved progress.\nAre you sure you want to do this?"
new "读取存档将会使未保存的进度丢失。\n您确定要继续吗?"
# 00gui.rpy:231
# 00gui.rpy:374
old "Are you sure you want to quit?"
new "您确定要退出吗?"
# 00gui.rpy:232
# 00gui.rpy:375
old "Are you sure you want to return to the main menu?\nThis will lose unsaved progress."
new "您确定要返回到标题画面吗?\n此操作将会使未保存的进度丢失。"
# 00gui.rpy:233
# 00gui.rpy:376
old "Are you sure you want to end the replay?"
new "您确定要结束回放吗?"
# 00gui.rpy:234
# 00gui.rpy:377
old "Are you sure you want to begin skipping?"
new "您确定要开始快进吗?"
# 00gui.rpy:235
# 00gui.rpy:378
old "Are you sure you want to skip to the next choice?"
new "您确定要直接快进到下个选项吗?"
# 00gui.rpy:236
# 00gui.rpy:379
old "Are you sure you want to skip unseen dialogue to the next choice?"
new "您确定要跳过未读对话,直接快进到下个选项吗?"
# 00keymap.rpy:250
old "Saved screenshot as %s."
new "截图保存%s"
# 00keymap.rpy:258
old "Failed to save screenshot as %s."
new "截图保存到以下位置时失败:%s"
# 00library.rpy:142
# 00keymap.rpy:270
old "Saved screenshot as %s."
new "截图已保存到以下位置:%s"
# 00library.rpy:146
old "Self-voicing disabled."
new "自动朗读已关闭。"
# 00library.rpy:143
# 00library.rpy:147
old "Clipboard voicing enabled. "
new "剪贴板朗读已开启。"
# 00library.rpy:144
# 00library.rpy:148
old "Self-voicing enabled. "
new "自动朗读已开启。"
# 00library.rpy:179
# 00library.rpy:150
old "bar"
new "bar"
# 00library.rpy:151
old "selected"
new "selected"
# 00library.rpy:152
old "viewport"
new "viewport"
# 00library.rpy:153
old "horizontal scroll"
new "horizontal scroll"
# 00library.rpy:154
old "vertical scroll"
new "vertical scroll"
# 00library.rpy:155
old "activate"
new "activate"
# 00library.rpy:156
old "deactivate"
new "deactivate"
# 00library.rpy:157
old "increase"
new "increase"
# 00library.rpy:158
old "decrease"
new "decrease"
# 00library.rpy:193
old "Skip Mode"
new "快进"
# 00library.rpy:262
# 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 宽通用公共许可证。完整软件列表及源代码链接,请{a=https://www.renpy.org/l/license}访问此处{/a}。"
new "本程序包含了由数个许可证授权的免费软件,包括 MIT 许可证和 GNU 宽通用公共许可证。完整软件列表及源代码链接,请{a=https://www.renpy.org/l/license}访问此处{/a}。"
# 00preferences.rpy:422
# 00preferences.rpy:207
old "display"
new "display"
# 00preferences.rpy:219
old "transitions"
new "transitions"
# 00preferences.rpy:228
old "skip transitions"
new "skip transitions"
# 00preferences.rpy:230
old "video sprites"
new "video sprites"
# 00preferences.rpy:239
old "show empty window"
new "show empty window"
# 00preferences.rpy:248
old "text speed"
new "text speed"
# 00preferences.rpy:256
old "joystick"
new "joystick"
# 00preferences.rpy:256
old "joystick..."
new "joystick..."
# 00preferences.rpy:263
old "skip"
new "skip"
# 00preferences.rpy:266
old "skip unseen [text]"
new "skip unseen [text]"
# 00preferences.rpy:271
old "skip unseen text"
new "skip unseen text"
# 00preferences.rpy:273
old "begin skipping"
new "begin skipping"
# 00preferences.rpy:277
old "after choices"
new "after choices"
# 00preferences.rpy:284
old "skip after choices"
new "skip after choices"
# 00preferences.rpy:286
old "auto-forward time"
new "auto-forward time"
# 00preferences.rpy:300
old "auto-forward"
new "auto-forward"
# 00preferences.rpy:307
old "Auto forward"
new "自动前进"
# 00preferences.rpy:310
old "auto-forward after click"
new "auto-forward after click"
# 00preferences.rpy:319
old "automatic move"
new "automatic move"
# 00preferences.rpy:328
old "wait for voice"
new "wait for voice"
# 00preferences.rpy:337
old "voice sustain"
new "voice sustain"
# 00preferences.rpy:346
old "self voicing"
new "self voicing"
# 00preferences.rpy:355
old "clipboard voicing"
new "clipboard voicing"
# 00preferences.rpy:364
old "debug voicing"
new "debug voicing"
# 00preferences.rpy:373
old "emphasize audio"
new "emphasize audio"
# 00preferences.rpy:382
old "rollback side"
new "rollback side"
# 00preferences.rpy:392
old "gl powersave"
new "gl powersave"
# 00preferences.rpy:398
old "gl framerate"
new "gl framerate"
# 00preferences.rpy:401
old "gl tearing"
new "gl tearing"
# 00preferences.rpy:413
old "music volume"
new "music volume"
# 00preferences.rpy:414
old "sound volume"
new "sound volume"
# 00preferences.rpy:415
old "voice volume"
new "voice volume"
# 00preferences.rpy:416
old "mute music"
new "mute music"
# 00preferences.rpy:417
old "mute sound"
new "mute sound"
# 00preferences.rpy:418
old "mute voice"
new "mute voice"
# 00preferences.rpy:419
old "mute all"
new "mute all"
# 00preferences.rpy:500
old "Clipboard voicing enabled. Press 'shift+C' to disable."
new "剪贴板朗读已开启。按 Shift+C 来关闭。"
# 00preferences.rpy:424
# 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 来关闭。"
# 00preferences.rpy:426
# 00preferences.rpy:504
old "Self-voicing enabled. Press 'v' to disable."
new "自动朗读已开启。按 V 来关闭。"
# _compat\gamemenu.rpym:198
old "Empty Slot."
new "空存档位。"
# _compat\gamemenu.rpym:355
old "Previous"
new "上一页"
# _compat\gamemenu.rpym:362
old "Next"
new "下一页"
# _compat\preferences.rpym:428
old "Joystick Mapping"
new "手柄映射"
# _developer\developer.rpym:38
old "Developer Menu"
new "开发者菜单"
# _developer\developer.rpym:43
old "Interactive Director (D)"
new "互动导演 (D)"
# _developer\developer.rpym:45
old "Reload Game (Shift+R)"
new "重新加载游戏 (Shift+R)"
# _developer\developer.rpym:47
old "Console (Shift+O)"
new "控制台 (Shift+O)"
# _developer\developer.rpym:49
old "Variable Viewer"
new "变量查看器"
# _developer\developer.rpym:51
old "Image Location Picker"
new "图像坐标提取器"
# _developer\developer.rpym:53
old "Filename List"
new "文件列表"
# _developer\developer.rpym:57
old "Show Image Load Log (F4)"
new "显示图像加载日志 (F4)"
# _developer\developer.rpym:60
old "Hide Image Load Log (F4)"
new "隐藏图像加载日志 (F4)"
# _developer\developer.rpym:63
old "Image Attributes"
new "图像属性"
# _developer\developer.rpym:90
old "[name] [attributes] (hidden)"
new "[name] [attributes](隐藏)"
# _developer\developer.rpym:94
old "[name] [attributes]"
new "[name] [attributes]"
# _developer\developer.rpym:137
old "Nothing to inspect."
new "无对象可查验。"
# _developer\developer.rpym:265
old "Return to the developer menu"
new "返回到开发者菜单"
# _developer\developer.rpym:425
old "Rectangle: %r"
new "矩形参数:%r"
# _developer\developer.rpym:430
old "Mouse position: %r"
new "鼠标坐标:%r"
# _developer\developer.rpym:435
old "Right-click or escape to quit."
new "右键点击或按下 Esc 键来退出。"
# _developer\developer.rpym:467
old "Rectangle copied to clipboard."
new "矩形参数已复制到剪贴板。"
# _developer\developer.rpym:470
old "Position copied to clipboard."
new "坐标已复制到剪贴板。"
# _developer\developer.rpym:489
old "Type to filter: "
new "输入关键字过滤:"
# _developer\developer.rpym:617
old "Textures: [tex_count] ([tex_size_mb:.1f] MB)"
new "贴图:[tex_count] ([tex_size_mb:.1f] MB)"
# _developer\developer.rpym:621
old "Image cache: [cache_pct:.1f]% ([cache_size_mb:.1f] MB)"
new "图像缓存:[cache_pct:.1f]% ([cache_size_mb:.1f] MB)"
# _developer\developer.rpym:631
old "✔ "
new "✔ "
# _developer\developer.rpym:634
old "✘ "
new "✘ "
# _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}"
# _developer\inspector.rpym:38
old "Displayable Inspector"
new "可视组件查验器"
# _developer\inspector.rpym:61
old "Size"
new "大小"
# _developer\inspector.rpym:65
old "Style"
new "样式"
# _developer\inspector.rpym:71
old "Location"
new "坐标"
# _developer\inspector.rpym:122
old "Inspecting Styles of [displayable_name!q]"
new "正在查验 [displayable_name!q] 的样式"
# _developer\inspector.rpym:139
old "displayable:"
new "displayable:"
# _developer\inspector.rpym:145
old " (no properties affect the displayable)"
new " (可视组件尚无属性关联)"
# _developer\inspector.rpym:147
old " (default properties omitted)"
new " (已省略默认属性)"
# _developer\inspector.rpym:185
old "<repr() failed>"
new "<repr() failed>"
# _layout\classic_load_save.rpym:170
old "a"
new "a"
# _layout\classic_load_save.rpym:179
old "q"
new "q"
# 00iap.rpy:217
old "Contacting App Store\nPlease Wait..."
new "正在联系 App Store\n请稍后……"
# 00updater.rpy:367
# 00updater.rpy:375
old "The Ren'Py Updater is not supported on mobile devices."
new "Ren'Py 更新器尚不支持移动设备。"
new "Py 更新器尚不支持移动设备。"
# 00updater.rpy:486
# 00updater.rpy:494
old "An error is being simulated."
new "已模拟一个错误。"
# 00updater.rpy:662
# 00updater.rpy:678
old "Either this project does not support updating, or the update status file was deleted."
new "此工程不支持更新,或者是更新状态文件已被删除。"
# 00updater.rpy:676
# 00updater.rpy:692
old "This account does not have permission to perform an update."
new "此帐号没有执行更新的权限。"
# 00updater.rpy:679
# 00updater.rpy:695
old "This account does not have permission to write the update log."
new "此帐号没有写入更新日志的权限。"
# 00updater.rpy:704
# 00updater.rpy:722
old "Could not verify update signature."
new "无法验证更新签名。"
# 00updater.rpy:975
# 00updater.rpy:997
old "The update file was not downloaded."
new "更新文件未能下载。"
# 00updater.rpy:993
# 00updater.rpy:1015
old "The update file does not have the correct digest - it may have been corrupted."
new "更新文件校验失败。文件可能已损坏。"
# 00updater.rpy:1049
# 00updater.rpy:1071
old "While unpacking {}, unknown type {}."
new "解压 {} 时出现未知错误 {}。"
# 00updater.rpy:1393
# 00updater.rpy:1439
old "Updater"
new "更新器"
# 00updater.rpy:1404
# 00updater.rpy:1450
old "This program is up to date."
new "此程序已是最新版本。"
# 00updater.rpy:1406
# 00updater.rpy:1452
old "[u.version] is available. Do you want to install it?"
new "[u.version] 现已可用。您希望现在安装吗?"
# 00updater.rpy:1408
# 00updater.rpy:1454
old "Preparing to download the updates."
new "正在准备下载更新。"
# 00updater.rpy:1410
# 00updater.rpy:1456
old "Downloading the updates."
new "正在下载更新。"
# 00updater.rpy:1412
# 00updater.rpy:1458
old "Unpacking the updates."
new "正在解压更新。"
# 00updater.rpy:1416
# 00updater.rpy:1462
old "The updates have been installed. The program will restart."
new "此更新已安装。程序将重新启动。"
# 00updater.rpy:1418
# 00updater.rpy:1464
old "The updates have been installed."
new "已完成更新。"
new "更新已安装。"
# 00updater.rpy:1420
# 00updater.rpy:1466
old "The updates were cancelled."
new "已取消更新。"
new "更新已取消。"
# 00gallery.rpy:563
# 00gallery.rpy:585
old "Image [index] of [count] locked."
new "图片 [count] / [index] 尚未解锁。"
# 00gallery.rpy:583
# 00gallery.rpy:605
old "prev"
new "上一页"
# 00gallery.rpy:584
# 00gallery.rpy:606
old "next"
new "下一页"
# 00gallery.rpy:585
# 00gallery.rpy:607
old "slideshow"
new "幻灯片"
# 00gallery.rpy:586
# 00gallery.rpy:608
old "return"
new "返回"
# 00director.rpy:689
old "The interactive director is not enabled here."
new "互动导演模式未启动。"
# 00director.rpy:1461
old "Done"
new "完成"
# 00director.rpy:1469
old "(statement)"
new "(声明)"
# 00director.rpy:1470
old "(tag)"
new "(标签)"
# 00director.rpy:1471
old "(attributes)"
new "(属性)"
# 00director.rpy:1472
old "(transform)"
new "(变换)"
# 00director.rpy:1497
old "(transition)"
new "(转场)"
# 00director.rpy:1509
old "(channel)"
new "(轨道)"
# 00director.rpy:1510
old "(filename)"
new "(文件名)"
# 00director.rpy:1535
old "Change"
new "更改"
# 00director.rpy:1537
old "Add"
new "添加"
# 00director.rpy:1543
old "Remove"
new "移除"
# 00director.rpy:1576
old "Statement:"
new "声明:"
# 00director.rpy:1597
old "Tag:"
new "标签:"
# 00director.rpy:1613
old "Attributes:"
new "属性:"
# 00director.rpy:1631
old "Transforms:"
new "变换:"
# 00director.rpy:1650
old "Behind:"
new "置后于:"
# 00director.rpy:1669
old "Transition:"
new "转场:"
# 00director.rpy:1687
old "Channel:"
new "轨道:"
# 00director.rpy:1705
old "Audio Filename:"
new "音频文件:"
# 00keymap.rpy:254
old "Failed to save screenshot as %s."
new "未能保存截图为 %s。"
# _developer\developer.rpym:43
old "Interactive Director (D)"
new "互动导演(D"
# _developer\developer.rpym:67
old "Show Texture Size"
new "显示贴图大小"
# _developer\developer.rpym:70
old "Hide Texture size"
new "隐藏贴图大小"
# _developer\developer.rpym:569
old "{size_mb:,.1f} MB in {count} textures."
new "{size_mb:,.1f} MB{count} 贴图。"
+20 -133
View File
@@ -1,179 +1,66 @@

translate simplified_chinese strings:
# _developer/developer.rpym:38
old "Developer Menu"
new "开发者菜单"
# _developer/developer.rpym:43
old "Reload Game (Shift+R)"
new "重新加载游戏(Shift+R"
# _developer/developer.rpym:45
old "Console (Shift+O)"
new "控制台(Shift+O"
# _developer/developer.rpym:47
old "Variable Viewer"
new "变量查看器"
# _developer/developer.rpym:49
old "Theme Test"
new "主题测试"
# _developer/developer.rpym:51
old "Image Location Picker"
new "图片坐标提取器"
# _developer/developer.rpym:53
old "Filename List"
new "文件列表"
# _developer/developer.rpym:57
old "Show Image Load Log"
new "显示图片加载记录"
# _developer/developer.rpym:60
old "Hide Image Load Log"
new "隐藏图片加载记录"
# _developer/developer.rpym:95
old "Nothing to inspect."
new "无对象可查验。"
# _developer/developer.rpym:217
old "Return to the developer menu"
new "回到开发者菜单"
# _developer/developer.rpym:373
old "Rectangle: %r"
new "矩形区域:%r"
# _developer/developer.rpym:378
old "Mouse position: %r"
new "鼠标坐标:%r"
# _developer/developer.rpym:383
old "Right-click or escape to quit."
new "右键单击或者按 Esc 键来退出。"
# _developer/developer.rpym:412
old "Rectangle copied to clipboard."
new "矩形区域参数已复制到剪贴板。"
# _developer/developer.rpym:415
old "Position copied to clipboard."
new "坐标已复制到剪贴板。"
# _developer/developer.rpym:524
old "✔ "
new "✔ "
# _developer/developer.rpym:527
old "✘ "
new "✘ "
# _developer/developer.rpym:532
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}"
# _developer/inspector.rpym:38
old "Displayable Inspector"
new "可显示对象查验器"
# _developer/inspector.rpym:61
old "Size"
new "尺寸"
# _developer/inspector.rpym:65
old "Style"
new "样式"
# _developer/inspector.rpym:71
old "Location"
new "坐标"
# _developer/inspector.rpym:122
old "Inspecting Styles of [displayable_name!q]"
new "查验 [displayable_name!q] 的样式"
# _developer/inspector.rpym:139
old "displayable:"
new "可显示对象:"
# _developer/inspector.rpym:145
old " (no properties affect the displayable)"
new " (可显示对象尚无属性关联)"
# _developer/inspector.rpym:147
old " (default properties omitted)"
new " (已省略默认属性)"
# _developer/inspector.rpym:185
old "<repr() failed>"
new "<repr() 失败>"
# 00console.rpy:182
# 00console.rpy:255
old "Press <esc> to exit console. Type help for help.\n"
new "按 Esc 来退出控制台。输入 help 来查看帮助。\n"
# 00console.rpy:186
# 00console.rpy:259
old "Ren'Py script enabled."
new "Ren'Py 脚本已开启。"
# 00console.rpy:188
# 00console.rpy:261
old "Ren'Py script disabled."
new "Ren'Py 脚本已关闭。"
# 00console.rpy:398
# 00console.rpy:496
old "help: show this help"
new "help:显示此帮助信息"
# 00console.rpy:403
# 00console.rpy:501
old "commands:\n"
new "命令:\n"
# 00console.rpy:413
# 00console.rpy:511
old " <renpy script statement>: run the statement\n"
new " <renpy 脚本语句>:运行此语句\n"
# 00console.rpy:415
# 00console.rpy:513
old " <python expression or statement>: run the expression or statement"
new " <python 表达式或语句>:运行此表达式或语句"
# 00console.rpy:423
# 00console.rpy:521
old "clear: clear the console history"
new "clear:清除控制台历史记录"
# 00console.rpy:427
# 00console.rpy:525
old "exit: exit the console"
new "exit:退出控制台"
# 00console.rpy:435
# 00console.rpy:533
old "load <slot>: loads the game from slot"
new "load <slot>:载入编号为 slot 的存档"
new "load <档位>:读取该档位的存档"
# 00console.rpy:448
# 00console.rpy:546
old "save <slot>: saves the game in slot"
new "save <slot>:存储为编号为 slot 的存档"
new "save <档位>:存储存档到该档位"
# 00console.rpy:459
# 00console.rpy:557
old "reload: reloads the game, refreshing the scripts"
new "reload:重新加载游戏,并重新整理脚本"
# 00console.rpy:467
# 00console.rpy:565
old "watch <expression>: watch a python expression"
new "watch <expression>:监视该 python 表达式"
new "watch <表达式>:监视该 python 表达式"
# 00console.rpy:493
# 00console.rpy:591
old "unwatch <expression>: stop watching an expression"
new "unwatch <expression>:停止监视该表达式"
new "unwatch <表达式>:停止监视该表达式"
# 00console.rpy:519
# 00console.rpy:622
old "unwatchall: stop watching all expressions"
new "unwatchall:停止监视所有表达式"
# 00console.rpy:536
# 00console.rpy:639
old "jump <label>: jumps to label"
new "jump <标签>:跳转到此标签"
+113 -101
View File
@@ -1,91 +1,119 @@

translate simplified_chinese strings:
# 00gltest.rpy:64
old "Graphics Acceleration"
new "图形加速"
# 00gltest.rpy:70
old "Renderer"
new "渲染器"
# 00gltest.rpy:74
old "Automatically Choose"
new "自动选择"
# 00gltest.rpy:75
# 00gltest.rpy:79
old "Force Angle/DirectX Renderer"
new "强制 Angle/DirectX 渲染"
# 00gltest.rpy:79
# 00gltest.rpy:83
old "Force OpenGL Renderer"
new "强制 OpenGL 渲染"
# 00gltest.rpy:83
# 00gltest.rpy:87
old "Force Software Renderer"
new "强制软件渲染"
# 00gltest.rpy:93
old "NPOT"
new "NPOT"
# 00gltest.rpy:97
old "Enable"
new "启用"
# 00gltest.rpy:109
# 00gltest.rpy:131
old "Powersave"
new "省电模式"
# 00gltest.rpy:145
old "Framerate"
new "帧率"
# 00gltest.rpy:149
old "Screen"
new "根据屏幕"
# 00gltest.rpy:153
old "60"
new "60"
# 00gltest.rpy:157
old "30"
new "30"
# 00gltest.rpy:163
old "Tearing"
new "画面割裂"
# 00gltest.rpy:179
old "Changes will take effect the next time this program is run."
new "更改将会在下次启动程序时生效。"
# 00gltest.rpy:141
# 00gltest.rpy:213
old "Performance Warning"
new "性能影响警告"
# 00gltest.rpy:146
# 00gltest.rpy:218
old "This computer is using software rendering."
new "此计算机正在使用软件渲染。"
# 00gltest.rpy:148
# 00gltest.rpy:220
old "This computer is not using shaders."
new "此计算机没有使用着色器。"
# 00gltest.rpy:150
# 00gltest.rpy:222
old "This computer is displaying graphics slowly."
new "此计算机图形显示缓慢。"
# 00gltest.rpy:152
# 00gltest.rpy:224
old "This computer has a problem displaying graphics: [problem]."
new "此计算机显示图形时出错:[problem]"
new "此计算机显示图形时出错:[problem]"
# 00gltest.rpy:157
# 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 可能会解决该问题。"
# 00gltest.rpy:159
# 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 "目前图形驱动程序版本可能过旧或未正确运行。这会导致图形显示缓慢或者错误。"
# 00gltest.rpy:164
# 00gltest.rpy:236
old "Update DirectX"
new "更新 DirectX"
# 00gltest.rpy:170
# 00gltest.rpy:242
old "Continue, Show this warning again"
new "继续,下次继续显示该警告"
# 00gltest.rpy:174
# 00gltest.rpy:246
old "Continue, Don't show warning again"
new "继续,不再显示该警告"
# 00gltest.rpy:192
# 00gltest.rpy:264
old "Updating DirectX."
new "正在更新 DirectX。"
# 00gltest.rpy:196
# 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。"
# 00gltest.rpy:200
# 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 浏览器工具栏。如果您不需要安装这个工具栏,请取消勾选对应选项。"
# 00gltest.rpy:204
# 00gltest.rpy:276
old "When setup finishes, please click below to restart this program."
new "当安装完成后请点击下方来重新启动程序。"
# 00gltest.rpy:206
# 00gltest.rpy:278
old "Restart"
new "重新启动"
@@ -113,90 +141,74 @@ translate simplified_chinese strings:
old "Back (B)"
new "返回(B"
# _errorhandling.rpym:495
old "Open Traceback"
new "打开追溯报告"
# _errorhandling.rpym:497
old "Opens the traceback.txt file in a text editor."
new "在文本编辑器中打开追溯报告(traceback.txt)。"
# _errorhandling.rpym:499
old "Copy to Clipboard"
new "复制到剪贴板"
# _errorhandling.rpym:501
old "Copies the traceback.txt file to the clipboard."
new "复制追溯报告(traceback.txt)的内容到剪贴板。"
# _errorhandling.rpym:519
old "An exception has occurred."
new "发生异常。"
# _errorhandling.rpym:538
old "Rollback"
new "回滚"
# _errorhandling.rpym:540
old "Attempts a roll back to a prior time, allowing you to save or choose a different choice."
new "尝试回滚到先前的状态,使您可以存档或者选择不同选项。"
# _errorhandling.rpym:543
old "Ignore"
new "忽略"
# _errorhandling.rpym:545
old "Ignores the exception, allowing you to continue."
new "忽略异常,让您可以继续。"
# _errorhandling.rpym:587
old "Ignores the exception, allowing you to continue. This often leads to additional errors."
new "忽略异常,让您可以继续。但这通常会引起更多错误。"
# _errorhandling.rpym:548
old "Reload"
new "重新加载"
# _errorhandling.rpym:550
old "Reloads the game from disk, saving and restoring game state if possible."
new "从硬盘重新加载游戏,尝试保存和恢复游戏状态。"
# _errorhandling.rpym:560
old "Quits the game."
new "离开游戏。"
# _errorhandling.rpym:582
old "Parsing the script failed."
new "解析脚本失败。"
# _errorhandling.rpym:606
old "Open Parse Errors"
new "开启解析错误"
# _errorhandling.rpym:608
old "Opens the errors.txt file in a text editor."
new "在文本编辑器中打开解析错误文件(errors.txt)。"
# _errorhandling.rpym:612
old "Copies the errors.txt file to the clipboard."
new "复制解析错误文件(errors.txt)到剪贴板。"
# 00gltest.rpy:89
old "NPOT"
new "NPOT"
# _errorhandling.rpym:523
# _errorhandling.rpym:529
old "Open"
new "打开"
# _errorhandling.rpym:527
# _errorhandling.rpym:531
old "Opens the traceback.txt file in a text editor."
new "在文本编辑器中打开追溯报告(traceback.txt)。"
# _errorhandling.rpym:533
old "Copy"
new "复制"
# _errorhandling.rpym:596
# _errorhandling.rpym:535
old "Copies the traceback.txt file to the clipboard."
new "复制追溯报告(traceback.txt)的内容到剪贴板。"
# _errorhandling.rpym:562
old "An exception has occurred."
new "发生异常。"
# _errorhandling.rpym:582
old "Rollback"
new "回滚"
# _errorhandling.rpym:584
old "Attempts a roll back to a prior time, allowing you to save or choose a different choice."
new "尝试回滚到先前的状态,使您可以存档或者选择不同选项。"
# _errorhandling.rpym:587
old "Ignore"
new "忽略"
# _errorhandling.rpym:591
old "Ignores the exception, allowing you to continue."
new "忽略异常,让您可以继续。"
# _errorhandling.rpym:593
old "Ignores the exception, allowing you to continue. This often leads to additional errors."
new "忽略异常,让您可以继续。但这通常会引起更多错误。"
# _errorhandling.rpym:597
old "Reload"
new "重新加载"
# _errorhandling.rpym:599
old "Reloads the game from disk, saving and restoring game state if possible."
new "从硬盘重新加载游戏,尝试保存和恢复游戏状态。"
# _errorhandling.rpym:602
old "Console"
new "控制台"
# _errorhandling.rpym:598
# _errorhandling.rpym:604
old "Opens a console to allow debugging the problem."
new "打开控制台,允许您调试程序。"
new "打开控制台,允许您对问题进行调试。"
# _errorhandling.rpym:614
old "Quits the game."
new "退出游戏。"
# _errorhandling.rpym:638
old "Parsing the script failed."
new "解析脚本失败。"
# _errorhandling.rpym:664
old "Opens the errors.txt file in a text editor."
new "在文本编辑器中打开解析错误文件(errors.txt)。"
# _errorhandling.rpym:668
old "Copies the errors.txt file to the clipboard."
new "复制解析错误文件(errors.txt)到剪贴板。"
+177 -154
View File
@@ -3,409 +3,432 @@ translate simplified_chinese strings:
# gui.rpy:2
old "## Initialization"
new "## Initialization"
new "## 初始化"
# gui.rpy:5
old "## The init offset statement causes the init code in this file to run before init code in any other file."
new "## The init offset statement causes the init code in this file to run before init code in any other file."
old "## The init offset statement causes the initialization statements in this file to run before init statements in any other file."
new "## init offset”语句可使此文件中的初始化语句在任何其他文件中的“init”语句之前运行。"
# gui.rpy:9
old "## Calling gui.init resets the styles to sensible default values, and sets the width and height of the game."
new "## Calling gui.init resets the styles to sensible default values, and sets the width and height of the game."
new "## 调用gui.init会将样式重置为合理的默认值,并设置游戏的宽度和高度(分辨率)。"
# gui.rpy:17
old "## GUI Configuration Variables"
new "## GUI配置变量"
# gui.rpy:21
old "## Colors"
new "## Colors"
new "## 颜色"
# gui.rpy:23
old "## The colors of text in the interface."
new "## The colors of text in the interface."
new "## 界面中文本的颜色。"
# gui.rpy:25
old "## An accent color used throughout the interface to label and highlight text."
new "## An accent color used throughout the interface to label and highlight text."
new "## 整个界面中使用的强调色,用于标记和突出显示文本。"
# gui.rpy:29
old "## The color used for a text button when it is neither selected nor hovered."
new "## The color used for a text button when it is neither selected nor hovered."
new "## 当既未选中也未悬停时用于文本按钮的颜色。"
# gui.rpy:32
old "## The small color is used for small text, which needs to be brighter/darker to achieve the same effect."
new "## The small color is used for small text, which needs to be brighter/darker to achieve the same effect."
new "## 小颜色用于小文本,需要更亮/更暗才能达到相同的效果。"
# gui.rpy:36
old "## The color that is used for buttons and bars that are hovered."
new "## The color that is used for buttons and bars that are hovered."
new "## 用于悬停的按钮和滑条的颜色。"
# gui.rpy:39
old "## The color used for a text button when it is selected but not focused. A button is selected if it is the current screen or preference value."
new "## The color used for a text button when it is selected but not focused. A button is selected if it is the current screen or preference value."
new "## 用于选中但非焦点的文本按钮的颜色。当一个按钮为当前屏幕或设置选项值时,会处于选中状态。"
# gui.rpy:43
old "## The color used for a text button when it cannot be selected."
new "## The color used for a text button when it cannot be selected."
new "## 用于无法选择的文本按钮的颜色。"
# gui.rpy:46
old "## Colors used for the portions of bars that are not filled in. These are not used directly, but are used when re-generating bar image files."
new "## Colors used for the portions of bars that are not filled in. These are not used directly, but are used when re-generating bar image files."
new "## 用于未填充的滑条部分的颜色。这些颜色不直接使用,但在重新生成条形图像文件时使用。"
# gui.rpy:51
old "## The colors used for dialogue and menu choice text."
new "## The colors used for dialogue and menu choice text."
new "## 用于对话和菜单选择文本的颜色。"
# gui.rpy:56
old "## Fonts and Font Sizes"
new "## Fonts and Font Sizes"
new "## 字体和字体大小"
# gui.rpy:58
old "## The font used for in-game text."
new "## The font used for in-game text."
new "## 用于游戏内文本的字体。"
# gui.rpy:61
old "## The font used for character names."
new "## The font used for character names."
new "## 用于角色名称的字体。"
# gui.rpy:64
old "## The font used for out-of-game text."
new "## The font used for out-of-game text."
new "## 用于游戏外文本的字体。"
# gui.rpy:67
old "## The size of normal dialogue text."
new "## The size of normal dialogue text."
new "## 普通对话文本的大小。"
# gui.rpy:70
old "## The size of character names."
new "## The size of character names."
new "## 角色名称的大小。"
# gui.rpy:73
old "## The size of text in the game's user interface."
new "## The size of text in the game's user interface."
new "## 游戏用户界面中文本的大小。"
# gui.rpy:76
old "## The size of labels in the game's user interface."
new "## The size of labels in the game's user interface."
new "## 游戏用户界面中标签的大小。"
# gui.rpy:79
old "## The size of text on the notify screen."
new "## The size of text on the notify screen."
new "## 通知屏幕上文本的大小。"
# gui.rpy:82
old "## The size of the game's title."
new "## The size of the game's title."
new "## 游戏标题的大小。"
# gui.rpy:86
old "## Main and Game Menus"
new "## Main and Game Menus"
new "## 标题和游戏菜单"
# gui.rpy:88
old "## The images used for the main and game menus."
new "## The images used for the main and game menus."
new "## 用于标题菜单和游戏菜单的图像。"
# gui.rpy:92
old "## Should we show the name and version of the game?"
new "## Should we show the name and version of the game?"
# gui.rpy:96
# gui.rpy:93
old "## Dialogue"
new "## Dialogue"
new "## 对话"
# gui.rpy:95
old "## These variables control how dialogue is displayed on the screen one line at a time."
new "## 这些变量控制对话框一次一行显示在屏幕上的方式。"
# gui.rpy:98
old "## These variables control how dialogue is displayed on the screen one line at a time."
new "## These variables control how dialogue is displayed on the screen one line at a time."
old "## The height of the textbox containing dialogue."
new "## 包含对话的文本框的高度。"
# gui.rpy:101
old "## The height of the textbox containing dialogue."
new "## The height of the textbox containing dialogue."
# gui.rpy:104
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 "## 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 "## 文本框在屏幕上的垂直位置。0.0 是顶部,0.5 是正中,1.0 是底部。"
# gui.rpy:109
# gui.rpy:106
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 "## 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 "## 叙述角色名称相对文本框的位置。可以是从左侧或顶部起的整数像素,或设为“0.5”来放置到正中。"
# gui.rpy:114
# gui.rpy:111
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 "## 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 "## 角色名称的水平对齐方式。0.0 为左侧对齐,0.5 为居中显示,而 1.0 为右侧对齐。"
# gui.rpy:118
# gui.rpy:115
old "## The width, height, and borders of the box containing the character's name, or None to automatically size it."
new "## The width, height, and borders of the box containing the character's name, or None to automatically size it."
new "## 包含角色名称的框的宽度,高度和边界尺寸,或设为“None”以自动调整其大小。"
# gui.rpy:123
# gui.rpy:120
old "## The borders of the box containing the character's name, in left, top, right, bottom order."
new "## The borders of the box containing the character's name, in left, top, right, bottom order."
new "## 包含角色名称的框的边界尺寸,以左、上、右、下顺序排列。"
# gui.rpy:127
# gui.rpy:124
old "## If True, the background of the namebox will be tiled, if False, the background of the namebox will be scaled."
new "## If True, the background of the namebox will be tiled, if False, the background of the namebox will be scaled."
new "## 若为True,则名称框的背景将被平铺;若为False,则将缩放名称框的背景。"
# gui.rpy:132
# gui.rpy:129
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 "## 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 "## 对话框相对于文本框的位置。可以是相对于文本框从左侧或顶部起的整数像素,或设为“0.5”来放置到正中。"
# gui.rpy:135
old "## The maximum width of dialogue text, in pixels."
new "## 对话文本的最大宽度(以像素为单位)。"
# gui.rpy:138
old "## The maximum width of dialogue text, in pixels."
new "## The maximum width of dialogue text, in pixels."
# gui.rpy:141
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 "## 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 "## 对话文本的水平对齐方式。0.0 为左侧对齐,0.5 为居中显示,而 1.0 为右侧对齐。"
# gui.rpy:146
# gui.rpy:143
old "## Buttons"
new "## Buttons"
new "## 按钮"
# gui.rpy:148
# gui.rpy:145
old "## These variables, along with the image files in gui/button, control aspects of how buttons are displayed."
new "## These variables, along with the image files in gui/button, control aspects of how buttons are displayed."
# gui.rpy:151
# gui.rpy:148
old "## The width and height of a button, in pixels. If None, Ren'Py computes a size."
new "## The width and height of a button, in pixels. If None, Ren'Py computes a size."
# gui.rpy:155
# gui.rpy:152
old "## The borders on each side of the button, in left, top, right, bottom order."
new "## The borders on each side of the button, in left, top, right, bottom order."
# gui.rpy:158
# gui.rpy:155
old "## If True, the background image will be tiled. If False, the background image will be linearly scaled."
new "## If True, the background image will be tiled. If False, the background image will be linearly scaled."
# gui.rpy:162
# gui.rpy:159
old "## The font used by the button."
new "## The font used by the button."
new "## 按钮使用的字体。"
# gui.rpy:162
old "## The size of the text used by the button."
new "## 按钮所使用的文本大小。"
# gui.rpy:165
old "## The size of the text used by the button."
new "## The size of the text used by the button."
old "## The color of button text in various states."
new "## The color of button text in various states."
# gui.rpy:179
# gui.rpy:171
old "## The horizontal alignment of the button text. (0.0 is left, 0.5 is center, 1.0 is right)."
new "## 按钮文本的水平对齐方式。(0.0 为左对齐,0.5 为居中显示,1.0 为右对齐)。"
# gui.rpy:176
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."
new "## 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."
# gui.rpy:183
# gui.rpy:180
old "## These customizations are used by the default interface:"
new "## These customizations are used by the default interface:"
# gui.rpy:198
# gui.rpy:195
old "## You can also add your own customizations, by adding properly-named variables. For example, you can uncomment the following line to set the width of a navigation button."
new "## You can also add your own customizations, by adding properly-named variables. For example, you can uncomment the following line to set the width of a navigation button."
# gui.rpy:205
# gui.rpy:202
old "## Choice Buttons"
new "## Choice Buttons"
new "## 选项按钮"
# gui.rpy:207
# gui.rpy:204
old "## Choice buttons are used in the in-game menus."
new "## Choice buttons are used in the in-game menus."
new "## 用于游戏内菜单的选项按钮。"
# gui.rpy:220
# gui.rpy:217
old "## File Slot Buttons"
new "## File Slot Buttons"
new "## 存档按钮"
# gui.rpy:222
# gui.rpy:219
old "## A file slot button is a special kind of button. It contains a thumbnail image, and text describing the contents of the save slot. A save slot uses image files in gui/button, like the other kinds of buttons."
new "## A file slot button is a special kind of button. It contains a thumbnail image, and text describing the contents of the save slot. A save slot uses image files in gui/button, like the other kinds of buttons."
# gui.rpy:226
# gui.rpy:223
old "## The save slot button."
new "## The save slot button."
new "## 存档位按钮。"
# gui.rpy:234
# gui.rpy:233
old "## The width and height of thumbnails used by the save slots."
new "## The width and height of thumbnails used by the save slots."
# gui.rpy:238
# gui.rpy:237
old "## The number of columns and rows in the grid of save slots."
new "## The number of columns and rows in the grid of save slots."
# gui.rpy:243
# gui.rpy:242
old "## Positioning and Spacing"
new "## Positioning and Spacing"
# gui.rpy:245
# gui.rpy:244
old "## These variables control the positioning and spacing of various user interface elements."
new "## These variables control the positioning and spacing of various user interface elements."
# gui.rpy:248
# gui.rpy:247
old "## The position of the left side of the navigation buttons, relative to the left side of the screen."
new "## The position of the left side of the navigation buttons, relative to the left side of the screen."
# gui.rpy:252
# gui.rpy:251
old "## The vertical position of the skip indicator."
new "## The vertical position of the skip indicator."
# gui.rpy:255
# gui.rpy:254
old "## The vertical position of the notify screen."
new "## The vertical position of the notify screen."
# gui.rpy:258
# gui.rpy:257
old "## The spacing between menu choices."
new "## The spacing between menu choices."
# gui.rpy:261
# gui.rpy:260
old "## Buttons in the navigation section of the main and game menus."
new "## Buttons in the navigation section of the main and game menus."
# gui.rpy:264
# gui.rpy:263
old "## Controls the amount of spacing between preferences."
new "## Controls the amount of spacing between preferences."
# gui.rpy:267
# gui.rpy:266
old "## Controls the amount of spacing between preference buttons."
new "## Controls the amount of spacing between preference buttons."
# gui.rpy:270
# gui.rpy:269
old "## The spacing between file page buttons."
new "## The spacing between file page buttons."
# gui.rpy:273
# gui.rpy:272
old "## The spacing between file slots."
new "## The spacing between file slots."
# gui.rpy:277
# gui.rpy:275
old "## The position of the main menu text."
new "## 标题菜单文本的位置。"
# gui.rpy:279
old "## Frames"
new "## Frames"
# gui.rpy:279
# gui.rpy:281
old "## These variables control the look of frames that can contain user interface components when an overlay or window is not present."
new "## These variables control the look of frames that can contain user interface components when an overlay or window is not present."
# gui.rpy:282
old "## Generic frames that are introduced by player code."
new "## Generic frames that are introduced by player code."
# gui.rpy:284
old "## Generic frames."
new "## Generic frames."
# gui.rpy:285
# gui.rpy:287
old "## The frame that is used as part of the confirm screen."
new "## The frame that is used as part of the confirm screen."
# gui.rpy:288
# gui.rpy:290
old "## The frame that is used as part of the skip screen."
new "## The frame that is used as part of the skip screen."
# gui.rpy:291
# gui.rpy:293
old "## The frame that is used as part of the notify screen."
new "## The frame that is used as part of the notify screen."
# gui.rpy:294
# gui.rpy:296
old "## Should frame backgrounds be tiled?"
new "## Should frame backgrounds be tiled?"
# gui.rpy:298
# gui.rpy:300
old "## Bars, Scrollbars, and Sliders"
new "## Bars, Scrollbars, and Sliders"
# gui.rpy:300
# gui.rpy:302
old "## These control the look and size of bars, scrollbars, and sliders."
new "## These control the look and size of bars, scrollbars, and sliders."
# gui.rpy:302
old "## The default GUI only uses sliders and vertical scrollbars. All of the other bars are only used in creator-written code."
new "## The default GUI only uses sliders and vertical scrollbars. All of the other bars are only used in creator-written code."
# gui.rpy:304
old "## The default GUI only uses sliders and vertical scrollbars. All of the other bars are only used in creator-written screens."
new "## The default GUI only uses sliders and vertical scrollbars. All of the other bars are only used in creator-written screens."
# gui.rpy:305
# gui.rpy:307
old "## The height of horizontal bars, scrollbars, and sliders. The width of vertical bars, scrollbars, and sliders."
new "## The height of horizontal bars, scrollbars, and sliders. The width of vertical bars, scrollbars, and sliders."
# gui.rpy:311
# gui.rpy:313
old "## True if bar images should be tiled. False if they should be linearly scaled."
new "## True if bar images should be tiled. False if they should be linearly scaled."
# gui.rpy:316
# gui.rpy:318
old "## Horizontal borders."
new "## Horizontal borders."
# gui.rpy:321
# gui.rpy:323
old "## Vertical borders."
new "## Vertical borders."
# gui.rpy:326
# gui.rpy:328
old "## What to do with unscrollable scrollbars in the gui. \"hide\" hides them, while None shows them."
new "## What to do with unscrollable scrollbars in the gui. \"hide\" hides them, while None shows them."
# gui.rpy:331
old "## History"
new "## History"
# gui.rpy:333
old "## The history screen displays dialogue that the player has already dismissed."
new "## The history screen displays dialogue that the player has already dismissed."
old "## History"
new "## 历史"
# gui.rpy:335
old "## The history screen displays dialogue that the player has already dismissed."
new "## 历史记录屏幕显示玩家已经阅读过的对话。"
# gui.rpy:337
old "## The number of blocks of dialogue history Ren'Py will keep."
new "## The number of blocks of dialogue history Ren'Py will keep."
new "## Ren'Py 将保留的对话历史块数。"
# gui.rpy:338
# gui.rpy:340
old "## The height of a history screen entry, or None to make the height variable at the cost of performance."
new "## The height of a history screen entry, or None to make the height variable at the cost of performance."
new "## 历史屏幕条目的高度,或设置为“None”以使高度变量自适应。"
# gui.rpy:342
# gui.rpy:344
old "## The position, width, and alignment of the label giving the name of the speaking character."
new "## The position, width, and alignment of the label giving the name of the speaking character."
new "## 所指定叙述角色的标签的坐标、宽度和对齐方式。"
# gui.rpy:349
# gui.rpy:351
old "## The position, width, and alignment of the dialogue text."
new "## The position, width, and alignment of the dialogue text."
# gui.rpy:356
old "## NVL-Mode"
new "## NVL-Mode"
new "## 对话文本的坐标、宽度和对齐方式。"
# gui.rpy:358
old "## The NVL-mode screen displays the dialogue spoken by NVL-mode characters."
new "## The NVL-mode screen displays the dialogue spoken by NVL-mode characters."
old "## NVL-Mode"
new "## NVL 模式"
# gui.rpy:360
old "## The NVL-mode screen displays the dialogue spoken by NVL-mode characters."
new "## NVL 模式屏幕显示 NVL 模式的角色所产生的对话。"
# gui.rpy:362
old "## The borders of the background of the NVL-mode background window."
new "## The borders of the background of the NVL-mode background window."
# gui.rpy:363
# gui.rpy:365
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."
new "## 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."
# gui.rpy:369
old "## The height of an NVL-mode entry. Set this to None to have the entries dynamically adjust height."
new "## The height of an NVL-mode entry. Set this to None to have the entries dynamically adjust height."
# gui.rpy:367
# gui.rpy:373
old "## The spacing between NVL-mode entries when gui.nvl_height is None, and between NVL-mode entries and an NVL-mode menu."
new "## The spacing between NVL-mode entries when gui.nvl_height is None, and between NVL-mode entries and an NVL-mode menu."
# gui.rpy:384
# gui.rpy:390
old "## The position, width, and alignment of nvl_thought text (the text said by the nvl_narrator character.)"
new "## The position, width, and alignment of nvl_thought text (the text said by the nvl_narrator character.)"
# gui.rpy:391
# gui.rpy:397
old "## The position of nvl menu_buttons."
new "## The position of nvl menu_buttons."
# gui.rpy:401
old "## Localization"
new "## 本地化"
# gui.rpy:403
old "## This controls where a line break is permitted. The default is suitable for most languages. A list of available values can be found at https://www.renpy.org/doc/html/style_properties.html#style-property-language"
new "## 该变量控制允许在何时换行。默认值适用于大多数语言。可用的值请参见 https://www.renpy.org/doc/html/style_properties.html#style-property-language"
# gui.rpy:411
old "## Mobile devices"
new "## 移动设备"
# gui.rpy:416
old "## This increases the size of the quick buttons to make them easier to touch on tablets and phones."
new "## This increases the size of the quick buttons to make them easier to touch on tablets and phones."
new "## 该变量增加快捷菜单按钮的尺寸来使它们在平板和手机上更容易按到。"
# gui.rpy:409
# gui.rpy:422
old "## This changes the size and spacing of various GUI elements to ensure they are easily visible on phones."
new "## This changes the size and spacing of various GUI elements to ensure they are easily visible on phones."
new "## 该变量更改各个 GUI 元素的尺寸和间距来确保它们在手机上更容易识别。"
# gui.rpy:413
# gui.rpy:426
old "## Font sizes."
new "## Font sizes."
new "## 字体大小。"
# gui.rpy:421
# gui.rpy:434
old "## Adjust the location of the textbox."
new "## Adjust the location of the textbox."
# gui.rpy:427
old "## Change the size and spacing of items in the game menu."
new "## Change the size and spacing of items in the game menu."
# gui.rpy:436
old "## File button layout."
new "## File button layout."
new "## 调整对话框的位置。"
# gui.rpy:440
old "## Change the size and spacing of various things."
new "## 更改各元素的尺寸和间距。"
# gui.rpy:453
old "## File button layout."
new "## 文件按钮布局。"
# gui.rpy:457
old "## NVL-mode."
new "## NVL-mode."
# gui.rpy:456
old "## Quick buttons."
new "## Quick buttons."
new "## NVL 模式。"
File diff suppressed because it is too large Load Diff
@@ -1,27 +1 @@

translate simplified_chinese strings:
# _layout/classic_joystick_preferences.rpym:94
old "Joystick Mapping"
new "手柄映射"
# _layout/classic_load_save.rpym:138
old "Empty Slot."
new "空存档位。"
# _layout/classic_load_save.rpym:170
old "a"
new "a"
# _layout/classic_load_save.rpym:179
old "q"
new "q"
# _compat/gamemenu.rpym:355
old "Previous"
new "上一页"
# _compat/gamemenu.rpym:362
old "Next"
new "下一页"
# This file intentionally left blank.
+135 -136
View File
@@ -33,170 +33,169 @@
new "## 游戏版本号。"
# options.rpy:31
old "## Text that is placed on the game's about screen. To insert a blank line between paragraphs, write \\n\\n."
new "## 放置在游戏“关于”屏幕的文本。要在段落中插入空行,请使用 \\n\\n。"
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."
new "## 放置在游戏“关于”屏幕的文本。将文本放在三个引号之间,并在段落之间留一个空行。"
# options.rpy:37
# 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 字符,并且不得包含空格、冒号和分号。"
# options.rpy:44
# options.rpy:45
old "## Sounds and music"
new "## 音效和音乐"
# options.rpy:46
# options.rpy:47
old "## These three variables control which mixers are shown to the player by default. Setting one of these to False will hide the appropriate mixer."
new "## 这三个变量控制默认显示给用户的混音器。任一设置为 False 将隐藏对应的混音器。"
# options.rpy:55
# options.rpy:56
old "## To allow the user to play a test sound on the sound or voice channel, uncomment a line below and use it to set a sample sound to play."
new "## 允许用户在音效或语音轨道上播放测试音频文件,将以下语句取消注释并设置样音就可以使用。"
# options.rpy:62
# options.rpy:63
old "## Uncomment the following line to set an audio file that will be played while the player is at the main menu. This file will continue playing into the game, until it is stopped or another file is played."
new "## 将以下语句取消注释就可以设置主界面播放的背景音乐文件。此文件将在整个游戏中持续播放,直至音乐停止或其他文件开始播放。"
# options.rpy:69
# options.rpy:70
old "## Transitions"
new "## 转场"
# options.rpy:71
# options.rpy:72
old "## These variables set transitions that are used when certain events occur. Each variable should be set to a transition, or None to indicate that no transition should be used."
new "## 这些变量用来控制某些事件发生时的转场。每一个变量都应设置成一个转场,或者是 None 来表示无转场。"
# options.rpy:75
# options.rpy:76
old "## Entering or exiting the game menu."
new "## 进入或退出游戏菜单。"
# options.rpy:81
old "## A transition that is used after a game has been loaded."
new "## 载入游戏后使用的转场。"
# options.rpy:86
old "## Used when entering the main menu after the game has ended."
new "## 在游戏结束之后进入主菜单时使用的转场。"
# options.rpy:91
old "## A variable to set the transition used when the game starts does not exist. Instead, use a with statement after showing the initial scene."
new "## 用于控制在游戏开始标签不存在时转场的变量。作为替代,在显示初始化场景后使用 with 声明。"
# options.rpy:96
old "## Window management"
new "## 窗口管理"
# options.rpy:98
old "## This controls when the dialogue window is displayed. If \"show\", it is always displayed. If \"hide\", it is only displayed when dialogue is present. If \"auto\", the window is hidden before scene statements and shown again once dialogue is displayed."
new "## 此命令控制对话框窗口何时显示。如果是“show”,对话框将永远显示。如果是“hide”,仅在存在对话时显示。如果是“auto”,对话框会在 scene 声明前隐藏,并在有新对话时重新显示。"
# options.rpy:103
old "## After the game has started, this can be changed with the \"window show\", \"window hide\", and \"window auto\" statements."
new "## 在游戏开始后,此变量可通过“window show”、“window hide”和“window auto”声明来改变。"
# options.rpy:109
old "## Transitions used to show and hide the dialogue window"
new "## 用于显示和隐藏对话框窗口的转场"
# options.rpy:115
old "## Preference defaults"
new "## 默认设置"
# options.rpy:117
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 "## 控制默认的文字显示速度。默认的 0 是瞬间,而其他数字则是每秒显示出的字符数。"
# options.rpy:123
old "## The default auto-forward delay. Larger numbers lead to longer waits, with 0 to 30 being the valid range."
new "## 默认的自动前进延迟。越大的数字会产生越长的等待,有效范围为 0 - 30。"
# options.rpy:129
old "## Save directory"
new "## 存档目录"
# options.rpy:131
old "## Controls the platform-specific place Ren'Py will place the save files for this game. The save files will be placed in:"
new "## 控制 Ren'Py 为此游戏放置存档的,基于平台的特定目录。存档文件将放置在:"
# options.rpy:134
old "## Windows: %APPDATA\\RenPy\\<config.save_directory>"
new "## Windows%APPDATA\\RenPy\\<config.save_directory>"
# options.rpy:136
old "## 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>"
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."
new "## 该命令一般不应变更,若要变更,应为有效字符串而不是表达式。"
# options.rpy:151
old "## Icon"
new "## 图标"
# options.rpy:148
old "## The icon displayed on the taskbar or dock."
new "## 在任务栏或 Dock 上显示的图标。"
# options.rpy:153
old "## Build configuration"
new "## 生成配置"
# options.rpy:155
old "## This section controls how Ren'Py turns your project into distribution files."
new "## 这部分控制 Ren'Py 如何将您的工程转变为发行版文件。"
# options.rpy:160
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 "## 以下功能为指定文件模式。文件模式大小写不敏感,且匹配基础目录相关的路径,包括或不包括 /。如果多个文件模式匹配,将执行第一个。"
# options.rpy:165
old "## In a pattern:"
new "## 在一个文件模式中:"
# options.rpy:167
old "## / is the directory separator."
new "## / 是目录分隔符。"
# options.rpy:169
old "## * matches all characters, except the directory separator."
new "## * 匹配所有字符,目录分隔符除外。"
# options.rpy:171
old "## ** matches all characters, including the directory separator."
new "## ** 匹配所有字符,包括目录分隔符。"
# 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."
new "## 例如,“*.txt”匹配基础目录中所有的 txt 文件,“game/**.ogg”匹配所有的游戏目录或子目录中的 ogg 文件,“**.psd”匹配工程中任何位置的 psd 文件。"
# options.rpy:177
old "## Classify files as None to exclude them from the built distributions."
new "## 将文件列为 None 来使其从已生成的分发版中排除。"
# options.rpy:185
old "## To archive files, classify them as 'archive'."
new "## 若要打包文件,需将其列为“archive”。"
# options.rpy:190
old "## Files matching documentation patterns are duplicated in a mac app build, so they appear in both the app and the zip file."
new "## 匹配为文档模式的文件,将在 Mac 应用的生成中复制,因此它们同时存在于 app 和 zip 文件中。"
# options.rpy:196
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”页面找到。"
# options.rpy:203
old "## The username and project name associated with an itch.io project, separated by a slash."
new "## 与 itch.io 工程关联的用户名和工程名,以斜杠分隔。"
# options.rpy:81
# options.rpy:82
old "## Between screens of the game menu."
new "## 各个游戏菜单之间的转场。"
# options.rpy:201
# options.rpy:87
old "## A transition that is used after a game has been loaded."
new "## 载入游戏后使用的转场。"
# options.rpy:92
old "## Used when entering the main menu after the game has ended."
new "## 在游戏结束之后进入主菜单时使用的转场。"
# options.rpy:97
old "## A variable to set the transition used when the game starts does not exist. Instead, use a with statement after showing the initial scene."
new "## 用于控制在游戏开始标签不存在时转场的变量。作为替代,在显示初始化场景后使用 with 声明。"
# options.rpy:102
old "## Window management"
new "## 窗口管理"
# options.rpy:104
old "## This controls when the dialogue window is displayed. If \"show\", it is always displayed. If \"hide\", it is only displayed when dialogue is present. If \"auto\", the window is hidden before scene statements and shown again once dialogue is displayed."
new "## 此命令控制对话框窗口何时显示。如果是“show”,对话框将永远显示。如果是“hide”,仅在存在对话时显示。如果是“auto”,对话框会在 scene 声明前隐藏,并在有新对话时重新显示。"
# options.rpy:109
old "## After the game has started, this can be changed with the \"window show\", \"window hide\", and \"window auto\" statements."
new "## 在游戏开始后,此变量可通过“window show”、“window hide”和“window auto”声明来改变。"
# options.rpy:115
old "## Transitions used to show and hide the dialogue window"
new "## 用于显示和隐藏对话框窗口的转场"
# options.rpy:121
old "## Preference defaults"
new "## 默认设置"
# 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 "## 控制默认的文字显示速度。默认的 0 是瞬间,而其他数字则是每秒显示出的字符数。"
# options.rpy:129
old "## The default auto-forward delay. Larger numbers lead to longer waits, with 0 to 30 being the valid range."
new "## 默认的自动前进延迟。越大的数字会产生越长的等待,有效范围为 0 - 30。"
# options.rpy:135
old "## Save directory"
new "## 存档目录"
# 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:"
new "## 控制 Ren'Py 为此游戏放置存档的,基于平台的特定目录。存档文件将放置在:"
# options.rpy:140
old "## Windows: %APPDATA\\RenPy\\<config.save_directory>"
new "## Windows%APPDATA\\RenPy\\<config.save_directory>"
# options.rpy:142
old "## Macintosh: $HOME/Library/RenPy/<config.save_directory>"
new "## Macintosh$HOME/Library/RenPy/<config.save_directory>"
# options.rpy:144
old "## Linux: $HOME/.renpy/<config.save_directory>"
new "## Linux$HOME/.renpy/<config.save_directory>"
# options.rpy:146
old "## This generally should not be changed, and if it is, should always be a literal string, not an expression."
new "## 该命令一般不应变更,若要变更,应为有效字符串而不是表达式。"
# options.rpy:152
old "## Icon"
new "## 图标"
# options.rpy:154
old "## The icon displayed on the taskbar or dock."
new "## 在任务栏或 Dock 上显示的图标。"
# options.rpy:159
old "## Build configuration"
new "## 生成配置"
# options.rpy:161
old "## This section controls how Ren'Py turns your project into distribution files."
new "## 这部分控制 Ren'Py 如何将您的工程转变为发行版文件。"
# 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 "## 以下功能为指定文件模式。文件模式大小写不敏感,且匹配基础目录相关的路径,包括或不包括 /。如果多个文件模式匹配,将执行第一个。"
# options.rpy:171
old "## In a pattern:"
new "## 在一个文件模式中:"
# options.rpy:173
old "## / is the directory separator."
new "## / 是目录分隔符。"
# options.rpy:175
old "## * matches all characters, except the directory separator."
new "## * 匹配所有字符,目录分隔符除外。"
# options.rpy:177
old "## ** matches all characters, including the directory separator."
new "## ** 匹配所有字符,包括目录分隔符。"
# 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 文件。"
# options.rpy:183
old "## Classify files as None to exclude them from the built distributions."
new "## 将文件列为 None 来使其从已生成的分发版中排除。"
# options.rpy:191
old "## To archive files, classify them as 'archive'."
new "## 若要打包文件,需将其列为“archive”。"
# options.rpy:196
old "## Files matching documentation patterns are duplicated in a mac app build, so they appear in both the app and the zip file."
new "## 匹配为文档模式的文件,将在 Mac 应用的生成中复制,因此它们同时存在于 app 和 zip 文件中。"
# options.rpy:202
old "## Set this to a string containing your Apple Developer ID Application to enable codesigning on the Mac. Be sure to change it to your own Apple-issued ID."
new "## 在 Mac 上将此设置为包含有您 Apple Developer ID Application 的字符串来启用代码签名。确保将其更改为您自己的,由苹果签发的 ID。"
# options.rpy:209
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”页面找到。"
# options.rpy:216
old "## The username and project name associated with an itch.io project, separated by a slash."
new "## 与 itch.io 工程关联的用户名和工程名,以斜杠分隔。"
File diff suppressed because it is too large Load Diff
@@ -1,5 +1,5 @@
init python:
translate_font("simplified_chinese", "DroidSansFallback.ttf")
translate_font("simplified_chinese", "SourceHanSans-Light-Lite.ttf")
translate simplified_chinese python:
gui.FONT_SCALE = .9
+89 -2
View File
@@ -179,7 +179,7 @@ translate spanish strings:
# 00action_file.rpy:733
old "Next file page."
new "Próxima página."
new "Página siguiente."
# 00action_file.rpy:797
old "Previous file page."
@@ -647,4 +647,91 @@ translate spanish strings:
# 00gallery.rpy:596
old "return"
new "volver"
new "volver"
translate spanish strings:
# 00accessibility.rpy:76
old "Font Override"
new "Invalidar Fuente"
# 00accessibility.rpy:80
old "Default"
new "por Defecto"
# 00accessibility.rpy:84
old "DejaVu Sans"
new "DejaVu Sans"
# 00accessibility.rpy:88
old "Opendyslexic"
new "Opendyslexic"
# 00accessibility.rpy:94
old "Text Size Scaling"
new "Tamaño de la Escala del Texto"
# 00accessibility.rpy:100
old "Reset"
new "Reiniciar"
# 00accessibility.rpy:105
old "Line Spacing Scaling"
new "Escalado del espaciado de línea"
# 00accessibility.rpy:117
old "Self-Voicing"
new "Voz-automática"
# 00accessibility.rpy:121
old "Off"
new "Apagado"
# 00accessibility.rpy:125
old "Text-to-speech"
new "Texto a voz"
# 00accessibility.rpy:129
old "Clipboard"
new "Potapapeles"
# 00accessibility.rpy:133
old "Debug"
new "Depurar"
# 00action_file.rpy:434
old "Load slot %s: [text]"
new "Cargar ranura %s: [text]"
# 00preferences.rpy:430
old "font transform"
new "transformación de fuente"
# 00preferences.rpy:433
old "font size"
new "tamaño de fuente"
# 00preferences.rpy:441
old "font line spacing"
new "fuente de espacio de líneas"
# _developer\developer.rpym:63
old "Image Attributes"
new "Atrubutos de Imagen"
# _developer\developer.rpym:90
old "[name] [attributes] (hidden)"
new "[name] [attributes] (hidden)"
# _developer\developer.rpym:94
old "[name] [attributes]"
new "[name] [attributes]"
# _developer\developer.rpym:154
old "Hide deleted"
new "Hide deleted"
# _developer\developer.rpym:154
old "Show deleted"
new "Show deleted"
+12 -1
View File
@@ -187,4 +187,15 @@ translate spanish strings:
# 00console.rpy:639
old "jump <label>: jumps to label"
new "jump <label>: salta a la etiqueta"
new "jump <label>: salta a la etiqueta"
translate spanish strings:
# 00console.rpy:680
old "short: Shorten the representation of objects on the console (default)."
new "corto: Acorta la representación de los objetos en la consola (predeterminado)."
# 00console.rpy:685
old "long: Print the full representation of objects on the console."
new "largo: imprime la representación completa de los objetos en la consola."
+28 -1
View File
@@ -211,4 +211,31 @@ translate spanish strings:
# _errorhandling.rpym:667
old "Copies the errors.txt file to the clipboard."
new "Copia el archivo errors.txt al portapapeles."
new "Copia el archivo errors.txt al portapapeles."
translate spanish strings:
# _errorhandling.rpym:542
old "Copy BBCode"
new "Copiar BBCode"
# _errorhandling.rpym:544
old "Copies the traceback.txt file to the clipboard as BBcode for forums like https://lemmasoft.renai.us/."
new "Copia el archivo traceback.txt en el portapapeles como BBcode para foros como https://lemmasoft.renai.us/."
# _errorhandling.rpym:546
old "Copy Markdown"
new "Copiar Markdown"
# _errorhandling.rpym:548
old "Copies the traceback.txt file to the clipboard as Markdown for Discord."
new "Copia el archivo traceback.txt al portapapeles como Markdown paara Discord."
# _errorhandling.rpym:683
old "Copies the errors.txt file to the clipboard as BBcode for forums like https://lemmasoft.renai.us/."
new "Copia el archivo errors.txt en el portapapeles como BBcode para foros como https://lemmasoft.renai.us/."
# _errorhandling.rpym:687
old "Copies the errors.txt file to the clipboard as Markdown for Discord."
new "Copia el archivo errors.txt al portapapeles como Markdown para Discord."
+1 -1
View File
@@ -914,7 +914,7 @@ translate spanish strings:
new "No se puede establecer el directorio de proyectos. Abandonando."
# new_project.rpy:71
old "You will be creating an [new_project_language] language project. Change the launcher language in preferences to create a project in another language."
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."
new "Vas a crear un proyecto en idioma [new_project_language]. Cambia el idioma del lanzador en preferencias para crear un proyecto en otro idioma."
# new_project.rpy:79
+1 -1
View File
@@ -279,7 +279,7 @@ translate spanish strings:
# screens.rpy:646
old "{#file_time}%A, %B %d %Y, %H:%M"
new "{#file_time}%A, %B %d %Y, %H:%M"
new "{#file_time}%A, %d %B %Y, %H:%M"
# screens.rpy:646
old "empty slot"
@@ -1,5 +1,5 @@
init python:
translate_font("traditional_chinese", "DroidSansFallback.ttf")
translate_font("traditional_chinese", "SourceHanSans-Light-Lite.ttf")
translate traditional_chinese python:
gui.FONT_SCALE = .9
+2 -2
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
@@ -116,7 +116,7 @@ screen translate:
value FieldInputValue(persistent, "translate_language")
size 24
color INPUT_COLOR
allow interface.TRANSLATE_LETTERS
# Left side.
frame:
style "l_indent"
+8 -4
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
@@ -117,7 +117,7 @@ screen update_channel(channels):
$ date = _strftime(__("%B %d, %Y"), time.localtime(c["timestamp"]))
text "[date] • [c[pretty_version]] [current]" style "l_small_text"
text "[date] • [c[pretty_version]] [current!t]" style "l_small_text"
add HALF_SPACER
@@ -191,8 +191,12 @@ label update:
import json
import ssl
context = ssl._create_unverified_context()
channels = json.load(urllib2.urlopen(CHANNELS_URL, context=context))["releases"]
with interface.error_handling("downloading the list of update channels"):
context = ssl._create_unverified_context()
channel_data = urllib2.urlopen(CHANNELS_URL, context=context)
with interface.error_handling("parsing the list of update channels"):
channels = json.load(channel_data)["releases"]
renpy.call_screen("update_channel", channels)
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
+217
View File
@@ -0,0 +1,217 @@
# Copyright 2004-2019 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 THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# This file contains the launcher support for creating RenPyWeb projects,
# other than the logic in the standard distribute code.
init python:
import shutil
import webserver
WEB_PATH = None
def find_web():
global WEB_PATH
candidates = [ ]
WEB_PATH = os.path.join(config.renpy_base, "web")
if os.path.isdir(WEB_PATH) and check_hash_txt("web"):
pass
else:
WEB_PATH = None
find_web()
def get_web_destination(p):
"""
Returns the path to the desint
"""
build = p.dump['build']
base_name = build['directory_name']
destination = build["destination"]
parent = os.path.dirname(p.path)
destination = os.path.join(parent, destination, base_name + "-web")
return destination
def build_web(p, gui=True):
# Figure out the reporter to use.
if gui:
reporter = distribute.GuiReporter()
else:
reporter = distribute.TextReporter()
# Determine details.
p.update_dump(True, gui=gui)
destination = get_web_destination(p)
display_name = p.dump['build']['display_name']
# Clean the folder, then remale it.
if os.path.exists(destination):
shutil.rmtree(destination)
os.makedirs(destination, 0o777)
# Use the distributor to make game.zip.
distribute.Distributor(p, packages=[ "web" ], packagedest=os.path.join(destination, "game"), reporter=reporter, noarchive=True, scan=False)
# Copy the files from WEB_PATH to destination.
for fn in os.listdir(WEB_PATH):
if fn in { "game.zip", "hash.txt", "index.html" }:
continue
shutil.copy(os.path.join(WEB_PATH, fn), os.path.join(destination, fn))
# Copy over index.html.
with open(os.path.join(WEB_PATH, "index.html")) as f:
html = f.read()
html = html.replace("%%TITLE%%", display_name.encode("utf-8"))
with open(os.path.join(destination, "index.html"), "w") as f:
f.write(html)
webserver.start(destination)
def launch_web():
renpy.run(OpenURL("http://127.0.0.1:8042/index.html"))
screen web():
frame:
style_group "l"
style "l_root"
window:
has vbox
label _("Web: [project.current.display_name!q]")
add HALF_SPACER
hbox:
# Left side.
frame:
style "l_indent"
xmaximum ONEHALF
xfill True
has vbox
add SEPARATOR2
add HALF_SPACER
frame:
style "l_indent"
has vbox
text _("Build:")
add HALF_SPACER
frame style "l_indent":
has vbox
textbutton _("Build Web Application") action Jump("web_build")
textbutton _("Build and Open in Browser") action Jump("web_launch")
textbutton _("Open without Build") action Jump("web_start")
add SPACER
text _("Support:")
add HALF_SPACER
frame style "l_indent":
has vbox
textbutton _("RenPyWeb Home") action OpenURL("https://renpy.beuc.net/")
textbutton _("Beuc's Patreon") action OpenURL("https://www.beuc.net/donate/")
# Right side.
frame:
style "l_indent"
xmaximum ONEHALF
xfill True
has vbox
add SEPARATOR2
add HALF_SPACER
frame:
style "l_indent"
has vbox
text _("Ren'Py web applications require the entire game to be downloaded to the player's computer before it can start.")
add SPACER
text _("Current limitations in the web platform mean that loading large images, audio files, or movies may cause audio or framerate glitches, and lower performance in general.")
textbutton _("Return") action Jump("front_page") style "l_left_button"
label web:
if WEB_PATH is None:
$ interface.yesno(_("Before packaging web apps, you'll need to download RenPyWeb, Ren'Py's web support. Would you like to download RenPyWeb now?"), no=Jump("front_page"))
$ add_dlc("web", restart=True)
call screen web
jump front_page
label web_build:
$ build_web(project.current, gui=True)
jump web
label web_launch:
$ build_web(project.current, gui=True)
$ launch_web()
jump web
label web_start:
$ project.current.update_dump(True, gui=True)
$ webserver.start(get_web_destination(project.current))
$ launch_web()
jump web
+253
View File
@@ -0,0 +1,253 @@
import BaseHTTPServer
import threading
import posixpath
import urllib
import os
import os
import posixpath
import BaseHTTPServer
import urllib
import urlparse
import cgi
import sys
import shutil
import mimetypes
try:
from cStringIO import StringIO
except ImportError:
from StringIO import StringIO
# The path to the root of the web server.
root = ""
import renpy
class WebHandler(BaseHTTPServer.BaseHTTPRequestHandler):
"""Simple HTTP request handler with GET and HEAD commands.
This serves files from the current directory and any of its
subdirectories. The MIME type for files is determined by
calling the .guess_type() method.
The GET and HEAD requests are identical except that the HEAD
request omits the actual contents of the file.
"""
server_version = "Ren'Py/" + renpy.version_only # @UndefinedVariable
def do_GET(self):
"""Serve a GET request."""
f = self.send_head()
if f:
try:
self.copyfile(f, self.wfile)
finally:
f.close()
def do_HEAD(self):
"""Serve a HEAD request."""
f = self.send_head()
if f:
f.close()
def send_head(self):
"""Common code for GET and HEAD commands.
This sends the response code and MIME headers.
Return value is either a file object (which has to be copied
to the outputfile by the caller unless the command was HEAD,
and must be closed by the caller under all circumstances), or
None, in which case the caller has nothing further to do.
"""
path = self.translate_path(self.path)
f = None
if os.path.isdir(path):
parts = urlparse.urlsplit(self.path)
if not parts.path.endswith('/'):
# redirect browser - doing basically what apache does
self.send_response(301)
new_parts = (parts[0], parts[1], parts[2] + '/',
parts[3], parts[4])
new_url = urlparse.urlunsplit(new_parts)
self.send_header("Location", new_url)
self.end_headers()
return None
for index in "index.html", "index.htm":
index = os.path.join(path, index)
if os.path.exists(index):
path = index
break
else:
return self.list_directory(path)
ctype = self.guess_type(path)
try:
# Always read in binary mode. Opening files in text mode may cause
# newline translations, making the actual size of the content
# transmitted *less* than the content-length!
f = open(path, 'rb')
except IOError:
self.send_error(404, "File not found")
return None
try:
self.send_response(200)
self.send_header("Content-type", ctype)
fs = os.fstat(f.fileno())
# Ren'Py - bust cache.
self.send_header("Pragma", "no-cache")
self.send_header("Content-Length", str(fs[6]))
self.send_header("Last-Modified", self.date_time_string(fs.st_mtime))
self.end_headers()
return f
except:
f.close()
raise
def list_directory(self, path):
"""Helper to produce a directory listing (absent index.html).
Return value is either a file object, or None (indicating an
error). In either case, the headers are sent, making the
interface the same as for send_head().
"""
try:
list = os.listdir(path)
except os.error:
self.send_error(404, "No permission to list directory")
return None
list.sort(key=lambda a: a.lower())
f = StringIO()
displaypath = cgi.escape(urllib.unquote(self.path))
f.write('<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">')
f.write("<html>\n<title>Directory listing for %s</title>\n" % displaypath)
f.write("<body>\n<h2>Directory listing for %s</h2>\n" % displaypath)
f.write("<hr>\n<ul>\n")
for name in list:
fullname = os.path.join(path, name)
displayname = linkname = name
# Append / for directories or @ for symbolic links
if os.path.isdir(fullname):
displayname = name + "/"
linkname = name + "/"
if os.path.islink(fullname):
displayname = name + "@"
# Note: a link to a directory displays with @ and links with /
f.write('<li><a href="%s">%s</a>\n'
% (urllib.quote(linkname), cgi.escape(displayname)))
f.write("</ul>\n<hr>\n</body>\n</html>\n")
length = f.tell()
f.seek(0)
self.send_response(200)
encoding = sys.getfilesystemencoding()
self.send_header("Content-type", "text/html; charset=%s" % encoding)
self.send_header("Content-Length", str(length))
self.end_headers()
return f
def translate_path(self, path):
"""Translate a /-separated PATH to the local filename syntax.
Components that mean special things to the local file system
(e.g. drive or directory names) are ignored. (XXX They should
probably be diagnosed.)
"""
# abandon query parameters
path = path.split('?', 1)[0]
path = path.split('#', 1)[0]
# Don't forget explicit trailing slash when normalizing. Issue17324
trailing_slash = path.rstrip().endswith('/')
path = posixpath.normpath(urllib.unquote(path))
words = path.split('/')
words = filter(None, words)
# Ren'Py - use the root we were given.
path = root
for word in words:
if os.path.dirname(word) or word in (os.curdir, os.pardir):
# Ignore components that are not a simple file/directory name
continue
path = os.path.join(path, word)
if trailing_slash:
path += '/'
return path
def copyfile(self, source, outputfile):
"""Copy all data between two file objects.
The SOURCE argument is a file object open for reading
(or anything with a read() method) and the DESTINATION
argument is a file object open for writing (or
anything with a write() method).
The only reason for overriding this would be to change
the block size or perhaps to replace newlines by CRLF
-- note however that this the default server uses this
to copy binary data as well.
"""
shutil.copyfileobj(source, outputfile)
def guess_type(self, path):
"""Guess the type of a file.
Argument is a PATH (a filename).
Return value is a string of the form type/subtype,
usable for a MIME Content-type header.
The default implementation looks the file's extension
up in the table self.extensions_map, using application/octet-stream
as a default; however it would be permissible (if
slow) to look inside the data to make a better guess.
"""
base, ext = posixpath.splitext(path)
if ext in self.extensions_map:
return self.extensions_map[ext]
ext = ext.lower()
if ext in self.extensions_map:
return self.extensions_map[ext]
else:
return self.extensions_map['']
extensions_map = {
'': 'application/octet-stream', # Default
'.gz': 'application/gzip',
'.htm': 'text/html',
'.html': 'text/html',
'.js': 'application/javascript',
}
def run():
server = BaseHTTPServer.HTTPServer(("127.0.0.1", 8042), WebHandler)
server.serve_forever()
def start(root_):
print("----")
global root
started = root
root = root_
if started:
return
t = threading.Thread(target=run)
t.daemon = True
t.start()
+4 -4
View File
@@ -34,7 +34,7 @@
#define png_voidp voidp
#endif
int IMG_SavePNG(const char *file, SDL_Surface *surf,int compression){
int renpy_IMG_SavePNG(const char *file, SDL_Surface *surf,int compression){
SDL_RWops *fp;
int ret;
@@ -44,7 +44,7 @@ int IMG_SavePNG(const char *file, SDL_Surface *surf,int compression){
return (-1);
}
ret=IMG_SavePNG_RW(fp,surf,compression);
ret=renpy_IMG_SavePNG_RW(fp,surf,compression);
SDL_RWclose(fp);
return ret;
}
@@ -54,12 +54,12 @@ static void png_write_data(png_structp png_ptr,png_bytep data, png_size_t length
SDL_RWwrite(rp,data,1,length);
}
int IMG_SavePNG_RW(SDL_RWops *src, SDL_Surface *surf,int compression){
int renpy_IMG_SavePNG_RW(SDL_RWops *src, SDL_Surface *surf,int compression){
png_structp png_ptr;
png_infop info_ptr;
SDL_PixelFormat *fmt=NULL;
SDL_Surface *tempsurf=NULL;
int ret,funky_format;
int ret;
unsigned int i;
png_colorp palette;
Uint8 *palette_alpha=NULL;
+2 -2
View File
@@ -36,14 +36,14 @@ extern "C" {
* Takes a filename, a surface to save, and a compression level. The
* compression level can be 0(min) through 9(max), or -1(default).
*/
DECLSPEC int SDLCALL IMG_SavePNG(const char *file,
DECLSPEC int SDLCALL renpy_IMG_SavePNG(const char *file,
SDL_Surface *surf,
int compression);
/**
* Takes a SDL_RWops pointer, a surface to save, and a compression level.
* compression can be 0(min) through 9(max), or -1(default).
*/
DECLSPEC int SDLCALL IMG_SavePNG_RW(SDL_RWops *src,
DECLSPEC int SDLCALL renpy_IMG_SavePNG_RW(SDL_RWops *src,
SDL_Surface *surf,
int compression);
#ifdef __cplusplus
+80 -35
View File
@@ -1,5 +1,5 @@
# -*- python -*-
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
@@ -60,7 +60,11 @@ cdef extern from "renpy.h":
int,
int)
void xblur32_core(object, object, int)
void blur32_core(object, object, object, float, float)
void blur24_core(object, object, object, float, float)
void linblur32_core(object, object, int, int)
void linblur24_core(object, object, int, int)
void alphamunge_core(object, object, int, int, int, char *)
@@ -198,6 +202,80 @@ def linmap(pysrc, pydst, r, g, b, a):
# pysrc.unlock()
def blur(pysrc, pywrk, pydst, xrad, yrad=None):
if not isinstance(pysrc, PygameSurface):
raise Exception("blur requires a pygame Surface as its first argument.")
if not isinstance(pywrk, PygameSurface):
raise Exception("blur requires a pygame Surface as its second argument.")
if not isinstance(pydst, PygameSurface):
raise Exception("blur requires a pygame Surface as its third argument.")
if pysrc.get_bitsize() not in (24, 32):
raise Exception("blur requires a 24 or 32 bit surface.")
if pywrk.get_bitsize() != pysrc.get_bitsize() \
or pydst.get_bitsize() != pysrc.get_bitsize():
raise Exception("blur requires all surfaces have the same bitsize.")
if pywrk.get_size() != pysrc.get_size() \
or pydst.get_size() != pysrc.get_size():
raise Exception("blur requires all surfaces have the same size.")
if yrad is None:
yrad = xrad
if xrad < 0 or yrad < 0:
raise Exception("blur requires a positive radius.")
# pysrc.lock()
# pywrk.lock()
# pydst.lock()
if pysrc.get_bitsize() == 32:
blur32_core(pysrc, pywrk, pydst, xrad, yrad)
else:
blur24_core(pysrc, pywrk, pydst, xrad, yrad)
# pydst.unlock()
# pywrk.unlock()
# pysrc.unlock()
def linblur(pysrc, pydst, radius, vertical=0):
if not isinstance(pysrc, PygameSurface):
raise Exception("linblur requires a pygame Surface as its first argument.")
if not isinstance(pydst, PygameSurface):
raise Exception("linblur requires a pygame Surface as its second argument.")
if pysrc.get_bitsize() not in (24, 32):
raise Exception("linblur requires a 24 or 32 bit surface.")
if pydst.get_bitsize() != pysrc.get_bitsize():
raise Exception("linblur requires both surfaces have the same bitsize.")
if pydst.get_size() != pysrc.get_size():
raise Exception("linblur requires both surfaces have the same size.")
if radius < 1:
raise Exception("linblur requires a non-zero radius.")
# pysrc.lock()
# pydst.lock()
if pysrc.get_bitsize() == 32:
linblur32_core(pysrc, pydst, radius, vertical)
else:
linblur24_core(pysrc, pydst, radius, vertical)
# pydst.unlock()
# pysrc.unlock()
def alpha_munge(pysrc, pydst, srcchan, dstchan, amap):
if not isinstance(pysrc, PygameSurface):
@@ -230,39 +308,6 @@ def alpha_munge(pysrc, pydst, srcchan, dstchan, amap):
# pysrc.unlock()
# def xblur(pysrc, pydst, radius):
# if not isinstance(pysrc, PygameSurface):
# raise Exception("blur requires a pygame Surface as its first argument.")
# if not isinstance(pydst, PygameSurface):
# raise Exception("blur requires a pygame Surface as its second argument.")
# if pysrc.get_bitsize() not in (24, 32):
# raise Exception("blur requires a 24 or 32 bit surface.")
# if pydst.get_bitsize() != pysrc.get_bitsize():
# raise Exception("blur requires both surfaces have the same bitsize.")
# if pydst.get_size() != pysrc.get_size():
# raise Exception("blur requires both surfaces have the same size.")
# pysrc.lock()
# pydst.lock()
# if pysrc.get_bitsize() == 32:
# xblur32_core(pysrc, pydst, radius)
# else:
# # blur24_core(pysrc, pydst, radius)
# assert False
# pydst.unlock()
# pysrc.unlock()
# def stretch(pysrc, pydst, rect):
# if not isinstance(pysrc, PygameSurface):
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
+250 -30
View File
@@ -31,7 +31,7 @@ void save_png_core(PyObject *pysurf, SDL_RWops *rw, int compress) {
surf = PySurface_AsSurface(pysurf);
/* Can't release GIL, since we're not using threaded RWops. */
IMG_SavePNG_RW(rw, surf, compress);
renpy_IMG_SavePNG_RW(rw, surf, compress);
}
/* This pixellates a 32-bit RGBA pygame surface to a destination
@@ -562,31 +562,115 @@ void linmap24_core(PyObject *pysrc,
Py_END_ALLOW_THREADS
}
/*
* Helper function to describe averaging filters (AFs) needed to
* approximate a specific Gaussian. Takes a desired standard deviation
* and number of passes and produces lower and upper AF widths and the
* number of passes to perform with the lower AF width.
* ref: Peter Kovesi, "Fast Almost-Gaussian Filtering", 2010
* section II; equations 3 and 5
* https://www.peterkovesi.com/papers/FastGaussianSmoothing.pdf
*/
void blur_filters(float sigma, int n, int *wl, int *wu, int *m) {
*wl = (int) floor(sqrt(12 * sigma * sigma / n + 1));
if (*wl % 2 == 0) (*wl)--;
*wu = *wl + 2;
*m = (int) round(
(12 * sigma * sigma - n * *wl * *wl - 4 * n * *wl - 3 * n)
/ (-4 * *wl - 4)
);
}
#if 0
/*
* This expects pysrc, pywrk and pydst to be surfaces of the same size.
* It approximates a Gaussian blur using several box blurs. Box sizes
* are AF widths as described by blur_filters. Box blurs are performed
* using two passes of a one-dimensional blur, on the x and y axes
* respectively. The pywrk surface is used to hold intermediate results
* only and should not be treated as valid output.
* ref: Ivan Kutskir, "Fastest Gaussian Blur (in linear time)", 2013
* http://blog.ivank.net/fastest-gaussian-blur.html
*/
void blur32_core(PyObject *pysrc,
PyObject *pywrk,
PyObject *pydst,
float xrad,
float yrad) {
void xblur32_core(PyObject *pysrc,
PyObject *pydst,
int radius) {
int n = 3; // number of passes, no more than six
int i, x, y;
int xl, xu, xm;
int yl, yu, ym;
blur_filters(xrad, n, &xl, &xu, &xm);
if (xrad != yrad) {
blur_filters(yrad, n, &yl, &yu, &ym);
} else {
yl = xl; yu = xu; ym = xm;
}
for (int i = 0; i < n; i++) {
int xr = i < xm ? xl : xu;
linblur32_core(pysrc, pywrk, xr, 0);
int yr = i < ym ? yl : yu;
linblur32_core(pywrk, pydst, yr, 1);
pysrc = pydst;
}
}
void blur24_core(PyObject *pysrc,
PyObject *pywrk,
PyObject *pydst,
float xrad,
float yrad) {
int n = 3; // number of passes, no more than six
int xl, xu, xm;
int yl, yu, ym;
blur_filters(xrad, n, &xl, &xu, &xm);
if (xrad != yrad) {
blur_filters(yrad, n, &yl, &yu, &ym);
} else {
yl = xl; yu = xu; ym = xm;
}
for (int i = 0; i < n; i++) {
int xr = i < xm ? xl : xu;
linblur24_core(pysrc, pywrk, xr, 0);
int yr = i < ym ? yl : yu;
linblur24_core(pywrk, pydst, yr, 1);
pysrc = pydst;
}
}
/*
* This expects pysrc and pydst to be surfaces of the same size. It
* implements a linear time one-dimensional blur using accumulators,
* with a sample size of twice the radius plus one. It can operate in
* both the x and y axes.
*/
void linblur32_core(PyObject *pysrc,
PyObject *pydst,
int radius,
int vertical) {
int c, r;
SDL_Surface *src;
SDL_Surface *dst;
Uint32 srcpitch, dstpitch;
Uint32 srcw, srch;
Uint32 dstw, dsth;
Uint32 rows, cols;
Uint32 incr, skip;
unsigned char *srcpixels;
unsigned char *dstpixels;
int count;
unsigned char *srcp;
unsigned char *dstp;
src = PySurface_AsSurface(pysrc);
dst = PySurface_AsSurface(pydst);
@@ -594,25 +678,30 @@ void xblur32_core(PyObject *pysrc,
srcpixels = (unsigned char *) src->pixels;
dstpixels = (unsigned char *) dst->pixels;
srcpitch = src->pitch;
dstpitch = dst->pitch;
srcw = src->w;
dstw = dst->w;
srch = src->h;
dsth = dst->h;
if (vertical) {
rows = dst->w;
skip = 4;
incr = dst->pitch - 4;
cols = dst->h;
} else {
rows = dst->h;
skip = dst->pitch;
incr = 0;
cols = dst->w;
}
int divisor = radius * 2 + 1;
for (y = 0; y < dsth; y++) {
for (r = 0; r < rows; r++) {
// The values of the pixels on the left and right ends of the
// line.
unsigned char lr, lg, lb, la;
unsigned char rr, rg, rb, ra;
unsigned char *leader = srcpixels + y * srcpitch;
unsigned char *leader = srcpixels + r * skip;
unsigned char *trailer = leader;
dstp = dstpixels + y * dstpitch;
dstp = dstpixels + r * skip;
lr = *leader;
lg = *(leader + 1);
@@ -624,25 +713,27 @@ void xblur32_core(PyObject *pysrc,
int sumb = lb * radius;
int suma = la * radius;
for (x = 0; x < radius + 0; x++) {
for (c = 0; c < radius; c++) {
sumr += *leader++;
sumg += *leader++;
sumb += *leader++;
suma += *leader++;
leader += incr;
}
// left side of the kernel is off of the screen.
for (x = 0; x < radius; x++) {
for (c = 0; c < radius; c++) {
sumr += *leader++;
sumg += *leader++;
sumb += *leader++;
suma += *leader++;
leader += incr;
*dstp++ = sumr / divisor;
*dstp++ = sumg / divisor;
*dstp++ = sumb / divisor;
*dstp++ = suma / divisor;
dstp += incr;
sumr -= lr;
sumg -= lg;
@@ -650,24 +741,27 @@ void xblur32_core(PyObject *pysrc,
suma -= la;
}
int end = srcw - radius - 1;
int end = cols - radius - 1;
// The kernel is fully on the screen.
for (; x < end; x++) {
for (; c < end; c++) {
sumr += *leader++;
sumg += *leader++;
sumb += *leader++;
suma += *leader++;
leader += incr;
*dstp++ = sumr / divisor;
*dstp++ = sumg / divisor;
*dstp++ = sumb / divisor;
*dstp++ = suma / divisor;
dstp += incr;
sumr -= *trailer++;
sumg -= *trailer++;
sumb -= *trailer++;
suma -= *trailer++;
trailer += incr;
}
rr = *leader++;
@@ -676,7 +770,7 @@ void xblur32_core(PyObject *pysrc,
ra = *leader++;
// The kernel is off the right side of the screen.
for (; x < srcw; x++) {
for (; c < cols; c++) {
sumr += rr;
sumg += rg;
sumb += rb;
@@ -686,19 +780,145 @@ void xblur32_core(PyObject *pysrc,
*dstp++ = sumg / divisor;
*dstp++ = sumb / divisor;
*dstp++ = suma / divisor;
dstp += incr;
sumr -= *trailer++;
sumg -= *trailer++;
sumb -= *trailer++;
suma -= *trailer++;
trailer += incr;
}
}
Py_END_ALLOW_THREADS
}
#endif
void linblur24_core(PyObject *pysrc,
PyObject *pydst,
int radius,
int vertical) {
int c, r;
SDL_Surface *src;
SDL_Surface *dst;
Uint32 rows, cols;
Uint32 incr, skip;
unsigned char *srcpixels;
unsigned char *dstpixels;
unsigned char *dstp;
src = PySurface_AsSurface(pysrc);
dst = PySurface_AsSurface(pydst);
Py_BEGIN_ALLOW_THREADS
srcpixels = (unsigned char *) src->pixels;
dstpixels = (unsigned char *) dst->pixels;
if (vertical) {
rows = dst->w;
skip = 3;
incr = dst->pitch - 3;
cols = dst->h;
} else {
rows = dst->h;
skip = dst->pitch;
incr = 0;
cols = dst->w;
}
int divisor = radius * 2 + 1;
for (r = 0; r < rows; r++) {
// The values of the pixels on the left and right ends of the
// line.
unsigned char lr, lg, lb;
unsigned char rr, rg, rb;
unsigned char *leader = srcpixels + r * skip;
unsigned char *trailer = leader;
dstp = dstpixels + r * skip;
lr = *leader;
lg = *(leader + 1);
lb = *(leader + 2);
int sumr = lr * radius;
int sumg = lg * radius;
int sumb = lb * radius;
for (c = 0; c < radius; c++) {
sumr += *leader++;
sumg += *leader++;
sumb += *leader++;
leader += incr;
}
// left side of the kernel is off of the screen.
for (c = 0; c < radius; c++) {
sumr += *leader++;
sumg += *leader++;
sumb += *leader++;
leader += incr;
*dstp++ = sumr / divisor;
*dstp++ = sumg / divisor;
*dstp++ = sumb / divisor;
dstp += incr;
sumr -= lr;
sumg -= lg;
sumb -= lb;
}
int end = cols - radius - 1;
// The kernel is fully on the screen.
for (; c < end; c++) {
sumr += *leader++;
sumg += *leader++;
sumb += *leader++;
leader += incr;
*dstp++ = sumr / divisor;
*dstp++ = sumg / divisor;
*dstp++ = sumb / divisor;
dstp += incr;
sumr -= *trailer++;
sumg -= *trailer++;
sumb -= *trailer++;
trailer += incr;
}
rr = *leader++;
rg = *leader++;
rb = *leader++;
// The kernel is off the right side of the screen.
for (; c < cols; c++) {
sumr += rr;
sumg += rg;
sumb += rb;
*dstp++ = sumr / divisor;
*dstp++ = sumg / divisor;
*dstp++ = sumb / divisor;
dstp += incr;
sumr -= *trailer++;
sumg -= *trailer++;
sumb -= *trailer++;
trailer += incr;
}
}
Py_END_ALLOW_THREADS
}
// Alpha Munge takes a channel from the source pixel, maps it, and
// sticks it into the alpha channel of the destination, overwriting
+182 -5
View File
@@ -10,9 +10,18 @@
#if defined(__arm__) && !(__MACOS__ || __IPHONEOS__)
#define USE_MEMALIGN
#include <malloc.h>
#include <stdlib.h>
#endif
/* Should a mono channel be split into two equal stero channels (true) or
* should the energy be split onto two stereo channels with 1/2 the energy
* (false).
*/
static int audio_equal_mono = 1;
/* The weight of stereo channels when audio_equal_mono is true. */
static float stereo_matrix[] = { 1.0, 1.0 };
/* The output audio sample rate. */
static int audio_sample_rate = 44100;
@@ -564,6 +573,10 @@ static void decode_audio(MediaState *ms) {
if (!ms->audio_decode_frame->channel_layout) {
ms->audio_decode_frame->channel_layout = av_get_default_channel_layout(ms->audio_decode_frame->channels);
if (audio_equal_mono && (ms->audio_decode_frame->channels == 1)) {
swr_set_matrix(ms->swr, stereo_matrix, 1);
}
}
converted_frame = av_frame_alloc();
@@ -723,7 +736,7 @@ static SurfaceQueueEntry *decode_video_frame(MediaState *ms) {
#ifdef USE_MEMALIGN
rv->pixels = memalign(16, rv->pitch * rv->h);
posix_memalign(&rv->pixels, 16, rv->pitch * rv->h);
memset(rv->pixels, 0, rv->pitch * rv->h);
#else
rv->pixels = SDL_calloc(1, rv->pitch * rv->h);
@@ -788,10 +801,16 @@ static void decode_video(MediaState *ms) {
}
static int decode_sync_start(void *arg);
void media_read_sync(struct MediaState *ms);
void media_read_sync_finish(struct MediaState *ms);
/**
* Returns 1 if there is a video frame ready on this channel, or 0 otherwise.
*/
int media_video_ready(struct MediaState *ms) {
int consumed = 0;
int rv = 0;
@@ -857,6 +876,7 @@ done:
SDL_Surface *media_read_video(MediaState *ms) {
SDL_Surface *rv = NULL;
SurfaceQueueEntry *sqe = NULL;
@@ -866,9 +886,11 @@ SDL_Surface *media_read_video(MediaState *ms) {
SDL_LockMutex(ms->lock);
#ifndef __EMSCRIPTEN__
while (!ms->ready) {
SDL_CondWait(ms->cond, ms->lock);
SDL_CondWait(ms->cond, ms->lock);
}
#endif
if (!ms->surface_queue_size) {
goto done;
@@ -1042,7 +1064,148 @@ finish:
}
void media_read_sync_finish(struct MediaState *ms) {
// copy/paste from end of decode_thread
/* Data used by the decoder should be freed here, while data shared with
* the readers should be freed in media_close.
*/
SDL_LockMutex(ms->lock);
/* Ensures that every stream becomes ready. */
if (!ms->ready) {
ms->ready = 1;
SDL_CondBroadcast(ms->cond);
}
while (!ms->quit) {
/* SDL_CondWait(ms->cond, ms->lock); */
}
SDL_UnlockMutex(ms->lock);
deallocate(ms);
}
static int decode_sync_start(void *arg) {
// copy/paste from start of decode_thread
MediaState *ms = (MediaState *) arg;
int err;
AVFormatContext *ctx = avformat_alloc_context();
ms->ctx = ctx;
AVIOContext *io_context = rwops_open(ms->rwops);
ctx->pb = io_context;
err = avformat_open_input(&ctx, ms->filename, NULL, NULL);
if (err) {
media_read_sync_finish(ms);
}
err = avformat_find_stream_info(ctx, NULL);
if (err) {
media_read_sync_finish(ms);
}
ms->video_stream = -1;
ms->audio_stream = -1;
for (int i = 0; i < ctx->nb_streams; i++) {
if (ctx->streams[i]->codec->codec_type == AVMEDIA_TYPE_VIDEO) {
if (ms->want_video && ms->video_stream == -1) {
ms->video_stream = i;
}
}
if (ctx->streams[i]->codec->codec_type == AVMEDIA_TYPE_AUDIO) {
if (ms->audio_stream == -1) {
ms->audio_stream = i;
}
}
}
ms->video_context = find_context(ctx, ms->video_stream);
ms->audio_context = find_context(ctx, ms->audio_stream);
ms->swr = swr_alloc();
av_init_packet(&ms->video_pkt);
// Compute the number of samples we need to play back.
if (ms->audio_duration < 0) {
if (av_fmt_ctx_get_duration_estimation_method(ctx) != AVFMT_DURATION_FROM_BITRATE) {
long long duration = ((long long) ctx->duration) * audio_sample_rate;
ms->audio_duration = (unsigned int) (duration / AV_TIME_BASE);
ms->total_duration = 1.0 * ctx->duration / AV_TIME_BASE;
// Check that the duration is reasonable (between 0s and 3600s). If not,
// reject it.
if (ms->audio_duration < 0 || ms->audio_duration > 3600 * audio_sample_rate) {
ms->audio_duration = -1;
}
ms->audio_duration -= (unsigned int) (ms->skip * audio_sample_rate);
} else {
ms->audio_duration = -1;
}
}
if (ms->skip != 0.0) {
av_seek_frame(ctx, -1, (int64_t) (ms->skip * AV_TIME_BASE), AVSEEK_FLAG_BACKWARD);
}
// [snip!]
return 0;
}
void media_read_sync(struct MediaState *ms) {
// copy/paste from middle of decode_thread
// printf("---* media_read_sync %p\n", ms);
//while (!ms->quit) {
if (!ms->quit) {
// printf(" audio_finished: %d, video_finished: %d\n", ms->audio_finished, ms->video_finished);
if (! ms->audio_finished) {
decode_audio(ms);
}
if (! ms->video_finished) {
decode_video(ms);
}
SDL_LockMutex(ms->lock);
if (!ms->ready) {
ms->ready = 1;
SDL_CondBroadcast(ms->cond);
}
if (!(ms->needs_decode || ms->quit)) {
/* SDL_CondWait(ms->cond, ms->lock); */
}
ms->needs_decode = 0;
SDL_UnlockMutex(ms->lock);
}
}
int media_read_audio(struct MediaState *ms, Uint8 *stream, int len) {
#ifdef __EMSCRIPTEN__
media_read_sync(ms);
#endif
SDL_LockMutex(ms->lock);
@@ -1127,6 +1290,7 @@ int media_read_audio(struct MediaState *ms, Uint8 *stream, int len) {
}
void media_wait_ready(struct MediaState *ms) {
#ifndef __EMSCRIPTEN__
SDL_LockMutex(ms->lock);
while (!ms->ready) {
@@ -1134,6 +1298,7 @@ void media_wait_ready(struct MediaState *ms) {
}
SDL_UnlockMutex(ms->lock);
#endif
}
@@ -1142,7 +1307,12 @@ double media_duration(MediaState *ms) {
}
void media_start(MediaState *ms) {
char buf[1024];
#ifdef __EMSCRIPTEN__
decode_sync_start(ms);
#else
char buf[1024];
snprintf(buf, 1024, "decode: %s", ms->filename);
SDL_Thread *t = SDL_CreateThread(decode_thread, buf, (void *) ms);
@@ -1151,6 +1321,7 @@ void media_start(MediaState *ms) {
ms->started = 1;
SDL_DetachThread(t);
}
#endif
}
@@ -1210,6 +1381,11 @@ void media_close(MediaState *ms) {
/* Tell the decoder to terminate. It will deallocate everything for us. */
SDL_LockMutex(ms->lock);
ms->quit = 1;
#ifdef __EMSCRIPTEN__
media_read_sync_finish(ms);
#endif
SDL_CondBroadcast(ms->cond);
SDL_UnlockMutex(ms->lock);
@@ -1224,9 +1400,10 @@ void media_sample_surfaces(SDL_Surface *rgb, SDL_Surface *rgba) {
rgba_surface = rgba;
}
void media_init(int rate, int status) {
void media_init(int rate, int status, int equal_mono) {
audio_sample_rate = rate / SPEED;
audio_equal_mono = equal_mono;
av_register_all();
+4 -4
View File
@@ -12,17 +12,17 @@
*
* Copyright (C) 2004 Sharif FarsiWeb, Inc.
* Copyright (C) 2001,2002 Behdad Esfahbod
*
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library, in a file named COPYING; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
@@ -127,7 +127,7 @@ typedef FRIBIDI_UINT16 fribidi_uint16;
typedef FRIBIDI_UINT32 fribidi_uint32;
typedef FRIBIDI_BOOLEAN fribidi_boolean;
typedef FRIBIDI_UNICHAR FriBidiChar;
typedef FRIBIDI_UINT32 FriBidiChar;
typedef FRIBIDI_STR_INDEX FriBidiStrIndex;
+2 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2018 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2019 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
@@ -186,6 +186,7 @@ style_properties = sorted_dict(
newline_indent=None,
order_reverse=None,
outlines='expand_outlines',
outline_scaling=None,
rest_indent=None,
right_margin=None,
right_padding=None,
+4
View File
@@ -29,6 +29,10 @@
#define RENPY_GLES_2
#elif defined EMSCRIPTEN
#define RENPY_GLES_2
#elif defined RASPBERRY_PI
#define RENPY_GLES_2
+19 -5
View File
@@ -49,13 +49,27 @@ void linmap24_core(PyObject *pysrc,
int gmap,
int bmap);
#if 0
void blur32_core(PyObject *pysrc,
PyObject *pywrk,
PyObject *pydst,
float xrad,
float yrad);
void xblur32_core(PyObject *pysrc,
PyObject *pydst,
int radius);
void blur24_core(PyObject *pysrc,
PyObject *pywrk,
PyObject *pydst,
float xrad,
float yrad);
#endif
void linblur32_core(PyObject *pysrc,
PyObject *pydst,
int radius,
int vertical);
void linblur24_core(PyObject *pysrc,
PyObject *pydst,
int radius,
int vertical);
void alphamunge_core(PyObject *pysrc,
PyObject *pydst,

Some files were not shown because too many files have changed in this diff Show More